UNPKG

kwikid-components-react

Version:

KwikID's Component Library in React

105 lines (103 loc) 4.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _kwikidToolkit = require("kwikid-toolkit"); var _react = _interopRequireWildcard(require("react")); var _Button = _interopRequireDefault(require("../../button/Button")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } /* eslint-disable react-hooks/exhaustive-deps */ const KwikUITableButton = _ref => { let { id, item, value, tableMeta, updateValue, onClick } = _ref; const [isButtonDisabled, setIsButtonDisabled] = (0, _react.useState)((0, _kwikidToolkit.getObjectValueFromPath)(item, "$.disabled") ? (0, _kwikidToolkit.getObjectValueFromPath)(item, "$.disabled") : false); const [isButtonHidden, setIsButtonHidden] = (0, _react.useState)((0, _kwikidToolkit.getObjectValueFromPath)(item, "$.hidden") ? (0, _kwikidToolkit.getObjectValueFromPath)(item, "$.hidden") : false); const [buttonStyles, setButtonStyles] = (0, _react.useState)((0, _kwikidToolkit.getObjectValueFromPath)(item, "$.props.customStyles") ? (0, _kwikidToolkit.getObjectValueFromPath)(item, "$.props.customStyles") : {}); const [buttonLabel, setButtonLabel] = (0, _react.useState)((0, _kwikidToolkit.getObjectValueFromPath)(item, "$.label") ? (0, _kwikidToolkit.getObjectValueFromPath)(item, "$.label") : "Button"); const [data, setData] = (0, _react.useState)(value); const [isLoading, setIsLoading] = (0, _react.useState)(true); const takeAction = async action => { switch (action.key) { case "BUTTON_ENABLE": setIsButtonDisabled(false); break; case "BUTTON_DISABLE": setIsButtonDisabled(true); break; case "BUTTON_SHOW": setIsButtonHidden(false); break; case "BUTTON_HIDE": setIsButtonDisabled(true); setIsButtonHidden(true); break; case "SET_BUTTON_LABEL": setButtonLabel(action.props.fieldLabel); break; case "SET_BUTTON_STYLES": setButtonStyles(action.props.customStyles); break; default: break; } }; (0, _react.useEffect)(() => { setData(value); setIsLoading(true); }, [value]); (0, _react.useEffect)(() => { const runValidations = async () => { var _item$default$rules, _item$default, _item$default$actions, _item$default2; await new _kwikidToolkit.RuleEngine({ DATA: { [item.key]: data } }, takeAction).run({ rules: (_item$default$rules = item === null || item === void 0 ? void 0 : (_item$default = item.default) === null || _item$default === void 0 ? void 0 : _item$default.rules) !== null && _item$default$rules !== void 0 ? _item$default$rules : [], actions: (_item$default$actions = item === null || item === void 0 ? void 0 : (_item$default2 = item.default) === null || _item$default2 === void 0 ? void 0 : _item$default2.actions) !== null && _item$default$actions !== void 0 ? _item$default$actions : [] }); setIsLoading(false); }; if ((0, _kwikidToolkit.isNotEmptyValue)(data)) { runValidations(); } else { setIsLoading(false); } return () => { setIsLoading(false); setData(null); }; }, // eslint-disable-next-line react-hooks/exhaustive-deps [data]); if (isButtonHidden) { return /*#__PURE__*/_react.default.createElement(_Button.default, { id: id, size: "xs", customStyles: { visibility: "hidden" }, disabled: true, onClick: undefined }, buttonLabel); } return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Button.default, { id: id, size: "xs", loading: isLoading, customStyles: buttonStyles, disabled: isButtonDisabled, onClick: () => { onClick(item.id, item, value, tableMeta, updateValue); } }, buttonLabel)); }; var _default = exports.default = KwikUITableButton;