Description
A description is an object that "describes" what your collection is and how it should be represented on the UI. It is a JSON Schema subset with some additions.
ts
export type Description<TDescription extends Description=any> = {
$id: CollectionId
title?: string
// unused
categories?: Array<string>
system?: boolean
inline?: boolean
preferred?: Record<string, Partial<TDescription | Description>>
alias?: string
icon?: string
options?: CollectionOptions<TDescription>
indexes?: ReadonlyArray<string>
defaults?: Record<string, any>
// modifiers
owned?: boolean
immutable?: boolean|ReadonlyArray<string>
alwaysOwned?: boolean
// takes an array of something
route?: ReadonlyArray<string>
presets?: ReadonlyArray<CollectionPresets>
required?: ReadonlyArray<keyof TDescription['properties']>
table?: ReadonlyArray<keyof TDescription['properties']>
tableMeta?: ReadonlyArray<keyof TDescription['properties']>
filtersPresets?: Record<string, FiltersPreset<TDescription>>
freshItem?: Partial<Record<keyof TDescription['properties'], any>>
form?: ReadonlyArray<keyof TDescription['properties']>|Record<keyof TDescription['properties'], Array<string>>
writable?: ReadonlyArray<keyof TDescription['properties']>
filters?: ReadonlyArray<keyof TDescription['properties']|{
property: keyof TDescription['properties']
default: string
}>
layout?: Layout
formLayout?: Partial<FormLayout<TDescription>>
tableLayout?: Partial<TableLayout<TDescription>>
// actions
actions?: CollectionActions<TDescription>
individualActions?: CollectionActions<TDescription>
search?: {
active: boolean
placeholder?: string
}
properties: Record<Lowercase<string>, CollectionProperty>
}
Defining a description
You can use defineDescription
to define a description with strong typing.