UNPKG

@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
"use strict"; 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 });