UNPKG

metro4

Version:

The front-end framework for Build responsive, mobile-first projects on the web with the first front-end component library in Metro Style

123 lines (99 loc) 3.6 kB
var Activity = { init: function( options, elem ) { this.options = $.extend( {}, this.options, options ); this.elem = elem; this.element = $(elem); this._setOptionsFromDOM(); this._create(); return this; }, options: { type: "ring", style: "light", size: 64, radius: 20, onActivityCreate: Metro.noop }, _setOptionsFromDOM: function(){ var element = this.element, o = this.options; $.each(element.data(), function(key, value){ if (key in o) { try { o[key] = JSON.parse(value); } catch (e) { o[key] = value; } } }); }, _create: function(){ var element = this.element, o = this.options; var i, wrap; element .html('') .addClass(o.style + "-style") .addClass("activity-" + o.type); function _metro(){ for(i = 0; i < 5 ; i++) { $("<div/>").addClass('circle').appendTo(element); } } function _square(){ for(i = 0; i < 4 ; i++) { $("<div/>").addClass('square').appendTo(element); } } function _cycle(){ $("<div/>").addClass('cycle').appendTo(element); } function _ring(){ for(i = 0; i < 5 ; i++) { wrap = $("<div/>").addClass('wrap').appendTo(element); $("<div/>").addClass('circle').appendTo(wrap); } } function _simple(){ $('<svg class="circular"><circle class="path" cx="'+o.size/2+'" cy="'+o.size/2+'" r="'+o.radius+'" fill="none" stroke-width="2" stroke-miterlimit="10"/></svg>').appendTo(element); } switch (o.type) { case 'metro': _metro(); break; case 'square': _square(); break; case 'cycle': _cycle(); break; case 'simple': _simple(); break; default: _ring(); } Utils.exec(this.options.onActivityCreate, [this.element]); setImmediate(function(){ element.fire("activitycreate") }); }, changeAttribute: function(attributeName){ }, destroy: function(){ var element = this.element, o = this.options; element.html('') .removeClass(o.style + "-style") .removeClass("activity-" + o.type); } }; Metro.plugin('activity', Activity); Metro['activity'] = { open: function(options){ var activity = '<div data-role="activity" data-type="'+( options.type ? options.type : 'cycle' )+'" data-style="'+( options.style ? options.style : 'color' )+'"></div>'; var text = options.text ? '<div class="text-center">'+options.text+'</div>' : ''; return Metro.dialog.create({ content: activity + text, defaultAction: false, clsContent: "d-flex flex-column flex-justify-center flex-align-center bg-transparent no-shadow w-auto", clsDialog: "no-border no-shadow bg-transparent global-dialog", autoHide: options.autoHide ? options.autoHide : 0, overlayClickClose: options.overlayClickClose === true, overlayColor: options.overlayColor?options.overlayColor:'#000000', overlayAlpha: options.overlayAlpha?options.overlayAlpha:.5, clsOverlay: "global-overlay" }) }, close: function(a){ Metro.dialog.close(a); } };