import { chinaRegions } from '../data/china-regions.mjs'; const option = (value, label, selected = false) => ``; export function regionSelects(region = {}, { required = true, className = 'region-selects' } = {}) { const province = chinaRegions.find(item => item.code === region.provinceCode); const city = province?.cities.find(item => item.code === region.cityCode); const requiredText = required ? 'required' : ''; return `
`; } export function updateRegionSelects(select) { const group = select.closest('[data-region-group]'); if (!group) return; const provinceSelect = group.querySelector('[name="provinceCode"]'); const citySelect = group.querySelector('[name="cityCode"]'); const districtSelect = group.querySelector('[name="districtCode"]'); const province = chinaRegions.find(item => item.code === provinceSelect?.value); if (select.dataset.regionLevel === 'province') { citySelect.innerHTML = `${(province?.cities || []).map(item => option(item.code, item.name)).join('')}`; districtSelect.innerHTML = ''; } else if (select.dataset.regionLevel === 'city') { const city = province?.cities.find(item => item.code === citySelect?.value); districtSelect.innerHTML = `${(city?.districts || []).map(item => option(item.code, item.name)).join('')}`; } } export function mountRegionSelects(root, region = {}, options = {}) { const address = root?.querySelector('[name="address"]'); if (!address || root.querySelector('[data-region-group]')) return; address.closest('label')?.insertAdjacentHTML('beforebegin', regionSelects(region, options)); } export function formatRegionAddress(region = {}) { const parts = [region.provinceName, region.cityName, region.districtName] .filter((value, index, values) => value && value !== values[index - 1]); return [...parts, region.address].filter(Boolean).join(''); }