Commit 8a300658afb5d9eb7817d47bd35c08a31b4cdc6c
1 parent
0b3c1c1c
feat:XQ230328006主表新增数据时需要展示关联表中的自定义功能按钮
Showing
24 changed files
with
4870 additions
and
0 deletions
Too many changes to show.
To preserve performance only 24 of 113 files are displayed.
| 1 | +import _PlusCircleFilled from "@ant-design/icons/es/icons/PlusCircleFilled"; | |
| 2 | +import _DownOutlined from "@ant-design/icons/es/icons/DownOutlined"; | |
| 3 | +import _UpOutlined from "@ant-design/icons/es/icons/UpOutlined"; | |
| 4 | +import _DeleteOutlined from "@ant-design/icons/es/icons/DeleteOutlined"; | |
| 5 | + | |
| 6 | +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } | |
| 7 | + | |
| 8 | +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 9 | + | |
| 10 | +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } | |
| 11 | + | |
| 12 | +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } | |
| 13 | + | |
| 14 | +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } | |
| 15 | + | |
| 16 | +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 17 | + | |
| 18 | +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | |
| 19 | + | |
| 20 | +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | |
| 21 | + | |
| 22 | +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | |
| 23 | + | |
| 24 | +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | |
| 25 | + | |
| 26 | +/* eslint-disable jsx-a11y/anchor-is-valid */ | |
| 27 | +import React, { useEffect, useMemo, useState } from 'react'; | |
| 28 | +import Core from '../../index'; // import { Button, Space, Popconfirm } from 'antd'; | |
| 29 | +// import ArrowDown from '../../../components/ArrowDown'; | |
| 30 | + | |
| 31 | +import { Collapse } from 'antd-mobile'; | |
| 32 | + | |
| 33 | +// 数字转汉字 | |
| 34 | +function convertToChinaNum(num) { | |
| 35 | + var arr1 = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']; | |
| 36 | + var arr2 = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万', '十', '百', '千', '亿']; //可继续追加更高位转换值 | |
| 37 | + | |
| 38 | + if (!num || isNaN(num)) { | |
| 39 | + return "零"; | |
| 40 | + } | |
| 41 | + | |
| 42 | + var english = num.toString().split(""); | |
| 43 | + var result = ""; | |
| 44 | + | |
| 45 | + for (var i = 0; i < english.length; i++) { | |
| 46 | + var des_i = english.length - 1 - i; //倒序排列设值 | |
| 47 | + | |
| 48 | + result = arr2[i] + result; | |
| 49 | + var arr1_index = english[des_i]; | |
| 50 | + result = arr1[arr1_index] + result; | |
| 51 | + } | |
| 52 | + | |
| 53 | + result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十'); | |
| 54 | + result = result.replace(/零+/g, '零'); | |
| 55 | + result = result.replace(/零亿/g, '亿').replace(/零万/g, '万'); | |
| 56 | + result = result.replace(/亿万/g, '亿'); | |
| 57 | + result = result.replace(/零+$/, ''); | |
| 58 | + result = result.replace(/^一十/g, '十'); | |
| 59 | + return result; | |
| 60 | +} | |
| 61 | + | |
| 62 | +var ListForMobile = function ListForMobile(_ref) { | |
| 63 | + var _ref$displayList = _ref.displayList, | |
| 64 | + displayList = _ref$displayList === void 0 ? [] : _ref$displayList, | |
| 65 | + listData = _ref.listData, | |
| 66 | + changeList = _ref.changeList, | |
| 67 | + schema = _ref.schema, | |
| 68 | + deleteItem = _ref.deleteItem, | |
| 69 | + copyItem = _ref.copyItem, | |
| 70 | + addItem = _ref.addItem, | |
| 71 | + moveItemUp = _ref.moveItemUp, | |
| 72 | + moveItemDown = _ref.moveItemDown, | |
| 73 | + displayType = _ref.displayType, | |
| 74 | + getFieldsProps = _ref.getFieldsProps; | |
| 75 | + var _schema$props = schema.props, | |
| 76 | + props = _schema$props === void 0 ? {} : _schema$props, | |
| 77 | + itemProps = schema.itemProps; | |
| 78 | + | |
| 79 | + var _useState = useState([]), | |
| 80 | + _useState2 = _slicedToArray(_useState, 2), | |
| 81 | + allKeys = _useState2[0], | |
| 82 | + setKeys = _useState2[1]; // let addBtnProps = { | |
| 83 | + // type: 'dashed', | |
| 84 | + // children: '新增一条list', | |
| 85 | + // }; | |
| 86 | + // if (props.addBtnProps && typeof props.addBtnProps === 'object') { | |
| 87 | + // addBtnProps = { ...addBtnProps, ...props.addBtnProps }; | |
| 88 | + // } | |
| 89 | + | |
| 90 | + | |
| 91 | + useEffect(function () { | |
| 92 | + var _allKeys = []; | |
| 93 | + displayList.forEach(function (item, idx) { | |
| 94 | + if (item._active) { | |
| 95 | + _allKeys.push(String(idx)); | |
| 96 | + } | |
| 97 | + }); | |
| 98 | + setKeys(_allKeys); | |
| 99 | + }, [displayList]); | |
| 100 | + | |
| 101 | + var getTitle = function getTitle(id) { | |
| 102 | + return /*#__PURE__*/React.createElement("div", { | |
| 103 | + style: { | |
| 104 | + display: 'flex', | |
| 105 | + justifyContent: "space-between", | |
| 106 | + alignItems: 'center' | |
| 107 | + } | |
| 108 | + }, /*#__PURE__*/React.createElement("span", null, "\u6570\u636E", id + 1), /*#__PURE__*/React.createElement("a", { | |
| 109 | + onClick: function onClick(e) { | |
| 110 | + e.stopPropagation(); | |
| 111 | + deleteItem(id); | |
| 112 | + }, | |
| 113 | + style: { | |
| 114 | + display: 'inline-block', | |
| 115 | + padding: '0 10px' | |
| 116 | + } | |
| 117 | + }, /*#__PURE__*/React.createElement(_DeleteOutlined, { | |
| 118 | + style: { | |
| 119 | + fontSize: 16, | |
| 120 | + width: 16, | |
| 121 | + height: 16 | |
| 122 | + } | |
| 123 | + }))); | |
| 124 | + }; | |
| 125 | + | |
| 126 | + var handleArrow = function handleArrow(active) { | |
| 127 | + if (active) { | |
| 128 | + return /*#__PURE__*/React.createElement(_UpOutlined, { | |
| 129 | + onClick: function onClick() {} | |
| 130 | + }); | |
| 131 | + } else { | |
| 132 | + return /*#__PURE__*/React.createElement(_DownOutlined, null); | |
| 133 | + } | |
| 134 | + }; | |
| 135 | + | |
| 136 | + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { | |
| 137 | + className: "fr-card-list qx-card-mobile" | |
| 138 | + }, /*#__PURE__*/React.createElement(Collapse, { | |
| 139 | + activeKey: allKeys | |
| 140 | + }, displayList.map(function (item, idx) { | |
| 141 | + var fieldsProps = getFieldsProps(idx); | |
| 142 | + fieldsProps.displayType = displayType; | |
| 143 | + return /*#__PURE__*/React.createElement(Collapse.Panel, { | |
| 144 | + key: String(idx), | |
| 145 | + title: getTitle(idx), | |
| 146 | + arrow: handleArrow, | |
| 147 | + onClick: function onClick() { | |
| 148 | + var _active = item._active || false; | |
| 149 | + | |
| 150 | + displayList[idx]._active = !_active; | |
| 151 | + changeList(_toConsumableArray(displayList)); | |
| 152 | + } | |
| 153 | + }, /*#__PURE__*/React.createElement("div", { | |
| 154 | + className: "fr-card-item qx-card-mobile-item ".concat(displayType === 'row' ? 'fr-card-item-row' : ''), | |
| 155 | + key: idx | |
| 156 | + }, /*#__PURE__*/React.createElement(Core, fieldsProps))); | |
| 157 | + }))), /*#__PURE__*/React.createElement("a", { | |
| 158 | + className: 'add-button', | |
| 159 | + onClick: function onClick() { | |
| 160 | + addItem(); | |
| 161 | + } | |
| 162 | + }, /*#__PURE__*/React.createElement(_PlusCircleFilled, { | |
| 163 | + style: { | |
| 164 | + marginRight: 2, | |
| 165 | + width: 14, | |
| 166 | + height: 14 | |
| 167 | + } | |
| 168 | + }), "\u70B9\u51FB\u65B0\u589E\u6570\u636E")); | |
| 169 | +}; | |
| 170 | + | |
| 171 | +export default ListForMobile; | |
| \ No newline at end of file | ... | ... |
es/core/RenderChildren/RenderList/icon.js
0 → 100644
| 1 | +import { createFromIconfontCN } from '@ant-design/icons/lib'; | |
| 2 | +/** | |
| 3 | + * 使用: | |
| 4 | + * import QxIcon from '@/packages/qx-icon'; | |
| 5 | + * <QxIcon type="xxx"/> | |
| 6 | + * 说明: | |
| 7 | + * `xxx`为图标唯一标识,`iconfont.cn`对应图标下的“复制代码”所得,建议命名为“icon-xxx_yyy”, | |
| 8 | + * “icon-”为固定前缀,xxx为模块类型,yyy为图标名。公共类的xxx命名为“comm” | |
| 9 | + * eg: <QxIcon type="icon-flow_eye"/> | |
| 10 | + * | |
| 11 | + * @type {React.FC<IconFontProps<string>>} | |
| 12 | + */ | |
| 13 | + | |
| 14 | +var QxIcon = createFromIconfontCN({ | |
| 15 | + scriptUrl: 'https://lf1-cdn-tos.bytegoofy.com/obj/iconpark/icons_13749_95.b05de9dc2fbe8efffb150f83b64da806.es5.js' | |
| 16 | +}); | |
| 17 | +export default QxIcon; | |
| \ No newline at end of file | ... | ... |
es/form-render-core/src/Watcher.js
0 → 100644
| 1 | +/* eslint-disable react-hooks/exhaustive-deps */ | |
| 2 | +import { useEffect } from 'react'; | |
| 3 | +import { getValueByPath } from './utils'; | |
| 4 | + | |
| 5 | +var Watcher = function Watcher(_ref) { | |
| 6 | + var watchKey = _ref.watchKey, | |
| 7 | + watch = _ref.watch, | |
| 8 | + formData = _ref.formData, | |
| 9 | + firstMount = _ref.firstMount; | |
| 10 | + var value = getValueByPath(formData, watchKey); | |
| 11 | + var watchObj = watch[watchKey]; | |
| 12 | + useEffect(function () { | |
| 13 | + var runWatcher = function runWatcher() { | |
| 14 | + if (typeof watchObj === 'function') { | |
| 15 | + try { | |
| 16 | + watchObj(value); | |
| 17 | + } catch (error) { | |
| 18 | + console.log("".concat(watchKey, "\u5BF9\u5E94\u7684watch\u51FD\u6570\u6267\u884C\u62A5\u9519\uFF1A"), error); | |
| 19 | + } | |
| 20 | + } else if (watchObj && typeof watchObj.handler === 'function') { | |
| 21 | + try { | |
| 22 | + watchObj.handler(value); | |
| 23 | + } catch (error) { | |
| 24 | + console.log("".concat(watchKey, "\u5BF9\u5E94\u7684watch\u51FD\u6570\u6267\u884C\u62A5\u9519\uFF1A"), error); | |
| 25 | + } | |
| 26 | + } | |
| 27 | + }; | |
| 28 | + | |
| 29 | + if (firstMount) { | |
| 30 | + var immediate = watchObj && watchObj.immediate; | |
| 31 | + | |
| 32 | + if (immediate) { | |
| 33 | + runWatcher(); | |
| 34 | + } | |
| 35 | + } else { | |
| 36 | + runWatcher(); | |
| 37 | + } | |
| 38 | + }, [JSON.stringify(value), firstMount]); | |
| 39 | + return null; | |
| 40 | +}; | |
| 41 | + | |
| 42 | +export default Watcher; | |
| \ No newline at end of file | ... | ... |
es/form-render-core/src/atom.css
0 → 100644
| 1 | +.fr-container { | |
| 2 | + /* Resets */ | |
| 3 | + /* | |
| 4 | + This will set table to full width and then | |
| 5 | + all cells will be equal width | |
| 6 | + */ | |
| 7 | + /* 1. Fix for Chrome 44 bug. | |
| 8 | + * https://code.google.com/p/chromium/issues/detail?id=506893 */ | |
| 9 | + /* Height Percentages - Based off of height of parent */ | |
| 10 | + /* Screen Height Percentage */ | |
| 11 | + /* String Properties */ | |
| 12 | + /* Max Width Percentages */ | |
| 13 | + /* Max Width Scale */ | |
| 14 | + /* Max Width String Properties */ | |
| 15 | +} | |
| 16 | +.fr-container .outline { | |
| 17 | + outline: 1px solid; | |
| 18 | +} | |
| 19 | +.fr-container .outline-transparent { | |
| 20 | + outline: 1px solid transparent; | |
| 21 | +} | |
| 22 | +.fr-container .outline-0 { | |
| 23 | + outline: 0; | |
| 24 | +} | |
| 25 | +.fr-container .ba { | |
| 26 | + border-style: solid; | |
| 27 | + border-width: 1px; | |
| 28 | +} | |
| 29 | +.fr-container .bt { | |
| 30 | + border-top-style: solid; | |
| 31 | + border-top-width: 1px; | |
| 32 | +} | |
| 33 | +.fr-container .br { | |
| 34 | + border-right-style: solid; | |
| 35 | + border-right-width: 1px; | |
| 36 | +} | |
| 37 | +.fr-container .bb { | |
| 38 | + border-bottom-style: solid; | |
| 39 | + border-bottom-width: 1px; | |
| 40 | +} | |
| 41 | +.fr-container .bl { | |
| 42 | + border-left-style: solid; | |
| 43 | + border-left-width: 1px; | |
| 44 | +} | |
| 45 | +.fr-container .bn { | |
| 46 | + border-style: none; | |
| 47 | + border-width: 0; | |
| 48 | +} | |
| 49 | +.fr-container .br0 { | |
| 50 | + border-radius: 0; | |
| 51 | +} | |
| 52 | +.fr-container .br1 { | |
| 53 | + border-radius: 0.125rem; | |
| 54 | +} | |
| 55 | +.fr-container .br2 { | |
| 56 | + border-radius: 0.25rem; | |
| 57 | +} | |
| 58 | +.fr-container .br3 { | |
| 59 | + border-radius: 0.5rem; | |
| 60 | +} | |
| 61 | +.fr-container .br4 { | |
| 62 | + border-radius: 1rem; | |
| 63 | +} | |
| 64 | +.fr-container .br-100 { | |
| 65 | + border-radius: 100%; | |
| 66 | +} | |
| 67 | +.fr-container .br-pill { | |
| 68 | + border-radius: 9999px; | |
| 69 | +} | |
| 70 | +.fr-container .br--bottom { | |
| 71 | + border-top-left-radius: 0; | |
| 72 | + border-top-right-radius: 0; | |
| 73 | +} | |
| 74 | +.fr-container .br--top { | |
| 75 | + border-bottom-left-radius: 0; | |
| 76 | + border-bottom-right-radius: 0; | |
| 77 | +} | |
| 78 | +.fr-container .br--right { | |
| 79 | + border-top-left-radius: 0; | |
| 80 | + border-bottom-left-radius: 0; | |
| 81 | +} | |
| 82 | +.fr-container .br--left { | |
| 83 | + border-top-right-radius: 0; | |
| 84 | + border-bottom-right-radius: 0; | |
| 85 | +} | |
| 86 | +.fr-container .b--dotted { | |
| 87 | + border-style: dotted; | |
| 88 | +} | |
| 89 | +.fr-container .b--dashed { | |
| 90 | + border-style: dashed; | |
| 91 | +} | |
| 92 | +.fr-container .b--solid { | |
| 93 | + border-style: solid; | |
| 94 | +} | |
| 95 | +.fr-container .b--none { | |
| 96 | + border-style: none; | |
| 97 | +} | |
| 98 | +.fr-container .b--black-10 { | |
| 99 | + border-color: rgba(0, 0, 0, 0.1); | |
| 100 | +} | |
| 101 | +.fr-container .b--black-20 { | |
| 102 | + border-color: rgba(0, 0, 0, 0.2); | |
| 103 | +} | |
| 104 | +.fr-container .b--black-30 { | |
| 105 | + border-color: rgba(0, 0, 0, 0.3); | |
| 106 | +} | |
| 107 | +.fr-container .bw0 { | |
| 108 | + border-width: 0; | |
| 109 | +} | |
| 110 | +.fr-container .bw1 { | |
| 111 | + border-width: 0.125rem; | |
| 112 | +} | |
| 113 | +.fr-container .bw2 { | |
| 114 | + border-width: 0.25rem; | |
| 115 | +} | |
| 116 | +.fr-container .bw3 { | |
| 117 | + border-width: 0.5rem; | |
| 118 | +} | |
| 119 | +.fr-container .bw4 { | |
| 120 | + border-width: 1rem; | |
| 121 | +} | |
| 122 | +.fr-container .bw5 { | |
| 123 | + border-width: 2rem; | |
| 124 | +} | |
| 125 | +.fr-container .bt-0 { | |
| 126 | + border-top-width: 0; | |
| 127 | +} | |
| 128 | +.fr-container .br-0 { | |
| 129 | + border-right-width: 0; | |
| 130 | +} | |
| 131 | +.fr-container .bb-0 { | |
| 132 | + border-bottom-width: 0; | |
| 133 | +} | |
| 134 | +.fr-container .bl-0 { | |
| 135 | + border-left-width: 0; | |
| 136 | +} | |
| 137 | +.fr-container .shadow-1 { | |
| 138 | + box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2); | |
| 139 | +} | |
| 140 | +.fr-container .shadow-2 { | |
| 141 | + box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.2); | |
| 142 | +} | |
| 143 | +.fr-container .shadow-3 { | |
| 144 | + box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2); | |
| 145 | +} | |
| 146 | +.fr-container .shadow-4 { | |
| 147 | + box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, 0.2); | |
| 148 | +} | |
| 149 | +.fr-container .shadow-5 { | |
| 150 | + box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.2); | |
| 151 | +} | |
| 152 | +.fr-container .top-0 { | |
| 153 | + top: 0; | |
| 154 | +} | |
| 155 | +.fr-container .right-0 { | |
| 156 | + right: 0; | |
| 157 | +} | |
| 158 | +.fr-container .bottom-0 { | |
| 159 | + bottom: 0; | |
| 160 | +} | |
| 161 | +.fr-container .left-0 { | |
| 162 | + left: 0; | |
| 163 | +} | |
| 164 | +.fr-container .top-1 { | |
| 165 | + top: 1rem; | |
| 166 | +} | |
| 167 | +.fr-container .right-1 { | |
| 168 | + right: 1rem; | |
| 169 | +} | |
| 170 | +.fr-container .bottom-1 { | |
| 171 | + bottom: 1rem; | |
| 172 | +} | |
| 173 | +.fr-container .left-1 { | |
| 174 | + left: 1rem; | |
| 175 | +} | |
| 176 | +.fr-container .top-2 { | |
| 177 | + top: 2rem; | |
| 178 | +} | |
| 179 | +.fr-container .right-2 { | |
| 180 | + right: 2rem; | |
| 181 | +} | |
| 182 | +.fr-container .bottom-2 { | |
| 183 | + bottom: 2rem; | |
| 184 | +} | |
| 185 | +.fr-container .left-2 { | |
| 186 | + left: 2rem; | |
| 187 | +} | |
| 188 | +.fr-container .top--1 { | |
| 189 | + top: -1rem; | |
| 190 | +} | |
| 191 | +.fr-container .right--1 { | |
| 192 | + right: -1rem; | |
| 193 | +} | |
| 194 | +.fr-container .bottom--1 { | |
| 195 | + bottom: -1rem; | |
| 196 | +} | |
| 197 | +.fr-container .left--1 { | |
| 198 | + left: -1rem; | |
| 199 | +} | |
| 200 | +.fr-container .top--2 { | |
| 201 | + top: -2rem; | |
| 202 | +} | |
| 203 | +.fr-container .right--2 { | |
| 204 | + right: -2rem; | |
| 205 | +} | |
| 206 | +.fr-container .bottom--2 { | |
| 207 | + bottom: -2rem; | |
| 208 | +} | |
| 209 | +.fr-container .left--2 { | |
| 210 | + left: -2rem; | |
| 211 | +} | |
| 212 | +.fr-container .absolute--fill { | |
| 213 | + top: 0; | |
| 214 | + right: 0; | |
| 215 | + bottom: 0; | |
| 216 | + left: 0; | |
| 217 | +} | |
| 218 | +.fr-container .dn { | |
| 219 | + display: none; | |
| 220 | +} | |
| 221 | +.fr-container .di { | |
| 222 | + display: inline; | |
| 223 | +} | |
| 224 | +.fr-container .db { | |
| 225 | + display: block; | |
| 226 | +} | |
| 227 | +.fr-container .dib { | |
| 228 | + display: inline-block; | |
| 229 | +} | |
| 230 | +.fr-container .dit { | |
| 231 | + display: inline-table; | |
| 232 | +} | |
| 233 | +.fr-container .dt { | |
| 234 | + display: table; | |
| 235 | +} | |
| 236 | +.fr-container .dtc { | |
| 237 | + display: table-cell; | |
| 238 | +} | |
| 239 | +.fr-container .dt-row { | |
| 240 | + display: table-row; | |
| 241 | +} | |
| 242 | +.fr-container .dt-row-group { | |
| 243 | + display: table-row-group; | |
| 244 | +} | |
| 245 | +.fr-container .dt-column { | |
| 246 | + display: table-column; | |
| 247 | +} | |
| 248 | +.fr-container .dt-column-group { | |
| 249 | + display: table-column-group; | |
| 250 | +} | |
| 251 | +.fr-container .dt--fixed { | |
| 252 | + table-layout: fixed; | |
| 253 | + width: 100%; | |
| 254 | +} | |
| 255 | +.fr-container .flex { | |
| 256 | + display: flex; | |
| 257 | +} | |
| 258 | +.fr-container .inline-flex { | |
| 259 | + display: inline-flex; | |
| 260 | +} | |
| 261 | +.fr-container .flex-auto { | |
| 262 | + flex: 1 1 auto; | |
| 263 | + min-width: 0; | |
| 264 | + /* 1 */ | |
| 265 | + min-height: 0; | |
| 266 | + /* 1 */ | |
| 267 | +} | |
| 268 | +.fr-container .flex-none { | |
| 269 | + flex: none; | |
| 270 | +} | |
| 271 | +.fr-container .flex-column { | |
| 272 | + flex-direction: column; | |
| 273 | +} | |
| 274 | +.fr-container .flex-row { | |
| 275 | + flex-direction: row; | |
| 276 | +} | |
| 277 | +.fr-container .flex-wrap { | |
| 278 | + flex-wrap: wrap; | |
| 279 | +} | |
| 280 | +.fr-container .flex-nowrap { | |
| 281 | + flex-wrap: nowrap; | |
| 282 | +} | |
| 283 | +.fr-container .flex-wrap-reverse { | |
| 284 | + flex-wrap: wrap-reverse; | |
| 285 | +} | |
| 286 | +.fr-container .flex-column-reverse { | |
| 287 | + flex-direction: column-reverse; | |
| 288 | +} | |
| 289 | +.fr-container .flex-row-reverse { | |
| 290 | + flex-direction: row-reverse; | |
| 291 | +} | |
| 292 | +.fr-container .items-start { | |
| 293 | + align-items: flex-start; | |
| 294 | +} | |
| 295 | +.fr-container .items-end { | |
| 296 | + align-items: flex-end; | |
| 297 | +} | |
| 298 | +.fr-container .items-center { | |
| 299 | + align-items: center; | |
| 300 | +} | |
| 301 | +.fr-container .items-baseline { | |
| 302 | + align-items: baseline; | |
| 303 | +} | |
| 304 | +.fr-container .items-stretch { | |
| 305 | + align-items: stretch; | |
| 306 | +} | |
| 307 | +.fr-container .self-start { | |
| 308 | + align-self: flex-start; | |
| 309 | +} | |
| 310 | +.fr-container .self-end { | |
| 311 | + align-self: flex-end; | |
| 312 | +} | |
| 313 | +.fr-container .self-center { | |
| 314 | + align-self: center; | |
| 315 | +} | |
| 316 | +.fr-container .self-baseline { | |
| 317 | + align-self: baseline; | |
| 318 | +} | |
| 319 | +.fr-container .self-stretch { | |
| 320 | + align-self: stretch; | |
| 321 | +} | |
| 322 | +.fr-container .justify-start { | |
| 323 | + justify-content: flex-start; | |
| 324 | +} | |
| 325 | +.fr-container .justify-end { | |
| 326 | + justify-content: flex-end; | |
| 327 | +} | |
| 328 | +.fr-container .justify-center { | |
| 329 | + justify-content: center; | |
| 330 | +} | |
| 331 | +.fr-container .justify-between { | |
| 332 | + justify-content: space-between; | |
| 333 | +} | |
| 334 | +.fr-container .justify-around { | |
| 335 | + justify-content: space-around; | |
| 336 | +} | |
| 337 | +.fr-container .content-start { | |
| 338 | + align-content: flex-start; | |
| 339 | +} | |
| 340 | +.fr-container .content-end { | |
| 341 | + align-content: flex-end; | |
| 342 | +} | |
| 343 | +.fr-container .content-center { | |
| 344 | + align-content: center; | |
| 345 | +} | |
| 346 | +.fr-container .content-between { | |
| 347 | + align-content: space-between; | |
| 348 | +} | |
| 349 | +.fr-container .content-around { | |
| 350 | + align-content: space-around; | |
| 351 | +} | |
| 352 | +.fr-container .content-stretch { | |
| 353 | + align-content: stretch; | |
| 354 | +} | |
| 355 | +.fr-container .order-0 { | |
| 356 | + order: 0; | |
| 357 | +} | |
| 358 | +.fr-container .order-1 { | |
| 359 | + order: 1; | |
| 360 | +} | |
| 361 | +.fr-container .order-2 { | |
| 362 | + order: 2; | |
| 363 | +} | |
| 364 | +.fr-container .order-3 { | |
| 365 | + order: 3; | |
| 366 | +} | |
| 367 | +.fr-container .order-4 { | |
| 368 | + order: 4; | |
| 369 | +} | |
| 370 | +.fr-container .order-5 { | |
| 371 | + order: 5; | |
| 372 | +} | |
| 373 | +.fr-container .order-6 { | |
| 374 | + order: 6; | |
| 375 | +} | |
| 376 | +.fr-container .order-7 { | |
| 377 | + order: 7; | |
| 378 | +} | |
| 379 | +.fr-container .order-8 { | |
| 380 | + order: 8; | |
| 381 | +} | |
| 382 | +.fr-container .order-last { | |
| 383 | + order: 99999; | |
| 384 | +} | |
| 385 | +.fr-container .flex-grow-0 { | |
| 386 | + flex-grow: 0; | |
| 387 | +} | |
| 388 | +.fr-container .flex-grow-1 { | |
| 389 | + flex-grow: 1; | |
| 390 | +} | |
| 391 | +.fr-container .flex-shrink-0 { | |
| 392 | + flex-shrink: 0; | |
| 393 | +} | |
| 394 | +.fr-container .flex-shrink-1 { | |
| 395 | + flex-shrink: 1; | |
| 396 | +} | |
| 397 | +.fr-container .fw1 { | |
| 398 | + font-weight: 100; | |
| 399 | +} | |
| 400 | +.fr-container .fw2 { | |
| 401 | + font-weight: 200; | |
| 402 | +} | |
| 403 | +.fr-container .fw3 { | |
| 404 | + font-weight: 300; | |
| 405 | +} | |
| 406 | +.fr-container .fw4 { | |
| 407 | + font-weight: 400; | |
| 408 | +} | |
| 409 | +.fr-container .fw5 { | |
| 410 | + font-weight: 500; | |
| 411 | +} | |
| 412 | +.fr-container .fw6 { | |
| 413 | + font-weight: 600; | |
| 414 | +} | |
| 415 | +.fr-container .fw7 { | |
| 416 | + font-weight: 700; | |
| 417 | +} | |
| 418 | +.fr-container .fw8 { | |
| 419 | + font-weight: 800; | |
| 420 | +} | |
| 421 | +.fr-container .fw9 { | |
| 422 | + font-weight: 900; | |
| 423 | +} | |
| 424 | +.fr-container .h1 { | |
| 425 | + height: 1rem; | |
| 426 | +} | |
| 427 | +.fr-container .h2 { | |
| 428 | + height: 2rem; | |
| 429 | +} | |
| 430 | +.fr-container .h3 { | |
| 431 | + height: 4rem; | |
| 432 | +} | |
| 433 | +.fr-container .h4 { | |
| 434 | + height: 8rem; | |
| 435 | +} | |
| 436 | +.fr-container .h5 { | |
| 437 | + height: 16rem; | |
| 438 | +} | |
| 439 | +.fr-container .h-25 { | |
| 440 | + height: 25%; | |
| 441 | +} | |
| 442 | +.fr-container .h-50 { | |
| 443 | + height: 50%; | |
| 444 | +} | |
| 445 | +.fr-container .h-75 { | |
| 446 | + height: 75%; | |
| 447 | +} | |
| 448 | +.fr-container .h-100 { | |
| 449 | + height: 100%; | |
| 450 | +} | |
| 451 | +.fr-container .min-h-100 { | |
| 452 | + min-height: 100%; | |
| 453 | +} | |
| 454 | +.fr-container .vh-25 { | |
| 455 | + height: 25vh; | |
| 456 | +} | |
| 457 | +.fr-container .vh-50 { | |
| 458 | + height: 50vh; | |
| 459 | +} | |
| 460 | +.fr-container .vh-75 { | |
| 461 | + height: 75vh; | |
| 462 | +} | |
| 463 | +.fr-container .vh-100 { | |
| 464 | + height: 100vh; | |
| 465 | +} | |
| 466 | +.fr-container .min-vh-100 { | |
| 467 | + min-height: 100vh; | |
| 468 | +} | |
| 469 | +.fr-container .h-auto { | |
| 470 | + height: auto; | |
| 471 | +} | |
| 472 | +.fr-container .h-inherit { | |
| 473 | + height: inherit; | |
| 474 | +} | |
| 475 | +.fr-container .tracked { | |
| 476 | + letter-spacing: 0.1em; | |
| 477 | +} | |
| 478 | +.fr-container .tracked-tight { | |
| 479 | + letter-spacing: -0.05em; | |
| 480 | +} | |
| 481 | +.fr-container .tracked-mega { | |
| 482 | + letter-spacing: 0.25em; | |
| 483 | +} | |
| 484 | +.fr-container .lh-solid { | |
| 485 | + line-height: 1; | |
| 486 | +} | |
| 487 | +.fr-container .lh-title { | |
| 488 | + line-height: 1.25; | |
| 489 | +} | |
| 490 | +.fr-container .lh-copy { | |
| 491 | + line-height: 1.5; | |
| 492 | +} | |
| 493 | +.fr-container .mw-100 { | |
| 494 | + max-width: 100%; | |
| 495 | +} | |
| 496 | +.fr-container .mw1 { | |
| 497 | + max-width: 1rem; | |
| 498 | +} | |
| 499 | +.fr-container .mw2 { | |
| 500 | + max-width: 2rem; | |
| 501 | +} | |
| 502 | +.fr-container .mw3 { | |
| 503 | + max-width: 4rem; | |
| 504 | +} | |
| 505 | +.fr-container .mw4 { | |
| 506 | + max-width: 8rem; | |
| 507 | +} | |
| 508 | +.fr-container .mw5 { | |
| 509 | + max-width: 16rem; | |
| 510 | +} | |
| 511 | +.fr-container .mw6 { | |
| 512 | + max-width: 32rem; | |
| 513 | +} | |
| 514 | +.fr-container .mw7 { | |
| 515 | + max-width: 48rem; | |
| 516 | +} | |
| 517 | +.fr-container .mw8 { | |
| 518 | + max-width: 64rem; | |
| 519 | +} | |
| 520 | +.fr-container .mw9 { | |
| 521 | + max-width: 96rem; | |
| 522 | +} | |
| 523 | +.fr-container .mw-none { | |
| 524 | + max-width: none; | |
| 525 | +} | |
| 526 | +.fr-container .w1 { | |
| 527 | + width: 1rem; | |
| 528 | +} | |
| 529 | +.fr-container .w2 { | |
| 530 | + width: 2rem; | |
| 531 | +} | |
| 532 | +.fr-container .w3 { | |
| 533 | + width: 4rem; | |
| 534 | +} | |
| 535 | +.fr-container .w4 { | |
| 536 | + width: 8rem; | |
| 537 | +} | |
| 538 | +.fr-container .w5 { | |
| 539 | + width: 16rem; | |
| 540 | +} | |
| 541 | +.fr-container .w-10 { | |
| 542 | + width: 10%; | |
| 543 | +} | |
| 544 | +.fr-container .w-20 { | |
| 545 | + width: 20%; | |
| 546 | +} | |
| 547 | +.fr-container .w-25 { | |
| 548 | + width: 25%; | |
| 549 | +} | |
| 550 | +.fr-container .w-30 { | |
| 551 | + width: 30%; | |
| 552 | +} | |
| 553 | +.fr-container .w-33 { | |
| 554 | + width: 33%; | |
| 555 | +} | |
| 556 | +.fr-container .w-34 { | |
| 557 | + width: 34%; | |
| 558 | +} | |
| 559 | +.fr-container .w-40 { | |
| 560 | + width: 40%; | |
| 561 | +} | |
| 562 | +.fr-container .w-50 { | |
| 563 | + width: 50%; | |
| 564 | +} | |
| 565 | +.fr-container .w-60 { | |
| 566 | + width: 60%; | |
| 567 | +} | |
| 568 | +.fr-container .w-70 { | |
| 569 | + width: 70%; | |
| 570 | +} | |
| 571 | +.fr-container .w-75 { | |
| 572 | + width: 75%; | |
| 573 | +} | |
| 574 | +.fr-container .w-80 { | |
| 575 | + width: 80%; | |
| 576 | +} | |
| 577 | +.fr-container .w-90 { | |
| 578 | + width: 90%; | |
| 579 | +} | |
| 580 | +.fr-container .w-100 { | |
| 581 | + width: 100%; | |
| 582 | +} | |
| 583 | +.fr-container .w-third { | |
| 584 | + width: calc(100% / 3); | |
| 585 | +} | |
| 586 | +.fr-container .w-two-thirds { | |
| 587 | + width: calc(100% / 1.5); | |
| 588 | +} | |
| 589 | +.fr-container .w-auto { | |
| 590 | + width: auto; | |
| 591 | +} | |
| 592 | +.fr-container .tl { | |
| 593 | + text-align: left; | |
| 594 | +} | |
| 595 | +.fr-container .tr { | |
| 596 | + text-align: right; | |
| 597 | +} | |
| 598 | +.fr-container .tc { | |
| 599 | + text-align: center; | |
| 600 | +} | |
| 601 | +.fr-container .tj { | |
| 602 | + text-align: justify; | |
| 603 | +} | |
| 604 | +.fr-container .overflow-visible { | |
| 605 | + overflow: visible; | |
| 606 | +} | |
| 607 | +.fr-container .overflow-hidden { | |
| 608 | + overflow: hidden; | |
| 609 | +} | |
| 610 | +.fr-container .overflow-scroll { | |
| 611 | + overflow: scroll; | |
| 612 | +} | |
| 613 | +.fr-container .overflow-auto { | |
| 614 | + overflow: auto; | |
| 615 | +} | |
| 616 | +.fr-container .overflow-x-visible { | |
| 617 | + overflow-x: visible; | |
| 618 | +} | |
| 619 | +.fr-container .overflow-x-hidden { | |
| 620 | + overflow-x: hidden; | |
| 621 | +} | |
| 622 | +.fr-container .overflow-x-scroll { | |
| 623 | + overflow-x: scroll; | |
| 624 | +} | |
| 625 | +.fr-container .overflow-x-auto { | |
| 626 | + overflow-x: auto; | |
| 627 | +} | |
| 628 | +.fr-container .overflow-y-visible { | |
| 629 | + overflow-y: visible; | |
| 630 | +} | |
| 631 | +.fr-container .overflow-y-hidden { | |
| 632 | + overflow-y: hidden; | |
| 633 | +} | |
| 634 | +.fr-container .overflow-y-scroll { | |
| 635 | + overflow-y: scroll; | |
| 636 | +} | |
| 637 | +.fr-container .overflow-y-auto { | |
| 638 | + overflow-y: auto; | |
| 639 | +} | |
| 640 | +.fr-container .static { | |
| 641 | + position: static; | |
| 642 | +} | |
| 643 | +.fr-container .relative { | |
| 644 | + position: relative; | |
| 645 | +} | |
| 646 | +.fr-container .absolute { | |
| 647 | + position: absolute; | |
| 648 | +} | |
| 649 | +.fr-container .fixed { | |
| 650 | + position: fixed; | |
| 651 | +} | |
| 652 | +.fr-container .o-100 { | |
| 653 | + opacity: 1; | |
| 654 | +} | |
| 655 | +.fr-container .o-90 { | |
| 656 | + opacity: 0.9; | |
| 657 | +} | |
| 658 | +.fr-container .o-80 { | |
| 659 | + opacity: 0.8; | |
| 660 | +} | |
| 661 | +.fr-container .o-70 { | |
| 662 | + opacity: 0.7; | |
| 663 | +} | |
| 664 | +.fr-container .o-60 { | |
| 665 | + opacity: 0.6; | |
| 666 | +} | |
| 667 | +.fr-container .o-50 { | |
| 668 | + opacity: 0.5; | |
| 669 | +} | |
| 670 | +.fr-container .o-40 { | |
| 671 | + opacity: 0.4; | |
| 672 | +} | |
| 673 | +.fr-container .o-30 { | |
| 674 | + opacity: 0.3; | |
| 675 | +} | |
| 676 | +.fr-container .o-20 { | |
| 677 | + opacity: 0.2; | |
| 678 | +} | |
| 679 | +.fr-container .o-10 { | |
| 680 | + opacity: 0.1; | |
| 681 | +} | |
| 682 | +.fr-container .o-05 { | |
| 683 | + opacity: 0.05; | |
| 684 | +} | |
| 685 | +.fr-container .o-025 { | |
| 686 | + opacity: 0.025; | |
| 687 | +} | |
| 688 | +.fr-container .o-0 { | |
| 689 | + opacity: 0; | |
| 690 | +} | |
| 691 | +.fr-container .pa0 { | |
| 692 | + padding: 0; | |
| 693 | +} | |
| 694 | +.fr-container .pa1 { | |
| 695 | + padding: 0.25rem; | |
| 696 | +} | |
| 697 | +.fr-container .pa2 { | |
| 698 | + padding: 0.5rem; | |
| 699 | +} | |
| 700 | +.fr-container .pa3 { | |
| 701 | + padding: 1rem; | |
| 702 | +} | |
| 703 | +.fr-container .pa4 { | |
| 704 | + padding: 2rem; | |
| 705 | +} | |
| 706 | +.fr-container .pa5 { | |
| 707 | + padding: 4rem; | |
| 708 | +} | |
| 709 | +.fr-container .pa6 { | |
| 710 | + padding: 8rem; | |
| 711 | +} | |
| 712 | +.fr-container .pa7 { | |
| 713 | + padding: 16rem; | |
| 714 | +} | |
| 715 | +.fr-container .pl0 { | |
| 716 | + padding-left: 0; | |
| 717 | +} | |
| 718 | +.fr-container .pl1 { | |
| 719 | + padding-left: 0.25rem; | |
| 720 | +} | |
| 721 | +.fr-container .pl2 { | |
| 722 | + padding-left: 0.5rem; | |
| 723 | +} | |
| 724 | +.fr-container .pl3 { | |
| 725 | + padding-left: 1rem; | |
| 726 | +} | |
| 727 | +.fr-container .pl4 { | |
| 728 | + padding-left: 2rem; | |
| 729 | +} | |
| 730 | +.fr-container .pl5 { | |
| 731 | + padding-left: 4rem; | |
| 732 | +} | |
| 733 | +.fr-container .pl6 { | |
| 734 | + padding-left: 8rem; | |
| 735 | +} | |
| 736 | +.fr-container .pl7 { | |
| 737 | + padding-left: 16rem; | |
| 738 | +} | |
| 739 | +.fr-container .pr0 { | |
| 740 | + padding-right: 0; | |
| 741 | +} | |
| 742 | +.fr-container .pr1 { | |
| 743 | + padding-right: 0.25rem; | |
| 744 | +} | |
| 745 | +.fr-container .pr2 { | |
| 746 | + padding-right: 0.5rem; | |
| 747 | +} | |
| 748 | +.fr-container .pr3 { | |
| 749 | + padding-right: 1rem; | |
| 750 | +} | |
| 751 | +.fr-container .pr4 { | |
| 752 | + padding-right: 2rem; | |
| 753 | +} | |
| 754 | +.fr-container .pr5 { | |
| 755 | + padding-right: 4rem; | |
| 756 | +} | |
| 757 | +.fr-container .pr6 { | |
| 758 | + padding-right: 8rem; | |
| 759 | +} | |
| 760 | +.fr-container .pr7 { | |
| 761 | + padding-right: 16rem; | |
| 762 | +} | |
| 763 | +.fr-container .pb0 { | |
| 764 | + padding-bottom: 0; | |
| 765 | +} | |
| 766 | +.fr-container .pb1 { | |
| 767 | + padding-bottom: 0.25rem; | |
| 768 | +} | |
| 769 | +.fr-container .pb2 { | |
| 770 | + padding-bottom: 0.5rem; | |
| 771 | +} | |
| 772 | +.fr-container .pb3 { | |
| 773 | + padding-bottom: 1rem; | |
| 774 | +} | |
| 775 | +.fr-container .pb4 { | |
| 776 | + padding-bottom: 2rem; | |
| 777 | +} | |
| 778 | +.fr-container .pb5 { | |
| 779 | + padding-bottom: 4rem; | |
| 780 | +} | |
| 781 | +.fr-container .pb6 { | |
| 782 | + padding-bottom: 8rem; | |
| 783 | +} | |
| 784 | +.fr-container .pb7 { | |
| 785 | + padding-bottom: 16rem; | |
| 786 | +} | |
| 787 | +.fr-container .pt0 { | |
| 788 | + padding-top: 0; | |
| 789 | +} | |
| 790 | +.fr-container .pt1 { | |
| 791 | + padding-top: 0.25rem; | |
| 792 | +} | |
| 793 | +.fr-container .pt2 { | |
| 794 | + padding-top: 0.5rem; | |
| 795 | +} | |
| 796 | +.fr-container .pt3 { | |
| 797 | + padding-top: 1rem; | |
| 798 | +} | |
| 799 | +.fr-container .pt4 { | |
| 800 | + padding-top: 2rem; | |
| 801 | +} | |
| 802 | +.fr-container .pt5 { | |
| 803 | + padding-top: 4rem; | |
| 804 | +} | |
| 805 | +.fr-container .pt6 { | |
| 806 | + padding-top: 8rem; | |
| 807 | +} | |
| 808 | +.fr-container .pt7 { | |
| 809 | + padding-top: 16rem; | |
| 810 | +} | |
| 811 | +.fr-container .pv0 { | |
| 812 | + padding-top: 0; | |
| 813 | + padding-bottom: 0; | |
| 814 | +} | |
| 815 | +.fr-container .pv1 { | |
| 816 | + padding-top: 0.25rem; | |
| 817 | + padding-bottom: 0.25rem; | |
| 818 | +} | |
| 819 | +.fr-container .pv2 { | |
| 820 | + padding-top: 0.5rem; | |
| 821 | + padding-bottom: 0.5rem; | |
| 822 | +} | |
| 823 | +.fr-container .pv3 { | |
| 824 | + padding-top: 1rem; | |
| 825 | + padding-bottom: 1rem; | |
| 826 | +} | |
| 827 | +.fr-container .pv4 { | |
| 828 | + padding-top: 2rem; | |
| 829 | + padding-bottom: 2rem; | |
| 830 | +} | |
| 831 | +.fr-container .pv5 { | |
| 832 | + padding-top: 4rem; | |
| 833 | + padding-bottom: 4rem; | |
| 834 | +} | |
| 835 | +.fr-container .pv6 { | |
| 836 | + padding-top: 8rem; | |
| 837 | + padding-bottom: 8rem; | |
| 838 | +} | |
| 839 | +.fr-container .pv7 { | |
| 840 | + padding-top: 16rem; | |
| 841 | + padding-bottom: 16rem; | |
| 842 | +} | |
| 843 | +.fr-container .ph0 { | |
| 844 | + padding-left: 0; | |
| 845 | + padding-right: 0; | |
| 846 | +} | |
| 847 | +.fr-container .ph1 { | |
| 848 | + padding-left: 0.25rem; | |
| 849 | + padding-right: 0.25rem; | |
| 850 | +} | |
| 851 | +.fr-container .ph2 { | |
| 852 | + padding-left: 0.5rem; | |
| 853 | + padding-right: 0.5rem; | |
| 854 | +} | |
| 855 | +.fr-container .ph3 { | |
| 856 | + padding-left: 1rem; | |
| 857 | + padding-right: 1rem; | |
| 858 | +} | |
| 859 | +.fr-container .ph4 { | |
| 860 | + padding-left: 2rem; | |
| 861 | + padding-right: 2rem; | |
| 862 | +} | |
| 863 | +.fr-container .ph5 { | |
| 864 | + padding-left: 4rem; | |
| 865 | + padding-right: 4rem; | |
| 866 | +} | |
| 867 | +.fr-container .ph6 { | |
| 868 | + padding-left: 8rem; | |
| 869 | + padding-right: 8rem; | |
| 870 | +} | |
| 871 | +.fr-container .ph7 { | |
| 872 | + padding-left: 16rem; | |
| 873 | + padding-right: 16rem; | |
| 874 | +} | |
| 875 | +.fr-container .ma1 { | |
| 876 | + margin: 0.25rem; | |
| 877 | +} | |
| 878 | +.fr-container .ma2 { | |
| 879 | + margin: 0.5rem; | |
| 880 | +} | |
| 881 | +.fr-container .ma3 { | |
| 882 | + margin: 1rem; | |
| 883 | +} | |
| 884 | +.fr-container .ma4 { | |
| 885 | + margin: 2rem; | |
| 886 | +} | |
| 887 | +.fr-container .ma5 { | |
| 888 | + margin: 4rem; | |
| 889 | +} | |
| 890 | +.fr-container .ma6 { | |
| 891 | + margin: 8rem; | |
| 892 | +} | |
| 893 | +.fr-container .ma7 { | |
| 894 | + margin: 16rem; | |
| 895 | +} | |
| 896 | +.fr-container .ma0 { | |
| 897 | + margin: 0; | |
| 898 | +} | |
| 899 | +.fr-container .ml1 { | |
| 900 | + margin-left: 0.25rem; | |
| 901 | +} | |
| 902 | +.fr-container .ml2 { | |
| 903 | + margin-left: 0.5rem; | |
| 904 | +} | |
| 905 | +.fr-container .ml3 { | |
| 906 | + margin-left: 1rem; | |
| 907 | +} | |
| 908 | +.fr-container .ml4 { | |
| 909 | + margin-left: 2rem; | |
| 910 | +} | |
| 911 | +.fr-container .ml5 { | |
| 912 | + margin-left: 4rem; | |
| 913 | +} | |
| 914 | +.fr-container .ml6 { | |
| 915 | + margin-left: 8rem; | |
| 916 | +} | |
| 917 | +.fr-container .ml7 { | |
| 918 | + margin-left: 16rem; | |
| 919 | +} | |
| 920 | +.fr-container .ml0 { | |
| 921 | + margin-left: 0; | |
| 922 | +} | |
| 923 | +.fr-container .mr1 { | |
| 924 | + margin-right: 0.25rem; | |
| 925 | +} | |
| 926 | +.fr-container .mr2 { | |
| 927 | + margin-right: 0.5rem; | |
| 928 | +} | |
| 929 | +.fr-container .mr3 { | |
| 930 | + margin-right: 1rem; | |
| 931 | +} | |
| 932 | +.fr-container .mr4 { | |
| 933 | + margin-right: 2rem; | |
| 934 | +} | |
| 935 | +.fr-container .mr5 { | |
| 936 | + margin-right: 4rem; | |
| 937 | +} | |
| 938 | +.fr-container .mr6 { | |
| 939 | + margin-right: 8rem; | |
| 940 | +} | |
| 941 | +.fr-container .mr7 { | |
| 942 | + margin-right: 16rem; | |
| 943 | +} | |
| 944 | +.fr-container .mr0 { | |
| 945 | + margin-right: 0; | |
| 946 | +} | |
| 947 | +.fr-container .mb1 { | |
| 948 | + margin-bottom: 0.25rem; | |
| 949 | +} | |
| 950 | +.fr-container .mb2 { | |
| 951 | + margin-bottom: 0.5rem; | |
| 952 | +} | |
| 953 | +.fr-container .mb3 { | |
| 954 | + margin-bottom: 1rem; | |
| 955 | +} | |
| 956 | +.fr-container .mb4 { | |
| 957 | + margin-bottom: 2rem; | |
| 958 | +} | |
| 959 | +.fr-container .mb5 { | |
| 960 | + margin-bottom: 4rem; | |
| 961 | +} | |
| 962 | +.fr-container .mb6 { | |
| 963 | + margin-bottom: 8rem; | |
| 964 | +} | |
| 965 | +.fr-container .mb7 { | |
| 966 | + margin-bottom: 16rem; | |
| 967 | +} | |
| 968 | +.fr-container .mb0 { | |
| 969 | + margin-bottom: 0; | |
| 970 | +} | |
| 971 | +.fr-container .mt1 { | |
| 972 | + margin-top: 0.25rem; | |
| 973 | +} | |
| 974 | +.fr-container .mt2 { | |
| 975 | + margin-top: 0.5rem; | |
| 976 | +} | |
| 977 | +.fr-container .mt3 { | |
| 978 | + margin-top: 1rem; | |
| 979 | +} | |
| 980 | +.fr-container .mt4 { | |
| 981 | + margin-top: 2rem; | |
| 982 | +} | |
| 983 | +.fr-container .mt5 { | |
| 984 | + margin-top: 4rem; | |
| 985 | +} | |
| 986 | +.fr-container .mt6 { | |
| 987 | + margin-top: 8rem; | |
| 988 | +} | |
| 989 | +.fr-container .mt7 { | |
| 990 | + margin-top: 16rem; | |
| 991 | +} | |
| 992 | +.fr-container .mt0 { | |
| 993 | + margin-top: 0; | |
| 994 | +} | |
| 995 | +.fr-container .mv1 { | |
| 996 | + margin-top: 0.25rem; | |
| 997 | + margin-bottom: 0.25rem; | |
| 998 | +} | |
| 999 | +.fr-container .mv2 { | |
| 1000 | + margin-top: 0.5rem; | |
| 1001 | + margin-bottom: 0.5rem; | |
| 1002 | +} | |
| 1003 | +.fr-container .mv3 { | |
| 1004 | + margin-top: 1rem; | |
| 1005 | + margin-bottom: 1rem; | |
| 1006 | +} | |
| 1007 | +.fr-container .mv4 { | |
| 1008 | + margin-top: 2rem; | |
| 1009 | + margin-bottom: 2rem; | |
| 1010 | +} | |
| 1011 | +.fr-container .mv5 { | |
| 1012 | + margin-top: 4rem; | |
| 1013 | + margin-bottom: 4rem; | |
| 1014 | +} | |
| 1015 | +.fr-container .mv6 { | |
| 1016 | + margin-top: 8rem; | |
| 1017 | + margin-bottom: 8rem; | |
| 1018 | +} | |
| 1019 | +.fr-container .mv7 { | |
| 1020 | + margin-top: 16rem; | |
| 1021 | + margin-bottom: 16rem; | |
| 1022 | +} | |
| 1023 | +.fr-container .mv0 { | |
| 1024 | + margin-top: 0; | |
| 1025 | + margin-bottom: 0; | |
| 1026 | +} | |
| 1027 | +.fr-container .mh1 { | |
| 1028 | + margin-left: 0.25rem; | |
| 1029 | + margin-right: 0.25rem; | |
| 1030 | +} | |
| 1031 | +.fr-container .mh2 { | |
| 1032 | + margin-left: 0.5rem; | |
| 1033 | + margin-right: 0.5rem; | |
| 1034 | +} | |
| 1035 | +.fr-container .mh3 { | |
| 1036 | + margin-left: 1rem; | |
| 1037 | + margin-right: 1rem; | |
| 1038 | +} | |
| 1039 | +.fr-container .mh4 { | |
| 1040 | + margin-left: 2rem; | |
| 1041 | + margin-right: 2rem; | |
| 1042 | +} | |
| 1043 | +.fr-container .mh5 { | |
| 1044 | + margin-left: 4rem; | |
| 1045 | + margin-right: 4rem; | |
| 1046 | +} | |
| 1047 | +.fr-container .mh6 { | |
| 1048 | + margin-left: 8rem; | |
| 1049 | + margin-right: 8rem; | |
| 1050 | +} | |
| 1051 | +.fr-container .mh7 { | |
| 1052 | + margin-left: 16rem; | |
| 1053 | + margin-right: 16rem; | |
| 1054 | +} | |
| 1055 | +.fr-container .mh0 { | |
| 1056 | + margin-left: 0; | |
| 1057 | + margin-right: 0; | |
| 1058 | +} | |
| 1059 | +.fr-container .debug * { | |
| 1060 | + outline: 1px solid gold; | |
| 1061 | +} | |
| 1062 | +.fr-container .debug-white * { | |
| 1063 | + outline: 1px solid white; | |
| 1064 | +} | |
| 1065 | +.fr-container .debug-black * { | |
| 1066 | + outline: 1px solid black; | |
| 1067 | +} | |
| 1068 | +.fr-container .debug-grid { | |
| 1069 | + background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAFElEQVR4AWPAC97/9x0eCsAEPgwAVLshdpENIxcAAAAASUVORK5CYII=) repeat top left; | |
| 1070 | +} | |
| 1071 | +.fr-container .truncate { | |
| 1072 | + white-space: nowrap; | |
| 1073 | + overflow: hidden; | |
| 1074 | + text-overflow: ellipsis; | |
| 1075 | +} | |
| 1076 | +.fr-container .bg-white { | |
| 1077 | + background-color: #fff; | |
| 1078 | +} | |
| 1079 | +.fr-container .pointer:hover { | |
| 1080 | + cursor: pointer; | |
| 1081 | +} | |
| 1082 | +.fr-container .link { | |
| 1083 | + color: #1890ff; | |
| 1084 | + font-size: 14px; | |
| 1085 | +} | |
| 1086 | +.fr-container .link:hover { | |
| 1087 | + color: #40a9ff; | |
| 1088 | + font-size: 14px; | |
| 1089 | +} | ... | ... |
es/form-render-core/src/connectForm.js
0 → 100644
| 1 | +function _extends() { _extends = Object.assign || 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); } | |
| 2 | + | |
| 3 | +import React, { forwardRef } from 'react'; | |
| 4 | +import useForm from './useForm'; | |
| 5 | + | |
| 6 | +var connectForm = function connectForm(Component) { | |
| 7 | + return /*#__PURE__*/forwardRef(function (props, ref) { | |
| 8 | + var form = useForm(); | |
| 9 | + return /*#__PURE__*/React.createElement(Component, _extends({ | |
| 10 | + ref: ref | |
| 11 | + }, props, { | |
| 12 | + form: form | |
| 13 | + })); | |
| 14 | + }); | |
| 15 | +}; | |
| 16 | + | |
| 17 | +export default connectForm; | |
| \ No newline at end of file | ... | ... |
| 1 | +import "antd/es/button/style"; | |
| 2 | +import _Button from "antd/es/button"; | |
| 3 | +import "antd/es/popconfirm/style"; | |
| 4 | +import _Popconfirm from "antd/es/popconfirm"; | |
| 5 | +import _CloseOutlined from "@ant-design/icons/es/icons/CloseOutlined"; | |
| 6 | +import _CopyOutlined from "@ant-design/icons/es/icons/CopyOutlined"; | |
| 7 | +import _ArrowDownOutlined from "@ant-design/icons/es/icons/ArrowDownOutlined"; | |
| 8 | +import _ArrowUpOutlined from "@ant-design/icons/es/icons/ArrowUpOutlined"; | |
| 9 | + | |
| 10 | +function _extends() { _extends = Object.assign || 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); } | |
| 11 | + | |
| 12 | +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; } | |
| 13 | + | |
| 14 | +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(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; } | |
| 15 | + | |
| 16 | +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | |
| 17 | + | |
| 18 | +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | |
| 19 | + | |
| 20 | +import React from 'react'; | |
| 21 | +import { useTools } from '../../../hooks'; | |
| 22 | +import Core from '../../index'; | |
| 23 | + | |
| 24 | +var CardList = function CardList(_ref) { | |
| 25 | + var _ref$displayList = _ref.displayList, | |
| 26 | + displayList = _ref$displayList === void 0 ? [] : _ref$displayList, | |
| 27 | + listData = _ref.listData, | |
| 28 | + changeList = _ref.changeList, | |
| 29 | + schema = _ref.schema, | |
| 30 | + deleteItem = _ref.deleteItem, | |
| 31 | + copyItem = _ref.copyItem, | |
| 32 | + addItem = _ref.addItem, | |
| 33 | + moveItemUp = _ref.moveItemUp, | |
| 34 | + moveItemDown = _ref.moveItemDown, | |
| 35 | + displayType = _ref.displayType, | |
| 36 | + getFieldsProps = _ref.getFieldsProps; | |
| 37 | + var _schema$props = schema.props, | |
| 38 | + props = _schema$props === void 0 ? {} : _schema$props, | |
| 39 | + itemProps = schema.itemProps, | |
| 40 | + _schema$min = schema.min, | |
| 41 | + min = _schema$min === void 0 ? 0 : _schema$min, | |
| 42 | + _schema$max = schema.max, | |
| 43 | + max = _schema$max === void 0 ? 9999 : _schema$max; | |
| 44 | + | |
| 45 | + var _useTools = useTools(), | |
| 46 | + methods = _useTools.methods; | |
| 47 | + | |
| 48 | + var addBtnProps = { | |
| 49 | + type: 'dashed', | |
| 50 | + children: '新增一条' | |
| 51 | + }; | |
| 52 | + var delConfirmProps = { | |
| 53 | + title: '确定删除?', | |
| 54 | + okText: '确定', | |
| 55 | + cancelText: '取消' | |
| 56 | + }; | |
| 57 | + | |
| 58 | + if (props.addBtnProps && _typeof(props.addBtnProps) === 'object') { | |
| 59 | + addBtnProps = _objectSpread(_objectSpread({}, addBtnProps), props.addBtnProps); | |
| 60 | + } | |
| 61 | + | |
| 62 | + if (props.delConfirmProps && _typeof(props.delConfirmProps) === 'object') { | |
| 63 | + delConfirmProps = _objectSpread(_objectSpread({}, delConfirmProps), props.delConfirmProps); | |
| 64 | + } | |
| 65 | + | |
| 66 | + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { | |
| 67 | + className: "fr-card-list" | |
| 68 | + }, displayList.map(function (item, idx) { | |
| 69 | + var fieldsProps = getFieldsProps(idx); | |
| 70 | + fieldsProps.displayType = displayType; | |
| 71 | + return /*#__PURE__*/React.createElement("div", { | |
| 72 | + className: "fr-card-item ".concat(displayType === 'row' ? 'fr-card-item-row' : ''), | |
| 73 | + key: idx | |
| 74 | + }, /*#__PURE__*/React.createElement("div", { | |
| 75 | + className: "fr-card-index" | |
| 76 | + }, idx + 1), /*#__PURE__*/React.createElement(Core, fieldsProps), /*#__PURE__*/React.createElement("div", { | |
| 77 | + direction: "horizontal", | |
| 78 | + className: "fr-card-toolbar" | |
| 79 | + }, !props.hideMove && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ArrowUpOutlined, { | |
| 80 | + style: { | |
| 81 | + fontSize: 16, | |
| 82 | + marginLeft: 4 | |
| 83 | + }, | |
| 84 | + onClick: function onClick() { | |
| 85 | + return moveItemUp(idx); | |
| 86 | + } | |
| 87 | + }), /*#__PURE__*/React.createElement(_ArrowDownOutlined, { | |
| 88 | + style: { | |
| 89 | + fontSize: 16, | |
| 90 | + marginLeft: 4 | |
| 91 | + }, | |
| 92 | + onClick: function onClick() { | |
| 93 | + return moveItemDown(idx); | |
| 94 | + } | |
| 95 | + })), !props.hideAdd && !props.hideCopy && /*#__PURE__*/React.createElement(_CopyOutlined, { | |
| 96 | + style: { | |
| 97 | + fontSize: 16, | |
| 98 | + marginLeft: 8 | |
| 99 | + }, | |
| 100 | + onClick: function onClick() { | |
| 101 | + return copyItem(idx); | |
| 102 | + } | |
| 103 | + }), !props.hideDelete && displayList.length > min && /*#__PURE__*/React.createElement(_Popconfirm, _extends({ | |
| 104 | + onConfirm: function onConfirm() { | |
| 105 | + if (props.onConfirm && typeof props.onConfirm === 'string') { | |
| 106 | + var cb = methods[props.onConfirm]; | |
| 107 | + | |
| 108 | + if (typeof cb === 'function') { | |
| 109 | + var result = cb(item, idx); | |
| 110 | + | |
| 111 | + if (!result) { | |
| 112 | + return; | |
| 113 | + } | |
| 114 | + } | |
| 115 | + } | |
| 116 | + | |
| 117 | + deleteItem(idx); | |
| 118 | + } | |
| 119 | + }, delConfirmProps), /*#__PURE__*/React.createElement(_CloseOutlined, { | |
| 120 | + style: { | |
| 121 | + fontSize: 16, | |
| 122 | + marginLeft: 8 | |
| 123 | + } | |
| 124 | + })))); | |
| 125 | + })), /*#__PURE__*/React.createElement("div", { | |
| 126 | + style: { | |
| 127 | + marginTop: displayList.length > 0 ? 0 : 8 | |
| 128 | + } | |
| 129 | + }, !props.hideAdd && displayList.length < max && /*#__PURE__*/React.createElement(_Button, _extends({ | |
| 130 | + onClick: addItem | |
| 131 | + }, addBtnProps)), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) { | |
| 132 | + var callback = item.callback, | |
| 133 | + text = item.text, | |
| 134 | + html = item.html; | |
| 135 | + | |
| 136 | + var onClick = function onClick() { | |
| 137 | + console.log({ | |
| 138 | + value: listData, | |
| 139 | + onChange: changeList, | |
| 140 | + schema: schema | |
| 141 | + }); | |
| 142 | + }; | |
| 143 | + | |
| 144 | + if (typeof window[callback] === 'function') { | |
| 145 | + onClick = function onClick() { | |
| 146 | + window[callback]({ | |
| 147 | + value: listData, | |
| 148 | + onChange: changeList, | |
| 149 | + schema: schema | |
| 150 | + }); | |
| 151 | + }; | |
| 152 | + } | |
| 153 | + | |
| 154 | + return /*#__PURE__*/React.createElement(_Button, { | |
| 155 | + key: idx.toString(), | |
| 156 | + style: { | |
| 157 | + marginLeft: 8 | |
| 158 | + }, | |
| 159 | + type: "dashed", | |
| 160 | + onClick: onClick | |
| 161 | + }, /*#__PURE__*/React.createElement("span", { | |
| 162 | + dangerouslySetInnerHTML: { | |
| 163 | + __html: html || text | |
| 164 | + } | |
| 165 | + })); | |
| 166 | + }) : null)); | |
| 167 | +}; | |
| 168 | + | |
| 169 | +export default CardList; | |
| \ No newline at end of file | ... | ... |
| 1 | +import "antd/es/table/style"; | |
| 2 | +import _Table from "antd/es/table"; | |
| 3 | +import "antd/es/drawer/style"; | |
| 4 | +import _Drawer from "antd/es/drawer"; | |
| 5 | +import "antd/es/button/style"; | |
| 6 | +import _Button from "antd/es/button"; | |
| 7 | +import _ArrowDownOutlined from "@ant-design/icons/es/icons/ArrowDownOutlined"; | |
| 8 | +import _ArrowUpOutlined from "@ant-design/icons/es/icons/ArrowUpOutlined"; | |
| 9 | +import "antd/es/popconfirm/style"; | |
| 10 | +import _Popconfirm from "antd/es/popconfirm"; | |
| 11 | +var _excluded = ["buttons"], | |
| 12 | + _excluded2 = ["pagination"]; | |
| 13 | + | |
| 14 | +function _extends() { _extends = Object.assign || 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); } | |
| 15 | + | |
| 16 | +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } | |
| 17 | + | |
| 18 | +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 19 | + | |
| 20 | +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | |
| 21 | + | |
| 22 | +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | |
| 23 | + | |
| 24 | +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | |
| 25 | + | |
| 26 | +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | |
| 27 | + | |
| 28 | +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; } | |
| 29 | + | |
| 30 | +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(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; } | |
| 31 | + | |
| 32 | +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | |
| 33 | + | |
| 34 | +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | |
| 35 | + | |
| 36 | +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } | |
| 37 | + | |
| 38 | +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } | |
| 39 | + | |
| 40 | +import React, { useRef } from 'react'; | |
| 41 | +import { useSet, useTools } from '../../../hooks'; | |
| 42 | +import { getDataPath, getDisplayValue, getKeyFromPath } from '../../../utils'; | |
| 43 | +import Core from '../../index'; | |
| 44 | +import ErrorMessage from '../../RenderField/ErrorMessage'; | |
| 45 | +var FIELD_LENGTH = 170; | |
| 46 | + | |
| 47 | +var DrawerList = function DrawerList(_ref) { | |
| 48 | + var _extends2; | |
| 49 | + | |
| 50 | + var _ref$displayList = _ref.displayList, | |
| 51 | + displayList = _ref$displayList === void 0 ? [] : _ref$displayList, | |
| 52 | + dataPath = _ref.dataPath, | |
| 53 | + children = _ref.children, | |
| 54 | + deleteItem = _ref.deleteItem, | |
| 55 | + addItem = _ref.addItem, | |
| 56 | + moveItemDown = _ref.moveItemDown, | |
| 57 | + moveItemUp = _ref.moveItemUp, | |
| 58 | + flatten = _ref.flatten, | |
| 59 | + errorFields = _ref.errorFields, | |
| 60 | + getFieldsProps = _ref.getFieldsProps, | |
| 61 | + schema = _ref.schema, | |
| 62 | + changeList = _ref.changeList, | |
| 63 | + listData = _ref.listData; | |
| 64 | + | |
| 65 | + var _useTools = useTools(), | |
| 66 | + widgets = _useTools.widgets; | |
| 67 | + | |
| 68 | + var _schema$props = schema.props, | |
| 69 | + props = _schema$props === void 0 ? {} : _schema$props, | |
| 70 | + _schema$itemProps = schema.itemProps, | |
| 71 | + itemProps = _schema$itemProps === void 0 ? {} : _schema$itemProps; | |
| 72 | + | |
| 73 | + var buttons = itemProps.buttons, | |
| 74 | + columnProps = _objectWithoutProperties(itemProps, _excluded); | |
| 75 | + | |
| 76 | + var _props$pagination = props.pagination, | |
| 77 | + pagination = _props$pagination === void 0 ? {} : _props$pagination, | |
| 78 | + rest = _objectWithoutProperties(props, _excluded2); | |
| 79 | + | |
| 80 | + var actionColumnProps = { | |
| 81 | + colHeaderText: '操作', | |
| 82 | + editText: '编辑', | |
| 83 | + delText: '删除' | |
| 84 | + }; | |
| 85 | + var delConfirmProps = { | |
| 86 | + title: '确定删除?', | |
| 87 | + okText: '确定', | |
| 88 | + cancelText: '取消' | |
| 89 | + }; | |
| 90 | + var addBtnProps = { | |
| 91 | + type: 'primary', | |
| 92 | + children: '新增一条', | |
| 93 | + size: 'small' | |
| 94 | + }; | |
| 95 | + | |
| 96 | + if (props.actionColumnProps && _typeof(props.actionColumnProps) === 'object') { | |
| 97 | + actionColumnProps = _objectSpread(_objectSpread({}, actionColumnProps), props.actionColumnProps); | |
| 98 | + } | |
| 99 | + | |
| 100 | + if (props.delConfirmProps && _typeof(props.delConfirmProps) === 'object') { | |
| 101 | + delConfirmProps = _objectSpread(_objectSpread({}, delConfirmProps), props.delConfirmProps); | |
| 102 | + } | |
| 103 | + | |
| 104 | + if (props.addBtnProps && _typeof(props.addBtnProps) === 'object') { | |
| 105 | + addBtnProps = _objectSpread(_objectSpread({}, addBtnProps), props.addBtnProps); | |
| 106 | + } | |
| 107 | + | |
| 108 | + var paginationConfig = pagination && _objectSpread({ | |
| 109 | + size: 'small', | |
| 110 | + hideOnSinglePage: true | |
| 111 | + }, pagination); | |
| 112 | + | |
| 113 | + var currentIndex = useRef(-1); | |
| 114 | + | |
| 115 | + var _useSet = useSet({ | |
| 116 | + showDrawer: false | |
| 117 | + }), | |
| 118 | + _useSet2 = _slicedToArray(_useSet, 2), | |
| 119 | + state = _useSet2[0], | |
| 120 | + setState = _useSet2[1]; | |
| 121 | + | |
| 122 | + var showDrawer = state.showDrawer; | |
| 123 | + var dataSource = displayList.map(function (item, index) { | |
| 124 | + return _objectSpread(_objectSpread({}, item), {}, { | |
| 125 | + $idx: index | |
| 126 | + }); | |
| 127 | + }); | |
| 128 | + var columns = children.map(function (child) { | |
| 129 | + var item = flatten[child]; | |
| 130 | + var schema = item && item.schema || {}; | |
| 131 | + | |
| 132 | + var _dataIndex = getKeyFromPath(child); | |
| 133 | + | |
| 134 | + return _objectSpread({ | |
| 135 | + dataIndex: _dataIndex, | |
| 136 | + title: schema.required ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", { | |
| 137 | + className: "fr-label-required" | |
| 138 | + }, " *"), /*#__PURE__*/React.createElement("span", null, schema.title)) : schema.title, | |
| 139 | + width: FIELD_LENGTH, | |
| 140 | + render: function render(value, record) { | |
| 141 | + var childPath = getDataPath(child, [record.$idx]); | |
| 142 | + var errorObj = errorFields.find(function (item) { | |
| 143 | + return item.name == childPath; | |
| 144 | + }) || {}; //TODO: 万一error在更深的层,这个办法是find不到的,会展示那一行没有提示。可以整一行加一个红线的方式处理 | |
| 145 | + | |
| 146 | + var Widget = widgets[schema.readOnlyWidget]; | |
| 147 | + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, Widget ? /*#__PURE__*/React.createElement(Widget, { | |
| 148 | + value: value, | |
| 149 | + schema: schema | |
| 150 | + }) : getDisplayValue(value, schema)), errorObj.error && /*#__PURE__*/React.createElement(ErrorMessage, { | |
| 151 | + message: errorObj.error, | |
| 152 | + schema: schema | |
| 153 | + })); | |
| 154 | + } | |
| 155 | + }, columnProps); | |
| 156 | + }); | |
| 157 | + columns.push({ | |
| 158 | + title: actionColumnProps.colHeaderText, | |
| 159 | + key: '$action', | |
| 160 | + fixed: 'right', | |
| 161 | + width: 120, | |
| 162 | + render: function render(value, record, idx) { | |
| 163 | + var index = value && value.$idx || 0; | |
| 164 | + return /*#__PURE__*/React.createElement("div", null, !props.hideEdit && /*#__PURE__*/React.createElement("a", { | |
| 165 | + onClick: function onClick() { | |
| 166 | + return openDrawer(index); | |
| 167 | + } | |
| 168 | + }, actionColumnProps.editText), !props.hideDelete && /*#__PURE__*/React.createElement(_Popconfirm, _extends({ | |
| 169 | + onConfirm: function onConfirm() { | |
| 170 | + return deleteItem(index); | |
| 171 | + } | |
| 172 | + }, delConfirmProps), /*#__PURE__*/React.createElement("a", { | |
| 173 | + style: { | |
| 174 | + marginLeft: 8 | |
| 175 | + } | |
| 176 | + }, actionColumnProps.delText)), !props.hideMove && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ArrowUpOutlined, { | |
| 177 | + style: { | |
| 178 | + color: '#1890ff', | |
| 179 | + fontSize: 16, | |
| 180 | + marginLeft: 8 | |
| 181 | + }, | |
| 182 | + onClick: function onClick() { | |
| 183 | + return moveItemUp(index); | |
| 184 | + } | |
| 185 | + }), /*#__PURE__*/React.createElement(_ArrowDownOutlined, { | |
| 186 | + style: { | |
| 187 | + color: '#1890ff', | |
| 188 | + fontSize: 16, | |
| 189 | + marginLeft: 8 | |
| 190 | + }, | |
| 191 | + onClick: function onClick() { | |
| 192 | + return moveItemDown(index); | |
| 193 | + } | |
| 194 | + }))); | |
| 195 | + } | |
| 196 | + }); | |
| 197 | + var fieldsProps = getFieldsProps(currentIndex.current); | |
| 198 | + | |
| 199 | + var openDrawer = function openDrawer(index) { | |
| 200 | + currentIndex.current = index; | |
| 201 | + setState({ | |
| 202 | + showDrawer: true | |
| 203 | + }); | |
| 204 | + }; | |
| 205 | + | |
| 206 | + var closeDrawer = function closeDrawer() { | |
| 207 | + currentIndex.current = -1; | |
| 208 | + setState({ | |
| 209 | + showDrawer: false | |
| 210 | + }); | |
| 211 | + }; | |
| 212 | + | |
| 213 | + var handleAdd = function handleAdd() { | |
| 214 | + var newIndex = addItem(); | |
| 215 | + openDrawer(newIndex); | |
| 216 | + }; | |
| 217 | + | |
| 218 | + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { | |
| 219 | + className: "w-100 mb2 tr" | |
| 220 | + }, !props.hideAdd && /*#__PURE__*/React.createElement(_Button, _extends({}, addBtnProps, { | |
| 221 | + onClick: handleAdd | |
| 222 | + })), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) { | |
| 223 | + var callback = item.callback, | |
| 224 | + text = item.text, | |
| 225 | + html = item.html; | |
| 226 | + | |
| 227 | + var onClick = function onClick() { | |
| 228 | + console.log({ | |
| 229 | + value: listData, | |
| 230 | + onChange: changeList, | |
| 231 | + schema: schema | |
| 232 | + }); | |
| 233 | + }; | |
| 234 | + | |
| 235 | + if (typeof window[callback] === 'function') { | |
| 236 | + onClick = function onClick() { | |
| 237 | + window[callback]({ | |
| 238 | + value: listData, | |
| 239 | + onChange: changeList, | |
| 240 | + schema: schema | |
| 241 | + }); | |
| 242 | + }; | |
| 243 | + } | |
| 244 | + | |
| 245 | + return /*#__PURE__*/React.createElement(_Button, { | |
| 246 | + key: idx.toString(), | |
| 247 | + style: { | |
| 248 | + marginLeft: 8 | |
| 249 | + }, | |
| 250 | + size: "small", | |
| 251 | + onClick: onClick | |
| 252 | + }, /*#__PURE__*/React.createElement("span", { | |
| 253 | + dangerouslySetInnerHTML: { | |
| 254 | + __html: html || text | |
| 255 | + } | |
| 256 | + })); | |
| 257 | + }) : null), /*#__PURE__*/React.createElement(_Drawer, { | |
| 258 | + width: "600", | |
| 259 | + title: actionColumnProps.colHeaderText, | |
| 260 | + placement: "right", | |
| 261 | + onClose: closeDrawer, | |
| 262 | + visible: showDrawer, | |
| 263 | + destroyOnClose: true // 必须要加,currentIndex不是一个state,Core不会重新渲染就跪了 | |
| 264 | + | |
| 265 | + }, /*#__PURE__*/React.createElement("div", { | |
| 266 | + className: "fr-container" | |
| 267 | + }, /*#__PURE__*/React.createElement(Core, fieldsProps))), /*#__PURE__*/React.createElement(_Table, _extends((_extends2 = { | |
| 268 | + size: "small", | |
| 269 | + scroll: { | |
| 270 | + x: 'max-content' | |
| 271 | + }, | |
| 272 | + columns: columns, | |
| 273 | + dataSource: dataSource, | |
| 274 | + rowClassName: function rowClassName(record, idx) { | |
| 275 | + var index = record && record.$idx; | |
| 276 | + var hasError = errorFields.find(function (item) { | |
| 277 | + return item.name.indexOf("".concat(dataPath, "[").concat(index, "]")) > -1; | |
| 278 | + }); | |
| 279 | + return hasError ? 'fr-row-error' : ''; | |
| 280 | + }, | |
| 281 | + rowKey: "$idx" | |
| 282 | + }, _defineProperty(_extends2, "size", "small"), _defineProperty(_extends2, "pagination", paginationConfig), _extends2), rest))); | |
| 283 | +}; | |
| 284 | + | |
| 285 | +export default DrawerList; | |
| \ No newline at end of file | ... | ... |
| 1 | +import _PlusCircleFilled from "@ant-design/icons/es/icons/PlusCircleFilled"; | |
| 2 | +import _DownOutlined from "@ant-design/icons/es/icons/DownOutlined"; | |
| 3 | +import _UpOutlined from "@ant-design/icons/es/icons/UpOutlined"; | |
| 4 | +import _DeleteOutlined from "@ant-design/icons/es/icons/DeleteOutlined"; | |
| 5 | + | |
| 6 | +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } | |
| 7 | + | |
| 8 | +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 9 | + | |
| 10 | +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } | |
| 11 | + | |
| 12 | +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } | |
| 13 | + | |
| 14 | +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } | |
| 15 | + | |
| 16 | +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 17 | + | |
| 18 | +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | |
| 19 | + | |
| 20 | +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | |
| 21 | + | |
| 22 | +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | |
| 23 | + | |
| 24 | +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | |
| 25 | + | |
| 26 | +/* eslint-disable jsx-a11y/anchor-is-valid */ | |
| 27 | +import React, { useEffect, useMemo, useState } from 'react'; | |
| 28 | +import Core from '../../index'; // import { Button, Space, Popconfirm } from 'antd'; | |
| 29 | +// import ArrowDown from '../../../components/ArrowDown'; | |
| 30 | +// import { Collapse } from 'antd-mobile' | |
| 31 | + | |
| 32 | +// 数字转汉字 | |
| 33 | +function convertToChinaNum(num) { | |
| 34 | + var arr1 = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']; | |
| 35 | + var arr2 = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万', '十', '百', '千', '亿']; //可继续追加更高位转换值 | |
| 36 | + | |
| 37 | + if (!num || isNaN(num)) { | |
| 38 | + return "零"; | |
| 39 | + } | |
| 40 | + | |
| 41 | + var english = num.toString().split(""); | |
| 42 | + var result = ""; | |
| 43 | + | |
| 44 | + for (var i = 0; i < english.length; i++) { | |
| 45 | + var des_i = english.length - 1 - i; //倒序排列设值 | |
| 46 | + | |
| 47 | + result = arr2[i] + result; | |
| 48 | + var arr1_index = english[des_i]; | |
| 49 | + result = arr1[arr1_index] + result; | |
| 50 | + } | |
| 51 | + | |
| 52 | + result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十'); | |
| 53 | + result = result.replace(/零+/g, '零'); | |
| 54 | + result = result.replace(/零亿/g, '亿').replace(/零万/g, '万'); | |
| 55 | + result = result.replace(/亿万/g, '亿'); | |
| 56 | + result = result.replace(/零+$/, ''); | |
| 57 | + result = result.replace(/^一十/g, '十'); | |
| 58 | + return result; | |
| 59 | +} | |
| 60 | + | |
| 61 | +var ListForMobile = function ListForMobile(_ref) { | |
| 62 | + var _ref$displayList = _ref.displayList, | |
| 63 | + displayList = _ref$displayList === void 0 ? [] : _ref$displayList, | |
| 64 | + listData = _ref.listData, | |
| 65 | + changeList = _ref.changeList, | |
| 66 | + schema = _ref.schema, | |
| 67 | + deleteItem = _ref.deleteItem, | |
| 68 | + copyItem = _ref.copyItem, | |
| 69 | + addItem = _ref.addItem, | |
| 70 | + moveItemUp = _ref.moveItemUp, | |
| 71 | + moveItemDown = _ref.moveItemDown, | |
| 72 | + displayType = _ref.displayType, | |
| 73 | + getFieldsProps = _ref.getFieldsProps; | |
| 74 | + var _schema$props = schema.props, | |
| 75 | + props = _schema$props === void 0 ? {} : _schema$props, | |
| 76 | + itemProps = schema.itemProps; | |
| 77 | + | |
| 78 | + var _useState = useState([]), | |
| 79 | + _useState2 = _slicedToArray(_useState, 2), | |
| 80 | + allKeys = _useState2[0], | |
| 81 | + setKeys = _useState2[1]; // let addBtnProps = { | |
| 82 | + // type: 'dashed', | |
| 83 | + // children: '新增一条list', | |
| 84 | + // }; | |
| 85 | + // if (props.addBtnProps && typeof props.addBtnProps === 'object') { | |
| 86 | + // addBtnProps = { ...addBtnProps, ...props.addBtnProps }; | |
| 87 | + // } | |
| 88 | + | |
| 89 | + | |
| 90 | + useEffect(function () { | |
| 91 | + var _allKeys = []; | |
| 92 | + displayList.forEach(function (item, idx) { | |
| 93 | + if (item._active) { | |
| 94 | + _allKeys.push(String(idx)); | |
| 95 | + } | |
| 96 | + }); | |
| 97 | + setKeys(_allKeys); | |
| 98 | + }, [displayList]); | |
| 99 | + | |
| 100 | + var getTitle = function getTitle(id) { | |
| 101 | + return /*#__PURE__*/React.createElement("div", { | |
| 102 | + style: { | |
| 103 | + display: 'flex', | |
| 104 | + justifyContent: "space-between", | |
| 105 | + alignItems: 'center' | |
| 106 | + } | |
| 107 | + }, /*#__PURE__*/React.createElement("span", null, "\u6570\u636E", id + 1), /*#__PURE__*/React.createElement("a", { | |
| 108 | + onClick: function onClick(e) { | |
| 109 | + e.stopPropagation(); | |
| 110 | + deleteItem(id); | |
| 111 | + }, | |
| 112 | + style: { | |
| 113 | + display: 'inline-block', | |
| 114 | + padding: '0 10px' | |
| 115 | + } | |
| 116 | + }, /*#__PURE__*/React.createElement(_DeleteOutlined, { | |
| 117 | + style: { | |
| 118 | + fontSize: 16, | |
| 119 | + width: 16, | |
| 120 | + height: 16 | |
| 121 | + } | |
| 122 | + }))); | |
| 123 | + }; | |
| 124 | + | |
| 125 | + var handleArrow = function handleArrow(active) { | |
| 126 | + if (active) { | |
| 127 | + return /*#__PURE__*/React.createElement(_UpOutlined, { | |
| 128 | + onClick: function onClick() {} | |
| 129 | + }); | |
| 130 | + } else { | |
| 131 | + return /*#__PURE__*/React.createElement(_DownOutlined, null); | |
| 132 | + } | |
| 133 | + }; | |
| 134 | + | |
| 135 | + return null; | |
| 136 | + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { | |
| 137 | + className: "fr-card-list qx-card-mobile" | |
| 138 | + }, /*#__PURE__*/React.createElement(Collapse, { | |
| 139 | + activeKey: allKeys | |
| 140 | + }, displayList.map(function (item, idx) { | |
| 141 | + var fieldsProps = getFieldsProps(idx); | |
| 142 | + fieldsProps.displayType = displayType; | |
| 143 | + return /*#__PURE__*/React.createElement(Collapse.Panel, { | |
| 144 | + key: String(idx), | |
| 145 | + title: getTitle(idx), | |
| 146 | + arrow: handleArrow, | |
| 147 | + onClick: function onClick() { | |
| 148 | + var _active = item._active || false; | |
| 149 | + | |
| 150 | + displayList[idx]._active = !_active; | |
| 151 | + changeList(_toConsumableArray(displayList)); | |
| 152 | + } | |
| 153 | + }, /*#__PURE__*/React.createElement("div", { | |
| 154 | + className: "fr-card-item qx-card-mobile-item ".concat(displayType === 'row' ? 'fr-card-item-row' : ''), | |
| 155 | + key: idx | |
| 156 | + }, /*#__PURE__*/React.createElement(Core, fieldsProps))); | |
| 157 | + }))), /*#__PURE__*/React.createElement("a", { | |
| 158 | + className: 'add-button', | |
| 159 | + onClick: function onClick() { | |
| 160 | + addItem(); | |
| 161 | + } | |
| 162 | + }, /*#__PURE__*/React.createElement(_PlusCircleFilled, { | |
| 163 | + style: { | |
| 164 | + marginRight: 2, | |
| 165 | + width: 14, | |
| 166 | + height: 14 | |
| 167 | + } | |
| 168 | + }), "\u70B9\u51FB\u65B0\u589E\u6570\u636E")); | |
| 169 | +}; | |
| 170 | + | |
| 171 | +export default ListForMobile; | |
| \ No newline at end of file | ... | ... |
| 1 | +import "antd/es/button/style"; | |
| 2 | +import _Button from "antd/es/button"; | |
| 3 | +import _ArrowDownOutlined from "@ant-design/icons/es/icons/ArrowDownOutlined"; | |
| 4 | +import _ArrowUpOutlined from "@ant-design/icons/es/icons/ArrowUpOutlined"; | |
| 5 | +import _CopyOutlined from "@ant-design/icons/es/icons/CopyOutlined"; | |
| 6 | +import "antd/es/popconfirm/style"; | |
| 7 | +import _Popconfirm from "antd/es/popconfirm"; | |
| 8 | +import _DeleteOutlined from "@ant-design/icons/es/icons/DeleteOutlined"; | |
| 9 | + | |
| 10 | +function _extends() { _extends = Object.assign || 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); } | |
| 11 | + | |
| 12 | +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; } | |
| 13 | + | |
| 14 | +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(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; } | |
| 15 | + | |
| 16 | +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | |
| 17 | + | |
| 18 | +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | |
| 19 | + | |
| 20 | +import React from 'react'; | |
| 21 | +import Core from '../../index'; | |
| 22 | + | |
| 23 | +var SimpleList = function SimpleList(_ref) { | |
| 24 | + var schema = _ref.schema, | |
| 25 | + _ref$displayList = _ref.displayList, | |
| 26 | + displayList = _ref$displayList === void 0 ? [] : _ref$displayList, | |
| 27 | + listData = _ref.listData, | |
| 28 | + changeList = _ref.changeList, | |
| 29 | + deleteItem = _ref.deleteItem, | |
| 30 | + addItem = _ref.addItem, | |
| 31 | + copyItem = _ref.copyItem, | |
| 32 | + moveItemUp = _ref.moveItemUp, | |
| 33 | + moveItemDown = _ref.moveItemDown, | |
| 34 | + getFieldsProps = _ref.getFieldsProps; | |
| 35 | + var _schema$props = schema.props, | |
| 36 | + props = _schema$props === void 0 ? {} : _schema$props, | |
| 37 | + itemProps = schema.itemProps, | |
| 38 | + _schema$min = schema.min, | |
| 39 | + min = _schema$min === void 0 ? 0 : _schema$min, | |
| 40 | + _schema$max = schema.max, | |
| 41 | + max = _schema$max === void 0 ? 99999 : _schema$max; | |
| 42 | + var addBtnProps = { | |
| 43 | + type: 'dashed', | |
| 44 | + children: '新增一条' | |
| 45 | + }; | |
| 46 | + var delConfirmProps = { | |
| 47 | + title: '确定删除?', | |
| 48 | + okText: '确定', | |
| 49 | + cancelText: '取消' | |
| 50 | + }; | |
| 51 | + | |
| 52 | + if (props.addBtnProps && _typeof(props.addBtnProps) === 'object') { | |
| 53 | + addBtnProps = _objectSpread(_objectSpread({}, addBtnProps), props.addBtnProps); | |
| 54 | + } | |
| 55 | + | |
| 56 | + if (props.delConfirmProps && _typeof(props.delConfirmProps) === 'object') { | |
| 57 | + delConfirmProps = _objectSpread(_objectSpread({}, delConfirmProps), props.delConfirmProps); | |
| 58 | + } | |
| 59 | + | |
| 60 | + return /*#__PURE__*/React.createElement("div", { | |
| 61 | + className: "fr-list-1" | |
| 62 | + }, displayList.map(function (item, idx) { | |
| 63 | + var fieldsProps = getFieldsProps(idx); | |
| 64 | + fieldsProps.displayType = 'inline'; | |
| 65 | + | |
| 66 | + if (props.hideTitle) { | |
| 67 | + fieldsProps.hideTitle = true; | |
| 68 | + } | |
| 69 | + | |
| 70 | + return /*#__PURE__*/React.createElement("div", { | |
| 71 | + key: idx, | |
| 72 | + style: { | |
| 73 | + display: 'flex' | |
| 74 | + } | |
| 75 | + }, /*#__PURE__*/React.createElement(Core, fieldsProps), /*#__PURE__*/React.createElement("div", { | |
| 76 | + style: { | |
| 77 | + marginTop: 6 | |
| 78 | + } | |
| 79 | + }, !props.hideDelete && displayList.length > min && /*#__PURE__*/React.createElement(_Popconfirm, _extends({ | |
| 80 | + onConfirm: function onConfirm() { | |
| 81 | + return deleteItem(idx); | |
| 82 | + } | |
| 83 | + }, delConfirmProps), /*#__PURE__*/React.createElement(_DeleteOutlined, { | |
| 84 | + style: { | |
| 85 | + fontSize: 17, | |
| 86 | + marginLeft: 8 | |
| 87 | + } | |
| 88 | + })), !props.hideAdd && !props.hideCopy && /*#__PURE__*/React.createElement(_CopyOutlined, { | |
| 89 | + style: { | |
| 90 | + fontSize: 15, | |
| 91 | + marginLeft: 8 | |
| 92 | + }, | |
| 93 | + onClick: function onClick() { | |
| 94 | + return copyItem(idx); | |
| 95 | + } | |
| 96 | + }), !props.hideMove && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ArrowUpOutlined, { | |
| 97 | + style: { | |
| 98 | + fontSize: 16, | |
| 99 | + marginLeft: 8 | |
| 100 | + }, | |
| 101 | + onClick: function onClick() { | |
| 102 | + return moveItemUp(idx); | |
| 103 | + } | |
| 104 | + }), /*#__PURE__*/React.createElement(_ArrowDownOutlined, { | |
| 105 | + style: { | |
| 106 | + fontSize: 16, | |
| 107 | + marginLeft: 8 | |
| 108 | + }, | |
| 109 | + onClick: function onClick() { | |
| 110 | + return moveItemDown(idx); | |
| 111 | + } | |
| 112 | + })))); | |
| 113 | + }), /*#__PURE__*/React.createElement("div", { | |
| 114 | + style: { | |
| 115 | + marginTop: displayList.length > 0 ? 0 : 8 | |
| 116 | + } | |
| 117 | + }, !props.hideAdd && displayList.length < max && /*#__PURE__*/React.createElement(_Button, _extends({ | |
| 118 | + onClick: addItem | |
| 119 | + }, addBtnProps)), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) { | |
| 120 | + var callback = item.callback, | |
| 121 | + text = item.text, | |
| 122 | + html = item.html; | |
| 123 | + | |
| 124 | + var onClick = function onClick() { | |
| 125 | + console.log({ | |
| 126 | + value: listData, | |
| 127 | + onChange: changeList, | |
| 128 | + schema: schema | |
| 129 | + }); | |
| 130 | + }; | |
| 131 | + | |
| 132 | + if (typeof window[callback] === 'function') { | |
| 133 | + onClick = function onClick() { | |
| 134 | + window[callback]({ | |
| 135 | + value: listData, | |
| 136 | + onChange: changeList, | |
| 137 | + schema: schema | |
| 138 | + }); | |
| 139 | + }; | |
| 140 | + } | |
| 141 | + | |
| 142 | + return /*#__PURE__*/React.createElement(_Button, { | |
| 143 | + key: idx.toString(), | |
| 144 | + style: { | |
| 145 | + marginLeft: 8 | |
| 146 | + }, | |
| 147 | + type: "dashed", | |
| 148 | + onClick: onClick | |
| 149 | + }, /*#__PURE__*/React.createElement("span", { | |
| 150 | + dangerouslySetInnerHTML: { | |
| 151 | + __html: html || text | |
| 152 | + } | |
| 153 | + })); | |
| 154 | + }) : null)); | |
| 155 | +}; | |
| 156 | + | |
| 157 | +export default SimpleList; | |
| \ No newline at end of file | ... | ... |
| 1 | +import "antd/es/tabs/style"; | |
| 2 | +import _Tabs from "antd/es/tabs"; | |
| 3 | +var _excluded = ["tabName", "type", "draggable"]; | |
| 4 | + | |
| 5 | +function _extends() { _extends = Object.assign || 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); } | |
| 6 | + | |
| 7 | +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } | |
| 8 | + | |
| 9 | +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } | |
| 10 | + | |
| 11 | +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } | |
| 12 | + | |
| 13 | +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 14 | + | |
| 15 | +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | |
| 16 | + | |
| 17 | +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | |
| 18 | + | |
| 19 | +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | |
| 20 | + | |
| 21 | +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | |
| 22 | + | |
| 23 | +/* eslint-disable jsx-a11y/anchor-is-valid */ | |
| 24 | +import React, { useState, useRef } from 'react'; | |
| 25 | +import Core from '../../index'; | |
| 26 | +var TabPane = _Tabs.TabPane; | |
| 27 | +var dragType = 'DraggableTabNode'; | |
| 28 | + | |
| 29 | +var DraggableTabNode = function DraggableTabNode(_ref) { | |
| 30 | + var index = _ref.index, | |
| 31 | + children = _ref.children, | |
| 32 | + moveNode = _ref.moveNode; | |
| 33 | + var ref = useRef(null); | |
| 34 | + | |
| 35 | + var _useDrop = useDrop({ | |
| 36 | + accept: dragType, | |
| 37 | + collect: function collect(monitor) { | |
| 38 | + var _ref2 = monitor.getItem() || {}, | |
| 39 | + dragIndex = _ref2.index; | |
| 40 | + | |
| 41 | + if (dragIndex === index) { | |
| 42 | + return {}; | |
| 43 | + } | |
| 44 | + | |
| 45 | + return { | |
| 46 | + isOver: monitor.isOver(), | |
| 47 | + dropClassName: 'dropping' | |
| 48 | + }; | |
| 49 | + }, | |
| 50 | + drop: function drop(item) { | |
| 51 | + moveNode(item.index, index); | |
| 52 | + } | |
| 53 | + }), | |
| 54 | + _useDrop2 = _slicedToArray(_useDrop, 2), | |
| 55 | + _useDrop2$ = _useDrop2[0], | |
| 56 | + isOver = _useDrop2$.isOver, | |
| 57 | + dropClassName = _useDrop2$.dropClassName, | |
| 58 | + drop = _useDrop2[1]; | |
| 59 | + | |
| 60 | + var _useDrag = useDrag({ | |
| 61 | + type: dragType, | |
| 62 | + item: { | |
| 63 | + index: index | |
| 64 | + }, | |
| 65 | + collect: function collect(monitor) { | |
| 66 | + return { | |
| 67 | + isDragging: monitor.isDragging() | |
| 68 | + }; | |
| 69 | + } | |
| 70 | + }), | |
| 71 | + _useDrag2 = _slicedToArray(_useDrag, 2), | |
| 72 | + drag = _useDrag2[1]; | |
| 73 | + | |
| 74 | + drop(drag(ref)); | |
| 75 | + return /*#__PURE__*/React.createElement("div", { | |
| 76 | + ref: ref, | |
| 77 | + style: { | |
| 78 | + marginRight: 2 | |
| 79 | + }, | |
| 80 | + className: isOver ? dropClassName : '' | |
| 81 | + }, children); | |
| 82 | +}; | |
| 83 | + | |
| 84 | +var TabList = function TabList(_ref3) { | |
| 85 | + var _ref3$displayList = _ref3.displayList, | |
| 86 | + displayList = _ref3$displayList === void 0 ? [] : _ref3$displayList, | |
| 87 | + listData = _ref3.listData, | |
| 88 | + changeList = _ref3.changeList, | |
| 89 | + schema = _ref3.schema, | |
| 90 | + deleteItem = _ref3.deleteItem, | |
| 91 | + copyItem = _ref3.copyItem, | |
| 92 | + addItem = _ref3.addItem, | |
| 93 | + moveItemUp = _ref3.moveItemUp, | |
| 94 | + moveItemDown = _ref3.moveItemDown, | |
| 95 | + displayType = _ref3.displayType, | |
| 96 | + getFieldsProps = _ref3.getFieldsProps; | |
| 97 | + | |
| 98 | + var _useState = useState('0'), | |
| 99 | + _useState2 = _slicedToArray(_useState, 2), | |
| 100 | + activeKey = _useState2[0], | |
| 101 | + setActiveKey = _useState2[1]; | |
| 102 | + | |
| 103 | + var _schema$props = schema.props, | |
| 104 | + props = _schema$props === void 0 ? {} : _schema$props, | |
| 105 | + itemProps = schema.itemProps; | |
| 106 | + | |
| 107 | + var tabName = props.tabName, | |
| 108 | + type = props.type, | |
| 109 | + _props$draggable = props.draggable, | |
| 110 | + draggable = _props$draggable === void 0 ? false : _props$draggable, | |
| 111 | + restProps = _objectWithoutProperties(props, _excluded); | |
| 112 | + | |
| 113 | + var onEdit = function onEdit(targetKey, action) { | |
| 114 | + if (action === 'add') { | |
| 115 | + var currentKey = addItem(); | |
| 116 | + setActiveKey("".concat(currentKey)); | |
| 117 | + } else if (action === 'remove') { | |
| 118 | + deleteItem(Number(targetKey)); | |
| 119 | + setActiveKey("".concat(targetKey > 1 ? targetKey - 1 : 0)); | |
| 120 | + } else { | |
| 121 | + return null; | |
| 122 | + } | |
| 123 | + }; // 如果tabName传数组是可以「自定义」tab页的名字的。表单联动可以使用formrender的watch 配合 setSchemaByPath | |
| 124 | + | |
| 125 | + | |
| 126 | + var getCurrentTabPaneName = function getCurrentTabPaneName(idx) { | |
| 127 | + return tabName instanceof Array ? tabName[idx] || idx + 1 : "".concat(tabName || '项目', " ").concat(idx + 1); | |
| 128 | + }; | |
| 129 | + | |
| 130 | + return /*#__PURE__*/React.createElement(_Tabs, _extends({ | |
| 131 | + type: type || 'line', | |
| 132 | + onChange: setActiveKey, | |
| 133 | + activeKey: activeKey, | |
| 134 | + onEdit: onEdit | |
| 135 | + }, restProps), displayList.map(function (item, idx) { | |
| 136 | + var fieldsProps = getFieldsProps(idx); | |
| 137 | + fieldsProps.displayType = displayType; | |
| 138 | + return /*#__PURE__*/React.createElement(TabPane, { | |
| 139 | + tab: getCurrentTabPaneName(idx), | |
| 140 | + key: "".concat(idx) | |
| 141 | + }, /*#__PURE__*/React.createElement(Core, fieldsProps)); | |
| 142 | + })); | |
| 143 | +}; | |
| 144 | + | |
| 145 | +export default TabList; | |
| \ No newline at end of file | ... | ... |
| 1 | +import "antd/es/table/style"; | |
| 2 | +import _Table from "antd/es/table"; | |
| 3 | +import "antd/es/button/style"; | |
| 4 | +import _Button from "antd/es/button"; | |
| 5 | +import _ArrowDownOutlined from "@ant-design/icons/es/icons/ArrowDownOutlined"; | |
| 6 | +import _ArrowUpOutlined from "@ant-design/icons/es/icons/ArrowUpOutlined"; | |
| 7 | +import "antd/es/popconfirm/style"; | |
| 8 | +import _Popconfirm from "antd/es/popconfirm"; | |
| 9 | +var _excluded = ["buttons"], | |
| 10 | + _excluded2 = ["pagination"]; | |
| 11 | + | |
| 12 | +function _extends() { _extends = Object.assign || 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); } | |
| 13 | + | |
| 14 | +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } | |
| 15 | + | |
| 16 | +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 17 | + | |
| 18 | +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | |
| 19 | + | |
| 20 | +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } | |
| 21 | + | |
| 22 | +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } | |
| 23 | + | |
| 24 | +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | |
| 25 | + | |
| 26 | +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; } | |
| 27 | + | |
| 28 | +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(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; } | |
| 29 | + | |
| 30 | +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | |
| 31 | + | |
| 32 | +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | |
| 33 | + | |
| 34 | +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } | |
| 35 | + | |
| 36 | +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } | |
| 37 | + | |
| 38 | +import React from 'react'; | |
| 39 | +import Core from '../../index'; | |
| 40 | +var FIELD_LENGTH = 170; | |
| 41 | + | |
| 42 | +var TableList = function TableList(_ref) { | |
| 43 | + var _ref$displayList = _ref.displayList, | |
| 44 | + displayList = _ref$displayList === void 0 ? [] : _ref$displayList, | |
| 45 | + dataIndex = _ref.dataIndex, | |
| 46 | + children = _ref.children, | |
| 47 | + deleteItem = _ref.deleteItem, | |
| 48 | + copyItem = _ref.copyItem, | |
| 49 | + addItem = _ref.addItem, | |
| 50 | + moveItemUp = _ref.moveItemUp, | |
| 51 | + moveItemDown = _ref.moveItemDown, | |
| 52 | + flatten = _ref.flatten, | |
| 53 | + schema = _ref.schema, | |
| 54 | + listData = _ref.listData, | |
| 55 | + changeList = _ref.changeList; | |
| 56 | + var _schema$props = schema.props, | |
| 57 | + props = _schema$props === void 0 ? {} : _schema$props, | |
| 58 | + _schema$itemProps = schema.itemProps, | |
| 59 | + itemProps = _schema$itemProps === void 0 ? {} : _schema$itemProps; | |
| 60 | + | |
| 61 | + var buttons = itemProps.buttons, | |
| 62 | + columnProps = _objectWithoutProperties(itemProps, _excluded); | |
| 63 | + | |
| 64 | + var _props$pagination = props.pagination, | |
| 65 | + pagination = _props$pagination === void 0 ? {} : _props$pagination, | |
| 66 | + rest = _objectWithoutProperties(props, _excluded2); | |
| 67 | + | |
| 68 | + var actionColumnProps = { | |
| 69 | + colHeaderText: '操作', | |
| 70 | + copyText: '复制', | |
| 71 | + delText: '删除' | |
| 72 | + }; | |
| 73 | + var delConfirmProps = { | |
| 74 | + title: '确定删除?', | |
| 75 | + okText: '确定', | |
| 76 | + cancelText: '取消' | |
| 77 | + }; | |
| 78 | + var addBtnProps = { | |
| 79 | + type: 'primary', | |
| 80 | + children: '新增一条', | |
| 81 | + size: 'small' | |
| 82 | + }; | |
| 83 | + | |
| 84 | + if (props.actionColumnProps && _typeof(props.actionColumnProps) === 'object') { | |
| 85 | + actionColumnProps = _objectSpread(_objectSpread({}, actionColumnProps), props.actionColumnProps); | |
| 86 | + } | |
| 87 | + | |
| 88 | + if (props.delConfirmProps && _typeof(props.delConfirmProps) === 'object') { | |
| 89 | + delConfirmProps = _objectSpread(_objectSpread({}, delConfirmProps), props.delConfirmProps); | |
| 90 | + } | |
| 91 | + | |
| 92 | + if (props.addBtnProps && _typeof(props.addBtnProps) === 'object') { | |
| 93 | + addBtnProps = _objectSpread(_objectSpread({}, addBtnProps), props.addBtnProps); | |
| 94 | + } | |
| 95 | + | |
| 96 | + var paginationConfig = pagination && _objectSpread({ | |
| 97 | + size: 'small', | |
| 98 | + hideOnSinglePage: true | |
| 99 | + }, pagination); | |
| 100 | + | |
| 101 | + var dataSource = displayList.map(function (item, idx) { | |
| 102 | + return { | |
| 103 | + index: idx | |
| 104 | + }; | |
| 105 | + }); | |
| 106 | + var columns = children.map(function (child) { | |
| 107 | + var item = flatten[child]; | |
| 108 | + var schema = item && item.schema || {}; | |
| 109 | + return _objectSpread({ | |
| 110 | + dataIndex: child, | |
| 111 | + title: schema.required ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", { | |
| 112 | + className: "fr-label-required" | |
| 113 | + }, " *"), /*#__PURE__*/React.createElement("span", null, schema.title)) : schema.title, | |
| 114 | + width: FIELD_LENGTH, | |
| 115 | + render: function render(value, record, index) { | |
| 116 | + // Check: record.index 似乎是antd自己会给的,不错哦 | |
| 117 | + var childIndex = [].concat(_toConsumableArray(dataIndex), [record.index]); | |
| 118 | + return /*#__PURE__*/React.createElement(Core, { | |
| 119 | + hideTitle: true, | |
| 120 | + displayType: "inline", | |
| 121 | + key: index.toString(), | |
| 122 | + id: child, | |
| 123 | + dataIndex: childIndex | |
| 124 | + }); | |
| 125 | + } | |
| 126 | + }, columnProps); | |
| 127 | + }); | |
| 128 | + | |
| 129 | + if (!props.hideDelete || !props.hideAdd || !props.hideCopy || !props.hideMove) { | |
| 130 | + columns.push({ | |
| 131 | + title: actionColumnProps.colHeaderText, | |
| 132 | + key: '$action', | |
| 133 | + fixed: 'right', | |
| 134 | + width: 120, | |
| 135 | + render: function render(value, record) { | |
| 136 | + var idx = record.index; | |
| 137 | + return /*#__PURE__*/React.createElement("div", null, !props.hideAdd && !props.hideCopy && /*#__PURE__*/React.createElement("a", { | |
| 138 | + onClick: function onClick() { | |
| 139 | + return copyItem(idx); | |
| 140 | + } | |
| 141 | + }, actionColumnProps.copyText), !props.hideDelete && /*#__PURE__*/React.createElement(_Popconfirm, _extends({ | |
| 142 | + onConfirm: function onConfirm() { | |
| 143 | + return deleteItem(idx); | |
| 144 | + } | |
| 145 | + }, delConfirmProps), /*#__PURE__*/React.createElement("a", { | |
| 146 | + style: { | |
| 147 | + marginLeft: 8 | |
| 148 | + } | |
| 149 | + }, actionColumnProps.delText)), !props.hideMove && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ArrowUpOutlined, { | |
| 150 | + style: { | |
| 151 | + color: '#1890ff', | |
| 152 | + fontSize: 16, | |
| 153 | + marginLeft: 8 | |
| 154 | + }, | |
| 155 | + onClick: function onClick() { | |
| 156 | + return moveItemUp(idx); | |
| 157 | + } | |
| 158 | + }), /*#__PURE__*/React.createElement(_ArrowDownOutlined, { | |
| 159 | + style: { | |
| 160 | + color: '#1890ff', | |
| 161 | + fontSize: 16, | |
| 162 | + marginLeft: 8 | |
| 163 | + }, | |
| 164 | + onClick: function onClick() { | |
| 165 | + return moveItemDown(idx); | |
| 166 | + } | |
| 167 | + }))); | |
| 168 | + } | |
| 169 | + }); | |
| 170 | + } | |
| 171 | + | |
| 172 | + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { | |
| 173 | + className: "w-100 mb2 tr" | |
| 174 | + }, !props.hideAdd && /*#__PURE__*/React.createElement(_Button, _extends({}, addBtnProps, { | |
| 175 | + onClick: addItem | |
| 176 | + })), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) { | |
| 177 | + var callback = item.callback, | |
| 178 | + text = item.text, | |
| 179 | + html = item.html; | |
| 180 | + | |
| 181 | + var onClick = function onClick() { | |
| 182 | + console.log({ | |
| 183 | + value: listData, | |
| 184 | + onChange: changeList, | |
| 185 | + schema: schema | |
| 186 | + }); | |
| 187 | + }; | |
| 188 | + | |
| 189 | + if (typeof window[callback] === 'function') { | |
| 190 | + onClick = function onClick() { | |
| 191 | + window[callback]({ | |
| 192 | + value: listData, | |
| 193 | + onChange: changeList, | |
| 194 | + schema: schema | |
| 195 | + }); | |
| 196 | + }; | |
| 197 | + } | |
| 198 | + | |
| 199 | + return /*#__PURE__*/React.createElement(_Button, { | |
| 200 | + key: idx.toString(), | |
| 201 | + style: { | |
| 202 | + marginLeft: 8 | |
| 203 | + }, | |
| 204 | + size: "small", | |
| 205 | + onClick: onClick | |
| 206 | + }, /*#__PURE__*/React.createElement("span", { | |
| 207 | + dangerouslySetInnerHTML: { | |
| 208 | + __html: html || text | |
| 209 | + } | |
| 210 | + })); | |
| 211 | + }) : null), /*#__PURE__*/React.createElement(_Table, _extends({ | |
| 212 | + scroll: { | |
| 213 | + x: 'max-content' | |
| 214 | + }, | |
| 215 | + columns: columns, | |
| 216 | + dataSource: dataSource, | |
| 217 | + rowKey: "index", | |
| 218 | + size: "small", | |
| 219 | + pagination: paginationConfig | |
| 220 | + }, rest))); | |
| 221 | +}; | |
| 222 | + | |
| 223 | +export default TableList; | |
| \ No newline at end of file | ... | ... |
| 1 | +import "antd/es/table/style"; | |
| 2 | +import _Table from "antd/es/table"; | |
| 3 | +import "antd/es/alert/style"; | |
| 4 | +import _Alert from "antd/es/alert"; | |
| 5 | +import "antd/es/dropdown/style"; | |
| 6 | +import _Dropdown from "antd/es/dropdown"; | |
| 7 | +import "antd/es/space/style"; | |
| 8 | +import _Space from "antd/es/space"; | |
| 9 | +import _DownOutlined from "@ant-design/icons/es/icons/DownOutlined"; | |
| 10 | +import "antd/es/input/style"; | |
| 11 | +import _Input from "antd/es/input"; | |
| 12 | +import _SearchOutlined from "@ant-design/icons/es/icons/SearchOutlined"; | |
| 13 | +import "antd/es/message/style"; | |
| 14 | +import _message from "antd/es/message"; | |
| 15 | +import _ExclamationCircleOutlined from "@ant-design/icons/es/icons/ExclamationCircleOutlined"; | |
| 16 | +import "antd/es/tooltip/style"; | |
| 17 | +import _Tooltip from "antd/es/tooltip"; | |
| 18 | +import _InfoCircleOutlined from "@ant-design/icons/es/icons/InfoCircleOutlined"; | |
| 19 | +import "antd/es/menu/style"; | |
| 20 | +import _Menu from "antd/es/menu"; | |
| 21 | +import "antd/es/button/style"; | |
| 22 | +import _Button from "antd/es/button"; | |
| 23 | +import _AlertOutlined from "@ant-design/icons/es/icons/AlertOutlined"; | |
| 24 | +import _BarsOutlined from "@ant-design/icons/es/icons/BarsOutlined"; | |
| 25 | +import _AppstoreOutlined from "@ant-design/icons/es/icons/AppstoreOutlined"; | |
| 26 | +import _PauseCircleOutlined from "@ant-design/icons/es/icons/PauseCircleOutlined"; | |
| 27 | +import _PlayCircleOutlined from "@ant-design/icons/es/icons/PlayCircleOutlined"; | |
| 28 | +import _ExportOutlined from "@ant-design/icons/es/icons/ExportOutlined"; | |
| 29 | +import _ImportOutlined from "@ant-design/icons/es/icons/ImportOutlined"; | |
| 30 | +import _CopyOutlined from "@ant-design/icons/es/icons/CopyOutlined"; | |
| 31 | +import _ToolOutlined from "@ant-design/icons/es/icons/ToolOutlined"; | |
| 32 | +import _SettingOutlined from "@ant-design/icons/es/icons/SettingOutlined"; | |
| 33 | +import _EllipsisOutlined from "@ant-design/icons/es/icons/EllipsisOutlined"; | |
| 34 | +import _FileTextOutlined from "@ant-design/icons/es/icons/FileTextOutlined"; | |
| 35 | +import _EditOutlined from "@ant-design/icons/es/icons/EditOutlined"; | |
| 36 | +import _EyeOutlined from "@ant-design/icons/es/icons/EyeOutlined"; | |
| 37 | +import _DeleteOutlined from "@ant-design/icons/es/icons/DeleteOutlined"; | |
| 38 | +import _CheckOutlined from "@ant-design/icons/es/icons/CheckOutlined"; | |
| 39 | +import _CloseOutlined from "@ant-design/icons/es/icons/CloseOutlined"; | |
| 40 | +import _CloseCircleOutlined from "@ant-design/icons/es/icons/CloseCircleOutlined"; | |
| 41 | +import _MinusCircleOutlined from "@ant-design/icons/es/icons/MinusCircleOutlined"; | |
| 42 | +import _PlusCircleOutlined from "@ant-design/icons/es/icons/PlusCircleOutlined"; | |
| 43 | +import _MinusOutlined from "@ant-design/icons/es/icons/MinusOutlined"; | |
| 44 | +import _PlusOutlined from "@ant-design/icons/es/icons/PlusOutlined"; | |
| 45 | +import "antd/es/modal/style"; | |
| 46 | +import _Modal from "antd/es/modal"; | |
| 47 | +var _excluded = ["scrollY", "summary", "batchKey", "type", "bar", "line", "searchKey", "rowSelection", "size", "originWidget"]; | |
| 48 | + | |
| 49 | +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } | |
| 50 | + | |
| 51 | +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } | |
| 52 | + | |
| 53 | +function _extends() { _extends = Object.assign || 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); } | |
| 54 | + | |
| 55 | +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; } | |
| 56 | + | |
| 57 | +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(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; } | |
| 58 | + | |
| 59 | +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | |
| 60 | + | |
| 61 | +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } | |
| 62 | + | |
| 63 | +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 64 | + | |
| 65 | +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } | |
| 66 | + | |
| 67 | +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } | |
| 68 | + | |
| 69 | +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | |
| 70 | + | |
| 71 | +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } | |
| 72 | + | |
| 73 | +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 74 | + | |
| 75 | +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | |
| 76 | + | |
| 77 | +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | |
| 78 | + | |
| 79 | +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | |
| 80 | + | |
| 81 | +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | |
| 82 | + | |
| 83 | +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } | |
| 84 | + | |
| 85 | +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } | |
| 86 | + | |
| 87 | +/* eslint-disable jsx-a11y/anchor-is-valid */ | |
| 88 | +import React, { useEffect, useMemo, useRef, useState } from 'react'; | |
| 89 | +import Core from '../../index'; | |
| 90 | +var confirm = _Modal.confirm; // import { isDesignPage } from './utils' | |
| 91 | + | |
| 92 | +import * as dd from 'dingtalk-jsapi'; | |
| 93 | +import moment from 'moment'; // import {useVT} from 'virtualizedtableforantd4'; | |
| 94 | + | |
| 95 | +import QxIcon from './icon'; | |
| 96 | +var BUTTON_ICONS_MAP = { | |
| 97 | + PlusOutlined: /*#__PURE__*/React.createElement(_PlusOutlined, null), | |
| 98 | + MinusOutlined: /*#__PURE__*/React.createElement(_MinusOutlined, null), | |
| 99 | + PlusCircleOutlined: /*#__PURE__*/React.createElement(_PlusCircleOutlined, null), | |
| 100 | + MinusCircleOutlined: /*#__PURE__*/React.createElement(_MinusCircleOutlined, null), | |
| 101 | + CloseCircleOutlined: /*#__PURE__*/React.createElement(_CloseCircleOutlined, null), | |
| 102 | + CloseOutlined: /*#__PURE__*/React.createElement(_CloseOutlined, null), | |
| 103 | + CheckOutlined: /*#__PURE__*/React.createElement(_CheckOutlined, null), | |
| 104 | + DeleteOutlined: /*#__PURE__*/React.createElement(_DeleteOutlined, null), | |
| 105 | + EyeOutlined: /*#__PURE__*/React.createElement(_EyeOutlined, null), | |
| 106 | + EditOutlined: /*#__PURE__*/React.createElement(_EditOutlined, null), | |
| 107 | + FileTextOutlined: /*#__PURE__*/React.createElement(_FileTextOutlined, null), | |
| 108 | + EllipsisOutlined: /*#__PURE__*/React.createElement(_EllipsisOutlined, null), | |
| 109 | + SettingOutlined: /*#__PURE__*/React.createElement(_SettingOutlined, null), | |
| 110 | + ToolOutlined: /*#__PURE__*/React.createElement(_ToolOutlined, null), | |
| 111 | + CopyOutlined: /*#__PURE__*/React.createElement(_CopyOutlined, null), | |
| 112 | + ImportOutlined: /*#__PURE__*/React.createElement(_ImportOutlined, null), | |
| 113 | + ExportOutlined: /*#__PURE__*/React.createElement(_ExportOutlined, null), | |
| 114 | + PlayCircleOutlined: /*#__PURE__*/React.createElement(_PlayCircleOutlined, null), | |
| 115 | + PauseCircleOutlined: /*#__PURE__*/React.createElement(_PauseCircleOutlined, null), | |
| 116 | + AppstoreOutlined: /*#__PURE__*/React.createElement(_AppstoreOutlined, null), | |
| 117 | + BarsOutlined: /*#__PURE__*/React.createElement(_BarsOutlined, null), | |
| 118 | + AlertOutlined: /*#__PURE__*/React.createElement(_AlertOutlined, null) | |
| 119 | +}; | |
| 120 | +var FIELD_LENGTH = 170; | |
| 121 | +var EXPORT_STATUS = { | |
| 122 | + // 执行中 | |
| 123 | + PROCESSING: 'info', | |
| 124 | + // 成功 | |
| 125 | + SUCCESS: 'success', | |
| 126 | + // 失败 | |
| 127 | + FAIL: 'error' | |
| 128 | +}; | |
| 129 | + | |
| 130 | +var VirtualList = function VirtualList(_ref) { | |
| 131 | + var _dd$env; | |
| 132 | + | |
| 133 | + var _ref$displayList = _ref.displayList, | |
| 134 | + displayList = _ref$displayList === void 0 ? [] : _ref$displayList, | |
| 135 | + dataIndex = _ref.dataIndex, | |
| 136 | + children = _ref.children, | |
| 137 | + deleteItem = _ref.deleteItem, | |
| 138 | + batchDelete = _ref.batchDelete, | |
| 139 | + addItem = _ref.addItem, | |
| 140 | + moveItemUp = _ref.moveItemUp, | |
| 141 | + moveItemDown = _ref.moveItemDown, | |
| 142 | + flatten = _ref.flatten, | |
| 143 | + schema = _ref.schema, | |
| 144 | + listData = _ref.listData, | |
| 145 | + changeList = _ref.changeList, | |
| 146 | + copyItem = _ref.copyItem, | |
| 147 | + dataPath = _ref.dataPath; | |
| 148 | + var _schema$props = schema.props, | |
| 149 | + props = _schema$props === void 0 ? {} : _schema$props, | |
| 150 | + _schema$itemProps = schema.itemProps, | |
| 151 | + itemProps = _schema$itemProps === void 0 ? {} : _schema$itemProps, | |
| 152 | + fieldName = schema.fieldName, | |
| 153 | + _schema$qxProps = schema.qxProps, | |
| 154 | + qxProps = _schema$qxProps === void 0 ? {} : _schema$qxProps, | |
| 155 | + subformMode = schema.subformMode, | |
| 156 | + isReadOnly = schema.isReadOnly, | |
| 157 | + subReadOnly = schema.subReadOnly, | |
| 158 | + isLoading = schema.isLoading, | |
| 159 | + isFullScreen = schema.isFullScreen; | |
| 160 | + | |
| 161 | + var _props$scrollY = props.scrollY, | |
| 162 | + scrollY = _props$scrollY === void 0 ? 300 : _props$scrollY, | |
| 163 | + _summary = props.summary, | |
| 164 | + batchKey = props.batchKey, | |
| 165 | + type = props.type, | |
| 166 | + _props$bar = props.bar, | |
| 167 | + bar = _props$bar === void 0 ? {} : _props$bar, | |
| 168 | + _props$line = props.line, | |
| 169 | + line = _props$line === void 0 ? {} : _props$line, | |
| 170 | + searchKey = props.searchKey, | |
| 171 | + rowSelection = props.rowSelection, | |
| 172 | + size = props.size, | |
| 173 | + originWidget = props.originWidget, | |
| 174 | + rest = _objectWithoutProperties(props, _excluded); // const [vt, set_components] = useVT(() => ({scroll: {y: scrollY}}), []); | |
| 175 | + | |
| 176 | + | |
| 177 | + var _useState = useState(''), | |
| 178 | + _useState2 = _slicedToArray(_useState, 2), | |
| 179 | + keyWord = _useState2[0], | |
| 180 | + setKeyWord = _useState2[1]; | |
| 181 | + | |
| 182 | + var _useState3 = useState([]), | |
| 183 | + _useState4 = _slicedToArray(_useState3, 2), | |
| 184 | + selectedRowKeys = _useState4[0], | |
| 185 | + setSelectedRowKeys = _useState4[1]; | |
| 186 | + | |
| 187 | + var _useState5 = useState(), | |
| 188 | + _useState6 = _slicedToArray(_useState5, 2), | |
| 189 | + exportProgressData = _useState6[0], | |
| 190 | + setProgressData = _useState6[1]; | |
| 191 | + | |
| 192 | + var _useState7 = useState(), | |
| 193 | + _useState8 = _slicedToArray(_useState7, 2), | |
| 194 | + intervalName = _useState8[0], | |
| 195 | + setIntervalName = _useState8[1]; | |
| 196 | + | |
| 197 | + var exportTaskId = useRef(''); | |
| 198 | + | |
| 199 | + var _useState9 = useState(false), | |
| 200 | + _useState10 = _slicedToArray(_useState9, 2), | |
| 201 | + isSubCanEdit = _useState10[0], | |
| 202 | + setSubEdit = _useState10[1]; | |
| 203 | + | |
| 204 | + var _useState11 = useState(''), | |
| 205 | + _useState12 = _slicedToArray(_useState11, 2), | |
| 206 | + searchName = _useState12[0], | |
| 207 | + setSearchName = _useState12[1]; // const [dataSource, setDataSource] = useState([]); | |
| 208 | + // const [refresh, setRefresh] = useState('1'); | |
| 209 | + // const [authDisplayList, setAuthDisplayList] = useState([]) // 有权限展示的数据 | |
| 210 | + | |
| 211 | + | |
| 212 | + var _useState13 = useState(false), | |
| 213 | + _useState14 = _slicedToArray(_useState13, 2), | |
| 214 | + loading = _useState14[0], | |
| 215 | + setLoading = _useState14[1]; | |
| 216 | + | |
| 217 | + var mergeFieldsMap = useRef({}); | |
| 218 | + var isMergeFieldExist = useRef(false); // const [cloneList, setCloneList] = useState([]); | |
| 219 | + | |
| 220 | + var isInDing = dd && (dd === null || dd === void 0 ? void 0 : (_dd$env = dd.env) === null || _dd$env === void 0 ? void 0 : _dd$env.platform) !== 'notInDingTalk'; | |
| 221 | + | |
| 222 | + if (subReadOnly) { | |
| 223 | + Object.keys(flatten).forEach(function (key) { | |
| 224 | + if (key.indexOf(schema.$id) === 0 && key.split('.').length > 1) { | |
| 225 | + flatten[key].schema.readOnly = true; | |
| 226 | + } | |
| 227 | + }); | |
| 228 | + } | |
| 229 | + | |
| 230 | + useEffect(function () { | |
| 231 | + setLoading(!!isLoading); | |
| 232 | + }, [isLoading]); | |
| 233 | + var padding = useMemo(function () { | |
| 234 | + return size === 'default' ? 32 : 16; | |
| 235 | + }, [size]); | |
| 236 | + var newRowSelection = useMemo(function () { | |
| 237 | + var _bar$buttons; | |
| 238 | + | |
| 239 | + // if (schema.isReadOnly) return null | |
| 240 | + var _rowSelection = _.cloneDeep(rowSelection); // 根据是否含有批量操作按钮,渲染表格是否可选择 | |
| 241 | + | |
| 242 | + | |
| 243 | + var selectable = false; | |
| 244 | + | |
| 245 | + if (((_bar$buttons = bar.buttons) === null || _bar$buttons === void 0 ? void 0 : _bar$buttons.findIndex(function (item) { | |
| 246 | + return item.code === 'DELETE'; | |
| 247 | + })) > -1) { | |
| 248 | + selectable = true; | |
| 249 | + } | |
| 250 | + | |
| 251 | + if (_rowSelection && selectable) { | |
| 252 | + _rowSelection.onChange = function (_selectedRowKeys) { | |
| 253 | + setSelectedRowKeys(_selectedRowKeys); | |
| 254 | + }; | |
| 255 | + | |
| 256 | + _rowSelection.selectedRowKeys = selectedRowKeys; | |
| 257 | + } | |
| 258 | + | |
| 259 | + return _rowSelection; | |
| 260 | + }, [JSON.stringify(bar.buttons), JSON.stringify(rowSelection), JSON.stringify(selectedRowKeys)]); // useEffect(() => { | |
| 261 | + // const _cloneList = _.cloneDeep(displayList); | |
| 262 | + // _cloneList.forEach((item, index) => { | |
| 263 | + // if (typeof item === 'object') { | |
| 264 | + // item.orginIdx = index | |
| 265 | + // } | |
| 266 | + // }) | |
| 267 | + // setCloneList(_cloneList); | |
| 268 | + // }, [displayList]) | |
| 269 | + // | |
| 270 | + // let _displayList = [] | |
| 271 | + // | |
| 272 | + // // 筛选展示的数据 | |
| 273 | + // if (props.originWidget === 'relSelector') { | |
| 274 | + // cloneList.forEach(item => { | |
| 275 | + // if (!item.hasOwnProperty('$auth') || item.$auth) { | |
| 276 | + // _displayList.push(item) | |
| 277 | + // } | |
| 278 | + // }) | |
| 279 | + // } else { | |
| 280 | + // _displayList = [...cloneList] | |
| 281 | + // } | |
| 282 | + | |
| 283 | + var cloneList = useMemo(function () { | |
| 284 | + //console.log('useMemo cloneList', displayList) | |
| 285 | + var _cloneList = _.cloneDeep(displayList); | |
| 286 | + | |
| 287 | + _cloneList.forEach(function (item, index) { | |
| 288 | + if (_typeof(item) === 'object') { | |
| 289 | + item.orginIdx = index; | |
| 290 | + } | |
| 291 | + }); | |
| 292 | + | |
| 293 | + return _cloneList; | |
| 294 | + }, [displayList]); // 数据变化时,子表汇总值重新计算,并加到主表的formData中 | |
| 295 | + | |
| 296 | + useEffect(function () { | |
| 297 | + var _schema$qxProps2; | |
| 298 | + | |
| 299 | + console.log('计算汇总'); | |
| 300 | + if (schema.originWidget !== 'subform') return; | |
| 301 | + var subKey = schema.fieldName || schema.propertyKey; | |
| 302 | + if (!schema._setValueByPath) return; | |
| 303 | + (((_schema$qxProps2 = schema.qxProps) === null || _schema$qxProps2 === void 0 ? void 0 : _schema$qxProps2.summary) || []).forEach(function (item) { | |
| 304 | + var fx = item.fx, | |
| 305 | + relField = item.relField, | |
| 306 | + code = item.code; | |
| 307 | + var key = "".concat(subKey, ":").concat(code, ":").concat(fx); // subKey + '.' + code +; | |
| 308 | + | |
| 309 | + var values = (displayList || []).map(function (it) { | |
| 310 | + return it[relField]; | |
| 311 | + }); | |
| 312 | + | |
| 313 | + if (!values.length) { | |
| 314 | + schema._setValueByPath(key, 'EMPTY'); | |
| 315 | + | |
| 316 | + return; | |
| 317 | + } | |
| 318 | + | |
| 319 | + if (['COUNTUNIQUE', 'COUNTA'].includes(fx)) { | |
| 320 | + values.forEach(function (_item, index) { | |
| 321 | + if (Array.isArray(_item)) { | |
| 322 | + values[index] = String(_item); | |
| 323 | + } | |
| 324 | + }); | |
| 325 | + } | |
| 326 | + | |
| 327 | + values = values.filter(function (item) { | |
| 328 | + return item !== undefined; | |
| 329 | + }); | |
| 330 | + | |
| 331 | + if (fx === 'MAX' || fx === 'MIN') { | |
| 332 | + var widget = ''; | |
| 333 | + var keys = Object.keys(flatten || {}); | |
| 334 | + | |
| 335 | + for (var i = 0; i < keys.length; i++) { | |
| 336 | + if (keys[i].indexOf(relField) > -1) { | |
| 337 | + var _flatten$keys$i, _flatten$keys$i$schem; | |
| 338 | + | |
| 339 | + var _widget = (_flatten$keys$i = flatten[keys[i]]) === null || _flatten$keys$i === void 0 ? void 0 : (_flatten$keys$i$schem = _flatten$keys$i.schema) === null || _flatten$keys$i$schem === void 0 ? void 0 : _flatten$keys$i$schem.widget; | |
| 340 | + | |
| 341 | + if (_widget !== 'qxSummary') { | |
| 342 | + widget = _widget; | |
| 343 | + break; | |
| 344 | + } | |
| 345 | + } | |
| 346 | + } | |
| 347 | + | |
| 348 | + if (['qxDatetime', 'createdAt', 'updatedAt'].includes(widget)) { | |
| 349 | + var _moment$fx$toLowerCas; | |
| 350 | + | |
| 351 | + values = values.filter(function (it) { | |
| 352 | + return it; | |
| 353 | + }); // 计算日期的最大最小时,过滤掉空值 | |
| 354 | + | |
| 355 | + values.forEach(function (it, index) { | |
| 356 | + values[index] = moment(it); | |
| 357 | + }); // schema.parentFormData[key] = moment[fx.toLowerCase()](values)?._i || 'EMPTY'; | |
| 358 | + | |
| 359 | + schema._setValueByPath(key, ((_moment$fx$toLowerCas = moment[fx.toLowerCase()](values)) === null || _moment$fx$toLowerCas === void 0 ? void 0 : _moment$fx$toLowerCas._i) || 'EMPTY'); | |
| 360 | + } else if (widget === 'qxTime') { | |
| 361 | + var _moment$fx$toLowerCas2, _moment$fx$toLowerCas3; | |
| 362 | + | |
| 363 | + values = values.filter(function (it) { | |
| 364 | + return it; | |
| 365 | + }); // 计算时间的最大最小时,过滤掉空值 | |
| 366 | + | |
| 367 | + values.forEach(function (it, index) { | |
| 368 | + values[index] = moment('0001-01-01 ' + it); // 随意拼个年月日返回,计算时替换 | |
| 369 | + }); // schema.parentFormData[key] = (moment[fx.toLowerCase()](values)?._i)?.slice(11) || 'EMPTY'; | |
| 370 | + | |
| 371 | + schema._setValueByPath(key, ((_moment$fx$toLowerCas2 = moment[fx.toLowerCase()](values)) === null || _moment$fx$toLowerCas2 === void 0 ? void 0 : (_moment$fx$toLowerCas3 = _moment$fx$toLowerCas2._i) === null || _moment$fx$toLowerCas3 === void 0 ? void 0 : _moment$fx$toLowerCas3.slice(11)) || 'EMPTY'); | |
| 372 | + } else { | |
| 373 | + // schema.parentFormData[key] = window[fx](values); | |
| 374 | + schema._setValueByPath(key, window[fx](values)); | |
| 375 | + } | |
| 376 | + } else { | |
| 377 | + // schema.parentFormData['__SUMMARY_' + subKey][key] = window[fx](values); | |
| 378 | + var res = window[fx](values); | |
| 379 | + | |
| 380 | + if (String(res).startsWith('Error')) { | |
| 381 | + res = null; | |
| 382 | + } | |
| 383 | + | |
| 384 | + schema._setValueByPath(key, res); | |
| 385 | + } | |
| 386 | + }); | |
| 387 | + }, [JSON.stringify(displayList)]); | |
| 388 | + | |
| 389 | + var _displayList = useMemo(function () { | |
| 390 | + //console.log('useMemo _displayList', cloneList) | |
| 391 | + var _displayList1 = []; // 筛选展示的数据 | |
| 392 | + | |
| 393 | + if (props.originWidget === 'relSelector') { | |
| 394 | + cloneList.forEach(function (item) { | |
| 395 | + if (!item.hasOwnProperty('$auth') || item.$auth) { | |
| 396 | + _displayList1.push(item); | |
| 397 | + } | |
| 398 | + }); | |
| 399 | + } else { | |
| 400 | + _displayList1 = _toConsumableArray(cloneList); | |
| 401 | + } | |
| 402 | + | |
| 403 | + return _displayList1; | |
| 404 | + }, [cloneList]); // useEffect(() => { | |
| 405 | + // 筛选展示的数据 | |
| 406 | + // if (props.originWidget === 'relSelector') { | |
| 407 | + // displayList.forEach((item, index) => { | |
| 408 | + // if (typeof item === 'object') { | |
| 409 | + // item.orginIdx = index; | |
| 410 | + // } | |
| 411 | + // if ((!item.hasOwnProperty('$auth') || item.$auth) && item.id) { | |
| 412 | + // _displayList.push(item) | |
| 413 | + // } | |
| 414 | + // }) | |
| 415 | + // } else { | |
| 416 | + // _displayList = [...displayList]; | |
| 417 | + // _displayList.forEach((item, index) => { | |
| 418 | + // if (typeof item === 'object') { | |
| 419 | + // item.orginIdx = index; | |
| 420 | + // } | |
| 421 | + // }) | |
| 422 | + // } | |
| 423 | + // setAuthDisplayList(_displayList) | |
| 424 | + // }, [displayList, props.originWidget]) | |
| 425 | + // const _displayList = useMemo(() => { | |
| 426 | + // let arr = [] | |
| 427 | + // const cloneList = _.cloneDeep(displayList) | |
| 428 | + // cloneList.forEach((item, index) => { | |
| 429 | + // item.orginIdx = index | |
| 430 | + // }) | |
| 431 | + // if (props.originWidget === 'relSelector') { | |
| 432 | + // cloneList.forEach(item => { | |
| 433 | + // if (!item.hasOwnProperty('$auth') || item.$auth) { | |
| 434 | + // arr.push(item) | |
| 435 | + // } | |
| 436 | + // }) | |
| 437 | + // } else { | |
| 438 | + // arr = [...cloneList] | |
| 439 | + // } | |
| 440 | + // return arr | |
| 441 | + // }, [displayList]) | |
| 442 | + | |
| 443 | + | |
| 444 | + var selectedIds = useMemo(function () { | |
| 445 | + var _selectedIds = []; | |
| 446 | + cloneList.forEach(function (item) { | |
| 447 | + if (item && selectedRowKeys.includes(props.originWidget === 'subform' ? item.orginIdx : item.id)) { | |
| 448 | + _selectedIds.push(item.id); | |
| 449 | + } | |
| 450 | + }); | |
| 451 | + return _selectedIds; | |
| 452 | + }, [selectedRowKeys, cloneList]); // useEffect(() => { | |
| 453 | + | |
| 454 | + var dataSource = useMemo(function () { | |
| 455 | + //console.log('useMemo dataSource',dataSource); | |
| 456 | + return (keyWord.length ? _displayList.filter(function (item) { | |
| 457 | + var _String; | |
| 458 | + | |
| 459 | + return ((_String = String(item[searchKey])) === null || _String === void 0 ? void 0 : _String.indexOf(keyWord)) > -1; | |
| 460 | + }) : _displayList).map(function (item, idx) { | |
| 461 | + return _objectSpread(_objectSpread({}, item), {}, { | |
| 462 | + index: item.hasOwnProperty('orginIdx') ? item.orginIdx : idx, | |
| 463 | + orginIdx: item.hasOwnProperty('orginIdx') ? item.orginIdx : null | |
| 464 | + }); | |
| 465 | + }); | |
| 466 | + }, [_displayList, keyWord, searchKey]); // useEffect(() => { | |
| 467 | + // setRefresh(refresh + '1') | |
| 468 | + // }, [JSON.stringify(dataSource)]) | |
| 469 | + // setDataSource(_dataSource) | |
| 470 | + // }, [keyWord, JSON.stringify(_displayList)]) | |
| 471 | + // useEffect(() => { | |
| 472 | + // const dataSource = (keyWord.length ? _displayList.filter(item => String(item[searchKey])?.indexOf(keyWord) > -1) : _displayList).map((item, idx) => { | |
| 473 | + // return {...item, index: item.hasOwnProperty('orginIdx') ? item.orginIdx : idx}; | |
| 474 | + // }) | |
| 475 | + // setDataSource(_dataSource) | |
| 476 | + // }, [keyWord, authDisplayList]) | |
| 477 | + | |
| 478 | + var handleTotal = function handleTotal(total) { | |
| 479 | + if (!total) { | |
| 480 | + total = 0; | |
| 481 | + } | |
| 482 | + | |
| 483 | + if (props.originWidget === 'subform' || total === displayList.length) { | |
| 484 | + return "\u5171".concat(total, "\u6761\u8BB0\u5F55"); | |
| 485 | + } else { | |
| 486 | + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "\u5171", displayList.length, "\u6761\u8BB0\u5F55"), /*#__PURE__*/React.createElement("span", { | |
| 487 | + style: { | |
| 488 | + color: '#999', | |
| 489 | + fontSize: '13px' | |
| 490 | + } | |
| 491 | + }, "(", displayList.length - total, "\u6761\u4E0D\u53EF\u89C1)")); | |
| 492 | + } | |
| 493 | + }; | |
| 494 | + | |
| 495 | + var pagination = useMemo(function () { | |
| 496 | + // console.log('useMemo pagination', dataSource?.length, props.limit) | |
| 497 | + return { | |
| 498 | + total: dataSource.length, | |
| 499 | + position: ['bottomRight'], | |
| 500 | + pageSize: props.limit || 10, | |
| 501 | + showTotal: function showTotal(total) { | |
| 502 | + return handleTotal(total); | |
| 503 | + }, | |
| 504 | + defaultCurrent: 1, | |
| 505 | + size: size || 'small' // hideOnSinglePage: true | |
| 506 | + | |
| 507 | + }; | |
| 508 | + }, [dataSource === null || dataSource === void 0 ? void 0 : dataSource.length, props.limit]); | |
| 509 | + var barButtons = useMemo(function () { | |
| 510 | + // console.log('useMemo barButtons', schema.isReadOnly, bar.buttons, originWidget, type, subReadOnly) | |
| 511 | + var _barButtons = _.cloneDeep(bar.buttons || []); | |
| 512 | + | |
| 513 | + if (schema.isReadOnly) { | |
| 514 | + // 关联表只读 | |
| 515 | + // return _barButtons.filter(item => item.code === 'EXPORT') | |
| 516 | + return []; | |
| 517 | + } else if (subReadOnly) { | |
| 518 | + return _barButtons.filter(function (item) { | |
| 519 | + return item.code === 'EXPORT'; | |
| 520 | + }); | |
| 521 | + } // 关联表的导入,先隐藏 TODO | |
| 522 | + | |
| 523 | + | |
| 524 | + if (props.originWidget === 'relSelector') { | |
| 525 | + ['IMPORT'].forEach(function (code) { | |
| 526 | + var _index = _barButtons.findIndex(function (item) { | |
| 527 | + return item.code === code; | |
| 528 | + }); | |
| 529 | + | |
| 530 | + if (_index > -1) { | |
| 531 | + _barButtons.splice(_index, 1); | |
| 532 | + } | |
| 533 | + }); | |
| 534 | + } // 子表默认可以新增,删掉ADD按钮 | |
| 535 | + | |
| 536 | + | |
| 537 | + if (props.originWidget === 'subform') { | |
| 538 | + var _index = _barButtons.findIndex(function (item) { | |
| 539 | + return item.code === 'ADD'; | |
| 540 | + }); | |
| 541 | + | |
| 542 | + if (_index > -1) { | |
| 543 | + _barButtons.splice(_index, 1); | |
| 544 | + } | |
| 545 | + } | |
| 546 | + | |
| 547 | + if (batchKey && type !== 'view') { | |
| 548 | + _barButtons.push({ | |
| 549 | + code: 'BATCH_ADD', | |
| 550 | + batch: true, | |
| 551 | + action: 'SYS', | |
| 552 | + name: '批量新增' | |
| 553 | + }); | |
| 554 | + } | |
| 555 | + | |
| 556 | + if (props.originWidget === 'relSelector' && subformMode && type === 'edit') { | |
| 557 | + _barButtons.unshift({ | |
| 558 | + code: 'subformEdit', | |
| 559 | + icon: 'EditOutlined', | |
| 560 | + batch: true, | |
| 561 | + action: 'SYS', | |
| 562 | + name: '表格编辑' | |
| 563 | + }); | |
| 564 | + } // 选择位置提前 | |
| 565 | + | |
| 566 | + | |
| 567 | + ['SELECT'].forEach(function (code) { | |
| 568 | + var _index = _barButtons.findIndex(function (item) { | |
| 569 | + return item.code === code; | |
| 570 | + }); | |
| 571 | + | |
| 572 | + if (_index > -1) { | |
| 573 | + var btn = _barButtons.splice(_index, 1); | |
| 574 | + | |
| 575 | + _barButtons.unshift.apply(_barButtons, _toConsumableArray(btn)); | |
| 576 | + } | |
| 577 | + }); | |
| 578 | + | |
| 579 | + if (type === 'add') { | |
| 580 | + var addBtns = ['SELECT', 'IMPORT', 'ADD', 'BATCH_ADD']; | |
| 581 | + | |
| 582 | + if (props.originWidget === 'subform') { | |
| 583 | + addBtns.push('DELETE'); | |
| 584 | + } | |
| 585 | + | |
| 586 | + return _barButtons.filter(function (item) { | |
| 587 | + return addBtns.includes(item.code); | |
| 588 | + }); | |
| 589 | + } else if (type === 'view') { | |
| 590 | + return _barButtons.filter(function (item) { | |
| 591 | + return item.code === 'EXPORT'; | |
| 592 | + }); | |
| 593 | + } | |
| 594 | + | |
| 595 | + return _barButtons; | |
| 596 | + }, [schema.isReadOnly, bar.buttons, originWidget, type, subReadOnly]); | |
| 597 | + var moreButtons = useMemo(function () { | |
| 598 | + var _barButtons = _.cloneDeep(barButtons); | |
| 599 | + | |
| 600 | + return /*#__PURE__*/React.createElement(_Menu, null, _barButtons.slice(3).filter(function (item) { | |
| 601 | + return isInDing ? !['EXPORT', 'IMPORT'].includes(item.code) : true; | |
| 602 | + }).map(function (item) { | |
| 603 | + var name = item.name, | |
| 604 | + code = item.code, | |
| 605 | + needConfirm = item.needConfirm, | |
| 606 | + confirmContent = item.confirmContent, | |
| 607 | + icon = item.icon, | |
| 608 | + action = item.action; | |
| 609 | + return /*#__PURE__*/React.createElement(_Menu.Item, null, /*#__PURE__*/React.createElement(_Button, _extends({ | |
| 610 | + key: code, | |
| 611 | + style: { | |
| 612 | + marginLeft: 8, | |
| 613 | + border: 'none' | |
| 614 | + } | |
| 615 | + }, item, { | |
| 616 | + icon: icon && bar.style !== 'TEXT' ? String(icon).indexOf('http') > -1 ? /*#__PURE__*/React.createElement("img", { | |
| 617 | + src: String(icon), | |
| 618 | + style: { | |
| 619 | + width: '16px', | |
| 620 | + height: '16px', | |
| 621 | + marginRight: '4px', | |
| 622 | + verticalAlign: 'text-bottom', | |
| 623 | + borderRadius: '50%' | |
| 624 | + }, | |
| 625 | + alt: "" | |
| 626 | + }) : String(icon).indexOf('-') > -1 ? /*#__PURE__*/React.createElement(QxIcon, { | |
| 627 | + type: String(icon) | |
| 628 | + }) : BUTTON_ICONS_MAP[icon + ''] : null, | |
| 629 | + onClick: function onClick() { | |
| 630 | + barBtnClick(code, needConfirm, confirmContent, action, item); | |
| 631 | + } | |
| 632 | + }), name)); | |
| 633 | + })); | |
| 634 | + }, [barButtons, barBtnClick]); | |
| 635 | + | |
| 636 | + var handleColumn = function handleColumn(schema, child, index) { | |
| 637 | + var _schema$props2; | |
| 638 | + | |
| 639 | + if (props.editable && props.originWidget === 'subform') { | |
| 640 | + if (isSubCanEdit && !['relField', 'qxFormula'].includes(schema.widget)) { | |
| 641 | + schema.readOnly = false; | |
| 642 | + } else if (!isSubCanEdit) { | |
| 643 | + schema.readOnly = true; | |
| 644 | + } | |
| 645 | + } | |
| 646 | + | |
| 647 | + if (schema.fieldName === searchKey) { | |
| 648 | + setSearchName(schema.title); | |
| 649 | + } | |
| 650 | + | |
| 651 | + var tip = schema.description ? /*#__PURE__*/React.createElement("span", { | |
| 652 | + className: 'qx-column_desc' | |
| 653 | + }, /*#__PURE__*/React.createElement(_Tooltip, { | |
| 654 | + title: schema.description | |
| 655 | + }, /*#__PURE__*/React.createElement(_InfoCircleOutlined, null))) : null; | |
| 656 | + var column = ((_schema$props2 = schema.props) === null || _schema$props2 === void 0 ? void 0 : _schema$props2.column) || {}; | |
| 657 | + | |
| 658 | + var _dataIndex = child.indexOf(dataPath) === -1 ? dataPath + '[].' + child : child; | |
| 659 | + | |
| 660 | + var _width = parseInt(column.width); | |
| 661 | + | |
| 662 | + return { | |
| 663 | + dataIndex: _dataIndex, | |
| 664 | + width: (column.width && _width ? _width : FIELD_LENGTH) + padding, | |
| 665 | + align: props.originWidget === 'subform' ? 'left' : column.align || 'left', | |
| 666 | + fixed: column.fixed || props.fixed && typeof index === 'number' && !isMergeFieldExist.current && index < props.fixed, | |
| 667 | + title: /*#__PURE__*/React.createElement("div", { | |
| 668 | + style: { | |
| 669 | + width: (column.width ? parseInt(column.width) : FIELD_LENGTH) + "px" | |
| 670 | + } | |
| 671 | + }, schema.required ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", { | |
| 672 | + className: "fr-label-required" | |
| 673 | + }, " *"), /*#__PURE__*/React.createElement("span", { | |
| 674 | + className: "qx-virtual_title__required", | |
| 675 | + title: schema.title | |
| 676 | + }, schema.title), tip) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", { | |
| 677 | + className: "qx-virtual_title", | |
| 678 | + title: schema.title | |
| 679 | + }, schema.title), tip)), | |
| 680 | + render: function render(value, record, index) { | |
| 681 | + // Check: record.index 似乎是antd自己会给的,不错哦 | |
| 682 | + var childIndex = [].concat(_toConsumableArray(dataIndex), [record.index]); | |
| 683 | + return /*#__PURE__*/React.createElement(Core, { | |
| 684 | + hideTitle: true, | |
| 685 | + displayType: "inline", | |
| 686 | + key: index.toString(), | |
| 687 | + id: _dataIndex, | |
| 688 | + dataIndex: childIndex, | |
| 689 | + _item: flatten[_dataIndex] ? null : getItemSchema(_dataIndex) // subReadOnly={subReadOnly} | |
| 690 | + | |
| 691 | + }); | |
| 692 | + } | |
| 693 | + }; | |
| 694 | + }; | |
| 695 | + | |
| 696 | + var getItemSchema = function getItemSchema(id) { | |
| 697 | + var _item; | |
| 698 | + | |
| 699 | + Object.keys(mergeFieldsMap.current || {}).forEach(function (key) { | |
| 700 | + if (id.indexOf(key) > -1) { | |
| 701 | + _item = mergeFieldsMap.current[key]; | |
| 702 | + } | |
| 703 | + }); | |
| 704 | + return _item; | |
| 705 | + }; | |
| 706 | + | |
| 707 | + var handleMergeField = function handleMergeField(schema) { | |
| 708 | + // const column = schema.props?.column || {}; | |
| 709 | + var _props = schema.props; | |
| 710 | + return { | |
| 711 | + title: _props.title, | |
| 712 | + align: _props.align, | |
| 713 | + dataIndex: _props.dataIndex, | |
| 714 | + children: Object.keys(schema.children).map(function (key) { | |
| 715 | + var _schema$children$key, _schema$children$key2; | |
| 716 | + | |
| 717 | + if (key.indexOf('_merge_field') > -1 && Object.keys((_schema$children$key = schema.children[key]) === null || _schema$children$key === void 0 ? void 0 : _schema$children$key.children).length === 1 && ((_schema$children$key2 = schema.children[key]) === null || _schema$children$key2 === void 0 ? void 0 : _schema$children$key2.children.hidden)) { | |
| 718 | + return { | |
| 719 | + show: false | |
| 720 | + }; | |
| 721 | + } | |
| 722 | + | |
| 723 | + var isMergeField = key.indexOf('_merge_field') > -1 && Object.keys(schema.children[key].children || {}).length; | |
| 724 | + | |
| 725 | + if (isMergeField) { | |
| 726 | + return handleMergeField(schema.children[key]); | |
| 727 | + } else { | |
| 728 | + return handleColumn(schema.children[key], key); | |
| 729 | + } | |
| 730 | + }) | |
| 731 | + }; | |
| 732 | + }; | |
| 733 | + | |
| 734 | + var getMergeMap = function getMergeMap() { | |
| 735 | + var _map = {}; | |
| 736 | + Object.keys(flatten).forEach(function (key) { | |
| 737 | + var _schema$schema; | |
| 738 | + | |
| 739 | + var _schema = flatten[key]; | |
| 740 | + | |
| 741 | + var _children = (_schema === null || _schema === void 0 ? void 0 : (_schema$schema = _schema.schema) === null || _schema$schema === void 0 ? void 0 : _schema$schema.children) || {}; | |
| 742 | + | |
| 743 | + if (key.indexOf('_merge_field') > -1 && Object.keys(_children).length) { | |
| 744 | + Object.keys(_children).forEach(function (item) { | |
| 745 | + var _schema1 = _children[item]; | |
| 746 | + | |
| 747 | + var _children1 = _schema1.children || {}; | |
| 748 | + | |
| 749 | + if (item.indexOf('_merge_field') > -1 && Object.keys(_children1).length) { | |
| 750 | + Object.keys(_children1).forEach(function (it) { | |
| 751 | + _map[it] = { | |
| 752 | + schema: _children1[it] | |
| 753 | + }; | |
| 754 | + }); | |
| 755 | + } else { | |
| 756 | + _map[item] = { | |
| 757 | + schema: _schema1 | |
| 758 | + }; | |
| 759 | + } | |
| 760 | + }); | |
| 761 | + } | |
| 762 | + }); | |
| 763 | + return _map; | |
| 764 | + }; | |
| 765 | + | |
| 766 | + var columns = useMemo(function () { | |
| 767 | + var _line_buttons2; | |
| 768 | + | |
| 769 | + //console.log('useMemo columns', isSubCanEdit, subReadOnly, JSON.stringify(line.buttons)) | |
| 770 | + mergeFieldsMap.current = getMergeMap(); | |
| 771 | + isMergeFieldExist.current = false; | |
| 772 | + | |
| 773 | + var _line_buttons = _.cloneDeep(line.buttons); | |
| 774 | + | |
| 775 | + var _columns = (children || []).map(function (child, index) { | |
| 776 | + var _schema$children; | |
| 777 | + | |
| 778 | + var item = flatten[child]; | |
| 779 | + var schema = item && item.schema || {}; | |
| 780 | + | |
| 781 | + if (child.indexOf('_merge_field') > -1 && (((_schema$children = schema.children) === null || _schema$children === void 0 ? void 0 : _schema$children.hidden) || !Object.keys(schema.children || {}).length)) { | |
| 782 | + return { | |
| 783 | + show: false | |
| 784 | + }; | |
| 785 | + } | |
| 786 | + | |
| 787 | + var isMergeField = child.indexOf('_merge_field') > -1 && Object.keys(schema.children || {}).length; | |
| 788 | + | |
| 789 | + if (isMergeField) { | |
| 790 | + isMergeFieldExist.current = true; | |
| 791 | + return handleMergeField(schema, index); | |
| 792 | + } else { | |
| 793 | + return handleColumn(schema, child, index); | |
| 794 | + } | |
| 795 | + }); | |
| 796 | + | |
| 797 | + _columns = _columns.filter(function (item) { | |
| 798 | + return Object.keys(item).length !== 1 && (!item.hidden || item.show); | |
| 799 | + }); | |
| 800 | + | |
| 801 | + if (((_line_buttons2 = _line_buttons) === null || _line_buttons2 === void 0 ? void 0 : _line_buttons2.length) || Array.isArray(itemProps.buttons)) { | |
| 802 | + var top = line.top, | |
| 803 | + _line$style = line.style, | |
| 804 | + style = _line$style === void 0 ? 'ICON' : _line$style, | |
| 805 | + fixed = line.fixed; | |
| 806 | + | |
| 807 | + if (type === 'add') { | |
| 808 | + if (props.originWidget === 'subform') { | |
| 809 | + _line_buttons = _line_buttons.filter(function (item) { | |
| 810 | + return item.code === 'DELETE'; | |
| 811 | + }); | |
| 812 | + } | |
| 813 | + | |
| 814 | + console.log('关联记录放开所有行按钮关联XQ230328006'); // 关联记录放开所有行按钮关联XQ230328006 | |
| 815 | + // else if (props.originWidget === 'relSelector') { | |
| 816 | + // // jbl ERP需求,新增时放开编辑按钮 | |
| 817 | + // _line_buttons = _line_buttons.filter(item => ['REMOVE', 'EDIT'].includes(item.code)) | |
| 818 | + // } | |
| 819 | + } else if ((type === 'view' || isReadOnly) && originWidget === 'relSelector') { | |
| 820 | + _line_buttons = _line_buttons.filter(function (item) { | |
| 821 | + return item.code === 'VIEW'; | |
| 822 | + }); | |
| 823 | + } | |
| 824 | + | |
| 825 | + var len = (_line_buttons || []).length; | |
| 826 | + var action = subReadOnly || isReadOnly && originWidget === 'subform' ? {} : { | |
| 827 | + title: '操作', | |
| 828 | + key: '$action', | |
| 829 | + fixed: fixed ? top ? 'left' : 'right' : props.originWidget === 'subform' ? 'right' : false, | |
| 830 | + align: 'center', | |
| 831 | + // width: ((buttons || []).length + (props.removeable ? 1 : 0)) * (style === 'ICON' ? 32 : style === 'TEXT' ? 36 : 57) + 16, | |
| 832 | + render: function render(value, record, idx) { | |
| 833 | + return /*#__PURE__*/React.createElement(React.Fragment, null, Array.isArray(itemProps.buttons) ? itemProps.buttons.map(function (item, idx) { | |
| 834 | + var callback = item.callback, | |
| 835 | + text = item.text, | |
| 836 | + html = item.html; | |
| 837 | + | |
| 838 | + var onClick = function onClick() {}; | |
| 839 | + | |
| 840 | + if (typeof window[callback] === 'function') { | |
| 841 | + onClick = function onClick() { | |
| 842 | + window[callback]({ | |
| 843 | + value: listData, | |
| 844 | + onChange: changeList, | |
| 845 | + schema: schema | |
| 846 | + }); | |
| 847 | + }; | |
| 848 | + } | |
| 849 | + | |
| 850 | + return /*#__PURE__*/React.createElement("a", { | |
| 851 | + key: idx.toString(), | |
| 852 | + style: { | |
| 853 | + marginLeft: 8 | |
| 854 | + }, | |
| 855 | + onClick: onClick | |
| 856 | + }, /*#__PURE__*/React.createElement("span", { | |
| 857 | + dangerouslySetInnerHTML: { | |
| 858 | + __html: html || text | |
| 859 | + } | |
| 860 | + })); | |
| 861 | + }) : null, Array.isArray(_line_buttons) ? _line_buttons.map(function (item) { | |
| 862 | + var name = item.name, | |
| 863 | + code = item.code, | |
| 864 | + needConfirm = item.needConfirm, | |
| 865 | + confirmContent = item.confirmContent, | |
| 866 | + icon = item.icon; | |
| 867 | + var display = handleState(record, code, props.originWidget); // if (display === '') { | |
| 868 | + // btnMap[code] = '' | |
| 869 | + // } | |
| 870 | + | |
| 871 | + return /*#__PURE__*/React.createElement(_Tooltip, { | |
| 872 | + title: name | |
| 873 | + }, /*#__PURE__*/React.createElement(_Button, _extends({ | |
| 874 | + key: code, | |
| 875 | + style: { | |
| 876 | + marginLeft: 8, | |
| 877 | + display: display | |
| 878 | + } | |
| 879 | + }, item, { | |
| 880 | + icon: icon && style !== 'TEXT' ? String(icon).indexOf('http') > -1 ? /*#__PURE__*/React.createElement("img", { | |
| 881 | + src: String(icon), | |
| 882 | + style: { | |
| 883 | + width: '16px', | |
| 884 | + height: '16px', | |
| 885 | + marginRight: '4px', | |
| 886 | + verticalAlign: 'text-bottom', | |
| 887 | + borderRadius: '50%' | |
| 888 | + }, | |
| 889 | + alt: "" | |
| 890 | + }) : String(icon).indexOf('-') > -1 ? /*#__PURE__*/React.createElement(QxIcon, { | |
| 891 | + type: String(icon) | |
| 892 | + }) : BUTTON_ICONS_MAP[icon + ''] : null, | |
| 893 | + type: 'link', | |
| 894 | + size: 'small' // disabled={props.originWidget === 'subform' ? false : handleAuth(record, code)} | |
| 895 | + , | |
| 896 | + onClick: function onClick() { | |
| 897 | + // 已有数据进行操作时才二次提示 | |
| 898 | + if (needConfirm && confirmContent && (props.originWidget === 'relSelector' ? record.hasOwnProperty('$auth') : record.hasOwnProperty('id'))) { | |
| 899 | + confirm({ | |
| 900 | + title: confirmContent, | |
| 901 | + icon: /*#__PURE__*/React.createElement(_ExclamationCircleOutlined, null), | |
| 902 | + okText: '确认', | |
| 903 | + okType: 'danger', | |
| 904 | + cancelText: '取消', | |
| 905 | + onOk: function onOk() { | |
| 906 | + if (code === 'DELETE' && props.originWidget === 'subform') { | |
| 907 | + deleteItem(idx); | |
| 908 | + } else if (code === 'REMOVE') { | |
| 909 | + deleteItem(record.orginIdx); | |
| 910 | + props.handleLineBtnClick(code, record, schema.$id); | |
| 911 | + } else if (code === 'COPY') { | |
| 912 | + copyItem(record.orginIdx); | |
| 913 | + } else if (item.action === 'CUSTOM') { | |
| 914 | + props.handleCustom(item, record, schema.$id); | |
| 915 | + } else { | |
| 916 | + props.handleLineBtnClick(code, record, schema.$id, line.action); | |
| 917 | + } | |
| 918 | + }, | |
| 919 | + onCancel: function onCancel() {} | |
| 920 | + }); | |
| 921 | + } else { | |
| 922 | + if (code === 'DELETE' && props.originWidget === 'subform') { | |
| 923 | + deleteItem(idx); | |
| 924 | + } else if (code === 'REMOVE') { | |
| 925 | + deleteItem(record.orginIdx); | |
| 926 | + props.handleLineBtnClick(code, record, schema.$id); | |
| 927 | + } else if (code === 'COPY') { | |
| 928 | + copyItem(record.orginIdx); | |
| 929 | + } else if (item.action === 'CUSTOM') { | |
| 930 | + props.handleCustom(item, record, schema.$id); | |
| 931 | + } else { | |
| 932 | + props.handleLineBtnClick(code, record, schema.$id, line.action, schema); | |
| 933 | + } | |
| 934 | + } | |
| 935 | + } | |
| 936 | + }), style !== 'ICON' || !icon ? name : null)); // } | |
| 937 | + }) : null); | |
| 938 | + } | |
| 939 | + }; | |
| 940 | + var actionLength = 0; | |
| 941 | + | |
| 942 | + _line_buttons.forEach(function (item) { | |
| 943 | + if (props.originWidget === 'subform' || style === 'ICON' && item.icon) { | |
| 944 | + actionLength += 32; | |
| 945 | + } else if (style !== 'ICON' || style === 'ICON' && !item.icon) { | |
| 946 | + var div = document.createElement('div'); | |
| 947 | + div.style.position = 'absolute'; | |
| 948 | + div.style.visibility = 'hidden'; | |
| 949 | + div.style.fontSize = '14px'; | |
| 950 | + window.document.body.appendChild(div); | |
| 951 | + div.innerHTML = item.name; | |
| 952 | + actionLength += div.clientWidth + (style !== 'TEXT' && item.icon ? 32 : 0); | |
| 953 | + div.remove(); | |
| 954 | + } | |
| 955 | + }); | |
| 956 | + | |
| 957 | + action.width = actionLength + padding * 2 - 8; | |
| 958 | + | |
| 959 | + if ((_columns || []).findIndex(function (item) { | |
| 960 | + return item.key === '$action'; | |
| 961 | + }) === -1 && len > 0 && action.title) { | |
| 962 | + if (top) { | |
| 963 | + _columns.unshift(action); | |
| 964 | + } else { | |
| 965 | + _columns.push(action); | |
| 966 | + } | |
| 967 | + } | |
| 968 | + } | |
| 969 | + | |
| 970 | + return _columns; | |
| 971 | + }, [isSubCanEdit, subReadOnly, JSON.stringify(line.buttons), deleteItem]); | |
| 972 | + | |
| 973 | + var handleAuth = function handleAuth(record, code) { | |
| 974 | + switch (code) { | |
| 975 | + case 'VIEW': | |
| 976 | + return !record.VIEW_flag_; | |
| 977 | + | |
| 978 | + case 'DELETE': | |
| 979 | + return !record.DELETE_flag_; | |
| 980 | + | |
| 981 | + case 'EDIT': | |
| 982 | + return !record.EDIT_flag_; | |
| 983 | + } | |
| 984 | + }; | |
| 985 | + | |
| 986 | + var handleState = function handleState(record, code, originWidget) { | |
| 987 | + if (originWidget === 'subform') { | |
| 988 | + if (code === 'COPY' && !record.id) { | |
| 989 | + return 'none'; | |
| 990 | + } | |
| 991 | + | |
| 992 | + return ''; | |
| 993 | + } else { | |
| 994 | + switch (code) { | |
| 995 | + case 'VIEW': | |
| 996 | + return record.VIEW_flag_ === true ? '' : 'none'; | |
| 997 | + | |
| 998 | + case 'DELETE': | |
| 999 | + return record.DELETE_flag_ === true ? '' : 'none'; | |
| 1000 | + | |
| 1001 | + case 'EDIT': | |
| 1002 | + return record.EDIT_flag_ === true ? '' : 'none'; | |
| 1003 | + | |
| 1004 | + case 'REMOVE': | |
| 1005 | + return ''; | |
| 1006 | + | |
| 1007 | + default: | |
| 1008 | + return record[code + '_flag_'] ? '' : 'none'; | |
| 1009 | + } | |
| 1010 | + } | |
| 1011 | + }; | |
| 1012 | + | |
| 1013 | + var handleExport = /*#__PURE__*/function () { | |
| 1014 | + var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { | |
| 1015 | + var queryParams, currentAppCode, currentFunCode, appCode, funCode, fieldName, result; | |
| 1016 | + return regeneratorRuntime.wrap(function _callee$(_context) { | |
| 1017 | + while (1) { | |
| 1018 | + switch (_context.prev = _context.next) { | |
| 1019 | + case 0: | |
| 1020 | + setProgressData({ | |
| 1021 | + "percent": 0, | |
| 1022 | + "status": "PROCESSING" | |
| 1023 | + }); | |
| 1024 | + queryParams = _defineProperty({ | |
| 1025 | + dataId: props.dataId | |
| 1026 | + }, searchKey, keyWord); | |
| 1027 | + currentAppCode = qxProps.currentAppCode, currentFunCode = qxProps.currentFunCode, appCode = qxProps.appCode, funCode = qxProps.funCode, fieldName = qxProps.fieldName; | |
| 1028 | + _context.next = 5; | |
| 1029 | + return props.exportChild(props.originWidget === 'subform' ? appCode : currentAppCode, props.originWidget === 'subform' ? funCode : currentFunCode, fieldName, queryParams); | |
| 1030 | + | |
| 1031 | + case 5: | |
| 1032 | + result = _context.sent; | |
| 1033 | + exportTaskId.current = result.taskId || ''; | |
| 1034 | + | |
| 1035 | + if (result.downloadUrl) { | |
| 1036 | + setTimeout(function () { | |
| 1037 | + exportData(result.taskId); | |
| 1038 | + }, 5000); | |
| 1039 | + } | |
| 1040 | + | |
| 1041 | + case 8: | |
| 1042 | + case "end": | |
| 1043 | + return _context.stop(); | |
| 1044 | + } | |
| 1045 | + } | |
| 1046 | + }, _callee); | |
| 1047 | + })); | |
| 1048 | + | |
| 1049 | + return function handleExport() { | |
| 1050 | + return _ref2.apply(this, arguments); | |
| 1051 | + }; | |
| 1052 | + }(); | |
| 1053 | + | |
| 1054 | + var exportData = function exportData(taskId) { | |
| 1055 | + // const {appCode, funCode, viewCode} = qxProps | |
| 1056 | + // taskType: UPLOAD || EXPORT | |
| 1057 | + if (!taskId && !exportTaskId.current) return; | |
| 1058 | + props.childExportProgress(taskId || exportTaskId.current).then(function (res) { | |
| 1059 | + setProgressData(res || null); | |
| 1060 | + }); | |
| 1061 | + }; | |
| 1062 | + | |
| 1063 | + useEffect(function () { | |
| 1064 | + if (exportProgressData) { | |
| 1065 | + if (exportProgressData.status === 'PROCESSING' && !intervalName) { | |
| 1066 | + setIntervalName(setInterval(function () { | |
| 1067 | + return exportData(''); | |
| 1068 | + }, 1000 * 10)); | |
| 1069 | + return; | |
| 1070 | + } | |
| 1071 | + | |
| 1072 | + if (exportProgressData.status !== 'PROCESSING' && intervalName) { | |
| 1073 | + clearInterval(intervalName); | |
| 1074 | + return; | |
| 1075 | + } | |
| 1076 | + } | |
| 1077 | + | |
| 1078 | + return function () { | |
| 1079 | + if (intervalName) { | |
| 1080 | + setTimeout(function () { | |
| 1081 | + clearInterval(intervalName); | |
| 1082 | + }, 1000 * 60 * 10); | |
| 1083 | + } | |
| 1084 | + }; | |
| 1085 | + }, [exportProgressData]); | |
| 1086 | + | |
| 1087 | + var handleCloseExport = function handleCloseExport(taskId) { | |
| 1088 | + var appCode = qxProps.appCode, | |
| 1089 | + funCode = qxProps.funCode, | |
| 1090 | + viewCode = qxProps.viewCode; | |
| 1091 | + props.closeExport(appCode, funCode, viewCode, { | |
| 1092 | + taskId: taskId | |
| 1093 | + }).then(function (res) { | |
| 1094 | + setProgressData(null); | |
| 1095 | + | |
| 1096 | + if (intervalName) { | |
| 1097 | + clearInterval(intervalName); | |
| 1098 | + } | |
| 1099 | + }); | |
| 1100 | + }; | |
| 1101 | + | |
| 1102 | + var getExportMessage = function getExportMessage() { | |
| 1103 | + if (exportProgressData.status === 'SUCCESS') { | |
| 1104 | + return /*#__PURE__*/React.createElement("div", null, "\u5BFC\u51FA\u6210\u529F\uFF0C\u70B9\u51FB", /*#__PURE__*/React.createElement(_Button, { | |
| 1105 | + onClick: function onClick() { | |
| 1106 | + return handleDownload(exportProgressData.downloadUrl, '导出文件.xlsx', props.REQUEST); | |
| 1107 | + }, | |
| 1108 | + type: 'link' | |
| 1109 | + }, "\u4E0B\u8F7D\u6587\u4EF6"), /*#__PURE__*/React.createElement(_Button, { | |
| 1110 | + style: { | |
| 1111 | + float: "right" | |
| 1112 | + }, | |
| 1113 | + onClick: function onClick() { | |
| 1114 | + return handleCloseExport(exportProgressData.taskId); | |
| 1115 | + }, | |
| 1116 | + type: 'link' | |
| 1117 | + }, "\u3010\u5173\u95ED\u63D0\u9192\u3011")); | |
| 1118 | + } | |
| 1119 | + | |
| 1120 | + return /*#__PURE__*/React.createElement("div", null, "\u5BFC\u51FA\u8FDB\u884C\u4E2D\uFF0C\u8BF7\u7A0D\u540E......", /*#__PURE__*/React.createElement(_Button, { | |
| 1121 | + onClick: function onClick() { | |
| 1122 | + return exportData(''); | |
| 1123 | + }, | |
| 1124 | + type: 'link' | |
| 1125 | + }, "\u5237\u65B0"), /*#__PURE__*/React.createElement(_Button, { | |
| 1126 | + style: { | |
| 1127 | + float: "right" | |
| 1128 | + }, | |
| 1129 | + onClick: function onClick() { | |
| 1130 | + return handleCloseExport(exportProgressData.taskId); | |
| 1131 | + }, | |
| 1132 | + type: 'link' | |
| 1133 | + }, "\u3010\u5173\u95ED\u63D0\u9192\u3011")); | |
| 1134 | + }; | |
| 1135 | + | |
| 1136 | + var cancelSubEdit = function cancelSubEdit() { | |
| 1137 | + setSubEdit(false); | |
| 1138 | + }; | |
| 1139 | + | |
| 1140 | + var submitSubEdit = function submitSubEdit() { | |
| 1141 | + setSubEdit(false); | |
| 1142 | + }; | |
| 1143 | + | |
| 1144 | + var barBtnClick = function barBtnClick(code, needConfirm, confirmContent, action, item) { | |
| 1145 | + setSelectedRowKeys([]); | |
| 1146 | + | |
| 1147 | + if (needConfirm && confirmContent) { | |
| 1148 | + if (!selectedRowKeys.length) { | |
| 1149 | + return _message.warning('请选择数据'); | |
| 1150 | + } | |
| 1151 | + | |
| 1152 | + confirm({ | |
| 1153 | + title: confirmContent, | |
| 1154 | + icon: /*#__PURE__*/React.createElement(_ExclamationCircleOutlined, null), | |
| 1155 | + okText: '确认', | |
| 1156 | + okType: 'danger', | |
| 1157 | + cancelText: '取消', | |
| 1158 | + onOk: function onOk() { | |
| 1159 | + if (code === 'DELETE') { | |
| 1160 | + if (props.originWidget === 'subform') { | |
| 1161 | + batchDelete(selectedRowKeys); | |
| 1162 | + setSelectedRowKeys([]); | |
| 1163 | + } else { | |
| 1164 | + props.handleBarBtnClick(code, fieldName, batchKey, selectedRowKeys, schema.$id, selectedIds); | |
| 1165 | + } | |
| 1166 | + } else if (code === 'EXPORT') { | |
| 1167 | + handleExport(); | |
| 1168 | + } else if (code === 'SELECT') { | |
| 1169 | + props.openRelSelect(schema.$id); | |
| 1170 | + } else if (code === 'ADD') { | |
| 1171 | + props.handleRelAdd(schema.$id); | |
| 1172 | + } else if (code === 'subformEdit') { | |
| 1173 | + props.handleBatchEdit(fieldName, schema.$id, selectedIds); | |
| 1174 | + } else if (action === 'CUSTOM') { | |
| 1175 | + props.handleCustom(item, selectedIds, schema.$id); | |
| 1176 | + } else { | |
| 1177 | + props.handleBarBtnClick(code, fieldName, batchKey, selectedRowKeys, schema.$id, selectedIds); | |
| 1178 | + } | |
| 1179 | + }, | |
| 1180 | + onCancel: function onCancel() {} | |
| 1181 | + }); | |
| 1182 | + } else { | |
| 1183 | + if (code === 'DELETE') { | |
| 1184 | + if (props.originWidget === 'subform') { | |
| 1185 | + batchDelete(selectedRowKeys); | |
| 1186 | + setSelectedRowKeys([]); | |
| 1187 | + } else { | |
| 1188 | + props.handleBarBtnClick(code, fieldName, batchKey, selectedRowKeys, schema.$id, selectedIds); | |
| 1189 | + } | |
| 1190 | + } else if (code === 'EXPORT') { | |
| 1191 | + handleExport(); | |
| 1192 | + } else if (code === 'SELECT') { | |
| 1193 | + props.openRelSelect(schema.$id); | |
| 1194 | + } else if (code === 'ADD') { | |
| 1195 | + props.handleRelAdd(schema.$id); | |
| 1196 | + } else if (code === 'subformEdit') { | |
| 1197 | + props.handleBatchEdit(fieldName, schema.$id, selectedIds); | |
| 1198 | + } else if (action === 'CUSTOM') { | |
| 1199 | + props.handleCustom(item, selectedIds, schema.$id); | |
| 1200 | + } else { | |
| 1201 | + props.handleBarBtnClick(code, fieldName, batchKey, selectedRowKeys, schema.$id, selectedIds); | |
| 1202 | + } | |
| 1203 | + } | |
| 1204 | + }; | |
| 1205 | + | |
| 1206 | + return /*#__PURE__*/React.createElement("div", null, props.editable ? isSubCanEdit ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Button, { | |
| 1207 | + type: 'text', | |
| 1208 | + size: "small", | |
| 1209 | + icon: /*#__PURE__*/React.createElement(_CheckOutlined, null), | |
| 1210 | + onClick: submitSubEdit, | |
| 1211 | + style: { | |
| 1212 | + marginLeft: '5px' | |
| 1213 | + } | |
| 1214 | + }), /*#__PURE__*/React.createElement(_Button, { | |
| 1215 | + type: 'text', | |
| 1216 | + size: "small", | |
| 1217 | + icon: /*#__PURE__*/React.createElement(_CloseOutlined, null), | |
| 1218 | + onClick: cancelSubEdit, | |
| 1219 | + style: { | |
| 1220 | + marginLeft: '5px' | |
| 1221 | + } | |
| 1222 | + })) : /*#__PURE__*/React.createElement(_Button, { | |
| 1223 | + type: 'text', | |
| 1224 | + size: "small", | |
| 1225 | + icon: /*#__PURE__*/React.createElement(_EditOutlined, null), | |
| 1226 | + onClick: function onClick() { | |
| 1227 | + return setSubEdit(true); | |
| 1228 | + }, | |
| 1229 | + style: { | |
| 1230 | + marginLeft: '5px' | |
| 1231 | + } | |
| 1232 | + }) : null, /*#__PURE__*/React.createElement("div", { | |
| 1233 | + className: "qx-virtual-searchLine ".concat(searchKey ? '' : 'rowReverse') | |
| 1234 | + }, searchKey ? /*#__PURE__*/React.createElement(_Input, { | |
| 1235 | + style: { | |
| 1236 | + width: '230px' | |
| 1237 | + }, | |
| 1238 | + allowClear: true, | |
| 1239 | + size: 'small', | |
| 1240 | + placeholder: searchName ? "\u8BF7\u6839\u636E".concat(searchName, "\u5B57\u6BB5\u8FDB\u884C\u641C\u7D22") : "请输入搜索条件", | |
| 1241 | + prefix: /*#__PURE__*/React.createElement(_SearchOutlined, { | |
| 1242 | + style: { | |
| 1243 | + color: '#666' | |
| 1244 | + } | |
| 1245 | + }), | |
| 1246 | + onChange: function onChange(e) { | |
| 1247 | + var _e$target; | |
| 1248 | + | |
| 1249 | + setKeyWord(((_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value) || ''); | |
| 1250 | + } | |
| 1251 | + }) : /*#__PURE__*/React.createElement(React.Fragment, null), /*#__PURE__*/React.createElement("div", null, (barButtons.length > 4 ? barButtons.slice(0, 3) : barButtons.slice(0, 4)).filter(function (item) { | |
| 1252 | + return isInDing ? !['EXPORT', 'IMPORT'].includes(item.code) : true; | |
| 1253 | + }).map(function (item) { | |
| 1254 | + var name = item.name, | |
| 1255 | + code = item.code, | |
| 1256 | + needConfirm = item.needConfirm, | |
| 1257 | + confirmContent = item.confirmContent, | |
| 1258 | + icon = item.icon, | |
| 1259 | + action = item.action; | |
| 1260 | + return /*#__PURE__*/React.createElement(_Button, _extends({ | |
| 1261 | + key: code, | |
| 1262 | + style: { | |
| 1263 | + marginLeft: 8 | |
| 1264 | + } | |
| 1265 | + }, item, { | |
| 1266 | + icon: icon && bar.style !== 'TEXT' ? String(icon).indexOf('http') > -1 ? /*#__PURE__*/React.createElement("img", { | |
| 1267 | + src: String(icon), | |
| 1268 | + style: { | |
| 1269 | + width: '16px', | |
| 1270 | + height: '16px', | |
| 1271 | + marginRight: '4px', | |
| 1272 | + verticalAlign: 'text-bottom', | |
| 1273 | + borderRadius: '50%' | |
| 1274 | + }, | |
| 1275 | + alt: "" | |
| 1276 | + }) : String(icon).indexOf('-') > -1 ? /*#__PURE__*/React.createElement(QxIcon, { | |
| 1277 | + type: String(icon) | |
| 1278 | + }) : BUTTON_ICONS_MAP[icon + ''] : null, | |
| 1279 | + onClick: function onClick() { | |
| 1280 | + barBtnClick(code, needConfirm, confirmContent, action, item); | |
| 1281 | + } | |
| 1282 | + }), name); // } | |
| 1283 | + }), barButtons.slice(4).length ? /*#__PURE__*/React.createElement(_Dropdown, { | |
| 1284 | + overlay: moreButtons | |
| 1285 | + }, /*#__PURE__*/React.createElement(_Button, { | |
| 1286 | + style: { | |
| 1287 | + marginLeft: 8 | |
| 1288 | + } | |
| 1289 | + }, /*#__PURE__*/React.createElement(_Space, null, "\u66F4\u591A\u64CD\u4F5C", /*#__PURE__*/React.createElement(_DownOutlined, null)))) : null), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) { | |
| 1290 | + var callback = item.callback, | |
| 1291 | + text = item.text, | |
| 1292 | + html = item.html; | |
| 1293 | + | |
| 1294 | + var onClick = function onClick() {}; | |
| 1295 | + | |
| 1296 | + if (typeof window[callback] === 'function') { | |
| 1297 | + onClick = function onClick() { | |
| 1298 | + window[callback]({ | |
| 1299 | + value: listData, | |
| 1300 | + onChange: changeList, | |
| 1301 | + schema: schema | |
| 1302 | + }); | |
| 1303 | + }; | |
| 1304 | + } else { | |
| 1305 | + if (typeof callback === 'function') { | |
| 1306 | + callback({ | |
| 1307 | + value: listData, | |
| 1308 | + onChange: changeList, | |
| 1309 | + schema: schema | |
| 1310 | + }); | |
| 1311 | + } | |
| 1312 | + } | |
| 1313 | + | |
| 1314 | + return /*#__PURE__*/React.createElement(_Button, { | |
| 1315 | + key: idx.toString(), | |
| 1316 | + style: { | |
| 1317 | + marginLeft: 8 | |
| 1318 | + }, | |
| 1319 | + size: "small", | |
| 1320 | + onClick: onClick | |
| 1321 | + }, /*#__PURE__*/React.createElement("span", { | |
| 1322 | + dangerouslySetInnerHTML: { | |
| 1323 | + __html: html || text | |
| 1324 | + } | |
| 1325 | + })); | |
| 1326 | + }) : null), exportProgressData ? /*#__PURE__*/React.createElement(_Alert, { | |
| 1327 | + style: { | |
| 1328 | + marginBottom: '12px' | |
| 1329 | + }, | |
| 1330 | + message: getExportMessage(), | |
| 1331 | + type: EXPORT_STATUS[exportProgressData.status] || 'info', | |
| 1332 | + showIcon: true, | |
| 1333 | + onClose: function onClose() { | |
| 1334 | + handleCloseExport(exportProgressData.taskId); | |
| 1335 | + } | |
| 1336 | + }) : null, /*#__PURE__*/React.createElement(_Table, _extends({ | |
| 1337 | + // key={props.originWidget === 'relSelector' ? refresh : ''} | |
| 1338 | + id: 'qxVirtualList', | |
| 1339 | + className: 'qx-virtualList', | |
| 1340 | + rowKey: props.originWidget === 'relSelector' ? 'id' : 'orginIdx', | |
| 1341 | + scroll: _objectSpread({ | |
| 1342 | + x: '100%' | |
| 1343 | + }, !isFullScreen && { | |
| 1344 | + y: scrollY | |
| 1345 | + }) // components={vt} | |
| 1346 | + , | |
| 1347 | + size: size || 'small' | |
| 1348 | + }, props.originWidget === 'relSelector' ? { | |
| 1349 | + loading: loading | |
| 1350 | + } : {}, { | |
| 1351 | + columns: columns, | |
| 1352 | + dataSource: dataSource, | |
| 1353 | + pagination: pagination // style={{marginBottom: 25}} | |
| 1354 | + , | |
| 1355 | + rowSelection: newRowSelection, | |
| 1356 | + summary: function summary() { | |
| 1357 | + if (!_summary || Array.isArray(_summary) && !_summary.length) { | |
| 1358 | + return null; | |
| 1359 | + } | |
| 1360 | + | |
| 1361 | + return _summary(listData); | |
| 1362 | + } | |
| 1363 | + }, rest)), !props.hideAdd && props.originWidget === 'subform' && !subReadOnly && /*#__PURE__*/React.createElement(_Button, { | |
| 1364 | + type: "link", | |
| 1365 | + icon: /*#__PURE__*/React.createElement(_PlusOutlined, null), | |
| 1366 | + onClick: function onClick() { | |
| 1367 | + addItem(); | |
| 1368 | + } | |
| 1369 | + }, "\u65B0\u589E")); | |
| 1370 | +}; | |
| 1371 | +/** | |
| 1372 | + * 文件下载。依赖HTML页面 | |
| 1373 | + * | |
| 1374 | + * @param url 下载URL | |
| 1375 | + * @param name 指定的文件名(包括扩展名) | |
| 1376 | + * @param request | |
| 1377 | + */ | |
| 1378 | + | |
| 1379 | + | |
| 1380 | +function handleDownload(_x, _x2, _x3) { | |
| 1381 | + return _handleDownload.apply(this, arguments); | |
| 1382 | +} | |
| 1383 | + | |
| 1384 | +function _handleDownload() { | |
| 1385 | + _handleDownload = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(url, name, request) { | |
| 1386 | + var isDownload, | |
| 1387 | + link, | |
| 1388 | + blob, | |
| 1389 | + downloadUrl, | |
| 1390 | + _args2 = arguments; | |
| 1391 | + return regeneratorRuntime.wrap(function _callee2$(_context2) { | |
| 1392 | + while (1) { | |
| 1393 | + switch (_context2.prev = _context2.next) { | |
| 1394 | + case 0: | |
| 1395 | + // eslint-disable-next-line prefer-rest-params | |
| 1396 | + isDownload = _args2[3]; | |
| 1397 | + | |
| 1398 | + if (isDownload === null || Boolean(isDownload)) { | |
| 1399 | + _message.warning('即将开始下载,请勿重复点击。'); | |
| 1400 | + } // console.log('url========', url); | |
| 1401 | + // const isInDing = dd && dd?.env?.platform !== 'notInDingTalk'; | |
| 1402 | + // if (isInDing) { | |
| 1403 | + // // 比如导出 导入 | |
| 1404 | + // const needToken = !(url.includes('http://') || url.includes('https://')); | |
| 1405 | + // let dingUrl; | |
| 1406 | + // if (needToken) { | |
| 1407 | + // const apiUri = process.env.apiUrl || ''; | |
| 1408 | + // const needConcat = !(apiUri.includes('http://') || apiUri.includes('https://')); // 打包后 | |
| 1409 | + // const prev = `${needConcat ? location.origin : ''}${apiUri}${url}`; | |
| 1410 | + // const append = `_token=${QIXIAO_TOKEN}${isDesignPage() ? '&_bizCode=design' : ''}`; | |
| 1411 | + // dingUrl = `${prev}${prev.includes('?') ? '&' : '?'}${append}`; // 文件服务器 不能加参数 | |
| 1412 | + // } else { | |
| 1413 | + // dingUrl = url; | |
| 1414 | + // } | |
| 1415 | + // console.log('dingUrl========', dingUrl); | |
| 1416 | + // const fileName = name || '下载文件'; | |
| 1417 | + // dd.biz.util.downloadFile({ | |
| 1418 | + // url: dingUrl, | |
| 1419 | + // name: fileName, | |
| 1420 | + // onFail: function () { | |
| 1421 | + // message.error(`${fileName} 文件下载失败`); | |
| 1422 | + // }, | |
| 1423 | + // }); | |
| 1424 | + // return; | |
| 1425 | + // } | |
| 1426 | + | |
| 1427 | + | |
| 1428 | + link = document.createElement('a'); | |
| 1429 | + link.href = url; | |
| 1430 | + link.download = name; | |
| 1431 | + link.target = '_blank'; | |
| 1432 | + document.body.appendChild(link); //TODO 文件过大时,看不到下载进度 | |
| 1433 | + | |
| 1434 | + _context2.next = 9; | |
| 1435 | + return request.get(url, { | |
| 1436 | + autoShowError: true | |
| 1437 | + }); | |
| 1438 | + | |
| 1439 | + case 9: | |
| 1440 | + blob = _context2.sent; | |
| 1441 | + | |
| 1442 | + if (blob !== null) { | |
| 1443 | + downloadUrl = URL.createObjectURL(blob); | |
| 1444 | + link.href = downloadUrl; | |
| 1445 | + link.click(); | |
| 1446 | + document.body.removeChild(link); | |
| 1447 | + URL.revokeObjectURL(downloadUrl); | |
| 1448 | + } | |
| 1449 | + | |
| 1450 | + case 11: | |
| 1451 | + case "end": | |
| 1452 | + return _context2.stop(); | |
| 1453 | + } | |
| 1454 | + } | |
| 1455 | + }, _callee2); | |
| 1456 | + })); | |
| 1457 | + return _handleDownload.apply(this, arguments); | |
| 1458 | +} | |
| 1459 | + | |
| 1460 | +export default VirtualList; | |
| \ No newline at end of file | ... | ... |
| 1 | +import { createFromIconfontCN } from '@ant-design/icons/lib'; | |
| 2 | +/** | |
| 3 | + * 使用: | |
| 4 | + * import QxIcon from '@/packages/qx-icon'; | |
| 5 | + * <QxIcon type="xxx"/> | |
| 6 | + * 说明: | |
| 7 | + * `xxx`为图标唯一标识,`iconfont.cn`对应图标下的“复制代码”所得,建议命名为“icon-xxx_yyy”, | |
| 8 | + * “icon-”为固定前缀,xxx为模块类型,yyy为图标名。公共类的xxx命名为“comm” | |
| 9 | + * eg: <QxIcon type="icon-flow_eye"/> | |
| 10 | + * | |
| 11 | + * @type {React.FC<IconFontProps<string>>} | |
| 12 | + */ | |
| 13 | + | |
| 14 | +var QxIcon = createFromIconfontCN({ | |
| 15 | + scriptUrl: 'https://lf1-cdn-tos.bytegoofy.com/obj/iconpark/icons_13749_95.b05de9dc2fbe8efffb150f83b64da806.es5.js' | |
| 16 | +}); | |
| 17 | +export default QxIcon; | |
| \ No newline at end of file | ... | ... |
| 1 | +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } | |
| 2 | + | |
| 3 | +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | |
| 4 | + | |
| 5 | +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | |
| 6 | + | |
| 7 | +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } | |
| 8 | + | |
| 9 | +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } | |
| 10 | + | |
| 11 | +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | |
| 12 | + | |
| 13 | +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; } | |
| 14 | + | |
| 15 | +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(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; } | |
| 16 | + | |
| 17 | +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | |
| 18 | + | |
| 19 | +/* eslint-disable jsx-a11y/anchor-is-valid */ | |
| 20 | +import React from 'react'; | |
| 21 | +import { cloneDeep, get, isFunction } from 'lodash-es'; | |
| 22 | +import { useStore, useTools } from '../../../hooks'; | |
| 23 | +import { generateDataSkeleton, getDataPath, getSchemaFromFlatten } from '../../../utils'; | |
| 24 | +import CardList from './CardList'; | |
| 25 | +import DrawerList from './DrawerList'; | |
| 26 | +import "./list.css"; | |
| 27 | +import SimpleList from './SimpleList'; | |
| 28 | +import TableList from './TableList'; | |
| 29 | +import TabList from './TabList'; | |
| 30 | +import VirtualList from './VirtualList'; | |
| 31 | +import ListForMobile from "./ListForMobile"; | |
| 32 | + | |
| 33 | +var RenderList = function RenderList(_ref) { | |
| 34 | + var parentId = _ref.parentId, | |
| 35 | + _ref$schema = _ref.schema, | |
| 36 | + schema = _ref$schema === void 0 ? {} : _ref$schema, | |
| 37 | + _ref$dataIndex = _ref.dataIndex, | |
| 38 | + dataIndex = _ref$dataIndex === void 0 ? [] : _ref$dataIndex, | |
| 39 | + _ref$children = _ref.children, | |
| 40 | + children = _ref$children === void 0 ? [] : _ref$children, | |
| 41 | + errorFields = _ref.errorFields, | |
| 42 | + displayType = _ref.displayType; | |
| 43 | + | |
| 44 | + var _useStore = useStore(), | |
| 45 | + formData = _useStore.formData, | |
| 46 | + flatten = _useStore.flatten; | |
| 47 | + | |
| 48 | + var _useTools = useTools(), | |
| 49 | + onItemChange = _useTools.onItemChange, | |
| 50 | + removeTouched = _useTools.removeTouched, | |
| 51 | + methods = _useTools.methods, | |
| 52 | + layoutWidgets = _useTools.layoutWidgets; | |
| 53 | + | |
| 54 | + var _schema$props = schema.props, | |
| 55 | + props = _schema$props === void 0 ? {} : _schema$props; | |
| 56 | + var renderWidget = 'list'; | |
| 57 | + | |
| 58 | + try { | |
| 59 | + renderWidget = schema.widget; | |
| 60 | + } catch (error) {} // 计算 list对应的formData | |
| 61 | + | |
| 62 | + | |
| 63 | + var dataPath = getDataPath(parentId, dataIndex); | |
| 64 | + var listData; | |
| 65 | + | |
| 66 | + if (typeof dataPath === 'string') { | |
| 67 | + // TODO: listData会有不少“窟窿”,submit 的时候,listData 需要补齐 or filter | |
| 68 | + listData = get(formData, dataPath); | |
| 69 | + } | |
| 70 | + | |
| 71 | + var displayList = Array.isArray(listData) && JSON.stringify(listData) !== '[{}]' ? listData : []; | |
| 72 | + | |
| 73 | + var changeList = function changeList(newList) { | |
| 74 | + onItemChange(dataPath, newList); | |
| 75 | + }; | |
| 76 | + | |
| 77 | + var addItem = function addItem() { | |
| 78 | + var _item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; | |
| 79 | + | |
| 80 | + var _schema = getSchemaFromFlatten(flatten, parentId); | |
| 81 | + | |
| 82 | + var newItem = _objectSpread(_objectSpread({}, generateDataSkeleton(_schema.items) || {}), _item); | |
| 83 | + | |
| 84 | + var newList = [].concat(_toConsumableArray(displayList), [_objectSpread(_objectSpread({}, newItem), {}, { | |
| 85 | + _active: true | |
| 86 | + })]); | |
| 87 | + var newIndex = newList.length - 1; | |
| 88 | + onItemChange(dataPath, newList); | |
| 89 | + return newIndex; | |
| 90 | + }; | |
| 91 | + | |
| 92 | + var copyItem = function copyItem(idx) { | |
| 93 | + var newItem = cloneDeep(displayList[idx]); | |
| 94 | + delete newItem.id; | |
| 95 | + var newList = [].concat(_toConsumableArray(displayList.slice(0, idx + 1)), [newItem], _toConsumableArray(displayList.slice(idx + 1))); | |
| 96 | + onItemChange(dataPath, JSON.parse(JSON.stringify(newList))); | |
| 97 | + }; | |
| 98 | + | |
| 99 | + var deleteItem = function deleteItem(idx) { | |
| 100 | + // TODO: 删除元素的时候,也需要delete相对于的校验信息(errorFields) | |
| 101 | + // remark: 删除时,不存在的item需要补齐,用null | |
| 102 | + displayList.forEach(function (item) { | |
| 103 | + return delete item.orginIdx; | |
| 104 | + }); | |
| 105 | + var newList = displayList.filter(function (item, kdx) { | |
| 106 | + return kdx !== idx; | |
| 107 | + }); | |
| 108 | + onItemChange(dataPath, newList); | |
| 109 | + removeTouched("".concat(dataPath, "[").concat(idx, "]")); | |
| 110 | + }; | |
| 111 | + | |
| 112 | + var handleMoving = function handleMoving() { | |
| 113 | + if (props.onMove && typeof props.onMove === 'string') { | |
| 114 | + var cb = methods[props.onMove]; | |
| 115 | + | |
| 116 | + if (typeof cb === 'function') { | |
| 117 | + cb(); | |
| 118 | + } | |
| 119 | + } | |
| 120 | + }; // 批量删除的方法 | |
| 121 | + | |
| 122 | + | |
| 123 | + var batchDelete = function batchDelete(ids) { | |
| 124 | + displayList.forEach(function (item) { | |
| 125 | + return delete item.orginIdx; | |
| 126 | + }); | |
| 127 | + var newList = displayList.filter(function (item, kdx) { | |
| 128 | + return !ids.includes(kdx); | |
| 129 | + }); | |
| 130 | + onItemChange(dataPath, newList); | |
| 131 | + (ids || []).forEach(function (id) { | |
| 132 | + removeTouched("".concat(dataPath, "[").concat(id, "]")); | |
| 133 | + }); | |
| 134 | + }; //TODO1: 上线翻页要正确!!现在是错的 | |
| 135 | + | |
| 136 | + | |
| 137 | + var moveItemUp = function moveItemUp(idx) { | |
| 138 | + handleMoving(); | |
| 139 | + if (idx === 0) return; | |
| 140 | + var currentItem = displayList[idx]; | |
| 141 | + var itemAbove = displayList[idx - 1]; | |
| 142 | + var newList = displayList; | |
| 143 | + newList[idx] = itemAbove; | |
| 144 | + newList[idx - 1] = currentItem; | |
| 145 | + onItemChange(dataPath, newList); // TODO: 这块懒了,之后要处理一下 | |
| 146 | + | |
| 147 | + removeTouched("".concat(dataPath, "[").concat(idx, "]")); | |
| 148 | + }; | |
| 149 | + | |
| 150 | + var moveItemDown = function moveItemDown(idx) { | |
| 151 | + handleMoving(); | |
| 152 | + if (idx >= displayList.length - 1) return; | |
| 153 | + var currentItem = displayList[idx]; | |
| 154 | + var itemBelow = displayList[idx + 1]; | |
| 155 | + var newList = displayList; | |
| 156 | + newList[idx] = itemBelow; | |
| 157 | + newList[idx + 1] = currentItem; | |
| 158 | + onItemChange(dataPath, newList); // TODO: 这块懒了,之后要处理一下 | |
| 159 | + | |
| 160 | + removeTouched("".concat(dataPath, "[").concat(idx, "]")); | |
| 161 | + }; | |
| 162 | + | |
| 163 | + var itemSchema = { | |
| 164 | + type: 'object', | |
| 165 | + properties: {}, | |
| 166 | + props: schema.props || {}, | |
| 167 | + $id: schema.$id | |
| 168 | + }; | |
| 169 | + var itemFlatten = { | |
| 170 | + schema: itemSchema, | |
| 171 | + children: children | |
| 172 | + }; | |
| 173 | + | |
| 174 | + var getFieldsProps = function getFieldsProps(idx, extraProps) { | |
| 175 | + return _objectSpread({ | |
| 176 | + _item: itemFlatten, | |
| 177 | + dataIndex: [].concat(_toConsumableArray(dataIndex), [idx]) | |
| 178 | + }, extraProps); | |
| 179 | + }; | |
| 180 | + | |
| 181 | + var displayProps = { | |
| 182 | + displayList: displayList, | |
| 183 | + changeList: changeList, | |
| 184 | + schema: schema, | |
| 185 | + dataPath: dataPath, | |
| 186 | + dataIndex: dataIndex, | |
| 187 | + children: children, | |
| 188 | + deleteItem: deleteItem, | |
| 189 | + batchDelete: batchDelete, | |
| 190 | + addItem: addItem, | |
| 191 | + copyItem: copyItem, | |
| 192 | + moveItemDown: moveItemDown, | |
| 193 | + moveItemUp: moveItemUp, | |
| 194 | + listData: listData, | |
| 195 | + flatten: flatten, | |
| 196 | + errorFields: errorFields, | |
| 197 | + displayType: displayType, | |
| 198 | + getFieldsProps: getFieldsProps | |
| 199 | + }; // 外部定义:添加按钮事件 | |
| 200 | + | |
| 201 | + var onAdd = methods[props.onAdd]; | |
| 202 | + | |
| 203 | + if (isFunction(onAdd)) { | |
| 204 | + displayProps.addItem = function () { | |
| 205 | + return onAdd(function (_item) { | |
| 206 | + return addItem(_item); | |
| 207 | + }, { | |
| 208 | + schema: schema | |
| 209 | + }); | |
| 210 | + }; | |
| 211 | + } | |
| 212 | + | |
| 213 | + if (renderWidget === 'listForMobile') { | |
| 214 | + return /*#__PURE__*/React.createElement(ListForMobile, displayProps); | |
| 215 | + } | |
| 216 | + | |
| 217 | + if (layoutWidgets && layoutWidgets[renderWidget]) { | |
| 218 | + var Component = layoutWidgets[renderWidget]; | |
| 219 | + return /*#__PURE__*/React.createElement(Component, displayProps); | |
| 220 | + } | |
| 221 | + | |
| 222 | + switch (renderWidget) { | |
| 223 | + case 'list1': | |
| 224 | + case 'simpleList': | |
| 225 | + return /*#__PURE__*/React.createElement(SimpleList, displayProps); | |
| 226 | + | |
| 227 | + case 'list2': | |
| 228 | + case 'tableList': | |
| 229 | + return /*#__PURE__*/React.createElement(TableList, displayProps); | |
| 230 | + | |
| 231 | + case 'list3': | |
| 232 | + case 'drawerList': | |
| 233 | + return /*#__PURE__*/React.createElement(DrawerList, displayProps); | |
| 234 | + | |
| 235 | + case 'list4': | |
| 236 | + case 'virtualList': | |
| 237 | + return /*#__PURE__*/React.createElement(VirtualList, displayProps); | |
| 238 | + | |
| 239 | + case 'tabList': | |
| 240 | + return /*#__PURE__*/React.createElement(TabList, displayProps); | |
| 241 | + | |
| 242 | + case 'list0': | |
| 243 | + case 'cardList': | |
| 244 | + default: | |
| 245 | + return /*#__PURE__*/React.createElement(CardList, displayProps); | |
| 246 | + } | |
| 247 | +}; | |
| 248 | + | |
| 249 | +export default RenderList; | |
| \ No newline at end of file | ... | ... |
| 1 | +.fr-container .ant-table-container .field-block { | |
| 2 | + display: none !important; | |
| 3 | +} | |
| 4 | +.fr-container .fr-card-item { | |
| 5 | + border: 0.5px solid rgba(0, 0, 0, 0.1); | |
| 6 | + padding: 10px 0 4px 0; | |
| 7 | + margin-bottom: 8px; | |
| 8 | + position: relative; | |
| 9 | + display: flex; | |
| 10 | +} | |
| 11 | +.fr-container .fr-card-item-row { | |
| 12 | + padding-top: 34px; | |
| 13 | +} | |
| 14 | +.fr-container .fr-card-index { | |
| 15 | + position: absolute; | |
| 16 | + top: 0; | |
| 17 | + left: 0; | |
| 18 | + padding-left: 4px; | |
| 19 | + padding-right: 6px; | |
| 20 | + border-bottom-right-radius: 8px; | |
| 21 | + border-top-left-radius: 3px; | |
| 22 | + background-color: rgba(0, 0, 0, 0.36); | |
| 23 | + font-size: 8px; | |
| 24 | + color: #fff; | |
| 25 | +} | |
| 26 | +.fr-container .fr-card-toolbar { | |
| 27 | + position: absolute; | |
| 28 | + top: 8px; | |
| 29 | + right: 8px; | |
| 30 | + display: flex; | |
| 31 | +} | |
| 32 | +.qx-virtual-searchLine { | |
| 33 | + display: flex; | |
| 34 | + justify-content: space-between; | |
| 35 | + padding: 8px 0; | |
| 36 | +} | |
| 37 | +.qx-virtual-searchLine .ant-input-affix-wrapper-sm { | |
| 38 | + padding: 4px 7px; | |
| 39 | +} | |
| 40 | +.qx-virtualList .ant-btn-sm { | |
| 41 | + padding: 0; | |
| 42 | +} | |
| 43 | +.qx-virtualList .qx-fr-input--readonly { | |
| 44 | + background: none; | |
| 45 | +} | |
| 46 | +.qx-virtualList .ant-select:not(.ant-select-customize-input) .ant-select-selector { | |
| 47 | + border: none; | |
| 48 | +} | |
| 49 | +.qx-virtualList .ant-pagination-total-text { | |
| 50 | + line-height: 32px; | |
| 51 | +} | |
| 52 | +.rowReverse { | |
| 53 | + flex-direction: row-reverse; | |
| 54 | +} | |
| 55 | +.qx-card-mobile .adm-list-item-content-main { | |
| 56 | + font-size: 14px; | |
| 57 | +} | |
| 58 | +.qx-card-mobile .adm-list-default .adm-list-body { | |
| 59 | + border: none; | |
| 60 | +} | |
| 61 | +.qx-card-mobile .adm-list-item { | |
| 62 | + padding-left: 15px; | |
| 63 | +} | |
| 64 | +.qx-card-mobile .adm-list-item .adm-list-item-content { | |
| 65 | + padding-right: 15px; | |
| 66 | +} | |
| 67 | +.qx-card-mobile .adm-collapse-panel-header { | |
| 68 | + margin: 0 15px; | |
| 69 | + height: 40px; | |
| 70 | + background: #f6f7f9; | |
| 71 | + border-radius: 4px 4px 0 0; | |
| 72 | +} | |
| 73 | +.qx-card-mobile .adm-collapse-panel-header .adm-collapse-arrow { | |
| 74 | + font-size: 16px; | |
| 75 | +} | |
| 76 | +.qx-card-mobile .adm-list-item-content { | |
| 77 | + border-radius: 8px 8px 0 0; | |
| 78 | + border-top: none; | |
| 79 | +} | |
| 80 | +.qx-card-mobile .adm-list-item-content .fr-content-column { | |
| 81 | + padding: 0 15px 6px; | |
| 82 | +} | |
| 83 | +.qx-card-mobile-item { | |
| 84 | + border-radius: unset; | |
| 85 | + border-top: none; | |
| 86 | +} | |
| 87 | +.qx-card-mobile .adm-collapse-panel-content .adm-list-item-content-main { | |
| 88 | + padding: 0; | |
| 89 | +} | |
| 90 | +.qx-card-mobile .adm-list-item-content-arrow { | |
| 91 | + font-size: 15px; | |
| 92 | + width: 15px; | |
| 93 | + height: 15px; | |
| 94 | +} | |
| 95 | +.add-button { | |
| 96 | + color: #3499ff; | |
| 97 | + display: inline-block; | |
| 98 | + margin: 15px; | |
| 99 | +} | |
| 100 | +.qx-virtual_full { | |
| 101 | + position: fixed; | |
| 102 | + top: 0; | |
| 103 | + left: 0; | |
| 104 | + bottom: 0; | |
| 105 | + right: 0; | |
| 106 | + z-index: 999; | |
| 107 | + width: 100vw; | |
| 108 | + height: 100vh; | |
| 109 | + overflow: auto; | |
| 110 | + background: #fff; | |
| 111 | +} | |
| 112 | +.qx-virtual_full .qx-virtual-searchLine { | |
| 113 | + padding: 8px; | |
| 114 | +} | ... | ... |
| 1 | +export function isDesignPage() { | |
| 2 | + var href = location.href; | |
| 3 | + var res = false; | |
| 4 | + | |
| 5 | + if (href.indexOf('/app-view/') > -1) { | |
| 6 | + res = true; | |
| 7 | + } else if (href.indexOf('/apps/design') > -1) { | |
| 8 | + res = true; | |
| 9 | + } else if (href.indexOf('/editor/form') > -1) { | |
| 10 | + res = true; | |
| 11 | + } else if (href.indexOf('/editor/setting') > -1) { | |
| 12 | + res = true; | |
| 13 | + } else if (href.indexOf('/editor/view') > -1) { | |
| 14 | + res = true; | |
| 15 | + } else if (href.indexOf('/editor/detail') > -1) { | |
| 16 | + res = true; | |
| 17 | + } else if (href.indexOf('/editor/custom') > -1) { | |
| 18 | + res = true; | |
| 19 | + } else if (href.indexOf('/editor/aggregation') > -1) { | |
| 20 | + res = true; | |
| 21 | + } else if (href.indexOf('/component') > -1) { | |
| 22 | + res = true; | |
| 23 | + } else if (href.indexOf('/editor/chart') > -1) { | |
| 24 | + res = true; | |
| 25 | + } else if (href.indexOf('businessCode=design') > -1) { | |
| 26 | + res = true; | |
| 27 | + } else if (href.indexOf('refer=/app-view/') > -1) { | |
| 28 | + res = true; | |
| 29 | + } else if (href.indexOf('/datacube/edit') > -1) { | |
| 30 | + res = true; | |
| 31 | + } else if (href.indexOf('/datacube/config') > -1) { | |
| 32 | + res = true; | |
| 33 | + } else if (href.indexOf('/datacube/design') > -1) { | |
| 34 | + res = true; | |
| 35 | + } | |
| 36 | + | |
| 37 | + return res; | |
| 38 | +} | |
| \ No newline at end of file | ... | ... |
| 1 | +function _extends() { _extends = Object.assign || 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); } | |
| 2 | + | |
| 3 | +import React from 'react'; | |
| 4 | +import Core from '../index'; | |
| 5 | + | |
| 6 | +var RenderObject = function RenderObject(_ref) { | |
| 7 | + var _ref$children = _ref.children, | |
| 8 | + children = _ref$children === void 0 ? [] : _ref$children, | |
| 9 | + _ref$dataIndex = _ref.dataIndex, | |
| 10 | + dataIndex = _ref$dataIndex === void 0 ? [] : _ref$dataIndex, | |
| 11 | + displayType = _ref.displayType, | |
| 12 | + labelAlign = _ref.labelAlign, | |
| 13 | + hideTitle = _ref.hideTitle; | |
| 14 | + return /*#__PURE__*/React.createElement(React.Fragment, null, children.map(function (child, i) { | |
| 15 | + var FRProps = { | |
| 16 | + displayType: displayType, | |
| 17 | + labelAlign: labelAlign, | |
| 18 | + id: child, | |
| 19 | + dataIndex: dataIndex, | |
| 20 | + hideTitle: hideTitle | |
| 21 | + }; | |
| 22 | + return /*#__PURE__*/React.createElement(Core, _extends({ | |
| 23 | + key: i.toString() | |
| 24 | + }, FRProps)); | |
| 25 | + })); | |
| 26 | +}; | |
| 27 | + | |
| 28 | +export default RenderObject; | |
| \ No newline at end of file | ... | ... |
| 1 | +import React from 'react'; | |
| 2 | +import { translateMessage } from '../../utils'; | |
| 3 | +import "./ErrorMessage.css"; | |
| 4 | + | |
| 5 | +var ErrorMessage = function ErrorMessage(_ref) { | |
| 6 | + var message = _ref.message, | |
| 7 | + schema = _ref.schema, | |
| 8 | + softHidden = _ref.softHidden, | |
| 9 | + hardHidden = _ref.hardHidden; | |
| 10 | + var msg = ''; | |
| 11 | + if (typeof message === 'string') msg = message; | |
| 12 | + | |
| 13 | + if (Array.isArray(message)) { | |
| 14 | + msg = message[0] || ''; | |
| 15 | + } | |
| 16 | + | |
| 17 | + msg = translateMessage(msg, schema); // 无错误信息不渲染 msg 元素占位,表单之间的间隔通过 field-block 元素分隔 | |
| 18 | + | |
| 19 | + if (!msg) return null; | |
| 20 | + if (hardHidden) return /*#__PURE__*/React.createElement("div", { | |
| 21 | + className: "error-message" | |
| 22 | + }); | |
| 23 | + return !msg && softHidden ? null : /*#__PURE__*/React.createElement("div", { | |
| 24 | + className: "error-message" | |
| 25 | + }, msg); | |
| 26 | +}; | |
| 27 | + | |
| 28 | +export default ErrorMessage; | |
| \ No newline at end of file | ... | ... |
| 1 | +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; } | |
| 2 | + | |
| 3 | +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(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; } | |
| 4 | + | |
| 5 | +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | |
| 6 | + | |
| 7 | +import React, { Suspense } from 'react'; | |
| 8 | +import { transformProps } from '../../createWidget'; | |
| 9 | +import { useStore, useTools } from '../../hooks'; | |
| 10 | +import { extraSchemaList, getWidgetName } from '../../mapping'; | |
| 11 | +import { isListType, isObject, isObjType } from '../../utils'; | |
| 12 | + | |
| 13 | +var ErrorSchema = function ErrorSchema(schema) { | |
| 14 | + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", { | |
| 15 | + style: { | |
| 16 | + color: 'red' | |
| 17 | + } | |
| 18 | + }, "schema\u672A\u5339\u914D\u5230\u5C55\u793A\u7EC4\u4EF6\uFF1A"), /*#__PURE__*/React.createElement("div", null, JSON.stringify(schema))); | |
| 19 | +}; | |
| 20 | + | |
| 21 | +var ExtendedWidget = function ExtendedWidget(_ref) { | |
| 22 | + var schema = _ref.schema, | |
| 23 | + onChange = _ref.onChange, | |
| 24 | + value = _ref.value, | |
| 25 | + dependValues = _ref.dependValues, | |
| 26 | + children = _ref.children, | |
| 27 | + onItemChange = _ref.onItemChange, | |
| 28 | + formData = _ref.formData, | |
| 29 | + getValue = _ref.getValue, | |
| 30 | + readOnly = _ref.readOnly, | |
| 31 | + dataPath = _ref.dataPath, | |
| 32 | + disabled = _ref.disabled, | |
| 33 | + dataIndex = _ref.dataIndex, | |
| 34 | + watch = _ref.watch, | |
| 35 | + hasError = _ref.hasError; | |
| 36 | + | |
| 37 | + var _useTools = useTools(), | |
| 38 | + widgets = _useTools.widgets, | |
| 39 | + mapping = _useTools.mapping, | |
| 40 | + setValueByPath = _useTools.setValueByPath, | |
| 41 | + getSchemaByPath = _useTools.getSchemaByPath, | |
| 42 | + setSchemaByPath = _useTools.setSchemaByPath, | |
| 43 | + setSchema = _useTools.setSchema, | |
| 44 | + setValues = _useTools.setValues, | |
| 45 | + getValues = _useTools.getValues, | |
| 46 | + resetFields = _useTools.resetFields, | |
| 47 | + setErrorFields = _useTools.setErrorFields, | |
| 48 | + removeErrorField = _useTools.removeErrorField, | |
| 49 | + validateFields = _useTools.validateFields, | |
| 50 | + isFieldTouched = _useTools.isFieldTouched, | |
| 51 | + isFieldsTouched = _useTools.isFieldsTouched, | |
| 52 | + isFieldValidating = _useTools.isFieldValidating, | |
| 53 | + scrollToPath = _useTools.scrollToPath, | |
| 54 | + getFieldError = _useTools.getFieldError, | |
| 55 | + getFieldsError = _useTools.getFieldsError, | |
| 56 | + setFields = _useTools.setFields; | |
| 57 | + | |
| 58 | + var _useStore = useStore(), | |
| 59 | + globalProps = _useStore.globalProps; // if (isObjType(schema)) { | |
| 60 | + // return <Map value={value} onChange={onChange} children={children} />; | |
| 61 | + // } | |
| 62 | + // if (isListType(schema)) { | |
| 63 | + // return 'haha'; | |
| 64 | + // } | |
| 65 | + // return <Input value={value} onChange={e => onChange(e.target.value)} />; | |
| 66 | + // TODO: calc widget, better way? | |
| 67 | + // let widgetName = useMemo(() => getWidgetName(schema, mapping), [ | |
| 68 | + // JSON.stringify(schema), | |
| 69 | + // ]); | |
| 70 | + | |
| 71 | + | |
| 72 | + var widgetName = getWidgetName(schema, mapping); | |
| 73 | + var customName = schema.widget || schema['ui:widget']; | |
| 74 | + | |
| 75 | + if (customName && widgets[customName]) { | |
| 76 | + widgetName = customName; | |
| 77 | + } | |
| 78 | + | |
| 79 | + var readOnlyName = schema.readOnlyWidget || 'html'; | |
| 80 | + | |
| 81 | + if (readOnly && !isObjType(schema) && !isListType(schema)) { | |
| 82 | + widgetName = readOnlyName; | |
| 83 | + } | |
| 84 | + | |
| 85 | + if (!widgetName) { | |
| 86 | + widgetName = 'input'; | |
| 87 | + return /*#__PURE__*/React.createElement(ErrorSchema, { | |
| 88 | + schema: schema | |
| 89 | + }); | |
| 90 | + } | |
| 91 | + | |
| 92 | + var Widget = widgets[widgetName] || widgets['html']; | |
| 93 | + var extraSchema = extraSchemaList[widgetName]; // console.log(hasError, '----------'); | |
| 94 | + | |
| 95 | + var widgetProps = _objectSpread(_objectSpread({ | |
| 96 | + schema: _objectSpread(_objectSpread({}, schema), extraSchema), | |
| 97 | + onChange: onChange, | |
| 98 | + value: value, | |
| 99 | + children: children, | |
| 100 | + disabled: disabled, | |
| 101 | + readOnly: readOnly, | |
| 102 | + // dataPath, | |
| 103 | + // dataIndex, | |
| 104 | + className: hasError ? 'fr-item-status-error' : '' | |
| 105 | + }, schema.props), globalProps); | |
| 106 | + | |
| 107 | + if (schema.type === 'string' && typeof schema.max === 'number') { | |
| 108 | + widgetProps.maxLength = schema.max; | |
| 109 | + } | |
| 110 | + | |
| 111 | + ['title', 'placeholder', 'disabled', 'format'].forEach(function (key) { | |
| 112 | + if (schema[key]) { | |
| 113 | + widgetProps[key] = schema[key]; | |
| 114 | + } | |
| 115 | + }); | |
| 116 | + | |
| 117 | + if (schema.props) { | |
| 118 | + widgetProps = _objectSpread(_objectSpread({}, widgetProps), schema.props); | |
| 119 | + } | |
| 120 | + | |
| 121 | + Object.keys(schema).forEach(function (key) { | |
| 122 | + if (typeof key === 'string' && key.toLowerCase().indexOf('props') > -1 && key.length > 5) { | |
| 123 | + widgetProps[key] = schema[key]; | |
| 124 | + } | |
| 125 | + }); // 支持 addonAfter 为自定义组件的情况 | |
| 126 | + | |
| 127 | + if (isObject(widgetProps.addonAfter) && widgetProps.addonAfter.widget) { | |
| 128 | + var AddonAfterWidget = widgets[widgetProps.addonAfter.widget]; | |
| 129 | + widgetProps.addonAfter = /*#__PURE__*/React.createElement(AddonAfterWidget, schema); | |
| 130 | + } | |
| 131 | + | |
| 132 | + var hideSelf = function hideSelf() { | |
| 133 | + var hidden = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; | |
| 134 | + setSchemaByPath(schema.$id, { | |
| 135 | + hidden: hidden | |
| 136 | + }); | |
| 137 | + }; // 避免传组件不接受的props,按情况传多余的props | |
| 138 | + | |
| 139 | + | |
| 140 | + widgetProps.addons = { | |
| 141 | + dependValues: dependValues, | |
| 142 | + onItemChange: onItemChange, | |
| 143 | + getValue: getValue, | |
| 144 | + formData: formData, | |
| 145 | + dataPath: dataPath, | |
| 146 | + dataIndex: dataIndex, | |
| 147 | + setValueByPath: setValueByPath, | |
| 148 | + setValue: setValueByPath, | |
| 149 | + getSchemaByPath: getSchemaByPath, | |
| 150 | + setSchemaByPath: setSchemaByPath, | |
| 151 | + setSchema: setSchema, | |
| 152 | + setValues: setValues, | |
| 153 | + getValues: getValues, | |
| 154 | + resetFields: resetFields, | |
| 155 | + setErrorFields: setErrorFields, | |
| 156 | + removeErrorField: removeErrorField, | |
| 157 | + validateFields: validateFields, | |
| 158 | + isFieldTouched: isFieldTouched, | |
| 159 | + isFieldsTouched: isFieldsTouched, | |
| 160 | + isFieldValidating: isFieldValidating, | |
| 161 | + scrollToPath: scrollToPath, | |
| 162 | + getFieldError: getFieldError, | |
| 163 | + getFieldsError: getFieldsError, | |
| 164 | + setFields: setFields, | |
| 165 | + hideSelf: hideSelf, | |
| 166 | + watch: watch | |
| 167 | + }; | |
| 168 | + var finalProps = transformProps(widgetProps); | |
| 169 | + return /*#__PURE__*/React.createElement(Suspense, { | |
| 170 | + fallback: /*#__PURE__*/React.createElement("div", null) | |
| 171 | + }, /*#__PURE__*/React.createElement("div", { | |
| 172 | + className: "fr-item-wrapper" | |
| 173 | + }, /*#__PURE__*/React.createElement(Widget, finalProps))); | |
| 174 | +}; | |
| 175 | + | |
| 176 | +function getValue(_data, key) { | |
| 177 | + if (!key) { | |
| 178 | + return null; | |
| 179 | + } | |
| 180 | + | |
| 181 | + var keys = key.split('.'); | |
| 182 | + return keys.reduce(function (prev, cur) { | |
| 183 | + if (cur === keys[keys.length - 1]) { | |
| 184 | + return prev[cur]; | |
| 185 | + } else { | |
| 186 | + return prev[cur] || {}; | |
| 187 | + } | |
| 188 | + }, _data); | |
| 189 | +} | |
| 190 | + | |
| 191 | +var areEqual = function areEqual(prev, current) { | |
| 192 | + var _prev$schema, _prev$schema$props; | |
| 193 | + | |
| 194 | + if (prev.schema && current.schema) { | |
| 195 | + if (prev.schema.$id === '#') { | |
| 196 | + return false; | |
| 197 | + } // if (prev.schema.hidden && current.schema.hidden) { | |
| 198 | + // return true; | |
| 199 | + // } | |
| 200 | + | |
| 201 | + } | |
| 202 | + | |
| 203 | + if (prev.readOnly !== current.readOnly) { | |
| 204 | + return false; | |
| 205 | + } | |
| 206 | + | |
| 207 | + if (prev.hasError !== current.hasError) { | |
| 208 | + return false; | |
| 209 | + } | |
| 210 | + | |
| 211 | + if (prev.disabled !== current.disabled) { | |
| 212 | + return false; | |
| 213 | + } | |
| 214 | + | |
| 215 | + if (JSON.stringify(prev.dependValues) !== JSON.stringify(current.dependValues)) { | |
| 216 | + return false; | |
| 217 | + } | |
| 218 | + | |
| 219 | + if ((prev.schema.widget === 'virtualList' || prev.schema.widget === 'relSelector') && ((_prev$schema = prev.schema) === null || _prev$schema === void 0 ? void 0 : (_prev$schema$props = _prev$schema.props) === null || _prev$schema$props === void 0 ? void 0 : _prev$schema$props.mode) === 'TAG' && JSON.stringify(getValue(prev.formData, prev.schema.relformKey)) !== JSON.stringify(getValue(current.formData, current.schema.relformKey))) { | |
| 220 | + return false; | |
| 221 | + } | |
| 222 | + | |
| 223 | + if (isObjType(prev.schema) && isObjType(current.schema)) { | |
| 224 | + return false; | |
| 225 | + } | |
| 226 | + | |
| 227 | + if (JSON.stringify(prev.value) === JSON.stringify(current.value) && JSON.stringify(prev.schema) === JSON.stringify(current.schema)) { | |
| 228 | + return true; | |
| 229 | + } | |
| 230 | + | |
| 231 | + return false; | |
| 232 | +}; | |
| 233 | + | |
| 234 | +export default /*#__PURE__*/React.memo(ExtendedWidget, areEqual); // export default ExtendedWidget; | |
| \ No newline at end of file | ... | ... |
| 1 | +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | |
| 2 | + | |
| 3 | +import React from 'react'; | |
| 4 | +import { useTools } from '../../hooks'; | |
| 5 | +import "./Extra.css"; | |
| 6 | + | |
| 7 | +var Extra = function Extra(_ref) { | |
| 8 | + var schema = _ref.schema; | |
| 9 | + var extra = schema.extra; | |
| 10 | + | |
| 11 | + var _useTools = useTools(), | |
| 12 | + widgets = _useTools.widgets; | |
| 13 | + | |
| 14 | + if (!extra) return null; // widget 这个api也可以不对外 | |
| 15 | + | |
| 16 | + var widgetName = extra.widget; | |
| 17 | + var Widget = widgets[widgetName]; | |
| 18 | + if (Widget) return /*#__PURE__*/React.createElement(Widget, { | |
| 19 | + schema: schema | |
| 20 | + }); | |
| 21 | + var __html = ''; | |
| 22 | + | |
| 23 | + if (typeof extra === 'string') { | |
| 24 | + __html = extra; | |
| 25 | + } // 内部BU使用的口子,这个api不对外,也没有必要 | |
| 26 | + | |
| 27 | + | |
| 28 | + if (_typeof(extra) === 'object' && extra.text) { | |
| 29 | + __html = extra.text; | |
| 30 | + } | |
| 31 | + | |
| 32 | + return __html && /*#__PURE__*/React.createElement("div", { | |
| 33 | + className: "fr-form-item-extra", | |
| 34 | + dangerouslySetInnerHTML: { | |
| 35 | + __html: __html | |
| 36 | + } | |
| 37 | + }); | |
| 38 | +}; | |
| 39 | + | |
| 40 | +export default Extra; | |
| \ No newline at end of file | ... | ... |
| 1 | +import "antd/es/tooltip/style"; | |
| 2 | +import _Tooltip from "antd/es/tooltip"; | |
| 3 | +import React from 'react'; | |
| 4 | +import { useStore2, useTools } from '../../hooks'; | |
| 5 | +import { isCheckBoxType } from '../../utils'; | |
| 6 | + | |
| 7 | +var Description = function Description(_ref) { | |
| 8 | + var displayType = _ref.displayType, | |
| 9 | + schema = _ref.schema; | |
| 10 | + var description = schema.description, | |
| 11 | + descType = schema.descType, | |
| 12 | + descWidget = schema.descWidget; | |
| 13 | + if (!description && !descWidget) return null; | |
| 14 | + | |
| 15 | + var _useTools = useTools(), | |
| 16 | + widgets = _useTools.widgets; | |
| 17 | + | |
| 18 | + var _description = typeof description === 'string' && /(^<|\/>)/.test(description) ? /*#__PURE__*/React.createElement("div", { | |
| 19 | + dangerouslySetInnerHTML: { | |
| 20 | + __html: description | |
| 21 | + } | |
| 22 | + }) : description; | |
| 23 | + | |
| 24 | + var RenderDesc = function RenderDesc() { | |
| 25 | + var Widget = widgets[schema.descWidget]; | |
| 26 | + | |
| 27 | + if (Widget) { | |
| 28 | + return /*#__PURE__*/React.createElement(Widget, { | |
| 29 | + schema: schema | |
| 30 | + }); | |
| 31 | + } | |
| 32 | + | |
| 33 | + return null; | |
| 34 | + }; | |
| 35 | + | |
| 36 | + switch (displayType) { | |
| 37 | + case 'row': | |
| 38 | + if (descType === 'widget') { | |
| 39 | + return /*#__PURE__*/React.createElement(RenderDesc, null); | |
| 40 | + } | |
| 41 | + | |
| 42 | + return /*#__PURE__*/React.createElement(_Tooltip, { | |
| 43 | + title: _description | |
| 44 | + }, /*#__PURE__*/React.createElement("i", { | |
| 45 | + className: "fr-tooltip-icon" | |
| 46 | + })); | |
| 47 | + | |
| 48 | + case 'inline': | |
| 49 | + return null; | |
| 50 | + | |
| 51 | + default: | |
| 52 | + if (descType === 'widget') { | |
| 53 | + return /*#__PURE__*/React.createElement(RenderDesc, null); | |
| 54 | + } | |
| 55 | + | |
| 56 | + if (descType === 'icon') { | |
| 57 | + return /*#__PURE__*/React.createElement(_Tooltip, { | |
| 58 | + title: _description | |
| 59 | + }, /*#__PURE__*/React.createElement("i", { | |
| 60 | + className: "fr-tooltip-icon" | |
| 61 | + })); | |
| 62 | + } | |
| 63 | + | |
| 64 | + return /*#__PURE__*/React.createElement("span", { | |
| 65 | + className: "fr-desc ml2", | |
| 66 | + title: description | |
| 67 | + }, "( ".concat(description, " )")); | |
| 68 | + } | |
| 69 | +}; | |
| 70 | + | |
| 71 | +var Title = function Title(_ref2) { | |
| 72 | + var labelClass = _ref2.labelClass, | |
| 73 | + labelStyle = _ref2.labelStyle, | |
| 74 | + schema = _ref2.schema, | |
| 75 | + displayType = _ref2.displayType, | |
| 76 | + renderTitle = _ref2.renderTitle, | |
| 77 | + globalRequiredMark = _ref2.requiredMark; | |
| 78 | + | |
| 79 | + var _useStore = useStore2(), | |
| 80 | + globalDisplayType = _useStore.displayType, | |
| 81 | + readOnly = _useStore.readOnly, | |
| 82 | + colon = _useStore.colon; | |
| 83 | + | |
| 84 | + var title = schema.title, | |
| 85 | + required = schema.required, | |
| 86 | + type = schema.type, | |
| 87 | + schemaRequiredMark = schema.requiredMark; | |
| 88 | + var isObjType = type === 'object'; | |
| 89 | + | |
| 90 | + var _displayType = schema.displayType || displayType || globalDisplayType || 'column'; | |
| 91 | + | |
| 92 | + if (renderTitle) { | |
| 93 | + return renderTitle({ | |
| 94 | + labelClass: labelClass, | |
| 95 | + labelStyle: labelStyle, | |
| 96 | + schema: schema, | |
| 97 | + displayType: _displayType, | |
| 98 | + readOnly: readOnly, | |
| 99 | + colon: colon | |
| 100 | + }); | |
| 101 | + } | |
| 102 | + | |
| 103 | + var requiredMark = typeof schemaRequiredMark === 'undefined' ? globalRequiredMark : schemaRequiredMark; // 左侧的的 * 号提示 | |
| 104 | + | |
| 105 | + var TitleRequiredMark = null; // 左侧的 option 提示 | |
| 106 | + | |
| 107 | + var TitleTextMark = null; | |
| 108 | + | |
| 109 | + if (required) { | |
| 110 | + /** | |
| 111 | + * ant-design requiredMark 实现 | |
| 112 | + * https://ant.design/components/form-cn/ | |
| 113 | + */ | |
| 114 | + if (requiredMark !== false && requiredMark !== 'optional') { | |
| 115 | + TitleRequiredMark = /*#__PURE__*/React.createElement("span", { | |
| 116 | + className: "fr-label-required" | |
| 117 | + }, " *"); | |
| 118 | + TitleTextMark = null; | |
| 119 | + } | |
| 120 | + } else { | |
| 121 | + if (requiredMark === 'optional') { | |
| 122 | + TitleRequiredMark = null; | |
| 123 | + TitleTextMark = /*#__PURE__*/React.createElement("span", { | |
| 124 | + className: "fr-label-required-text" | |
| 125 | + }, "\uFF08\u53EF\u9009\uFF09"); | |
| 126 | + } | |
| 127 | + } // requiredMark 为 false 不展示必填符号 | |
| 128 | + | |
| 129 | + | |
| 130 | + if (requiredMark === false) { | |
| 131 | + TitleRequiredMark = null; | |
| 132 | + TitleTextMark = null; | |
| 133 | + } | |
| 134 | + | |
| 135 | + return /*#__PURE__*/React.createElement("div", { | |
| 136 | + className: labelClass, | |
| 137 | + style: labelStyle | |
| 138 | + }, title ? /*#__PURE__*/React.createElement("label", { | |
| 139 | + className: "fr-label-title ".concat(isCheckBoxType(schema, readOnly) || _displayType === 'column' || !colon ? 'no-colon' : '') // checkbox不带冒号 | |
| 140 | + , | |
| 141 | + title: title | |
| 142 | + }, TitleRequiredMark, /*#__PURE__*/React.createElement("span", { | |
| 143 | + className: "".concat(isObjType ? 'b' : '', " ").concat(_displayType === 'column' ? 'flex-none' : '') | |
| 144 | + }, /*#__PURE__*/React.createElement("span", { | |
| 145 | + dangerouslySetInnerHTML: { | |
| 146 | + __html: title | |
| 147 | + } | |
| 148 | + })), TitleTextMark, /*#__PURE__*/React.createElement(Description, { | |
| 149 | + schema: schema, | |
| 150 | + displayType: _displayType | |
| 151 | + })) : null); | |
| 152 | +}; | |
| 153 | + | |
| 154 | +export default Title; | |
| \ No newline at end of file | ... | ... |