Install
$ agentstack add skill-devexpress-agent-skills-devextreme-numberbox ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
DevExtreme NumberBox Skill
A skill for building and configuring the DevExtreme NumberBox UI component (dxNumberBox) across Angular, React, Vue, and jQuery.
When to Use This Skill
- Creating a numeric input field
- Setting min/max value boundaries
- Formatting the displayed number
- Enabling spin buttons
- Handling value change events
- Using number masks
Before You Start
> ⚠️ Always use the DevExtreme NumberBox (dxNumberBox / DxNumberBox). Never use react-number-format, numeral.js, or a plain HTML ``.
Before writing any code, ask: Which framework are you using? Angular, React, Vue, or jQuery?
Key API
| Option | Type | Default | Description | |---|---|---|---| | value | Number | 0 | The current numeric value | | min | Number | -Infinity | Minimum allowed value | | max | Number | Infinity | Maximum allowed value | | format | Format \| String | '' | Display format (e.g., '$ #,##0.##', '#0.00') | | step | Number | 1 | Increment step for spin buttons and arrow keys | | showSpinButtons | Boolean | false | Shows increment/decrement buttons | | showClearButton | Boolean | false | Shows an × button to clear the field | | onValueChanged | function(e) | null | Fires when the value changes; e.value is the new value | | disabled | Boolean | false | Disables the component | | readOnly | Boolean | false | Prevents user input | | placeholder | String | '' | Placeholder shown when empty | | label | String | '' | Floating label text | | invalidValueMessage | String | 'Value must be a number' | Message shown when input is not a valid number | | inputAttr | Object | {} | HTML attributes applied to the inner `` element |
Events: valueChanged, keyDown, keyUp, enterKey, focusIn, focusOut, input, change.
Getting Started
jQuery
$(function() {
$('#number-box').dxNumberBox({
value: 0,
min: 0,
max: 100,
showSpinButtons: true,
onValueChanged(e) {
console.log(e.value);
}
});
});
Angular
// app.ts
import { Component } from '@angular/core';
import { DxNumberBoxComponent, DxNumberBoxTypes } from 'devextreme-angular/ui/number-box';
@Component({
selector: 'app-root',
standalone: true,
imports: [DxNumberBoxComponent],
templateUrl: './app.html'
})
export class AppComponent {
onValueChanged(e: DxNumberBoxTypes.ValueChangedEvent) {
console.log(e.value);
}
}
import DxNumberBox, { DxNumberBoxTypes } from 'devextreme-vue/number-box';
function onValueChanged(e: DxNumberBoxTypes.ValueChangedEvent) {
console.log(e.value);
}
React
import 'devextreme/dist/css/dx.fluent.blue.light.css';
import { NumberBox, type NumberBoxTypes } from 'devextreme-react/number-box';
function onValueChanged(e: NumberBoxTypes.ValueChangedEvent) {
console.log(e.value);
}
function App() {
return (
// defaultValue = uncontrolled (no state needed); use value + useState for two-way binding
);
}
export default App;
Common Patterns
Currency format with min/max
{/* React */}
Step increment with clear button
Two-way binding (React with state)
import { useState, useCallback } from 'react';
import { NumberBox } from 'devextreme-react/number-box';
function App() {
const [value, setValue] = useState(0);
const handleValueChanged = useCallback((e) => setValue(e.value), []);
return (
);
}
Constraints & Rules
- Framework first: Always ask which framework before writing code.
- No fabricated API: Never guess option names. Use the DxDocs MCP to verify if unsure.
- Version consistency: All DevExtreme packages must use the same version.
- Framework conventions: Angular uses
DxNumberBoxComponent; React imports fromdevextreme-react/number-box; Vue imports fromdevextreme-vue/number-box; jQuery uses$(...).dxNumberBox({}). - TypeScript by default: For Angular, React (TSX), and Vue, generate TypeScript unless explicitly asked otherwise.
- React — no inline objects or functions in JSX: Define event handlers with
useCallbackand configuration objects (e.g.buttonsarrays) withuseMemoor as module-level constants. Never pass() => {}or{}literals directly as JSX props. - Angular — standalone imports: Import
DxNumberBoxComponentfromdevextreme-angular/ui/number-boxinto the component'simportsarray. Do not useDxNumberBoxModuleor NgModule — Angular 20+ is fully standalone. - jQuery — always output both HTML and JS: Every jQuery snippet must include the container element (e.g. ``) alongside the JavaScript initializer.
- Angular — prefer two-way value binding: Use
[(value)]="property"instead of[value]="property"+ a separate(onValueChanged)handler when the only goal is syncing the value. - Angular/Vue — use nested components for action buttons: In Angular, declare action buttons using `
nested inside. In Vue, usenested inside. Do not use the flat[buttons]` array binding. - Angular — type the
buttonsarray asTextEditorButton[]: When defining custom action buttons as a TypeScript array, import the type and cast explicitly:import type { TextEditorButton } from 'devextreme/common'then declarebuttons: TextEditorButton[] = [...]. Without this cast the[buttons]binding will produce TypeScript errors. - React —
defaultValuevsvalue: UsedefaultValuefor uncontrolled usage (nouseStateneeded; component manages its own state). Usevalueonly when you maintain state externally withuseStateand keep it in sync viaonValueChanged. Never pass a literal likevalue={0}without a corresponding state update — the component will appear frozen.
Using the DxDocs MCP
- Search:
mcp_dxdocs_devexpress_docs_search({ technology: "{Framework}", query: "..." }) - Fetch:
mcp_dxdocs_devexpress_docs_get_content({ url: "..." })
Use for: masking options (mask, maskChar, maskRules, useMaskedValue), custom format objects, and any option not listed above.
Official Resources
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: DevExpress
- Source: DevExpress/agent-skills
- License: MIT
- Homepage: https://www.devexpress.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.