diff --git a/.gitignore b/.gitignore
index ada6753..2f2eb3b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,6 @@
node_modules
.cache
dist
-storybook-static
\ No newline at end of file
+storybook-static
+session.vim
+
diff --git a/example/index.tsx b/example/index.tsx
index 5ed0d2a..1783181 100644
--- a/example/index.tsx
+++ b/example/index.tsx
@@ -1,32 +1,28 @@
import 'react-app-polyfill/ie11';
import * as React from 'react';
import * as ReactDOM from 'react-dom';
-import { IconButton } from '../';
-import { Tooltip } from '../';
+import { Select, Tooltip } from '../';
+
+const options = [
+ { value: 'chocolate', label: 'Chocolate' },
+ { value: 'strawberry', label: 'Strawberry' },
+ { value: 'vanilla', label: 'Vanilla' },
+];
const App = () => {
+ const [value, setValue] = React.useState('');
+
return (
-
Tooltips
-
-
- Tooltip on the Top
-
-
-
-
- Tooltip on the Bottom
-
-
-
-
- Tooltip on the Left
-
-
-
-
- Tooltip on the Right
-
+
);
};
diff --git a/package-lock.json b/package-lock.json
index f7551f3..74c1b8c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7638,9 +7638,9 @@
}
},
"arg": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.0.tgz",
- "integrity": "sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz",
+ "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==",
"dev": true
},
"argparse": {
@@ -9359,9 +9359,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001228",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz",
- "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==",
+ "version": "1.0.30001319",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz",
+ "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==",
"dev": true
},
"capture-exit": {
@@ -21412,6 +21412,12 @@
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true
},
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
"picomatch": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
@@ -24896,6 +24902,12 @@
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
},
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "dev": true
+ },
"source-map-resolve": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
@@ -25503,31 +25515,31 @@
}
},
"tailwindcss": {
- "version": "npm:@tailwindcss/postcss7-compat@2.2.4",
- "resolved": "https://registry.npmjs.org/@tailwindcss/postcss7-compat/-/postcss7-compat-2.2.4.tgz",
- "integrity": "sha512-lFIBdD1D2w3RgHFg7kNB7U5LOlfbd+KXTzcLyC/RlQ9eVko6GjNCKpN/kdmfF9wiGxbSDT/3mousXeMZdOOuBg==",
+ "version": "npm:@tailwindcss/postcss7-compat@2.2.17",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/postcss7-compat/-/postcss7-compat-2.2.17.tgz",
+ "integrity": "sha512-3h2svqQAqYHxRZ1KjsJjZOVTQ04m29LjfrLjXyZZEJuvUuJN+BCIF9GI8vhE1s0plS0mogd6E6YLg6mu4Wv/Vw==",
"dev": true,
"requires": {
- "@fullhuman/postcss-purgecss": "^3.1.3",
- "arg": "^5.0.0",
+ "arg": "^5.0.1",
"autoprefixer": "^9",
"bytes": "^3.0.0",
- "chalk": "^4.1.1",
+ "chalk": "^4.1.2",
"chokidar": "^3.5.2",
- "color": "^3.1.3",
- "cosmiconfig": "^7.0.0",
+ "color": "^4.0.1",
+ "cosmiconfig": "^7.0.1",
"detective": "^5.2.0",
- "didyoumean": "^1.2.1",
+ "didyoumean": "^1.2.2",
"dlv": "^1.1.3",
- "fast-glob": "^3.2.5",
+ "fast-glob": "^3.2.7",
"fs-extra": "^10.0.0",
- "glob-parent": "^6.0.0",
+ "glob-parent": "^6.0.1",
"html-tags": "^3.1.0",
+ "is-color-stop": "^1.1.0",
"is-glob": "^4.0.1",
"lodash": "^4.17.21",
"lodash.topath": "^4.5.2",
"modern-normalize": "^1.1.0",
- "node-emoji": "^1.8.1",
+ "node-emoji": "^1.11.0",
"normalize-path": "^3.0.0",
"object-hash": "^2.2.0",
"postcss": "^7",
@@ -25538,6 +25550,7 @@
"postcss-selector-parser": "^6.0.6",
"postcss-value-parser": "^4.1.0",
"pretty-hrtime": "^1.0.3",
+ "purgecss": "^4.0.3",
"quick-lru": "^5.1.1",
"reduce-css-calc": "^2.1.8",
"resolve": "^1.20.0",
@@ -25563,9 +25576,9 @@
}
},
"chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
@@ -25573,9 +25586,9 @@
}
},
"chokidar": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
- "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"dev": true,
"requires": {
"anymatch": "~3.1.2",
@@ -25599,6 +25612,16 @@
}
}
},
+ "color": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.1.tgz",
+ "integrity": "sha512-MFJr0uY4RvTQUKvPq7dh9grVOTYSFeXja2mBXioCGjnjJoXrAp9jJ1NQTDR73c9nwBSAQiNKloKl5zq9WB9UPw==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ }
+ },
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -25614,10 +25637,26 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "color-string": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz",
+ "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "dev": true
+ },
"cosmiconfig": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
- "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
+ "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
"dev": true,
"requires": {
"@types/parse-json": "^4.0.0",
@@ -25627,6 +25666,36 @@
"yaml": "^1.10.0"
}
},
+ "didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ }
+ }
+ },
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -25637,9 +25706,9 @@
}
},
"fs-extra": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
- "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz",
+ "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==",
"dev": true,
"requires": {
"graceful-fs": "^4.2.0",
@@ -25648,12 +25717,23 @@
}
},
"glob-parent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz",
- "integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
"requires": {
- "is-glob": "^4.0.1"
+ "is-glob": "^4.0.3"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ }
}
},
"has-flag": {
@@ -25689,11 +25769,44 @@
}
},
"lilconfig": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz",
- "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
+ "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
"dev": true
},
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "dependencies": {
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true
+ }
+ }
+ },
+ "nanoid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz",
+ "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==",
+ "dev": true
+ },
+ "node-emoji": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
+ "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.21"
+ }
+ },
"object-hash": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
@@ -25713,16 +25826,40 @@
}
},
"postcss-load-config": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz",
- "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
"dev": true,
"requires": {
- "import-cwd": "^3.0.0",
- "lilconfig": "^2.0.3",
+ "lilconfig": "^2.0.5",
"yaml": "^1.10.2"
}
},
+ "purgecss": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz",
+ "integrity": "sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==",
+ "dev": true,
+ "requires": {
+ "commander": "^8.0.0",
+ "glob": "^7.1.7",
+ "postcss": "^8.3.5",
+ "postcss-selector-parser": "^6.0.6"
+ },
+ "dependencies": {
+ "postcss": {
+ "version": "8.4.12",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
+ "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
+ "dev": true,
+ "requires": {
+ "nanoid": "^3.3.1",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ }
+ }
+ },
"readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
diff --git a/src/components/Select/ArrowDropDown.tsx b/src/components/Select/ArrowDropDown.tsx
new file mode 100644
index 0000000..f9a20d7
--- /dev/null
+++ b/src/components/Select/ArrowDropDown.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+
+const DropDown = () => {
+ return (
+
+ );
+};
+
+export default DropDown;
diff --git a/src/components/Select/CheckBox.tsx b/src/components/Select/CheckBox.tsx
new file mode 100644
index 0000000..4719416
--- /dev/null
+++ b/src/components/Select/CheckBox.tsx
@@ -0,0 +1,42 @@
+import React, { FC } from 'react';
+
+interface CheckBoxProps {
+ className?: string;
+ checked: boolean;
+}
+
+const CheckBox: FC = ({ className, checked }) => {
+ return (
+
+ {checked ? (
+
+ ) : (
+
+ )}
+
+ );
+};
+
+export default CheckBox;
diff --git a/src/components/Select/SelectComponent.tsx b/src/components/Select/SelectComponent.tsx
new file mode 100644
index 0000000..2a47d43
--- /dev/null
+++ b/src/components/Select/SelectComponent.tsx
@@ -0,0 +1,389 @@
+import React, {
+ FC,
+ MouseEventHandler,
+ useState,
+ useEffect,
+ useRef,
+} from 'react';
+
+import CheckBox from './CheckBox';
+
+import searchFor from '../../utils/searchObjectValues';
+
+interface ArrowDownProps {
+ className?: string;
+ rotate?: string;
+ disabled?: boolean;
+}
+
+const ArrowDown: FC = ({ className, rotate, disabled }) => {
+ return (
+
+ );
+};
+
+interface ClearIndicatorProps {
+ className?: string;
+ onClick: MouseEventHandler;
+ size?: 'comfortable' | 'compact';
+}
+
+const ClearIndicator: FC = ({
+ className,
+ onClick,
+ size,
+}) => {
+ return (
+
+ );
+};
+
+interface CheckedIndicatorProps {
+ className?: string;
+}
+
+const CheckedIndicator: FC = ({ className }) => {
+ return (
+
+ );
+};
+
+interface CloseXProps {
+ className?: string;
+ onClick?: MouseEventHandler;
+}
+
+const CloseX: FC = ({ className, onClick }) => {
+ return (
+
+ );
+};
+
+{
+ /**/
+}
+
+// types
+type Option = {
+ value: string;
+ label: string;
+};
+
+{
+ /*type Selecteds = {
+
+}*/
+}
+
+function useOutsideHandleDisableActive(ref: any, setActive: Function) {
+ useEffect(() => {
+ function handleClickOutside(event: any) {
+ if (ref.current && !ref.current.contains(event.target)) {
+ setActive(false);
+ }
+ }
+ document.addEventListener('mousedown', handleClickOutside);
+ return () => {
+ document.removeEventListener('mousedown', handleClickOutside);
+ };
+ }, [ref]);
+}
+
+interface SelectComponentProps {
+ size?: 'comfortable' | 'compact';
+ style?: any;
+ className?: any;
+ full?: boolean;
+ disabled?: boolean;
+ id?: string;
+ options: Array