ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
172 lines • 10.2 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SimpleFormIterator = exports.SimpleFormIteratorItem = void 0;
var React = __importStar(require("react"));
var react_1 = require("react");
var __1 = require("..//index.cjs");
var Confirm_1 = require("./Confirm.cjs");
var DefaultAddItemButton = function (props) {
var _a = (0, __1.useSimpleFormIterator)(), add = _a.add, source = _a.source;
var className = props.className, rest = __rest(props, ["className"]);
return (React.createElement("button", __assign({ type: "button", onClick: function () { return add(); }, className: ["button-add button-add-".concat(source), className].join(' ') }, rest),
React.createElement(__1.Translate, { i18nKey: "ra.action.add" }, "Add")));
};
var DefaultRemoveItemButton = function (props) {
var _a = (0, __1.useSimpleFormIteratorItem)(), remove = _a.remove, index = _a.index;
var source = (0, __1.useSimpleFormIterator)().source;
var className = props.className, rest = __rest(props, ["className"]);
return (React.createElement("button", __assign({ type: "button", onClick: function () { return remove(); }, className: [
"button-remove button-remove-".concat(source, "-").concat(index),
className,
].join(' ') }, rest),
React.createElement(__1.Translate, { i18nKey: "ra.action.remove" }, "Remove")));
};
var DefaultReOrderButtons = function (_a) {
var className = _a.className;
var _b = (0, __1.useSimpleFormIteratorItem)(), index = _b.index, total = _b.total, reOrder = _b.reOrder;
var source = (0, __1.useSimpleFormIterator)().source;
return (React.createElement("span", { className: [
"button-reorder button-reorder-".concat(source, "-").concat(index),
className,
].join(' ') },
React.createElement("button", { type: "button", onClick: function () { return reOrder(index - 1); }, disabled: index <= 0 },
React.createElement(__1.Translate, { i18nKey: "ra.action.move_up" }, "Move Up")),
React.createElement("button", { type: "button", onClick: function () { return reOrder(index + 1); }, disabled: total == null || index >= total - 1 },
React.createElement(__1.Translate, { i18nKey: "ra.action.move_down" }, "Move Down"))));
};
exports.SimpleFormIteratorItem = React.forwardRef(function SimpleFormIteratorItem(props, ref) {
var children = props.children, disabled = props.disabled, disableReordering = props.disableReordering, disableRemove = props.disableRemove, getItemLabel = props.getItemLabel, index = props.index, inline = props.inline, record = props.record, _a = props.removeButton, removeButton = _a === void 0 ? React.createElement(DefaultRemoveItemButton, null) : _a, _b = props.reOrderButtons, reOrderButtons = _b === void 0 ? React.createElement(DefaultReOrderButtons, null) : _b;
// Returns a boolean to indicate whether to disable the remove button for certain fields.
// If disableRemove is a function, then call the function with the current record to
// determining if the button should be disabled. Otherwise, use a boolean property that
// enables or disables the button for all of the fields.
var disableRemoveField = function (record) {
if (typeof disableRemove === 'boolean') {
return disableRemove;
}
return disableRemove && disableRemove(record);
};
var label = typeof getItemLabel === 'function' ? getItemLabel(index) : getItemLabel;
return (React.createElement(__1.SimpleFormIteratorItemBase, __assign({}, props),
React.createElement("li", { ref: ref },
React.createElement("div", { style: {
display: 'flex',
gap: '1rem',
alignItems: 'center',
} },
label != null && label !== false && React.createElement("span", null, label),
React.createElement("div", { style: {
display: 'flex',
flexDirection: inline ? 'row' : 'column',
gap: '1rem',
} }, children),
!disabled && (React.createElement("span", null,
!disableReordering && reOrderButtons,
!disableRemoveField(record) && removeButton))),
React.createElement("hr", null))));
});
var SimpleFormIterator = function (props) {
var _a = props.addButton, addButton = _a === void 0 ? React.createElement(DefaultAddItemButton, null) : _a, removeButton = props.removeButton, reOrderButtons = props.reOrderButtons, children = props.children, className = props.className, resource = props.resource, disabled = props.disabled, _b = props.disableAdd, disableAdd = _b === void 0 ? false : _b, disableClear = props.disableClear, _c = props.disableRemove, disableRemove = _c === void 0 ? false : _c, disableReordering = props.disableReordering, inline = props.inline, _d = props.getItemLabel, getItemLabel = _d === void 0 ? false : _d, fullWidth = props.fullWidth;
var finalSource = (0, __1.useWrappedSource)('');
if (!finalSource) {
throw new Error('SimpleFormIterator can only be called within an iterator input like ArrayInput');
}
var _e = (0, react_1.useState)(false), confirmIsOpen = _e[0], setConfirmIsOpen = _e[1];
var _f = (0, __1.useArrayInput)(props), fields = _f.fields, replace = _f.replace;
var translate = (0, __1.useTranslate)();
var handleArrayClear = (0, react_1.useCallback)(function () {
replace([]);
setConfirmIsOpen(false);
}, [replace]);
var records = (0, __1.useFieldValue)({ source: finalSource });
return fields ? (React.createElement(__1.SimpleFormIteratorBase, __assign({}, props),
React.createElement("div", { className: [
className,
fullWidth ? 'fullwidth' : '',
disabled ? 'disabled' : '',
].join(' ') },
React.createElement("ul", { style: {
listStyle: 'none',
margin: 0,
padding: 0,
display: 'flex',
flexDirection: 'column',
gap: '1rem',
marginBottom: '1rem',
} }, fields.map(function (member, index) { return (React.createElement(React.Fragment, { key: member.id },
React.createElement(exports.SimpleFormIteratorItem, { disabled: disabled, disableRemove: disableRemove, disableReordering: disableReordering, fields: fields, getItemLabel: getItemLabel, index: index, record: (records && records[index]) || {}, removeButton: removeButton, reOrderButtons: reOrderButtons, resource: resource, inline: inline }, children))); })),
!disabled &&
!(disableAdd && (disableClear || disableRemove)) && (React.createElement("div", { style: {
display: 'flex',
gap: '1rem',
marginBottom: '1rem',
} },
!disableAdd && React.createElement("div", null, addButton),
fields.length > 0 &&
!disableClear &&
!disableRemove && (React.createElement("div", null,
React.createElement(Confirm_1.Confirm, { isOpen: confirmIsOpen, title: translate('ra.action.clear_array_input'), content: translate('ra.message.clear_array_input'), onConfirm: handleArrayClear, onClose: function () {
return setConfirmIsOpen(false);
} }),
React.createElement("button", { type: "button", onClick: function () {
return setConfirmIsOpen(true);
} },
React.createElement(__1.Translate, { i18nKey: "ra.action.clear_array_input" }, "Clear"))))))))) : null;
};
exports.SimpleFormIterator = SimpleFormIterator;
//# sourceMappingURL=SimpleFormIterator.js.map