Source

admin-bro/src/backend/decorators/resource-options.interface.ts

import Action, { ActionResponse, RecordActionResponse } from '../actions/action.interface'
import PropertyOptions from './property-options.interface'
import { ListActionResponse } from '../actions/list-action'

/**
 * Options for given resource
 *
 * ### Usage with TypeScript
 *
 * ```typescript
 * import { ResourceOptions } from 'admin-bro'
 * ```
 */
export interface ResourceOptions {
  /**
   * Name of a resource
   */
  name?: string;
  /**
   * List of properties which should be visible on a list
   */
  listProperties?: Array<string>;
  /**
   * List of properties which should be visible on show view
   */
  showProperties?: Array<string>;
  /**
   * List of properties which should be visible on edit view
   */
  editProperties?: Array<string>;
  /**
   * List of properties which should be visible on the filter
   */
  filterProperties?: Array<string>;
  /**
   * Parent element under which resource should be nested in sidebar. Default
   * to the database name.
   */
  parent?: {
    name?: string;
    icon?: string;
  } | string;
  /**
   * Default sort property and direction.
   */
  sort?: {
    direction: 'asc' | 'desc';
    sortBy: string;
  };
  /**
   * List of properties along with their options
   */
  properties?: Record<string, PropertyOptions>;
  /**
   * List of all actions along with their options
   */
  actions?: {
    show?: Partial<Action<RecordActionResponse>>;
    edit?: Partial<Action<RecordActionResponse>>;
    delete?: Partial<Action<RecordActionResponse>>;
    new?: Partial<Action<RecordActionResponse>>;
    list?: Partial<Action<ListActionResponse>>;
  } | {
    [key: string]: Partial<Action<ActionResponse>>;
  };
}