From 5fa1973c2c45164797ab31346b7f8352cfeedc99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B0?= =?UTF-8?q?=D0=BB=D1=8E=D0=B3=D0=B8=D0=BD?= Date: Fri, 17 Jan 2025 17:55:23 +0500 Subject: [PATCH] feat: start to do 'Rating' --- src/App.vue | 2 + src/Playground.vue | 4 +- src/common/constants/icons.ts | 12 +-- src/common/interfaces/common.ts | 2 +- src/common/interfaces/componentsProp.ts | 14 ++-- src/common/interfaces/componentsProps.ts | 13 ++-- .../components/Rating/Rating.stories.ts | 78 +++++++++++++++++++ src/stories/components/Rating/Rating.vue | 71 +++++++++++++++++ .../components/SelectButton/SelectButton.vue | 4 +- .../components/ToggleSwitch/ToggleSwitch.vue | 4 +- src/stories/icons/Mono/StarIcon.vue | 20 +++++ 11 files changed, 199 insertions(+), 25 deletions(-) create mode 100644 src/stories/components/Rating/Rating.stories.ts create mode 100644 src/stories/components/Rating/Rating.vue create mode 100644 src/stories/icons/Mono/StarIcon.vue diff --git a/src/App.vue b/src/App.vue index e48e3c7..6b6fa05 100644 --- a/src/App.vue +++ b/src/App.vue @@ -109,6 +109,7 @@ import ArrowsVerticalIcon from '@stories/icons/Mono/ArrowsVerticalIcon.vue'; import TriangleIcon from '@stories/icons/Mono/TriangleIcon.vue'; import Playground from '@/Playground.vue'; import ArrowShortDownIcon from '@stories/icons/Mono/ArrowShortDownIcon.vue'; +import StarIcon from '@stories/icons/Mono/StarIcon.vue'; const gentleIcons = { Age18Icon, @@ -212,6 +213,7 @@ const gentleIcons = { SaveIcon, SearchIcon, SettingsIcon, + StarIcon, SortDownIcon, SortHorizontalIcon, SortUpIcon, diff --git a/src/Playground.vue b/src/Playground.vue index 70a79cd..64a17e4 100644 --- a/src/Playground.vue +++ b/src/Playground.vue @@ -216,7 +216,7 @@ const knob = ref(0); show-all-lines :columns="tableColumns" darknessTextColor="500" - :data="tableData" + v-model="tableData" fontSize="36px" theme="black" stripedRows @@ -225,7 +225,7 @@ const knob = ref(0); show-all-lines :columns="tableColumns" darknessTextColor="500" - :data="tableData" + v-model="tableData" fontSize="20px" theme="black" stripedRows diff --git a/src/common/constants/icons.ts b/src/common/constants/icons.ts index 41c5605..1b44784 100644 --- a/src/common/constants/icons.ts +++ b/src/common/constants/icons.ts @@ -109,6 +109,7 @@ import SortUpIcon from '@stories/icons/Mono/SortUpIcon.vue'; import SortVerticalIcon from '@stories/icons/Mono/SortVerticalIcon.vue'; import ArrowShortDownIcon from '@stories/icons/Mono/ArrowShortDownIcon.vue'; import SearchIcon from '@stories/icons/Mono/SearchIcon.vue'; +import StarIcon from '@stories/icons/Mono/StarIcon.vue'; export const iconsSet: Record = { Age18: Age18Icon, @@ -210,12 +211,13 @@ export const iconsSet: Record = { Plus: PlusIcon, Pointer: PointerIcon, Save: SaveIcon, - SearchIcon, + Search: SearchIcon, Settings: SettingsIcon, - SortDownIcon, - SortHorizontalIcon, - SortUpIcon, - SortVerticalIcon, + Star: StarIcon, + SortDown: SortDownIcon, + SortHorizontal: SortHorizontalIcon, + SortUp: SortUpIcon, + SortVertical: SortVerticalIcon, Table: TableIcon, Trash: TrashIcon, Triangle: TriangleIcon, diff --git a/src/common/interfaces/common.ts b/src/common/interfaces/common.ts index cb8b472..cd37236 100644 --- a/src/common/interfaces/common.ts +++ b/src/common/interfaces/common.ts @@ -1,6 +1,6 @@ import type { iconsSet } from '@/common/constants/icons'; -export type TIcons = keyof typeof iconsSet; +export type TIcon = keyof typeof iconsSet; export type TThemeColor = | 'white' diff --git a/src/common/interfaces/componentsProp.ts b/src/common/interfaces/componentsProp.ts index 3b7b90a..0b549ea 100644 --- a/src/common/interfaces/componentsProp.ts +++ b/src/common/interfaces/componentsProp.ts @@ -1,4 +1,4 @@ -import type { TDarkness, TIcons, TPosition, TTextStyle, TThemeColor } from '@interfaces/common'; +import type { TDarkness, TIcon, TPosition, TTextStyle, TThemeColor } from '@interfaces/common'; export interface ITableColumn { name: string; @@ -34,8 +34,8 @@ export interface ITreeItem { color?: TThemeColor; textStyle?: TTextStyle; isTriangleToColor?: boolean; - iconBefore?: TIcons; - iconAfter?: TIcons; + iconBefore?: TIcon; + iconAfter?: TIcon; iconColor?: TThemeColor; children?: ITreeItem[]; darknessColor?: TDarkness; @@ -66,8 +66,8 @@ export interface ISelectOption { value: string; label?: string; group?: string; - iconLeft?: TIcons; - iconRight?: TIcons; + iconLeft?: TIcon; + iconRight?: TIcon; iconLeftColor?: TThemeColor; iconRightColor?: TThemeColor; color?: TThemeColor; @@ -81,8 +81,8 @@ export interface ISelectGroup { nameColor?: TThemeColor; background?: TThemeColor; items?: ISelectOption[]; - iconLeft?: TIcons; - iconRight?: TIcons; + iconLeft?: TIcon; + iconRight?: TIcon; iconLeftColor?: TThemeColor; iconRightColor?: TThemeColor; } diff --git a/src/common/interfaces/componentsProps.ts b/src/common/interfaces/componentsProps.ts index aa35d26..026ef57 100644 --- a/src/common/interfaces/componentsProps.ts +++ b/src/common/interfaces/componentsProps.ts @@ -3,7 +3,7 @@ import type { TDarkness, TDirection, TExpandedPosition, - TIcons, + TIcon, TPosition, TSize, TTextStyle, @@ -115,7 +115,7 @@ export interface IDrawerProps { darknessTextColor?: TDarkness; modal?: boolean; dismissible?: boolean; - closeIcon?: TIcons; + closeIcon?: TIcon; headerDivider?: boolean; footerDivider?: boolean; } @@ -129,7 +129,7 @@ export interface IModalProps { height?: string; position?: TExpandedPosition; dismissible?: boolean; - closeIcon?: TIcons; + closeIcon?: TIcon; headerDivider?: boolean; } @@ -152,7 +152,7 @@ export interface ISelectProps { groups?: ISelectGroup[]; width?: string; placeholder?: string; - openIcon?: TIcons; + openIcon?: TIcon; size?: TSize; name?: string; theme?: TThemeColor; @@ -195,6 +195,7 @@ export interface IButtonProps { export interface IRatingProps { count?: number; + icon?: TIcon; theme?: TThemeColor; darknessTheme?: TDarkness; } @@ -212,8 +213,8 @@ export interface ITagProps { value?: string; size?: TSize; rounded?: boolean; - iconLeft?: TIcons; - iconRight?: TIcons; + iconLeft?: TIcon; + iconRight?: TIcon; theme?: TThemeColor; background?: TThemeColor; border?: TThemeColor; diff --git a/src/stories/components/Rating/Rating.stories.ts b/src/stories/components/Rating/Rating.stories.ts new file mode 100644 index 0000000..2efc991 --- /dev/null +++ b/src/stories/components/Rating/Rating.stories.ts @@ -0,0 +1,78 @@ +import type { Meta, StoryObj } from '@storybook/vue3'; + +import Rating from './Rating.vue'; + +const meta: Meta = { + title: 'Components/Rating', + component: Rating, + tags: ['autodocs'], + parameters: { + docs: { + description: { + component: 'A component that is used as a rating.', + }, + }, + }, + argTypes: { + label: { control: 'text' }, + padding: { control: 'text' }, + size: { control: 'select', options: ['small', 'normal', 'large', 'huge'] }, + textStyle: { control: 'select', options: ['bold', 'italic'] }, + iconPos: { control: 'select', options: ['left', 'top', 'right', 'bottom'] }, + width: { control: 'text' }, + darknessTheme: { control: 'select', options: ['100', '200', '300', '400', '500', '600', '700', '800', '900'] }, + darknessTextColor: { + control: 'select', + options: ['100', '200', '300', '400', '500', '600', '700', '800', '900'], + }, + theme: { + control: 'select', + options: [ + 'white', + 'blue', + 'sky', + 'cyan', + 'teal', + 'green', + 'yellow', + 'orange', + 'pink', + 'fuchsia', + 'purple', + 'indigo', + 'rose', + 'red', + 'black', + ], + }, + textColor: { + control: 'select', + options: [ + 'white', + 'blue', + 'sky', + 'cyan', + 'teal', + 'green', + 'yellow', + 'orange', + 'pink', + 'fuchsia', + 'purple', + 'indigo', + 'rose', + 'red', + 'black', + ], + }, + }, + args: {}, +} satisfies Meta; + +export default meta; + +type Story = StoryObj; + +export const Simple: Story = { + args: {}, +}; diff --git a/src/stories/components/Rating/Rating.vue b/src/stories/components/Rating/Rating.vue new file mode 100644 index 0000000..a97b830 --- /dev/null +++ b/src/stories/components/Rating/Rating.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/src/stories/components/SelectButton/SelectButton.vue b/src/stories/components/SelectButton/SelectButton.vue index 3d491f3..1d1f1b6 100644 --- a/src/stories/components/SelectButton/SelectButton.vue +++ b/src/stories/components/SelectButton/SelectButton.vue @@ -1,5 +1,5 @@ + + + + -- GitLab