diff --git a/pages/index.tsx b/pages/index.tsx
index 0ddbcfe80..e428ff533 100644
--- a/pages/index.tsx
+++ b/pages/index.tsx
@@ -1,10 +1,24 @@
import { Layout } from 'src/components/common';
import { HomeBanner, HomeCategories, HomeCollection, HomeCTA, HomeFeature, HomeRecipe, HomeSubscribe, HomeVideo } from 'src/components/modules/home';
+import {SelectCommon} from 'src/components/common'
+
+const OPTION_SORT = [
+ {
+ name: "By Name"
+ },
+ {
+ name: "Price (High to Low)"
+ },
+ {
+ name: "On Sale"
+ }
+]
export default function Home() {
return (
<>
+ {/*
@@ -12,7 +26,9 @@ export default function Home() {
-
+ */}
+ Sort By
+ Sort By
// todo: uncomment
{/* */}
diff --git a/src/components/common/SelectCommon/SelectCommon.module.scss b/src/components/common/SelectCommon/SelectCommon.module.scss
index dcb9120da..d91b1831e 100644
--- a/src/components/common/SelectCommon/SelectCommon.module.scss
+++ b/src/components/common/SelectCommon/SelectCommon.module.scss
@@ -1,32 +1,69 @@
@import "../../../styles/utilities";
.select{
- @apply rounded-lg border-solid;
- display: flex;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- padding: 1.2rem 1.6rem;
+ background-color: var(--white);
&.base{
- width: 18.6rem;
- height: 4.8rem;
+ width: 20.6rem;
+ .selectTrigger{
+ width: 20.6rem;
+ padding: 1.2rem 1.6rem;
+ }
}
&.large{
width: 34.25rem;
- height: 5.6rem;
+ .selectTrigger{
+ width: 34.25rem;
+ padding: 1.6rem 1.6rem;
+ }
}
&.default{
- @apply border;
+ .selectTrigger{
+ @apply border-solid border border-current;
+ }
+ }
+ &.custom{
+ .selectTrigger{
+ @apply border-2;
+ border-color: var(--border-line);
+ color: var(--text-label);
+ }
+ }
+ &.isActive{
+ .selectOptionWrapper{
+ @apply block;
+ }
+ }
+}
+.selectTrigger{
+ @apply outline-none flex justify-between;
+ color: var(--text-active);
+ border-radius: 0.8rem;
+
+}
+.selectOptionWrapper{
+ @apply outline-none hidden z-10 absolute;
+ border-radius: 0.8rem;
+ background-color: var(--white);
+ padding: 0.4rem 0rem 0.4rem 0rem;
+ margin-top: 0.6rem;
+ &.base{
+ width: 20.6rem;
+ }
+ &.large{
+ width: 34.25rem;
+ }
+ &.default{
+ @apply border-solid border border-current;
}
&.custom{
@apply border-2;
border-color: var(--border-line);
color: var(--text-label);
}
- .option{
- &:hover{
- background-color: black;
- }
+ &.active{
+ @apply hidden;
}
}
+
+
diff --git a/src/components/common/SelectCommon/SelectCommon.tsx b/src/components/common/SelectCommon/SelectCommon.tsx
index 8360a700f..5bb3d15d6 100644
--- a/src/components/common/SelectCommon/SelectCommon.tsx
+++ b/src/components/common/SelectCommon/SelectCommon.tsx
@@ -1,26 +1,75 @@
import s from './SelectCommon.module.scss'
import classNames from 'classnames'
+import { useState, useRef, useEffect } from 'react'
+import { IconVectorDown } from 'src/components/icons'
+import SelectOption from './SelectOption/SelectOption'
interface Props {
- placeHolder? : string,
+ children? : React.ReactNode,
size?: 'base' | 'large',
type?: 'default' | 'custom',
option: {name: string}[],
}
-const SelectCommon = ({ type = 'default', size = 'base', option, placeHolder }: Props) => {
- return(
-
+ else{
+ setActive(false)
+ }
+ }
+ document.addEventListener('click', handleClick)
+ return () => {
+ document.removeEventListener('click', handleClick)
+ }
+ }, [ref])
+
+ const changeActiveStatus = () => {
+ setActive(!isActive)
+ }
+
+ const changeSelectedName = (item:string) => {
+ setSelectedName(item)
+ }
+ return(
+ <>
+
+
{selectedName}
+
+
+ {
+ option.map(item =>
+
+ )
+ }
+
+
+ >
)
}
diff --git a/src/components/common/SelectCommon/SelectOption/SelectOption.module.scss b/src/components/common/SelectCommon/SelectOption/SelectOption.module.scss
new file mode 100644
index 000000000..5448f9879
--- /dev/null
+++ b/src/components/common/SelectCommon/SelectOption/SelectOption.module.scss
@@ -0,0 +1,17 @@
+@import "../../../../styles/utilities";
+
+.selectOption {
+ @apply outline-none;
+ background-color: var(--white);
+ &.base{
+ width: 20.4rem;
+ padding: 0.8rem 1.6rem;
+ }
+ &.large{
+ width: 33.75rem;
+ padding: 0.8rem 1.6rem;
+ }
+ &:hover{
+ background-color: var(--gray);
+ }
+}
\ No newline at end of file
diff --git a/src/components/common/SelectCommon/SelectOption/SelectOption.tsx b/src/components/common/SelectCommon/SelectOption/SelectOption.tsx
new file mode 100644
index 000000000..54877d5fe
--- /dev/null
+++ b/src/components/common/SelectCommon/SelectOption/SelectOption.tsx
@@ -0,0 +1,25 @@
+import s from './SelectOption.module.scss'
+import classNames from 'classnames'
+
+interface Props{
+ onClick: (value: string) => void,
+ itemName: string,
+ size: 'base' | 'large',
+}
+
+const SelectOption = ({onClick, itemName, size}: Props) => {
+
+ const changeName = () => {
+ onClick(itemName)
+ }
+ return(
+ {itemName}
+ )
+}
+
+export default SelectOption
\ No newline at end of file
diff --git a/src/components/icons/IconVectorDown.tsx b/src/components/icons/IconVectorDown.tsx
new file mode 100644
index 000000000..019fc2806
--- /dev/null
+++ b/src/components/icons/IconVectorDown.tsx
@@ -0,0 +1,21 @@
+
+
+const IconVectorDown = ({ ...props }) => {
+ return (
+
+ )
+ }
+
+ export default IconVectorDown
\ No newline at end of file
diff --git a/src/components/icons/index.ts b/src/components/icons/index.ts
index d71c1bbec..949b1f3b1 100644
--- a/src/components/icons/index.ts
+++ b/src/components/icons/index.ts
@@ -9,6 +9,7 @@ export { default as IconHome } from './IconHome'
export { default as IconShopping } from './IconShopping'
export { default as IconHeart } from './IconHeart'
export { default as IconVector } from './IconVector'
+export { default as IconVectorDown } from './IconVectorDown'
export { default as IconFacebookColor } from './IconFacebookColor'
export { default as IconGoogleColor } from './IconGoogleColor'
export { default as IconApple } from './IconApple'