@ticatec/uniface-element 0.2.3 → 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/DialogBoard.svelte +1 -1
- 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/ticatec-uniface-web.css +1 -0
- 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
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
# RadioButton
|
|
2
|
+
|
|
3
|
+
A radio button component for single selection from a group of options. Radio buttons allow users to select exactly one option from a predefined set of mutually exclusive choices.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @ticatec/uniface-element
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Import
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Basic Usage
|
|
18
|
+
|
|
19
|
+
```svelte
|
|
20
|
+
<script>
|
|
21
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
22
|
+
|
|
23
|
+
let selectedSize = '';
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<RadioButton bind:group={selectedSize} value="small" label="Small" />
|
|
27
|
+
<RadioButton bind:group={selectedSize} value="medium" label="Medium" />
|
|
28
|
+
<RadioButton bind:group={selectedSize} value="large" label="Large" />
|
|
29
|
+
|
|
30
|
+
<p>Selected: {selectedSize}</p>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Props
|
|
34
|
+
|
|
35
|
+
| Prop | Type | Default | Description |
|
|
36
|
+
|------|------|---------|-------------|
|
|
37
|
+
| `value` | `any` | Required | Value of this radio button option |
|
|
38
|
+
| `label` | `string` | Required | Display label for the radio button |
|
|
39
|
+
| `group` | `any` | Required | Bind to a variable that holds the selected value |
|
|
40
|
+
| `disabled` | `boolean` | `false` | Whether the radio button is disabled |
|
|
41
|
+
| `readonly` | `boolean` | `false` | Whether the radio button is read-only |
|
|
42
|
+
| `compact` | `boolean` | `false` | Whether to use compact spacing |
|
|
43
|
+
| `style` | `string` | `""` | Additional CSS styles |
|
|
44
|
+
| `onfocus` | `((event: FocusEvent) => void) \| null` | `null` | Callback when radio button gains focus |
|
|
45
|
+
| `onblur` | `((event: FocusEvent) => void) \| null` | `null` | Callback when radio button loses focus |
|
|
46
|
+
| `onchange` | `((event: Event) => void) \| null` | `null` | Callback when selection changes |
|
|
47
|
+
|
|
48
|
+
## Events
|
|
49
|
+
|
|
50
|
+
| Event | Description |
|
|
51
|
+
|-------|-------------|
|
|
52
|
+
| `focus` | Fired when the radio button gains focus |
|
|
53
|
+
| `blur` | Fired when the radio button loses focus |
|
|
54
|
+
| `change` | Fired when the selection changes |
|
|
55
|
+
| `click` | Fired when the radio button is clicked |
|
|
56
|
+
|
|
57
|
+
## Methods
|
|
58
|
+
|
|
59
|
+
| Method | Description |
|
|
60
|
+
|--------|-------------|
|
|
61
|
+
| `setFocus()` | Programmatically focus the radio button |
|
|
62
|
+
|
|
63
|
+
## Examples
|
|
64
|
+
|
|
65
|
+
### Basic Radio Group
|
|
66
|
+
|
|
67
|
+
```svelte
|
|
68
|
+
<script>
|
|
69
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
70
|
+
|
|
71
|
+
let selectedOption = 'option1';
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<h3>Choose an option:</h3>
|
|
75
|
+
<RadioButton bind:group={selectedOption} value="option1" label="Option 1" />
|
|
76
|
+
<RadioButton bind:group={selectedOption} value="option2" label="Option 2" />
|
|
77
|
+
<RadioButton bind:group={selectedOption} value="option3" label="Option 3" />
|
|
78
|
+
|
|
79
|
+
<p>You selected: {selectedOption}</p>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### With Event Handlers
|
|
83
|
+
|
|
84
|
+
```svelte
|
|
85
|
+
<script>
|
|
86
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
87
|
+
|
|
88
|
+
let selectedColor = '';
|
|
89
|
+
|
|
90
|
+
function handleChange(event) {
|
|
91
|
+
console.log('Color changed:', event.target.value);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function handleFocus(event) {
|
|
95
|
+
console.log('Radio button focused');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function handleBlur(event) {
|
|
99
|
+
console.log('Radio button blurred');
|
|
100
|
+
}
|
|
101
|
+
</script>
|
|
102
|
+
|
|
103
|
+
<h3>Select a color:</h3>
|
|
104
|
+
<RadioButton
|
|
105
|
+
bind:group={selectedColor}
|
|
106
|
+
value="red"
|
|
107
|
+
label="Red"
|
|
108
|
+
onchange={handleChange}
|
|
109
|
+
onfocus={handleFocus}
|
|
110
|
+
onblur={handleBlur}
|
|
111
|
+
/>
|
|
112
|
+
<RadioButton
|
|
113
|
+
bind:group={selectedColor}
|
|
114
|
+
value="green"
|
|
115
|
+
label="Green"
|
|
116
|
+
onchange={handleChange}
|
|
117
|
+
onfocus={handleFocus}
|
|
118
|
+
onblur={handleBlur}
|
|
119
|
+
/>
|
|
120
|
+
<RadioButton
|
|
121
|
+
bind:group={selectedColor}
|
|
122
|
+
value="blue"
|
|
123
|
+
label="Blue"
|
|
124
|
+
onchange={handleChange}
|
|
125
|
+
onfocus={handleFocus}
|
|
126
|
+
onblur={handleBlur}
|
|
127
|
+
/>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Disabled and Readonly States
|
|
131
|
+
|
|
132
|
+
```svelte
|
|
133
|
+
<script>
|
|
134
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
135
|
+
|
|
136
|
+
let selectedPlan = 'basic';
|
|
137
|
+
</script>
|
|
138
|
+
|
|
139
|
+
<h3>Subscription Plan:</h3>
|
|
140
|
+
<RadioButton bind:group={selectedPlan} value="free" label="Free (Limited)" disabled />
|
|
141
|
+
<RadioButton bind:group={selectedPlan} value="basic" label="Basic" />
|
|
142
|
+
<RadioButton bind:group={selectedPlan} value="premium" label="Premium" />
|
|
143
|
+
<RadioButton bind:group={selectedPlan} value="enterprise" label="Enterprise" readonly />
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Compact Style
|
|
147
|
+
|
|
148
|
+
```svelte
|
|
149
|
+
<script>
|
|
150
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
151
|
+
|
|
152
|
+
let selectedTheme = 'light';
|
|
153
|
+
</script>
|
|
154
|
+
|
|
155
|
+
<div style="display: flex; gap: 16px;">
|
|
156
|
+
<RadioButton bind:group={selectedTheme} value="light" label="Light" compact />
|
|
157
|
+
<RadioButton bind:group={selectedTheme} value="dark" label="Dark" compact />
|
|
158
|
+
<RadioButton bind:group={selectedTheme} value="auto" label="Auto" compact />
|
|
159
|
+
</div>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Form Integration
|
|
163
|
+
|
|
164
|
+
```svelte
|
|
165
|
+
<script>
|
|
166
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
167
|
+
import Button from "@ticatec/uniface-element/Button";
|
|
168
|
+
|
|
169
|
+
let formData = {
|
|
170
|
+
priority: '',
|
|
171
|
+
category: '',
|
|
172
|
+
urgency: ''
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
function handleSubmit() {
|
|
176
|
+
console.log('Form submitted:', formData);
|
|
177
|
+
}
|
|
178
|
+
</script>
|
|
179
|
+
|
|
180
|
+
<form on:submit|preventDefault={handleSubmit}>
|
|
181
|
+
<fieldset>
|
|
182
|
+
<legend>Priority Level</legend>
|
|
183
|
+
<RadioButton bind:group={formData.priority} value="low" label="Low Priority" />
|
|
184
|
+
<RadioButton bind:group={formData.priority} value="medium" label="Medium Priority" />
|
|
185
|
+
<RadioButton bind:group={formData.priority} value="high" label="High Priority" />
|
|
186
|
+
</fieldset>
|
|
187
|
+
|
|
188
|
+
<fieldset>
|
|
189
|
+
<legend>Category</legend>
|
|
190
|
+
<RadioButton bind:group={formData.category} value="bug" label="Bug Report" />
|
|
191
|
+
<RadioButton bind:group={formData.category} value="feature" label="Feature Request" />
|
|
192
|
+
<RadioButton bind:group={formData.category} value="support" label="Support Question" />
|
|
193
|
+
</fieldset>
|
|
194
|
+
|
|
195
|
+
<fieldset>
|
|
196
|
+
<legend>Urgency</legend>
|
|
197
|
+
<RadioButton bind:group={formData.urgency} value="immediate" label="Immediate" />
|
|
198
|
+
<RadioButton bind:group={formData.urgency} value="soon" label="This Week" />
|
|
199
|
+
<RadioButton bind:group={formData.urgency} value="later" label="Whenever" />
|
|
200
|
+
</fieldset>
|
|
201
|
+
|
|
202
|
+
<Button type="primary" label="Submit" onClick={handleSubmit} />
|
|
203
|
+
</form>
|
|
204
|
+
|
|
205
|
+
<style>
|
|
206
|
+
fieldset {
|
|
207
|
+
border: 1px solid #ddd;
|
|
208
|
+
border-radius: 4px;
|
|
209
|
+
padding: 16px;
|
|
210
|
+
margin-bottom: 16px;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
legend {
|
|
214
|
+
font-weight: bold;
|
|
215
|
+
padding: 0 8px;
|
|
216
|
+
}
|
|
217
|
+
</style>
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Dynamic Options
|
|
221
|
+
|
|
222
|
+
```svelte
|
|
223
|
+
<script>
|
|
224
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
225
|
+
|
|
226
|
+
let selectedLanguage = '';
|
|
227
|
+
let languages = [
|
|
228
|
+
{ value: 'js', label: 'JavaScript' },
|
|
229
|
+
{ value: 'ts', label: 'TypeScript' },
|
|
230
|
+
{ value: 'py', label: 'Python' },
|
|
231
|
+
{ value: 'java', label: 'Java' },
|
|
232
|
+
{ value: 'go', label: 'Go' }
|
|
233
|
+
];
|
|
234
|
+
</script>
|
|
235
|
+
|
|
236
|
+
<h3>Preferred Programming Language:</h3>
|
|
237
|
+
{#each languages as lang}
|
|
238
|
+
<RadioButton
|
|
239
|
+
bind:group={selectedLanguage}
|
|
240
|
+
value={lang.value}
|
|
241
|
+
label={lang.label}
|
|
242
|
+
/>
|
|
243
|
+
{/each}
|
|
244
|
+
|
|
245
|
+
{#if selectedLanguage}
|
|
246
|
+
<p>You chose: {languages.find(l => l.value === selectedLanguage)?.label}</p>
|
|
247
|
+
{/if}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### With Custom Styling
|
|
251
|
+
|
|
252
|
+
```svelte
|
|
253
|
+
<script>
|
|
254
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
255
|
+
|
|
256
|
+
let selectedSize = 'medium';
|
|
257
|
+
</script>
|
|
258
|
+
|
|
259
|
+
<div class="size-selector">
|
|
260
|
+
<RadioButton
|
|
261
|
+
bind:group={selectedSize}
|
|
262
|
+
value="small"
|
|
263
|
+
label="Small (S)"
|
|
264
|
+
style="margin-right: 24px;"
|
|
265
|
+
/>
|
|
266
|
+
<RadioButton
|
|
267
|
+
bind:group={selectedSize}
|
|
268
|
+
value="medium"
|
|
269
|
+
label="Medium (M)"
|
|
270
|
+
style="margin-right: 24px;"
|
|
271
|
+
/>
|
|
272
|
+
<RadioButton
|
|
273
|
+
bind:group={selectedSize}
|
|
274
|
+
value="large"
|
|
275
|
+
label="Large (L)"
|
|
276
|
+
/>
|
|
277
|
+
</div>
|
|
278
|
+
|
|
279
|
+
<style>
|
|
280
|
+
.size-selector {
|
|
281
|
+
padding: 16px;
|
|
282
|
+
background: #f8f9fa;
|
|
283
|
+
border-radius: 8px;
|
|
284
|
+
display: flex;
|
|
285
|
+
align-items: center;
|
|
286
|
+
}
|
|
287
|
+
</style>
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Programmatic Focus
|
|
291
|
+
|
|
292
|
+
```svelte
|
|
293
|
+
<script>
|
|
294
|
+
import RadioButton from "@ticatec/uniface-element/RadioButton";
|
|
295
|
+
import Button from "@ticatec/uniface-element/Button";
|
|
296
|
+
|
|
297
|
+
let selectedAnswer = '';
|
|
298
|
+
let firstRadio, secondRadio, thirdRadio;
|
|
299
|
+
|
|
300
|
+
function focusFirst() {
|
|
301
|
+
firstRadio.setFocus();
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
function focusSecond() {
|
|
305
|
+
secondRadio.setFocus();
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
function focusThird() {
|
|
309
|
+
thirdRadio.setFocus();
|
|
310
|
+
}
|
|
311
|
+
</script>
|
|
312
|
+
|
|
313
|
+
<h3>Survey Question:</h3>
|
|
314
|
+
<RadioButton bind:this={firstRadio} bind:group={selectedAnswer} value="yes" label="Yes" />
|
|
315
|
+
<RadioButton bind:this={secondRadio} bind:group={selectedAnswer} value="no" label="No" />
|
|
316
|
+
<RadioButton bind:this={thirdRadio} bind:group={selectedAnswer} value="maybe" label="Maybe" />
|
|
317
|
+
|
|
318
|
+
<div style="margin-top: 16px;">
|
|
319
|
+
<Button label="Focus Yes" onClick={focusFirst} />
|
|
320
|
+
<Button label="Focus No" onClick={focusSecond} />
|
|
321
|
+
<Button label="Focus Maybe" onClick={focusThird} />
|
|
322
|
+
</div>
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Features
|
|
326
|
+
|
|
327
|
+
- **Single Selection**: Ensures only one option can be selected in a group
|
|
328
|
+
- **Keyboard Navigation**: Full keyboard accessibility with tab and arrow key support
|
|
329
|
+
- **Focus Management**: Programmatic focus control and event handling
|
|
330
|
+
- **State Management**: Disabled and readonly states
|
|
331
|
+
- **Custom Styling**: Flexible styling options and compact mode
|
|
332
|
+
- **Event Handling**: Comprehensive event support for user interactions
|
|
333
|
+
|
|
334
|
+
## Behavior
|
|
335
|
+
|
|
336
|
+
1. **Selection**: Clicking a radio button selects it and deselects all others in the group
|
|
337
|
+
2. **Keyboard**: Arrow keys navigate between options, Space selects the focused option
|
|
338
|
+
3. **Focus**: Tab key moves focus between radio button groups
|
|
339
|
+
4. **Label**: Clicking the label selects the associated radio button
|
|
340
|
+
5. **Disabled**: Disabled radio buttons cannot be selected or focused
|
|
341
|
+
6. **Readonly**: Readonly radio buttons cannot be changed but can be focused
|
|
342
|
+
|
|
343
|
+
## Accessibility
|
|
344
|
+
|
|
345
|
+
- Proper ARIA attributes and roles
|
|
346
|
+
- Keyboard navigation support
|
|
347
|
+
- Screen reader compatible labels
|
|
348
|
+
- Focus indicators and management
|
|
349
|
+
- Semantic HTML structure with proper labeling
|
|
350
|
+
|
|
351
|
+
## Best Practices
|
|
352
|
+
|
|
353
|
+
1. **Group Related Options**: Use radio buttons for mutually exclusive choices
|
|
354
|
+
2. **Clear Labels**: Provide descriptive, concise labels for each option
|
|
355
|
+
3. **Default Selection**: Consider providing a sensible default selection
|
|
356
|
+
4. **Option Count**: Limit to 2-7 options for optimal usability
|
|
357
|
+
5. **Logical Order**: Arrange options in a logical sequence
|
|
358
|
+
6. **Visual Grouping**: Use fieldsets and legends to group related radio buttons
|
|
359
|
+
|
|
360
|
+
## Browser Support
|
|
361
|
+
|
|
362
|
+
- Modern browsers with full form control support
|
|
363
|
+
- Compatible with Svelte 5+
|
|
364
|
+
- Responsive design principles
|
|
365
|
+
- Touch-friendly interface
|
|
366
|
+
|
|
367
|
+
## Related Components
|
|
368
|
+
|
|
369
|
+
- `CheckBox` - For multiple selections
|
|
370
|
+
- `Switch` - For binary on/off states
|
|
371
|
+
- `OptionsSelect` - For dropdown single selection
|
|
372
|
+
- `Button` - For action-based selections
|