UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

415 lines (402 loc) 13 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _sortable = require("@dnd-kit/sortable"); var _classnames = _interopRequireDefault(require("classnames")); var _lodash = require("lodash"); var _react = _interopRequireWildcard(require("react")); var _checkbox = _interopRequireDefault(require("../../../checkbox")); var _iconFont = _interopRequireDefault(require("../../../icon-font")); var _input = _interopRequireDefault(require("../../../input")); var _lmDrag = _interopRequireDefault(require("../../../lm-drag")); var _slider = _interopRequireDefault(require("../../../slider")); var _tooltip = _interopRequireDefault(require("../../../tooltip")); // import Radio from '../../../radio' // import Large from '../../images/large.png' // import Middle from '../../images/middle.png' // import Size from '../../images/small.png' const { LmToolTip } = _tooltip.default; const Item = /*#__PURE__*/_react.default.memo(({ item = {}, listeners, toggleShow, clearFiexd, addFiexd, instance, isSearch, isDragging }) => { const { dataIndex } = item || {}; const { locale } = instance; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { className: (0, _classnames.default)('lm_custom_item', isDragging && 'drag') }, /*#__PURE__*/_react.default.createElement(_checkbox.default, { checked: item?.show !== false, disabled: item?.behaviorNoCache, onClick: () => toggleShow(item?.show === false, dataIndex) // onChange={(e) => toggleShow(e.target.checked, dataIndex)} , className: "filter_item-content" }, item?.title), /*#__PURE__*/_react.default.createElement("div", { className: "lm_custom_item_operate" }, item?.fixed && /*#__PURE__*/_react.default.createElement(LmToolTip, { title: locale.noFixed }, /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "icon-quxiaoguding", className: (0, _classnames.default)('lm_custom_icon', 'hover_show'), onClick: e => { e.stopPropagation(); clearFiexd(dataIndex); } })), !item?.fixed && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(LmToolTip, { title: locale.fixedLeft }, /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "icon-zhiding", className: (0, _classnames.default)('lm_custom_icon', 'icon_top', 'hover_show'), onClick: e => { e.stopPropagation(); addFiexd(dataIndex, 'left'); } })), /*#__PURE__*/_react.default.createElement(LmToolTip, { title: locale.fixedRight }, /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "icon-zhidi", className: (0, _classnames.default)('lm_custom_icon', 'icon_bottom', 'hover_show'), onClick: e => { e.stopPropagation(); addFiexd(dataIndex, 'right'); } }))), !isSearch && /*#__PURE__*/_react.default.createElement(LmToolTip, { title: locale.sort }, /*#__PURE__*/_react.default.createElement(_iconFont.default, (0, _extends2.default)({ type: "icon-a-tongyongaAtuodong", className: "lm_custom_icon sort_item" }, listeners)))))); }); const List = /*#__PURE__*/_react.default.memo(({ options = [], instance, isSearch }) => { const { state, dispatch } = instance; const { columns: localColumns } = state; const handleMove = (activeItem, overItem) => { const oldIndex = localColumns.findIndex(s => s.dataIndex === activeItem.dataIndex); const newIndex = localColumns.findIndex(s => s.dataIndex === overItem.dataIndex); const res = (0, _sortable.arrayMove)(localColumns, oldIndex, newIndex).map((item, index) => ({ ...item, order: index })); dispatch({ type: 'changeColumns', columns: res }); }; const toggleShow = (value, id) => { const result = localColumns.map(item => { if (item.dataIndex === id) { return { ...item, show: item?.show === false }; } return { ...item }; }); dispatch({ type: 'changeColumns', columns: result }); }; /** 添加取消固定后重新排序 */ const reSortColumns = (columns = []) => { const leftSortItem = []; const rigthSortItem = []; const items = []; columns.forEach(item => { if (item?.fixed === 'right') { rigthSortItem.push(item); } else if (!item?.fixed) { items.push(item); } else { leftSortItem.push(item); } }); return [...leftSortItem, ...items, ...rigthSortItem].map((item, index) => ({ ...item, order: index, colSort: index })); }; /** 取消固定 */ const clearFiexd = id => { const resultColumns = localColumns.map(item => { if (item.dataIndex === id) { return { ...item, fixed: undefined }; } return { ...item }; }); dispatch({ type: 'changeColumns', columns: reSortColumns(resultColumns) }); }; /** 添加左右固定 */ const addFiexd = (id, type) => { const resultColumns = localColumns.map(item => { if (item.dataIndex === id) { return { ...item, fixed: type }; } return { ...item }; }); dispatch({ type: 'changeColumns', columns: reSortColumns(resultColumns) }); }; return /*#__PURE__*/_react.default.createElement("div", { className: "drag_scroll" }, /*#__PURE__*/_react.default.createElement(_lmDrag.default, { options: options, rowKey: "dataIndex", move: handleMove, activationConstraint: { delay: 0 } }, ({ item, listeners, index, isDragging }) => /*#__PURE__*/_react.default.createElement(Item, { key: item?.dataIndex || index, item: item, instance: instance, listeners: listeners, toggleShow: toggleShow, clearFiexd: clearFiexd, addFiexd: addFiexd, isSearch: isSearch, isDragging: isDragging }))); }); // const TableSize = React.memo(({ instance }: ComponentProps) => { // const { state, dispatch, locale } = instance // const { size } = state // const getDefaultSize = () => (['small', 'middle', 'large'].includes(size) ? size : 'middle') // const optionsWithDisabled = [ // { label: locale.sizeSmall, value: 'small', img: Size }, // { label: locale.sizeDefault, value: 'middle', img: Middle }, // { label: locale.sizeLarge, value: 'large', img: Large }, // ] // const handleChange = (val) => { // dispatch({ type: 'changeSize', size: val }) // } // return ( // <div className="lm_custom_option_group_size"> // <div className="group_title">{locale.sizeTitle}</div> // <Radio.Group // onChange={(e) => handleChange(e.target.value)} // className="lm_size_radio_group" // value={getDefaultSize()} // > // {optionsWithDisabled.map((item) => { // return ( // <div className="lm_custom_size_warp" key={item.value} onClick={() => handleChange(item.value)}> // <img src={item.img} alt="" /> // <Radio value={item.value}>{item.label}</Radio> // </div> // ) // })} // </Radio.Group> // </div> // ) // }) const TablePreviewSize = ({ instance }) => { const { state, dispatch, locale } = instance; const { previewSize } = state; const marks = { 40: ' ', 64: ' ', 80: ' ', 96: ' ' }; const handleChange = val => { dispatch({ type: 'changePreviewSize', previewSize: val }); }; return /*#__PURE__*/_react.default.createElement("div", { className: "lm_custom_option_group_preview_size" }, /*#__PURE__*/_react.default.createElement("div", { className: "group_title" }, locale.previewSize, "\uFF1A", `${previewSize}x${previewSize}`), /*#__PURE__*/_react.default.createElement("div", { className: "lm_custom_preview_size_wrapper" }, /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "icon-tu", className: "lm_custom_preview_size_prefix" }), /*#__PURE__*/_react.default.createElement(_slider.default, { className: "lm_custom_preview_size_slider", min: 40, max: 96, marks: marks, onChange: handleChange, value: previewSize }), /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "icon-tu", className: "lm_custom_preview_size_suffix" }))); }; const TableConfig = /*#__PURE__*/_react.default.memo(({ instance }) => { const [searchValue, setSearchValue] = (0, _react.useState)(''); const { state, columns, dispatch, locale, onReset, enablePreviewSize } = instance; const { columns: localColumns } = state; const sortMenu = (0, _react.useMemo)(() => { const cloneCol = (0, _lodash.cloneDeep)(localColumns)?.filter(item => { return (0, _lodash.isFunction)(item.title) || item.title?.$$typeof ? true : item.title?.indexOf(searchValue) > -1; }); const leftSortItem = []; const rigthSortItem = []; const items = []; cloneCol?.forEach((item, idx) => { if (!item.dataIndex) { item.dataIndex = item.key || item.title || idx; } if (item?.fixed === 'right') { rigthSortItem.push(item); } else if (!item?.fixed) { items.push(item); } else { leftSortItem.push(item); } }); return { leftSortItem, rigthSortItem, items }; }, [localColumns, searchValue]); const isCheckAll = (0, _react.useMemo)(() => { const showLength = localColumns.filter(item => item.show !== false); return { indeterminate: !!(showLength?.length && showLength.length !== localColumns.length), checkAll: showLength.length === localColumns.length }; }, [localColumns]); /** 切换是否全选 */ const onCheckAllChange = () => { const resultColumns = localColumns.map(item => { return { ...item, show: !isCheckAll.checkAll }; }); dispatch({ type: 'changeColumns', columns: resultColumns }); }; const resetChangeColumns = () => { dispatch({ type: 'changeColumns', columns }); onReset?.({ type: 'table' }); }; return /*#__PURE__*/_react.default.createElement("div", { className: "lm_custom_option_columns" }, enablePreviewSize && /*#__PURE__*/_react.default.createElement(TablePreviewSize, { instance: instance }), /*#__PURE__*/_react.default.createElement("div", { className: "group_title" }, locale.columnTitle), /*#__PURE__*/_react.default.createElement("div", { className: "global_search" }, /*#__PURE__*/_react.default.createElement(_input.default, { placeholder: locale.placeholder, value: searchValue, onChange: e => setSearchValue(e.target.value), prefix: /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "icon-sousuo" }) })), /*#__PURE__*/_react.default.createElement("div", { className: "global_setting" }, /*#__PURE__*/_react.default.createElement(_checkbox.default, { indeterminate: isCheckAll.indeterminate, onClick: onCheckAllChange, checked: isCheckAll.checkAll }, locale.selectAll), /*#__PURE__*/_react.default.createElement("span", { onClick: resetChangeColumns }, locale.reset)), !!sortMenu.leftSortItem?.length && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("label", { className: "fixed_title" }, locale.fixedLeft), /*#__PURE__*/_react.default.createElement(List, { key: "1", instance: instance, options: sortMenu.leftSortItem, isSearch: !!searchValue })), !!sortMenu.items?.length && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("label", { className: "fixed_title" }, locale.noFixed), /*#__PURE__*/_react.default.createElement(List, { key: "2", instance: instance, options: sortMenu.items, isSearch: !!searchValue })), !!sortMenu.rigthSortItem?.length && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("label", { className: "fixed_title" }, locale.fixedRight), /*#__PURE__*/_react.default.createElement(List, { key: "3", instance: instance, options: sortMenu.rigthSortItem, isSearch: !!searchValue }))); }); var _default = TableConfig; exports.default = _default;