@ticatec/uniface-element 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion/README.md +169 -0
- package/dist/accordion/README_CN.md +176 -0
- package/dist/action-bar/README.md +275 -0
- package/dist/action-bar/README_CN.md +285 -0
- package/dist/app-layout/README.md +374 -0
- package/dist/app-layout/README_CN.md +381 -0
- package/dist/app-top-bar/README.md +357 -0
- package/dist/app-top-bar/README_CN.md +365 -0
- package/dist/attachment-files/AttachmentFilesField.svelte +67 -1
- package/dist/attachment-files/AttachmentFilesField.svelte.d.ts +8 -1
- package/dist/base-calendar/CalendarBase.svelte +0 -3
- package/dist/box/README.md +385 -0
- package/dist/box/README_CN.md +393 -0
- package/dist/breadcrumbs/README.md +442 -0
- package/dist/breadcrumbs/README_CN.md +442 -0
- package/dist/button/Button.svelte +27 -7
- package/dist/button/Button.svelte.d.ts +3 -1
- package/dist/button/IconButton.svelte +26 -6
- package/dist/button/IconButton.svelte.d.ts +3 -1
- package/dist/button/IconButton_README.md +513 -0
- package/dist/button/IconButton_README_CN.md +513 -0
- package/dist/button/README.md +428 -0
- package/dist/button/README_CN.md +428 -0
- package/dist/button/TextButton.svelte +26 -6
- package/dist/button/TextButton.svelte.d.ts +3 -1
- package/dist/button/TextButton_README.md +571 -0
- package/dist/button/TextButton_README_CN.md +571 -0
- package/dist/card/README.md +666 -0
- package/dist/card/README_CN.md +666 -0
- package/dist/cascade-options-select/CascadeOptionSelect.svelte +43 -7
- package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +3 -4
- package/dist/cascade-options-select/README.md +663 -2
- package/dist/cascade-options-select/README_CN.md +664 -0
- package/dist/checkbox/CheckBox.svelte +20 -6
- package/dist/checkbox/CheckBox.svelte.d.ts +4 -2
- package/dist/checkbox/README.md +562 -0
- package/dist/checkbox/README_CN.md +727 -0
- package/dist/common-editor/NumberInput.svelte +39 -26
- package/dist/common-editor/NumberInput.svelte.d.ts +5 -1
- package/dist/concise-data-table/ConciseListTable.svelte +133 -36
- package/dist/concise-data-table/ConciseListTable.svelte.d.ts +8 -1
- package/dist/concise-data-table/DataCell.svelte +5 -6
- package/dist/concise-data-table/DataRow.svelte +22 -2
- package/dist/concise-data-table/DataRow.svelte.d.ts +1 -0
- package/dist/concise-data-table/README.md +606 -0
- package/dist/concise-data-table/README_CN.md +611 -0
- package/dist/context-menu/ContextMenu.svelte +138 -21
- package/dist/context-menu/ContextMenu.svelte.d.ts +5 -0
- package/dist/context-menu/ContextMenuItem.d.ts +20 -4
- package/dist/context-menu/README.md +551 -0
- package/dist/context-menu/README_CN.md +551 -0
- package/dist/criteria-field/CriteriaField.svelte +3 -5
- package/dist/criteria-field/README.md +532 -0
- package/dist/criteria-field/README_CN.md +532 -0
- package/dist/data-table/README.md +712 -0
- package/dist/data-table/README_CN.md +712 -0
- package/dist/date-picker/DatePicker.svelte +44 -7
- package/dist/date-picker/DatePicker.svelte.d.ts +3 -4
- package/dist/date-picker/DateTimePicker.svelte +32 -8
- package/dist/date-picker/DateTimePicker.svelte.d.ts +3 -4
- package/dist/date-picker/README.md +326 -0
- package/dist/date-picker/README_CN.md +316 -0
- package/dist/date-picker/ScrollBar.svelte +18 -8
- package/dist/date-picker/ScrollBar.svelte.d.ts +1 -1
- package/dist/date-picker/TimePanel.svelte +5 -5
- package/dist/date-picker/TimePanel.svelte.d.ts +1 -1
- package/dist/date-range/README.md +374 -0
- package/dist/date-range/README_CN.md +374 -0
- package/dist/dialog/README.md +596 -0
- package/dist/dialog/README_CN.md +596 -0
- package/dist/drawer/README.md +679 -1
- package/dist/drawer/README_CN.md +679 -0
- package/dist/group-box/group-check-box/GroupCheckBox.svelte +62 -5
- package/dist/group-box/group-check-box/GroupCheckBox.svelte.d.ts +7 -2
- package/dist/group-box/group-check-box/README.md +749 -0
- package/dist/group-box/group-check-box/README_CN.md +750 -0
- package/dist/group-box/group-radio-box/GroupRadioBox.svelte +69 -4
- package/dist/group-box/group-radio-box/GroupRadioBox.svelte.d.ts +8 -2
- package/dist/group-box/group-radio-box/README.md +920 -0
- package/dist/group-box/group-radio-box/README_CN.md +920 -0
- package/dist/image-files/README.md +1346 -0
- package/dist/image-files/README_CN.md +1346 -0
- package/dist/input-options-select/InputOptionsSelect.svelte +161 -65
- package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +4 -1
- package/dist/lib/forwardAllEvents.d.ts +3 -0
- package/dist/lib/forwardAllEvents.js +24 -0
- package/dist/list-box/README.md +579 -0
- package/dist/list-box/README_CN.md +682 -0
- package/dist/lookup-editor/LookupEditor.svelte +15 -3
- package/dist/lookup-editor/LookupEditor.svelte.d.ts +3 -4
- package/dist/lookup-editor/README.md +684 -0
- package/dist/lookup-editor/README_CN.md +684 -0
- package/dist/memo-editor/MemoEditor.svelte +77 -27
- package/dist/memo-editor/MemoEditor.svelte.d.ts +6 -3
- package/dist/memo-editor/README.md +819 -0
- package/dist/memo-editor/README_CN.md +819 -0
- package/dist/message-box/README.md +398 -0
- package/dist/message-box/README_CN.md +398 -0
- package/dist/number-editor/NumberEditor.svelte +2 -2
- package/dist/number-editor/NumberEditor.svelte.d.ts +1 -1
- package/dist/number-editor/README.md +353 -22
- package/dist/number-editor/README_CN.md +357 -0
- package/dist/number-range/README.md +443 -0
- package/dist/number-range/README_CN.md +443 -0
- package/dist/options-multi-select/OptionsMultiSelect.svelte +87 -12
- package/dist/options-multi-select/OptionsMultiSelect.svelte.d.ts +3 -1
- package/dist/options-multi-select/README.md +480 -0
- package/dist/options-multi-select/README_CN.md +480 -0
- package/dist/options-select/OptionsSelect.svelte +36 -5
- package/dist/options-select/OptionsSelect.svelte.d.ts +3 -4
- package/dist/options-select/README.md +632 -0
- package/dist/options-select/README_CN.md +632 -0
- package/dist/page/README.md +605 -0
- package/dist/page/README_CN.md +605 -0
- package/dist/pagination/README.md +946 -0
- package/dist/pagination/README_CN.md +946 -0
- package/dist/pagination-panel/README.md +1075 -0
- package/dist/pagination-panel/README_CN.md +1075 -0
- package/dist/popup-hint/README.md +841 -0
- package/dist/popup-hint/README_CN.md +840 -0
- package/dist/progress-bar/README.md +242 -0
- package/dist/progress-bar/README_CN.md +242 -0
- package/dist/progress-step-bar/README.md +316 -0
- package/dist/progress-step-bar/README_CN.md +316 -0
- package/dist/prompts-text-editor/PromptsTextEditor.svelte +6 -3
- package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +3 -1
- package/dist/prompts-text-editor/README.md +329 -0
- package/dist/prompts-text-editor/README_CN.md +329 -0
- package/dist/property-editor/README.md +969 -0
- package/dist/property-editor/README_CN.md +969 -0
- package/dist/radio-button/README.md +372 -0
- package/dist/radio-button/README_CN.md +372 -0
- package/dist/radio-button/RadioButton.svelte +32 -3
- package/dist/radio-button/RadioButton.svelte.d.ts +12 -1
- package/dist/search-box/README.md +425 -0
- package/dist/search-box/README_CN.md +424 -0
- package/dist/search-box/SearchBox.svelte +22 -6
- package/dist/search-box/SearchBox.svelte.d.ts +4 -1
- package/dist/tabs/README.md +919 -0
- package/dist/tabs/README_CN.md +920 -0
- package/dist/tag/README.md +922 -0
- package/dist/tag/README_CN.md +922 -0
- package/dist/text-editor/PasswordEditor.svelte +17 -2
- package/dist/text-editor/PasswordEditor.svelte.d.ts +3 -3
- package/dist/text-editor/PasswordEditor_README.md +551 -0
- package/dist/text-editor/PasswordEditor_README_CN.md +551 -0
- package/dist/text-editor/README.md +466 -0
- package/dist/text-editor/README_CN.md +466 -0
- package/dist/text-editor/TextEditor.svelte +51 -19
- package/dist/text-editor/TextEditor.svelte.d.ts +0 -1
- package/dist/time-editor/README.md +498 -24
- package/dist/time-editor/README_CN.md +498 -0
- package/dist/time-editor/TimeEditor.svelte +7 -3
- package/dist/time-editor/TimeEditor.svelte.d.ts +3 -1
- package/dist/toast/README.md +667 -0
- package/dist/toast/README_CN.md +667 -0
- package/dist/transfer/README.md +795 -0
- package/dist/transfer/Transfer.svelte +6 -4
- package/dist/transfer/Transfer.svelte.d.ts +3 -1
- package/dist/tree-view/README.md +761 -0
- package/dist/tree-view/README_CN.md +761 -0
- package/dist/tree-view/TreeView.svelte +5 -3
- package/dist/tree-view/TreeView.svelte.d.ts +3 -1
- package/dist/unit-number-editor/README.md +546 -20
- package/dist/unit-number-editor/README_CN.md +525 -0
- package/dist/unit-number-editor/UnitNumberEditor.svelte +62 -8
- package/dist/unit-number-editor/UnitNumberEditor.svelte.d.ts +5 -1
- package/docs/form-field/cn/README_CN.md +364 -0
- package/docs/form-field/en/README.md +364 -0
- package/docs/form-panel/flex-form/cn/README_CN.md +586 -0
- package/docs/form-panel/flex-form/en/README.md +586 -0
- package/docs/form-panel/flex-row-form/cn/README_CN.md +787 -0
- package/docs/form-panel/flex-row-form/en/README.md +787 -0
- package/docs/form-panel/grid-form/en/README.md +744 -0
- package/package.json +1 -1
- package/dist/drawer/README-CN.md +0 -1
|
@@ -1,26 +1,357 @@
|
|
|
1
1
|
# NumberEditor
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
```sveltehtml
|
|
6
|
-
<NumberEditor filled max={500} suffix="KG" compact/>
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
## 属性
|
|
10
|
-
| 属性 | 描述 | 类型 |
|
|
11
|
-
|---|------------------|-----------------|
|
|
12
|
-
| disabled | 当前的数字输入框是否可用 | true / false |
|
|
13
|
-
| readonly | 当前的数字输入框为只读或者可编辑 | true / false |
|
|
14
|
-
| outlined | 当前的是否带边框 | true / false |
|
|
15
|
-
| filled | 当前输入框是否填充 | true / false |
|
|
16
|
-
| compact | 按照紧凑格式显示 | true / false |
|
|
17
|
-
| style | 自定义style | 字符串 |
|
|
18
|
-
| value | 值 | true / false |
|
|
19
|
-
| precision | 精度 | 整数 |
|
|
20
|
-
| suffix | 后缀 | 字符 |
|
|
21
|
-
| prefix | 前缀 | 字符 |
|
|
22
|
-
| allowNegative | 是否可以是负数 | true / false |
|
|
23
|
-
| displayMode | 最小值 | 0(格式显示) / 1(正常) |
|
|
24
|
-
| max | 最大值 | 数字 |
|
|
3
|
+
A robust number input component that provides precision control, validation, and formatting for numeric data entry.
|
|
25
4
|
|
|
5
|
+
## Features
|
|
26
6
|
|
|
7
|
+
- **Precision Control**: Configure decimal places for accurate number formatting
|
|
8
|
+
- **Range Validation**: Set min/max values with automatic boundary enforcement
|
|
9
|
+
- **Negative Numbers**: Optional support for negative values
|
|
10
|
+
- **Custom Formatting**: Add prefix/suffix text for currency, units, etc.
|
|
11
|
+
- **Input Validation**: Real-time validation with proper error handling
|
|
12
|
+
- **Multiple Variants**: Support for outlined, filled, plain, and default styles
|
|
13
|
+
- **Display Mode**: Switch between edit and view modes
|
|
14
|
+
- **Action Icons**: Built-in clear functionality with customizable icons
|
|
15
|
+
- **Focus Management**: Programmatic focus control with setFocus method
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @ticatec/uniface-element
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Basic Usage
|
|
24
|
+
|
|
25
|
+
```svelte
|
|
26
|
+
<script>
|
|
27
|
+
import NumberEditor from '@ticatec/uniface-element/NumberEditor';
|
|
28
|
+
|
|
29
|
+
let price = 29.99;
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<NumberEditor bind:value={price} />
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## API Reference
|
|
36
|
+
|
|
37
|
+
### Props
|
|
38
|
+
|
|
39
|
+
| Prop | Type | Default | Description |
|
|
40
|
+
|------|------|---------|-------------|
|
|
41
|
+
| `value` | `number \| null` | `undefined` | The current numeric value |
|
|
42
|
+
| `disabled` | `boolean` | `false` | Disables the input |
|
|
43
|
+
| `readonly` | `boolean` | `false` | Makes the input read-only |
|
|
44
|
+
| `variant` | `'' \| 'plain' \| 'outlined' \| 'filled'` | `''` | Visual style variant |
|
|
45
|
+
| `compact` | `boolean` | `false` | Enables compact display mode |
|
|
46
|
+
| `style` | `string` | `''` | Custom CSS styles |
|
|
47
|
+
| `placeholder` | `string` | `''` | Placeholder text |
|
|
48
|
+
| `precision` | `number \| null` | `null` | Number of decimal places |
|
|
49
|
+
| `suffix` | `string` | `''` | Text to display after the value |
|
|
50
|
+
| `prefix` | `string` | `''` | Text to display before the value |
|
|
51
|
+
| `allowNegative` | `boolean` | `false` | Allow negative numbers |
|
|
52
|
+
| `displayMode` | `DisplayMode` | `DisplayMode.Edit` | Edit or view mode |
|
|
53
|
+
| `max` | `number \| null` | `null` | Maximum allowed value |
|
|
54
|
+
| `min` | `number \| null` | `null` | Minimum allowed value |
|
|
55
|
+
| `removable` | `boolean` | `true` | Show clear button when value exists |
|
|
56
|
+
| `onchange` | `OnChangeHandler<number \| null>` | `null` | Change event handler |
|
|
57
|
+
| `class` | `string` | `''` | CSS class name |
|
|
58
|
+
|
|
59
|
+
### Methods
|
|
60
|
+
|
|
61
|
+
| Method | Description |
|
|
62
|
+
|--------|-------------|
|
|
63
|
+
| `setFocus()` | Programmatically focus the input field |
|
|
64
|
+
|
|
65
|
+
### Slots
|
|
66
|
+
|
|
67
|
+
| Slot | Description |
|
|
68
|
+
|------|-------------|
|
|
69
|
+
| `leading-icon` | Icon to display before the input |
|
|
70
|
+
| `trailing-icon` | Icon to display after the input |
|
|
71
|
+
|
|
72
|
+
## Examples
|
|
73
|
+
|
|
74
|
+
### Currency Input
|
|
75
|
+
|
|
76
|
+
```svelte
|
|
77
|
+
<script>
|
|
78
|
+
import NumberEditor from '@ticatec/uniface-element/NumberEditor';
|
|
79
|
+
import FormField from '@ticatec/uniface-element/FormField';
|
|
80
|
+
|
|
81
|
+
let amount = 100.00;
|
|
82
|
+
</script>
|
|
83
|
+
|
|
84
|
+
<FormField label="Amount">
|
|
85
|
+
<NumberEditor
|
|
86
|
+
bind:value={amount}
|
|
87
|
+
variant="outlined"
|
|
88
|
+
precision={2}
|
|
89
|
+
prefix="$"
|
|
90
|
+
allowNegative={false}
|
|
91
|
+
min={0}
|
|
92
|
+
/>
|
|
93
|
+
</FormField>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Percentage Input
|
|
97
|
+
|
|
98
|
+
```svelte
|
|
99
|
+
<script>
|
|
100
|
+
import NumberEditor from '@ticatec/uniface-element/NumberEditor';
|
|
101
|
+
|
|
102
|
+
let percentage = 15.5;
|
|
103
|
+
</script>
|
|
104
|
+
|
|
105
|
+
<NumberEditor
|
|
106
|
+
bind:value={percentage}
|
|
107
|
+
variant="filled"
|
|
108
|
+
precision={1}
|
|
109
|
+
suffix="%"
|
|
110
|
+
min={0}
|
|
111
|
+
max={100}
|
|
112
|
+
/>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Weight/Measurement Input
|
|
116
|
+
|
|
117
|
+
```svelte
|
|
118
|
+
<script>
|
|
119
|
+
import NumberEditor from '@ticatec/uniface-element/NumberEditor';
|
|
120
|
+
import Icon from '@ticatec/uniface-element/Icon';
|
|
121
|
+
|
|
122
|
+
let weight = 75.2;
|
|
123
|
+
</script>
|
|
124
|
+
|
|
125
|
+
<NumberEditor
|
|
126
|
+
bind:value={weight}
|
|
127
|
+
variant="outlined"
|
|
128
|
+
precision={3}
|
|
129
|
+
suffix="KG"
|
|
130
|
+
min={1}
|
|
131
|
+
max={200}
|
|
132
|
+
>
|
|
133
|
+
<svelte:fragment slot="leading-icon">
|
|
134
|
+
<Icon name="scale" />
|
|
135
|
+
</svelte:fragment>
|
|
136
|
+
</NumberEditor>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Integer Only Input
|
|
140
|
+
|
|
141
|
+
```svelte
|
|
142
|
+
<script>
|
|
143
|
+
import NumberEditor from '@ticatec/uniface-element/NumberEditor';
|
|
144
|
+
|
|
145
|
+
let age = 25;
|
|
146
|
+
</script>
|
|
147
|
+
|
|
148
|
+
<NumberEditor
|
|
149
|
+
bind:value={age}
|
|
150
|
+
variant="outlined"
|
|
151
|
+
precision={0}
|
|
152
|
+
min={0}
|
|
153
|
+
max={120}
|
|
154
|
+
placeholder="Enter age"
|
|
155
|
+
/>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Temperature Input (with negative values)
|
|
159
|
+
|
|
160
|
+
```svelte
|
|
161
|
+
<script>
|
|
162
|
+
import NumberEditor from '@ticatec/uniface-element/NumberEditor';
|
|
163
|
+
|
|
164
|
+
let temperature = -5.5;
|
|
165
|
+
</script>
|
|
166
|
+
|
|
167
|
+
<NumberEditor
|
|
168
|
+
bind:value={temperature}
|
|
169
|
+
variant="filled"
|
|
170
|
+
precision={1}
|
|
171
|
+
suffix="�C"
|
|
172
|
+
allowNegative={true}
|
|
173
|
+
min={-50}
|
|
174
|
+
max={50}
|
|
175
|
+
/>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Financial Calculator
|
|
179
|
+
|
|
180
|
+
```svelte
|
|
181
|
+
<script>
|
|
182
|
+
import NumberEditor from '@ticatec/uniface-element/NumberEditor';
|
|
183
|
+
import FormField from '@ticatec/uniface-element/FormField';
|
|
184
|
+
|
|
185
|
+
let principal = 10000;
|
|
186
|
+
let rate = 5.5;
|
|
187
|
+
let years = 10;
|
|
188
|
+
|
|
189
|
+
$: interest = (principal * rate * years) / 100;
|
|
190
|
+
|
|
191
|
+
function handlePrincipalChange(value) {
|
|
192
|
+
console.log('Principal changed to:', value);
|
|
193
|
+
}
|
|
194
|
+
</script>
|
|
195
|
+
|
|
196
|
+
<div class="calculator">
|
|
197
|
+
<FormField label="Principal Amount">
|
|
198
|
+
<NumberEditor
|
|
199
|
+
bind:value={principal}
|
|
200
|
+
variant="outlined"
|
|
201
|
+
precision={2}
|
|
202
|
+
prefix="$"
|
|
203
|
+
min={1}
|
|
204
|
+
onchange={handlePrincipalChange}
|
|
205
|
+
/>
|
|
206
|
+
</FormField>
|
|
207
|
+
|
|
208
|
+
<FormField label="Interest Rate">
|
|
209
|
+
<NumberEditor
|
|
210
|
+
bind:value={rate}
|
|
211
|
+
variant="outlined"
|
|
212
|
+
precision={2}
|
|
213
|
+
suffix="%"
|
|
214
|
+
min={0}
|
|
215
|
+
max={100}
|
|
216
|
+
/>
|
|
217
|
+
</FormField>
|
|
218
|
+
|
|
219
|
+
<FormField label="Years">
|
|
220
|
+
<NumberEditor
|
|
221
|
+
bind:value={years}
|
|
222
|
+
variant="outlined"
|
|
223
|
+
precision={0}
|
|
224
|
+
min={1}
|
|
225
|
+
max={50}
|
|
226
|
+
/>
|
|
227
|
+
</FormField>
|
|
228
|
+
|
|
229
|
+
<FormField label="Total Interest">
|
|
230
|
+
<NumberEditor
|
|
231
|
+
value={interest}
|
|
232
|
+
readonly
|
|
233
|
+
variant="filled"
|
|
234
|
+
precision={2}
|
|
235
|
+
prefix="$"
|
|
236
|
+
/>
|
|
237
|
+
</FormField>
|
|
238
|
+
</div>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### View Mode Display
|
|
242
|
+
|
|
243
|
+
```svelte
|
|
244
|
+
<script>
|
|
245
|
+
import NumberEditor from '@ticatec/uniface-element/NumberEditor';
|
|
246
|
+
import { DisplayMode } from '@ticatec/uniface-element';
|
|
247
|
+
|
|
248
|
+
let value = 1234.56;
|
|
249
|
+
let isEditing = false;
|
|
250
|
+
</script>
|
|
251
|
+
|
|
252
|
+
<NumberEditor
|
|
253
|
+
bind:value
|
|
254
|
+
displayMode={isEditing ? DisplayMode.Edit : DisplayMode.View}
|
|
255
|
+
precision={2}
|
|
256
|
+
prefix="$"
|
|
257
|
+
variant="outlined"
|
|
258
|
+
/>
|
|
259
|
+
|
|
260
|
+
<button on:click={() => isEditing = !isEditing}>
|
|
261
|
+
{isEditing ? 'View' : 'Edit'}
|
|
262
|
+
</button>
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Compact Form Layout
|
|
266
|
+
|
|
267
|
+
```svelte
|
|
268
|
+
<script>
|
|
269
|
+
import NumberEditor from '@ticatec/uniface-element/NumberEditor';
|
|
270
|
+
|
|
271
|
+
let dimensions = { width: 100, height: 50, depth: 25 };
|
|
272
|
+
</script>
|
|
273
|
+
|
|
274
|
+
<div class="dimensions-form">
|
|
275
|
+
<NumberEditor
|
|
276
|
+
bind:value={dimensions.width}
|
|
277
|
+
compact
|
|
278
|
+
variant="outlined"
|
|
279
|
+
precision={2}
|
|
280
|
+
suffix="cm"
|
|
281
|
+
placeholder="W"
|
|
282
|
+
/>
|
|
283
|
+
<span>�</span>
|
|
284
|
+
<NumberEditor
|
|
285
|
+
bind:value={dimensions.height}
|
|
286
|
+
compact
|
|
287
|
+
variant="outlined"
|
|
288
|
+
precision={2}
|
|
289
|
+
suffix="cm"
|
|
290
|
+
placeholder="H"
|
|
291
|
+
/>
|
|
292
|
+
<span>�</span>
|
|
293
|
+
<NumberEditor
|
|
294
|
+
bind:value={dimensions.depth}
|
|
295
|
+
compact
|
|
296
|
+
variant="outlined"
|
|
297
|
+
precision={2}
|
|
298
|
+
suffix="cm"
|
|
299
|
+
placeholder="D"
|
|
300
|
+
/>
|
|
301
|
+
</div>
|
|
302
|
+
|
|
303
|
+
<style>
|
|
304
|
+
.dimensions-form {
|
|
305
|
+
display: flex;
|
|
306
|
+
align-items: center;
|
|
307
|
+
gap: 8px;
|
|
308
|
+
}
|
|
309
|
+
</style>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Validation
|
|
313
|
+
|
|
314
|
+
The NumberEditor automatically validates input based on the configured constraints:
|
|
315
|
+
|
|
316
|
+
- **Precision**: Limits decimal places to the specified precision
|
|
317
|
+
- **Range**: Enforces min/max boundaries on blur
|
|
318
|
+
- **Negative**: Prevents negative input when `allowNegative` is false
|
|
319
|
+
- **Non-numeric**: Blocks non-numeric characters and full-width characters
|
|
320
|
+
- **Real-time**: Validates during typing and provides immediate feedback
|
|
321
|
+
|
|
322
|
+
## Best Practices
|
|
323
|
+
|
|
324
|
+
1. **Use appropriate precision**: Set precision based on your data requirements
|
|
325
|
+
2. **Set meaningful ranges**: Use min/max to prevent invalid values
|
|
326
|
+
3. **Provide clear labels**: Use FormField to wrap NumberEditor with descriptive labels
|
|
327
|
+
4. **Handle change events**: Implement onchange for validation or calculations
|
|
328
|
+
5. **Consider user experience**: Use placeholder text and proper variant styling
|
|
329
|
+
6. **Use prefix/suffix wisely**: Add units or currency symbols for clarity
|
|
330
|
+
7. **Disable when needed**: Use readonly for calculated fields or disabled for unavailable inputs
|
|
331
|
+
|
|
332
|
+
## Styling
|
|
333
|
+
|
|
334
|
+
The NumberEditor supports CSS custom properties for styling:
|
|
335
|
+
|
|
336
|
+
```css
|
|
337
|
+
.number-editor {
|
|
338
|
+
--number-editor-font-size: 14px;
|
|
339
|
+
--number-editor-padding: 8px 12px;
|
|
340
|
+
--number-editor-border-color: #e0e0e0;
|
|
341
|
+
--number-editor-focus-color: #1976d2;
|
|
342
|
+
}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
## Accessibility
|
|
346
|
+
|
|
347
|
+
- Proper ARIA labels and roles
|
|
348
|
+
- Keyboard navigation support
|
|
349
|
+
- Screen reader compatibility
|
|
350
|
+
- Focus management
|
|
351
|
+
- High contrast mode support
|
|
352
|
+
|
|
353
|
+
## Related Components
|
|
354
|
+
|
|
355
|
+
- [TextEditor](../text-editor/README.md) - For text input
|
|
356
|
+
- [FormField](../form-field/README.md) - For form layout and labels
|
|
357
|
+
- [UnitNumberEditor](../unit-number-editor/README.md) - For numbers with unit selection
|