UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

113 lines (81 loc) 3.86 kB
/* Siesta 5.6.1 Copyright(c) 2009-2022 Bryntum AB https://bryntum.com/contact https://bryntum.com/products/siesta/license */ Role('Siesta.Util.Role.CanInstallCQRootPseudo', { methods : { // add :root pseudo CQ selector to be able to identify 'root' level components that don't have // parent containers. value is 1-based installRootPseudoCQ : function (Ext) { if (!Ext) return var CQ = Ext.ComponentQuery if (!CQ) return var pseudos = CQ.pseudos if (!pseudos.root || !pseudos.root.__IS_ROOT_PSEUDO_OVERRIDE__) { var rootPseudo = function (items, value) { var i = 0, l = items.length, c, result = []; var findAllRoots = value === undefined if (!findAllRoots) { value = Number(value) - 1; } for (; i < l; i++) { c = items[i].up(); var hasParentContainer = c && c.contains && c.contains(items[i]); if (!hasParentContainer) { result.push(items[i]); } } if (!findAllRoots) { result = result[value] ? [result[value]] : []; } return result; } rootPseudo.__IS_ROOT_PSEUDO_OVERRIDE__ = true pseudos.root = rootPseudo } if (!pseudos[ "ariadne-nth-child" ]) { pseudos[ "ariadne-nth-child" ] = function (items, selector) { var result = [] var pos = Number(selector) - 1 var len = items.length for (var i = 0; i < len; i++) { var cmp = items[ i ] var parentCt = cmp.getRefOwner && cmp.getRefOwner() || cmp.ownerCt var parentCtItems = parentCt && parentCt.items // parentCt could be an Ext ActionColumn which has 'items' but isn't a true container if (parentCtItems && parentCtItems.getCount) { var innerItemsLen = parentCtItems.getCount() if (pos < innerItemsLen) { if (parentCtItems.getAt(pos) === cmp) result.push(cmp) } else { var refItems = parentCt.getRefItems() if (refItems[ pos ] === cmp) result.push(cmp) } } } return result; } } var version = Ext.getVersion && Ext.getVersion('ext') if (version && version.major == 4 && !CQ.__CQ4_PATCHED__) { // install workarounds for ExtJS 4 which does not pay any attention to attribute values // escaping/unescaping Ext.dom.Query.operators[ '=' ] = function (a, b) { return a == Siesta.Sizzle.unescape(b) } var prevQuery = CQ.query // also ExtJS4 CQ just "split" the query by "," even that comma can be part of string expression CQ.query = function (query, root) { if (/\\,/.test(query)) return prevQuery.call(this, { split : function () { return [ query ] } }, root) else return prevQuery.call(this, query, root) } CQ.__CQ4_PATCHED__ = true } } } });