WebRADDocumentationExplore WebRAD ↗
WEBRAD / TECHNICAL REFERENCE

Edit

Single-line input with a type, value, and editing events.

WebEditStandardVisual7 events

Quick start

Add Edit1 in the Designer. Use the example in a page method.

Edit1 · event
Edit1.inputType = 'email';
Edit1.placeholder = 'you@example.com';
Edit1.readOnly = false;
Edit1.value = 'ana@example.com';
Edit1.onInput = (sender) => {
  Message(sender.value.trim());
};
Edit1.focus({ preventScroll: true });
// Edit1.clear();
  • inputType accepts text, password, email, number, search, tel, and url.
  • OnInput tracks typing; OnChange tracks confirmation by the browser.
  • Use readOnly to prevent editing, clear() to clear, and focus() to focus.

Input masks

  1. Select the Edit and open Input mask in the Inspector. Turn on Enable mask and enter a pattern in Mask.
  2. Use 0 for a digit, a for a Unicode letter, * for a letter or number, and # for any character. Other characters are literals. Escape a token or grammar character with a backslash to make it literal.
  3. Use [optional] groups, {count} or {min,max} repetitions, and | alternatives. For example, (00) 0000[0]-0000 accepts a phone number with an optional extra digit.
  4. Set Letter case to none, upper, or lower. Custom tokens accepts a JSON object of single-character rules, for example {"H":{"pattern":"[0-9A-Fa-f]","transform":"upper"}}. Custom rules can override built-in tokens.

value contains the formatted text, while rawValue contains accepted characters without mask literals. Assign rawValue when the input has no literals. maskComplete indicates whether required positions are filled; maskError reports an invalid pattern. Incomplete values remain editable, so check maskComplete before submitting. Invalid patterns disable masking until corrected. With a mask enabled, number, email, and url inputs use a text element to allow literals and editing.

Runtime changes affect the current instance; use the Inspector to save the configuration in the project.

More examples

All input types
All input types
import type { WebInputType } from '@webrad/runtime';
const inputTypes: readonly WebInputType[] = [
  'text', 'password', 'email', 'number', 'search', 'tel', 'url',
];
Edit1.inputType = inputTypes[0] ?? 'text';
// Even with inputType number, value remains a string.
const numberValue = Number(Edit1.value);
if (!Number.isFinite(numberValue)) Message('Enter a valid number');
Phone mask and raw value
Phone mask and raw value
Edit1.mask = '(00) 0000[0]-0000';
Edit1.maskEnabled = true;
Edit1.rawValue = '11987654321';
console.log(Edit1.value, Edit1.rawValue); // (11) 98765-4321, 11987654321
if (!Edit1.maskComplete) Message('Complete the phone number');
Custom hexadecimal token
Custom hexadecimal token
Edit1.maskTokens = { H: { pattern: '[0-9A-Fa-f]', transform: 'upper' } };
Edit1.mask = 'HH-HH';
Edit1.maskEnabled = true;
Edit1.rawValue = 'a1b2';
console.log(Edit1.value); // A1-B2

Inspector properties

Component options and defaults. Fields without runtime access are configured in the Inspector.

