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:445 |
_u2 | readonly | ComponentState | undefined | - | Widget._u2 | js-api/src/u2core/component.ts:82 |
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:77 |
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:81 |
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:152
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:156
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:469
A named control carries its name in the DOM: data-u2-name is the stable automation id
selectors, tutorials and agents address the control by — the same attribute the spec renderer
stamps on named nodes, so hand-built and spec-built UI share one selector vocabulary.
Derived names (an input's label fallback) never stamp — see Component.deriveName.
Returns
string | undefined
Set Signature
set name(
x):void
Defined in: js-api/src/u2core/component.ts:473
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).
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:250
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:455
Returns
HTMLElement
Set Signature
set root(
x):void
Defined in: js-api/src/u2core/component.ts:459
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:307
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:296
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
deriveName()
protectedderiveName(x):void
Defined in: js-api/src/u2core/component.ts:72
Sets the introspection/form key without claiming an automation id — the label-fallback path:
a caption is not a stable identity, so it never reaches data-u2-name.
Parameters
| Parameter | Type |
|---|---|
x | string | undefined |
Returns
void
Inherited from
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:147
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:134
Parameters
| Parameter | Type |
|---|---|
fn | () => void |
Returns
this
Inherited from
fireEvent()
protectedfireEvent(eventId,args?):void
Defined in: js-api/src/u2core/component.ts:435
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:268
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