@cocoar/vue-ui 3.1.0 → 3.2.0-beta.6
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/components/checkbox/CoarCheckbox.vue.d.ts +1 -1
- package/dist/components/checkbox/CoarCheckbox.vue.d.ts.map +1 -1
- package/dist/components/code-block/CoarCodeBlock.vue.d.ts +1 -1
- package/dist/components/code-block/CoarCodeBlock.vue.d.ts.map +1 -1
- package/dist/components/data-list/CoarDataList.vue.d.ts +158 -0
- package/dist/components/data-list/CoarDataList.vue.d.ts.map +1 -0
- package/dist/components/data-list/CoarDataListToolbar.vue.d.ts +30 -0
- package/dist/components/data-list/CoarDataListToolbar.vue.d.ts.map +1 -0
- package/dist/components/data-list/data-list-builder.d.ts +288 -0
- package/dist/components/data-list/data-list-builder.d.ts.map +1 -0
- package/dist/components/data-list/index.d.ts +12 -0
- package/dist/components/data-list/index.d.ts.map +1 -0
- package/dist/components/data-list/internal/compare.d.ts +14 -0
- package/dist/components/data-list/internal/compare.d.ts.map +1 -0
- package/dist/components/data-list/internal/reorder-core.d.ts +46 -0
- package/dist/components/data-list/internal/reorder-core.d.ts.map +1 -0
- package/dist/components/data-list/internal/search.d.ts +16 -0
- package/dist/components/data-list/internal/search.d.ts.map +1 -0
- package/dist/components/data-list/internal/useDataListLines.d.ts +92 -0
- package/dist/components/data-list/internal/useDataListLines.d.ts.map +1 -0
- package/dist/components/data-list/internal/useDataListReorder.d.ts +68 -0
- package/dist/components/data-list/internal/useDataListReorder.d.ts.map +1 -0
- package/dist/components/data-list/internal/useSearchHighlight.d.ts +19 -0
- package/dist/components/data-list/internal/useSearchHighlight.d.ts.map +1 -0
- package/dist/components/data-list/types.d.ts +185 -0
- package/dist/components/data-list/types.d.ts.map +1 -0
- package/dist/components/data-list/useDataListModel.d.ts +79 -0
- package/dist/components/data-list/useDataListModel.d.ts.map +1 -0
- package/dist/components/date-time/_shared/maskito-config.d.ts +7 -2
- package/dist/components/date-time/_shared/maskito-config.d.ts.map +1 -1
- package/dist/components/date-time/_shared/time-helpers.d.ts +11 -4
- package/dist/components/date-time/_shared/time-helpers.d.ts.map +1 -1
- package/dist/components/date-time/_shared/use-date-picker-base.d.ts +1 -1
- package/dist/components/date-time/plain-date-picker/CoarPlainDatePicker.vue.d.ts +1 -1
- package/dist/components/date-time/plain-date-picker/CoarPlainDatePicker.vue.d.ts.map +1 -1
- package/dist/components/date-time/plain-date-time-picker/CoarPlainDateTimePicker.vue.d.ts +1 -1
- package/dist/components/date-time/plain-date-time-picker/CoarPlainDateTimePicker.vue.d.ts.map +1 -1
- package/dist/components/date-time/zoned-date-time-picker/CoarZonedDateTimePicker.vue.d.ts +1 -1
- package/dist/components/date-time/zoned-date-time-picker/CoarZonedDateTimePicker.vue.d.ts.map +1 -1
- package/dist/components/dual-listbox/CoarDualListbox.vue.d.ts +3 -0
- package/dist/components/dual-listbox/CoarDualListbox.vue.d.ts.map +1 -1
- package/dist/components/form-field/CoarFormField.vue.d.ts +1 -1
- package/dist/components/form-field/CoarFormField.vue.d.ts.map +1 -1
- package/dist/components/icon/CoarIcon.vue.d.ts +2 -2
- package/dist/components/icon/CoarIcon.vue.d.ts.map +1 -1
- package/dist/components/listbox/CoarListbox.vue.d.ts +7 -0
- package/dist/components/listbox/CoarListbox.vue.d.ts.map +1 -1
- package/dist/components/number-input/CoarNumberInput.vue.d.ts +1 -1
- package/dist/components/number-input/CoarNumberInput.vue.d.ts.map +1 -1
- package/dist/components/otp-input/CoarOtpInput.vue.d.ts +1 -1
- package/dist/components/otp-input/CoarOtpInput.vue.d.ts.map +1 -1
- package/dist/components/password-input/CoarPasswordInput.vue.d.ts +1 -1
- package/dist/components/password-input/CoarPasswordInput.vue.d.ts.map +1 -1
- package/dist/components/switch/CoarSwitch.vue.d.ts +1 -1
- package/dist/components/switch/CoarSwitch.vue.d.ts.map +1 -1
- package/dist/components/text-input/CoarTextInput.vue.d.ts +1 -1
- package/dist/components/text-input/CoarTextInput.vue.d.ts.map +1 -1
- package/dist/composables/dragRegistry.d.ts +12 -0
- package/dist/composables/dragRegistry.d.ts.map +1 -1
- package/dist/composables/index.d.ts +2 -2
- package/dist/composables/index.d.ts.map +1 -1
- package/dist/composables/useDragDrop.d.ts +62 -6
- package/dist/composables/useDragDrop.d.ts.map +1 -1
- package/dist/composables/useVirtualList.d.ts +21 -1
- package/dist/composables/useVirtualList.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4508 -2039
- package/package.json +5 -3
- package/skills/cocoar-vue-ui/SKILL.md +244 -0
- package/skills/cocoar-vue-ui/references/components/avatar.md +178 -0
- package/skills/cocoar-vue-ui/references/components/badge.md +290 -0
- package/skills/cocoar-vue-ui/references/components/breadcrumb.md +238 -0
- package/skills/cocoar-vue-ui/references/components/button.md +252 -0
- package/skills/cocoar-vue-ui/references/components/calendar/agenda-view.md +353 -0
- package/skills/cocoar-vue-ui/references/components/calendar/coar-calendar.md +1645 -0
- package/skills/cocoar-vue-ui/references/components/calendar/day-view.md +361 -0
- package/skills/cocoar-vue-ui/references/components/calendar/index.md +312 -0
- package/skills/cocoar-vue-ui/references/components/calendar/month-view.md +475 -0
- package/skills/cocoar-vue-ui/references/components/calendar/performance.md +186 -0
- package/skills/cocoar-vue-ui/references/components/calendar/timeline-view.md +301 -0
- package/skills/cocoar-vue-ui/references/components/calendar/week-view.md +382 -0
- package/skills/cocoar-vue-ui/references/components/calendar/work-week-view.md +145 -0
- package/skills/cocoar-vue-ui/references/components/calendar/year-view.md +63 -0
- package/skills/cocoar-vue-ui/references/components/card.md +151 -0
- package/skills/cocoar-vue-ui/references/components/checkbox-group.md +103 -0
- package/skills/cocoar-vue-ui/references/components/checkbox.md +279 -0
- package/skills/cocoar-vue-ui/references/components/code-block.md +241 -0
- package/skills/cocoar-vue-ui/references/components/context-menu.md +355 -0
- package/skills/cocoar-vue-ui/references/components/data-grid/checkbox.md +213 -0
- package/skills/cocoar-vue-ui/references/components/data-grid/date-columns.md +272 -0
- package/skills/cocoar-vue-ui/references/components/data-grid/editing.md +236 -0
- package/skills/cocoar-vue-ui/references/components/data-grid/multi-select.md +193 -0
- package/skills/cocoar-vue-ui/references/components/data-grid/number.md +147 -0
- package/skills/cocoar-vue-ui/references/components/data-grid/select.md +202 -0
- package/skills/cocoar-vue-ui/references/components/data-grid/text.md +127 -0
- package/skills/cocoar-vue-ui/references/components/data-grid.md +1225 -0
- package/skills/cocoar-vue-ui/references/components/data-list.md +2121 -0
- package/skills/cocoar-vue-ui/references/components/date-or-time-picker.md +200 -0
- package/skills/cocoar-vue-ui/references/components/date-picker.md +203 -0
- package/skills/cocoar-vue-ui/references/components/date-time-picker.md +154 -0
- package/skills/cocoar-vue-ui/references/components/date-views.md +212 -0
- package/skills/cocoar-vue-ui/references/components/dialog.md +148 -0
- package/skills/cocoar-vue-ui/references/components/divider.md +157 -0
- package/skills/cocoar-vue-ui/references/components/document-viewer/annotations.md +400 -0
- package/skills/cocoar-vue-ui/references/components/document-viewer/coar-document-viewer.md +327 -0
- package/skills/cocoar-vue-ui/references/components/document-viewer/index.md +234 -0
- package/skills/cocoar-vue-ui/references/components/document-viewer/toolbar.md +221 -0
- package/skills/cocoar-vue-ui/references/components/drag-drop.md +267 -0
- package/skills/cocoar-vue-ui/references/components/dual-listbox.md +449 -0
- package/skills/cocoar-vue-ui/references/components/file-explorer/asset-store.md +327 -0
- package/skills/cocoar-vue-ui/references/components/file-explorer/in-memory-store.md +176 -0
- package/skills/cocoar-vue-ui/references/components/file-explorer/index.md +311 -0
- package/skills/cocoar-vue-ui/references/components/file-explorer/use-file-explorer.md +300 -0
- package/skills/cocoar-vue-ui/references/components/form-field.md +1025 -0
- package/skills/cocoar-vue-ui/references/components/fragment-parser.md +298 -0
- package/skills/cocoar-vue-ui/references/components/link.md +235 -0
- package/skills/cocoar-vue-ui/references/components/listbox.md +575 -0
- package/skills/cocoar-vue-ui/references/components/map/editor.md +448 -0
- package/skills/cocoar-vue-ui/references/components/map/index.md +351 -0
- package/skills/cocoar-vue-ui/references/components/markdown-diagrams.md +210 -0
- package/skills/cocoar-vue-ui/references/components/markdown-editor.md +1478 -0
- package/skills/cocoar-vue-ui/references/components/markdown-embeds.md +387 -0
- package/skills/cocoar-vue-ui/references/components/markdown-form.md +447 -0
- package/skills/cocoar-vue-ui/references/components/markdown.md +276 -0
- package/skills/cocoar-vue-ui/references/components/menu.md +380 -0
- package/skills/cocoar-vue-ui/references/components/mermaid.md +172 -0
- package/skills/cocoar-vue-ui/references/components/navbar.md +147 -0
- package/skills/cocoar-vue-ui/references/components/note.md +96 -0
- package/skills/cocoar-vue-ui/references/components/notice.md +131 -0
- package/skills/cocoar-vue-ui/references/components/number-input.md +215 -0
- package/skills/cocoar-vue-ui/references/components/otp-input.md +324 -0
- package/skills/cocoar-vue-ui/references/components/page-builder/authoring-contract.md +271 -0
- package/skills/cocoar-vue-ui/references/components/page-builder/coar-page-builder.md +476 -0
- package/skills/cocoar-vue-ui/references/components/page-builder/coar-page-renderer.md +677 -0
- package/skills/cocoar-vue-ui/references/components/page-builder/custom-elements.md +441 -0
- package/skills/cocoar-vue-ui/references/components/page-builder/idp-integration.md +122 -0
- package/skills/cocoar-vue-ui/references/components/page-builder/index.md +573 -0
- package/skills/cocoar-vue-ui/references/components/pagination.md +150 -0
- package/skills/cocoar-vue-ui/references/components/panel-layout.md +372 -0
- package/skills/cocoar-vue-ui/references/components/password-input.md +175 -0
- package/skills/cocoar-vue-ui/references/components/popconfirm.md +186 -0
- package/skills/cocoar-vue-ui/references/components/popover.md +173 -0
- package/skills/cocoar-vue-ui/references/components/progress-bar.md +178 -0
- package/skills/cocoar-vue-ui/references/components/radio-group.md +225 -0
- package/skills/cocoar-vue-ui/references/components/script-editor.md +1271 -0
- package/skills/cocoar-vue-ui/references/components/segmented-control.md +238 -0
- package/skills/cocoar-vue-ui/references/components/select.md +463 -0
- package/skills/cocoar-vue-ui/references/components/sidebar.md +421 -0
- package/skills/cocoar-vue-ui/references/components/spinner.md +132 -0
- package/skills/cocoar-vue-ui/references/components/switch.md +195 -0
- package/skills/cocoar-vue-ui/references/components/table.md +170 -0
- package/skills/cocoar-vue-ui/references/components/tabs.md +382 -0
- package/skills/cocoar-vue-ui/references/components/tag.md +178 -0
- package/skills/cocoar-vue-ui/references/components/text-input.md +256 -0
- package/skills/cocoar-vue-ui/references/components/toast.md +160 -0
- package/skills/cocoar-vue-ui/references/components/tooltip.md +121 -0
- package/skills/cocoar-vue-ui/references/components/transitions.md +193 -0
- package/skills/cocoar-vue-ui/references/components/tree.md +2388 -0
- package/skills/cocoar-vue-ui/references/components/virtual-list.md +212 -0
- package/skills/cocoar-vue-ui/references/components/wizard.md +251 -0
- package/skills/cocoar-vue-ui/references/components/zoned-date-time-picker.md +177 -0
- package/skills/cocoar-vue-ui/references/foundations/colors.md +708 -0
- package/skills/cocoar-vue-ui/references/foundations/design-principles.md +115 -0
- package/skills/cocoar-vue-ui/references/foundations/icons.md +381 -0
- package/skills/cocoar-vue-ui/references/foundations/localization/formatting.md +530 -0
- package/skills/cocoar-vue-ui/references/foundations/localization/setup.md +86 -0
- package/skills/cocoar-vue-ui/references/foundations/localization/timezones.md +182 -0
- package/skills/cocoar-vue-ui/references/foundations/localization/translations.md +305 -0
- package/skills/cocoar-vue-ui/references/foundations/motion.md +549 -0
- package/skills/cocoar-vue-ui/references/foundations/spacing.md +330 -0
- package/skills/cocoar-vue-ui/references/foundations/theming.md +140 -0
- package/skills/cocoar-vue-ui/references/foundations/typography.md +206 -0
- package/skills/cocoar-vue-ui/references/guide/error-handling.md +162 -0
- package/skills/cocoar-vue-ui/references/guide/getting-started.md +119 -0
- package/skills/cocoar-vue-ui/references/guide/migration-page-builder-3.md +207 -0
- package/skills/cocoar-vue-ui/references/guide/migration.md +140 -0
- package/skills/cocoar-vue-ui/references/guide/theming.md +98 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
<!-- Generated from apps/docs/components/radio-group.md by apps/docs/scripts/sync-skill.mjs. Do not edit; edit the docs page. -->
|
|
2
|
+
|
|
3
|
+
# Radio Group
|
|
4
|
+
|
|
5
|
+
When users must pick exactly one option from a small set of mutually exclusive choices, a radio group is the right tool. Each option is visible at a glance, unlike a select dropdown, which makes radios ideal when the list is short (roughly 2--5 items).
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { CoarRadioGroup, CoarRadioButton } from '@cocoar/vue-ui';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Horizontal
|
|
12
|
+
|
|
13
|
+
Switch to `orientation="horizontal"` when labels are short and there are only a few choices.
|
|
14
|
+
|
|
15
|
+
**Demo — `radio-group/demos/RadioGroupHorizontal.vue`**
|
|
16
|
+
|
|
17
|
+
```vue
|
|
18
|
+
<template>
|
|
19
|
+
<div style="display: flex; flex-direction: column; gap: 12px;">
|
|
20
|
+
<CoarRadioGroup v-model="size" name="button-size" label="Button Size" orientation="horizontal">
|
|
21
|
+
<CoarRadioButton value="xs">XS</CoarRadioButton>
|
|
22
|
+
<CoarRadioButton value="s">S</CoarRadioButton>
|
|
23
|
+
<CoarRadioButton value="m">M</CoarRadioButton>
|
|
24
|
+
<CoarRadioButton value="l">L</CoarRadioButton>
|
|
25
|
+
</CoarRadioGroup>
|
|
26
|
+
<span style="font-size: 13px; color: #64748b;">Selected: {{ size }}</span>
|
|
27
|
+
</div>
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<script setup lang="ts">
|
|
31
|
+
import { ref } from 'vue';
|
|
32
|
+
import { CoarRadioGroup, CoarRadioButton } from '@cocoar/vue-ui';
|
|
33
|
+
|
|
34
|
+
const size = ref('m');
|
|
35
|
+
</script>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Vertical (Default)
|
|
39
|
+
|
|
40
|
+
The default vertical layout stacks options for easy scanning -- works well with longer labels or more than 4 choices.
|
|
41
|
+
|
|
42
|
+
**Demo — `radio-group/demos/RadioGroupVertical.vue`**
|
|
43
|
+
|
|
44
|
+
```vue
|
|
45
|
+
<template>
|
|
46
|
+
<div style="display: flex; flex-direction: column; gap: 12px;">
|
|
47
|
+
<CoarRadioGroup v-model="color" name="preferred-color" label="Preferred Color">
|
|
48
|
+
<CoarRadioButton value="red">Red — Passionate and energetic</CoarRadioButton>
|
|
49
|
+
<CoarRadioButton value="blue">Blue — Calm and trustworthy</CoarRadioButton>
|
|
50
|
+
<CoarRadioButton value="green">Green — Fresh and natural</CoarRadioButton>
|
|
51
|
+
<CoarRadioButton value="purple">Purple — Creative and luxurious</CoarRadioButton>
|
|
52
|
+
</CoarRadioGroup>
|
|
53
|
+
<span style="font-size: 13px; color: #64748b;">Selected: {{ color || 'none' }}</span>
|
|
54
|
+
</div>
|
|
55
|
+
</template>
|
|
56
|
+
|
|
57
|
+
<script setup lang="ts">
|
|
58
|
+
import { ref } from 'vue';
|
|
59
|
+
import { CoarRadioGroup, CoarRadioButton } from '@cocoar/vue-ui';
|
|
60
|
+
|
|
61
|
+
const color = ref('');
|
|
62
|
+
</script>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## States
|
|
66
|
+
|
|
67
|
+
Mark the group as `required` to show an asterisk. Wrap in `CoarFormField` to display validation messages.
|
|
68
|
+
|
|
69
|
+
**Demo — `radio-group/demos/RadioGroupStates.vue`**
|
|
70
|
+
|
|
71
|
+
```vue
|
|
72
|
+
<template>
|
|
73
|
+
<div style="display: flex; flex-direction: column; gap: 16px;">
|
|
74
|
+
<CoarRadioGroup :model-value="'a'" name="required-group" label="Required Group" :required="true">
|
|
75
|
+
<CoarRadioButton value="a">Option A</CoarRadioButton>
|
|
76
|
+
<CoarRadioButton value="b">Option B</CoarRadioButton>
|
|
77
|
+
</CoarRadioGroup>
|
|
78
|
+
<CoarFormField error="Please select an option">
|
|
79
|
+
<CoarRadioGroup :model-value="''" name="with-error" label="With Error">
|
|
80
|
+
<CoarRadioButton value="a">Option A</CoarRadioButton>
|
|
81
|
+
<CoarRadioButton value="b">Option B</CoarRadioButton>
|
|
82
|
+
</CoarRadioGroup>
|
|
83
|
+
</CoarFormField>
|
|
84
|
+
</div>
|
|
85
|
+
</template>
|
|
86
|
+
|
|
87
|
+
<script setup lang="ts">
|
|
88
|
+
import { CoarRadioGroup, CoarRadioButton, CoarFormField } from '@cocoar/vue-ui';
|
|
89
|
+
</script>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Label Position
|
|
93
|
+
|
|
94
|
+
Place the label text before or after the radio control with the `labelPosition` prop on the group. All radio buttons inherit the setting.
|
|
95
|
+
|
|
96
|
+
**Demo — `radio-group/demos/RadioGroupLabelPosition.vue`**
|
|
97
|
+
|
|
98
|
+
```vue
|
|
99
|
+
<template>
|
|
100
|
+
<div style="display: flex; gap: 48px;">
|
|
101
|
+
<CoarRadioGroup v-model="a" name="pos-after" label="Label after (default)">
|
|
102
|
+
<CoarRadioButton value="email">Email</CoarRadioButton>
|
|
103
|
+
<CoarRadioButton value="sms">SMS</CoarRadioButton>
|
|
104
|
+
<CoarRadioButton value="push">Push</CoarRadioButton>
|
|
105
|
+
</CoarRadioGroup>
|
|
106
|
+
|
|
107
|
+
<CoarRadioGroup v-model="b" name="pos-before" label="Label before" label-position="before">
|
|
108
|
+
<CoarRadioButton value="email">Email</CoarRadioButton>
|
|
109
|
+
<CoarRadioButton value="sms">SMS</CoarRadioButton>
|
|
110
|
+
<CoarRadioButton value="push">Push</CoarRadioButton>
|
|
111
|
+
</CoarRadioGroup>
|
|
112
|
+
</div>
|
|
113
|
+
</template>
|
|
114
|
+
|
|
115
|
+
<script setup lang="ts">
|
|
116
|
+
import { ref } from 'vue';
|
|
117
|
+
import { CoarRadioGroup, CoarRadioButton } from '@cocoar/vue-ui';
|
|
118
|
+
|
|
119
|
+
const a = ref('email');
|
|
120
|
+
const b = ref('email');
|
|
121
|
+
</script>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Disabled Buttons
|
|
125
|
+
|
|
126
|
+
Individual `CoarRadioButton` options can be disabled while the rest of the group stays interactive -- useful for temporarily unavailable plans or tiers.
|
|
127
|
+
|
|
128
|
+
**Demo — `radio-group/demos/RadioGroupDisabled.vue`**
|
|
129
|
+
|
|
130
|
+
```vue
|
|
131
|
+
<template>
|
|
132
|
+
<div>
|
|
133
|
+
<CoarRadioGroup v-model="plan" name="plan" label="Plan">
|
|
134
|
+
<CoarRadioButton value="free">Free</CoarRadioButton>
|
|
135
|
+
<CoarRadioButton value="pro">Pro</CoarRadioButton>
|
|
136
|
+
<CoarRadioButton value="enterprise" :disabled="true">Enterprise (Coming Soon)</CoarRadioButton>
|
|
137
|
+
</CoarRadioGroup>
|
|
138
|
+
</div>
|
|
139
|
+
</template>
|
|
140
|
+
|
|
141
|
+
<script setup lang="ts">
|
|
142
|
+
import { ref } from 'vue';
|
|
143
|
+
import { CoarRadioGroup, CoarRadioButton } from '@cocoar/vue-ui';
|
|
144
|
+
|
|
145
|
+
const plan = ref('free');
|
|
146
|
+
</script>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Sizes
|
|
150
|
+
|
|
151
|
+
Four sizes that stay in step with every other Cocoar form control.
|
|
152
|
+
|
|
153
|
+
**Demo — `radio-group/demos/RadioGroupSizes.vue`**
|
|
154
|
+
|
|
155
|
+
```vue
|
|
156
|
+
<template>
|
|
157
|
+
<div style="display: flex; flex-direction: column; gap: 16px;">
|
|
158
|
+
<CoarRadioGroup :model-value="'a'" name="size-xs" label="Extra-small" size="xs">
|
|
159
|
+
<CoarRadioButton value="a">Option A</CoarRadioButton>
|
|
160
|
+
<CoarRadioButton value="b">Option B</CoarRadioButton>
|
|
161
|
+
</CoarRadioGroup>
|
|
162
|
+
<CoarRadioGroup :model-value="'a'" name="size-s" label="Small" size="s">
|
|
163
|
+
<CoarRadioButton value="a">Option A</CoarRadioButton>
|
|
164
|
+
<CoarRadioButton value="b">Option B</CoarRadioButton>
|
|
165
|
+
</CoarRadioGroup>
|
|
166
|
+
<CoarRadioGroup :model-value="'a'" name="size-m" label="Medium (default)" size="m">
|
|
167
|
+
<CoarRadioButton value="a">Option A</CoarRadioButton>
|
|
168
|
+
<CoarRadioButton value="b">Option B</CoarRadioButton>
|
|
169
|
+
</CoarRadioGroup>
|
|
170
|
+
<CoarRadioGroup :model-value="'a'" name="size-l" label="Large" size="l">
|
|
171
|
+
<CoarRadioButton value="a">Option A</CoarRadioButton>
|
|
172
|
+
<CoarRadioButton value="b">Option B</CoarRadioButton>
|
|
173
|
+
</CoarRadioGroup>
|
|
174
|
+
</div>
|
|
175
|
+
</template>
|
|
176
|
+
|
|
177
|
+
<script setup lang="ts">
|
|
178
|
+
import { CoarRadioGroup, CoarRadioButton } from '@cocoar/vue-ui';
|
|
179
|
+
</script>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Accessibility
|
|
183
|
+
|
|
184
|
+
### Keyboard Navigation
|
|
185
|
+
|
|
186
|
+
| Key | Action |
|
|
187
|
+
|-----|--------|
|
|
188
|
+
| `Tab` | Move focus into / out of radio group |
|
|
189
|
+
| `Arrow Left` / `Arrow Up` | Select previous option |
|
|
190
|
+
| `Arrow Right` / `Arrow Down` | Select next option |
|
|
191
|
+
| `Space` | Select focused option |
|
|
192
|
+
|
|
193
|
+
> **Info**
|
|
194
|
+
>
|
|
195
|
+
> Only one radio button in a group receives tab focus. Arrow keys move selection between options within the group.
|
|
196
|
+
|
|
197
|
+
### Screen Reader Support
|
|
198
|
+
|
|
199
|
+
- Group label announced when entering the group
|
|
200
|
+
- Each option's label announces on focus
|
|
201
|
+
- Selected state properly communicated
|
|
202
|
+
- Disabled options announced as unavailable
|
|
203
|
+
|
|
204
|
+
## API
|
|
205
|
+
|
|
206
|
+
### CoarRadioGroup Props
|
|
207
|
+
|
|
208
|
+
| Prop | Type | Default | Description |
|
|
209
|
+
|------|------|---------|-------------|
|
|
210
|
+
| `v-model` | `unknown` | `undefined` | Currently selected value |
|
|
211
|
+
| `name` | `string` | — | **Required.** HTML name for the radio inputs |
|
|
212
|
+
| `label` | `string` | `''` | Group accessible label |
|
|
213
|
+
| `orientation` | `'horizontal' \| 'vertical'` | `'vertical'` | Layout direction |
|
|
214
|
+
| `size` | `'xs' \| 's' \| 'm' \| 'l'` | `'m'` | Radio button size |
|
|
215
|
+
| `labelPosition` | `'before' \| 'after'` | `'after'` | Label position for all radio buttons |
|
|
216
|
+
| `disabled` | `boolean` | `false` | Disable all radio buttons |
|
|
217
|
+
| `required` | `boolean` | `false` | Mark as required |
|
|
218
|
+
| `error` | `boolean` | `false` | Error state (auto-injected from `CoarFormField`) |
|
|
219
|
+
|
|
220
|
+
### CoarRadioButton Props
|
|
221
|
+
|
|
222
|
+
| Prop | Type | Default | Description |
|
|
223
|
+
|------|------|---------|-------------|
|
|
224
|
+
| `value` | `unknown` | -- | Value emitted when selected |
|
|
225
|
+
| `disabled` | `boolean` | `false` | Disable this option |
|