@carbon/vue 3.0.6-alpha.0 → 3.0.8-alpha.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.
Files changed (109) hide show
  1. package/README.md +7 -0
  2. package/dist/carbon-vue-3.common.js +16111 -9105
  3. package/dist/carbon-vue-3.common.js.map +1 -1
  4. package/dist/carbon-vue-3.umd.js +16111 -9105
  5. package/dist/carbon-vue-3.umd.js.map +1 -1
  6. package/dist/carbon-vue-3.umd.min.js +4 -4
  7. package/dist/carbon-vue-3.umd.min.js.map +1 -1
  8. package/package.json +9 -6
  9. package/src/components/CvAccordion/CvAccordion.stories.js +1 -0
  10. package/src/components/CvButton/CvButton.stories.js +3 -3
  11. package/src/components/CvButton/CvButtonSkeleton.stories.js +79 -0
  12. package/src/components/CvButton/CvButtonSkeleton.vue +19 -0
  13. package/src/components/CvButton/index.js +8 -1
  14. package/src/components/CvCheckbox/CvCheckbox.stories.js +18 -7
  15. package/src/components/CvCheckbox/CvCheckbox.vue +19 -3
  16. package/src/components/CvCheckbox/CvCheckboxSkeleton.vue +16 -0
  17. package/src/components/CvCheckbox/__tests__/__snapshots__/CvCheckboxSkeleton.spec.js.snap +3 -0
  18. package/src/components/CvCheckbox/index.js +2 -1
  19. package/src/components/CvDatePicker/CvDatePicker.vue +1 -1
  20. package/src/components/CvDropdown/CvDropdown.stories.mdx +407 -0
  21. package/src/components/CvDropdown/CvDropdown.vue +416 -0
  22. package/src/components/CvDropdown/CvDropdownItem.vue +86 -0
  23. package/src/components/CvDropdown/CvDropdownSkeleton.vue +17 -0
  24. package/src/components/CvDropdown/index.js +5 -0
  25. package/src/components/CvFileUploader/CvFileUploader.stories.mdx +333 -0
  26. package/src/components/CvFileUploader/CvFileUploader.vue +286 -0
  27. package/src/components/CvFileUploader/CvFileUploaderItem.vue +92 -0
  28. package/src/components/CvFileUploader/CvFileUploaderSkeleton.vue +16 -0
  29. package/src/components/CvFileUploader/const.js +10 -0
  30. package/src/components/CvFileUploader/index.js +5 -0
  31. package/src/components/CvForm/CvFormGroup.vue +1 -1
  32. package/src/components/CvInlineLoading/CvInlineLoading.stories.mdx +87 -0
  33. package/src/components/CvInlineLoading/CvInlineLoading.vue +144 -0
  34. package/src/components/CvInlineLoading/consts.js +9 -0
  35. package/src/components/CvInlineLoading/index.js +4 -0
  36. package/src/components/CvModal/CvModal.stories.mdx +4 -2
  37. package/src/components/CvModal/CvModal.vue +3 -5
  38. package/src/components/CvMultiSelect/CvMultiSelect.stories.mdx +333 -0
  39. package/src/components/CvMultiSelect/CvMultiSelect.vue +705 -0
  40. package/src/components/CvMultiSelect/consts.js +16 -0
  41. package/src/components/CvMultiSelect/index.js +3 -0
  42. package/src/components/CvNumberInput/CvNumberInput.stories.js +265 -0
  43. package/src/components/CvNumberInput/CvNumberInput.vue +227 -0
  44. package/src/components/CvNumberInput/CvNumberInputSkeleton.stories.js +30 -0
  45. package/src/components/CvNumberInput/CvNumberInputSkeleton.vue +10 -0
  46. package/src/components/CvNumberInput/StorybookGroupConst.js +1 -0
  47. package/src/components/CvNumberInput/__tests__/__snapshots__/CvNumberInput.spec.js.snap +21 -0
  48. package/src/components/CvNumberInput/index.js +5 -0
  49. package/src/components/CvProgress/CvProgress.stories.mdx +202 -0
  50. package/src/components/CvProgress/CvProgress.vue +78 -0
  51. package/src/components/CvProgress/CvProgressStep.vue +124 -0
  52. package/src/components/CvProgress/index.js +4 -0
  53. package/src/components/CvRadioButton/CvRadioButton.stories.js +166 -0
  54. package/src/components/CvRadioButton/CvRadioButton.vue +57 -0
  55. package/src/components/CvRadioButton/CvRadioGroup.vue +27 -0
  56. package/src/components/CvRadioButton/__tests__/__snapshots__/CvRadioButton.spec.js.snap +27 -0
  57. package/src/components/CvRadioButton/index.js +6 -0
  58. package/src/components/CvSearch/CvSearch.stories.mdx +168 -0
  59. package/src/components/CvSearch/CvSearch.vue +250 -0
  60. package/src/components/CvSearch/index.js +3 -0
  61. package/src/components/CvSelect/CvSelect.vue +27 -6
  62. package/src/components/CvSlider/CvSlider.stories.js +166 -0
  63. package/src/components/CvSlider/CvSlider.vue +324 -0
  64. package/src/components/CvSlider/CvSliderSkeleton.stories.js +26 -0
  65. package/src/components/CvSlider/CvSliderSkeleton.vue +18 -0
  66. package/src/components/CvSlider/__tests__/__snapshots__/CvSlider.spec.js.snap +13 -0
  67. package/src/components/CvSlider/__tests__/__snapshots__/CvSliderSkeleton.spec.js.snap +13 -0
  68. package/src/components/CvSlider/index.js +5 -0
  69. package/src/components/CvSlider/sbSliderPrefix.js +2 -0
  70. package/src/components/CvTabs/CvTab.vue +77 -0
  71. package/src/components/CvTabs/CvTabs.stories.mdx +175 -0
  72. package/src/components/CvTabs/CvTabs.vue +406 -0
  73. package/src/components/CvTabs/CvTabsSkeleton.vue +24 -0
  74. package/src/components/CvTabs/_SbContainer.vue +22 -0
  75. package/src/components/CvTabs/index.js +5 -0
  76. package/src/components/CvTextArea/CvTextArea.stories.js +2 -2
  77. package/src/components/CvTextArea/CvTextAreaSkeleton.stories.js +29 -0
  78. package/src/components/CvTextArea/CvTextAreaSkeleton.vue +10 -0
  79. package/src/components/CvTextArea/StorybookGroupConst.js +1 -0
  80. package/src/components/CvTextArea/__tests__/__snapshots__/CvTextAreaSkeleton.spec.js.snap +7 -0
  81. package/src/components/CvTextArea/index.js +2 -1
  82. package/src/components/CvTimePicker/CvTimePicker.stories.mdx +325 -0
  83. package/src/components/CvTimePicker/CvTimePicker.vue +217 -0
  84. package/src/components/CvTimePicker/index.js +21 -0
  85. package/src/components/CvToggle/CvToggle-Skeleton.vue +44 -0
  86. package/src/components/CvToggle/CvToggle.stories.js +249 -0
  87. package/src/components/CvToggle/CvToggle.vue +87 -0
  88. package/src/components/CvToggle/__tests__/__snapshots__/CvToggle.spec.js.snap +7 -0
  89. package/src/components/CvToggle/index.js +4 -0
  90. package/src/components/CvTooltip/CvDefinitionTooltip.stories.js +80 -0
  91. package/src/components/CvTooltip/CvDefinitionTooltip.vue +61 -0
  92. package/src/components/CvTooltip/CvInteractiveTooltip.stories.js +90 -0
  93. package/src/components/CvTooltip/CvInteractiveTooltip.vue +267 -0
  94. package/src/components/CvTooltip/CvTooltip.stories.js +128 -0
  95. package/src/components/CvTooltip/CvTooltip.vue +44 -0
  96. package/src/components/CvTooltip/__tests__/__snapshots__/CvTooltip.spec.js.snap +525 -0
  97. package/src/components/CvTooltip/consts.js +15 -0
  98. package/src/components/CvTooltip/index.js +6 -0
  99. package/src/components/CvTooltip/sbTooltipPrefix.js +2 -0
  100. package/src/components/CvUIShell/CvSideNav.vue +10 -1
  101. package/src/components/CvUIShell/CvUIShell.stories.mdx +116 -50
  102. package/src/global/storybook-utils/story-source-code.js +1 -0
  103. package/src/index.d.ts +6 -0
  104. package/src/index.js +11 -0
  105. package/src/use/cvCheck.js +3 -0
  106. package/src/use/cvInput.js +34 -0
  107. package/src/use/index.js +2 -0
  108. package/src/use/useMethods.js +18 -0
  109. package/src/use/useRadio.js +25 -0
