Merge branch 'feature-product' into development
WMS API/ECOMMERCE/pipeline/head This commit looks good Details

This commit is contained in:
Bayu Lukman Yusuf 2026-02-26 16:16:37 +07:00
commit 7aa57f6082
2 changed files with 84 additions and 85 deletions

View File

@ -122,7 +122,7 @@
<div class="col-sm-6">
<div class="position-relative">
<label class="form-label">{{ __('addresses.phone') }}</label>
<input type="tel" class="form-control new-phone" required>
<input type="number" class="form-control new-phone" required>
<div class="invalid-feedback">{{ __('addresses.please_enter_phone') }}</div>
</div>
</div>
@ -169,7 +169,7 @@
<div class="col-sm-6">
<div class="position-relative">
<label class="form-label">{{ __('addresses.zip_code') }}</label>
<input type="text" class="form-control new-zip" required>
<input type="number" class="form-control new-zip" required>
<div class="invalid-feedback">{{ __('addresses.please_enter_zip_code') }}</div>
</div>
</div>
@ -1066,7 +1066,7 @@
// Get postal code
const zipInput = isNewAddress ?
form.querySelector('#new-zip') : form.querySelector('.postal_code');
form.querySelector('.new-zip') : form.querySelector('.postal_code');
if (zipInput) submitData.postal_code = zipInput.value;
// Get latitude
@ -1122,9 +1122,34 @@
if (isNewAddress) {
// Close modal and reload page
setTimeout(() => {
const modal = bootstrap.Modal.getInstance(newAddressModal);
if (modal) modal.hide();
reloadAddresses();
// Try multiple methods to close the modal
try {
// Method 1: Using Bootstrap 5 API if available
if (typeof bootstrap !== 'undefined' && bootstrap.Modal) {
const modal = bootstrap.Modal.getInstance(newAddressModal);
if (modal) modal.hide();
} else {
// Method 2: Using jQuery if available
if (typeof $ !== 'undefined') {
$(newAddressModal).modal('hide');
} else {
// Method 3: Using native DOM manipulation
newAddressModal.style.display = 'none';
document.body.classList.remove('modal-open');
const backdrop = document.querySelector('.modal-backdrop');
if (backdrop) backdrop.remove();
}
}
} catch (error) {
console.warn('Error closing modal:', error);
// Fallback: hide modal manually
newAddressModal.style.display = 'none';
}
// Refresh page after successful submission
setTimeout(() => {
window.location.reload();
}, 500);
}, 1500);
} else {
// Close the edit form and show preview after delay
@ -1143,6 +1168,7 @@
reloadAddresses();
}, 2000);
}
} else {
// Show error message in form
const errorElement = form.querySelector(isNewAddress ?

View File

@ -107,62 +107,30 @@
<a type="button" href="{{ route('addresses') }}"
class="btn btn-outline-primary btn-sm">Edit</a>
</div>
<div class="row g-3">
<div class="col-md-6">
<label for="firstName"
class="form-label">{{ __('checkout.first_name') }}</label>
<input type="text" class="form-control" id="firstName" readonly
style="border: none; background-color: #f8f9fa;">
<div class="row g-1">
<div>
<span id="firstName"></span>
(<span id="phone"></span>)
</div>
{{-- <div class="col-md-6">
<label for="lastName"
class="form-label">{{ __('checkout.last_name') }}</label>
<input type="text" class="form-control" id="lastName" readonly
style="border: none; background-color: #f8f9fa;">
</div> --}}
<div class="col-12">
<label for="phone"
class="form-label">{{ __('checkout.phone') }}</label>
<input type="tel" class="form-control" id="phone" readonly
style="border: none; background-color: #f8f9fa;">
<div id="address"></div>
<div>
<span id="city"></span>,
<span id="state"></span>, <span id="zip"></span>
</div>
<div class="col-12">
<label for="address"
class="form-label">{{ __('checkout.address') }}</label>
<input type="text" class="form-control" id="address" readonly
style="border: none; background-color: #f8f9fa;">
<div>
<span id="latitude"></span>,
<span id="longitude"></span>
</div>
<div class="col-md-6">
<label for="city"
class="form-label">{{ __('checkout.city') }}</label>
<input type="text" class="form-control" id="city" readonly
style="border: none; background-color: #f8f9fa;">
</div>
<div class="col-md-4">
<label for="state"
class="form-label">{{ __('checkout.state') }}</label>
<input type="text" class="form-control" id="state" readonly
style="border: none; background-color: #f8f9fa;">
</div>
<div class="col-md-2">
<label for="zip"
class="form-label">{{ __('checkout.zip') }}</label>
<input type="text" class="form-control" id="zip" readonly
style="border: none; background-color: #f8f9fa;">
</div>
<div class="col-md-6">
<label for="latitude"
class="form-label">Latitude</label>
<input type="text" class="form-control" id="latitude" readonly
style="border: none; background-color: #f8f9fa;">
</div>
<div class="col-md-6">
<label for="longitude"
class="form-label">Longitude</label>
<input type="text" class="form-control" id="longitude" readonly
style="border: none; background-color: #f8f9fa;">
</div>
</div>
</div>
</div>
@ -330,15 +298,16 @@
if (selectedOption && selectedOption.value) {
// Populate all shipping address form fields
document.getElementById('firstName').value = selectedOption.dataset.firstName || '';
document.getElementById('firstName').textContent = selectedOption.dataset.firstName || '';
// document.getElementById('lastName').value = selectedOption.dataset.lastName || '';
document.getElementById('address').value = selectedOption.dataset.address || '';
document.getElementById('city').value = selectedOption.dataset.city || '';
document.getElementById('state').value = selectedOption.dataset.state || '';
document.getElementById('zip').value = selectedOption.dataset.postcode || '';
document.getElementById('phone').value = selectedOption.dataset.phone || '';
document.getElementById('latitude').value = selectedOption.dataset.latitude || '';
document.getElementById('longitude').value = selectedOption.dataset.longitude || '';
document.getElementById('address').textContent = selectedOption.dataset.address || '';
document.getElementById('city').textContent = selectedOption.dataset.city || '';
document.getElementById('state').textContent = selectedOption.dataset.state || '';
document.getElementById('zip').textContent = selectedOption.dataset.postcode || '';
document.getElementById('phone').textContent = selectedOption.dataset.phone || '';
document.getElementById('latitude').textContent = selectedOption.dataset.latitude || '';
document.getElementById('longitude').textContent = selectedOption.dataset.longitude || '';
document.getElementById('zip').textContent = selectedOption.dataset.postcode || '';
// Update order summary with postcode
if (selectedOption.dataset.postcode) {
@ -359,30 +328,34 @@
if (this.value === 'new' || this.value === '') {
// Clear form fields for new address
document.getElementById('firstName').value = '';
document.getElementById('firstName').textContent = '';
// document.getElementById('lastName').value = '';
document.getElementById('address').value = '';
document.getElementById('city').value = '';
document.getElementById('state').value = '';
document.getElementById('zip').value = '';
document.getElementById('phone').value = '';
document.getElementById('latitude').value = '';
document.getElementById('longitude').value = '';
document.getElementById('zip').value = '';
document.getElementById('address').textContent = '';
document.getElementById('city').textContent = '';
document.getElementById('state').textContent = '';
document.getElementById('zip').textContent = '';
document.getElementById('phone').textContent = '';
document.getElementById('latitude').textContent = '';
document.getElementById('longitude').textContent = '';
document.getElementById('zip').textContent = '';
// Clear address ID input
document.getElementById('addressIdInput').value = '';
} else {
// Populate form fields with selected address
document.getElementById('firstName').value = selectedOption.dataset.firstName || '';
document.getElementById('firstName').textContent = selectedOption.dataset
.firstName || '';
// document.getElementById('lastName').value = selectedOption.dataset.lastName || '';
document.getElementById('address').value = selectedOption.dataset.address || '';
document.getElementById('city').value = selectedOption.dataset.city || '';
document.getElementById('state').value = selectedOption.dataset.state || '';
document.getElementById('zip').value = selectedOption.dataset.postcode || '';
document.getElementById('phone').value = selectedOption.dataset.phone || '';
document.getElementById('latitude').value = selectedOption.dataset.latitude || '';
document.getElementById('longitude').value = selectedOption.dataset.longitude || '';
document.getElementById('zip').value = selectedOption.dataset.postcode || '';
document.getElementById('address').textContent = selectedOption.dataset.address ||
'';
document.getElementById('city').textContent = selectedOption.dataset.city || '';
document.getElementById('state').textContent = selectedOption.dataset.state || '';
document.getElementById('zip').textContent = selectedOption.dataset.postcode || '';
document.getElementById('phone').textContent = selectedOption.dataset.phone || '';
document.getElementById('latitude').textContent = selectedOption.dataset.latitude ||
'';
document.getElementById('longitude').textContent = selectedOption.dataset
.longitude || '';
document.getElementById('zip').textContent = selectedOption.dataset.postcode || '';
// Update address ID input
document.getElementById('addressIdInput').value = this.value;