@premieroctet/next-admin
Version:
Next-Admin provides a customizable and turnkey admin dashboard for applications built with Next.js and powered by the Prisma ORM. It aims to simplify the development process by providing a turnkey admin system that can be easily integrated into your proje
98 lines (97 loc) • 3.67 kB
JavaScript
;
var __webpack_require__ = {};
(()=>{
__webpack_require__.d = (exports1, definition)=>{
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
enumerable: true,
get: definition[key]
});
};
})();
(()=>{
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
})();
(()=>{
__webpack_require__.r = (exports1)=>{
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
value: 'Module'
});
Object.defineProperty(exports1, '__esModule', {
value: true
});
};
})();
var __webpack_exports__ = {};
__webpack_require__.r(__webpack_exports__);
__webpack_require__.d(__webpack_exports__, {
getDefinitionFromRef: ()=>getDefinitionFromRef,
getSchemaForResource: ()=>getSchemaForResource,
getSchemas: ()=>getSchemas
});
function filterProperties(properties) {
const filteredProperties = {};
Object.entries(properties).map(([property, attributes])=>{
if (attributes && !Object.keys(attributes).includes("$ref") && !Object.keys(attributes.items || {}).includes("$ref") && !Object.keys(attributes.anyOf?.[0] ?? {}).includes("$ref")) filteredProperties[property] = attributes;
});
return filteredProperties;
}
function getSchemaForResource(schema, resource) {
let resourceSchema = schema.definitions[resource];
resourceSchema = {
...resourceSchema,
properties: filterProperties(resourceSchema.properties)
};
return resourceSchema;
}
function getSchemas(data, schema, editFieldsOptions) {
const uiSchema = {};
let edit = false;
let id;
const { disabledFields, requiredFields } = Object.entries(editFieldsOptions ?? {}).reduce((acc, [name, opts])=>{
if (opts?.disabled) acc.disabledFields.push(name);
if (opts?.required) acc.requiredFields.push(name);
return acc;
}, {
requiredFields: [],
disabledFields: []
});
const properties = schema.properties;
const idProperty = Object.keys(properties).find((property)=>{
const propertyData = properties[property];
if ("boolean" == typeof propertyData) return false;
return propertyData?.__nextadmin?.primaryKey;
});
edit = !!data?.[idProperty ?? "id"];
id = data?.[idProperty ?? "id"];
Object.keys(properties).forEach((property)=>{
if (requiredFields?.includes(property) && !schema.required?.includes(property)) schema.required = [
...schema.required ?? [],
property
];
if (properties[property]?.__nextadmin?.disabled || disabledFields?.includes(property)) edit ? uiSchema[property] = {
...uiSchema[property],
"ui:disabled": true
} : delete properties[property];
});
return {
uiSchema,
schema,
edit,
id
};
}
const getDefinitionFromRef = (schema, ref)=>{
const [definition] = ref.split("/").reverse();
return schema.definitions[definition];
};
exports.getDefinitionFromRef = __webpack_exports__.getDefinitionFromRef;
exports.getSchemaForResource = __webpack_exports__.getSchemaForResource;
exports.getSchemas = __webpack_exports__.getSchemas;
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
"getDefinitionFromRef",
"getSchemaForResource",
"getSchemas"
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
Object.defineProperty(exports, '__esModule', {
value: true
});