@@ -0,0 +1,407 @@
1
+ import { Canvas, Meta, Story } from '@storybook/addon-docs';
2
+ import { sbCompPrefix } from '../../global/storybook-utils';
3
+ import CvDropdown from './CvDropdown.vue';
4
+ import CvDropdownItem from './CvDropdownItem.vue';
5
+ import CvDropdownSkeleton from './CvDropdownSkeleton.vue';
6
+ import { action } from '@storybook/addon-actions';
7
+ import { ref } from 'vue';
8
+ const myValue = ref('baby-yoda');
9
+
10
+ <Meta title={`${sbCompPrefix}/CvDropdown`} component={CvDropdown} />
11
+
12
+ export const Template = args => ({
13
+ // Components used in your story `template` are defined in the `components` object
14
+ components: {
15
+ CvDropdown,
16
+ CvDropdownItem,
17
+ CvDropdownSkeleton,
18
+ },
19
+ // The story's `args` need to be mapped into the template through the `setup()` method
20
+ setup() {
21
+ return {
22
+ ...args,
23
+ props: args.props,
24
+ light: args.light,
25
+ placeholder: args.placeholder,
26
+ value: args.value,
27
+ label: args.label,
28
+ up: args.up,
29
+ inline: args.inline,
30
+ helperText: args.helperText,
31
+ hideSelected: args.hideSelected,
32
+ warningMessage: args.warningMessage,
33
+ invalidMessage: args.invalidMessage,
34
+ disabled: args.disabled,
35
+ size: args.size,
36
+ items: args.items,
37
+ onChange: action('change'),
38
+ myValue: myValue,
39
+ slotInvalidText: args.slotInvalidText,
40
+ slotWarningText: args.slotWarningText,
41
+ slotHelperText: args.slotHelperText,
42
+ slotInternalCaption: args.slotInternalCaption,
43
+ };
44
+ },
45
+ template: args.template,
46
+ });
47
+ const defaultTemplate = `
48
+ <div :style="{width: '300px', paddingTop: up ? '90px' : undefined}">
49
+ <cv-dropdown
50
+ :light="light"
51
+ :placeholder="placeholder"
52
+ :value="value"
53
+ :up="up"
54
+ :inline="inline"
55
+ :helper-text="helperText"
56
+ :warning-message="warningMessage"
57
+ :hide-selected="hideSelected"
58
+ :invalid-message="invalidMessage"
59
+ :label="label"
60
+ :disabled="disabled"
61
+ :size="size"
62
+ @change="onChange">
63
+ <cv-dropdown-item value="mando"><span style="color: darkred">Din Djarin</span></cv-dropdown-item>
64
+ <cv-dropdown-item value="nite-owl">Bo-Katan Kryze</cv-dropdown-item>
65
+ <cv-dropdown-item value="baby-yoda">Din Grogu</cv-dropdown-item>
66
+ <cv-dropdown-item value="mysterious">The Armorer</cv-dropdown-item>
67
+ <cv-dropdown-item value="bounty-hunter">Greef Karga</cv-dropdown-item>
68
+ </cv-dropdown>
69
+ </div>
70
+ `;
71
+ const slotsTemplate = `
72
+ <div :style="{width: '300px'}">
73
+ <cv-dropdown
74
+ v-model:value="myValue"
75
+ :light="light"
76
+ :placeholder="placeholder"
77
+ :up="up"
78
+ :inline="inline"
79
+ :helper-text="helperText"
80
+ :warning-message="warningMessage"
81
+ :hide-selected="hideSelected"
82
+ :invalid-message="invalidMessage"
83
+ :label="label"
84
+ :disabled="disabled"
85
+ :size="size"
86
+ @change="onChange">
87
+ <template v-if="slotInternalCaption" v-slot:internal-caption><h5>Edge case: {{ myValue }}</h5></template>
88
+ <template v-if="slotInvalidText" v-slot:invalid-message>Do not go to the dark side</template>
89
+ <template v-if="slotWarningText" v-slot:warning-message>Can this ally be trusted?</template>
90
+ <template v-if="slotHelperText" v-slot:helper-text>Choose ally strong with the force</template>
91
+ <cv-dropdown-item value="mando"><span>Din Djarin</span></cv-dropdown-item>
92
+ <cv-dropdown-item value="nite-owl">Bo-Katan Kryze</cv-dropdown-item>
93
+ <cv-dropdown-item value="baby-yoda">Din Grogu</cv-dropdown-item>
94
+ <cv-dropdown-item value="mysterious">The Armorer</cv-dropdown-item>
95
+ <cv-dropdown-item value="bounty-hunter">Greef Karga</cv-dropdown-item>
96
+ </cv-dropdown>
97
+ </div>
98
+ `;
99
+ const itemsTemplate = `
100
+ <div :style="{width: '300px'}">
101
+ <cv-dropdown
102
+ :light="light"
103
+ :placeholder="placeholder"
104
+ :value="value"
105
+ :up="up"
106
+ :inline="inline"
107
+ :helper-text="helperText"
108
+ :warning-message="warningMessage"
109
+ :hide-selected="hideSelected"
110
+ :invalid-message="invalidMessage"
111
+ :label="label"
112
+ :disabled="disabled"
113
+ :size="size"
114
+ :items="items"
115
+ @change="onChange">
116
+ </cv-dropdown>
117
+ </div>
118
+ `;
119
+ const vmodelTemplate = `
120
+ <div :style="{width: '300px'}">
121
+ <cv-dropdown
122
+ v-model:value="myValue"
123
+ :label="label"
124
+ :placeholder="placeholder"
125
+ @change="onChange">
126
+ <cv-dropdown-item value="mando"><span>Din Djarin</span></cv-dropdown-item>
127
+ <cv-dropdown-item value="nite-owl">Bo-Katan Kryze</cv-dropdown-item>
128
+ <cv-dropdown-item value="baby-yoda">Din Grogu</cv-dropdown-item>
129
+ <cv-dropdown-item value="mysterious">The Armorer</cv-dropdown-item>
130
+ <cv-dropdown-item value="bounty-hunter">Greef Karga</cv-dropdown-item>
131
+ </cv-dropdown>
132
+ <div>V-Model value: {{ myValue }}</div>
133
+ <select v-model="myValue">
134
+ <option value="mando">Mandalorian</option>
135
+ <option value="nite-owl">Bo-Katan</option>
136
+ <option value="baby-yoda">Grogu</option>
137
+ <option value="mysterious">Armorer</option>
138
+ <option value="bounty-hunter">Karga</option>
139
+ </select>
140
+ </div>
141
+ `;
142
+ const skeletonTemplate = `
143
+ <div :style="{width: '300px'}">
144
+ <cv-dropdown-skeleton :inline="inline"></cv-dropdown-skeleton>
145
+ </div>
146
+ `;
147
+
148
+ # CvDropdown
149
+
150
+ Notes:
151
+
152
+ - You can place a Dropdown inline with other content by using the inline variant
153
+ Migration notes:
154
+
155
+ - The `v-model` is different in Vue 3 than Vue 2. You can still specify the `v-model=something` to control the visibility but
156
+ if you specify it like this you will see a deprecation message in the log. Please use `v-model:value=something` instead.
157
+ - Add the `size` option to match Carbon React
158
+ - Added the `warningMessage` option to match Carbon React
159
+
160
+ <Canvas>
161
+ <Story
162
+ name="Default"
163
+ parameters={{
164
+ controls: {
165
+ exclude: [
166
+ 'props',
167
+ 'default',
168
+ 'template',
169
+ 'change',
170
+ 'update:modelValue',
171
+ 'update:value',
172
+ 'helper-text',
173
+ 'invalid-message',
174
+ 'warning-message',
175
+ 'internal-caption',
176
+ 'modelValue',
177
+ ],
178
+ },
179
+ docs: { source: { code: defaultTemplate } },
180
+ }}
181
+ args={{
182
+ template: defaultTemplate,
183
+ props: {
184
+ modelValue: undefined,
185
+ },
186
+ label: 'Characters',
187
+ placeholder: 'Choose an ally',
188
+ helperText: 'May the force be with you',
189
+ light: false,
190
+ }}
191
+ argTypes={{
192
+ light: {
193
+ type: String,
194
+ description: '`true` to use the light version',
195
+ table: { category: 'props' },
196
+ },
197
+ size: {
198
+ control: 'select',
199
+ default: 'md',
200
+ options: ['sm', 'md', 'lg'],
201
+ },
202
+ }}
203
+ >
204
+ {Template.bind({})}
205
+ </Story>
206
+ </Canvas>
207
+
208
+ # Use slots with helper, invalid, warning text, and the internal caption
209
+
210
+ <Canvas>
211
+ <Story
212
+ name="Slots"
213
+ parameters={{
214
+ controls: {
215
+ exclude: [
216
+ 'props',
217
+ 'default',
218
+ 'template',
219
+ 'change',
220
+ 'update:modelValue',
221
+ 'update:value',
222
+ 'helper-text',
223
+ 'invalid-message',
224
+ 'warning-message',
225
+ 'internal-caption',
226
+ 'modelValue',
227
+ 'ariaLabel',
228
+ 'disabled',
229
+ 'formItem',
230
+ 'helperText',
231
+ 'hideSelected',
232
+ 'inline',
233
+ 'invalidMessage',
234
+ 'items',
235
+ 'label',
236
+ 'placeholder',
237
+ 'size',
238
+ 'up',
239
+ 'value',
240
+ 'warningMessage',
241
+ ],
242
+ },
243
+ docs: { source: { code: slotsTemplate } },
244
+ }}
245
+ args={{
246
+ template: slotsTemplate,
247
+ label: 'Characters',
248
+ placeholder: 'Choose an ally',
249
+ slotInvalidText: false,
250
+ slotWarningText: false,
251
+ slotHelperText: true,
252
+ slotInternalCaption: false,
253
+ }}
254
+ argTypes={{}}
255
+ >
256
+ {Template.bind({})}
257
+ </Story>
258
+ </Canvas>
259
+
260
+ # Use an array of strings as the dropdown options
261
+
262
+ - Notes: this version does not seem very useful. Please comment in the Slack channel if you are using this.
263
+ Curious to know how it might be currently used.
264
+
265
+ <Canvas>
266
+ <Story
267
+ name="Items"
268
+ parameters={{
269
+ controls: {
270
+ exclude: [
271
+ 'props',
272
+ 'default',
273
+ 'template',
274
+ 'change',
275
+ 'update:modelValue',
276
+ 'update:value',
277
+ 'helper-text',
278
+ 'invalid-message',
279
+ 'warning-message',
280
+ 'internal-caption',
281
+ 'modelValue',
282
+ 'ariaLabel',
283
+ 'disabled',
284
+ 'formItem',
285
+ 'helperText',
286
+ 'hideSelected',
287
+ 'inline',
288
+ 'invalidMessage',
289
+ 'items',
290
+ 'label',
291
+ 'placeholder',
292
+ 'size',
293
+ 'up',
294
+ 'value',
295
+ 'warningMessage',
296
+ ],
297
+ },
298
+ docs: { source: { code: itemsTemplate } },
299
+ }}
300
+ args={{
301
+ template: itemsTemplate,
302
+ label: 'Planets',
303
+ placeholder: 'Where will you visit',
304
+ items: ['Coruscant', 'Tatooine', 'Naboo', 'Hoth', 'Kamino', 'Mandalore'],
305
+ }}
306
+ argTypes={{}}
307
+ >
308
+ {Template.bind({})}
309
+ </Story>
310
+ </Canvas>
311
+
312
+ # Use with v-model
313
+
314
+ <Canvas>
315
+ <Story
316
+ name="v-model"
317
+ parameters={{
318
+ controls: {
319
+ exclude: [
320
+ 'props',
321
+ 'default',
322
+ 'template',
323
+ 'change',
324
+ 'update:modelValue',
325
+ 'update:value',
326
+ 'helper-text',
327
+ 'invalid-message',
328
+ 'warning-message',
329
+ 'internal-caption',
330
+ 'modelValue',
331
+ 'ariaLabel',
332
+ 'disabled',
333
+ 'formItem',
334
+ 'helperText',
335
+ 'hideSelected',
336
+ 'inline',
337
+ 'invalidMessage',
338
+ 'items',
339
+ 'label',
340
+ 'placeholder',
341
+ 'size',
342
+ 'up',
343
+ 'value',
344
+ 'warningMessage',
345
+ ],
346
+ },
347
+ docs: { source: { code: vmodelTemplate } },
348
+ }}
349
+ args={{
350
+ template: vmodelTemplate,
351
+ label: 'Characters',
352
+ placeholder: 'Choose an ally',
353
+ }}
354
+ argTypes={{}}
355
+ >
356
+ {Template.bind({})}
357
+ </Story>
358
+ </Canvas>
359
+
360
+ # Skeleton - loading mode
361
+
362
+ - Notes: The Vue 2 story shows the `inline` attribute for the skeleton mode but this seems to have no effect on the display.
363
+ It is still supported but do not expect a change in display.
364
+
365
+ <Canvas>
366
+ <Story
367
+ name="skeleton"
368
+ parameters={{
369
+ controls: {
370
+ exclude: [
371
+ 'props',
372
+ 'default',
373
+ 'template',
374
+ 'change',
375
+ 'update:modelValue',
376
+ 'update:value',
377
+ 'helper-text',
378
+ 'invalid-message',
379
+ 'warning-message',
380
+ 'internal-caption',
381
+ 'modelValue',
382
+ 'ariaLabel',
383
+ 'disabled',
384
+ 'formItem',
385
+ 'helperText',
386
+ 'hideSelected',
387
+ 'invalidMessage',
388
+ 'items',
389
+ 'label',
390
+ 'placeholder',
391
+ 'size',
392
+ 'up',
393
+ 'value',
394
+ 'warningMessage',
395
+ 'inline',
396
+ ],
397
+ },
398
+ docs: { source: { code: skeletonTemplate } },
399
+ }}
400
+ args={{
401
+ template: skeletonTemplate,
402
+ }}
403
+ argTypes={{}}
404
+ >
405
+ {Template.bind({})}
406
+ </Story>
407
+ </Canvas>