diff --git a/package.json b/package.json
index 51dd84c..d2a4ed1 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
"date-fns": "^2.28.0",
"react": "^17.0.2",
"react-apexcharts": "^1.3.9",
+ "react-beautiful-dnd": "^13.1.0",
"react-dom": "^17.0.2",
"react-icons": "^4.3.1",
"react-indiana-drag-scroll": "^2.1.0",
diff --git a/src/App.js b/src/App.js
index 04db084..c0c7ef1 100644
--- a/src/App.js
+++ b/src/App.js
@@ -82,6 +82,7 @@ import CardDesign1 from "./components/CardDesign1";
import CustomToast from "./components/CustomToast";
import IconText from "./components/IconText";
import CardDesign2 from "./components/CardDesign2";
+import ButtonDivTag from "./components/ButtonDivTag";
// import Digikala from "./components/Digikala/ImageSlider";
@@ -164,6 +165,7 @@ function App() {
{/* */}
{/* */}
{/* */}
+ {/* */}
{/*
diff --git a/src/components/ButtonDivTag/index.js b/src/components/ButtonDivTag/index.js
new file mode 100644
index 0000000..99dcea9
--- /dev/null
+++ b/src/components/ButtonDivTag/index.js
@@ -0,0 +1,22 @@
+import React from "react";
+
+const ButtonDivTag = ({ className, text, onClick, props }) => {
+ console.log(props);
+ return (
+
+ {text}
+
+ );
+};
+
+export default ButtonDivTag;
+
+ButtonDivTag.defaultProps = {
+ className:
+ "bg-darkGreenBg hover:bg-gray-900 textColor border border-lightBlueBorderColor border-b-4 border-lightBlueBorderColor rounded text-sm px-4 py-4",
+ text: "اطلاعات بیشتر",
+};
diff --git a/src/components/CardDesign2/index.js b/src/components/CardDesign2/index.js
index 55b6262..609a4ed 100644
--- a/src/components/CardDesign2/index.js
+++ b/src/components/CardDesign2/index.js
@@ -1,9 +1,24 @@
-import React from "react";
+import React, { useState } from "react";
+
import IconText from "../IconText";
-import Button from "../Button";
+import ButtonDivTag from "../ButtonDivTag";
import TitleSubtitle from "../TitleSubtitle";
+import { DragDropContext, Droppable, Draggable } from "react-beautiful-dnd";
+
const CardDesign2 = ({ buttons }) => {
+ const [dokmeha, updateDokmeha] = useState(buttons);
+
+ function handleOnDragEnd(result) {
+ if (!result.destination) return;
+
+ const items = Array.from(dokmeha);
+ const [reorderedItem] = items.splice(result.source.index, 1);
+ items.splice(result.destination.index, 0, reorderedItem);
+
+ updateDokmeha(items);
+ }
+
return (
{
titleDividerWidth={"w-1.5"}
/>
-
- {buttons.map((btn) => (
-
- ))}
-
+
+
+ {(provided) => (
+
+ {dokmeha.map((btn, index) => (
+
+ {(provided) => (
+
+
+
+ )}
+
+ ))}
+ {provided.placeholder}
+
+ )}
+
+
);
};
@@ -32,34 +75,42 @@ export default CardDesign2;
CardDesign2.defaultProps = {
buttons: [
{
+ id: 1,
name: "پنجره",
className: "bg-[#FFF7BF]",
},
{
+ id: 2,
name: "کمک اولیه",
className: "bg-[#DBFDFF]",
},
{
+ id: 3,
name: "درب خروجی",
className: "bg-[#828282]",
},
{
+ id: 4,
name: "سیستم سرمایش",
className: "bg-[#F6FFEB]",
},
{
+ id: 5,
name: "آب سردکن",
className: "bg-[#F0FFB4]",
},
{
+ id: 6,
name: "سرویس بهداشتی",
className: "bg-[#FFDD8E]",
},
{
+ id: 7,
name: "حمام",
className: "bg-[#EEEFFF]",
},
{
+ id: 8,
name: "تخت",
className: "bg-[#FFF5EE]",
},
diff --git a/yarn.lock b/yarn.lock
index d4f48c5..49e4733 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3451,6 +3451,13 @@ css-blank-pseudo@^3.0.0:
dependencies:
postcss-selector-parser "^6.0.7"
+css-box-model@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1"
+ integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==
+ dependencies:
+ tiny-invariant "^1.0.6"
+
css-declaration-sorter@^6.0.3:
version "6.1.3"
resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz"
@@ -6320,6 +6327,11 @@ memfs@^3.1.2, memfs@^3.2.2:
dependencies:
fs-monkey "1.0.3"
+memoize-one@^5.1.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
+ integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
+
merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
@@ -7537,6 +7549,11 @@ quick-lru@^5.1.1:
resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+raf-schd@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a"
+ integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==
+
raf@^3.4.0, raf@^3.4.1:
version "3.4.1"
resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz"
@@ -7585,6 +7602,19 @@ react-app-polyfill@^3.0.0:
regenerator-runtime "^0.13.9"
whatwg-fetch "^3.6.2"
+react-beautiful-dnd@^13.1.0:
+ version "13.1.0"
+ resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.1.0.tgz#ec97c81093593526454b0de69852ae433783844d"
+ integrity sha512-aGvblPZTJowOWUNiwd6tNfEpgkX5OxmpqxHKNW/4VmvZTNTbeiq7bA3bn5T+QSF2uibXB0D1DmJsb1aC/+3cUA==
+ dependencies:
+ "@babel/runtime" "^7.9.2"
+ css-box-model "^1.2.0"
+ memoize-one "^5.1.1"
+ raf-schd "^4.0.2"
+ react-redux "^7.2.0"
+ redux "^4.0.4"
+ use-memo-one "^1.1.1"
+
react-dev-utils@^12.0.0:
version "12.0.0"
resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0.tgz"
@@ -7666,6 +7696,18 @@ react-lifecycles-compat@^3.0.4:
resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz"
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
+react-redux@^7.2.0:
+ version "7.2.8"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de"
+ integrity sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ "@types/react-redux" "^7.1.20"
+ hoist-non-react-statics "^3.3.2"
+ loose-envify "^1.4.0"
+ prop-types "^15.7.2"
+ react-is "^17.0.2"
+
react-redux@^7.2.6:
version "7.2.6"
resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz"
@@ -7881,7 +7923,7 @@ redux-thunk@^2.4.1:
resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz"
integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==
-redux@^4.0.0, redux@^4.1.2:
+redux@^4.0.0, redux@^4.0.4, redux@^4.1.2:
version "4.1.2"
resolved "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz"
integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==
@@ -8851,6 +8893,11 @@ timsort@^0.3.0:
resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+tiny-invariant@^1.0.6:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9"
+ integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==
+
tmp@^0.2.1:
version "0.2.1"
resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz"
@@ -9084,6 +9131,11 @@ use-draggable-scroll@^0.1.0:
resolved "https://registry.npmjs.org/use-draggable-scroll/-/use-draggable-scroll-0.1.0.tgz"
integrity sha512-mX6nT3cUqOTtA+8QUH9HfdKtzI6Oquj9QIB0wALWZYmWogNQ746MaUcmqKOKCIlt2UH6egxhSKNPiSlfEqmKhA==
+use-memo-one@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.2.tgz#0c8203a329f76e040047a35a1197defe342fab20"
+ integrity sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==
+
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"