Files
icehrm/web/node_modules/rc-picker/es/utils/uiUtil.js
2020-05-20 18:47:29 +02:00

240 lines
5.9 KiB
JavaScript

function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
import KeyCode from "rc-util/es/KeyCode";
var scrollIds = new Map();
/* eslint-disable no-param-reassign */
export function scrollTo(element, to, duration) {
if (scrollIds.get(element)) {
cancelAnimationFrame(scrollIds.get(element));
} // jump to target if duration zero
if (duration <= 0) {
scrollIds.set(element, requestAnimationFrame(function () {
element.scrollTop = to;
}));
return;
}
var difference = to - element.scrollTop;
var perTick = difference / duration * 10;
scrollIds.set(element, requestAnimationFrame(function () {
element.scrollTop += perTick;
if (element.scrollTop !== to) {
scrollTo(element, to, duration - 10);
}
}));
}
export function createKeyDownHandler(event, _ref) {
var onLeftRight = _ref.onLeftRight,
onCtrlLeftRight = _ref.onCtrlLeftRight,
onUpDown = _ref.onUpDown,
onPageUpDown = _ref.onPageUpDown,
onEnter = _ref.onEnter;
var which = event.which,
ctrlKey = event.ctrlKey,
metaKey = event.metaKey;
switch (which) {
case KeyCode.LEFT:
if (ctrlKey || metaKey) {
if (onCtrlLeftRight) {
onCtrlLeftRight(-1);
return true;
}
} else if (onLeftRight) {
onLeftRight(-1);
return true;
}
/* istanbul ignore next */
break;
case KeyCode.RIGHT:
if (ctrlKey || metaKey) {
if (onCtrlLeftRight) {
onCtrlLeftRight(1);
return true;
}
} else if (onLeftRight) {
onLeftRight(1);
return true;
}
/* istanbul ignore next */
break;
case KeyCode.UP:
if (onUpDown) {
onUpDown(-1);
return true;
}
/* istanbul ignore next */
break;
case KeyCode.DOWN:
if (onUpDown) {
onUpDown(1);
return true;
}
/* istanbul ignore next */
break;
case KeyCode.PAGE_UP:
if (onPageUpDown) {
onPageUpDown(-1);
return true;
}
/* istanbul ignore next */
break;
case KeyCode.PAGE_DOWN:
if (onPageUpDown) {
onPageUpDown(1);
return true;
}
/* istanbul ignore next */
break;
case KeyCode.ENTER:
if (onEnter) {
onEnter();
return true;
}
/* istanbul ignore next */
break;
}
return false;
} // ===================== Format =====================
export function getDefaultFormat(format, picker, showTime, use12Hours) {
var mergedFormat = format;
if (!mergedFormat) {
switch (picker) {
case 'time':
mergedFormat = use12Hours ? 'hh:mm:ss a' : 'HH:mm:ss';
break;
case 'week':
mergedFormat = 'gggg-wo';
break;
case 'month':
mergedFormat = 'YYYY-MM';
break;
case 'quarter':
mergedFormat = 'YYYY-[Q]Q';
break;
case 'year':
mergedFormat = 'YYYY';
break;
default:
mergedFormat = showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD';
}
}
return mergedFormat;
}
export function getInputSize(picker, format) {
var defaultSize = picker === 'time' ? 8 : 10;
return Math.max(defaultSize, format.length) + 2;
}
var globalClickFunc = null;
var clickCallbacks = new Set();
export function addGlobalMouseDownEvent(callback) {
if (!globalClickFunc && typeof window !== 'undefined' && window.addEventListener) {
globalClickFunc = function globalClickFunc(e) {
// Clone a new list to avoid repeat trigger events
_toConsumableArray(clickCallbacks).forEach(function (queueFunc) {
queueFunc(e);
});
};
window.addEventListener('mousedown', globalClickFunc);
}
clickCallbacks.add(callback);
return function () {
clickCallbacks.delete(callback);
if (clickCallbacks.size === 0) {
window.removeEventListener('mousedown', globalClickFunc);
globalClickFunc = null;
}
};
} // ====================== Mode ======================
var getYearNextMode = function getYearNextMode(next) {
if (next === 'month' || next === 'date') {
return 'year';
}
return next;
};
var getMonthNextMode = function getMonthNextMode(next) {
if (next === 'date') {
return 'month';
}
return next;
};
var getQuarterNextMode = function getQuarterNextMode(next) {
if (next === 'month' || next === 'date') {
return 'quarter';
}
return next;
};
var getWeekNextMode = function getWeekNextMode(next) {
if (next === 'date') {
return 'week';
}
return next;
};
export var PickerModeMap = {
year: getYearNextMode,
month: getMonthNextMode,
quarter: getQuarterNextMode,
week: getWeekNextMode,
time: null,
date: null
};
export function elementsContains(elements, target) {
return elements.some(function (ele) {
return ele && ele.contains(target);
});
}