first task done

master
mahdi 3 years ago
parent 89c67d9ac8
commit ebea007b48
  1. 15
      package-lock.json
  2. 1
      package.json
  3. 6
      src/App.js
  4. 2
      src/components/alert/Alert.js
  5. 241
      src/components/testt/Testt.js
  6. 8
      src/redux/actions/modalActions.js
  7. 0
      src/redux/actions/types.js
  8. 1
      src/redux/index.js
  9. 46
      src/redux/modalBox/modalActions.js
  10. 18
      src/redux/modalBox/modalReducer.js
  11. 46
      src/redux/reducers/modalReducer.js
  12. 6
      src/redux/reducers/rootReducer.js
  13. 8
      src/redux/store.js
  14. 7
      yarn.lock

15
package-lock.json generated

@ -18,6 +18,7 @@
"react-scripts": "4.0.3", "react-scripts": "4.0.3",
"react-toastify": "^8.1.0", "react-toastify": "^8.1.0",
"redux": "^4.1.2", "redux": "^4.1.2",
"redux-thunk": "^2.4.0",
"styled-components": "^5.3.3", "styled-components": "^5.3.3",
"sweetalert": "^2.1.2", "sweetalert": "^2.1.2",
"sweetalert2": "^11.1.10", "sweetalert2": "^11.1.10",
@ -14887,6 +14888,14 @@
"@babel/runtime": "^7.9.2" "@babel/runtime": "^7.9.2"
} }
}, },
"node_modules/redux-thunk": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.0.tgz",
"integrity": "sha512-/y6ZKQNU/0u8Bm7ROLq9Pt/7lU93cT0IucYMrubo89ENjxPa7i8pqLKu6V4X7/TvYovQ6x01unTeyeZ9lgXiTA==",
"peerDependencies": {
"redux": "^4"
}
},
"node_modules/regenerate": { "node_modules/regenerate": {
"version": "1.4.2", "version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@ -30642,6 +30651,12 @@
"@babel/runtime": "^7.9.2" "@babel/runtime": "^7.9.2"
} }
}, },
"redux-thunk": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.0.tgz",
"integrity": "sha512-/y6ZKQNU/0u8Bm7ROLq9Pt/7lU93cT0IucYMrubo89ENjxPa7i8pqLKu6V4X7/TvYovQ6x01unTeyeZ9lgXiTA==",
"requires": {}
},
"regenerate": { "regenerate": {
"version": "1.4.2", "version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",

@ -13,6 +13,7 @@
"react-scripts": "4.0.3", "react-scripts": "4.0.3",
"react-toastify": "^8.1.0", "react-toastify": "^8.1.0",
"redux": "^4.1.2", "redux": "^4.1.2",
"redux-thunk": "^2.4.0",
"styled-components": "^5.3.3", "styled-components": "^5.3.3",
"sweetalert": "^2.1.2", "sweetalert": "^2.1.2",
"sweetalert2": "^11.1.10", "sweetalert2": "^11.1.10",

@ -53,9 +53,9 @@ function App() {
{/* <Header /> {/* <Header />
<Functionalities /> <Functionalities />
<Footer /> <Footer /> */}
<Alert /> {/* <Alert /> */}
<Toast /> {/* <Toast />
<SweetAlert /> */} <SweetAlert /> */}
</div> </div>
</div> </div>

@ -3,8 +3,6 @@ import Swal from "sweetalert2";
import withReactContent from "sweetalert2-react-content"; import withReactContent from "sweetalert2-react-content";
import "./alert.css"; import "./alert.css";
import undraw from "../../icons/undraw.png"; import undraw from "../../icons/undraw.png";
import { INFO_ALERT } from "../../redux";
import { connect } from "react-redux";
const Alert = () => { const Alert = () => {
// error1 // error1

@ -1,12 +1,237 @@
import React from "react"; import React from "react";
import "./testt.css"; import "./testt.css";
import { infoAlert } from "../../redux"; import { infoAlert } from "../../redux/actions/modalActions";
import { connect } from "react-redux"; import { connect } from "react-redux";
function Testt(props) { function Testt(props) {
return ( return (
<div> <div>
<button className="btn btn-danger btn-lg" onClick={props.infoAlert}> {/* 1 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
title: "اررور شماره 1",
text: "متن تستی توضیح بیشتر که برای کاربر نمایش خواهد داده شد و اینکه متن تستی است.",
confirmButtonText: "متوجه شدم",
showCloseButton: true,
showCancelButton: false,
customClass: {
title: "title-error-1",
closeButton: "close-button-1",
confirmButton: "confirm-button-1",
},
})
}
>
اررور 1
</button>
{/* 2 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
title: "اررور شماره 1",
text: "متن تستی توضیح بیشتر که برای کاربر نمایش خواهد داده شد و اینکه متن تستی است.",
confirmButtonText: "توضیح بیشتر",
showCancelButton: true,
cancelButtonText: "متوجه شدم",
showCloseButton: true,
customClass: {
title: "title-error-1",
closeButton: "close-button-1",
confirmButton: "confirm-button-1",
cancelButton: "cancle-button1",
},
})
}
>
اررور 1
</button>
{/* 3 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
title: "اررور شماره 1",
text: "متن تستی توضیح بیشتر که برای کاربر نمایش خواهد داده شد و اینکه متن تستی است.",
confirmButtonText: "توضیح بیشتر",
showCancelButton: true,
showCloseButton: true,
cancelButtonText: "متوجه شدم",
customClass: {
title: "title-error-2",
closeButton: "close-button-2",
confirmButton: "confirm-button-2",
cancelButton: "cancle-button2",
},
})
}
>
اررور 1
</button>
{/* 4 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
icon: "success",
title: "اررور شماره 1",
text: "متن تستی توضیح بیشتر که برای کاربر نمایش خواهد داده شد و اینکه متن تستی است.",
confirmButtonText: "توضیح بیشتر",
showCancelButton: true,
showCloseButton: false,
cancelButtonText: "متوجه شدم",
customClass: {
title: "title-error-4",
confirmButton: "confirm-button-2",
cancelButton: "cancle-button2",
popup: "alert-popup4",
},
})
}
>
اررور 4
</button>
{/* 5 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
input: "email",
inputPlaceholder: "ایمیل خود را اینجا بنویسید",
imageUrl: "https://unsplash.it/400/200",
imageAlt: "Custom image",
imageWidth: 400,
imageHeight: 200,
html: "<p> این یک پیام تستی است <span style='color:#3ee924;'> که میتوان استایل دلخواه با استفاده از کدهای اچ تی ام ال داد و من اول یه تگ پی گذاشتم و بعد داخل تگ یه اسپن گذاشتم و به این استایل اینلاین دادم</span></p>",
confirmButtonText: "عضو شوید",
showCancelButton: false,
showCloseButton: true,
cancelButtonText: "متوجه شدم",
customClass: {
confirmButton: "confirm-button-5",
input: "input-error-5",
closeButton: "close-button-2",
},
})
}
>
اررور 4
</button>
{/* 6 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
title: "اررور شماره 1",
text: "متن تستی توضیح بیشتر که برای کاربر نمایش خواهد داده شد و اینکه متن تستی است.",
confirmButtonText: "توضیح بیشتر",
showCancelButton: false,
showCloseButton: true,
customClass: {
title: "title-error-1",
closeButton: "close-button-6",
confirmButton: "confirm-button-1",
},
})
}
>
اررور 1
</button>
{/* 7 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
title: "اررور شماره 1",
text: "متن تستی توضیح بیشتر که برای کاربر نمایش خواهد داده شد و اینکه متن تستی است.",
confirmButtonText: "توضیح بیشتر",
showCancelButton: true,
cancelButtonText: "متوجه شدم",
showCloseButton: true,
customClass: {
title: "title-error-7",
closeButton: "close-button-7",
confirmButton: "confirm-button-7",
cancelButton: "cancle-button7",
},
})
}
>
اررور 1
</button>
{/* 8 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
icon: "error",
title: "اررور شماره 1",
text: "متن تستی توضیح بیشتر که برای کاربر نمایش خواهد داده شد و اینکه متن تستی است.",
confirmButtonText: "توضیح بیشتر",
showCancelButton: true,
showCloseButton: false,
cancelButtonText: "متوجه شدم",
customClass: {
title: "title-error-8",
confirmButton: "confirm-button-7",
cancelButton: "cancle-button7",
popup: "alert-popup8",
},
})
}
>
اررور 4
</button>
{/* 9 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
title: "این ارور بسیار مهم ",
html: "<p style='color:#fff;'>در این قسمت یک توضیح بسیار کوتاه یا عادی در مورد ارور نوشته خواهد شد. طراح سعی می کند تا این متن را بیشتر از حدانتظار بلند کند تا دیگران متوجه مفهوم شوند</p>",
confirmButtonText: "رد کردن",
showCloseButton: true,
showCancelButton: true,
cancelButtonText: "متوجه شدم",
footer: '<a href="">یک لینک در این قسمت است</a>',
customClass: {
title: "title-error-9",
closeButton: "close-button-9",
confirmButton: "confirm-button-9",
cancelButton: "cancle-button9",
popup: "alert-popup9",
footer: "footer-error-9",
},
})
}
>
اررور 1
</button>
{/* 10 */}
<button
className="btn btn-danger btn-lg"
onClick={() =>
props.customAlert({
title: "این ارور بسیار مهم ",
html: "<p style='color:#fff;'>در این قسمت یک توضیح بسیار کوتاه یا عادی در مورد ارور نوشته خواهد شد. طراح سعی می کند تا این متن را بیشتر از حدانتظار بلند کند تا دیگران متوجه مفهوم شوند</p>",
confirmButtonText: "رد کردن",
showCloseButton: true,
showCancelButton: true,
cancelButtonText: "متوجه شدم",
footer: '<a href="">یک لینک در این قسمت است</a>',
customClass: {
title: "title-error-9",
closeButton: "close-button-10",
confirmButton: "confirm-button-10",
cancelButton: "cancle-button10",
popup: "alert-popup10",
footer: "footer-error-9",
},
})
}
>
اررور 1 اررور 1
</button> </button>
</div> </div>
@ -14,15 +239,7 @@ function Testt(props) {
} }
const mapStateToProps = (state) => { const mapStateToProps = (state) => {
return { return {};
showCloseButton: state.showCloseButton,
};
};
const mapDispatchToProps = (dispatch) => {
return {
infoAlert: () => dispatch(infoAlert()),
};
}; };
export default connect(mapStateToProps, mapDispatchToProps)(Testt); export default connect(mapStateToProps, { customAlert: infoAlert })(Testt);

@ -0,0 +1,8 @@
import { INFO_ALERT } from "./types";
export const infoAlert = (data) => (dispatch) => {
dispatch({
type: INFO_ALERT,
data: data,
});
};

@ -1 +0,0 @@
export { infoAlert } from "./modalBox/modalActions";

@ -1,46 +0,0 @@
import { INFO_ALERT } from "./modalTypes";
import Swal from "sweetalert2";
// export const infoAlert = () => {
// return {
// type: INFO_ALERT,
// title: "",
// text: "",
// confirmButton: true,
// confirmButtonText: "",
// showCloseButton: true,
// showCancelButton: false,
// cancelButtonText: "",
// };
// };
// export const infoAlert = () => {
// Swal.fire({
// title: "عنوان متن ارور",
// text: "در این قسمت یک توضیح بسیار کوتاه یا عادی در مورد ارور نوشته خواهد شد. طراح سعی می کند تا این متن را بیشتر از حدانتظار بلند کند تا دیگران متوجه مفهوم شوند",
// confirmButtonText: "متوجه شدم",
// showCloseButton: true,
// customClass: {
// title: "title-error-1",
// closeButton: "close-button-1",
// confirmButton: "confirm-button-1",
// },
// });
// };
export const infoAlert = () => {
Swal.fire({
title: "عنوان متن ارور",
text: "در این قسمت یک توضیح بسیار کوتاه یا عادی در مورد ارور نوشته خواهد شد. طراح سعی می کند تا این متن را بیشتر از حدانتظار بلند کند تا دیگران متوجه مفهوم شوند",
confirmButtonText: "متوجه شدم",
showCloseButton: true,
customClass: {
title: "title-error-1",
closeButton: "close-button-1",
confirmButton: "confirm-button-1",
},
});
return {
type: INFO_ALERT,
};
};

@ -1,18 +0,0 @@
import { INFO_ALERT } from "./modalTypes";
const initialState = {
showCloseButton: false,
};
const modalReducer = (state = initialState, action) => {
switch (action.type) {
case INFO_ALERT:
return {
...state,
};
default:
return state;
}
};
export default modalReducer;

@ -0,0 +1,46 @@
import { INFO_ALERT } from "../actions/types";
import Swal from "sweetalert2";
const initialState = {
showCloseButton: false,
};
const modalReducer = (state = initialState, action) => {
const { type, data } = action;
switch (type) {
case INFO_ALERT:
Swal.fire({
icon: data.icon,
title: data.title,
text: data.text,
input: data.input,
inputPlaceholder: data.inputPlaceholder,
imageUrl: data.imageUrl,
imageAlt: data.imageAlt,
imageWidth: data.imageWidth,
imageHeight: data.imageHeight,
confirmButtonText: data.confirmButtonText,
showCloseButton: data.showCloseButton,
showCancelButton: data.showCancelButton,
cancelButtonText: data.cancelButtonText,
html: data.html,
footer: data.footer,
customClass: {
title: data.customClass.title,
closeButton: data.customClass.closeButton,
confirmButton: data.customClass.confirmButton,
cancelButton: data.customClass.cancelButton,
popup: data.customClass.popup,
input: data.customClass.input,
footer: data.customClass.footer,
},
});
return {
...state,
};
default:
return state;
}
};
export default modalReducer;

@ -0,0 +1,6 @@
import modalReducer from "./modalReducer";
import { combineReducers } from "redux";
const rootReducer = combineReducers({ modalReducer: modalReducer });
export default rootReducer;

@ -1,6 +1,6 @@
import { createStore } from "redux"; import { createStore, applyMiddleware } from "redux";
import modalReducer from "./modalBox/modalReducer"; import thunk from "redux-thunk";
import rootReducer from "./reducers/rootReducer";
const store = createStore(modalReducer);
const store = createStore(rootReducer, applyMiddleware(thunk));
export default store; export default store;

@ -9604,7 +9604,12 @@
"indent-string" "^4.0.0" "indent-string" "^4.0.0"
"strip-indent" "^3.0.0" "strip-indent" "^3.0.0"
"redux@^4.0.0", "redux@^4.1.2": "redux-thunk@^2.4.0":
"integrity" "sha512-/y6ZKQNU/0u8Bm7ROLq9Pt/7lU93cT0IucYMrubo89ENjxPa7i8pqLKu6V4X7/TvYovQ6x01unTeyeZ9lgXiTA=="
"resolved" "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.0.tgz"
"version" "2.4.0"
"redux@^4", "redux@^4.0.0", "redux@^4.1.2":
"integrity" "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==" "integrity" "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw=="
"resolved" "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz" "resolved" "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz"
"version" "4.1.2" "version" "4.1.2"

Loading…
Cancel
Save