Sha256: 6630c7fe2b782f7993e086be4b1d42b6b1371820fb0c734cda1232e6d092e7cb
Contents?: true
Size: 1.55 KB
Versions: 1
Compression:
Stored size: 1.55 KB
Contents
'use strict'; import $ from 'jquery'; import { GetYoDigits } from './foundation.util.core'; // Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST // {function} _setup (replaces previous constructor), // {function} _destroy (replaces previous destroy) class Plugin { constructor(element, options) { this._setup(element, options); var pluginName = getPluginName(this); this.uuid = GetYoDigits(6, pluginName); if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); } if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); } /** * Fires when the plugin has initialized. * @event Plugin#init */ this.$element.trigger(`init.zf.${pluginName}`); } destroy() { this._destroy(); var pluginName = getPluginName(this); this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin') /** * Fires when the plugin has been destroyed. * @event Plugin#destroyed */ .trigger(`destroyed.zf.${pluginName}`); for(var prop in this){ this[prop] = null;//clean up script to prep for garbage collection. } } } // Convert PascalCase to kebab-case // Thank you: http://stackoverflow.com/a/8955580 function hyphenate(str) { return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); } function getPluginName(obj) { if(typeof(obj.constructor.name) !== 'undefined') { return hyphenate(obj.constructor.name); } else { return hyphenate(obj.className); } } export {Plugin};
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
foundation-rails-6.4.1.0 | vendor/assets/js/foundation.plugin.js.es6 |