From 3eb87a1086a4f9038424166dabc8abc0e5d9a8cd Mon Sep 17 00:00:00 2001 From: David Nixon Date: Fri, 28 Jul 2023 11:33:21 -0400 Subject: [PATCH] feat: compoent working. needs tests --- .../CvProgress/CvProgress.stories.mdx | 202 ++++++++++++++++++ src/components/CvProgress/CvProgress.vue | 76 +++++++ src/components/CvProgress/CvProgressStep.vue | 124 +++++++++++ src/components/CvProgress/index.js | 4 + 4 files changed, 406 insertions(+) create mode 100644 src/components/CvProgress/CvProgress.stories.mdx create mode 100644 src/components/CvProgress/CvProgress.vue create mode 100644 src/components/CvProgress/CvProgressStep.vue create mode 100644 src/components/CvProgress/index.js diff --git a/src/components/CvProgress/CvProgress.stories.mdx b/src/components/CvProgress/CvProgress.stories.mdx new file mode 100644 index 000000000..ac65c50be --- /dev/null +++ b/src/components/CvProgress/CvProgress.stories.mdx @@ -0,0 +1,202 @@ +import { Canvas, Meta, Story } from '@storybook/addon-docs'; +import { CvProgress, CvProgressStep } from '.'; +import { Time20 as TimeIcon } from '@carbon/icons-vue'; +// noinspection ES6PreferShortImport +import { sbCompPrefix } from '../../global/storybook-utils'; +import { action } from '@storybook/addon-actions'; + + + +export const Template = args => ({ + // Components used in your story `template` are defined in the `components` object + components: { + CvProgress, + CvProgressStep, + TimeIcon, + }, + // The story's `args` need to be mapped into the template through the `setup()` method + setup() { + return { + initialStep: args.initialStep, + steps: args.steps, + vertical: args.vertical, + spaceEqually: args.spaceEqually, + step1: args.step1, + step2: args.step2, + step3: args.step3, + step4: args.step4, + step5: args.step5, + completeIds: args.completeIds, + invalidIds: args.invalidIds, + disabledIds: args.disabledIds, + onStepClicked: action('step-clicked'), + }; + }, + // And then the `args` are bound to your component with `v-bind="args"` + template: args.template, +}); +const defaultTemplate = ` + + +`; +const slotTemplate = ` + + + + + + + + + + + + + +`; + +# CvProgress + +**Migration notes:** + +- The "current" icon is updated to match Carbon React +- Added the property `spaceEqually` to match Carbon React +- The property name `initialStep` is misleading. It is treated as the Current progress (currentIndex). +- To override the default icons, provide an icon in the `step-icon` slot in the `cv-progress-step` + + + + {Template.bind({})} + + + +# Slotted + +Use `cv-progress-step` for more control over the display. + + + + {Template.bind({})} + + diff --git a/src/components/CvProgress/CvProgress.vue b/src/components/CvProgress/CvProgress.vue new file mode 100644 index 000000000..8c18a791d --- /dev/null +++ b/src/components/CvProgress/CvProgress.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/components/CvProgress/CvProgressStep.vue b/src/components/CvProgress/CvProgressStep.vue new file mode 100644 index 000000000..39f0b01aa --- /dev/null +++ b/src/components/CvProgress/CvProgressStep.vue @@ -0,0 +1,124 @@ + + + + diff --git a/src/components/CvProgress/index.js b/src/components/CvProgress/index.js new file mode 100644 index 000000000..1b7bd8141 --- /dev/null +++ b/src/components/CvProgress/index.js @@ -0,0 +1,4 @@ +import CvProgress from './CvProgress.vue'; +import CvProgressStep from './CvProgressStep.vue'; + +export { CvProgress, CvProgressStep };