UNPKG

oneframe-react

Version:

Oneframe React ## Components, Hooks, Helper Functions & State Management

386 lines (385 loc) 11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(require("react")); const core_1 = require("@material-ui/core"); const NumberInput_1 = __importDefault(require("./components/Inputs/Input/NumberInput")); const MaskInput_1 = __importDefault(require("./components/Inputs/Input/MaskInput")); const lodash_1 = require("lodash"); const fast_memoize_1 = __importDefault(require("fast-memoize")); lodash_1.templateSettings.interpolate = /{{([\s\S]+?)}}/g; /** * Left Adornments * * @static * @param {Function} leftAdornments * @returns {*} Return the object props */ exports.getStartAdornments = (leftAdornments) => { if (leftAdornments) { return { startAdornment: react_1.default.createElement(core_1.InputAdornment, { position: "start" }, leftAdornments()), }; } return {}; }; /** * Right Adornments * * @static * @param {Function} rightAdornments * @returns {*} Returns the object props */ exports.getEndAdornments = (rightAdornments) => { if (rightAdornments) { return { endAdornment: react_1.default.createElement(core_1.InputAdornment, { position: "end" }, rightAdornments()), }; } return {}; }; /** * Underline status * * @static * @param {string} variant * @param {boolean} disabledUnderline * @returns {*} Returns the object props */ exports.disabledunderline = (variant, disabledUnderline) => { let disabledUnderlineContainer = {}; if (variant === 'filled') { disabledUnderlineContainer = { disableUnderline: disabledUnderline, }; } return disabledUnderlineContainer; }; /** * Input number format view * * @static * @param {Object} numberFormat * @returns {*} Returns the object props */ const getNumberFormat = (numberFormat) => { let inputNumberFormats = {}; if (numberFormat) { inputNumberFormats = { inputComponent: NumberInput_1.default, inputProps: Object.assign({}, numberFormat), }; } return inputNumberFormats; }; /** * Input mask format * * @static * @since 0.1.0 * @category Lang * @param {Object} maskFormat * @returns {*} Returns the object props */ const getMaskFormat = (maskFormat) => { let inputNumberFormats = {}; if (maskFormat) { inputNumberFormats = { inputComponent: MaskInput_1.default, inputProps: { mask: maskFormat.mask, guide: maskFormat.guide, showMask: maskFormat.showMask, placeholderChar: maskFormat.placeholderChar, keepCharPositions: maskFormat.keepCharPositions, }, }; } return inputNumberFormats; }; /** * All input adornments * * @static * @param {Function} leftAdornments * @param {Function} rightAdornments * @param {string} variant * @param {boolean} disabledUnderline * @param {Object} numberFormat * @param {Object} mask * @returns {*} Returns the adorments node */ exports.getAdornments = (leftAdornments, rightAdornments, variant, disabledUnderline, numberFormat, mask) => { return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, exports.getStartAdornments(leftAdornments)), exports.getEndAdornments(rightAdornments)), exports.disabledunderline(variant, disabledUnderline)), getNumberFormat(numberFormat)), getMaskFormat(mask)); }; /** * Selectbox custom view value * * @static * @param {*} selected * @param {*} data * @param {string} displayField * @param {string} displayValue * @param {boolean} viewChip * @returns {*} Object */ exports.getMultipleCustomRender = (selected, data, displayValue, displayField, viewChip = false) => { const showStr = []; data && data.length && selected && selected.length && selected.forEach((a) => { const x = data.filter((item) => item[displayValue] === a)[0]; showStr.push(x[displayField]); }); if (viewChip) { return showStr.length && showStr.map((value, i) => react_1.default.createElement(core_1.Chip, { key: i, label: value })); } return showStr.length ? showStr.join(', ') : selected; }; /** * Error status * * @static * @param {*} messages * @param {string} name * @param {string} errorText * @returns {boolean} Returns the `true` or `false`. */ exports.getErrorStatus = fast_memoize_1.default((messages, name, errorText) => { if (messages && !lodash_1.isEmpty(messages) && messages[name] && messages[name].length) { return true; } return !!errorText; }); /** * Error message * * @static * @param {*} messages * @param {string} name * @param {string} errorText * @param {string} helperText * @returns {boolean} Returns the error text message. */ exports.getErrorMessage = fast_memoize_1.default((messages, name, errorText, helperText = '') => { if (messages && !lodash_1.isEmpty(messages) && messages[name]) { return messages[name][0]; } return errorText || helperText; }); /** * Label text * * @static * @param {string} multipleSelectCountText * @param {*} multiValue * @param {string} caption * @returns {boolean} Returns the label text. */ exports.getMultiSelectLabel = fast_memoize_1.default((multipleSelectCountText = '', multiValue, caption = '') => { if (multipleSelectCountText && multiValue.length) { if (!lodash_1.includes(multipleSelectCountText, 'selectedCount')) { console.warn('Type error. The multipleSelectCountText value must be "selectedCount".'); } else { const compiled = lodash_1.template(multipleSelectCountText); return compiled({ selectedCount: multiValue.length }); } } return caption; }); /** * Input custom props * * @static * @param {number} labelWidth * @param {*} id * @param {string} name * @param {boolean} readOnly * @param {*} leftAdornments * @param {*} rightAdornments * @param {boolean} captionActive * @param {string} variant * @param {boolean} disableUnderline * @returns {Object} Returns the input props. */ exports.getInputProps = fast_memoize_1.default((labelWidth, id, name, readOnly = false, leftAdornments, rightAdornments, captionActive = false, variant, disableUnderline) => { const inputProps = Object.assign(Object.assign(Object.assign(Object.assign({ labelWidth: Number(labelWidth), fullWidth: true, id, name, readOnly }, exports.getStartAdornments(leftAdornments)), exports.getEndAdornments(rightAdornments)), (captionActive ? { notched: true } : {})), exports.disabledunderline(variant, disableUnderline)); switch (variant) { case 'outlined': return { input: react_1.default.createElement(core_1.OutlinedInput, Object.assign({}, inputProps)), }; case 'filled': return { input: react_1.default.createElement(core_1.FilledInput, Object.assign({}, lodash_1.omit(inputProps, 'labelWidth'))), }; case 'standard': return { input: react_1.default.createElement(core_1.Input, Object.assign({}, lodash_1.omit(inputProps, 'labelWidth'))), }; default: return { inputProps: { name, id, readOnly }, }; } }); /** * Input return value * * @static * @param {*} id * @param {string} name * @param {*} value * @returns {*} Returns the input value */ exports.getTargetValue = fast_memoize_1.default((id, name, value) => { return { target: { value: value, id, name, }, }; }); /** * Inputs-Multiselect return value * * @static * @param {*} id * @param {string} name * @param {*} value * @param {*} valueObject * @returns {*} Returns the select input value */ exports.getTargetSelectValue = fast_memoize_1.default((id, name, value, valueObject) => { return { target: { value: value, valueObject: valueObject, id, name, }, }; }); /** * Checked return value * * @static * @param {*} id * @param {string} name * @param {*} value * @returns {*} Returns the checked input value */ exports.getTargetChecked = fast_memoize_1.default((id, name, value) => { return { target: { checked: value, id, name, }, }; }); /** * State management initial error * * @static * @returns {*} Returns initial error value */ exports.initialError = () => { return null; }; /** * State management initial status code * * @static * @returns {*} Returns initial status code value */ exports.initialStatusCode = () => { return null; }; /** * State management loading * * @static * @returns {*} Returns initial loading */ exports.initialLoading = () => { return false; }; /** * State management initial data * * @static * @param {*} val * @returns {*} Returns the initial value for state management */ exports.initialData = (val) => { let prevObj = {}; if (val) { Object.keys(val).map((a) => { prevObj = Object.assign(Object.assign({}, prevObj), { [a]: { loading: exports.initialLoading(), error: exports.initialError(), payload: val[a], statusCode: exports.initialStatusCode(), } }); return prevObj; }); } return prevObj; }; /** * State management initial data * * @static * @param {*} prevData * @param {*} data * @returns {*} Returns the initial value for state management initial state */ exports.firstTimeData = (prevData, data) => { let newData = prevData; if (!newData[data.name]) { return Promise.reject(`Initial state missing type: "${data.name}"`); } const setParameters = { loading: true, error: exports.initialError(), payload: data.hasOwnProperty('payload') ? newData[data.name].payload : null, statusCode: exports.initialStatusCode(), }; if (data && !lodash_1.isEmpty(data) && data.hasOwnProperty('name')) { newData = lodash_1.set(newData, data.name, setParameters); } return newData; }; /** * State management default value * * @static */ exports.defaultSetParameters = { loading: exports.initialLoading(), error: exports.initialError(), payload: null, statusCode: exports.initialStatusCode(), headers: null, onSuccess: () => { }, onError: () => { }, }; exports.getTargetTimeValue = fast_memoize_1.default((id, name, value, valueObject) => { return { target: { value: value, dateValue: valueObject, id, name, }, }; });