From 3b4d6bf4f389cbb680e4bd5a0776e31d058b4195 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 9 Jan 2023 17:09:11 +0700 Subject: form create address --- src/pages/my/address/create.js | 108 ++++++++++++++++++++++++++++++++++++++--- src/pages/shop/checkout.js | 2 +- src/styles/globals.css | 13 +++++ 3 files changed, 116 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/pages/my/address/create.js b/src/pages/my/address/create.js index 458b1921..128da491 100644 --- a/src/pages/my/address/create.js +++ b/src/pages/my/address/create.js @@ -1,14 +1,75 @@ import AppBar from "../../../components/AppBar"; import Layout from "../../../components/Layout"; import WithAuth from "../../../components/WithAuth"; +import apiOdoo from "../../../helpers/apiOdoo"; +import ReactSelect from "react-select"; +import { useEffect, useState } from "react"; export default function CreateAddress() { + // Master Data + const [cities, setCities] = useState([]); + const [districts, setDistricts] = useState([]); + const [subDistricts, setSubDistricts] = useState([]); + + // Input Data + const [city, setCity] = useState(null); + const [district, setDistrict] = useState(null); + const [subDistrict, setSubDistrict] = useState(null); + const [formValue, setFormValue] = useState({}); + + useEffect(() => { + if (cities.length == 0) { + const loadCities = async () => { + let dataCities = await apiOdoo('GET', '/api/v1/city'); + setCities(dataCities); + }; + loadCities(); + } + }, [cities]); + + useEffect(() => { + setDistrict(null); + if (city) { + const loadDistricts = async () => { + let dataDistricts = await apiOdoo('GET', `/api/v1/district?city_id=${city.id}`); + setDistricts(dataDistricts); + }; + loadDistricts(); + } + }, [city]); + + useEffect(() => { + setSubDistrict(null); + if (district) { + const loadSubDistricts = async () => { + let dataSubDistricts = await apiOdoo('GET', `/api/v1/sub_district?district_id=${district.id}`); + console.log(dataSubDistricts); + setSubDistricts(dataSubDistricts); + }; + loadSubDistricts(); + } + }, [district]); + + const handleChange = (e) => { + setFormValue({ + ...formValue, + [e.target.name]: e.target.value + }); + }; + return (
+ + + + - - Kota + state.menuIsOpen || state.isFocused ? '!border-yellow_r-9' : '' }} + options={cities} + getOptionLabel={e => e.name} + getOptionValue={e => e.id} + onChange={(value) => setCity(value)} + value={city} + /> + + state.menuIsOpen || state.isFocused ? '!border-yellow_r-9' : '' }} + options={districts} + getOptionLabel={e => e.name} + getOptionValue={e => e.id} + onChange={(value) => setDistrict(value)} + value={district} + isDisabled={!city} + /> + + state.menuIsOpen || state.isFocused ? '!border-yellow_r-9' : '' }} + options={subDistricts} + getOptionLabel={e => e.name} + getOptionValue={e => e.id} + onChange={(value) => setSubDistrict(value)} + value={subDistrict} + isDisabled={!district} />

Terima Kasih atas Pembelian Anda

-

Details pembelian sudah kami kirimkan melalui email anda. Mohon dicek kembali. jika tidak menerima email anda dapat menghubungi kami disini.

+

Details pembelian sudah kami kirimkan melalui email anda. Mohon dicek kembali. jika tidak menerima email anda dapat menghubungi kami disini.

{ finishCheckout.name }

No. Transaksi

diff --git a/src/styles/globals.css b/src/styles/globals.css index fbaaf923..e90228bd 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -387,4 +387,17 @@ html, body { ease-linear duration-300 ; +} + +.form-select__placeholder { + @apply + !text-gray_r-9 + ; +} + +.form-select__control { + @apply + !shadow-none + !border-gray_r-7 + ; } \ No newline at end of file -- cgit v1.2.3