Kanban Card Editor Dialog
Module Extensions
Section titled “Module Extensions”HTMLRevoGridElement (Extended from global)
Section titled “HTMLRevoGridElement (Extended from global)”interface HTMLRevoGridElement { kanbanCardEditorDialog?: KanbanCardEditorDialogOptions | false; 'kanban-card-editor-dialog'?: KanbanCardEditorDialogOptions | false}HTMLRevoGridElementEventMap (Extended from global)
Section titled “HTMLRevoGridElementEventMap (Extended from global)”interface HTMLRevoGridElementEventMap { [BEFORE_KANBAN_CARD_EDITOR_VALIDATE_EVENT]: KanbanCardEditorValidationStartDetail; [BEFORE_KANBAN_CARD_EDITOR_FIELD_VALIDATE_EVENT]: KanbanCardEditorBeforeFieldValidationDetail; [KANBAN_CARD_EDITOR_FIELD_VALIDATE_EVENT]: KanbanCardEditorFieldValidationDetail; [KANBAN_CARD_EDITOR_VALIDATE_EVENT]: KanbanCardEditorValidationCompleteDetail; [KANBAN_CARD_EDITOR_INVALID_EVENT]: KanbanCardEditorValidationCompleteDetail}Plugin API
Section titled “Plugin API”kanbanCardEditorDialogDependencies
Section titled “kanbanCardEditorDialogDependencies”Dependencies
Section titled “Dependencies”- Required
KanbanPlugin: Uses Kanban canonical data, permissions, rules, events, and history-backed CRUD methods.
kanbanCardEditorDialogDependencies: PluginDependency[];KanbanCardEditorDialogPlugin
Section titled “KanbanCardEditorDialogPlugin”class KanbanCardEditorDialogPlugin { open(request: KanbanCardEditorOpenRequest<T>): void;
close(): void;
async validate(): Promise<KanbanCardEditorValidationResult>;}KanbanCardEditorMode
Section titled “KanbanCardEditorMode”export type KanbanCardEditorMode = 'create' | 'edit';KanbanCardEditorFieldKind
Section titled “KanbanCardEditorFieldKind”export type KanbanCardEditorFieldKind = | 'text' | 'textarea' | 'number' | 'select' | 'multiselect' | 'tags' | 'checkbox' | 'date' | 'datetime' | 'color' | 'assignees' | 'custom';KanbanCardEditorOption
Section titled “KanbanCardEditorOption”interface KanbanCardEditorOption { readonly value: string | number; readonly label: string; readonly avatar?: unknown; readonly disabled?: boolean}KanbanCardEditorFieldContext
Section titled “KanbanCardEditorFieldContext”interface KanbanCardEditorFieldContext { readonly grid: HTMLRevoGridElement; readonly mode: KanbanCardEditorMode; readonly card: T | null; readonly draft: T; readonly field: KanbanCardEditorField<T>}KanbanCardEditorFieldRendererLifecycle
Section titled “KanbanCardEditorFieldRendererLifecycle”interface KanbanCardEditorFieldRendererLifecycle { update?(context: KanbanCardEditorFieldRendererContext<T>): void; destroy?(): void}KanbanCardEditorFieldRendererContext (Extended from index.tsx)
Section titled “KanbanCardEditorFieldRendererContext (Extended from index.tsx)”interface KanbanCardEditorFieldRendererContext { readonly value: unknown; readonly error?: string; readonly disabled: boolean; readonly setValue: (value: unknown) => void}KanbanCardEditorDomRenderer
Section titled “KanbanCardEditorDomRenderer”interface KanbanCardEditorDomRenderer { mount(container: HTMLElement, context: KanbanCardEditorRendererContext<T>): void | KanbanCardEditorRendererLifecycle<T>}KanbanCardEditorRendererLifecycle
Section titled “KanbanCardEditorRendererLifecycle”interface KanbanCardEditorRendererLifecycle { update?(context: KanbanCardEditorRendererContext<T>): void; destroy?(): void}KanbanCardEditorFieldDomRenderer
Section titled “KanbanCardEditorFieldDomRenderer”interface KanbanCardEditorFieldDomRenderer { mount(container: HTMLElement, context: KanbanCardEditorFieldRendererContext<T>): void | KanbanCardEditorFieldRendererLifecycle<T>}KanbanCardEditorField
Section titled “KanbanCardEditorField”interface KanbanCardEditorField { readonly id: string; readonly label?: string; readonly kind?: KanbanCardEditorFieldKind; readonly field?: ColumnProp; readonly icon?: string; readonly order?: number; readonly hidden?: boolean | ((context: KanbanCardEditorFieldContext<T>) => boolean); readonly fullWidth?: boolean; readonly defaultValue?: unknown | ((context: Omit<KanbanCardEditorFieldContext<T>, 'field'>) => unknown); readonly options?: readonly KanbanCardEditorOption[] | ((context: KanbanCardEditorFieldContext<T>) => readonly KanbanCardEditorOption[]); readonly placeholder?: string; readonly readonly?: boolean | ((context: KanbanCardEditorFieldContext<T>) => boolean); readonly required?: boolean; readonly read?: (card: T, context: KanbanCardEditorFieldContext<T>) => unknown; readonly write?: (value: unknown, card: T, context: KanbanCardEditorFieldContext<T>) => Partial<T>; readonly format?: (value: unknown, context: KanbanCardEditorFieldContext<T>) => unknown; readonly parse?: (value: unknown, context: KanbanCardEditorFieldContext<T>) => unknown; readonly validate?: (value: unknown, context: KanbanCardEditorFieldContext<T>) => string | void | Promise<string | void>; readonly renderer?: KanbanCardEditorFieldDomRenderer<T>}KanbanCardEditorValidationReason
Section titled “KanbanCardEditorValidationReason”export type KanbanCardEditorValidationReason = 'submit' | 'manual';KanbanCardEditorValidationErrors
Section titled “KanbanCardEditorValidationErrors”export type KanbanCardEditorValidationErrors = Readonly<Record<string, string>>;KanbanCardEditorFieldValidationStatus
Section titled “KanbanCardEditorFieldValidationStatus”export type KanbanCardEditorFieldValidationStatus = | 'valid' | 'invalid' | 'skipped' | 'cancelled';KanbanCardEditorValidationContext
Section titled “KanbanCardEditorValidationContext”interface KanbanCardEditorValidationContext { readonly grid: HTMLRevoGridElement; readonly mode: KanbanCardEditorMode; readonly card: T | null; readonly draft: T; readonly fields: readonly KanbanCardEditorField<T>[]; readonly reason: KanbanCardEditorValidationReason}KanbanCardEditorValidationResult
Section titled “KanbanCardEditorValidationResult”interface KanbanCardEditorValidationResult { readonly valid: boolean; readonly cancelled: boolean; readonly errors: KanbanCardEditorValidationErrors}KanbanCardEditorValidationStartDetail (Extended from index.tsx)
Section titled “KanbanCardEditorValidationStartDetail (Extended from index.tsx)”interface KanbanCardEditorValidationStartDetail { readonly errors: Record<string, string>; readonly setError: (fieldId: string, error?: string) => void}KanbanCardEditorBeforeFieldValidationDetail (Extended from index.tsx)
Section titled “KanbanCardEditorBeforeFieldValidationDetail (Extended from index.tsx)”interface KanbanCardEditorBeforeFieldValidationDetail { readonly field: KanbanCardEditorField<T>; readonly value: unknown; error?: string; readonly setError: (error?: string) => void}KanbanCardEditorFieldValidationDetail (Extended from index.tsx)
Section titled “KanbanCardEditorFieldValidationDetail (Extended from index.tsx)”interface KanbanCardEditorFieldValidationDetail { readonly field: KanbanCardEditorField<T>; readonly value: unknown; readonly error?: string; readonly status: KanbanCardEditorFieldValidationStatus}KanbanCardEditorValidationCompleteDetail (Extended from index.tsx)
Section titled “KanbanCardEditorValidationCompleteDetail (Extended from index.tsx)”interface KanbanCardEditorValidationCompleteDetail { readonly result: KanbanCardEditorValidationResult}KanbanCardEditorFormValidationResult
Section titled “KanbanCardEditorFormValidationResult”export type KanbanCardEditorFormValidationResult = | string | KanbanCardEditorValidationErrors | void;KanbanCardEditorFormValidator
Section titled “KanbanCardEditorFormValidator”export type KanbanCardEditorFormValidator<T extends DataType = DataType> = ( context: KanbanCardEditorValidationContext<T>,) => KanbanCardEditorFormValidationResult | Promise<KanbanCardEditorFormValidationResult>;KanbanCardEditorDraftState
Section titled “KanbanCardEditorDraftState”interface KanbanCardEditorDraftState { readonly mode: KanbanCardEditorMode; readonly card: T | null; readonly draft: T; readonly dirty: boolean; readonly pending: boolean; readonly errors: Readonly<Record<string, string>>}KanbanCardEditorDraftController
Section titled “KanbanCardEditorDraftController”interface KanbanCardEditorDraftController { getState(): KanbanCardEditorDraftState<T>; setValue(fieldId: string, value: unknown): void; setDraft(patch: Partial<T>): void; setErrors(errors: Readonly<Record<string, string>>): void; reset(): void; close(): void; validate(): Promise<KanbanCardEditorValidationResult>; submit(): void; delete(): void}KanbanCardEditorRendererContext
Section titled “KanbanCardEditorRendererContext”interface KanbanCardEditorRendererContext { readonly grid: HTMLRevoGridElement; readonly open: boolean; readonly fields: readonly KanbanCardEditorField<T>[]; readonly state: KanbanCardEditorDraftState<T>; readonly controller: KanbanCardEditorDraftController<T>}KanbanCardEditorSubmitContext
Section titled “KanbanCardEditorSubmitContext”interface KanbanCardEditorSubmitContext { readonly grid: HTMLRevoGridElement; readonly mode: KanbanCardEditorMode; readonly card: T | null; readonly draft: T; readonly result?: KanbanMutationResult<T>}KanbanCardEditorDeleteContext
Section titled “KanbanCardEditorDeleteContext”interface KanbanCardEditorDeleteContext { readonly grid: HTMLRevoGridElement; readonly cards: readonly T[]; readonly cardIds: readonly KanbanCardId[]}KanbanCardEditorDialogOptions
Section titled “KanbanCardEditorDialogOptions”interface KanbanCardEditorDialogOptions { readonly fields?: readonly KanbanCardEditorField<T>[]; readonly hiddenFields?: readonly string[]; readonly fieldOrder?: readonly string[]; readonly createDraft?: (context: { readonly grid: HTMLRevoGridElement; readonly request: KanbanCardRequestDetail<T> }) => Partial<T> | Promise<Partial<T>>; readonly createCardId?: (context: { readonly grid: HTMLRevoGridElement; readonly cards: readonly T[] }) => KanbanCardId | Promise<KanbanCardId>; readonly validate?: KanbanCardEditorFormValidator<T>; readonly onSubmit?: (context: KanbanCardEditorSubmitContext<T>) => boolean | void | Promise<boolean | void>; readonly onDelete?: (context: KanbanCardEditorDeleteContext<T>) => boolean | void | Promise<boolean | void>; readonly confirmDelete?: boolean | ((context: KanbanCardEditorDeleteContext<T>) => boolean | Promise<boolean>); readonly confirmDiscard?: boolean | ((state: KanbanCardEditorDraftState<T>) => boolean | Promise<boolean>); readonly customization?: { readonly editor?: KanbanCardEditorDomRenderer<T> }; readonly labels?: Partial<KanbanCardEditorLabels>}KanbanCardEditorLabels
Section titled “KanbanCardEditorLabels”interface KanbanCardEditorLabels { readonly newCard: string; readonly untitledCard: string; readonly cancel: string; readonly save: string; readonly delete: string; readonly close: string; readonly deleteConfirm: string; readonly discardConfirm: string; readonly required: string; readonly validationSummary: string}KanbanCardEditorOpenRequest
Section titled “KanbanCardEditorOpenRequest”interface KanbanCardEditorOpenRequest { readonly mode: KanbanCardEditorMode; readonly card?: T; readonly cardId?: KanbanCardId; readonly cardIds?: readonly KanbanCardId[]; readonly columnProp?: KanbanColumnProp; readonly swimlaneId?: KanbanSwimlaneId; readonly request?: KanbanCardRequestDetail<T>}resolveKanbanCardEditorFields
Section titled “resolveKanbanCardEditorFields”export function resolveKanbanCardEditorFields<T extends DataType>( config: ResolvedKanbanConfig<T>, options: KanbanCardEditorDialogOptions<T> = {},): readonly KanbanCardEditorField<T>[];createKanbanCardId
Section titled “createKanbanCardId”export function createKanbanCardId<T extends DataType>(cards: readonly T[], idField: ColumnProp): string;KanbanCardEditorDialog
Section titled “KanbanCardEditorDialog”export function KanbanCardEditorDialog<T extends DataType>(props: KanbanCardEditorDialogProps<T>);KanbanCardEditorDialogProps
Section titled “KanbanCardEditorDialogProps”interface KanbanCardEditorDialogProps { readonly grid: HTMLRevoGridElement; readonly fields: readonly KanbanCardEditorField<T>[]; readonly state: KanbanCardEditorDraftState<T>; readonly labels: KanbanCardEditorLabels; readonly onValue: (field: KanbanCardEditorField<T>, value: unknown) => void; readonly onClose: () => void; readonly onSubmit: () => void; readonly onDelete: () => void}validateKanbanCardEditor
Section titled “validateKanbanCardEditor”Runs the shared packaged/replacement-editor validation and event pipeline.
export async function validateKanbanCardEditor<T extends DataType>( options: ValidateKanbanCardEditorOptions<T>,): Promise<KanbanCardEditorValidationResult>;BEFORE_KANBAN_CARD_EDITOR_VALIDATE_EVENT
Section titled “BEFORE_KANBAN_CARD_EDITOR_VALIDATE_EVENT”BEFORE_KANBAN_CARD_EDITOR_VALIDATE_EVENT: string;BEFORE_KANBAN_CARD_EDITOR_FIELD_VALIDATE_EVENT
Section titled “BEFORE_KANBAN_CARD_EDITOR_FIELD_VALIDATE_EVENT”BEFORE_KANBAN_CARD_EDITOR_FIELD_VALIDATE_EVENT: string;KANBAN_CARD_EDITOR_FIELD_VALIDATE_EVENT
Section titled “KANBAN_CARD_EDITOR_FIELD_VALIDATE_EVENT”KANBAN_CARD_EDITOR_FIELD_VALIDATE_EVENT: string;KANBAN_CARD_EDITOR_VALIDATE_EVENT
Section titled “KANBAN_CARD_EDITOR_VALIDATE_EVENT”KANBAN_CARD_EDITOR_VALIDATE_EVENT: string;KANBAN_CARD_EDITOR_INVALID_EVENT
Section titled “KANBAN_CARD_EDITOR_INVALID_EVENT”KANBAN_CARD_EDITOR_INVALID_EVENT: string;KanbanCardEditorValidationEvent
Section titled “KanbanCardEditorValidationEvent”interface KanbanCardEditorValidationEvent { readonly defaultPrevented: boolean}ValidateKanbanCardEditorOptions
Section titled “ValidateKanbanCardEditorOptions”interface ValidateKanbanCardEditorOptions { readonly grid: HTMLRevoGridElement; readonly mode: KanbanCardEditorValidationContext<T>['mode']; readonly card: T | null; readonly draft: T; readonly fields: readonly KanbanCardEditorField<T>[]; readonly reason: KanbanCardEditorValidationReason; readonly requiredMessage: string; readonly validateForm?: KanbanCardEditorFormValidator<T>; readonly emit: (eventName: string, detail: unknown) => KanbanCardEditorValidationEvent}withKanbanCardEditorAssigneeOptions
Section titled “withKanbanCardEditorAssigneeOptions”Adds board-backed options only when an assignee field has no explicit source.
export function withKanbanCardEditorAssigneeOptions<T extends DataType>({ cards, config, fields,}: KanbanCardEditorAssigneeFieldOptions<T>): readonly KanbanCardEditorField<T>[];resolveKanbanCardEditorAssigneeOptions
Section titled “resolveKanbanCardEditorAssigneeOptions”Builds a stable, de-duplicated resource catalog from canonical Kanban cards.
export function resolveKanbanCardEditorAssigneeOptions<T extends DataType>({ cards, config,}: KanbanCardEditorAssigneeCatalogOptions<T>): readonly KanbanCardEditorOption[];resolveKanbanCardEditorAssigneeResources
Section titled “resolveKanbanCardEditorAssigneeResources”Keeps selected mapped values visible even before an application supplies a catalog.
export function resolveKanbanCardEditorAssigneeResources( options: readonly KanbanCardEditorOption[], value: unknown,): readonly KanbanCardEditorOption[];KanbanCardEditorCustomField
Section titled “KanbanCardEditorCustomField”export function KanbanCardEditorCustomField<T extends DataType>( props: KanbanCardEditorCustomFieldProps<T>,);KanbanCardEditorCustomFieldProps (Extended from kanban-card-editor-custom-field.tsx)
Section titled “KanbanCardEditorCustomFieldProps (Extended from kanban-card-editor-custom-field.tsx)”interface KanbanCardEditorCustomFieldProps { readonly value: unknown; readonly disabled: boolean}KanbanCardEditorDialogHeader
Section titled “KanbanCardEditorDialogHeader”export function KanbanCardEditorDialogHeader<T extends DataType>( props: KanbanCardEditorDialogHeaderProps<T>,);KanbanCardEditorValidationMessage
Section titled “KanbanCardEditorValidationMessage”export function KanbanCardEditorValidationMessage<T extends DataType>( props: KanbanCardEditorDialogProps<T>,);KanbanCardEditorDialogBody
Section titled “KanbanCardEditorDialogBody”export function KanbanCardEditorDialogBody<T extends DataType>( props: KanbanCardEditorDialogProps<T>,);KanbanCardEditorDialogFooter
Section titled “KanbanCardEditorDialogFooter”export function KanbanCardEditorDialogFooter<T extends DataType>( props: KanbanCardEditorDialogProps<T>,);KanbanCardEditorFieldProps (Extended from kanban-card-editor-dialog.props.ts)
Section titled “KanbanCardEditorFieldProps (Extended from kanban-card-editor-dialog.props.ts)”interface KanbanCardEditorFieldProps { readonly field: KanbanCardEditorField<T>}createKanbanEditorFieldContext
Section titled “createKanbanEditorFieldContext”export function createKanbanEditorFieldContext<T extends DataType>( field: KanbanCardEditorField<T>, props: KanbanCardEditorDialogProps<T>,): KanbanCardEditorFieldContext<T>;readKanbanEditorFieldValue
Section titled “readKanbanEditorFieldValue”export function readKanbanEditorFieldValue<T extends DataType>( field: KanbanCardEditorField<T>, props: KanbanCardEditorDialogProps<T>,): unknown;isKanbanEditorFieldReadonly
Section titled “isKanbanEditorFieldReadonly”export function isKanbanEditorFieldReadonly<T extends DataType>( field: KanbanCardEditorField<T>, props: KanbanCardEditorDialogProps<T>,): boolean;isKanbanEditorFieldVisible
Section titled “isKanbanEditorFieldVisible”export function isKanbanEditorFieldVisible<T extends DataType>( field: KanbanCardEditorField<T>, props: KanbanCardEditorDialogProps<T>,): boolean;displayKanbanEditorFieldValue
Section titled “displayKanbanEditorFieldValue”export function displayKanbanEditorFieldValue<T extends DataType>( value: unknown, field: KanbanCardEditorField<T>,): string;kanbanEditorInputType
Section titled “kanbanEditorInputType”export function kanbanEditorInputType(kind: KanbanCardEditorField['kind']): string;toKanbanEditorValueArray
Section titled “toKanbanEditorValueArray”export function toKanbanEditorValueArray(value: unknown): readonly unknown[];resolveKanbanEditorOptionValue
Section titled “resolveKanbanEditorOptionValue”export function resolveKanbanEditorOptionValue( options: readonly { readonly value: string | number }[], value: string,): string | number;KanbanCardEditorFieldControl
Section titled “KanbanCardEditorFieldControl”export function KanbanCardEditorFieldControl<T extends DataType>( props: KanbanCardEditorFieldControlProps<T>,);KanbanCardEditorFieldControlProps (Extended from kanban-card-editor-field-control.tsx)
Section titled “KanbanCardEditorFieldControlProps (Extended from kanban-card-editor-field-control.tsx)”interface KanbanCardEditorFieldControlProps { readonly value: unknown; readonly disabled: boolean; readonly options: readonly KanbanCardEditorOption[]; readonly error?: string; readonly errorId?: string; readonly labelId: string}KanbanCardEditorFieldRow
Section titled “KanbanCardEditorFieldRow”export function KanbanCardEditorFieldRow<T extends DataType>( props: KanbanCardEditorFieldProps<T>,);