Property / sourceType and optionsDefaultRuntime access
nameName · Identitystring—name
xLeft · Size & positionnumber0x
yTop · Size & positionnumber0y
widthWidth · Size & positionnumber160width
heightHeight · Size & positionnumber36height
itemWidthResponsive width · Responsive sizeFit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.enumfixed stretch fit-content"fixed"Inspector / configuration
itemHeightResponsive height · Responsive sizeFit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.enumfixed stretch fit-content"fixed"Inspector / configuration
itemMinWidthMinimum width · Responsive sizenumber0Inspector / configuration
itemMaxWidthMaximum width · Responsive sizenumbernullInspector / configuration
itemMinHeightMinimum height · Responsive sizenumber0Inspector / configuration
itemMaxHeightMaximum height · Responsive sizenumbernullInspector / configuration
itemGrowGrow · Responsive sizenumber0Inspector / configuration
itemShrinkShrink · Responsive sizeAllows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.booleantrueInspector / configuration
itemAlignSelfItem alignment · Responsive sizeCross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.enumauto start center end stretch"auto"Inspector / configuration
itemHorizontalAnchorHorizontal anchor · Anchors & offsetsenumstart center end stretch"start"Inspector / configuration
itemVerticalAnchorVertical anchor · Anchors & offsetsenumstart center end stretch"start"Inspector / configuration
itemLeftLeft inset · Anchors & offsetsnumber0Inspector / configuration
itemRightRight inset · Anchors & offsetsnumber0Inspector / configuration
itemTopTop inset · Anchors & offsetsnumber0Inspector / configuration
itemBottomBottom inset · Anchors & offsetsnumber0Inspector / configuration
marginMargin · SpacingOuter spacing on all four sides, in pixels. Row and column layouts include this spacing between components.number0margin
marginTopMargin top · SpacingOuter spacing on this side, in pixels. Overrides the shared Margin value.number0Derived from saved propertiesmarginTop
marginRightMargin right · SpacingOuter spacing on this side, in pixels. Overrides the shared Margin value.number0Derived from saved propertiesmarginRight
marginBottomMargin bottom · SpacingOuter spacing on this side, in pixels. Overrides the shared Margin value.number0Derived from saved propertiesmarginBottom
marginLeftMargin left · SpacingOuter spacing on this side, in pixels. Overrides the shared Margin value.number0Derived from saved propertiesmarginLeft
visibleVisible · Behaviorbooleantruevisible
collapseWhenHiddenCollapse when hidden · BehaviorRemoves the component from the layout while it is not visible.booleantruecollapseWhenHidden
enabledEnabled · Behaviorbooleantrueenabled
tabIndexTabIndex · Behaviornumber0tabIndex
labelLabel · AppearanceOptional accessible label for this field.string""label
iconIcon · AppearanceOptional icon displayed inside the field.icon
214 options add chevron-down chevron-right close delete folder-open info layers lightbulb palette page play redo save search settings style undo arrow-left arrow-right arrow-up arrow-down chevron-left chevron-up chevrons-left chevrons-right chevrons-up chevrons-down menu more-horizontal more-vertical home external-link check check-circle check-square minus minus-circle plus-circle edit copy cut clipboard download upload refresh link unlink share send printer archive eye eye-off lock unlock filter sort-asc sort-desc warning alert-circle help-circle bell bookmark flag heart star folder file file-plus file-text text image camera database table list grid chart-bar chart-line code terminal cloud upload-cloud download-cloud user users user-plus mail phone globe map-pin calendar clock pause stop skip-back skip-forward volume-2 volume-x video login logout sign-in sign-out door-in door-out door-open door-closed key key-round shield shield-check shield-alert shield-x fingerprint badge-check id-card user-check user-x user-minus user-round contact accessibility password at-sign scan-face circle circle-dot square move maximize minimize expand shrink fullscreen panel-left panel-right panel-top panel-bottom sidebar-left sidebar-right layout columns rows align-left align-center align-right align-justify rotate-cw rotate-ccw repeat folder-plus folder-minus folder-x folder-search folder-check folder-lock file-minus file-x file-check file-code file-image file-video file-audio file-archive file-lock file-search file-copy files hard-drive server cpu monitor laptop smartphone tablet wifi bluetooth message-circle message-square messages-square message-plus message-x inbox outbox reply reply-all forward-mail paperclip attachment rss megaphone microphone microphone-off headset radio sms cart shopping-bag credit-card receipt wallet dollar-sign percent tags gift truck building briefcase target trophy toggle-right
""icon
iconAccessibleLabelIcon accessible label · AccessibilityAccessible name for the icon action. Empty uses the icon and field names.string""iconAccessibleLabel
valueValue · Datastring""value
placeholderPlaceholder · Appearancestring""placeholder
readOnlyRead Only · BehaviorbooleanfalsereadOnly
inputTypeInput Type · Behaviorenumtext password email number search tel url"text"inputType
maskEnabledEnable mask · Input maskApply the pattern to typing, paste and values assigned by code.booleanfalsemaskEnabled
maskMask pattern · Input mask0: digit; a: letter; *: alphanumeric; #: any character. Use [optional], {min,max}, | alternatives and backslash escapes. Example: (00) 0000[0]-0000.string""maskConditional availability in the Inspector
maskCaseLetter case · Input maskenumnone upper lower"none"maskCaseConditional availability in the Inspector
maskTokensCustom tokens · Input maskJSON character rules, merged with the built-ins. Example: {"H":{"pattern":"[0-9A-Fa-f]","transform":"upper"}}. Each key is one character; patterns match one complete character.json{}maskTokensConditional availability in the Inspector
currentRowBindingsCurrent row · DataBind writable visual values to fields of this repeated row.current-row-bindingsEditor: current-row-bindings[]currentRowBindings

API in code

MemberSignatureAccess
valueget value(): string;Read and write
rawValueAccepted characters without mask literals. Assign this when input is known to be raw.get rawValue(): string;Read and write
maskEnabledget maskEnabled(): boolean;Read and write
mask0 digit, a Unicode letter, * alphanumeric, # any character; escape literals with \\.get mask(): string;Read and write
maskTokensCustom tokens override built-ins. Each pattern matches one whole Unicode character.get maskTokens(): WebEditMaskTokens;Read and write
maskCaseget maskCase(): WebEditMaskCase;Read and write
maskCompleteTrue when an active mask has all its required positions filled. Empty is incomplete.get maskComplete(): boolean;Read-only
maskErrorEmpty for a valid pattern. Invalid patterns leave the text editable without masking.get maskError(): string;Read-only
placeholderget placeholder(): string;Read and write
readOnlyget readOnly(): boolean;Read and write
inputTypeget inputType(): WebInputType;Read and write
labelVisible, accessible field label. An empty string hides it.get label(): string;Read and write
iconIcon shown inside the field. An empty string removes it.get icon(): WebEditIcon;Read and write
iconAccessibleLabelAccessible name of the clickable icon; empty uses the icon and field names.get iconAccessibleLabel(): string;Read and write
enabledget enabled(): boolean;Read and write
tabIndexget tabIndex(): number;Read and write
onChangeset onChange(handler: WebComponentEventHandler<this> | null);Read and write
onInputset onInput(handler: WebComponentEventHandler<this> | null);Read and write
onIconClickBinds the icon action, enabling its native button and hover feedback.set onIconClick(handler: ((sender: this, event: MouseEvent) => void | Promise<void>) | null);Read and write

