DomainGrid
Defined in: js-api/src/ui/domains/domains-grid.ts:165
An editable grid over one domain table.
const grid = await DG.DomainGrid.create(grok.dapi.domains.table('grit.issue'),
{query: {filter: 'status = "open"'}});
grok.shell.newView('Issues', [grid.root]);
DomainGrid.create is the one-await form from a bare client; the constructor is SYNCHRONOUS on a prefetched context and the rows load inside the grid (DomainGrid.ready resolves when they have).
What it composes:
- the platform's grid decoration — the registered ObjectHandler for the table gets to customize the grid (captions, ref cells showing display names, name column first, system columns hidden), exactly as in the built-in Domain View;
- a DomainFrameEditor as THE writer of the editing state: in-grid edits are tracked, validated, highlighted (amber) and marked (red, with the message in the tooltip), and saved as ONE transaction;
- permission gating from DomainTableCapabilities: no
canEditmeans a read-only grid, nocanInsertmeans no Add row, nocanDeletemeans no Delete row, and columns the caller cannot write stay read-only.
Capabilities are SNAPSHOT when the grid is built. A later grant change (or a
grok.dapi.domains.invalidateUiCaches()) affects only grids created after it —
an existing grid keeps the gating it was born with; rebuild it to pick the new
permissions up.
Refreshing is the CALLER's decision: DomainFrameEditor.refresh rebuilds and discards pending edits by design — check DomainFrameEditor.isDirty first (this class rebinds the grid to whatever the editor rebuilds).
Extends
Implements
Constructors
Constructor
new DomainGrid(
source,options?):DomainGrid
Defined in: js-api/src/ui/domains/domains-grid.ts:184
SYNCHRONOUS over a prefetched context (the rows load afterwards — see ready), or over an editor the caller already owns (a detail grid of a master-detail page, sharing one save — forEditor).
Parameters
| Parameter | Type |
|---|---|
source | DomainFrameEditor | IDomainTableContext |
options? | DomainGridOptions |
Returns
DomainGrid
Overrides
Properties
| Property | Modifier | Type | Default value | Description | Inherited from | Defined in |
|---|---|---|---|---|---|---|
_functions | protected | Func[] | [] | - | Widget._functions | js-api/src/widgets/base.ts:214 |
_properties | protected | Property[] | [] | - | Widget._properties | js-api/src/widgets/base.ts:213 |
_root | protected | HTMLElement | undefined | - | Widget._root | js-api/src/u2core/component.ts:423 |
_u2 | readonly | ComponentState | undefined | - | Widget._u2 | js-api/src/u2core/component.ts:76 |
componentMeta? | public | ComponentMetaBase | undefined | The registry metadata of the tag that built this component, stamped by the spec renderer — the single source the introspection surface below is generated from. | Widget.componentMeta | js-api/src/u2core/component.ts:71 |
dart | public | any | undefined | - | Widget.dart | js-api/src/widgets/base.ts:217 |
editor | readonly | DomainFrameEditor | undefined | - | - | js-api/src/ui/domains/domains-grid.ts:167 |
factory | public | Func | null | null | Constructor function. No parameters, returns [Widget]. | Widget.factory | js-api/src/widgets/base.ts:211 |
grid | readonly | Grid | undefined | - | - | js-api/src/ui/domains/domains-grid.ts:166 |
isDetached | public | boolean | false | - | Widget.isDetached | js-api/src/widgets/base.ts:218 |
props | public | any | undefined | - | Widget.props | js-api/src/widgets/base.ts:215 |
specProps? | public | Record<string, unknown> | undefined | The props the registry's create was handed, stamped alongside componentMeta: the last resort of the property read below, for a component that keeps a prop under another name or not at all (a create wrapping a bare element). Construction-time values — a live one always wins. | Widget.specProps | js-api/src/u2core/component.ts:75 |
subs | public | Subscription[] | undefined | - | Widget.subs | js-api/src/widgets/base.ts:216 |
temp | public | any | undefined | Contains auxiliary information | Widget.temp | js-api/src/widgets/base.ts:208 |
WIDGET_ACTION_NAMESPACE | readonly | "DomainUi" | 'DomainUi' | Namespace every widget-action Func is registered under — what keeps Save from colliding with another package's Save. | - | js-api/src/ui/domains/domains-grid.ts:553 |
WIDGET_ACTION_TAGS | readonly | "domain-ui,widget-action" | 'domain-ui,widget-action' | Tags every widget-action Func carries: domain-ui marks the origin, widget-action the calling convention (one widget input). | - | js-api/src/ui/domains/domains-grid.ts:557 |
Accessors
aiDescription
Get Signature
get aiDescription():
string|null
Defined in: js-api/src/u2core/component.ts:146
A short AI-facing briefing, seeded from the registry's usage or description.
Returns
string | null
Set Signature
set aiDescription(
x):void
Defined in: js-api/src/u2core/component.ts:150
Parameters
| Parameter | Type |
|---|---|
x | string | null |
Returns
void
Inherited from
ambientAdoption
Get Signature
get
protectedambientAdoption():boolean
Defined in: js-api/src/widgets/base.ts:272
A widget wrapper minted inside somebody's effect scope must not be auto-disposed with it.
Returns
boolean
Inherited from
children
Get Signature
get children():
Widget<any>[]
Defined in: js-api/src/widgets/base.ts:304
Parent widget up the DOM tree, or null.
Returns
Widget<any>[]
Inherited from
dataFrame
Get Signature
get dataFrame():
DataFrame
Defined in: js-api/src/ui/domains/domains-grid.ts:247
The frame the grid shows — replaced whenever the editor refreshes.
Returns
editable
Get Signature
get editable():
boolean
Defined in: js-api/src/ui/domains/domains-grid.ts:250
Whether in-grid editing is on (the requested mode AND the table's canEdit).
Returns
boolean
editors
Get Signature
get editors():
DomainFrameEditor[]
Defined in: js-api/src/ui/domains/domains-grid.ts:253
IEditorHost: the pending batch a hosting page answers for.
Returns
Every editor whose pending changes this object answers for. Read on demand: an editor that appears after the widget was constructed must show up here.
Implementation of
isDirty
Get Signature
get isDirty():
boolean
Defined in: js-api/src/ui/domains/domains-grid.ts:256
Whether anything in the grid is unsaved.
Returns
boolean
name
Get Signature
get name():
string|undefined
Defined in: js-api/src/u2core/component.ts:67
Unique within a spec: the anchor for selection, patches and automation. An accessor pair
(not a field), so a platform descendant's own name accessors override it legally (TS2611).
Returns
string | undefined
Set Signature
set name(
x):void
Defined in: js-api/src/u2core/component.ts:68
Parameters
| Parameter | Type |
|---|---|
x | string | undefined |
Returns
void
Inherited from
parent
Get Signature
get parent():
Widget<any> |null
Defined in: js-api/src/widgets/base.ts:301
Parent widget up the DOM tree, or null.
Returns
Widget<any> | null
Inherited from
propertyTarget
Get Signature
get propertyTarget():
unknown
Defined in: js-api/src/u2core/component.ts:228
What this component's properties are read from and written to — prop.get(target) /
prop.set(target, v): the component itself, unless an adoption says otherwise.
Returns
unknown
Inherited from
propertyTier
Get Signature
get propertyTier():
boolean
Defined in: js-api/src/widgets/base.ts:276
Every property getProperties declares is a bind step, read and written on propertyTarget.
Returns
boolean
Inherited from
ready
Get Signature
get ready():
Promise<this>
Defined in: js-api/src/ui/domains/domains-grid.ts:264
Resolves when the first query has run — or when it FAILED, in which case the grid shows the reason and this still resolves (a rejected promise nobody awaits is an unhandled rejection). Idempotent: every call returns the same promise; a grid built on a caller's editor is ready at once.
Returns
Promise<this>
root
Get Signature
get root():
HTMLElement
Defined in: js-api/src/u2core/component.ts:431
Returns
HTMLElement
Set Signature
set root(
x):void
Defined in: js-api/src/u2core/component.ts:435
Parameters
| Parameter | Type |
|---|---|
x | HTMLElement |
Returns
void
Inherited from
scope
Get Signature
get scope():
Scope
Defined in: js-api/src/u2core/component.ts:53
Minted on first use; assigned before _scopeMinted fires, so the hook's own
this.scope.own(...) reads the stored scope instead of re-entering the mint.
Returns
Inherited from
type
Get Signature
get type():
string
Defined in: js-api/src/ui/domains/domains-grid.ts:244
The platform type name — what Widget discovery and a page's nested
status key on.
Returns
string
Overrides
Methods
_notifyPropertyChange()
protected_notifyPropertyChange(p):void
Defined in: js-api/src/widgets/base.ts:351
Notifies the property tier. Called from both the addProperty setter (overrides that skip
super would otherwise lose props.x = writes) and onPropertyChanged (direct calls);
the double notify collapses into one microtask refresh.
Parameters
| Parameter | Type |
|---|---|
p | Property | null |
Returns
void
Inherited from
_ownPropertyChanges()
protected_ownPropertyChanges():ObservableLike<PropertyChange>
Defined in: js-api/src/widgets/base.ts:356
Returns
ObservableLike<PropertyChange>
Inherited from
_scopeMinted()
protected_scopeMinted(_scope):void
Defined in: js-api/src/widgets/base.ts:320
First-mint hook: a platform descendant wires its lifecycle here. Never fired for a scope provided to init — that path runs inside the constructor chain.
Parameters
| Parameter | Type |
|---|---|
_scope | Scope |
Returns
void
Inherited from
_wireDartLifecycle()
protected_wireDartLifecycle():void
Defined in: js-api/src/widgets/base.ts:336
Dart-owned lifecycle: the platform kill disposes the scope, and disposing the scope kills the widget through the kill-walk.
Returns
void
Inherited from
_wireJsLifecycle()
protected_wireJsLifecycle():void
Defined in: js-api/src/widgets/base.ts:327
JS-owned lifecycle: disposing the scope detaches the widget, and vice versa.
Returns
void
Inherited from
_wireLifecycle()
protected_wireLifecycle():void
Defined in: js-api/src/widgets/base.ts:322
Returns
void
Inherited from
addRow()
addRow():
number
Defined in: js-api/src/ui/domains/domains-grid.ts:453
Appends a row prefilled with the grid's defaults and puts the cursor on
it; -1 when the editor refused (a save is in flight).
Returns
number
apply()
apply(
properties):Widget
Defined in: js-api/src/widgets/base.ts:261
Parameters
| Parameter | Type | Description |
|---|---|---|
properties | object | - |
Returns
Inherited from
bindProps()
bindProps():
BindProp[]
Defined in: js-api/src/u2core/component.ts:285
The signal-backed subset of the meta props — what a binding picker offers on a named node — plus, under propertyTier, every declared property. Allocates no signal.
Returns
BindProp[]
Inherited from
bindStep()
bindStep(
name):BindSource|Signal<unknown> |null
Defined in: js-api/src/u2core/component.ts:274
One binding step (DD5): a meta-declared prop's same-named Signal member — a named node is a
bind source, generated off componentMeta the way getProperties is — then, under
propertyTier, a cached signal over the declared property. '' answers the default
binding: the component's own value signal, where one exists.
Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
BindSource | Signal<unknown> | null
Inherited from
deleteRow()
deleteRow():
boolean
Defined in: js-api/src/ui/domains/domains-grid.ts:463
Marks the current row for deletion; false when there is no current row.
Returns
boolean
detach()
detach():
void
Defined in: js-api/src/ui/domains/domains-grid.ts:267
Releases the subscriptions of both the grid and its editor.
Returns
void
Overrides
discard()
discard():
void
Defined in: js-api/src/ui/domains/domains-grid.ts:477
Drops the pending batch.
Returns
void
dispose()
dispose():
void
Defined in: js-api/src/u2core/component.ts:141
On a never-engaged wrapper the getter mints here and _scopeMinted wires the
lifecycle (own(kill) + the platform cleanup for Dart-owned), so dispose still kills it;
re-entry from the kill cleanup is a no-op via the scope's disposed flag.
Returns
void
Inherited from
effect()
effect(
fn):this
Defined in: js-api/src/u2core/component.ts:128
Parameters
| Parameter | Type |
|---|---|
fn | () => void |
Returns
this
Inherited from
fireEvent()
protectedfireEvent(eventId,args?):void
Defined in: js-api/src/u2core/component.ts:413
Parameters
| Parameter | Type |
|---|---|
eventId | string |
args? | unknown |
Returns
void
Inherited from
getDartProperties()
getDartProperties():
any[]
Defined in: js-api/src/widgets/base.ts:289
Returns
any[]
Inherited from
getFunctions()
getFunctions():
Func[]
Defined in: js-api/src/ui/domains/domains-grid.ts:512
The actions this caller may perform, as REAL platform Funcs from the shared vocabulary — permission-gated exactly like the toolbar buttons.
Returns
Func[]
Overrides
getProperties()
getProperties():
Property[]
Defined in: js-api/src/widgets/base.ts:279
Returns all properties of this widget: the meta-generated ones plus addProperty's.
Returns
Property[]
Inherited from
getWidgetStatus()
getWidgetStatus():
IWidgetStatus
Defined in: js-api/src/ui/domains/domains-grid.ts:493
What a grid reports about itself: its parts, how much is pending, and the
first blocking error. Deliberately NO per-cell inputs — a grid's machine
surface is its status, its functions and its dataFrame, which is a
first-class platform object already.
Returns
Overrides
link()
link(
name,source,twoWay):void
Defined in: js-api/src/u2core/component.ts:246
Keeps this component's name step and source equal, echo-suppressed by value; the reverse
direction only where twoWay. A component that took source as its own signal needs no link
and gets none; a read-only step cannot follow anything and gets none either.
Parameters
| Parameter | Type |
|---|---|
name | string |
source | Signal<unknown> |
twoWay | boolean |
Returns
void
Inherited from
onEvent()
onEvent(
eventId?):Observable<any>
Defined in: js-api/src/widgets/base.ts:419
Observes events with the specified eventId. Override in subclasses to provide actual events.
Parameters
| Parameter | Type | Default value |
|---|---|---|
eventId | string | null | null |
Returns
Observable<any>
Inherited from
onFrameAttached()
onFrameAttached(
dataFrame):void
Defined in: js-api/src/widgets/base.ts:295
Parameters
| Parameter | Type |
|---|---|
dataFrame | DataFrame |
Returns
void
Inherited from
onPropertyChanged()
onPropertyChanged(
property):void
Defined in: js-api/src/widgets/base.ts:287
Gets called when viewer's property is changed.
Parameters
| Parameter | Type | Description |
|---|---|---|
property | Property | null | or null, if multiple properties were changed. |
Returns
void
Inherited from
own()
own(
dispose):this
Defined in: js-api/src/u2core/component.ts:133
Parameters
| Parameter | Type |
|---|---|
dispose | () => void |
Returns
this
Inherited from
propertyChanges()
protectedpropertyChanges():ObservableLike<PropertyChange>
Defined in: js-api/src/widgets/base.ts:366
What refreshes the property tier's cached signals from outside: null where nothing announces a change (one-way).
Returns
ObservableLike<PropertyChange>
Inherited from
refresh()
refresh():
Promise<void>
Defined in: js-api/src/ui/domains/domains-grid.ts:481
Re-runs the query — WITHOUT a prompt: refreshing IS discarding, and the gate belongs to whoever owns the page (see DomainFrameEditor.refresh).
Returns
Promise<void>
registerFunction()
protectedregisterFunction(f):void
Defined in: js-api/src/u2core/component.ts:409
Parameters
| Parameter | Type |
|---|---|
f | FuncLike |
Returns
void
Inherited from
run()
run<
T>(fn):T
Defined in: js-api/src/u2core/component.ts:124
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
fn | () => T |
Returns
T
Inherited from
save()
save():
Promise<boolean>
Defined in: js-api/src/ui/domains/domains-grid.ts:474
Writes the pending batch as one transaction.
Returns
Promise<boolean>
sourceRowsChanged()
sourceRowsChanged():
void
Defined in: js-api/src/widgets/base.ts:293
Returns
void
Inherited from
sub()
sub(
subscription):void
Defined in: js-api/src/widgets/base.ts:254
Registers a subscription to an external event.
Parameters
| Parameter | Type | Description |
|---|---|---|
subscription | Subscription | - |
Returns
void
Inherited from
toDart()
toDart():
any
Defined in: js-api/src/widgets/base.ts:246
Returns
any
Inherited from
actionFuncName()
staticactionFuncName(caption):string
Defined in: js-api/src/ui/domains/domains-grid.ts:643
A function name for [caption]: identifier characters only, so an action called
'Edit...' registers as Edit.
Parameters
| Parameter | Type |
|---|---|
caption | string |
Returns
string
addRowFunc()
staticaddRowFunc():Func
Defined in: js-api/src/ui/domains/domains-grid.ts:613
Appends an empty row to a grid's pending batch (prefilled with the grid's
defaults); false when the widget cannot insert.
Returns
build()
staticbuild(builder):Control
Defined in: js-api/src/u2core/component.ts:470
Builds a control out of plain elements: builder runs with the new control's scope
ambient, so signal bindings and nested components inside it are owned by the result.
The ambient scope only spans the synchronous part of builder — components constructed after
an await inside it are adopted by nobody and must be disposed by hand, or constructed before
the first await.
Parameters
| Parameter | Type |
|---|---|
builder | () => HTMLElement | (string | HTMLElement | Control)[] |
Returns
Inherited from
create()
staticcreate(client,options?):Promise<DomainGrid>
Defined in: js-api/src/ui/domains/domains-grid.ts:231
Builds the grid: resolves the table's registry metadata and capabilities, runs the query, attaches the editor and decorates the grid through the table's registered handler.
Parameters
| Parameter | Type |
|---|---|
client | DomainTableClient |
options? | DomainGridOptions |
Returns
Promise<DomainGrid>
decorate()
staticdecorate(grid,table,dataFrame?):void
Defined in: js-api/src/ui/domains/domains-grid.ts:315
Customizes [grid] the way the platform customizes every grid over [table]'s
rows: column captions, reference cells showing display names, the name
column first, system and ~ columns hidden.
Decoration goes through the handler that WINS dispatch for the table, which
is safe for plain handlers — one that does not override renderGrid falls
through to the platform meta from the JS side too.
Which is not a one-liner, because forEntity resolves plenty of handlers
that must NOT be decorated through. It applies the collapse rule of the
built-in Domain View (DomainView.refreshGrid) branch for branch — with the
Dart one widened, since the Dart rule names DomainRowMeta while every Dart
meta reaches JS as one wrapping proxy:
- a DART meta collapses — the resolved proxy may be the inert GENERIC
'DomainRow'fallback (no per-table meta registered, e.g. a session with domain databases not enabled), whoserenderGridearly-returns into a raw grid; a registered per-table meta decorates identically toownanyway; - a JS handler WITHOUT a real
renderGridcollapses — the base method is a no-op the platform marksisPlatformDefault; - everything else wins, INCLUDING a plugin handler that claims the table
through
isApplicableunder a type of its own.
own's inherited renderGrid reaches the per-table meta regardless of
registration, so the collapse never loses decoration.
Parameters
| Parameter | Type |
|---|---|
grid | Grid |
table | string |
dataFrame? | DataFrame |
Returns
void
deleteRowFunc()
staticdeleteRowFunc():Func
Defined in: js-api/src/ui/domains/domains-grid.ts:622
Marks the widget's current row for deletion (the save writes it).
Returns
discardFunc()
staticdiscardFunc():Func
Defined in: js-api/src/ui/domains/domains-grid.ts:592
Drops the widget's pending changes.
Returns
find()
staticfind(root):Widget<any> |null
Defined in: js-api/src/widgets/base.ts:236
Finds existing widget from its visual root.
Parameters
| Parameter | Type |
|---|---|
root | Element |
Returns
Widget<any> | null
Inherited from
forEditor()
staticforEditor(editor,options?):DomainGrid
Defined in: js-api/src/ui/domains/domains-grid.ts:238
Builds the grid over an editor the caller already owns (a detail grid of a master-detail form sharing one save).
Parameters
| Parameter | Type |
|---|---|
editor | DomainFrameEditor |
options? | DomainGridOptions |
Returns
DomainGrid
fromRoot()
staticfromRoot(root):Widget
Defined in: js-api/src/widgets/base.ts:425
Creates a new widget from the root element.
Parameters
| Parameter | Type |
|---|---|
root | HTMLElement |
Returns
Inherited from
getAll()
staticgetAll():Widget<any>[]
Defined in: js-api/src/widgets/base.ts:231
Returns all currently active widgets.
Returns
Widget<any>[]
Inherited from
init()
staticinit(self,scope?):void
Defined in: js-api/src/u2core/component.ts:83
Per-instance state, for a constructed component and for an adopted platform object alike.
Parameters
| Parameter | Type |
|---|---|
self | Component |
scope? | Scope |
Returns
void
Inherited from
is()
staticis(x):x is Control
Defined in: js-api/src/u2core/component.ts:439
Structural probe by methods only — never .scope: the accessor mints.
Parameters
| Parameter | Type |
|---|---|
x | unknown |
Returns
x is Control
Inherited from
refreshFunc()
staticrefreshFunc():Func
Defined in: js-api/src/ui/domains/domains-grid.ts:632
Re-reads the widget's rows from the server (through the unsaved-changes gate of whatever owns it).
Returns
registerCleanup()
staticregisterCleanup(element,cleanup):void
Defined in: js-api/src/widgets/base.ts:242
Registers a cleanup function to run when [element] is killed — i.e. when its host view or pane closes. Also marks the element so the kill-walk can find it.
Parameters
| Parameter | Type |
|---|---|
element | Element |
cleanup | Function |
Returns
void
Inherited from
resetFunc()
staticresetFunc():Func
Defined in: js-api/src/ui/domains/domains-grid.ts:602
Puts the widget back to the values it was opened with.
Returns
sameValue()
staticsameValue(a,b):boolean
Defined in: js-api/src/u2core/component.ts:105
The equality the property tier and link suppress echoes by: Object.is, arrays
element-wise, plain objects key-wise (recursive), everything else by identity.
Parameters
| Parameter | Type |
|---|---|
a | unknown |
b | unknown |
Returns
boolean
Inherited from
saveFunc()
staticsaveFunc():Func
Defined in: js-api/src/ui/domains/domains-grid.ts:585
Writes the widget's pending changes (one transaction per editor); resolves to whether everything landed.
Returns
widgetActionFunc()
staticwidgetActionFunc(name,run,description):Func
Defined in: js-api/src/ui/domains/domains-grid.ts:566
The widget-action Func called [name], registering it on first use.
Idempotent by qualified name (DomainUi:<name>): the first registration wins and
every later call returns the same Func, so a library bundled into several
packages registers one vocabulary, not one per bundle.
Parameters
| Parameter | Type |
|---|---|
name | string |
run | (widget) => Promise<boolean> |
description | string |