diff --git a/MODAL_USAGE.md b/MODAL_USAGE.md new file mode 100644 index 0000000..071d9b4 --- /dev/null +++ b/MODAL_USAGE.md @@ -0,0 +1,409 @@ +# Modal Component + +Modal component tương tự như Modal của Ant Design, được tạo cho React Native/Expo. + +## Cài đặt + +Component này sử dụng `@expo/vector-icons` cho các icon. Đảm bảo bạn đã cài đặt: + +```bash +npx expo install @expo/vector-icons +``` + +## Import + +```tsx +import Modal from "@/components/ui/modal"; +``` + +## Các tính năng chính + +### 1. Basic Modal + +```tsx +import React, { useState } from "react"; +import { View, Text, Button } from "react-native"; +import Modal from "@/components/ui/modal"; + +export default function BasicExample() { + const [open, setOpen] = useState(false); + + return ( + + + {sosData?.active ? t("home.sos.active") : t("home.sos.inactive")} + { + open={showConfirmSosDialog} + onCancel={() => { setShowConfirmSosDialog(false); setSelectedSosMessage(null); setCustomMessage(""); setErrors({}); }} + okText={t("home.sos.confirm")} + cancelText={t("home.sos.cancel")} + title={t("home.sos.title")} + centered + onOk={handleConfirmSos} > - - - - - {t("home.sos.title")} - - - - - {/* Dropdown Nội dung SOS */} - - {t("home.sos.content")} - setShowDropdown(!showDropdown)} - > - - {selectedSosMessage !== null - ? sosOptions.find((opt) => opt.ma === selectedSosMessage) - ?.moTa || t("home.sos.selectReason") - : t("home.sos.selectReason")} - - - - {errors.sosMessage && ( - {errors.sosMessage} - )} - + {/* Select Nội dung SOS */} + + {t("home.sos.content")} - {/* Input Custom Message nếu chọn "Khác" */} - {selectedSosMessage === 999 && ( - - {t("home.sos.statusInput")} - { - setCustomMessage(text); - if (text.trim() !== "") { - setErrors((prev) => { - const newErrors = { ...prev }; - delete newErrors.customMessage; - return newErrors; - }); - } - }} - multiline - numberOfLines={4} - /> - {errors.customMessage && ( - {errors.customMessage} - )} - - )} - - - - -