{"version":3,"file":"addressControl.obs.js","sources":["../../../Framework/Controls/addressControl.obs"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <RockFormField formGroupClasses=\"address-control\" #default=\"{ uniqueId, field }\" name=\"addresscontrol\" v-model.lazy=\"internalValue\" :rules=\"$props.rules\">\r\n        <div class=\"control-wrapper\">\r\n            <Loading :id=\"id || uniqueId\" :isLoading=\"isLoading\">\r\n                <div class=\"form-row\" v-if=\"country.isVisible\">\r\n                    <div class=\"form-group col-sm-6\">\r\n                        <DropDownList v-model=\"internalValue.country\" :items=\"countryOptions\" :validationTitle=\"country.label\" :rules=\"rules.country\" :disabled=\"disabled\" :autocomplete=\"country.autocomplete\" />\r\n                    </div>\r\n                </div>\r\n                <div class=\"form-group\" v-if=\"address1.isVisible\">\r\n                    <TextBox v-model=\"internalValue.street1\" :placeholder=\"address1.label\" :validationTitle=\"address1.label\" :rules=\"rules.street1\" :disabled=\"disabled\" :autocomplete=\"address1.autocomplete\" />\r\n                </div>\r\n                <div class=\"form-group\" v-if=\"address2.isVisible\">\r\n                    <TextBox v-model=\"internalValue.street2\" :placeholder=\"address2.label\" :validationTitle=\"address2.label\" :rules=\"rules.street2\" :disabled=\"disabled\" :autocomplete=\"address2.autocomplete\" />\r\n                </div>\r\n                <div class=\"form-row\">\r\n                    <div class=\"form-group\" :class=\"county.isVisible ? 'col-sm-3' : 'col-sm-6'\" v-if=\"city.isVisible\">\r\n                        <TextBox v-model=\"internalValue.city\" :placeholder=\"city.label\" :validationTitle=\"city.label\" :rules=\"rules.city\" :disabled=\"disabled\" :autocomplete=\"city.autocomplete\" />\r\n                    </div>\r\n                    <div class=\"form-group col-sm-3\" v-if=\"county.isVisible\">\r\n                        <TextBox v-model=\"internalValue.locality\" :placeholder=\"county.label\" :validationTitle=\"county.label\" :rules=\"rules.locality\" :disabled=\"disabled\" :autocomplete=\"county.autocomplete\" />\r\n                    </div>\r\n                    <div class=\"form-group col-sm-3\" v-if=\"state.isVisible\">\r\n                        <DropDownList v-if=\"hasStateList\" :showBlankItem=\"state.rules != RequirementLevel.Required || disableFrontEndValidation\" v-model=\"internalValue.state\" :items=\"stateOptions\" :validationTitle=\"state.label\" :rules=\"rules.state\" :disabled=\"disabled\" :autocomplete=\"state.autocomplete\" />\r\n                        <TextBox v-else v-model=\"internalValue.state\" :placeholder=\"state.label\" :validationTitle=\"state.label\" :rules=\"rules.state\" :disabled=\"disabled\" :autocomplete=\"state.autocomplete\" />\r\n                    </div>\r\n                    <div class=\"form-group col-sm-3\" v-if=\"zip.isVisible\">\r\n                        <TextBox v-model=\"internalValue.postalCode\" :placeholder=\"zip.label\" :validationTitle=\"zip.label\" :rules=\"rules.postalCode\" :disabled=\"disabled\" :autocomplete=\"zip.autocomplete\" />\r\n                    </div>\r\n                </div>\r\n            </Loading>\r\n        </div>\r\n    </RockFormField>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n    import { computed, ComputedRef, PropType, reactive, ref, watch } from \"vue\";\r\n    import RockFormField from \"./rockFormField.obs\";\r\n    import DropDownList from \"./dropDownList.obs\";\r\n    import TextBox from \"./textBox.obs\";\r\n    import { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\n    import { AddressControlBag } from \"@Obsidian/ViewModels/Controls/addressControlBag\";\r\n    import { AddressControlGetConfigurationOptionsBag } from \"@Obsidian/ViewModels/Rest/Controls/addressControlGetConfigurationOptionsBag\";\r\n    import { AddressControlConfigurationBag } from \"@Obsidian/ViewModels/Rest/Controls/addressControlConfigurationBag\";\r\n    import { RequirementLevel } from \"@Obsidian/Enums/Controls/requirementLevel\";\r\n    import { post } from \"@Obsidian/Utility/http\";\r\n    import Loading from \"./loading.obs\";\r\n    import type { ValidationRule } from \"@Obsidian/Types/validationRules\";\r\n    import { containsRequiredRule, rulesPropType } from \"@Obsidian/ValidationRules\";\r\n\r\n\r\n    type FullAddress = Required<{\r\n        [Property in keyof AddressControlBag]: NonNullable<AddressControlBag[Property]>\r\n    }>;\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<AddressControlBag>,\r\n            default: {}\r\n        },\r\n\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            default: false\r\n        },\r\n\r\n        id: {\r\n            type: String as PropType<string>,\r\n            default: \"\"\r\n        },\r\n\r\n        showCountry: {\r\n            type: Boolean as PropType<boolean | null>,\r\n            default: null\r\n        },\r\n\r\n        showCounty: {\r\n            type: Boolean,\r\n            default: false\r\n        },\r\n\r\n        showAddressLine2: {\r\n            type: Boolean,\r\n            default: true\r\n        },\r\n\r\n        useCountryAbbreviation: {\r\n            type: Boolean,\r\n            default: false\r\n        },\r\n\r\n        /** If false, set automatically fill state and country fields with default values if not provided in model value */\r\n        omitDefaultValues: {\r\n            type: Boolean,\r\n            default: false\r\n        },\r\n\r\n        /**\r\n         * If true, doesn't apply any \"required\" rules to any of the individual fields, preventing\r\n         * the RockForm from showing an error if they're not filled. This allows parent components to\r\n         * handle validation, which is especially useful if the address itself isn't required or if\r\n         * you want to allow partial addresses (e.g. for default values).\r\n         */\r\n        disableFrontEndValidation: {\r\n            type: Boolean,\r\n            default: false\r\n        },\r\n\r\n        rules: rulesPropType\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: AddressControlBag): void\r\n    }>();\r\n\r\n    const internalValue = reactive<FullAddress>({\r\n        city: props.modelValue.city ?? \"\",\r\n        country: props.modelValue.country ?? \"\",\r\n        postalCode: props.modelValue.postalCode ?? \"\",\r\n        state: props.modelValue.state ?? \"\",\r\n        street1: props.modelValue.street1 ?? \"\",\r\n        street2: props.modelValue.street2 ?? \"\",\r\n        locality: props.modelValue.locality ?? \"\"\r\n    });\r\n\r\n    const isRequired = computed(() => {\r\n        return containsRequiredRule(props.rules);\r\n    });\r\n\r\n    watch(internalValue, () => {\r\n        emit(\"update:modelValue\", internalValue);\r\n    });\r\n\r\n    watch(() => props.modelValue, () => {\r\n        // Update internalValue if there are differences\r\n        Object.entries(props.modelValue).forEach(([key, val]) => {\r\n            if (val === null || val === undefined) {\r\n                internalValue[key] = \"\";\r\n            }\r\n            else if (val !== internalValue[key]) {\r\n                internalValue[key] = val;\r\n            }\r\n        });\r\n    });\r\n\r\n    const isLoading = ref<boolean>(false);\r\n    const isInternational = ref(false);\r\n\r\n    type FieldConfig = {\r\n        isVisible: boolean | ComputedRef<boolean>,\r\n        label: string,\r\n        rules?: RequirementLevel,\r\n        autocomplete: string\r\n    };\r\n\r\n    const country = reactive<FieldConfig>({\r\n        isVisible: computed(() => props.showCountry ?? isInternational.value),\r\n        label: \"Country\",\r\n        autocomplete: \"country\"\r\n    });\r\n    const address1 = reactive<FieldConfig>({\r\n        isVisible: true,\r\n        label: \"Address Line 1\",\r\n        rules: RequirementLevel.Unspecified,\r\n        autocomplete: \"address-line1\"\r\n    });\r\n    const address2 = reactive<FieldConfig>({\r\n        isVisible: true,\r\n        label: \"Address Line 2\",\r\n        rules: RequirementLevel.Unspecified,\r\n        autocomplete: \"address-line2\"\r\n    });\r\n    const city = reactive<FieldConfig>({\r\n        isVisible: true,\r\n        label: \"City\",\r\n        rules: RequirementLevel.Unspecified,\r\n        autocomplete: \"address-level2\"\r\n    });\r\n    const county = reactive<FieldConfig>({\r\n        isVisible: true,\r\n        label: \"County\",\r\n        rules: RequirementLevel.Unspecified,\r\n        autocomplete: \"address-level2\"\r\n    });\r\n    const state = reactive<FieldConfig>({\r\n        isVisible: true,\r\n        label: \"State\",\r\n        rules: RequirementLevel.Unspecified,\r\n        autocomplete: \"address-level1\"\r\n    });\r\n    const zip = reactive<FieldConfig>({\r\n        isVisible: true,\r\n        label: \"Zip\",\r\n        rules: RequirementLevel.Unspecified,\r\n        autocomplete: \"postal-code\"\r\n    });\r\n\r\n    const countryOptions = ref<ListItemBag[]>([]);\r\n    const stateOptions = ref<ListItemBag[]>([]);\r\n    const hasStateList = ref<boolean>(false);\r\n\r\n\r\n    const rules = computed(() => {\r\n        const rules: Record<keyof AddressControlBag, ValidationRule | undefined> = {\r\n            country: undefined,\r\n            street1: undefined,\r\n            street2: undefined,\r\n            city: undefined,\r\n            locality: undefined,\r\n            state: undefined,\r\n            postalCode: undefined\r\n        };\r\n\r\n        if (props.disableFrontEndValidation) {\r\n            return rules;\r\n        }\r\n\r\n        if (isRequired.value || internalValue.street1) {\r\n            if (address1.rules == RequirementLevel.Required) {\r\n                rules.street1 = \"required\";\r\n            }\r\n            if (address2.rules == RequirementLevel.Required) {\r\n                rules.street2 = \"required\";\r\n            }\r\n            if (city.rules == RequirementLevel.Required) {\r\n                rules.city = \"required\";\r\n            }\r\n            if (county.rules == RequirementLevel.Required) {\r\n                rules.locality = \"required\";\r\n            }\r\n            if (state.rules == RequirementLevel.Required) {\r\n                rules.state = \"required\";\r\n            }\r\n            if (zip.rules == RequirementLevel.Required) {\r\n                rules.postalCode = \"required\";\r\n            }\r\n        }\r\n\r\n        return rules;\r\n    });\r\n\r\n    async function getConfiguration(selectedCountry: string | undefined | null): Promise<void> {\r\n        let loadingTimer: number | undefined;\r\n\r\n        if (countryOptions.value.length === 0) {\r\n            isLoading.value = true;\r\n        }\r\n        else {\r\n            loadingTimer = window.setTimeout(() => isLoading.value = true, 200);\r\n        }\r\n\r\n        const options: AddressControlGetConfigurationOptionsBag = {\r\n            useCountryAbbreviation: props.useCountryAbbreviation,\r\n            countryCode: selectedCountry\r\n        };\r\n\r\n        // TODO: At some point, we should find some way to cache this\r\n        const result = await post<AddressControlConfigurationBag>(\"/api/v2/Controls/AddressControlGetConfiguration\", undefined, options);\r\n\r\n        if (result.isSuccess && result.data) {\r\n            const data = result.data;\r\n\r\n            // Label and rules are static\r\n            isInternational.value = data.showCountrySelection;\r\n\r\n            // Label is static\r\n            address1.isVisible = data.addressLine1Requirement != RequirementLevel.Unavailable;\r\n            address1.rules = data.addressLine1Requirement;\r\n\r\n            // Address Line 2 is only shown if it's required or it's requested by the prop; Label is static\r\n            address2.isVisible = data.addressLine2Requirement == RequirementLevel.Required || (props.showAddressLine2 && data.addressLine2Requirement != RequirementLevel.Unavailable);\r\n            address2.rules = data.addressLine2Requirement;\r\n\r\n            // County / Locality is only shown if it's required or it's requested by the prop\r\n            county.isVisible = data.localityRequirement == RequirementLevel.Required || (props.showCounty && data.localityRequirement != RequirementLevel.Unavailable);\r\n            county.rules = data.localityRequirement;\r\n            county.label = data.localityLabel ?? county.label;\r\n\r\n            city.isVisible = data.cityRequirement != RequirementLevel.Unavailable;\r\n            city.rules = data.cityRequirement;\r\n            city.label = data.cityLabel ?? city.label;\r\n            city.autocomplete = county.isVisible ? \"address-level3\" : \"address-level2\";\r\n\r\n            state.isVisible = data.stateRequirement != RequirementLevel.Unavailable;\r\n            state.rules = data.stateRequirement;\r\n            state.label = data.stateLabel ?? state.label;\r\n\r\n            zip.isVisible = data.postalCodeRequirement != RequirementLevel.Unavailable;\r\n            zip.rules = data.postalCodeRequirement;\r\n            zip.label = data.postalCodeLabel ?? zip.label;\r\n\r\n            countryOptions.value = data.countries ?? [];\r\n            stateOptions.value = data.states ?? [];\r\n            hasStateList.value = data.hasStateList;\r\n\r\n            const countryValue = (data.selectedCountry || data.defaultCountry) ?? \"\";\r\n            const stateValue = data.defaultState ?? \"\";\r\n\r\n            // If we don't have a country set yet, and we have a good countryValue, set to that\r\n            if (!internalValue.country && countryValue && !props.omitDefaultValues) {\r\n                internalValue.country = countryValue;\r\n            }\r\n\r\n            // If we don't have a state set yet, and we have a good stateValue, set to that\r\n            if (!internalValue.state && stateValue && !props.omitDefaultValues) {\r\n                internalValue.state = stateValue;\r\n            }\r\n        }\r\n        else {\r\n            console.error(result.errorMessage ?? \"Unknown error while loading data.\");\r\n        }\r\n\r\n        clearTimeout(loadingTimer);\r\n        isLoading.value = false;\r\n    }\r\n\r\n    watch(() => internalValue.country, (currentVal, oldVal) => {\r\n        if (currentVal != oldVal) {\r\n            getConfiguration(currentVal);\r\n        }\r\n    }, { deep: true });\r\n\r\n    // Initialize with configuration from the server\r\n    getConfiguration(props.modelValue.country);\r\n\r\n</script>"],"names":["internalValue","reactive","city","_props$modelValue$cit","props","modelValue","country","_props$modelValue$cou","postalCode","_props$modelValue$pos","state","_props$modelValue$sta","street1","_props$modelValue$str","street2","_props$modelValue$str2","locality","_props$modelValue$loc","isRequired","computed","containsRequiredRule","rules","watch","emit","Object","entries","forEach","_ref2","_ref3","_slicedToArray","key","val","undefined","isLoading","ref","isInternational","isVisible","_props$showCountry","showCountry","value","label","autocomplete","address1","RequirementLevel","Unspecified","address2","county","zip","countryOptions","stateOptions","hasStateList","disableFrontEndValidation","Required","getConfiguration","_x","_getConfiguration","apply","arguments","_asyncToGenerator","selectedCountry","loadingTimer","length","window","setTimeout","options","useCountryAbbreviation","countryCode","result","post","isSuccess","data","_data$localityLabel","_data$cityLabel","_data$stateLabel","_data$postalCodeLabel","_data$countries","_data$states","_ref5","_data$defaultState","showCountrySelection","addressLine1Requirement","Unavailable","addressLine2Requirement","showAddressLine2","localityRequirement","showCounty","localityLabel","cityRequirement","cityLabel","stateRequirement","stateLabel","postalCodeRequirement","postalCodeLabel","countries","states","countryValue","defaultCountry","stateValue","defaultState","omitDefaultValues","_result$errorMessage","console","error","errorMessage","clearTimeout","currentVal","oldVal","deep"],"mappings":"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"}