diff --git a/assets/UserActionManager/UserActionManager.js b/assets/UserActionManager/UserActionManager.js index d42ab97..99bc799 100644 --- a/assets/UserActionManager/UserActionManager.js +++ b/assets/UserActionManager/UserActionManager.js @@ -5,8 +5,9 @@ kit.PluginManager.register('UserActionManager',function(module, exports, require, global) { var Collection = require('collection'); + var support = require('support'); - var actionList = ['click', 'hover']; + var actionList = ['popover', 'hint']; var UserAction = function () { @@ -82,7 +83,7 @@ kit.PluginManager.register('UserActionManager',function(module, exports, require break; } }; - + proto.addDocumentEventListener = function() { document.addEventListener('click', this.documentListenerHandler, false); }; @@ -157,11 +158,32 @@ kit.PluginManager.register('UserActionManager',function(module, exports, require /** - * @memberof kitCore - * @instance + * @class UserActionManager + * @memberOf kit */ - var UserActionManager = function () { + var UserActionManager = function (actions = []) { + this.test = new Collection([]); + this.collection = new Collection([]); + if(!Array.isArray(actions)) { + actions = [actions]; + } + actions.forEach(function (act) { + + }.bind(this)); + /** + * @static + */ + this.actions = { + popover: 'popover', + hint: 'hint', + }; + return this; + }; + + UserActionManager.prototype.setAction = function(action){ + this.action = action; + this.collection.put(); }; return module.exports = UserActionManager; diff --git a/assets/align/align.js b/assets/align/align.js index 01ed178..911abb7 100644 --- a/assets/align/align.js +++ b/assets/align/align.js @@ -565,8 +565,7 @@ kit.PluginManager.register('align',function(module, exports, require) { /** - * @memberof kitCore - * @instance + * @memberOf kit */ var align = { Class: AlignClass, diff --git a/assets/animations/animations.js b/assets/animations/animations.js index 1027b59..a6f607a 100644 --- a/assets/animations/animations.js +++ b/assets/animations/animations.js @@ -2,8 +2,7 @@ kit.PluginManager.register('animations',function(module, exports, require, global) { /** - * @memberof kitCore - * @instance + * @memberOf kit */ var animations = { scaleIn: 'anim-scale-in', diff --git a/assets/collection/collection.js b/assets/collection/collection.js index 9a3c019..c9cb0c6 100644 --- a/assets/collection/collection.js +++ b/assets/collection/collection.js @@ -1,35 +1,11 @@ /** @module collection */ -kit.PluginManager.register('collection',function(module, exports, require, global) { +kit.PluginManager.register('Collection',function(module, exports, require, global) { + + var support = require('support'); + var valueEx = support.valueEx; - function valueEx(value, item, key, arr) { - if(typeof value === 'function') { - return value(item, key, arr); - } - return value; - } - function uniqueId (length = 32, firstLetter = true) { - var idStr = ''; - if(length < 1) return idStr; - if(firstLetter) { - length && (idStr = (Math.floor((Math.random() * 25)) + 10).toString(36)); - if (length === 1) return idStr; - } - do { - idStr += (Math.floor((Math.random() * 35))).toString(36); - } while (idStr.length < length); - return (idStr); - } - function empty(val){ - return arguments.length === 0 || - val === undefined || - val === null || - Number.isNaN(val) === true || - val === '' || - val === 0 || - val === false; - } function filter(value, key, arr) { - return !empty(value); + return !support.empty(value); } function getSimilarInstance(type) { if(type === 'object') { @@ -38,10 +14,10 @@ kit.PluginManager.register('collection',function(module, exports, require, globa return new Collection([]); } /** - * @memberof kitCore - * @instance + * @class Collection + * @memberOf kit */ - var Collection = function (data) { + var Collection = function (data = []) { this.data = data; if(data instanceof NodeList) { this.type = 'NodeList'; @@ -81,14 +57,14 @@ kit.PluginManager.register('collection',function(module, exports, require, globa this.data.push(value); return this; } - this.data[uniqueId(8)] = value; + this.data[support.uniqueId(8)] = value; return this; }; Collection.prototype.get = function (key, defValue = undefined) { if(this.data.hasOwnProperty(key)) { return this.data[key]; } - return valueEx(defValue, this.data[key], key); + return defValue; }; Collection.prototype.has = function (key) { return this.data.hasOwnProperty(key); @@ -180,6 +156,16 @@ kit.PluginManager.register('collection',function(module, exports, require, globa }); return res; }; + Collection.prototype.firstKey = function (callback = true) { + var res = undefined; + this.each(function (value, key, arr) { + if(valueEx(callback, value, key, arr)) { + res = key; + return false; + } + }); + return res; + }; Collection.prototype.last = function (callback = true) { var res = undefined; this.eachReverse(function (value, key, arr) { @@ -190,6 +176,16 @@ kit.PluginManager.register('collection',function(module, exports, require, globa }); return res; }; + Collection.prototype.lastKey = function (callback = true) { + var res = undefined; + this.eachReverse(function (value, key, arr) { + if(valueEx(callback, value, key, arr)) { + res = key; + return false; + } + }); + return res; + }; /** * @return {kitCore.Collection} */ diff --git a/assets/core/core.js b/assets/core/core.js index a239cdb..d6850d6 100644 --- a/assets/core/core.js +++ b/assets/core/core.js @@ -19,7 +19,7 @@ window.kit = window.kit || {}; * @class PluginManager * @param global * @param plugins - * @constructor + * @memberOf kit */ var PluginManager = function(global, plugins = {}){ this.plugins = {}; @@ -631,7 +631,7 @@ window.kit = window.kit || {}; }); manager.install('config'); - window.__PluginManager__ = global.PluginManager = global.pm = manager; + window.__PluginManager__ = manager; global.ready = manager.ready.bind(manager); global.exec = manager.exec.bind(manager); global.require = manager.require.bind(manager); diff --git a/assets/core/core.register.js b/assets/core/core.register.js index 824c16d..3d41138 100644 --- a/assets/core/core.register.js +++ b/assets/core/core.register.js @@ -151,6 +151,7 @@ __PluginManager__.registerPlugins({ path: __pmConfig__.assetsPath + '/collection', module: '/collection.js', type: 'loader', + deps: ['support'], }, dataStructures: { path: __pmConfig__.assetsPath + '/dataStructures', @@ -161,6 +162,7 @@ __PluginManager__.registerPlugins({ path: __pmConfig__.assetsPath + '/UserActionManager', module: '/UserActionManager.js', type: 'loader', + deps: ['Collection'], }, }); diff --git a/assets/core/doc.js b/assets/core/doc.js index 4d2491c..de2389a 100644 --- a/assets/core/doc.js +++ b/assets/core/doc.js @@ -8,6 +8,7 @@ /** * @typedef {Object} kitCorePlugins + * @property {PluginManager} pm * @property {kitPluginManagerRequire} require * @property {kitBsCore} bsCore * @property {kitToolkit} toolkit diff --git a/assets/dataStructures/dataStructures.js b/assets/dataStructures/dataStructures.js index cfe5fe8..2957be6 100644 --- a/assets/dataStructures/dataStructures.js +++ b/assets/dataStructures/dataStructures.js @@ -1,8 +1,7 @@ /** @module dataStructures */ __PluginManager__.register('dataStructures', function(module, exports, require, global){ /** - * @memberof kitCore - * @instance + * @memberOf kit */ var dataStructures = { StackExecutionLimiter: (function () { diff --git a/assets/lib/lib.js b/assets/lib/lib.js index ca65ecd..6de5f78 100644 --- a/assets/lib/lib.js +++ b/assets/lib/lib.js @@ -2,8 +2,7 @@ kit.PluginManager.register('lib',function(module, exports, require, global) { /** - * @memberof kitCore - * @instance + * @memberOf kitCore */ var lib = { svg: { diff --git a/assets/menu/menu.js b/assets/menu/menu.js index ddbec08..af68cf7 100644 --- a/assets/menu/menu.js +++ b/assets/menu/menu.js @@ -931,8 +931,7 @@ __PluginManager__.register('menu',function(module, exports, require) { window.addEventListener('resize', globalHandlers.resize); /** - * @memberof kitCore - * @instance + * @memberOf kit */ var menu = { Class: MenuClass, diff --git a/assets/support/support.js b/assets/support/support.js index 6fd70cc..18f6c0d 100644 --- a/assets/support/support.js +++ b/assets/support/support.js @@ -7,13 +7,46 @@ __PluginManager__.register('support', function(module, exports, require, global) return str[0].toUpperCase() + str.slice(1); } }; - + function uniqueId (length = 32, firstLetter = true) { + var idStr = ''; + if(length < 1) return idStr; + if(firstLetter) { + length && (idStr = (Math.floor((Math.random() * 25)) + 10).toString(36)); + if (length === 1) return idStr; + } + do { + idStr += (Math.floor((Math.random() * 35))).toString(36); + } while (idStr.length < length); + return (idStr); + } + function valueEx(value) { + var arg = []; + if(arguments.length > 1) + for(var i = 1; arguments.length - 1 >= i;i++) { + arg.push(arguments[i]); + } + if(typeof value === 'function') { + return value.apply(this, arg); + } + return value; + } + function empty(val){ + return arguments.length === 0 || + val === undefined || + val === null || + Number.isNaN(val) === true || + val === '' || + val === 0 || + val === false; + } /** - * @memberof kitCore - * @instance + * @memberOf kit */ var support = { str: str, + uniqueId, + valueEx, + empty }; return module.exports = support; diff --git a/tests/UserActionManager.php b/tests/UserActionManager.php new file mode 100644 index 0000000..63c114e --- /dev/null +++ b/tests/UserActionManager.php @@ -0,0 +1,41 @@ + + +if(\Bitrix\Main\Loader::includeModule('wt.core')) { + app()->service()->assets()->setPlugins([ + 'kit:config', + 'kit:flex-kit', + 'kit:core', + 'kit:bsCore', + 'kit:collapse', + 'kit:site', + 'kit:toolkit', + 'kit:theme', + ])->render(); +} +$APPLICATION->ShowHead(); + +?> + + +