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 49

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 342

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 297

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 317

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 304

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 310

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 324

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 278

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.
})
UserComponentsMap

# static UserComponents

List of all bundled components

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

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 331

string

# static VERSION

AdminBro version

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

AdminBroOptions

# options

Options given by a user

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

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 55

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 198

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 104

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 168

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 120

# 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 154

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 134

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 177