From a98d33597aab1d6491be44434a332331d8fd9b5c Mon Sep 17 00:00:00 2001 From: David Nixon Date: Mon, 5 Aug 2024 12:59:20 -0400 Subject: [PATCH] feat: add support for tag icons --- src/components/CvTag/CvTag.stories.js | 60 +++++++++++++++++++++++++-- src/components/CvTag/CvTag.vue | 37 +++++++++-------- 2 files changed, 77 insertions(+), 20 deletions(-) diff --git a/src/components/CvTag/CvTag.stories.js b/src/components/CvTag/CvTag.stories.js index d41b83a1a..2aed5805f 100644 --- a/src/components/CvTag/CvTag.stories.js +++ b/src/components/CvTag/CvTag.stories.js @@ -5,17 +5,39 @@ import { sbCompPrefix, storyParametersObject, } from '../../global/storybook-utils'; +import { + DataDefinition20, + Bee20, + Carbon20, + Watson20, + IbmCloud20, + EdtLoop20, + IbmSecurity20, +} from '@carbon/icons-vue'; + +const icons = { + DataDefinition20, + Bee20, + Carbon20, + Watson20, + IbmCloud20, + EdtLoop20, + IbmSecurity20, + undefined, +}; export default { title: `${sbCompPrefix}/CvTag`, component: CvTag, argTypes: { kind: { control: 'select', options: tagKinds }, + renderIcon: { control: { type: 'select', options: Object.keys(icons) } }, }, }; const template = ``; -const Template = (args, { argTypes }) => { +const Template = (argsIn, { argTypes }) => { + let args = { ...argsIn, renderIcon: icons[argsIn.renderIcon] }; return { props: Object.keys(argTypes), components: { CvTag }, @@ -31,9 +53,14 @@ const Template = (args, { argTypes }) => { export const Default = Template.bind({}); Default.args = { - label: 'This is a tag', + label: 'Hugo Award winner', filter: false, }; +Default.parameters = { + controls: { + exclude: ['remove'], + }, +}; Default.parameters = storyParametersObject( Default.parameters, template, @@ -42,8 +69,14 @@ Default.parameters = storyParametersObject( export const Filter = Template.bind({}); Filter.args = { - label: 'This is a tag', + label: 'Filter House', filter: true, + kind: 'high-contrast', +}; +Filter.parameters = { + controls: { + exclude: ['remove'], + }, }; Filter.parameters = storyParametersObject( Filter.parameters, @@ -56,8 +89,29 @@ Skeleton.args = { skeleton: true, label: '', }; +Skeleton.parameters = { + controls: { + include: ['small'], + }, +}; Skeleton.parameters = storyParametersObject( Skeleton.parameters, template, Skeleton.args ); + +export const TagIcon = Template.bind({}); +TagIcon.args = { + renderIcon: 'DataDefinition20', + label: 'Steampunk', +}; +TagIcon.parameters = { + controls: { + include: ['renderIcon'], + }, +}; +TagIcon.parameters = storyParametersObject( + TagIcon.parameters, + template, + TagIcon.args +); diff --git a/src/components/CvTag/CvTag.vue b/src/components/CvTag/CvTag.vue index f7afc0780..747c9f924 100644 --- a/src/components/CvTag/CvTag.vue +++ b/src/components/CvTag/CvTag.vue @@ -1,6 +1,11 @@