@knovator/masters-admin
Version:
Package for integrating Masters, Submasters functionality in React projects
1,338 lines (1,203 loc) • 171 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var classNames = require('classnames');
var CSSTransition = require('react-transition-group/CSSTransition');
var reactHookForm = require('react-hook-form');
var reactTable = require('react-table');
var reactDropzone = require('react-dropzone');
var reactBeautifulDnd = require('react-beautiful-dnd');
var fetchUrl = require('@knovator/api');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
var CSSTransition__default = /*#__PURE__*/_interopDefaultLegacy(CSSTransition);
var fetchUrl__default = /*#__PURE__*/_interopDefaultLegacy(fetchUrl);
function _regeneratorRuntime() {
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
_regeneratorRuntime = function () {
return exports;
};
var exports = {},
Op = Object.prototype,
hasOwn = Op.hasOwnProperty,
$Symbol = "function" == typeof Symbol ? Symbol : {},
iteratorSymbol = $Symbol.iterator || "@@iterator",
asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
function define(obj, key, value) {
return Object.defineProperty(obj, key, {
value: value,
enumerable: !0,
configurable: !0,
writable: !0
}), obj[key];
}
try {
define({}, "");
} catch (err) {
define = function (obj, key, value) {
return obj[key] = value;
};
}
function wrap(innerFn, outerFn, self, tryLocsList) {
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
generator = Object.create(protoGenerator.prototype),
context = new Context(tryLocsList || []);
return generator._invoke = function (innerFn, self, context) {
var state = "suspendedStart";
return function (method, arg) {
if ("executing" === state) throw new Error("Generator is already running");
if ("completed" === state) {
if ("throw" === method) throw arg;
return doneResult();
}
for (context.method = method, context.arg = arg;;) {
var delegate = context.delegate;
if (delegate) {
var delegateResult = maybeInvokeDelegate(delegate, context);
if (delegateResult) {
if (delegateResult === ContinueSentinel) continue;
return delegateResult;
}
}
if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
if ("suspendedStart" === state) throw state = "completed", context.arg;
context.dispatchException(context.arg);
} else "return" === context.method && context.abrupt("return", context.arg);
state = "executing";
var record = tryCatch(innerFn, self, context);
if ("normal" === record.type) {
if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
return {
value: record.arg,
done: context.done
};
}
"throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
}
};
}(innerFn, self, context), generator;
}
function tryCatch(fn, obj, arg) {
try {
return {
type: "normal",
arg: fn.call(obj, arg)
};
} catch (err) {
return {
type: "throw",
arg: err
};
}
}
exports.wrap = wrap;
var ContinueSentinel = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var IteratorPrototype = {};
define(IteratorPrototype, iteratorSymbol, function () {
return this;
});
var getProto = Object.getPrototypeOf,
NativeIteratorPrototype = getProto && getProto(getProto(values([])));
NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
define(prototype, method, function (arg) {
return this._invoke(method, arg);
});
});
}
function AsyncIterator(generator, PromiseImpl) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if ("throw" !== record.type) {
var result = record.arg,
value = result.value;
return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
}) : PromiseImpl.resolve(value).then(function (unwrapped) {
result.value = unwrapped, resolve(result);
}, function (error) {
return invoke("throw", error, resolve, reject);
});
}
reject(record.arg);
}
var previousPromise;
this._invoke = function (method, arg) {
function callInvokeWithMethodAndArg() {
return new PromiseImpl(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
};
}
function maybeInvokeDelegate(delegate, context) {
var method = delegate.iterator[context.method];
if (undefined === method) {
if (context.delegate = null, "throw" === context.method) {
if (delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel;
context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method");
}
return ContinueSentinel;
}
var record = tryCatch(method, delegate.iterator, context.arg);
if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
var info = record.arg;
return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
}
function pushTryEntry(locs) {
var entry = {
tryLoc: locs[0]
};
1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
}
function resetTryEntry(entry) {
var record = entry.completion || {};
record.type = "normal", delete record.arg, entry.completion = record;
}
function Context(tryLocsList) {
this.tryEntries = [{
tryLoc: "root"
}], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
}
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) return iteratorMethod.call(iterable);
if ("function" == typeof iterable.next) return iterable;
if (!isNaN(iterable.length)) {
var i = -1,
next = function next() {
for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
return next.value = undefined, next.done = !0, next;
};
return next.next = next;
}
}
return {
next: doneResult
};
}
function doneResult() {
return {
value: undefined,
done: !0
};
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
var ctor = "function" == typeof genFun && genFun.constructor;
return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
}, exports.mark = function (genFun) {
return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
}, exports.awrap = function (arg) {
return {
__await: arg
};
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
return this;
}), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
void 0 === PromiseImpl && (PromiseImpl = Promise);
var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
}, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
return this;
}), define(Gp, "toString", function () {
return "[object Generator]";
}), exports.keys = function (object) {
var keys = [];
for (var key in object) keys.push(key);
return keys.reverse(), function next() {
for (; keys.length;) {
var key = keys.pop();
if (key in object) return next.value = key, next.done = !1, next;
}
return next.done = !0, next;
};
}, exports.values = values, Context.prototype = {
constructor: Context,
reset: function (skipTempReset) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
},
stop: function () {
this.done = !0;
var rootRecord = this.tryEntries[0].completion;
if ("throw" === rootRecord.type) throw rootRecord.arg;
return this.rval;
},
dispatchException: function (exception) {
if (this.done) throw exception;
var context = this;
function handle(loc, caught) {
return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i],
record = entry.completion;
if ("root" === entry.tryLoc) return handle("end");
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc"),
hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
} else if (hasCatch) {
if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
} else {
if (!hasFinally) throw new Error("try statement without catch or finally");
if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
}
}
}
},
abrupt: function (type, arg) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
var finallyEntry = entry;
break;
}
}
finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
var record = finallyEntry ? finallyEntry.completion : {};
return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
},
complete: function (record, afterLoc) {
if ("throw" === record.type) throw record.arg;
return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
},
finish: function (finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
}
},
catch: function (tryLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc === tryLoc) {
var record = entry.completion;
if ("throw" === record.type) {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
}
throw new Error("illegal catch attempt");
},
delegateYield: function (iterable, resultName, nextLoc) {
return this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
}, "next" === this.method && (this.arg = undefined), ContinueSentinel;
}
}, exports;
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function () {
var self = this,
args = arguments;
return new Promise(function (resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
function _extends() {
_extends = Object.assign ? Object.assign.bind() : function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
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(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
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;
}
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
if (it) return (it = it.call(o)).next.bind(it);
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (it) o = it;
var i = 0;
return function () {
if (i >= o.length) return {
done: true
};
return {
done: false,
value: o[i++]
};
};
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var DEFAULT_OFFSET_PAYLOAD = 0;
var DEFAULT_LIMIT = 20;
var SORT_ASCENDING = 1;
var SORT_DESCENDING = -1;
var PAGE_LIMITS = [10, 20, 30, 40, 50];
var DECIMAL_REDIX = 10;
var DEFAULT_CURRENT_PAGE = 1;
var EXCLUDE_SORT_COLUMNS = ["actions", "sequence"];
var INTERNAL_ERROR_CODE = "INTERNAL_ERROR";
var CALLBACK_CODES;
(function (CALLBACK_CODES) {
CALLBACK_CODES["GET_ALL"] = "GET_ALL";
CALLBACK_CODES["GET_SINGLE"] = "GET_SINGLE";
CALLBACK_CODES["CREATE"] = "CREATE";
CALLBACK_CODES["UPDATE"] = "UPDATE";
CALLBACK_CODES["DELETE"] = "DELETE";
CALLBACK_CODES["IMAGE_UPLOAD"] = "IMAGE_UPLOAD";
CALLBACK_CODES["IMAGE_REMOVE"] = "IMAGE_REMOVE";
CALLBACK_CODES["SEQUENCE_UPDATE"] = "SEQUENCE_UPDATE";
CALLBACK_CODES["INTERNAL"] = "INTERNAL";
})(CALLBACK_CODES || (CALLBACK_CODES = {}));
var DEFAULT_PERMISSIONS = {
list: true,
add: true,
destroy: true,
partialUpdate: true,
sequencing: false,
update: true
};
var TRANSLATION_PAIRS_SUBMASTERS = {
uploadFile: "Upload a file",
dragDrop: "or drag and drop",
allowedFormat: "PNG, JPG, SVG up to 2 MB",
sequence: "Sequence",
cover: "Cover Image",
searchSubMasters: "Search Sub Masters",
addSubMaster: "Add Sub Master",
updateSubMaster: "Edit Sub Master",
noDataText: "No data found! Click on 'Add Sub Master' to add one.",
selectMaster: "select 'Master' to see respective 'SubMasters'" // Select Master Message
};
var TRANSLATION_PAIRS_MASTERS = {
addMaster: "Add Master",
updateMaster: "Edit Master",
searchMaster: "Search Masters",
noDataText: "No data found! Click on 'Add Master' to add one." // No Data Text
};
var TRANSLATION_PAIRS_COMMON = {
permanentlyDelete: "You are about to permanently delete the",
lossOfData: "This action can lead to data loss. To prevent accidental actions we ask you to confirm your intention.",
pleaseType: "Please type",
toProceedOrCancel: "to processed or close this modal to cancel.",
confirm: "Confirm",
page: "Page",
next: "Next",
previous: "Previous",
indicatesRequired: "Indicates fields are required",
confirmationRequired: "Confirmation Required",
cancel: "Cancel",
yes: "Yes",
"delete": "Delete",
create: "Create",
update: "Update",
show: "Show",
showing: "Showing",
of: "of",
typeHerePlaceholder: "Type Here",
code: "Code",
codePlaceholder: "Enter code",
codeRequired: "Code is required",
name: "Name",
namePlaceholder: "Enter name",
nameRequired: "Name is required",
webDisplay: "Web Display",
enterWebDisplay: "Enter Web Display",
description: "Discription",
enterDescription: "Enter Discription",
active: "Active",
actions: "Actions"
};
var ProviderContext = /*#__PURE__*/React.createContext(null);
var Provider = function Provider(_ref) {
var children = _ref.children,
baseUrl = _ref.baseUrl,
token = _ref.token,
_ref$dataGetter = _ref.dataGetter,
dataGetter = _ref$dataGetter === void 0 ? function (response) {
return response.data.docs;
} : _ref$dataGetter,
_ref$paginationGetter = _ref.paginationGetter,
paginationGetter = _ref$paginationGetter === void 0 ? function (response) {
return response.data;
} : _ref$paginationGetter,
_ref$onError = _ref.onError,
onError = _ref$onError === void 0 ? function () {} : _ref$onError,
_ref$onSuccess = _ref.onSuccess,
onSuccess = _ref$onSuccess === void 0 ? function () {} : _ref$onSuccess,
_ref$onLogout = _ref.onLogout,
onLogout = _ref$onLogout === void 0 ? function () {} : _ref$onLogout,
translations = _ref.translations,
_ref$switchClass = _ref.switchClass,
switchClass = _ref$switchClass === void 0 ? "kms_switch" : _ref$switchClass;
var _useState = React.useState(),
selectedMaster = _useState[0],
setSelectedMaster = _useState[1];
var _useState2 = React.useState([]),
languages = _useState2[0],
setLanguages = _useState2[1];
var ctxDataGetter = typeof dataGetter === "function" ? dataGetter : function (response) {
var _response$data;
return response == null ? void 0 : (_response$data = response.data) == null ? void 0 : _response$data.docs;
};
var ctxPaginatonGetter = typeof paginationGetter === "function" ? paginationGetter : function (response) {
return response == null ? void 0 : response.data;
};
return React__default["default"].createElement(ProviderContext.Provider, {
value: {
baseUrl: baseUrl,
token: token,
languages: languages,
setLanguages: setLanguages,
dataGetter: ctxDataGetter,
paginationGetter: ctxPaginatonGetter,
onError: onError,
onSuccess: onSuccess,
onLogout: onLogout,
selectedMaster: selectedMaster,
setSelectedMaster: setSelectedMaster,
switchClass: switchClass,
commonTranslations: _extends({}, TRANSLATION_PAIRS_COMMON, translations)
}
}, children);
};
function useProviderState() {
var context = React.useContext(ProviderContext);
if (!context) throw new Error("Provider Context must be used within ProviderContext.Provider");
return context;
}
var Button = function Button(_ref) {
var label = _ref.label,
onClick = _ref.onClick,
disabled = _ref.disabled,
_ref$variant = _ref.variant,
variant = _ref$variant === void 0 ? "primary" : _ref$variant,
_ref$size = _ref.size,
size = _ref$size === void 0 ? "md" : _ref$size,
className = _ref.className;
return React__default["default"].createElement("button", {
onClick: onClick,
className: classNames__default["default"]("kms_btn", {
"kms_btn-primary": variant === "primary",
"kms_btn-secondary": variant === "secondary",
"kms_btn-sm": size === "sm"
}, className),
disabled: disabled
}, label);
};
var CloseIcon = function CloseIcon(_ref) {
var className = _ref.className;
return (// <Tooltip message="Close">
React__default["default"].createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
width: "16",
height: "16",
viewBox: "0 0 18 18",
className: className,
fill: "currentColor"
}, React__default["default"].createElement("path", {
id: "CloseBtn",
d: "M5.455,5.455V0H7.273V5.455h5.455V7.273H7.273v5.455H5.455V7.273H0V5.455Z",
transform: "translate(0 9) rotate(-45)",
fill: "#02a2ff"
})) // </Tooltip>
);
};
var Drawer = function Drawer(_ref) {
var children = _ref.children,
open = _ref.open,
onClose = _ref.onClose,
title = _ref.title,
footerContent = _ref.footerContent;
var nodeRef = React.useRef(null);
return React__default["default"].createElement(CSSTransition__default["default"], {
ref: nodeRef,
"in": open,
timeout: {
enter: 250,
exit: 350
},
classNames: "kms_drawer",
mountOnEnter: true,
unmountOnExit: true
}, React__default["default"].createElement("div", {
className: "kms_drawer-wrapper-1",
"aria-labelledby": "modal",
role: "dialog",
"aria-modal": "true",
ref: nodeRef,
"data-testid": "drawer"
}, React__default["default"].createElement("div", {
className: "kms_drawer-wrapper-2"
}, React__default["default"].createElement("div", {
className: "kms_drawer-backdrop",
role: "button",
onClick: onClose,
onKeyDown: onClose,
tabIndex: 0
}), React__default["default"].createElement("div", {
className: "kms_drawer-container-1"
}, React__default["default"].createElement("div", {
className: "kms_drawer-container-2"
}, React__default["default"].createElement("div", {
className: "kms_drawer-close-section"
}, React__default["default"].createElement("button", {
type: "button",
className: "kms_drawer-close-btn",
onClick: onClose,
"data-testid": "drawer-close"
}, React__default["default"].createElement("span", {
className: "kms_sr-only"
}, "Close panel"), React__default["default"].createElement(CloseIcon, null))), React__default["default"].createElement("div", {
className: "kms_drawer-main"
}, React__default["default"].createElement("div", {
className: "kms_drawer-header"
}, React__default["default"].createElement("p", {
className: "kms_drawer-header-title"
}, title)), React__default["default"].createElement("div", {
className: "kms_darwer-content"
}, children), footerContent && React__default["default"].createElement("div", {
className: "kms_drawer-footer"
}, footerContent)))))));
};
var capitalizeFirstLetter = function capitalizeFirstLetter(string) {
var _string, _string$charAt, _string2;
if (string === void 0) {
string = "";
}
return "" + ((_string = string) == null ? void 0 : (_string$charAt = _string.charAt(0)) == null ? void 0 : _string$charAt.toUpperCase()) + ((_string2 = string) == null ? void 0 : _string2.slice(1));
};
var changeToCode = function changeToCode(string) {
var _string$replace, _string$replace$toUpp;
if (string === void 0) {
string = "";
}
return (_string$replace = string.replace(/[^\s\w]/gi, "")) == null ? void 0 : (_string$replace$toUpp = _string$replace.toUpperCase()) == null ? void 0 : _string$replace$toUpp.replace(/ /g, "_");
};
var isObject = function isObject(data) {
var _data$constructor;
return (data == null ? void 0 : (_data$constructor = data.constructor) == null ? void 0 : _data$constructor.name) === "Object";
};
var isString = function isString(data) {
var _data$constructor2;
return (data == null ? void 0 : (_data$constructor2 = data.constructor) == null ? void 0 : _data$constructor2.name) === "String";
};
var isArray = function isArray(data) {
var _data$constructor3;
return (data == null ? void 0 : (_data$constructor3 = data.constructor) == null ? void 0 : _data$constructor3.name) === "Array";
};
var isEmpty = function isEmpty(data) {
if (isObject(data)) return Object.keys(data).length === 0;
if (isArray(data)) return data.length === 0;
if (isString(data)) return !data || data.length === 0;
if ([undefined, null, ""].includes(data)) return true;
return false;
};
var build_path = function build_path() {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return args.map(function (part, i) {
if (i === 0) {
return part.trim().replace(/[\/]*$/g, "");
} else {
return part.trim().replace(/(^[\/]*|[\/]*$)/g, "");
}
}).filter(function (x) {
return x.length;
}).join("/");
};
var Checkbox = function Checkbox(_ref) {
var onChange = _ref.onChange,
rest = _ref.rest,
label = _ref.label,
error = _ref.error,
className = _ref.className,
disabled = _ref.disabled;
return React__default["default"].createElement("div", {
className: "kms_input-wrapper"
}, label && React__default["default"].createElement("label", {
className: "kms_input-label"
}, label), React__default["default"].createElement("input", _extends({
"data-testid": "input-checkbox-" + label,
className: classNames__default["default"]("kms_input-checkbox", className),
disabled: disabled,
type: "checkbox",
onChange: onChange
}, rest)), error && React__default["default"].createElement("p", {
className: "kms_input-error"
}, error));
};
var Input$2 = function Input(_ref) {
var onChange = _ref.onChange,
onInput = _ref.onInput,
disabled = _ref.disabled,
value = _ref.value,
_ref$type = _ref.type,
type = _ref$type === void 0 ? "text" : _ref$type,
placeholder = _ref.placeholder,
_ref$rest = _ref.rest,
rest = _ref$rest === void 0 ? {} : _ref$rest,
_ref$label = _ref.label,
label = _ref$label === void 0 ? "" : _ref$label,
error = _ref.error,
className = _ref.className,
isRequired = _ref.isRequired,
_ref$wrapperClassName = _ref.wrapperClassName,
wrapperClassName = _ref$wrapperClassName === void 0 ? "" : _ref$wrapperClassName;
return React__default["default"].createElement("div", {
className: classNames__default["default"]("kms_input-wrapper", wrapperClassName)
}, label && React__default["default"].createElement("label", {
className: "kms_input-label"
}, label, isRequired && React__default["default"].createElement("span", {
className: "kms_required_astrisk"
}, " *")), React__default["default"].createElement("input", _extends({
"data-testid": "input-" + type + "-" + label,
className: classNames__default["default"]("kms_input", className),
type: type,
value: value,
onInput: onInput,
placeholder: placeholder
}, rest, {
onChange: onChange,
disabled: disabled
})), error && React__default["default"].createElement("p", {
className: "kms_input-error"
}, error));
};
var Select = function Select(_ref) {
var onChange = _ref.onChange,
value = _ref.value,
rest = _ref.rest,
label = _ref.label,
error = _ref.error,
_ref$options = _ref.options,
options = _ref$options === void 0 ? [] : _ref$options,
className = _ref.className,
isRequired = _ref.isRequired,
disabled = _ref.disabled;
return React__default["default"].createElement("div", {
className: "kms_input-wrapper"
}, label && React__default["default"].createElement("label", {
className: "kms_input-label"
}, label, isRequired && React__default["default"].createElement("span", {
className: "kms_required_astrisk"
}, " *")), React__default["default"].createElement("select", _extends({
"data-testid": "input-select-" + label,
value: value,
onChange: onChange,
className: classNames__default["default"]("kms_input", className),
disabled: disabled
}, rest), options.map(function (option, index) {
return React__default["default"].createElement("option", {
value: option.value,
key: index,
"data-testid": "select-option"
}, option.label);
})), error && React__default["default"].createElement("p", {
className: "kms_input-error"
}, error));
};
var Textarea = function Textarea(_ref) {
var onChange = _ref.onChange,
onInput = _ref.onInput,
value = _ref.value,
placeholder = _ref.placeholder,
rest = _ref.rest,
label = _ref.label,
error = _ref.error,
disabled = _ref.disabled,
className = _ref.className,
isRequired = _ref.isRequired;
return React__default["default"].createElement("div", {
className: "kms_input-wrapper"
}, label && React__default["default"].createElement("label", {
className: "kms_input-label"
}, label, isRequired && React__default["default"].createElement("span", {
className: "kms_required_astrisk"
}, " *")), React__default["default"].createElement("textarea", _extends({
"data-testid": "input-textarea-" + label,
className: classNames__default["default"]("kms_input", className),
value: value,
onChange: onChange,
placeholder: placeholder,
onInput: onInput,
disabled: disabled
}, rest)), error && React__default["default"].createElement("p", {
className: "kms_input-error"
}, error));
};
var Input$1 = function Input(_ref) {
var onChange = _ref.onChange,
onInput = _ref.onInput,
disabled = _ref.disabled,
value = _ref.value,
placeholder = _ref.placeholder,
_ref$rest = _ref.rest,
rest = _ref$rest === void 0 ? {} : _ref$rest,
className = _ref.className,
_ref$wrapperClassName = _ref.wrapperClassName,
wrapperClassName = _ref$wrapperClassName === void 0 ? "" : _ref$wrapperClassName;
return React__default["default"].createElement("div", {
className: classNames__default["default"]("kms_search-input-wrapper", wrapperClassName)
}, React__default["default"].createElement("div", {
className: "kms_search-icon"
}, React__default["default"].createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
width: "14.314",
height: "14.314",
viewBox: "0 0 16.314 16.314"
}, React__default["default"].createElement("path", {
d: "M14.874,13.739l3.44,3.439-1.136,1.136-3.439-3.44a7.229,7.229,0,1,1,1.136-1.136Zm-1.611-.6a5.619,5.619,0,1,0-.12.12l.12-.12Z",
transform: "translate(-2 -2)",
fill: "currentColor"
}))), React__default["default"].createElement("input", _extends({
type: "text",
className: classNames__default["default"]("kms_search-input", className),
value: value,
onInput: onInput,
placeholder: placeholder
}, rest, {
onChange: onChange,
disabled: disabled
})));
};
var Input = /*#__PURE__*/Object.assign(Input$2, {
Textarea: Textarea,
Select: Select,
Checkbox: Checkbox,
SearchInput: Input$1
});
var Form = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
var schema = _ref.schema,
onSubmit = _ref.onSubmit,
data = _ref.data,
_ref$isUpdating = _ref.isUpdating,
isUpdating = _ref$isUpdating === void 0 ? false : _ref$isUpdating,
languages = _ref.languages,
_ref$indicatesRequire = _ref.indicatesRequired,
indicatesRequired = _ref$indicatesRequire === void 0 ? TRANSLATION_PAIRS_COMMON.indicatesRequired : _ref$indicatesRequire;
var _useForm = reactHookForm.useForm(),
register = _useForm.register,
errors = _useForm.formState.errors,
control = _useForm.control,
handleSubmit = _useForm.handleSubmit,
reset = _useForm.reset,
setValue = _useForm.setValue,
_setError = _useForm.setError; // setting data values
React.useEffect(function () {
if (!isEmpty(data)) {
schema.forEach(function (schemaItem) {
setValue(schemaItem.accessor, data[schemaItem.accessor]);
});
}
}, [data, reset, schema, setValue]); // setting default values
React.useEffect(function () {
if (isEmpty(data)) {
var defaultValues = schema.reduce(function (values, schemaItem) {
if (typeof schemaItem.defaultValue !== "undefined") values[schemaItem.accessor] = schemaItem.defaultValue;
return values;
}, {});
reset(defaultValues);
}
}, [data, reset, schema]);
var inputRenderer = function inputRenderer(schema) {
var _errors$schema$access, _errors$schema$access2, _errors$schema$access3, _errors$schema$access6;
var input;
if (schema.type) {
switch (schema.type) {
case "checkbox":
input = React__default["default"].createElement(Input.Checkbox, {
error: (_errors$schema$access = errors[schema.accessor]) == null ? void 0 : _errors$schema$access.message,
label: schema.label,
rest: register(schema.accessor, schema.validations || {}),
className: "kms_block",
disabled: isUpdating && typeof schema.editable !== "undefined" && !schema.editable
});
break;
case "select":
input = React__default["default"].createElement(Input.Select, {
options: schema.options,
label: schema.label,
error: (_errors$schema$access2 = errors[schema.accessor]) == null ? void 0 : _errors$schema$access2.message,
rest: register(schema.accessor, schema.validations || {}),
className: "kms_w-full",
disabled: isUpdating && typeof schema.editable !== "undefined" && !schema.editable,
isRequired: schema.isRequired
});
break;
case "textarea":
input = React__default["default"].createElement(Input.Textarea, {
error: (_errors$schema$access3 = errors[schema.accessor]) == null ? void 0 : _errors$schema$access3.message,
label: schema.label,
rest: register(schema.accessor, schema.validations || {}),
onInput: schema.onInput,
disabled: isUpdating && schema.editable,
className: "kms_w-full kms_p-2",
placeholder: schema.placeholder,
isRequired: schema.isRequired
});
break;
case "text":
case "number":
default:
if (Array.isArray(languages) && languages.length > 0 && schema.accessor === "names") {
input = languages.map(function (lang) {
var _errors$schema$access4, _errors$schema$access5;
return React__default["default"].createElement(Input, {
key: lang.code,
rest: register(schema.accessor + "." + lang.code, schema.validations || {}),
label: schema.label + " (" + lang.name + ")",
onInput: schema.onInput,
error: (_errors$schema$access4 = errors[schema.accessor]) != null && (_errors$schema$access5 = _errors$schema$access4[lang.code]) != null && _errors$schema$access5.message ? errors[schema.accessor][lang.code].message + (" (" + lang.name + ")") : undefined,
isRequired: schema.isRequired,
// @ts-ignore
type: schema.type,
className: "kms_w-full kms_p-2",
placeholder: (schema.placeholder || "") + " (" + lang.name + ")",
disabled: isUpdating && typeof schema.editable !== "undefined" && !schema.editable
});
});
} else input = React__default["default"].createElement(Input, {
rest: register(schema.accessor, schema.validations || {}),
label: schema.label,
onInput: schema.onInput,
isRequired: schema.isRequired,
error: (_errors$schema$access6 = errors[schema.accessor]) == null ? void 0 : _errors$schema$access6.message,
type: schema.type,
className: "kms_w-full kms_p-2",
placeholder: schema.placeholder,
disabled: isUpdating && typeof schema.editable !== "undefined" && !schema.editable
});
break;
}
} else if (schema.Input) {
input = React__default["default"].createElement("div", {
className: "kms_input-wrapper"
}, React__default["default"].createElement("label", {
className: "kms_input-label"
}, schema.label), React__default["default"].createElement(reactHookForm.Controller, {
control: control,
name: schema.accessor,
rules: schema.validations,
render: function render(_ref2) {
var _errors$schema$access7;
var field = _ref2.field;
return schema.Input({
field: field,
error: (_errors$schema$access7 = errors[schema.accessor]) == null ? void 0 : _errors$schema$access7.message,
setError: function setError(msg) {
return _setError.call(null, schema.accessor, {
type: "custom",
message: msg
});
}
});
}
}));
} else throw new Error("Please provide Input or type prop to render input Labeled " + schema.label);
return input;
};
var onFormSubmit = /*#__PURE__*/function () {
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(e) {
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
e.preventDefault();
handleSubmit(function (data) {
var formattedData = schema.reduce(function (values, schemaItem) {
// Do not add field if editing is disabled for it
if (isUpdating && typeof schemaItem.editable !== "undefined" && !schemaItem.editable) return values;
values[schemaItem.accessor] = data[schemaItem.accessor];
return values;
}, {});
onSubmit(formattedData);
})();
case 2:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return function onFormSubmit(_x) {
return _ref3.apply(this, arguments);
};
}();
return React__default["default"].createElement("form", {
onSubmit: onFormSubmit,
ref: ref,
className: "kms_form"
}, schema.map(function (schema, i) {
return React__default["default"].createElement(React__default["default"].Fragment, {
key: i
}, inputRenderer(schema));
}), React__default["default"].createElement("p", null, React__default["default"].createElement("b", {
className: "kms_required_astrisk"
}, "*"), " ", indicatesRequired));
});
var FormActions = function FormActions(_ref) {
var _ref$loading = _ref.loading,
loading = _ref$loading === void 0 ? false : _ref$loading,
_ref$primaryLabel = _ref.primaryLabel,
primaryLabel = _ref$primaryLabel === void 0 ? "Submit" : _ref$primaryLabel,
_ref$secondaryLabel = _ref.secondaryLabel,
secondaryLabel = _ref$secondaryLabel === void 0 ? "Cancel" : _ref$secondaryLabel,
onPrimaryButtonClick = _ref.onPrimaryButtonClick,
onSecondaryButtonClick = _ref.onSecondaryButtonClick;
return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(Button, {
variant: "secondary",
label: secondaryLabel,
disabled: loading,
onClick: onSecondaryButtonClick
}), React__default["default"].createElement(Button, {
label: primaryLabel,
onClick: onPrimaryButtonClick,
disabled: loading
}));
};
var Modal = function Modal(_ref) {
var open = _ref.open,
onClose = _ref.onClose,
title = _ref.title,
children = _ref.children;
var nodeRef = React.useRef(null);
return React__default["default"].createElement(CSSTransition__default["default"], {
ref: nodeRef,
"in": open,
timeout: {
enter: 250,
exit: 350
},
classNames: "kms_modal",
mountOnEnter: true,
unmountOnExit: true
}, React__default["default"].createElement("div", {
className: "kms_modal-wrapper-1",
ref: nodeRef,
"data-testid": "modal"
}, React__default["default"].createElement("div", {
className: "kms_modal-wrapper-2"
}, React__default["default"].createElement("div", {
className: "kms_modal-backdrop",
role: "button",
onClick: onClose,
onKeyDown: onClose,
tabIndex: 0
}), React__default["default"].createElement("div", {
className: "kms_modal-container-1"
}, React__default["default"].createElement("div", {
className: "kms_modal-container-2"
}, React__default["default"].createElement("div", {
className: "kms_modal-main"
}, React__default["default"].createElement("div", {
className: "kms_modal-header"
}, React__default["default"].createElement("span", {
className: "kms_modal-title"
}, title), React__default["default"].createElement("button", {
className: "kms_modal-close",
onClick: onClose,
onKeyDown: onClose,
tabIndex: -1,
"data-testid": "modal-close"
}, React__default["default"].createElement(CloseIcon, null))), React__default["default"].createElement("div", {
className: "kms_p-4"
}, children)))))));
};
var Pagination = function Pagination(_ref) {
var totalPages = _ref.totalPages,
currentPage = _ref.currentPage,
pageSize = _ref.pageSize,
setPageSize = _ref.setPageSize,
setCurrentPage = _ref.setCurrentPage,
totalRecords = _ref.totalRecords,
limits = _ref.limits,
disabledPagination = _ref.disabledPagination,
pageText = _ref.pageText,
showText = _ref.showText,
showingText = _ref.showingText,
ofText = _ref.ofText,
nextContent = _ref.nextContent,
previousContent = _ref.previousContent;
var pageHandler = function pageHandler(e) {
if (e.key === "Enter") {
// @ts-ignore
setCurrentPage(Number.parseInt(e.target.value, 10) || 1);
}
};
var handleNumbers = function handleNumbers(e) {
if (["e", "+", "-"].includes(e.key)) {
e.preventDefault();
}
};
var pageChange = function pageChange(e) {
if (e.target.value && Number(e.target.value) <= totalPages && e.target.value !== "0") {
setCurrentPage(Number.parseInt(e.target.value, 10));
}
};
return React__default["default"].createElement("div", {
className: "kms_pagination"
}, React__default["default"].createElement("div", null, showingText, " ", (currentPage - 1) * pageSize + 1, " - ", Math.min(currentPage * pageSize, totalRecords), " ", ofText, " ", totalRecords), React__default["default"].createElement("div", {
className: "kms_pagination-actions"
}, React__default["default"].createElement(Button, {
label: previousContent,
onClick: function onClick() {
return setCurrentPage(currentPage - 1);
},
disabled: currentPage - 1 === 0 || !!disabledPagination
}), React__default["default"].createElement("div", {
className: "kms_pagination-pager"
}, pageText, React__default["default"].createElement("input", {
className: "kms_input kms_input-sm kms_w-10",
maxLength: 3,
pattern: "([0-9]|[0-9]|[0-9])",
type: "number",
onKeyDown: handleNumbers,
onKeyPress: pageHandler,
value: currentPage,
onChange: pageChange,
disabled: !!disabledPagination
}), "/ ", totalPages), Array.isArray(limits) ? React__default["default"].createElement("select", {
value: pageSize,
className: "kms_input kms_input-sm",
onChange: function onChange(e) {
return setPageSize(Number(e.target.value));
},
disabled: !!disabledPagination
}, limits.map(function (pageSize) {
return React__default["default"].createElement("option", {
key: pageSize,
value: pageSize
}, showText, " ", pageSize);
})) : null, React__default["default"].createElement(Button, {
label: nextContent,
onClick: function onClick() {
return setCurrentPage(currentPage + 1);
},
disabled: currentPage === totalPages || !!disabledPagination
})));
};
Pagination.type = "Pagination";
var Table = function Table(_ref) {
var data = _ref.data,
columns = _ref.columns,
sortConfig = _ref.sortConfig,
_ref$sortable = _ref.sortable,
sortable = _ref$sortable === void 0 ? true : _ref$sortable,
setSortConfig = _ref.setSortConfig,
loader = _ref.loader,
loading = _ref.loading,
_ref$noDataText = _ref.noDataText,
noDataText = _ref$noDataText === void 0 ? "No data found" : _ref$noDataText;
var getSortConfigClassName = React.useCallback(function (accessor, up) {
if (up === void 0) {
up = true;
}
if (!sortConfig || accessor !== sortConfig[0]) return "kms_sort-inactive";else {
if (up && sortConfig[1] === SORT_ASCENDING) return "";else if (!up && sortConfig[1] === SORT_DESCENDING) return "";else return "kms_sort-inactive";
}
}, [sortConfig]);
var sortConfigRenderer = React.useCallback(function (accessor) {
if (!sortable || EXCLUDE_SORT_COLUMNS.includes(String(accessor).toLocaleLowerCase())) return null;
return React__default["default"].createElement("div", {
className: "kms_sort-wrapper"
}, React__default["default"].createElement("span", {
"data-testid": true,
className: getSortConfigClassName(accessor, true)
}, "\u25B2"), React__default["default"].createElement("span", {
className: getSortConfigClassName(accessor, false)
}, "\u25BC"));
}, [getSortConfigClassName, sortable]);
var onClickSort = React.useCallback(function (id) {
if (setSortConfig && !EXCLUDE_SORT_COLUMNS.includes(String(id).toLocaleLowerCase())) {
if (sortConfig && id === sortConfig[0]) setSortConfig([id, sortConfig[1] === SORT_ASCENDING ? SORT_DESCENDING : SORT_ASCENDING]);else setSortConfig([id, SORT_ASCENDING]);
}
}, [setSortConfig, sortConfig]);
var _useTable = reactTable.useTable({
// @ts-ignore
columns: columns,
data: data
}),
getTableProps = _useTable.getTableProps,
getTableBodyProps = _useTable.getTableBodyProps,
headerGroups = _useTable.headerGroups,
prepareRow = _useTable.prepareRow,
rows = _useTable.rows;
return React__default["default"].createElement("div", {
className: "kms_table-container",
"data-testid": "table"
}, React__default["default"].createElement("div", {
className: "kms_table-height"
}, loading && loader ? React__default["default"].createElement("div", {
className: "kms_table-height"
}, loader) : React__default["default"].createElement("table", _extends({
className: "kms_table " + (data.length > 0 ? "" : "empty-table")
}, getTableProps()), React__default["default"].createElement("thead", {
className: "kms_thead"
}, headerGroups.map(function (headerGroup, i) {
return React__default["default"].createElement("tr", _extends({}, headerGroup.getHeaderGroupProps(), {
key: i
}), headerGroup.headers.map(function (column, j) {
return React__default["default"].createElement("th", _extends({}, column.getHeaderProps(), {
key: j,
onClick: function onClick() {
return onClickSort(column.id);
},
className: "cursor-pointer"
}), column.render("Header"), sortConfigRenderer(column.id));
}));
})), React__default["default"].createElement("tbody", _extends({
className: "kms_tbody"