diff --git a/README.md b/README.md index 900eccec..2b380ed1 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,9 @@ Currently, the following components are supported: - NotificationIcon - NotificationTextDetails - OrderedList +- ProgressIndicator + - ProgressIndicatorSkeleton + - ProgressStep - RadioButton - RadioButtonSkeleton - Search diff --git a/src/components/ProgressIndicator/ProgressIndicator.Skeleton.svelte b/src/components/ProgressIndicator/ProgressIndicator.Skeleton.svelte new file mode 100644 index 00000000..22acdd6c --- /dev/null +++ b/src/components/ProgressIndicator/ProgressIndicator.Skeleton.svelte @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ProgressIndicator/ProgressIndicator.Story.svelte b/src/components/ProgressIndicator/ProgressIndicator.Story.svelte new file mode 100644 index 00000000..d5cbdd89 --- /dev/null +++ b/src/components/ProgressIndicator/ProgressIndicator.Story.svelte @@ -0,0 +1,55 @@ + + + +
+ {#if story === 'skeleton'} + + {:else if story === 'interactive'} + + +
Click me
+
+ + +
+ {:else} + + + + Label + + + Label + + + + + {/if} +
+
diff --git a/src/components/ProgressIndicator/ProgressIndicator.stories.js b/src/components/ProgressIndicator/ProgressIndicator.stories.js new file mode 100644 index 00000000..a5b73749 --- /dev/null +++ b/src/components/ProgressIndicator/ProgressIndicator.stories.js @@ -0,0 +1,29 @@ +import { withKnobs, boolean, text, number } from '@storybook/addon-knobs'; +import Component from './ProgressIndicator.Story.svelte'; + +export default { title: 'ProgressIndicator', decorators: [withKnobs] }; + +export const Default = () => ({ + Component, + props: { + currentIndex: number('Current progress (currentIndex)', 1), + vertical: boolean('Vertical orientation (vertical)', false) + } +}); + +export const Interactive = () => ({ + Component, + props: { + story: 'interactive', + currentIndex: number('Current progress (currentIndex)', 1), + vertical: boolean('Vertical orientation (vertical)', false) + } +}); + +export const Skeleton = () => ({ + Component, + props: { + story: 'skeleton', + vertical: boolean('Vertical orientation (vertical)', false) + } +}); diff --git a/src/components/ProgressIndicator/ProgressIndicator.svelte b/src/components/ProgressIndicator/ProgressIndicator.svelte new file mode 100644 index 00000000..3d8c613d --- /dev/null +++ b/src/components/ProgressIndicator/ProgressIndicator.svelte @@ -0,0 +1,39 @@ + + + diff --git a/src/components/ProgressIndicator/ProgressStep.svelte b/src/components/ProgressIndicator/ProgressStep.svelte new file mode 100644 index 00000000..69886d9a --- /dev/null +++ b/src/components/ProgressIndicator/ProgressStep.svelte @@ -0,0 +1,82 @@ + + +
  • +
    { + change(step.index); + }} + on:mouseover + on:mouseenter + on:mouseleave + on:keydown + on:keydown={event => { + if (event.key === ' ' || event.key === 'Enter') { + change(step.index); + } + }}> + {#if invalid} + + {:else if current} + + + {description} + + {:else if complete} + + {:else} + + {description} + + + {/if} + +

    {label}

    +
    + {#if secondaryLabel} +

    {secondaryLabel}

    + {/if} + +
    +
  • diff --git a/src/components/ProgressIndicator/index.js b/src/components/ProgressIndicator/index.js new file mode 100644 index 00000000..515beda2 --- /dev/null +++ b/src/components/ProgressIndicator/index.js @@ -0,0 +1,5 @@ +import ProgressIndicator from './ProgressIndicator.svelte'; + +export default ProgressIndicator; +export { default as ProgressIndicatorSkeleton } from './ProgressIndicator.Skeleton.svelte'; +export { default as ProgressStep } from './ProgressStep.svelte'; diff --git a/src/index.js b/src/index.js index 90a1b76a..ec51b590 100644 --- a/src/index.js +++ b/src/index.js @@ -20,6 +20,10 @@ import { NotificationTextDetails } from './components/Notification'; import OrderedList from './components/OrderedList'; +import ProgressIndicator, { + ProgressIndicatorSkeleton, + ProgressStep +} from './components/ProgressIndicator'; import RadioButton, { RadioButtonSkeleton } from './components/RadioButton'; import Search, { SearchSkeleton } from './components/Search'; import SkeletonPlaceholder from './components/SkeletonPlaceholder'; @@ -71,6 +75,9 @@ export { NotificationTextDetails, OrderedList, PasswordInput, + ProgressIndicator, + ProgressIndicatorSkeleton, + ProgressStep, RadioButton, RadioButtonSkeleton, Search,