PHP 8.2.30
Preview: new-action.js Size: 1.92 KB
//proc/thread-self/root/home/byroehnu/.trash/node_modules11/adminjs/lib/backend/actions/new/new-action.js

import { populator } from '../../utils/populator/index.js';
import { paramConverter } from '../../../utils/param-converter/index.js';
/**
 * @implements Action
 * @category Actions
 * @module NewAction
 * @description
 * Shows form for creating a new record
 * Uses {@link NewAction} component to render form
 * @private
 */
export const NewAction = {
  name: 'new',
  isVisible: true,
  actionType: 'resource',
  icon: 'Plus',
  showInDrawer: false,
  variant: 'primary',
  /**
   * Responsible for creating new record.
   *
   * To invoke this action use {@link ApiClient#resourceAction}
   *
   * @implements Action#handler
   * @memberof module:NewAction
   * @return {Promise<RecordActionResponse>} populated records
   */
  handler: async (request, response, context) => {
    const {
      resource,
      h,
      currentAdmin
    } = context;
    if (request.method === 'post') {
      const params = paramConverter.prepareParams(request.payload ?? {}, resource);
      let record = await resource.build(params);
      record = await record.create(context);
      const [populatedRecord] = await populator([record], context);

      // eslint-disable-next-line no-param-reassign
      context.record = populatedRecord;
      if (record.isValid()) {
        return {
          redirectUrl: h.resourceUrl({
            resourceId: resource._decorated?.id() || resource.id()
          }),
          notice: {
            message: 'successfullyCreated',
            type: 'success'
          },
          record: record.toJSON(currentAdmin)
        };
      }
      const baseMessage = populatedRecord.baseError?.message || 'thereWereValidationErrors';
      return {
        record: record.toJSON(currentAdmin),
        notice: {
          message: baseMessage,
          type: 'error'
        }
      };
    }
    // TODO: add wrong implementation error
    throw new Error('new action can be invoked only via `post` http method');
  }
};
export default NewAction;

Directory Contents

Dirs: 0 × Files: 1

Name Size Perms Modified Actions
1.92 KB lrw-r--r-- 2026-02-28 00:31:46
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).