UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

652 lines (651 loc) 34.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CardsRenderer = void 0; var tslib_1 = require("tslib"); var react_1 = (0, tslib_1.__importDefault)(require("react")); var react_dom_1 = require("react-dom"); var factory_1 = require("../factory"); var Button_1 = (0, tslib_1.__importDefault)(require("../components/Button")); var Checkbox_1 = (0, tslib_1.__importDefault)(require("../components/Checkbox")); var list_1 = require("../store/list"); var helper_1 = require("../utils/helper"); var tpl_builtin_1 = require("../utils/tpl-builtin"); var sortablejs_1 = (0, tslib_1.__importDefault)(require("sortablejs")); var tpl_1 = require("../utils/tpl"); var icons_1 = require("../components/icons"); var InfinteSroll_1 = (0, tslib_1.__importDefault)(require("./Lion/components/InfinteSroll")); var offset_1 = (0, tslib_1.__importDefault)(require("../utils/offset")); var Cards = /** @class */ (function (_super) { (0, tslib_1.__extends)(Cards, _super); function Cards(props) { var _this = _super.call(this, props) || this; _this.updateAutoFillHeightTimes = 0; _this.handleAction = _this.handleAction.bind(_this); _this.handleCheck = _this.handleCheck.bind(_this); _this.handleCheckAll = _this.handleCheckAll.bind(_this); _this.handleQuickChange = _this.handleQuickChange.bind(_this); _this.handleSave = _this.handleSave.bind(_this); _this.handleSaveOrder = _this.handleSaveOrder.bind(_this); _this.reset = _this.reset.bind(_this); _this.dragTipRef = _this.dragTipRef.bind(_this); _this.bodyRef = _this.bodyRef.bind(_this); _this.affixDetect = _this.affixDetect.bind(_this); _this.updateAutoFillHeight = _this.updateAutoFillHeight.bind(_this); _this.itemsRef = _this.itemsRef.bind(_this); _this.renderToolbar = _this.renderToolbar.bind(_this); // this.fixAlignmentLazy = debounce(this.fixAlignment.bind(this), 250, { // trailing: true, // leading: false // }) var store = props.store, selectable = props.selectable, draggable = props.draggable, orderBy = props.orderBy, orderDir = props.orderDir, multiple = props.multiple, hideCheckToggler = props.hideCheckToggler, itemCheckableOn = props.itemCheckableOn, itemDraggableOn = props.itemDraggableOn; store.update({ selectable: selectable, draggable: draggable, orderBy: orderBy, orderDir: orderDir, multiple: multiple, hideCheckToggler: hideCheckToggler, itemCheckableOn: itemCheckableOn, itemDraggableOn: itemDraggableOn }); Cards.syncItems(store, _this.props) && _this.syncSelected(); return _this; } Cards.syncItems = function (store, props, prevProps) { var source = props.source; var value = props.value || props.items; var items = []; var updateItems = false; if (Array.isArray(value) && (!prevProps || (prevProps.value || prevProps.items) !== value)) { items = value; updateItems = true; } else if (typeof source === 'string') { var resolved = (0, tpl_builtin_1.resolveVariableAndFilter)(source, props.data, '| raw'); var prev = prevProps ? (0, tpl_builtin_1.resolveVariableAndFilter)(source, prevProps.data, '| raw') : null; if (prev && prev === resolved) { updateItems = false; } else if (Array.isArray(resolved)) { items = resolved; updateItems = true; } } updateItems && store.initItems(items); typeof props.selected !== 'undefined' && store.updateSelected(props.selected, props.valueField); return updateItems; }; Cards.prototype.componentDidMount = function () { var parent = (0, helper_1.getScrollParent)((0, react_dom_1.findDOMNode)(this)); if (!parent || parent === document.body) { parent = window; } this.parentNode = parent; this.affixDetect(); parent.addEventListener('scroll', this.affixDetect); window.addEventListener('resize', this.affixDetect); this.updateAutoFillHeight(); window.addEventListener('resize', this.updateAutoFillHeight); }; Cards.prototype.componentDidUpdate = function (prevProps) { var props = this.props; var store = props.store; if ((0, helper_1.anyChanged)([ 'selectable', 'draggable', 'orderBy', 'orderDir', 'multiple', 'hideCheckToggler', 'itemCheckableOn', 'itemDraggableOn' ], prevProps, props)) { store.update({ selectable: props.selectable, draggable: props.draggable, orderBy: props.orderBy, orderDir: props.orderDir, multiple: props.multiple, hideCheckToggler: props.hideCheckToggler, itemCheckableOn: props.itemCheckableOn, itemDraggableOn: props.itemDraggableOn }); } if ((0, helper_1.anyChanged)(['source', 'value', 'items'], prevProps, props) || (!props.value && !props.items && (props.data !== prevProps.data || (typeof props.source === 'string' && (0, tpl_builtin_1.isPureVariable)(props.source))))) { Cards.syncItems(store, props, prevProps) && this.syncSelected(); } else if (prevProps.selected !== props.selected) { store.updateSelected(props.selected || [], props.valueField); } }; Cards.prototype.componentWillUnmount = function () { var parent = this.parentNode; parent && parent.removeEventListener('scroll', this.affixDetect); window.removeEventListener('resize', this.affixDetect); window.removeEventListener('resize', this.updateAutoFillHeight); }; // fixAlignment() { // if (!this.props.fixAlignment || this.props.masonryLayout) { // return; // } // const dom = this.body as HTMLElement; // const ns = this.props.classPrefix; // const cards = [].slice.apply(dom.querySelectorAll(`.${ns}Cards-body > div`)); // if (!cards.length) { // return; // } // let maxHeight = cards.reduce((maxHeight:number, item:HTMLElement) => Math.max(item.offsetHeight, maxHeight), 0); // cards.forEach((item: HTMLElement) => item.style.cssText += `min-height: ${maxHeight}px;`); // } Cards.prototype.bodyRef = function (ref) { this.body = ref; }; Cards.prototype.itemsRef = function (ref) { if (ref) { // this.unSensor = resizeSensor(ref.parentNode as HTMLElement, this.fixAlignmentLazy); } else { this.unSensor && this.unSensor(); // @ts-ignore; delete this.unSensor; } }; Cards.prototype.affixDetect = function () { var _a, _b; if (!this.props.affixHeader || !this.body) { return; } var ns = this.props.classPrefix; var dom = (0, react_dom_1.findDOMNode)(this); var clip = this.body.getBoundingClientRect(); var offsetY = (_b = (_a = this.props.affixOffsetTop) !== null && _a !== void 0 ? _a : this.props.env.affixOffsetTop) !== null && _b !== void 0 ? _b : 0; var affixed = clip.top - 10 < offsetY && clip.top + clip.height - 40 > offsetY; var afixedDom = dom.querySelector("." + ns + "Cards-fixedTop"); this.body.offsetWidth && (afixedDom.style.cssText = "top: " + offsetY + "px;width: " + this.body.offsetWidth + "px;"); affixed ? afixedDom.classList.add('in') : afixedDom.classList.remove('in'); // store.markHeaderAffix(clip.top < offsetY && (clip.top + clip.height - 40) > offsetY); }; Cards.prototype.updateAutoFillHeight = function () { var _this = this; var _a, _b, _c; var _d = this.props, ns = _d.classPrefix, affixHeader = _d.affixHeader; if (!this.body) return; var dom = (0, react_dom_1.findDOMNode)(this); //tab页平铺模式样式处理 var tabsDom = dom.closest("." + ns + "Tabs--content-tiled"); if ((0, helper_1.isMobile)() && (this.props.filterRender || ((_a = this.props.headerBulkActions) === null || _a === void 0 ? void 0 : _a.length) || ((_b = this.props.footerBulkActions) === null || _b === void 0 ? void 0 : _b.length))) { var mobileHeader_1 = (affixHeader ? (_c = dom.querySelectorAll("." + ns + "Mobile-header-toolbar-wrapper")) === null || _c === void 0 ? void 0 : _c[1] : dom.querySelector("." + ns + "Mobile-header-toolbar-wrapper")); if (!mobileHeader_1) { if (this.updateAutoFillHeightTimes < 10) { this.updateAutoFillHeightTimes++; setTimeout(function () { _this.updateAutoFillHeight(); }, 100); return; } else { this.updateAutoFillHeightTimes = 0; } } if (mobileHeader_1) { setTimeout(function () { if (tabsDom) { //移动端tabs平铺模式时取消头部固定 mobileHeader_1.style.position = 'unset'; } else { var pannelDom = dom.closest("." + ns + "Panel"); if (pannelDom) { //首页移动端pannel限制高度时,取消头部的固定 var classList = pannelDom.className.split(' '); for (var _i = 0, classList_1 = classList; _i < classList_1.length; _i++) { var name = classList_1[_i]; if (name.includes('h-')) { mobileHeader_1.style.position = 'unset'; return; } } } else { var tableTop = (0, offset_1.default)(dom).top; mobileHeader_1.style.top = tableTop + 'px'; mobileHeader_1.nextElementSibling.style.paddingTop = '48px'; } } mobileHeader_1.style.width = dom.clientWidth + 'px'; }, 100); } } }; Cards.prototype.handleAction = function (e, action, ctx) { var onAction = this.props.onAction; // 需要支持特殊事件吗? onAction(e, action, ctx); }; Cards.prototype.handleCheck = function (item) { item.toggle(); this.syncSelected(); }; Cards.prototype.handleCheckAll = function () { var store = this.props.store; store.toggleAll(); this.syncSelected(); }; Cards.prototype.syncSelected = function () { var _a = this.props, store = _a.store, onSelect = _a.onSelect; onSelect && onSelect(store.selectedItems.map(function (item) { return item.data; }), store.unSelectedItems.map(function (item) { return item.data; })); }; Cards.prototype.handleQuickChange = function (item, values, saveImmediately, saveSilent, resetOnFailed) { item.change(values, saveSilent); if (!saveImmediately || saveSilent) { return; } if (saveImmediately && saveImmediately.api) { this.props.onAction(null, { actionType: 'ajax', api: saveImmediately.api }, values); return; } var _a = this.props, onSave = _a.onSave, primaryField = _a.primaryField; if (!onSave) { return; } onSave(item.data, (0, helper_1.difference)(item.data, item.pristine, ['id', primaryField]), item.index, undefined, item.pristine, resetOnFailed); }; Cards.prototype.handleSave = function () { var _a = this.props, store = _a.store, onSave = _a.onSave, primaryField = _a.primaryField; if (!onSave || !store.modifiedItems.length) { return; } var items = store.modifiedItems.map(function (item) { return item.data; }); var itemIndexes = store.modifiedItems.map(function (item) { return item.index; }); var diff = store.modifiedItems.map(function (item) { return (0, helper_1.difference)(item.data, item.pristine, ['id', primaryField]); }); var unModifiedItems = store.items .filter(function (item) { return !item.modified; }) .map(function (item) { return item.data; }); onSave(items, diff, itemIndexes, unModifiedItems, store.modifiedItems.map(function (item) { return item.pristine; })); }; Cards.prototype.handleSaveOrder = function () { var _a = this.props, store = _a.store, onSaveOrder = _a.onSaveOrder; if (!onSaveOrder || !store.movedItems.length) { return; } onSaveOrder(store.movedItems.map(function (item) { return item.data; }), store.items.map(function (item) { return item.data; })); }; Cards.prototype.reset = function () { var store = this.props.store; store.reset(); }; Cards.prototype.bulkUpdate = function (value, items) { var store = this.props.store; var items2 = store.items.filter(function (item) { return ~items.indexOf(item.pristine); }); items2.forEach(function (item) { return item.change(value); }); }; Cards.prototype.getSelected = function () { var store = this.props.store; return store.selectedItems.map(function (item) { return item.data; }); }; Cards.prototype.dragTipRef = function (ref) { if (!this.dragTip && ref) { this.initDragging(); } else if (this.dragTip && !ref) { this.destroyDragging(); } this.dragTip = ref; }; Cards.prototype.initDragging = function () { var store = this.props.store; var dom = (0, react_dom_1.findDOMNode)(this); var ns = this.props.classPrefix; this.sortable = new sortablejs_1.default(dom.querySelector("." + ns + "Cards-body"), { group: 'table', animation: 150, handle: "." + ns + "Card-dragBtn", ghostClass: "is-dragging", onEnd: function (e) { // 没有移动 if (e.newIndex === e.oldIndex) { return; } var parent = e.to; if (e.oldIndex < parent.childNodes.length - 1) { parent.insertBefore(e.item, parent.childNodes[e.oldIndex]); } else { parent.appendChild(e.item); } store.exchange(e.oldIndex, e.newIndex); } }); }; Cards.prototype.destroyDragging = function () { this.sortable && this.sortable.destroy(); }; Cards.prototype.renderActions = function (region) { var _this = this; var _a = this.props, actions = _a.actions, render = _a.render, store = _a.store, multiple = _a.multiple, selectable = _a.selectable, cx = _a.classnames, ns = _a.classPrefix, env = _a.env; var btn; actions = Array.isArray(actions) ? actions.concat() : []; if (!~this.renderedToolbars.indexOf('check-all') && !store.hideCheckToggler && //Aug this.getMobileUI() && //Aug (btn = this.renderCheckAll())) { actions.unshift({ type: 'button', children: btn }); } if (region === 'header' && !~this.renderedToolbars.indexOf('drag-toggler') && (btn = this.renderDragToggler())) { actions.unshift({ type: 'button', children: btn }); } return Array.isArray(actions) && actions.length ? (react_1.default.createElement("div", { className: cx('Cards-actions') }, actions.map(function (action, key) { return render("action/" + key, (0, tslib_1.__assign)({ type: 'button' }, action), { onAction: _this.handleAction, key: key, btnDisabled: store.dragging }); }))) : null; }; Cards.prototype.renderHeading = function () { var _a = this.props, title = _a.title, store = _a.store, hideQuickSaveBtn = _a.hideQuickSaveBtn, cx = _a.classnames, data = _a.data; if (title || (store.modified && !hideQuickSaveBtn) || store.moved) { return (react_1.default.createElement("div", { className: cx('Cards-heading') }, store.modified && !hideQuickSaveBtn ? (react_1.default.createElement("span", null, "\u5F53\u524D\u6709 " + store.modified + " \u6761\u8BB0\u5F55\u4FEE\u6539\u4E86\u5185\u5BB9, \u4F46\u5E76\u6CA1\u6709\u63D0\u4EA4\u3002\u8BF7\u9009\u62E9:", react_1.default.createElement("button", { type: "button", className: cx('Button Button--xs Button--success m-l-sm'), onClick: this.handleSave }, react_1.default.createElement(icons_1.Icon, { icon: "check", className: "icon m-r-xs" }), "\u63D0\u4EA4"), react_1.default.createElement("button", { type: "button", className: cx('Button Button--xs Button--danger m-l-sm'), onClick: this.reset }, react_1.default.createElement(icons_1.Icon, { icon: "close", className: "icon m-r-xs" }), "\u653E\u5F03"))) : store.moved ? (react_1.default.createElement("span", null, "\u5F53\u524D\u6709 " + store.moved + " \u6761\u8BB0\u5F55\u4FEE\u6539\u4E86\u987A\u5E8F, \u4F46\u5E76\u6CA1\u6709\u63D0\u4EA4\u3002\u8BF7\u9009\u62E9:", react_1.default.createElement("button", { type: "button", className: cx('Button Button--xs Button--success m-l-sm'), onClick: this.handleSaveOrder }, react_1.default.createElement(icons_1.Icon, { icon: "check", className: "icon m-r-xs" }), "\u63D0\u4EA4"), react_1.default.createElement("button", { type: "button", className: cx('Button Button--xs Button--danger m-l-sm'), onClick: this.reset }, react_1.default.createElement(icons_1.Icon, { icon: "close", className: "icon m-r-xs" }), "\u653E\u5F03"))) : title ? ((0, tpl_1.filter)(title, data)) : (''))); } return null; }; Cards.prototype.renderStatistic = function () { var _a = this.props, statistic = _a.statistic, cx = _a.classnames, render = _a.render; if (statistic) { return (react_1.default.createElement("div", { className: cx('Cards-statistic') }, render('statistic', statistic))); } return null; }; // Aug Cards.prototype.getMobileUI = function () { return (0, helper_1.isMobile)() && this.props.useMobileUI; }; Cards.prototype.renderHeader = function () { var _a, _b, _c; var _d = this.props, header = _d.header, headerClassName = _d.headerClassName, headerToolbar = _d.headerToolbar, headerToolbarRender = _d.headerToolbarRender, showHeader = _d.showHeader, render = _d.render, store = _d.store, cx = _d.classnames, __ = _d.translate, filterRender = _d.filterRender, //Aug data = _d.data; if (showHeader === false) { return null; } // Aug if (this.getMobileUI()) { { /* 搜索 */ } var isFilter = !!Object.keys(data.filterParam || {}).length; var filterNode = filterRender && filterRender(isFilter); { /* 批量 */ } var checkAll = (((_a = this.props.headerBulkActions) === null || _a === void 0 ? void 0 : _a.length) || ((_b = this.props.footerBulkActions) === null || _b === void 0 ? void 0 : _b.length)) ? react_1.default.createElement("span", { className: cx('Mobile-batch-manage', { 'is-active': !store.hideCheckToggler }), onClick: function (e) { e.preventDefault(); store.toggableHideCheck(); } }, store.hideCheckToggler ? react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("i", { className: 'fa fa-tasks batch-manage-icon' }), react_1.default.createElement("span", { className: 'batch-text' }, "\u9009\u62E9")) : __('Wizard.finish')) : null; return filterNode || checkAll ? (react_1.default.createElement("div", { className: cx('Mobile-header-toolbar-wrapper') }, react_1.default.createElement("div", { className: 'filter-conditions' }, typeof data.total == 'number' ? data.total + "\u6761\u6570\u636E" : null, ((_c = data.selectedItems) === null || _c === void 0 ? void 0 : _c.length) ? react_1.default.createElement("span", { style: { marginLeft: 10 } }, "\u5DF2\u9009" + data.selectedItems.length + "\u6761") : null), react_1.default.createElement("div", { className: 'header-btns' }, filterNode, checkAll))) : null; } var child = headerToolbarRender ? headerToolbarRender((0, tslib_1.__assign)((0, tslib_1.__assign)({}, this.props), { selectedItems: store.selectedItems.map(function (item) { return item.data; }), items: store.items.map(function (item) { return item.data; }), unSelectedItems: store.unSelectedItems.map(function (item) { return item.data; }) }), this.renderToolbar) : null; var actions = this.renderActions('header'); var toolbarNode = actions || child || store.dragging ? (react_1.default.createElement("div", { className: cx('Cards-toolbar'), key: "header-toolbar" }, actions, child, store.dragging ? (react_1.default.createElement("div", { className: cx('Cards-dragTip'), ref: this.dragTipRef }, __('Card.dragTip'))) : null)) : null; var headerNode = header ? (react_1.default.createElement("div", { className: cx('Cards-header', headerClassName), key: "header" }, render('header', header))) : null; return headerNode && toolbarNode ? [headerNode, toolbarNode] : headerNode || toolbarNode || null; }; Cards.prototype.renderFooter = function () { var _a = this.props, footer = _a.footer, footerClassName = _a.footerClassName, headerToolbar = _a.headerToolbar, //Aug footerToolbar = _a.footerToolbar, footerToolbarRender = _a.footerToolbarRender, render = _a.render, showFooter = _a.showFooter, store = _a.store, cx = _a.classnames; if (showFooter === false) { return null; } // Aug var _footer = footerToolbar || []; if (this.getMobileUI()) { // 勾选批量状态时 if (!store.hideCheckToggler) { _footer = ["bulkActions"]; } else { if (headerToolbar) { // 移动端将所有操作统一放在在底部 _footer = _footer.concat(headerToolbar); } // 非勾选状态不渲染批量操作 _footer = _footer.filter(function (item) { var type = item.type || item; return !['bulk-actions', 'bulkActions', 'pagination', 'statistics', 'switch-per-page'].includes(type); }); } } var child = footerToolbarRender ? footerToolbarRender((0, tslib_1.__assign)((0, tslib_1.__assign)({}, this.props), { selectedItems: store.selectedItems.map(function (item) { return item.data; }), items: store.items.map(function (item) { return item.data; }), unSelectedItems: store.unSelectedItems.map(function (item) { return item.data; }) }), this.renderToolbar, _footer //Aug ) : null; var actions = this.renderActions('footer'); var toolbarNode = actions || child ? (react_1.default.createElement("div", { className: cx('Cards-toolbar'), key: "footer-toolbar" }, actions, child)) : null; var footerNode = footer ? (react_1.default.createElement("div", { className: cx('Cards-footer', footerClassName), key: "footer" }, render('footer', footer))) : null; return footerNode && toolbarNode ? [toolbarNode, footerNode] : footerNode || toolbarNode || null; }; Cards.prototype.renderCheckAll = function () { var _a = this.props, store = _a.store, multiple = _a.multiple, selectable = _a.selectable, cx = _a.classnames, ns = _a.classPrefix, __ = _a.translate; if (!store.selectable || !multiple || !selectable || store.dragging || !store.items.length) { return null; } // return ( // <Button // key="checkall" // tooltip="切换全选" // onClick={this.handleCheckAll} // size="sm" // level={store.allChecked ? 'info' : 'default'} // > // 全选 // </Button> // ); // Aug return (this.getMobileUI() ? react_1.default.createElement("div", { key: "checkall", className: cx('Mobile-checkall') }, react_1.default.createElement(Checkbox_1.default, { classPrefix: ns, type: multiple ? 'checkbox' : 'radio', checked: store.allChecked, onChange: this.handleCheckAll, inline: true }), react_1.default.createElement("span", null, __('Select.checkAll'))) : react_1.default.createElement(Button_1.default, { key: "checkall", onClick: this.handleCheckAll, size: "sm", level: store.allChecked ? 'info' : 'default' }, __('Select.checkAll'))); }; Cards.prototype.renderDragToggler = function () { var _a = this.props, store = _a.store, multiple = _a.multiple, selectable = _a.selectable, env = _a.env, __ = _a.translate; if (!store.draggable || store.items.length < 2) { return null; } return (react_1.default.createElement(Button_1.default, { iconOnly: true, key: "dragging-toggle", tooltip: __('Card.toggleDrag'), tooltipContainer: env && env.getModalContainer ? env.getModalContainer : undefined, size: "sm", active: store.dragging, onClick: function (e) { e.preventDefault(); store.toggleDragging(); store.dragging && store.clear(); } }, react_1.default.createElement(icons_1.Icon, { icon: "exchange", className: "icon r90" }))); }; Cards.prototype.renderToolbar = function (toolbar, index) { var type = toolbar.type || toolbar; if (type === 'drag-toggler') { this.renderedToolbars.push(type); return this.renderDragToggler(); } else if (type === 'check-all') { this.renderedToolbars.push(type); return this.renderCheckAll(); } return void 0; }; Cards.prototype.render = function () { var _this = this; var _a = this.props, className = _a.className, store = _a.store, columnsCount = _a.columnsCount, itemClassName = _a.itemClassName, placeholder = _a.placeholder, render = _a.render, affixHeader = _a.affixHeader, card = _a.card, onAction = _a.onAction, multiple = _a.multiple, hideCheckToggler = _a.hideCheckToggler, checkOnItemClick = _a.checkOnItemClick, masonryLayout = _a.masonryLayout, itemsClassName = _a.itemsClassName, cx = _a.classnames, data = _a.data, __ = _a.translate, autoFillHeight = _a.autoFillHeight, infinteLoad = _a.infinteLoad, onLoadMore = _a.onLoadMore, loadHasMore = _a.loadHasMore; this.renderedToolbars = []; // 用来记录哪些 toolbar 已经渲染了,已经渲染了就不重复渲染了。 var itemFinalClassName = columnsCount ? "Grid-col--sm" + Math.round(12 / columnsCount) : itemClassName || ''; var header = this.renderHeader(); var heading = this.renderHeading(); var statistic = this.renderStatistic(); var footer = this.renderFooter(); var masonryClassName = ''; if (masonryLayout) { masonryClassName = 'Cards--masonry ' + itemFinalClassName .split(/\s/) .map(function (item) { if (/^Grid-col--(xs|sm|md|lg)(\d+)/.test(item)) { return "Cards--masonry" + (0, helper_1.ucFirst)(RegExp.$1) + RegExp.$2; } return item; }) .join(' '); } return (react_1.default.createElement("div", { ref: this.bodyRef, className: cx('Cards', className, { 'Cards--unsaved': !!store.modified || !!store.moved, // Aug 'is-mobile': this.getMobileUI(), }) }, affixHeader ? (react_1.default.createElement("div", { className: cx('Cards-fixedTop') }, header, heading)) : null, header, heading, statistic, react_1.default.createElement("div", { className: cx('Cards-content', { 'hasHeader': header, 'hasFooter': footer, }) }, store.items.length ? (react_1.default.createElement("div", { ref: this.itemsRef, className: cx('Cards-body Grid', itemsClassName, masonryClassName) }, store.items.map(function (item, index) { return (react_1.default.createElement("div", { key: item.index, className: cx(itemFinalClassName) }, render("" + index, (0, tslib_1.__assign)({ // @ts-ignore type: 'card' }, card), { className: cx((card && card.className) || '', { 'is-checked': item.checked, 'is-modified': item.modified, 'is-moved': item.moved }), item: item, intemIndex: item.index, multiple: multiple, hideCheckToggler: store.hideCheckToggler, selectable: store.selectable, checkable: item.checkable, draggable: item.draggable, selected: item.checked, onSelect: item.toggle, dragging: store.dragging, data: item.locals, checkOnItemClick: checkOnItemClick, onAction: onAction, onCheck: _this.handleCheck, onQuickChange: store.dragging ? null : _this.handleQuickChange }))); }))) : (react_1.default.createElement("div", { className: cx('Cards-placeholder') }, render('placeholder', __(placeholder)))), infinteLoad && react_1.default.createElement(InfinteSroll_1.default, { loadMore: onLoadMore, hasMore: loadHasMore })), footer)); }; Cards.propsList = [ 'header', 'headerToolbarRender', 'footer', 'footerToolbarRender', 'placeholder', 'source', 'selectable', 'headerClassName', 'footerClassName', 'fixAlignment', 'hideQuickSaveBtn', 'hideCheckToggler', 'itemCheckableOn', 'itemDraggableOn', 'masonryLayout', 'items', 'valueField' ]; Cards.defaultProps = { className: '', placeholder: 'placeholder.noData', source: '$items', selectable: false, headerClassName: '', footerClassName: '', itemClassName: 'Grid-col--sm6 Grid-col--md4 Grid-col--lg3', // fixAlignment: false, // hideCheckToggler: false, hideCheckToggler: (0, helper_1.isMobile)(), masonryLayout: false, affixHeader: true, itemsClassName: '' }; return Cards; }(react_1.default.Component)); exports.default = Cards; var CardsRenderer = /** @class */ (function (_super) { (0, tslib_1.__extends)(CardsRenderer, _super); function CardsRenderer() { return _super !== null && _super.apply(this, arguments) || this; } CardsRenderer = (0, tslib_1.__decorate)([ (0, factory_1.Renderer)({ test: /(^|\/)(?:crud\/body\/grid|cards)$/, name: 'cards', storeType: list_1.ListStore.name, weight: -100 // 默认的 grid 不是这样,这个只识别 crud 下面的 grid }) ], CardsRenderer); return CardsRenderer; }(Cards)); exports.CardsRenderer = CardsRenderer; //# sourceMappingURL=./renderers/Cards.js.map