focus

method
focus(options?: FocusOptions): void;
Example
Edit1.focus
Edit1.focus({ preventScroll: true });

clear

method
clear(): void;
Example
Edit1.clear
Edit1.clear();

bindEvent

method
bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;
Example
Edit1.bindEvent
Edit1.bindEvent('OnClick', (sender, event) => { console.log(sender.name, event.type); });

dispose

method
dispose(): void;
Example
Edit1.dispose
// Call only when disposing of an instance whose lifecycle you control.
Edit1.dispose();
Inherited members (22)
MemberSignatureAccess
currentRowBindingscurrentRowBindings: readonly WebCurrentRowBinding[];Read and write
elementreadonly element: TElement;Read-only
idreadonly id: string;Read-only
namereadonly name: string;Read-only
visiblevisible: boolean;Read and write
collapseWhenHiddencollapseWhenHidden: boolean;Read and write
xx: number;Read and write
yy: number;Read and write
widthwidth: number;Read and write
heightheight: number;Read and write
marginOuter spacing on all four sides, in pixels.margin: number;Read and write
marginTopmarginTop: number;Read and write
marginRightmarginRight: number;Read and write
marginBottommarginBottom: number;Read and write
marginLeftmarginLeft: number;Read and write
alignSelfalignSelf: RuntimeLayoutAlignSelf;Read and write
backgroundColorbackgroundColor: string;Read and write
colorcolor: string;Read and write
borderColorborderColor: string;Read and write

show

method
show(): void;

hide

method
hide(): void;

emit

method
emit(eventName: string, detail?: unknown): boolean;

Events

Link methods in Interaction. How to use events.

OnChange

Standard event (Event).

Signature and example
Interaction → OnChange
import type { WebEdit } from '@webrad/runtime';
// Copy this method into the page class and link it in Interaction.
class Example {
  public async Edit1Change(
    sender: WebEdit,
    event: Event,
  ): Promise<void> {
    console.log(sender.name, event.type);
  }
}

OnInput

Standard event (Event).

Signature and example
Interaction → OnInput
import type { WebEdit } from '@webrad/runtime';
// Copy this method into the page class and link it in Interaction.
class Example {
  public async Edit1Input(
    sender: WebEdit,
    event: Event,
  ): Promise<void> {
    console.log(sender.name, event.type);
  }
}

OnFocus

Standard event (Event).

Signature and example
Interaction → OnFocus
import type { WebEdit } from '@webrad/runtime';
// Copy this method into the page class and link it in Interaction.
class Example {
  public async Edit1Focus(
    sender: WebEdit,
    event: Event,
  ): Promise<void> {
    console.log(sender.name, event.type);
  }
}

OnBlur

Standard event (Event).

Signature and example
Interaction → OnBlur
import type { WebEdit } from '@webrad/runtime';
// Copy this method into the page class and link it in Interaction.
class Example {
  public async Edit1Blur(
    sender: WebEdit,
    event: Event,
  ): Promise<void> {
    console.log(sender.name, event.type);
  }
}

OnIconClick

Standard event (Event).

Signature and example
Interaction → OnIconClick
import type { WebEdit } from '@webrad/runtime';
// Copy this method into the page class and link it in Interaction.
class Example {
  public async Edit1IconClick(
    sender: WebEdit,
    event: Event,
  ): Promise<void> {
    console.log(sender.name, event.type);
  }
}

OnKeyDown

Standard event (Event).

Signature and example
Interaction → OnKeyDown
import type { WebEdit } from '@webrad/runtime';
// Copy this method into the page class and link it in Interaction.
class Example {
  public async Edit1KeyDown(
    sender: WebEdit,
    event: Event,
  ): Promise<void> {
    if (event instanceof KeyboardEvent) console.log(event.key);
  }
}

OnKeyUp

Standard event (Event).

Signature and example
Interaction → OnKeyUp
import type { WebEdit } from '@webrad/runtime';
// Copy this method into the page class and link it in Interaction.
class Example {
  public async Edit1KeyUp(
    sender: WebEdit,
    event: Event,
  ): Promise<void> {
    if (event instanceof KeyboardEvent) console.log(event.key);
  }
}
WebRAD · Atentor · Read in Markdown
Source code: 6a562bda75a0 (with local changes) · November 7, 2026

Search documentation

Type to search APIs, components, and events.