'),
normalizedName = normalizeClassName(name);
classes = classes ? classes + ' ' : '';
classes += settings.classes.globalPrefix + '-' + normalizedName;
classes += ' ' + settings.classes.prefix + '-' + normalizedName;
$newElement.addClass(classes);
return $newElement;
};
this.destroy = function() {
unbindEvents();
elements.widget.remove();
self.trigger('destroy');
return self;
};
this.getElements = function(item) {
return item ? elements[item] : elements;
};
this.getSettings = function(setting) {
var copy = Object.create(settings);
if (setting) {
return copy[setting];
}
return copy;
};
this.hide = function() {
if (! self.isVisible()) {
return;
}
clearTimeout(hideTimeOut);
callEffect('hide', arguments);
unbindEvents();
if (settings.preventScroll) {
self.getElements('body').removeClass(settings.classes.preventScroll);
}
self.trigger('hide');
return self;
};
this.init = function(parent, properties) {
if (!(parent instanceof DialogsManager.Instance)) {
throw 'The ' + self.widgetName + ' must to be initialized from an instance of DialogsManager.Instance';
}
ensureClosureMethods();
self.trigger('init', properties);
initSettings(parent, properties);
initElements();
self.buildWidget();
self.attachEvents();
self.trigger('ready');
return self;
};
this.isVisible = function() {
return elements.widget.is(':visible');
};
this.on = function(eventName, callback) {
if ('object' === typeof eventName) {
$.each(eventName, function(singleEventName) {
self.on(singleEventName, this);
});
return self;
}
var eventNames = eventName.split(' ');
eventNames.forEach(function(singleEventName) {
if (!events[singleEventName]) {
events[singleEventName] = [];
}
events[singleEventName].push(callback);
});
return self;
};
this.off = function(eventName, callback) {
if (! events[ eventName ]) {
return self;
}
if (! callback) {
delete events[eventName];
return self;
}
var callbackIndex = events[eventName].indexOf(callback);
if (-1 !== callbackIndex) {
events[eventName].splice(callbackIndex, 1);
}
return self;
};
this.refreshPosition = function() {
if (! settings.position.enable) {
return;
}
var position = $.extend({}, settings.position);
if (elements[position.of]) {
position.of = elements[position.of];
}
if (! position.of) {
position.of = window;
}
if (settings.iframe) {
fixIframePosition(position);
}
elements[position.element].position(position);
};
this.setID = function(id) {
elements.widget.attr('id', id);
return self;
};
this.setHeaderMessage = function(message) {
self.getElements('header').html(message);
return self;
};
this.setMessage = function(message) {
elements.message.html(message);
return self;
};
this.setSettings = function(key, value) {
if (jQuery.isPlainObject(value)) {
$.extend(true, settings[key], value);
} else {
settings[key] = value;
}
return self;
};
this.show = function() {
clearTimeout(hideTimeOut);
elements.widget.appendTo(elements.container).hide();
callEffect('show', arguments);
self.refreshPosition();
if (settings.hide.auto) {
hideTimeOut = setTimeout(self.hide, settings.hide.autoDelay);
}
bindEvents();
if (settings.preventScroll) {
self.getElements('body').addClass(settings.classes.preventScroll);
}
self.trigger('show');
return self;
};
this.trigger = function(eventName, params) {
var methodName = 'on' + eventName[0].toUpperCase() + eventName.slice(1);
if (self[methodName]) {
self[methodName](params);
}
var callbacks = events[eventName];
if (!callbacks) {
return;
}
$.each(callbacks, function(index, callback) {
callback.call(self, params);
});
return self;
};
};
DialogsManager.Widget.prototype.types = [];
// Inheritable widget methods
DialogsManager.Widget.prototype.buildWidget = function() {
var elements = this.getElements(),
settings = this.getSettings();
elements.widget.append(elements.header, elements.message);
this.setHeaderMessage(settings.headerMessage);
this.setMessage(settings.message);
if (this.getSettings('closeButton')) {
elements.widget.prepend(elements.closeButton);
}
};
DialogsManager.Widget.prototype.attachEvents = function() {
var self = this;
if (self.getSettings('closeButton')) {
self.getElements('closeButton').on('click', function() {
self.hide();
});
}
};
DialogsManager.Widget.prototype.getDefaultSettings = function() {
return {};
};
DialogsManager.Widget.prototype.getClosureMethods = function() {
return [];
};
DialogsManager.Widget.prototype.onHide = function() {
};
DialogsManager.Widget.prototype.onShow = function() {
};
DialogsManager.Widget.prototype.onInit = function() {
};
DialogsManager.Widget.prototype.onReady = function() {
};
DialogsManager.widgetsTypes.simple = DialogsManager.Widget;
DialogsManager.addWidgetType('buttons', {
activeKeyUp: function(event) {
var TAB_KEY = 9;
if (event.which === TAB_KEY) {
event.preventDefault();
}
if (this.hotKeys[event.which]) {
this.hotKeys[event.which](this);
}
},
activeKeyDown: function(event) {
if (!this.focusedButton) {
return;
}
var TAB_KEY = 9;
if (event.which === TAB_KEY) {
event.preventDefault();
var currentButtonIndex = this.focusedButton.index(),
nextButtonIndex;
if (event.shiftKey) {
nextButtonIndex = currentButtonIndex - 1;
if (nextButtonIndex < 0) {
nextButtonIndex = this.buttons.length - 1;
}
} else {
nextButtonIndex = currentButtonIndex + 1;
if (nextButtonIndex >= this.buttons.length) {
nextButtonIndex = 0;
}
}
this.focusedButton = this.buttons[nextButtonIndex].focus();
}
},
addButton: function(options) {
var self = this,
settings = self.getSettings(),
buttonSettings = jQuery.extend(settings.button, options);
var classes = options.classes ? options.classes + ' ' : '';
classes += settings.classes.globalPrefix + '-button';
var $button = self.addElement(options.name, $('<' + buttonSettings.tag + '>').html(options.text), classes);
self.buttons.push($button);
var buttonFn = function() {
if (settings.hide.onButtonClick) {
self.hide();
}
if ($.isFunction(options.callback)) {
options.callback.call(this, self);
}
};
$button.on('click', buttonFn);
if (options.hotKey) {
this.hotKeys[options.hotKey] = buttonFn;
}
this.getElements('buttonsWrapper').append($button);
if (options.focus) {
this.focusedButton = $button;
}
return self;
},
bindHotKeys: function() {
this.getElements('window').on({
keyup: this.activeKeyUp,
keydown: this.activeKeyDown
});
},
buildWidget: function() {
DialogsManager.Widget.prototype.buildWidget.apply(this, arguments);
var $buttonsWrapper = this.addElement('buttonsWrapper');
this.getElements('widget').append($buttonsWrapper);
},
getClosureMethods: function() {
return [
'activeKeyUp',
'activeKeyDown'
];
},
getDefaultSettings: function() {
return {
hide: {
onButtonClick: true
},
button: {
tag: 'button'
}
};
},
onHide: function() {
this.unbindHotKeys();
},
onInit: function() {
this.buttons = [];
this.hotKeys = {};
this.focusedButton = null;
},
onShow: function() {
this.bindHotKeys();
if (!this.focusedButton) {
this.focusedButton = this.buttons[0];
}
if (this.focusedButton) {
this.focusedButton.focus();
}
},
unbindHotKeys: function() {
this.getElements('window').off({
keyup: this.activeKeyUp,
keydown: this.activeKeyDown
});
}
});
DialogsManager.addWidgetType('lightbox', DialogsManager.getWidgetType('buttons').extend('lightbox', {
getDefaultSettings: function() {
var settings = DialogsManager.getWidgetType('buttons').prototype.getDefaultSettings.apply(this, arguments);
return $.extend(true, settings, {
contentWidth: 'auto',
contentHeight: 'auto',
position: {
element: 'widgetContent',
of: 'widget',
autoRefresh: true
}
});
},
buildWidget: function() {
DialogsManager.getWidgetType('buttons').prototype.buildWidget.apply(this, arguments);
var $widgetContent = this.addElement('widgetContent'),
elements = this.getElements();
$widgetContent.append(elements.header, elements.message, elements.buttonsWrapper);
elements.widget.html($widgetContent);
if (elements.closeButton) {
$widgetContent.prepend(elements.closeButton);
}
},
onReady: function() {
var elements = this.getElements(),
settings = this.getSettings();
if ('auto' !== settings.contentWidth) {
elements.message.width(settings.contentWidth);
}
if ('auto' !== settings.contentHeight) {
elements.message.height(settings.contentHeight);
}
}
}));
DialogsManager.addWidgetType('confirm', DialogsManager.getWidgetType('lightbox').extend('confirm', {
onReady: function() {
DialogsManager.getWidgetType('lightbox').prototype.onReady.apply(this, arguments);
var strings = this.getSettings('strings'),
isDefaultCancel = this.getSettings('defaultOption') === 'cancel';
this.addButton({
name: 'cancel',
text: strings.cancel,
callback: function(widget) {
widget.trigger('cancel');
},
focus: isDefaultCancel
});
this.addButton({
name: 'ok',
text: strings.confirm,
callback: function(widget) {
widget.trigger('confirm');
},
focus: !isDefaultCancel
});
},
getDefaultSettings: function() {
var settings = DialogsManager.getWidgetType('lightbox').prototype.getDefaultSettings.apply(this, arguments);
settings.strings = {
confirm: 'OK',
cancel: 'Cancel'
};
settings.defaultOption = 'cancel';
return settings;
}
}));
DialogsManager.addWidgetType('alert', DialogsManager.getWidgetType('lightbox').extend('alert', {
onReady: function() {
DialogsManager.getWidgetType('lightbox').prototype.onReady.apply(this, arguments);
var strings = this.getSettings('strings');
this.addButton({
name: 'ok',
text: strings.confirm,
callback: function(widget) {
widget.trigger('confirm');
}
});
},
getDefaultSettings: function() {
var settings = DialogsManager.getWidgetType('lightbox').prototype.getDefaultSettings.apply(this, arguments);
settings.strings = {
confirm: 'OK'
};
return settings;
}
}));
// Exporting the DialogsManager variable to global
global.DialogsManager = DialogsManager;
})(
typeof jQuery !== 'undefined' ? jQuery : typeof require === 'function' && require('jquery'),
(typeof module !== 'undefined' && typeof module.exports !== 'undefined') ? module.exports : window
);
Conclusion Archives - FundFlippers
Skip to content
Putting resources into monetary business sectors can be overwhelming, particularly when confronted with a plenty of choices like shared assets and trade exchanged reserves (ETFs). These speculation vehicles offer people the amazing chance to expand their portfolios, accomplish monetary objectives, and take part in the more extensive market without the requirement for broad information on … Read more
Overseeing funds during school is a vital expertise that sets the establishment for future monetary solidness. With educational cost, reading material, everyday costs, and social exercises to consider, making and adhering to a financial plan becomes fundamental. This extensive aide gives reasonable planning tips custom fitted explicitly for undergrads, engaging you to assume command over … Read more
Planning and saving are major mainstays of monetary steadiness and achievement. Whether you’re hoping to construct a secret stash, save for a major buy, or accomplish long haul monetary objectives, dominating these abilities can change your monetary wellbeing. This far reaching guide investigates all that you really want to be aware of planning and saving, … Read more
In the present high speed and interconnected world, giving uncommon client assistance is central for organizations hoping to flourish in cutthroat business sectors. While monetary administrations are urgent, broadening client care hours goes past money, offering clients comfort, availability, and customized help. In this article, we’ll investigate the significance of broadening client support hours, systems … Read more
LinkedIn has arisen as the head proficient systems administration stage, offering an abundance of chances for professional success, business development, and expert turn of events. While it’s ordinarily connected with finance experts, LinkedIn’s utility stretches out a long ways past the money business. In this complete aide, we’ll investigate how to use LinkedIn really to … Read more
In the present serious work market, finding the most amazing job you could ever ask for goes past having the right capabilities. Understanding organization culture, worker fulfillment, and potential learning experiences are similarly significant elements in tracking down the ideal fit for your profession. Glassdoor, a main stage for work searchers, offers significant bits of … Read more
Boston, Massachusetts, prestigious for its verifiable importance and hearty finance sector, is a city throbbing with social dynamic quality and sporting charm. While its finance ability is evident, Boston’s actual embodiment lies in the heap encounters it offers beyond the domain of finance. From its different areas and culinary scene to its rich history and … Read more
Beyond Finance, a conspicuous player in the monetary administrations industry, offers obligation the board and union arrangements pointed toward enabling people to recover control of their funds. While their administrations are intended to help clients in accomplishing independence from the rat race, it’s fundamental to comprehend the abrogation strategy in the event that conditions change … Read more