/home/ivoiecob/email.hirewise-va.com/static/js/66.app.efed0cd271cb28c70472.js
"use strict";
(self["webpackChunkafterlogic_aurora_platform"] = self["webpackChunkafterlogic_aurora_platform"] || []).push([[66],{
/***/ "DSoz":
/*!***********************************************!*\
!*** ./modules/CoreWebclient/js/CSelector.js ***!
\***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var _ = __webpack_require__(/*! underscore */ "C3HO"),
$ = __webpack_require__(/*! jquery */ "M4cL"),
ko = __webpack_require__(/*! knockout */ "p09A"),
Types = __webpack_require__(/*! modules/CoreWebclient/js/utils/Types.js */ "ERH9"),
Utils = __webpack_require__(/*! modules/CoreWebclient/js/utils/Common.js */ "uQaC"),
App = __webpack_require__(/*! modules/CoreWebclient/js/App.js */ "yU9o"),
Browser = __webpack_require__(/*! modules/CoreWebclient/js/Browser.js */ "/Odb"),
Popups = __webpack_require__(/*! modules/CoreWebclient/js/Popups.js */ "PMEU");
/**
* @param {Function} list (knockout)
* @param {Function=} fSelectCallback
* @param {Function=} fDeleteCallback
* @param {Function=} fDblClickCallback
* @param {Function=} fEnterCallback
* @param {Function=} multiplyLineFactor (knockout)
* @param {boolean=} bResetCheckedOnClick = false
* @param {boolean=} bCheckOnSelect = false
* @param {boolean=} bUnselectOnCtrl = false
* @param {boolean=} bDisableMultiplySelection = false
* @param {boolean=} bChangeOnSelect = true
* @constructor
*/
function CSelector(list, fSelectCallback, fDeleteCallback, fDblClickCallback, fEnterCallback, multiplyLineFactor, bResetCheckedOnClick, bCheckOnSelect, bUnselectOnCtrl, bDisableMultiplySelection, bChangeOnSelect) {
this.active = ko.observable(false);
this.fSelectCallback = fSelectCallback || function () {};
this.fDeleteCallback = fDeleteCallback || function () {};
this.fDblClickCallback = !App.isMobile() && fDblClickCallback ? fDblClickCallback : function () {};
this.fEnterCallback = fEnterCallback || function () {};
this.bResetCheckedOnClick = !!bResetCheckedOnClick;
this.bCheckOnSelect = !!bCheckOnSelect;
this.bUnselectOnCtrl = !!bUnselectOnCtrl;
this.bDisableMultiplySelection = !!bDisableMultiplySelection;
this.bChangeOnSelect = typeof bChangeOnSelect === 'undefined' ? true : !!bChangeOnSelect;
this.useKeyboardKeys = ko.observable(false);
this.list = ko.observableArray([]);
if (list && list['subscribe']) {
list['subscribe'](function (mValue) {
this.list(mValue);
}, this);
}
this.multiplyLineFactor = multiplyLineFactor;
this.oLast = null;
this.oListScope = null;
this.oScrollScope = null;
this.iTimer = 0;
this.iFactor = 1;
this.KeyUp = Enums.Key.Up;
this.KeyDown = Enums.Key.Down;
this.KeyLeft = Enums.Key.Up;
this.KeyRight = Enums.Key.Down;
if (this.multiplyLineFactor) {
if (this.multiplyLineFactor.subscribe) {
this.multiplyLineFactor.subscribe(function (iValue) {
this.iFactor = 0 < iValue ? iValue : 1;
}, this);
} else {
this.iFactor = Types.pInt(this.multiplyLineFactor);
}
this.KeyUp = Enums.Key.Up;
this.KeyDown = Enums.Key.Down;
this.KeyLeft = Enums.Key.Left;
this.KeyRight = Enums.Key.Right;
if ($('html').hasClass('rtl')) {
this.KeyLeft = Enums.Key.Right;
this.KeyRight = Enums.Key.Left;
}
}
this.sActionSelector = '';
this.sSelectableSelector = '';
this.sCheckboxSelector = '';
var self = this;
// reading returns a list of checked items.
// recording (bool) puts all checked, or unchecked.
this.listChecked = ko.computed({
'read': function read() {
var aList = _.filter(this.list(), function (oItem) {
var bC = oItem && oItem.checked && oItem.checked(),
bS = oItem && oItem.selected && oItem.selected();
return bC || self.bCheckOnSelect && bS;
});
return aList;
},
'write': function write(bValue) {
bValue = !!bValue;
_.each(this.list(), function (oItem) {
oItem.checked(bValue);
});
this.list.valueHasMutated();
},
'owner': this
});
this.checkAll = ko.computed({
'read': function read() {
return 0 < this.listChecked().length;
},
'write': function write(bValue) {
this.listChecked(!!bValue);
},
'owner': this
});
this.selectorHook = ko.observable(null);
this.selectorHook.subscribe(function () {
if (this.active() && this.selectorHook()) {
this.selectorHook().selected(false);
}
}, this, 'beforeChange');
this.selectorHook.subscribe(function () {
if (this.active() && this.selectorHook()) {
this.selectorHook().selected(true);
}
}, this);
this.itemSelected = ko.computed({
'read': this.selectorHook,
'write': function write(oItemToSelect) {
this.selectorHook(oItemToSelect);
if (oItemToSelect) {
self.scrollToSelected();
this.oLast = oItemToSelect;
}
},
'owner': this
});
this.list.subscribe(function (list) {
var selected = this.itemSelected();
if (Array.isArray(list) && selected) {
var hasSelected = !!list.find(function (item) {
if (typeof selected.isEqual === 'function') {
return selected.isEqual(item);
}
return selected === item;
});
if (!hasSelected) {
this.itemSelected(null);
}
} else {
this.itemSelected(null);
}
}, this);
this.listCheckedOrSelected = ko.computed({
'read': function read() {
var oSelected = this.itemSelected(),
aChecked = this.listChecked();
return 0 < aChecked.length ? aChecked : oSelected ? [oSelected] : [];
},
'write': function write(bValue) {
if (!bValue) {
this.itemSelected(null);
this.listChecked(false);
} else {
this.listChecked(true);
}
},
'owner': this
});
this.listCheckedAndSelected = ko.computed({
'read': function read() {
var aResult = [],
oSelected = this.itemSelected(),
aChecked = this.listChecked();
if (aChecked) {
aResult = aChecked.slice(0);
}
if (oSelected && _.indexOf(aChecked, oSelected) === -1) {
aResult.push(oSelected);
}
return aResult;
},
'write': function write(bValue) {
if (!bValue) {
this.itemSelected(null);
this.listChecked(false);
} else {
this.listChecked(true);
}
},
'owner': this
});
this.isIncompleteChecked = ko.computed(function () {
var iM = this.list().length,
iC = this.listChecked().length;
return 0 < iM && 0 < iC && iM > iC;
}, this);
this.onKeydownBound = _.bind(this.onKeydown, this);
}
CSelector.prototype.iTimer = 0;
CSelector.prototype.bResetCheckedOnClick = false;
CSelector.prototype.bCheckOnSelect = false;
CSelector.prototype.bUnselectOnCtrl = false;
CSelector.prototype.bDisableMultiplySelection = false;
CSelector.prototype.getLastOrSelected = function () {
var iCheckedCount = 0,
oLastSelected = null;
_.each(this.list(), function (oItem) {
if (oItem && _.isFunction(oItem.checked)) {
if (oItem.checked()) {
iCheckedCount++;
}
if (oItem.selected()) {
oLastSelected = oItem;
}
}
});
return 0 === iCheckedCount && oLastSelected ? oLastSelected : this.oLast;
};
CSelector.prototype.unbind = function () {
this.active(false);
if (this.itemSelected()) {
this.itemSelected().selected(false);
}
$(document).off('keydown', this.onKeydownBound);
$(this.oListScope).off();
};
/**
* @param {string} sActionSelector css-selector for the active for pressing regions of the list
* @param {string} sSelectableSelector css-selector to the item that was selected
* @param {string} sCheckboxSelector css-selector to the element that checkbox in the list
* @param {*} oListScope
* @param {*} oScrollScope
*/
CSelector.prototype.initOnApplyBindings = function (sActionSelector, sSelectableSelector, sCheckboxSelector, oListScope, oScrollScope) {
this.active(true);
$(document).on('keydown', this.onKeydownBound);
this.oListScope = oListScope;
this.oScrollScope = oScrollScope;
this.sActionSelector = sActionSelector;
this.sSelectableSelector = sSelectableSelector;
this.sCheckboxSelector = sCheckboxSelector;
var self = this,
fEventClickFunction = function fEventClickFunction(oLast, oItem, oEvent) {
var iIndex = 0,
iLength = 0,
oListItem = null,
bChangeRange = false,
bIsInRange = false,
aList = [],
bChecked = false;
oItem = oItem ? oItem : null;
if (oEvent && oEvent.shiftKey) {
if (null !== oItem && null !== oLast && oItem !== oLast) {
aList = self.list();
bChecked = oItem.checked();
for (iIndex = 0, iLength = aList.length; iIndex < iLength; iIndex++) {
oListItem = aList[iIndex];
bChangeRange = false;
if (oListItem === oLast || oListItem === oItem) {
bChangeRange = true;
}
if (bChangeRange) {
bIsInRange = !bIsInRange;
}
if ((bIsInRange || bChangeRange) && oListItem && oListItem.checked) {
oListItem.checked(bChecked);
}
}
}
}
if (oItem) {
self.oLast = oItem;
}
};
$(this.oListScope).on('dblclick', sActionSelector, function (oEvent) {
var oItem = ko.dataFor(this);
if (oItem && oEvent && !oEvent.ctrlKey && !oEvent.altKey && !oEvent.shiftKey) {
self.onDblClick(oItem);
}
});
if (Browser.mobileDevice) {
$(this.oListScope).on('touchstart', sActionSelector, function (e) {
if (!e) {
return;
}
var t2 = e.timeStamp,
t1 = $(this).data('lastTouch') || t2,
dt = t2 - t1,
fingers = e.originalEvent && e.originalEvent.touches ? e.originalEvent.touches.length : 0;
$(this).data('lastTouch', t2);
if (!dt || dt > 250 || fingers > 1) {
return;
}
e.preventDefault();
$(this).trigger('dblclick');
});
}
$(this.oListScope).on('click', sActionSelector, function (oEvent) {
var bClick = true,
oSelected = null,
oLast = self.getLastOrSelected(),
oItem = ko.dataFor(this);
if (oItem && oEvent) {
if (oEvent.shiftKey) {
bClick = false;
if (!self.bDisableMultiplySelection) {
if (null === self.oLast) {
self.oLast = oItem;
}
oItem.checked(!oItem.checked());
fEventClickFunction(oLast, oItem, oEvent);
}
} else if (oEvent.ctrlKey || oEvent.metaKey) {
bClick = false;
if (!self.bDisableMultiplySelection) {
self.oLast = oItem;
oSelected = self.itemSelected();
if (oSelected && !oSelected.checked() && !oItem.checked()) {
oSelected.checked(true);
}
if (self.bUnselectOnCtrl && oItem === self.itemSelected()) {
oItem.checked(!oItem.selected());
self.itemSelected(null);
} else {
oItem.checked(!oItem.checked());
}
}
}
if (bClick) {
self.selectionFunc(oItem);
}
}
});
$(this.oListScope).on('click', sCheckboxSelector, function (oEvent) {
var oItem = ko.dataFor(this);
if (oItem && oEvent && !self.bDisableMultiplySelection) {
if (oEvent.shiftKey) {
if (null === self.oLast) {
self.oLast = oItem;
}
fEventClickFunction(self.getLastOrSelected(), oItem, oEvent);
} else {
self.oLast = oItem;
}
}
if (oEvent && oEvent.stopPropagation) {
oEvent.stopPropagation();
}
});
$(this.oListScope).on('dblclick', sCheckboxSelector, function (oEvent) {
if (oEvent && oEvent.stopPropagation) {
oEvent.stopPropagation();
}
});
};
/**
* @param {Object} oSelected
* @param {number} iEventKeyCode
*
* @return {Object}
*/
CSelector.prototype.getResultSelection = function (oSelected, iEventKeyCode) {
var self = this,
bStop = false,
bNext = false,
oResult = null,
iPageStep = this.iFactor,
bMultiply = !!this.multiplyLineFactor,
iIndex = 0,
iLen = 0,
aList = [];
if (!oSelected && -1 < $.inArray(iEventKeyCode, [this.KeyUp, this.KeyDown, this.KeyLeft, this.KeyRight, Enums.Key.PageUp, Enums.Key.PageDown, Enums.Key.Home, Enums.Key.End])) {
aList = this.list();
if (aList && 0 < aList.length) {
if (-1 < $.inArray(iEventKeyCode, [this.KeyDown, this.KeyRight, Enums.Key.PageUp, Enums.Key.Home])) {
oResult = aList[0];
} else if (-1 < $.inArray(iEventKeyCode, [this.KeyUp, this.KeyLeft, Enums.Key.PageDown, Enums.Key.End])) {
oResult = aList[aList.length - 1];
}
}
} else if (oSelected) {
aList = this.list();
iLen = aList ? aList.length : 0;
if (0 < iLen) {
if (Enums.Key.Home === iEventKeyCode || Enums.Key.PageUp === iEventKeyCode || Enums.Key.End === iEventKeyCode || Enums.Key.PageDown === iEventKeyCode || bMultiply && (Enums.Key.Left === iEventKeyCode || Enums.Key.Right === iEventKeyCode) || !bMultiply && (Enums.Key.Up === iEventKeyCode || Enums.Key.Down === iEventKeyCode)) {
_.each(aList, function (oItem) {
if (!bStop) {
switch (iEventKeyCode) {
case self.KeyUp:
case self.KeyLeft:
if (oSelected === oItem) {
bStop = true;
} else {
oResult = oItem;
}
break;
case Enums.Key.Home:
case Enums.Key.PageUp:
oResult = oItem;
bStop = true;
break;
case self.KeyDown:
case self.KeyRight:
if (bNext) {
oResult = oItem;
bStop = true;
} else if (oSelected === oItem) {
bNext = true;
}
break;
case Enums.Key.End:
case Enums.Key.PageDown:
oResult = oItem;
break;
}
}
});
} else if (bMultiply && this.KeyDown === iEventKeyCode) {
for (; iIndex < iLen; iIndex++) {
if (oSelected === aList[iIndex]) {
iIndex += iPageStep;
if (iLen - 1 < iIndex) {
iIndex -= iPageStep;
}
oResult = aList[iIndex];
break;
}
}
} else if (bMultiply && this.KeyUp === iEventKeyCode) {
for (iIndex = iLen; iIndex >= 0; iIndex--) {
if (oSelected === aList[iIndex]) {
iIndex -= iPageStep;
if (0 > iIndex) {
iIndex += iPageStep;
}
oResult = aList[iIndex];
break;
}
}
}
}
}
return oResult;
};
/**
* @param {Object} oResult
* @param {Object} oSelected
* @param {number} iEventKeyCode
*/
CSelector.prototype.shiftClickResult = function (oResult, oSelected, iEventKeyCode) {
if (oSelected) {
var bMultiply = !!this.multiplyLineFactor,
bInRange = false,
bSelected = false;
if (-1 < $.inArray(iEventKeyCode, bMultiply ? [Enums.Key.Left, Enums.Key.Right] : [Enums.Key.Up, Enums.Key.Down])) {
oSelected.checked(!oSelected.checked());
} else if (-1 < $.inArray(iEventKeyCode, bMultiply ? [Enums.Key.Up, Enums.Key.Down, Enums.Key.PageUp, Enums.Key.PageDown, Enums.Key.Home, Enums.Key.End] : [Enums.Key.Left, Enums.Key.Right, Enums.Key.PageUp, Enums.Key.PageDown, Enums.Key.Home, Enums.Key.End])) {
bSelected = !oSelected.checked();
_.each(this.list(), function (oItem) {
var Add = false;
if (oItem === oResult || oSelected === oItem) {
bInRange = !bInRange;
Add = true;
}
if (bInRange || Add) {
oItem.checked(bSelected);
Add = false;
}
});
if (bMultiply && oResult && (iEventKeyCode === Enums.Key.Up || iEventKeyCode === Enums.Key.Down)) {
oResult.checked(!oResult.checked());
}
}
}
};
/**
* @param {number} iEventKeyCode
* @param {boolean} bShiftKey
*/
CSelector.prototype.clickNewSelectPosition = function (iEventKeyCode, bShiftKey) {
var oSelected = this.itemSelected(),
oResult = this.getResultSelection(oSelected, iEventKeyCode);
if (oResult) {
if (bShiftKey) {
this.shiftClickResult(oResult, oSelected, iEventKeyCode);
}
this.selectionFunc(oResult);
}
};
/**
* @param {Object} oEvent
*
* @return {boolean}
*/
CSelector.prototype.onKeydown = function (oEvent) {
var bResult = true,
iCode = 0;
if (this.useKeyboardKeys() && oEvent && !Utils.isTextFieldFocused() && !Popups.hasOpenedMaximizedPopups()) {
iCode = oEvent.keyCode;
if (!oEvent.ctrlKey && (this.KeyUp === iCode || this.KeyDown === iCode || this.KeyLeft === iCode || this.KeyRight === iCode || Enums.Key.PageUp === iCode || Enums.Key.PageDown === iCode || Enums.Key.Home === iCode || Enums.Key.End === iCode)) {
this.clickNewSelectPosition(iCode, oEvent.shiftKey);
bResult = false;
} else if (Enums.Key.Del === iCode && !oEvent.ctrlKey && !oEvent.shiftKey) {
if (0 < this.list().length) {
this.onDelete();
bResult = false;
}
} else if (Enums.Key.Enter === iCode) {
if (0 < this.list().length && !oEvent.ctrlKey) {
this.onEnter(this.itemSelected());
bResult = false;
}
} else if (oEvent.ctrlKey && !oEvent.altKey && !oEvent.shiftKey && Enums.Key.a === iCode) {
this.checkAll(!(this.checkAll() && !this.isIncompleteChecked()));
bResult = false;
}
}
return bResult;
};
CSelector.prototype.onDelete = function () {
this.fDeleteCallback.call(this, this.listCheckedOrSelected());
};
/**
* @param {Object} oItem
*/
CSelector.prototype.onEnter = function (oItem) {
if (oItem) {
this.fEnterCallback.call(this, oItem);
}
};
/**
* @param {Object} oItem
*/
CSelector.prototype.selectionFunc = function (oItem) {
if (this.bChangeOnSelect) {
this.itemSelected(null);
}
if (this.bResetCheckedOnClick) {
this.listChecked(false);
}
if (this.bChangeOnSelect) {
this.itemSelected(oItem);
}
this.fSelectCallback.call(this, oItem);
};
/**
* @param {Object} oItem
*/
CSelector.prototype.onDblClick = function (oItem) {
this.fDblClickCallback.call(this, oItem);
};
CSelector.prototype.koCheckAll = function () {
return ko.computed({
'read': this.checkAll,
'write': this.checkAll,
'owner': this
});
};
CSelector.prototype.koCheckAllIncomplete = function () {
return ko.computed({
'read': this.isIncompleteChecked,
'write': this.isIncompleteChecked,
'owner': this
});
};
/**
* @return {boolean}
*/
CSelector.prototype.scrollToSelected = function () {
if (!this.oListScope || !this.oScrollScope || !this.oScrollScope[0] || !this.oScrollScope[0].isConnected) {
return false;
}
var iOffset = 20,
oSelected = $(this.sSelectableSelector, this.oScrollScope),
// oPos = oSelected.position(),
offsetTop = oSelected[0] ? oSelected[0].offsetTop : undefined,
iVisibleHeight = this.oScrollScope.height(),
iScrollTop = this.oScrollScope.scrollTop(),
iSelectedHeight = oSelected.outerHeight(),
// bSelectedVisible = oPos && (oPos.top >= iScrollTop) && (oPos.top <= (iScrollTop + iVisibleHeight - iSelectedHeight))
bSelectedVisible = offsetTop && offsetTop >= iScrollTop && offsetTop <= iScrollTop + iVisibleHeight - iSelectedHeight;
if (!bSelectedVisible) {
if (offsetTop < iScrollTop + iVisibleHeight && offsetTop + iSelectedHeight > iScrollTop + iVisibleHeight) {
// selected item is partially visible from below
// make it visible at bottom with offset
this.oScrollScope.scrollTop(offsetTop + iSelectedHeight + iOffset - iVisibleHeight);
} else {
// make selected item visible at top with offset
this.oScrollScope.scrollTop(offsetTop - iOffset);
}
return true;
}
return false;
};
module.exports = CSelector;
/***/ })
}]);