ngx-bootstrap
Version:
Native Angular Bootstrap Components
999 lines (987 loc) • 26.6 kB
JavaScript
import { isDevMode } from '@angular/core';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @copyright Valor Software
* @copyright Angular ng-bootstrap team
*/
var Trigger = /** @class */ (function () {
function Trigger(open, close) {
this.open = open;
this.close = close || open;
}
/**
* @return {?}
*/
Trigger.prototype.isManual = /**
* @return {?}
*/
function () {
return this.open === 'manual' || this.close === 'manual';
};
return Trigger;
}());
if (false) {
/** @type {?} */
Trigger.prototype.open;
/** @type {?} */
Trigger.prototype.close;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @record
*/
function ListenOptions() { }
if (false) {
/** @type {?|undefined} */
ListenOptions.prototype.target;
/** @type {?|undefined} */
ListenOptions.prototype.targets;
/** @type {?|undefined} */
ListenOptions.prototype.triggers;
/** @type {?|undefined} */
ListenOptions.prototype.outsideClick;
/** @type {?|undefined} */
ListenOptions.prototype.outsideEsc;
/** @type {?|undefined} */
ListenOptions.prototype.show;
/** @type {?|undefined} */
ListenOptions.prototype.hide;
/** @type {?|undefined} */
ListenOptions.prototype.toggle;
}
/** @type {?} */
var DEFAULT_ALIASES = {
hover: ['mouseover', 'mouseout'],
focus: ['focusin', 'focusout']
};
/* tslint:disable-next-line: no-any */
/**
* @param {?} triggers
* @param {?=} aliases
* @return {?}
*/
function parseTriggers(triggers, aliases) {
if (aliases === void 0) { aliases = DEFAULT_ALIASES; }
/** @type {?} */
var trimmedTriggers = (triggers || '').trim();
if (trimmedTriggers.length === 0) {
return [];
}
/** @type {?} */
var parsedTriggers = trimmedTriggers
.split(/\s+/)
.map((/**
* @param {?} trigger
* @return {?}
*/
function (trigger) { return trigger.split(':'); }))
.map((/**
* @param {?} triggerPair
* @return {?}
*/
function (triggerPair) {
/** @type {?} */
var alias = aliases[triggerPair[0]] || triggerPair;
return new Trigger(alias[0], alias[1]);
}));
/** @type {?} */
var manualTriggers = parsedTriggers.filter((/**
* @param {?} triggerPair
* @return {?}
*/
function (triggerPair) {
return triggerPair.isManual();
}));
if (manualTriggers.length > 1) {
throw new Error('Triggers parse error: only one manual trigger is allowed');
}
if (manualTriggers.length === 1 && parsedTriggers.length > 1) {
throw new Error('Triggers parse error: manual trigger can\'t be mixed with other triggers');
}
return parsedTriggers;
}
/**
* @param {?} renderer
* @param {?} target
* @param {?} triggers
* @param {?} showFn
* @param {?} hideFn
* @param {?} toggleFn
* @return {?}
*/
function listenToTriggers(renderer,
/* tslint:disable-next-line: no-any */
target, triggers, showFn, hideFn, toggleFn) {
/** @type {?} */
var parsedTriggers = parseTriggers(triggers);
/* tslint:disable-next-line: no-any */
/** @type {?} */
var listeners = [];
if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {
return Function.prototype;
}
parsedTriggers.forEach((/**
* @param {?} trigger
* @return {?}
*/
function (trigger) {
if (trigger.open === trigger.close) {
listeners.push(renderer.listen(target, trigger.open, toggleFn));
return;
}
listeners.push(renderer.listen(target, trigger.open, showFn), renderer.listen(target, trigger.close, hideFn));
}));
return (/**
* @return {?}
*/
function () {
listeners.forEach((/**
* @param {?} unsubscribeFn
* @return {?}
*/
function (unsubscribeFn) { return unsubscribeFn(); }));
});
}
/**
* @param {?} renderer
* @param {?} options
* @return {?}
*/
function listenToTriggersV2(renderer, options) {
/** @type {?} */
var parsedTriggers = parseTriggers(options.triggers);
/** @type {?} */
var target = options.target;
// do nothing
if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {
return Function.prototype;
}
// all listeners
/* tslint:disable-next-line: no-any */
/** @type {?} */
var listeners = [];
// lazy listeners registration
/** @type {?} */
var _registerHide = [];
/** @type {?} */
var registerHide = (/**
* @return {?}
*/
function () {
// add hide listeners to unregister array
_registerHide.forEach((/**
* @param {?} fn
* @return {?}
*/
function (fn) { return listeners.push(fn()); }));
// register hide events only once
_registerHide.length = 0;
});
// register open\close\toggle listeners
parsedTriggers.forEach((/**
* @param {?} trigger
* @return {?}
*/
function (trigger) {
/** @type {?} */
var useToggle = trigger.open === trigger.close;
/** @type {?} */
var showFn = useToggle ? options.toggle : options.show;
if (!useToggle) {
_registerHide.push((/**
* @return {?}
*/
function () {
return renderer.listen(target, trigger.close, options.hide);
}));
}
listeners.push(renderer.listen(target, trigger.open, (/**
* @return {?}
*/
function () { return showFn(registerHide); })));
}));
return (/**
* @return {?}
*/
function () {
listeners.forEach((/**
* @param {?} unsubscribeFn
* @return {?}
*/
function (unsubscribeFn) { return unsubscribeFn(); }));
});
}
/**
* @param {?} renderer
* @param {?} options
* @return {?}
*/
function registerOutsideClick(renderer, options) {
if (!options.outsideClick) {
return Function.prototype;
}
/* tslint:disable-next-line: no-any */
return renderer.listen('document', 'click', (/**
* @param {?} event
* @return {?}
*/
function (event) {
if (options.target && options.target.contains(event.target)) {
return undefined;
}
if (options.targets &&
options.targets.some((/**
* @param {?} target
* @return {?}
*/
function (target) { return target.contains(event.target); }))) {
return undefined;
}
options.hide();
}));
}
/**
* @param {?} renderer
* @param {?} options
* @return {?}
*/
function registerEscClick(renderer, options) {
if (!options.outsideEsc) {
return Function.prototype;
}
return renderer.listen('document', 'keyup.esc', (/**
* @param {?} event
* @return {?}
*/
function (event) {
if (options.target && options.target.contains(event.target)) {
return undefined;
}
if (options.targets &&
options.targets.some((/**
* @param {?} target
* @return {?}
*/
function (target) { return target.contains(event.target); }))) {
return undefined;
}
options.hide();
}));
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
/**
* JS version of browser APIs. This library can only run in the browser.
* @type {?}
*/
var win = (typeof window !== 'undefined' && window) || (/** @type {?} */ ({}));
/** @type {?} */
var document$1 = win.document;
/** @type {?} */
var location = win.location;
/** @type {?} */
var gc = win.gc ? (/**
* @return {?}
*/
function () { return win.gc(); }) : (/**
* @return {?}
*/
function () { return null; });
/** @type {?} */
var performance = win.performance ? win.performance : null;
/** @type {?} */
var Event = win.Event;
/** @type {?} */
var MouseEvent = win.MouseEvent;
/** @type {?} */
var KeyboardEvent = win.KeyboardEvent;
/** @type {?} */
var EventTarget = win.EventTarget;
/** @type {?} */
var History = win.History;
/** @type {?} */
var Location = win.Location;
/** @type {?} */
var EventListener = win.EventListener;
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var guessedVersion;
/**
* @return {?}
*/
function _guessBsVersion() {
if (typeof document === 'undefined') {
return null;
}
/** @type {?} */
var spanEl = document.createElement('span');
spanEl.innerText = 'test bs version';
document.body.appendChild(spanEl);
spanEl.classList.add('d-none');
/** @type {?} */
var rect = spanEl.getBoundingClientRect();
document.body.removeChild(spanEl);
if (!rect) {
return 'bs3';
}
return rect.top === 0 ? 'bs4' : 'bs3';
}
/**
* @param {?} theme
* @return {?}
*/
function setTheme(theme) {
guessedVersion = theme;
}
// todo: in ngx-bootstrap, bs4 will became a default one
/**
* @return {?}
*/
function isBs3() {
if (typeof win === 'undefined') {
return true;
}
if (typeof win.__theme === 'undefined') {
if (guessedVersion) {
return guessedVersion === 'bs3';
}
guessedVersion = _guessBsVersion();
return guessedVersion === 'bs3';
}
return win.__theme !== 'bs4';
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @template T
*/
var /**
* @template T
*/
LinkedList = /** @class */ (function () {
function LinkedList() {
this.length = 0;
this.asArray = [];
// Array methods overriding END
}
/**
* @param {?} position
* @return {?}
*/
LinkedList.prototype.get = /**
* @param {?} position
* @return {?}
*/
function (position) {
if (this.length === 0 || position < 0 || position >= this.length) {
return void 0;
}
/** @type {?} */
var current = this.head;
for (var index = 0; index < position; index++) {
current = current.next;
}
return current.value;
};
/**
* @param {?} value
* @param {?=} position
* @return {?}
*/
LinkedList.prototype.add = /**
* @param {?} value
* @param {?=} position
* @return {?}
*/
function (value, position) {
if (position === void 0) { position = this.length; }
if (position < 0 || position > this.length) {
throw new Error('Position is out of the list');
}
/* tslint:disable-next-line: no-any*/
/** @type {?} */
var node = {
value: value,
next: undefined,
previous: undefined
};
if (this.length === 0) {
this.head = node;
this.tail = node;
this.current = node;
}
else {
if (position === 0) {
// first node
node.next = this.head;
this.head.previous = node;
this.head = node;
}
else if (position === this.length) {
// last node
this.tail.next = node;
node.previous = this.tail;
this.tail = node;
}
else {
// node in middle
/** @type {?} */
var currentPreviousNode = this.getNode(position - 1);
/** @type {?} */
var currentNextNode = currentPreviousNode.next;
currentPreviousNode.next = node;
currentNextNode.previous = node;
node.previous = currentPreviousNode;
node.next = currentNextNode;
}
}
this.length++;
this.createInternalArrayRepresentation();
};
/**
* @param {?=} position
* @return {?}
*/
LinkedList.prototype.remove = /**
* @param {?=} position
* @return {?}
*/
function (position) {
if (position === void 0) { position = 0; }
if (this.length === 0 || position < 0 || position >= this.length) {
throw new Error('Position is out of the list');
}
if (position === 0) {
// first node
this.head = this.head.next;
if (this.head) {
// there is no second node
this.head.previous = undefined;
}
else {
// there is no second node
this.tail = undefined;
}
}
else if (position === this.length - 1) {
// last node
this.tail = this.tail.previous;
this.tail.next = undefined;
}
else {
// middle node
/** @type {?} */
var removedNode = this.getNode(position);
removedNode.next.previous = removedNode.previous;
removedNode.previous.next = removedNode.next;
}
this.length--;
this.createInternalArrayRepresentation();
};
/**
* @param {?} position
* @param {?} value
* @return {?}
*/
LinkedList.prototype.set = /**
* @param {?} position
* @param {?} value
* @return {?}
*/
function (position, value) {
if (this.length === 0 || position < 0 || position >= this.length) {
throw new Error('Position is out of the list');
}
/** @type {?} */
var node = this.getNode(position);
node.value = value;
this.createInternalArrayRepresentation();
};
/**
* @return {?}
*/
LinkedList.prototype.toArray = /**
* @return {?}
*/
function () {
return this.asArray;
};
/* tslint:disable-next-line: no-any*/
/* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
LinkedList.prototype.findAll = /* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
/** @type {?} */
var current = this.head;
/* tslint:disable-next-line: no-any*/
/** @type {?} */
var result = [];
for (var index = 0; index < this.length; index++) {
if (fn(current.value, index)) {
result.push({ index: index, value: current.value });
}
current = current.next;
}
return result;
};
// Array methods overriding start
// Array methods overriding start
/**
* @param {...?} args
* @return {?}
*/
LinkedList.prototype.push =
// Array methods overriding start
/**
* @param {...?} args
* @return {?}
*/
function () {
var _this = this;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
/* tslint:disable-next-line: no-any*/
args.forEach((/**
* @param {?} arg
* @return {?}
*/
function (arg) {
_this.add(arg);
}));
return this.length;
};
/**
* @return {?}
*/
LinkedList.prototype.pop = /**
* @return {?}
*/
function () {
if (this.length === 0) {
return undefined;
}
/** @type {?} */
var last = this.tail;
this.remove(this.length - 1);
return last.value;
};
/**
* @param {...?} args
* @return {?}
*/
LinkedList.prototype.unshift = /**
* @param {...?} args
* @return {?}
*/
function () {
var _this = this;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
args.reverse();
/* tslint:disable-next-line: no-any*/
args.forEach((/**
* @param {?} arg
* @return {?}
*/
function (arg) {
_this.add(arg, 0);
}));
return this.length;
};
/**
* @return {?}
*/
LinkedList.prototype.shift = /**
* @return {?}
*/
function () {
if (this.length === 0) {
return undefined;
}
/** @type {?} */
var lastItem = this.head.value;
this.remove();
return lastItem;
};
/* tslint:disable-next-line: no-any*/
/* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
LinkedList.prototype.forEach = /* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
/** @type {?} */
var current = this.head;
for (var index = 0; index < this.length; index++) {
fn(current.value, index);
current = current.next;
}
};
/**
* @param {?} value
* @return {?}
*/
LinkedList.prototype.indexOf = /**
* @param {?} value
* @return {?}
*/
function (value) {
/** @type {?} */
var current = this.head;
/** @type {?} */
var position = 0;
for (var index = 0; index < this.length; index++) {
if (current.value === value) {
position = index;
break;
}
current = current.next;
}
return position;
};
/* tslint:disable-next-line: no-any*/
/* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
LinkedList.prototype.some = /* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
/** @type {?} */
var current = this.head;
/** @type {?} */
var result = false;
while (current && !result) {
if (fn(current.value)) {
result = true;
break;
}
current = current.next;
}
return result;
};
/* tslint:disable-next-line: no-any*/
/* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
LinkedList.prototype.every = /* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
/** @type {?} */
var current = this.head;
/** @type {?} */
var result = true;
while (current && result) {
if (!fn(current.value)) {
result = false;
}
current = current.next;
}
return result;
};
/**
* @return {?}
*/
LinkedList.prototype.toString = /**
* @return {?}
*/
function () {
return '[Linked List]';
};
/* tslint:disable-next-line: no-any*/
/* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
LinkedList.prototype.find = /* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
/** @type {?} */
var current = this.head;
/** @type {?} */
var result;
for (var index = 0; index < this.length; index++) {
if (fn(current.value, index)) {
result = current.value;
break;
}
current = current.next;
}
return result;
};
/* tslint:disable-next-line: no-any*/
/* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
LinkedList.prototype.findIndex = /* tslint:disable-next-line: no-any*/
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
/** @type {?} */
var current = this.head;
/** @type {?} */
var result;
for (var index = 0; index < this.length; index++) {
if (fn(current.value, index)) {
result = index;
break;
}
current = current.next;
}
return result;
};
/* tslint:disable-next-line: no-any*/
/* tslint:disable-next-line: no-any*/
/**
* @protected
* @param {?} position
* @return {?}
*/
LinkedList.prototype.getNode = /* tslint:disable-next-line: no-any*/
/**
* @protected
* @param {?} position
* @return {?}
*/
function (position) {
if (this.length === 0 || position < 0 || position >= this.length) {
throw new Error('Position is out of the list');
}
/** @type {?} */
var current = this.head;
for (var index = 0; index < position; index++) {
current = current.next;
}
return current;
};
/**
* @protected
* @return {?}
*/
LinkedList.prototype.createInternalArrayRepresentation = /**
* @protected
* @return {?}
*/
function () {
/* tslint:disable-next-line: no-any*/
/** @type {?} */
var outArray = [];
/** @type {?} */
var current = this.head;
while (current) {
outArray.push(current.value);
current = current.next;
}
this.asArray = outArray;
};
return LinkedList;
}());
if (false) {
/** @type {?} */
LinkedList.prototype.length;
/**
* @type {?}
* @protected
*/
LinkedList.prototype.head;
/**
* @type {?}
* @protected
*/
LinkedList.prototype.tail;
/**
* @type {?}
* @protected
*/
LinkedList.prototype.current;
/**
* @type {?}
* @protected
*/
LinkedList.prototype.asArray;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*tslint:disable:no-invalid-this */
/* tslint:disable-next-line: no-any */
/**
* @param {?=} defaultValue
* @return {?}
*/
function OnChange(defaultValue) {
/** @type {?} */
var sufix = 'Change';
/* tslint:disable-next-line: no-any */
return (/**
* @param {?} target
* @param {?} propertyKey
* @return {?}
*/
function OnChangeHandler(target, propertyKey) {
/** @type {?} */
var _key = " __" + propertyKey + "Value";
Object.defineProperty(target, propertyKey, {
/* tslint:disable-next-line: no-any */
get: /* tslint:disable-next-line: no-any */
/**
* @return {?}
*/
function () {
return this[_key];
},
/* tslint:disable-next-line: no-any */
set: /* tslint:disable-next-line: no-any */
/**
* @param {?} value
* @return {?}
*/
function (value) {
/** @type {?} */
var prevValue = this[_key];
this[_key] = value;
if (prevValue !== value && this[propertyKey + sufix]) {
this[propertyKey + sufix].emit(value);
}
}
});
});
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var Utils = /** @class */ (function () {
function Utils() {
}
/* tslint:disable-next-line: no-any */
/* tslint:disable-next-line: no-any */
/**
* @param {?} element
* @return {?}
*/
Utils.reflow = /* tslint:disable-next-line: no-any */
/**
* @param {?} element
* @return {?}
*/
function (element) {
/* tslint:disable-next-line: no-any */
((/**
* @param {?} bs
* @return {?}
*/
function (bs) { return bs; }))(element.offsetHeight);
};
// source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js
/* tslint:disable-next-line: no-any */
// source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js
/* tslint:disable-next-line: no-any */
/**
* @param {?} elem
* @return {?}
*/
Utils.getStyles =
// source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js
/* tslint:disable-next-line: no-any */
/**
* @param {?} elem
* @return {?}
*/
function (elem) {
// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
// IE throws on elements created in popups
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
/** @type {?} */
var view = elem.ownerDocument.defaultView;
if (!view || !view.opener) {
view = win;
}
return view.getComputedStyle(elem);
};
return Utils;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var _messagesHash = {};
/** @type {?} */
var _hideMsg = typeof console === 'undefined' || !('warn' in console);
/**
* @param {?} msg
* @return {?}
*/
function warnOnce(msg) {
if (!isDevMode() || _hideMsg || msg in _messagesHash) {
return;
}
_messagesHash[msg] = true;
/*tslint:disable-next-line*/
console.warn(msg);
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { LinkedList, OnChange, Trigger, Utils, document$1 as document, isBs3, listenToTriggers, listenToTriggersV2, parseTriggers, registerEscClick, registerOutsideClick, setTheme, warnOnce, win as window };
//# sourceMappingURL=ngx-bootstrap-utils.js.map