Class

AdminBro

AdminBro(options)

Main class for AdminBro extension. It takes AdminBroOptions as a parameter and creates an admin instance.

Its main responsibility is to fetch all the resources and/or databases given by a user. Its instance is a currier - injected in all other classes.

Constructor

# new AdminBro(options)

Parameters:
Name Type Description
options AdminBroOptions

Options passed to AdminBro

View Source admin-bro/src/admin-bro.ts, line 41

Example
const AdminBro = require('admin-bro')
const admin = new AdminBro(AdminBroOptions)

Members

ActionsMap

# static ACTIONS

List of all default actions. If you want to change the behavior for all actions like: list, edit, show, delete and bulkDelete you can do this here.

View Source admin-bro/src/admin-bro.ts, line 338

Example

Modifying accessibility rules for all show actions

const { ACTIONS } = require('admin-bro')
ACTIONS.show.isAccessible = () => {...}
Class.<BaseDatabase>

# static BaseDatabase

An abstract class for all Database Adapters. External adapters have to implement it.

View Source admin-bro/src/admin-bro.ts, line 293

Example

Creating Database Adapter for some ORM

const { BaseDatabase } = require('admin-bro')

class Database extends BaseDatabase {
  constructor(ormInstance) {
    this.ormInstance = ormInstance
  }
  resources() {
    // fetch resources from your orm and convert to BaseResource
  }
}
Class.<BaseProperty>

# static BaseProperty

Class for all properties. External adapters have to implement that or at least their BaseResource implementation should return records of this type.

View Source admin-bro/src/admin-bro.ts, line 313

Class.<BaseRecord>

# static BaseRecord

Class representing all records. External adapters have to implement that or at least their BaseResource implementation should return records of this type.

View Source admin-bro/src/admin-bro.ts, line 300

Class.<BaseResource>

# static BaseResource

An abstract class for all resources. External adapters have to implement that.

View Source admin-bro/src/admin-bro.ts, line 306

Class.<Filter>

# static Filter

Filter object passed to find method of BaseResource. External adapters have to use it

View Source admin-bro/src/admin-bro.ts, line 320

RouterType

# static Router

Contains set of routes available within the application. It is used by external plugins.

View Source admin-bro/src/admin-bro.ts, line 274

Example
const { Router } = require('admin-bro')
Router.routes.forEach(route => {
  // map your framework routes to admin-bro routes
  // see how `admin-bro-expressjs` plugin does it.
})
Class.<ValidationError>

# static ValidationError

Validation error which is thrown when record fails validation. External adapters have to use it, so AdminBro can print validation errors

View Source admin-bro/src/admin-bro.ts, line 327

string

# static VERSION

AdminBro version

View Source admin-bro/src/admin-bro.ts, line 344

AdminBroOptions

# options

Options given by a user

View Source admin-bro/src/admin-bro.ts, line 52

Array.<BaseResource>

# resources

List of all resources available for the AdminBro. They can be fetched with the AdminBro#findResource method

View Source admin-bro/src/admin-bro.ts, line 47

Methods

# static bundle(src) → {String|String}

Requires given .jsx/.tsx file, that it can be bundled to the frontend. It will be available under AdminBro.UserComponents[componentId].

Parameters:
Name Type Description
src String

Path to a file containing react component.

View Source admin-bro/src/admin-bro.ts, line 186

componentId - uniq id of a component

String

[componentName] - name of the component which you want to override

String
Examples

Passing custom components in AdminBro options

const adminBroOptions = {
  dashboard: {
    component: AdminBro.bundle('./path/to/component'),
  }
}

Overriding AdminBro core components

// somewhere in the code
AdminBro.bundle('./path/to/new-sidebar/component', 'SidebarFooter')

# static registerAdapter(options)

Registers various database adapters written for AdminBro.

Parameters:
Name Type Description
options Object
Database Class.<BaseDatabase>

subclass of BaseDatabase

Resource Class.<BaseResource>

subclass of BaseResource

View Source admin-bro/src/admin-bro.ts, line 91

Example
const AdminBro = require('admin-bro')
const MongooseAdapter = require('admin-bro-mongoose')
AdminBro.registerAdapter(MongooseAdapter)

# findResource(resourceId) → {BaseResource}

Returns resource base on its ID

Parameters:
Name Type Description
resourceId String

ID of a resource defined under BaseResource#id

View Source admin-bro/src/admin-bro.ts, line 156

When resource with given id cannot be found

Error

found resource

BaseResource
Example
const User = admin.findResource('users')
await User.findOne(userId)

# async initialize()

Initializes AdminBro instance in production. This function should be called by all external plugins.

View Source admin-bro/src/admin-bro.ts, line 108

# async renderLogin(options) → {Promise.<string>}

Renders an entire login page with email and password fields using Renderer.

Used by external plugins

Parameters:
Name Type Attributes Description
options Object
action String

Login form action url - it could be '/admin/login'

errorMessage String <optional>

Optional error message. When set, renderer will print this message in the form

View Source admin-bro/src/admin-bro.ts, line 142

HTML of the rendered page

Promise.<string>

# async watch() → {Promise.<never>}

Watches for local changes in files imported via AdminBro.bundle. It doesn't work on production environment.

View Source admin-bro/src/admin-bro.ts, line 122

Promise.<never>

Type Definitions

object

# CurrentAdmin

Currently logged in admin.

Usage with TypeScript

import { CurrentAdmin } from 'admin-bro'
Properties:
Name Type Attributes Description
email string

Admin has one required field which is an email

title string <optional>

Optional title/role of an admin - this will be presented below the email

avatarUrl string <optional>

Optional url for an avatar photo

id string <optional>

Id of your admin user

{...} any

Also you can put as many other fields to it as you like.

View Source admin-bro/src/current-admin.interface.ts, line 3

object

# RouterType

Type representing the AdminBro.Router

Properties:
Name Type Attributes Description
assets Array.<object>
assets[].path string
assets[].src string
routes Array.<object>
routes[].method string
routes[].path string
routes[].Controller any
routes[].action string
routes[].contentType string <optional>

View Source admin-bro/src/backend/router.ts, line 180

object

# UploadedFile

File uploaded via FormData to the backend.

Properties:
Name Type Description
size number

The size of the uploaded file in bytes., this property says how many bytes of the file have been written to disk yet.

path string

The path this file is being written to.

type string

The mime type of this file, according to the uploading client.

name string | null

The name this file had according to the uploading client.

View Source admin-bro/src/backend/utils/uploaded-file.type.ts, line 3