UNPKG

kero

Version:
125 lines (113 loc) 3.99 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.showComp = exports.getComps = exports.getCompsByType = exports.getCompsByDataTable = exports.getComp = exports.createComp = undefined; var _compMgr = require('neoui-sparrow/js/compMgr'); var _util = require('neoui-sparrow/js/util'); var _dom = require('neoui-sparrow/js/dom'); var createComp = function createComp(ele, viewModel) { var options = JSON.parse(ele.getAttribute('u-meta')); if (options && options['type']) { var comp = _compMgr.compMgr.createDataAdapter({ el: ele, options: options, model: viewModel, app: this }); ele['u-meta'] = comp; } return comp; }; /** * Module : kero app comp * Author : liuyk(liuyk@yonyou.com) * Date : 2016-07-29 09:34:01 */ var getComp = function getComp(compId) { var returnComp = null; (0, _util.each)(this.elements, function (i, element) { if (typeof element === 'string') { element = document.querySelector(element); } if (element) { element.querySelectorAll('[u-meta]').forEach(function (ele) { if (ele['u-meta']) { var comp = ele['u-meta']; if (comp.id === compId) { returnComp = comp; return false; } } }); } }); return returnComp; }; var getCompsByDataTable = function getCompsByDataTable(dataTableId, element) { var comps = this.getComps(element), targetComps = []; for (var i = 0; i < comps.length; i++) { if (comps[i].dataModel && comps[i].dataModel['id'] == dataTableId || comps[i].dataTable && comps[i].dataTable['id'] == dataTableId) targetComps.push(comps[i]); } return targetComps; }; /** * 根据类型获取控件 * @param {String} type * @param {object} element */ var getCompsByType = function getCompsByType(type, element) { var elements = element ? element : this.elements; var returnComps = []; if (!(0, _util.isArray)(elements)) elements = [elements]; (0, _util.each)(elements, function (i, element) { if (element) { element.querySelectorAll('[u-meta]').forEach(function (ele) { if (ele['u-meta']) { var comp = ele['u-meta']; if (comp && comp.type == type) returnComps.push(comp); } }); } }); return returnComps; }; /** * 获取某区域中的所有控件 * @param {object} element */ var getComps = function getComps(element) { var elements = element ? element : this.elements; var returnComps = []; if (typeof elements == 'string') { elements = document.querySelectorAll(elements); } if (!(0, _util.isArray)(elements) && !(elements instanceof NodeList)) elements = [elements]; (0, _util.each)(elements, function (i, element) { if (element) { element.querySelectorAll('[u-meta]').forEach(function (ele) { if (ele['u-meta']) { var comp = ele['u-meta']; if (comp) returnComps.push(comp); } }); } }); return returnComps; }; /** * 将comp显示到顶端(此方法只支持body上存在滚动条的情况) * @param {object} comp对象 */ var showComp = function showComp(comp) { var ele = comp.element, off = (0, _dom.getOffset)(ele), scroll = (0, _dom.getScroll)(ele), top = off.top - scroll.top, bodyHeight = document.body.clientHeight, nowTop = document.body.scrollTop; if (top > bodyHeight || top < 0) { document.body.scrollTop = nowTop + top; } }; exports.createComp = createComp; exports.getComp = getComp; exports.getCompsByDataTable = getCompsByDataTable; exports.getCompsByType = getCompsByType; exports.getComps = getComps; exports.showComp = showComp;