{"version":3,"file":"accountEntry.obs.js","sources":["../../src/Security/AccountEntry/completedStep.partial.obs","../../src/Security/AccountEntry/simpleGrid.partial.obs","../../src/Security/AccountEntry/duplicatePersonSelectionStep.partial.obs","../../src/Security/AccountEntry/existingAccountStep.partial.obs","../../src/Security/AccountEntry/passwordlessConfirmationSentStep.partial.obs","../../src/Security/AccountEntry/registrationStepAccountInfo.partial.obs","../../src/Security/AccountEntry/phoneNumberDetails.partial.obs","../../src/Security/AccountEntry/registrationStepPersonInfo.partial.obs","../../src/Security/AccountEntry/registrationStep.partial.obs","../../src/Security/accountEntry.obs"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <div v-if=\"options.isPlainCaption && options.caption\">{{ options.caption }}</div>\r\n    <NotificationBox v-else-if=\"options.caption\" alertType=\"success\">{{ options.caption }}</NotificationBox>\r\n\r\n    <RockButton v-if=\"options.redirectUrl\" :btnType=\"BtnType.Primary\" :disabled=\"disabled\" @click=\"onContinueClicked\">Continue</RockButton>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { onMounted, PropType } from \"vue\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { AccountEntryCompletedStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryCompletedStepBag\";\r\n\r\n    const props = defineProps({\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        options: {\r\n            type: Object as PropType<AccountEntryCompletedStepBag>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"navigate\", value: string): void\r\n    }>();\r\n\r\n    //#region Values\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    function onContinueClicked(): void {\r\n        tryNavigate(props.options.redirectUrl);\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Functions\r\n\r\n    function tryNavigate(url: string | null | undefined): void {\r\n        if (url) {\r\n            emit(\"navigate\", url);\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    onMounted(() => {\r\n        if (props.options.isRedirectAutomatic) {\r\n            tryNavigate(props.options.redirectUrl);\r\n        }\r\n    });\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <table class=\"grid-table table table-bordered table-striped table-hover\">\r\n        <thead>\r\n            <!-- Implement <template v-slot=\"header\"></template> in parent to override the header template. -->\r\n            <slot name=\"header\">\r\n                <tr>\r\n                    <template v-for=\"propertyName in propertyNames\">\r\n                        <!-- Implement <template v-slot=\"header-<propertyName>\"></template> in parent to override the individual header cell templates. -->\r\n                        <slot :name=\"getHeaderSlotName(propertyName)\" :propertyName=\"propertyName\">\r\n                            <th>{{ toTitleCase(splitCamelCase(propertyName)) }}</th>\r\n                        </slot>\r\n                    </template>\r\n                </tr>\r\n            </slot>\r\n        </thead>\r\n        <tbody>\r\n            <template v-for=\"item in items\">\r\n                <!-- Implement <template v-slot=\"row\"></template> in parent to override the row template. -->\r\n                <slot name=\"row\" :item=\"item\">\r\n                    <tr>\r\n                        <template v-for=\"propertyName in propertyNames\">\r\n                            <!-- Implement <template v-slot=\"column-<propertyName>\"></template> in parent to override the individual row cell templates. -->\r\n                            <slot :name=\"getColumnSlotName(propertyName)\" :item=\"item\" :propertyName=\"propertyName\">\r\n                                <td>{{ item[propertyName] }}</td>\r\n                            </slot>\r\n                        </template>\r\n                    </tr>\r\n                </slot>\r\n            </template>\r\n        </tbody>\r\n        <tfoot>\r\n            <!-- Implement <template v-slot=\"footer\"></template> in parent to override the footer template. -->\r\n            <slot name=\"footer\"></slot>\r\n        </tfoot>\r\n    </table>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { splitCamelCase, toTitleCase } from \"@Obsidian/Utility/stringUtils\";\r\n    import { computed, PropType } from \"vue\";\r\n\r\n    const props = defineProps({\r\n        items: {\r\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            type: Array as PropType<any[] | null | undefined>,\r\n            required: false,\r\n            default: []\r\n        }\r\n    });\r\n\r\n    //#region Computed Values\r\n\r\n    const propertyNames = computed(() => {\r\n        if (!props.items?.length) {\r\n            return [];\r\n        }\r\n\r\n        const firstTruthyItem = props.items.find(item => !!item && typeof item === \"object\");\r\n\r\n        return getPropertyNames(firstTruthyItem);\r\n    });\r\n\r\n    //#endregion\r\n\r\n    //#region Functions\r\n\r\n    /**\r\n     * Gets the slot name for a column.\r\n     *\r\n     * @param columnId The unique identifier for the column.\r\n     */\r\n    function getColumnSlotName(columnId: string): string {\r\n        return `column-${columnId}`;\r\n    }\r\n\r\n    /**\r\n     * Gets the slot name for a header column.\r\n     *\r\n     * @param columnId The unique identifier for the column.\r\n     */\r\n    function getHeaderSlotName(columnId: string): string {\r\n        return `header-${columnId}`;\r\n    }\r\n\r\n    /**\r\n     * Gets the properties for a data-bound item.\r\n     *\r\n     * @param item The data-bound item.\r\n     */\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    function getProperties(item: any): [string, unknown][] {\r\n        if (!item) {\r\n            return [];\r\n        }\r\n\r\n        return Object.entries(item);\r\n    }\r\n\r\n    /**\r\n     * Gets the property names for a data-bound item.\r\n     *\r\n     * @param item The data-bound item.\r\n     */\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    function getPropertyNames(item: any): string[] {\r\n        const properties = getProperties(item);\r\n        if (!properties.length) {\r\n            return [];\r\n        }\r\n\r\n        // The property names (column headers) and property values (column values) should be in the same order since they both use `getProperties()`.\r\n        return properties.map(([name, _value]) => name);\r\n    }\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <NotificationBox v-if=\"options.caption\" alertType=\"warning\">{{ options.caption }}</NotificationBox>\r\n\r\n    <SimpleGrid :items=\"options.duplicatePeople\">\r\n        <template #header>\r\n            <tr>\r\n                <th>You?</th>\r\n                <th>Name</th>\r\n            </tr>\r\n        </template>\r\n        <template #row=\"{ item }: { item: AccountEntryDuplicatePersonItemBag }\">\r\n            <tr>\r\n                <td><input v-model=\"internalModelValue\" :disabled=\"disabled\" name=\"DuplicatePerson\" type=\"radio\" :value=\"item\" /></td>\r\n                <td>{{ item.fullName }}</td>\r\n            </tr>\r\n        </template>\r\n    </SimpleGrid>\r\n\r\n    <div class=\"radio\">\r\n        <label>\r\n            <input v-model=\"internalModelValue\" :disabled=\"disabled\" name=\"DuplicatePerson\" type=\"radio\" :value=\"null\" />\r\n            <span class=\"label-text\"><strong>None of these are me</strong></span>\r\n        </label>\r\n    </div>\r\n\r\n    <div class=\"actions\">\r\n        <RockButton :btnType=\"BtnType.Link\" :disabled=\"disabled\" @click=\"onPreviousClicked\">Previous</RockButton>\r\n        <RockButton :btnType=\"BtnType.Primary\" :disabled=\"disabled\" @click=\"onNextClicked\">Next</RockButton>\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { PropType } from \"vue\";\r\n    import SimpleGrid from \"./simpleGrid.partial.obs\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { formatAspDate } from \"@Obsidian/Utility/aspDateFormat\";\r\n    import { useVModelPassthrough } from \"@Obsidian/Utility/component\";\r\n    import { RockDateTime } from \"@Obsidian/Utility/rockDateTime\";\r\n    import { AccountEntryDuplicatePersonItemBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryDuplicatePersonItemBag\";\r\n    import { AccountEntryDuplicatePersonSelectionStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryDuplicatePersonSelectionStepBag\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryDuplicatePersonItemBag | null>,\r\n            required: false,\r\n            default: null\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        options: {\r\n            type: Object as PropType<AccountEntryDuplicatePersonSelectionStepBag>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: AccountEntryDuplicatePersonItemBag | null): void,\r\n        (e: \"movePrevious\"): void,\r\n        (e: \"personSelected\"): void,\r\n        (e: \"noPersonSelected\"): void\r\n    }>();\r\n\r\n    //#region Values\r\n\r\n    const internalModelValue = useVModelPassthrough(props, \"modelValue\", emit);\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the next button being clicked.\r\n     */\r\n    function onNextClicked(): void {\r\n        if (internalModelValue.value) {\r\n            emit(\"personSelected\");\r\n        }\r\n        else {\r\n            emit(\"noPersonSelected\");\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Event handler for the previous button being clicked.\r\n     */\r\n    function onPreviousClicked(): void {\r\n        emit(\"movePrevious\");\r\n    }\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <NotificationBox v-if=\"options.caption\" alertType=\"warning\">{{ options.caption }}</NotificationBox>\r\n\r\n    <div class=\"actions\">\r\n        <RockButton\r\n                    :btnType=\"BtnType.Link\"\r\n                    :disabled=\"disabled\"\r\n                    @click=\"onPreviousClicked\">Previous</RockButton>\r\n        <RockButton\r\n                    :btnType=\"BtnType.Primary\"\r\n                    class=\"ml-1\"\r\n                    :disabled=\"disabled\"\r\n                    @click=\"onEmailUsernameClicked\">Yes, send it</RockButton>\r\n        <RockButton\r\n                    :btnType=\"BtnType.Primary\"\r\n                    class=\"ml-1\"\r\n                    :disabled=\"disabled\"\r\n                    @click=\"onSendToLoginClicked\">No, just let me log in</RockButton>\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { PropType } from \"vue\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { AccountEntryExistingAccountStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryExistingAccountStepBag\";\r\n\r\n    const props = defineProps({\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        options: {\r\n            type: Object as PropType<AccountEntryExistingAccountStepBag>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"movePrevious\"): void,\r\n        (e: \"emailUsername\"): void,\r\n        (e: \"sendToLogin\"): void\r\n    }>();\r\n\r\n    //#region Values\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the \"Yes, send it\" button being clicked.\r\n     */\r\n    function onEmailUsernameClicked(): void {\r\n        emit(\"emailUsername\");\r\n    }\r\n\r\n    /**\r\n     * Event handler for the previous button being clicked.\r\n     */\r\n    function onPreviousClicked(): void {\r\n        emit(\"movePrevious\");\r\n    }\r\n\r\n    /**\r\n     * Event handler for the \"No, just let me log in\" button being clicked.\r\n     */\r\n    function onSendToLoginClicked(): void {\r\n        emit(\"sendToLogin\");\r\n    }\r\n\r\n                    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <NotificationBox v-if=\"options.caption\" alertType=\"warning\">{{ options.caption }}</NotificationBox>\r\n    <RockForm @submit=\"onFormSubmitted\">\r\n        <CodeBox\r\n                 v-model.capitalize=\"internalValue\"\r\n                 :disabled=\"disabled\"\r\n                 :maxLength=\"6\"\r\n                 rules=\"required\"></CodeBox>\r\n\r\n        <div class=\"actions\">\r\n            <RockButton :btnType=\"BtnType.Link\" :disabled=\"disabled\" type=\"button\" @click=\"onPreviousClicked\">Previous</RockButton>\r\n            <RockButton :btnType=\"BtnType.Primary\" :disabled=\"disabled\" type=\"submit\">Complete Sign In</RockButton>\r\n        </div>\r\n    </RockForm>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { PropType } from \"vue\";\r\n    import CodeBox from \"../codeBox.obs\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton\";\r\n    import RockForm from \"@Obsidian/Controls/rockForm\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { useVModelPassthrough } from \"@Obsidian/Utility/component\";\r\n    import { AccountEntryPasswordlessConfirmationSentStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPasswordlessConfirmationSentStepBag\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: String as PropType<string>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        options: {\r\n            type: Object as PropType<AccountEntryPasswordlessConfirmationSentStepBag>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"movePrevious\"): void,\r\n        (e: \"submit\"): void,\r\n        (e: \"update:modelValue\", value: string): void,\r\n    }>();\r\n\r\n    //#region Values\r\n\r\n    const internalValue = useVModelPassthrough(props, \"modelValue\", emit);\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the previous button being clicked.\r\n     */\r\n    function onPreviousClicked(): void {\r\n        emit(\"movePrevious\");\r\n    }\r\n\r\n    /**\r\n     * Event handler for the form being submitted.\r\n     */\r\n    function onFormSubmitted(): void {\r\n        emit(\"submit\");\r\n    }\r\n\r\n                    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <fieldset>\r\n        <legend>New Account</legend>\r\n        <TextBox\r\n                 v-if=\"!isEmailRequiredForUsername\"\r\n                 v-model=\"internalUsername\"\r\n                 :disabled=\"disabled\"\r\n                 :label=\"usernameFieldLabel\"\r\n                 :rules=\"usernameValidators\"\r\n                 @change=\"onUsernameChanged\"></TextBox>\r\n\r\n        <EmailBox\r\n                  v-else\r\n                  v-model=\"internalUsername\"\r\n                  :disabled=\"disabled\"\r\n                  label=\"Email\"\r\n                  rules=\"required\"></EmailBox>\r\n\r\n        <NotificationBox v-if=\"usernameValidationCaption\" :alertType=\"!isUsernameAvailable || isUsernameError ? 'warning' : 'success'\">{{ usernameValidationCaption }}</NotificationBox>\r\n\r\n        <TextBox\r\n                 v-model=\"internalPassword\"\r\n                 :disabled=\"disabled\"\r\n                 label=\"Password\"\r\n                 rules=\"required\"\r\n                 type=\"password\"></TextBox>\r\n        <TextBox\r\n                 v-model=\"internalConfirmPassword\"\r\n                 :disabled=\"disabled\"\r\n                 label=\"Confirm Password\"\r\n                 :rules=\"confirmPasswordRules\"\r\n                 type=\"password\"></TextBox>\r\n    </fieldset>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType, ref } from \"vue\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import EmailBox from \"@Obsidian/Controls/emailBox\";\r\n    import TextBox from \"@Obsidian/Controls/textBox\";\r\n    import { ValidationResult, ValidationRule } from \"@Obsidian/ValidationRules\";\r\n    import { AccountEntryAccountInfoBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryAccountInfoBag\";\r\n    import { AccountEntryInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryInitializationBox\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryAccountInfoBag | null | undefined>,\r\n            required: true\r\n        },\r\n        config: {\r\n            type: Object as PropType<AccountEntryInitializationBox>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        isUsernameAvailable: {\r\n            type: Object as PropType<boolean | null>,\r\n            required: false,\r\n            default: null\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"checkUsernameAvailability\", value: string): void,\r\n        (e: \"update:isUsernameAvailable\", value: boolean | null): void,\r\n        (e: \"update:modelValue\", value: AccountEntryAccountInfoBag): void\r\n    }>();\r\n\r\n    const usernameValidators: ValidationRule[] = [\r\n        \"required\",\r\n        (value: unknown, _params: unknown[] | undefined): ValidationResult => {\r\n            if (typeof value !== \"string\" || !value?.trim()) {\r\n                return `${usernameFieldLabel.value} is required.`;\r\n            }\r\n\r\n            if (validateUsernameRegex.value && !validateUsernameRegex.value.test(value)) {\r\n                return `${usernameFieldLabel.value} is invalid. ${props.config.usernameRegexDescription}`;\r\n            }\r\n\r\n            return true;\r\n        }\r\n    ];\r\n\r\n    //#region Values\r\n\r\n    const usernameValidationError = ref<string | null>(null);\r\n\r\n    //#endregion\r\n\r\n    //#region Computed Values\r\n\r\n    const isUsernameError = computed(() => !!usernameValidationError.value);\r\n\r\n    const isEmailRequiredForUsername = computed(() => props.config.isEmailRequiredForUsername);\r\n\r\n    const usernameFieldLabel = computed(() => props.config.usernameFieldLabel || \"Username\");\r\n\r\n    const validateUsernameRegex = computed((() => props.config.usernameRegex ? new RegExp(props.config.usernameRegex) : null));\r\n\r\n    const internalUsername = computed<string>({\r\n        get() {\r\n            return props.modelValue?.username ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, username: newValue });\r\n        }\r\n    });\r\n\r\n    const internalPassword = computed<string>({\r\n        get() {\r\n            return props.modelValue?.password ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, password: newValue });\r\n        }\r\n    });\r\n\r\n    const internalConfirmPassword = computed<string>({\r\n        get() {\r\n            return props.modelValue?.confirmPassword ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, confirmPassword: newValue });\r\n        }\r\n    });\r\n\r\n    const confirmPasswordRules = computed<string>(() => {\r\n        return `required|equalsfield:must match Password,${internalPassword.value}`;\r\n    });\r\n\r\n    const usernameValidationCaption = computed<string>(() => {\r\n        if (usernameValidationError.value) {\r\n            return usernameValidationError.value;\r\n        }\r\n        else if (props.isUsernameAvailable) {\r\n            return `The ${usernameFieldLabel.value.toLowerCase()} you selected is available.`;\r\n        }\r\n        else if (props.isUsernameAvailable === false) {\r\n            return `The ${usernameFieldLabel.value.toLowerCase()} you selected is already in use.`;\r\n        }\r\n        else {\r\n            return \"\";\r\n        }\r\n    });\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the username being changed.\r\n     */\r\n    function onUsernameChanged(): void {\r\n        if (!internalUsername.value?.trim()) {\r\n            usernameValidationError.value = `${usernameFieldLabel.value} is required.`;\r\n            emit(\"update:isUsernameAvailable\", null);\r\n        }\r\n        else if (validateUsernameRegex.value && !validateUsernameRegex.value.test(internalUsername.value)) {\r\n            usernameValidationError.value = `${usernameFieldLabel.value} is invalid. ${props.config.usernameRegexDescription}`;\r\n            emit(\"update:isUsernameAvailable\", null);\r\n        }\r\n        else {\r\n            usernameValidationError.value = null;\r\n            if (!props.config.isUsernameAvailabilityCheckDisabled) {\r\n                emit(\"checkUsernameAvailability\", internalUsername.value);\r\n            }\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <PhoneNumberBox\r\n        v-model:modelValue=\"internalPhoneNumber\"\r\n        v-model:countryCode=\"internalCountryCode\"\r\n        :disabled=\"disabled\"\r\n        :label=\"modelValue.label!\"\r\n        :rules=\"phoneNumberRules\"></PhoneNumberBox>\r\n    <InlineCheckBox :disabled=\"disabled\" label=\"SMS\" v-model=\"internalIsSmsEnabled\"></InlineCheckBox>\r\n    <InlineCheckBox :disabled=\"disabled\" label=\"Unlisted\" v-model=\"internalIsUnlisted\"></InlineCheckBox>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType } from \"vue\";\r\n    import InlineCheckBox from \"@Obsidian/Controls/inlineCheckBox\";\r\n    import PhoneNumberBox from \"@Obsidian/Controls/phoneNumberBox.obs\";\r\n    import { AccountEntryPhoneNumberBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPhoneNumberBag\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryPhoneNumberBag>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: AccountEntryPhoneNumberBag): void\r\n    }>();\r\n\r\n    //#region Computed Values\r\n\r\n    const internalPhoneNumber = computed<string>({\r\n        get() {\r\n            return props.modelValue.phoneNumber ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, phoneNumber: newValue });\r\n        }\r\n    });\r\n\r\n    const internalCountryCode = computed<string>({\r\n        get() {\r\n            return props.modelValue.countryCode ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, countryCode: newValue });\r\n        }\r\n    });\r\n\r\n    const internalIsSmsEnabled = computed<boolean>({\r\n        get() {\r\n            return props.modelValue.isSmsEnabled;\r\n        },\r\n        set(newValue: boolean) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, isSmsEnabled: newValue });\r\n        }\r\n    });\r\n\r\n    const internalIsUnlisted = computed<boolean>({\r\n        get() {\r\n            return props.modelValue.isUnlisted;\r\n        },\r\n        set(newValue: boolean) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, isUnlisted: newValue });\r\n        }\r\n    });\r\n\r\n    const phoneNumberRules = computed<string>(() => props.modelValue.isRequired ? \"required\" : \"\");\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <div>\r\n        <fieldset>\r\n            <legend>Your Information</legend>\r\n            <TextBox\r\n                v-model=\"internalFirstName\"\r\n                :disabled=\"disabled\"\r\n                label=\"First Name\"\r\n                rules=\"required\"></TextBox>\r\n            <TextBox\r\n                v-model=\"internalLastName\"\r\n                :disabled=\"disabled\"\r\n                label=\"Last Name\"\r\n                rules=\"required\"></TextBox>\r\n            <EmailBox\r\n                v-if=\"!isEmailHidden\"\r\n                v-model=\"internalEmail\"\r\n                :disabled=\"disabled\"\r\n                label=\"Email\"\r\n                rules=\"required\"></EmailBox>\r\n            <GenderDropDownList\r\n                v-model=\"internalGender\"\r\n                :disabled=\"disabled\"></GenderDropDownList>\r\n            <BirthdayPicker\r\n                v-model=\"internalBirthday\"\r\n                :disabled=\"disabled\"\r\n                label=\"Birthday\"\r\n                rules=\"required\"></BirthdayPicker>\r\n        </fieldset>\r\n\r\n        <fieldset v-if=\"internalArePhoneNumbersShown\">\r\n            <legend v-if=\"internalPhoneNumbers.length > 1\">Phone Numbers</legend>\r\n            <template v-for=\"(value, key) in internalPhoneNumbers\">\r\n                <PhoneNumberDetails\r\n                    v-if=\"!value.isHidden\"\r\n                    v-model=\"internalPhoneNumbers[key]\"\r\n                    :disabled=\"disabled\"></PhoneNumberDetails>\r\n            </template>\r\n        </fieldset>\r\n\r\n        <fieldset v-if=\"isAddressShown\">\r\n            <legend>Address</legend>\r\n            <Address\r\n                v-model=\"internalAddress\"\r\n                :disabled=\"disabled\"\r\n                :rules=\"addressRules\"></Address>\r\n        </fieldset>\r\n\r\n        <CampusPicker\r\n            v-if=\"isCampusPickerShown\"\r\n            :disabled=\"disabled\"\r\n            :label=\"campusPickerLabel\"\r\n            @update:modelValue=\"onCampusChanged\"></CampusPicker>\r\n    </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType } from \"vue\";\r\n    import PhoneNumberDetails from \"./phoneNumberDetails.partial.obs\";\r\n    import Address from \"@Obsidian/Controls/addressControl.obs\";\r\n    import { AddressControlBag } from \"@Obsidian/ViewModels/Controls/addressControlBag\";\r\n    import BirthdayPicker from \"@Obsidian/Controls/birthdayPicker\";\r\n    import CampusPicker from \"@Obsidian/Controls/campusPicker.obs\";\r\n    import { getDefaultDatePartsPickerModel } from \"@Obsidian/Controls/datePartsPicker\";\r\n    import EmailBox from \"@Obsidian/Controls/emailBox\";\r\n    import GenderDropDownList from \"@Obsidian/Controls/genderDropDownList\";\r\n    import TextBox from \"@Obsidian/Controls/textBox\";\r\n    import { AccountEntryInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryInitializationBox\";\r\n    import { AccountEntryPersonInfoBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPersonInfoBag\";\r\n    import { AccountEntryPhoneNumberBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPhoneNumberBag\";\r\n    import { BirthdayPickerBag } from \"@Obsidian/ViewModels/Controls/birthdayPickerBag\";\r\n    import { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryPersonInfoBag | null | undefined>,\r\n            required: true\r\n        },\r\n        config: {\r\n            type: Object as PropType<AccountEntryInitializationBox>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: AccountEntryPersonInfoBag): void\r\n    }>();\r\n\r\n    // #region Computed Values\r\n\r\n    const arePhoneNumbersShown = computed(() => props.config.arePhoneNumbersShown);\r\n    const campusPickerLabel = computed(() => props.config.campusPickerLabel || \"Campus\");\r\n    const isAddressShown = computed(() => props.config.isAddressShown);\r\n    const isAddressRequired = computed(() => props.config.isAddressRequired);\r\n    const isCampusPickerShown = computed(() => props.config.isCampusPickerShown);\r\n    const isEmailHidden = computed(() => props.config.isEmailHidden);\r\n\r\n    const internalFirstName = computed<string>({\r\n        get() {\r\n            return props.modelValue?.firstName ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, firstName: newValue });\r\n        }\r\n    });\r\n\r\n    const internalLastName = computed<string>({\r\n        get() {\r\n            return props.modelValue?.lastName ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, lastName: newValue });\r\n        }\r\n    });\r\n\r\n    const internalEmail = computed<string>({\r\n        get() {\r\n            return props.modelValue?.email ?? \"\";\r\n        },\r\n        set(newValue: string) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, email: newValue });\r\n        }\r\n    });\r\n\r\n    const internalGender = computed<number>({\r\n        get() {\r\n            return props.modelValue?.gender ?? 0;\r\n        },\r\n        set(newValue: number) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, gender: newValue });\r\n        }\r\n    });\r\n\r\n    const internalBirthday = computed<BirthdayPickerBag>({\r\n        get() {\r\n            return props.modelValue?.birthday ?? getDefaultDatePartsPickerModel();\r\n        },\r\n        set(newValue: BirthdayPickerBag) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, birthday: newValue });\r\n        }\r\n    });\r\n\r\n    const internalPhoneNumbers = computed<AccountEntryPhoneNumberBag[]>({\r\n        get() {\r\n            return props.modelValue?.phoneNumbers ?? [];\r\n        },\r\n        set(newValue: AccountEntryPhoneNumberBag[]) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, phoneNumbers: newValue });\r\n        }\r\n    });\r\n\r\n    const internalAddress = computed<AddressControlBag>({\r\n        get() {\r\n            return props.modelValue?.address || {};\r\n        },\r\n        set(newValue: AddressControlBag) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, address: newValue });\r\n        }\r\n    });\r\n\r\n    const addressRules = computed<string>(() => isAddressRequired.value ? \"required\" : \"\");\r\n\r\n    const internalArePhoneNumbersShown = computed<boolean>(() => arePhoneNumbersShown.value && internalPhoneNumbers.value.some(p => !p.isHidden));\r\n\r\n    // #endregion\r\n\r\n    // #region Event Handlers\r\n\r\n    /**\r\n     * Returns truthy if the argument is of type ListItemBag.\r\n     *\r\n     * @param object The object to test.\r\n     */\r\n    function isListItemBag(object: unknown): object is ListItemBag {\r\n        return !!object && typeof object === \"object\" && \"value\" in object;\r\n    }\r\n\r\n    /**\r\n     * Updates the person's campus guid whenever the campus picker selection changes.\r\n     */\r\n     function onCampusChanged(value: ListItemBag | ListItemBag[] | null): void {\r\n        if (isListItemBag(value)) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, campus: value.value });\r\n        }\r\n        else {\r\n            emit(\"update:modelValue\", { ...props.modelValue, campus: null });\r\n        }\r\n    }\r\n\r\n    // #endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <RockForm @submit=\"onFormSubmit\">\r\n        <TextBox\r\n            v-model=\"fullName\"\r\n            class=\"rock-fullname\"\r\n            :disabled=\"disabled\"\r\n            name=\"name\"\r\n            placeholder=\"Please enter name (Required)\"></TextBox>\r\n\r\n        <div class=\"row\">\r\n            <AccountInfo\r\n                v-if=\"!config.isAccountInfoHidden\"\r\n                v-model=\"internalAccountInfo\"\r\n                v-model:isUsernameAvailable=\"internalIsUsernameAvailable\"\r\n                class=\"col-md-6\"\r\n                :config=\"config\"\r\n                :disabled=\"disabled\"\r\n                @checkUsernameAvailability=\"onCheckUsernameAvailability\" />\r\n\r\n            <PersonInfo\r\n                v-model=\"internalPersonInfo\"\r\n                class=\"col-md-6\"\r\n                :config=\"config\"\r\n                :disabled=\"disabled\" />\r\n        </div>\r\n\r\n        <div class=\"row\">\r\n            <div class=\"col-md-12\">\r\n                <RockButton\r\n                    :btnType=\"BtnType.Primary\"\r\n                    :disabled=\"disabled\"\r\n                    type=\"submit\">Next</RockButton>\r\n            </div>\r\n        </div>\r\n    </RockForm>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType, ref } from \"vue\";\r\n    import AccountInfo from \"./registrationStepAccountInfo.partial.obs\";\r\n    import PersonInfo from \"./registrationStepPersonInfo.partial.obs\";\r\n    import RockButton from \"@Obsidian/Controls/rockButton\";\r\n    import RockForm from \"@Obsidian/Controls/rockForm\";\r\n    import TextBox from \"@Obsidian/Controls/textBox\";\r\n    import { BtnType } from \"@Obsidian/Enums/Controls/btnType\";\r\n    import { useVModelPassthrough } from \"@Obsidian/Utility/component\";\r\n    import { RockDateTime } from \"@Obsidian/Utility/rockDateTime\";\r\n    import { AccountEntryAccountInfoBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryAccountInfoBag\";\r\n    import { AccountEntryInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryInitializationBox\";\r\n    import { AccountEntryPersonInfoBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPersonInfoBag\";\r\n    import { AccountEntryRegisterRequestBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryRegisterRequestBox\";\r\n\r\n    const props = defineProps({\r\n        config: {\r\n            type: Object as PropType<AccountEntryInitializationBox>,\r\n            required: true\r\n        },\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n        isUsernameAvailable: {\r\n            type: Object as PropType<boolean | null>,\r\n            required: false,\r\n            default: null\r\n        },\r\n        modelValue: {\r\n            type: Object as PropType<AccountEntryRegisterRequestBox>,\r\n            required: true\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"checkUsernameAvailability\", value: string): void,\r\n        (e: \"error\", value: string): void,\r\n        (e: \"register\"): void,\r\n        (e: \"update:isUsernameAvailable\", value: boolean | null): void,\r\n        (e: \"update:modelValue\", value: AccountEntryRegisterRequestBox): void,\r\n    }>();\r\n\r\n    enum ValidationErrorMessages {\r\n        MinimumAge = \"We are sorry, you must be at least {0} years old to create an account.\"\r\n    }\r\n\r\n    //#region Values\r\n\r\n    const fullName = ref(\"\");\r\n\r\n    const shouldUsernameUpdateSetPersonInfoEmail = computed<boolean>(() => props.config.isEmailRequiredForUsername);\r\n\r\n    const internalIsUsernameAvailable = useVModelPassthrough(props, \"isUsernameAvailable\", emit);\r\n\r\n    //#endregion\r\n\r\n    //#region Computed Values\r\n\r\n    const internalAccountInfo = computed<AccountEntryAccountInfoBag | null | undefined>({\r\n        get() {\r\n            return props.modelValue.accountInfo;\r\n        },\r\n        set(newValue: AccountEntryAccountInfoBag | null | undefined) {\r\n            let modelValue: AccountEntryRegisterRequestBox;\r\n\r\n            if (shouldUsernameUpdateSetPersonInfoEmail.value && props.modelValue.personInfo?.email !== newValue?.username) {\r\n                modelValue = {\r\n                    ...props.modelValue,\r\n                    accountInfo: newValue,\r\n                    personInfo: {\r\n                        ...props.modelValue.personInfo,\r\n                        email: newValue?.username\r\n                    }\r\n                };\r\n            }\r\n            else {\r\n                modelValue = {\r\n                    ...props.modelValue,\r\n                    accountInfo: newValue\r\n                };\r\n            }\r\n\r\n            emit(\"update:modelValue\", modelValue);\r\n        }\r\n    });\r\n\r\n    const internalPersonInfo = computed<AccountEntryPersonInfoBag | null | undefined>({\r\n        get() {\r\n            return props.modelValue.personInfo;\r\n        },\r\n        set(newValue: AccountEntryPersonInfoBag | null | undefined) {\r\n            emit(\"update:modelValue\", { ...props.modelValue, personInfo: newValue });\r\n        }\r\n    });\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the username being checked.\r\n     */\r\n    function onCheckUsernameAvailability(username: string): void {\r\n        if (!props.config.isUsernameAvailabilityCheckDisabled) {\r\n            emit(\"checkUsernameAvailability\", username);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Event handler for the registration form being submitted.\r\n     */\r\n    async function onFormSubmit(): Promise<void> {\r\n        if (isPersonInfoValid()) {\r\n            emit(\"register\");\r\n        }\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Functions\r\n\r\n    /**\r\n     * Determines whether the person is old enough to register.\r\n     */\r\n    function isOldEnough(): boolean {\r\n        if (props.config.minimumAge <= 0) {\r\n            return true;\r\n        }\r\n\r\n        const birthday = internalPersonInfo.value?.birthday;\r\n\r\n        if (!birthday) {\r\n            emit(\"error\", \"Birthday is required\");\r\n            return false;\r\n        }\r\n\r\n        const threshold = RockDateTime.now().addYears(- props.config.minimumAge);\r\n        const birthdate = RockDateTime.fromParts(birthday.year, birthday.month, birthday.day);\r\n        if (!birthdate || birthdate.isLaterThan(threshold)) {\r\n            emit(\"error\", ValidationErrorMessages.MinimumAge.replace(\"{0}\", props.config.minimumAge.toString()));\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Determines whether the person info is valid.\r\n     */\r\n    function isPersonInfoValid(): boolean {\r\n        return isOldEnough();\r\n    }\r\n\r\n    //#endregion\r\n</script>","<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <NotificationBox v-if=\"errorMessage\" alertType=\"validation\" v-html=\"errorMessage\">\r\n    </NotificationBox>\r\n\r\n    <RegistrationStep\r\n                      v-if=\"step.isRegistration\"\r\n                      v-model=\"registrationInfo\"\r\n                      v-model:isUsernameAvailable=\"isUsernameAvailable\"\r\n                      :config=\"config\"\r\n                      :disabled=\"isRegistering || isNavigating\"\r\n                      @checkUsernameAvailability=\"onCheckUsernameAvailability\"\r\n                      @error=\"showError\"\r\n                      @register=\"onRegister\">\r\n    </RegistrationStep>\r\n\r\n    <DuplicatePersonSelectionStep\r\n                                  v-else-if=\"step.isDuplicatePersonSelection\"\r\n                                  v-model=\"selectedDuplicatePerson\"\r\n                                  :disabled=\"isRegistering || isNavigating\"\r\n                                  :options=\"duplicatePersonSelectionStepOptions\"\r\n                                  @movePrevious=\"onDuplicatePersonSelectionStepMovePrevious()\"\r\n                                  @personSelected=\"onDuplicatePersonSelected\"\r\n                                  @noPersonSelected=\"onNoDuplicatePersonSelected\"></DuplicatePersonSelectionStep>\r\n\r\n    <PasswordlessConfirmationSentStep\r\n                                      v-else-if=\"step.isPasswordlessConfirmationSent\"\r\n                                      v-model=\"passwordlessConfirmationCode\"\r\n                                      :disabled=\"isRegistering || isNavigating\"\r\n                                      :options=\"passwordlessConfirmationSentStepOptions\"\r\n                                      @movePrevious=\"onPasswordlessConfirmationSentStepMovePrevious()\"\r\n                                      @submit=\"onPasswordlessConfirmationSubmitted\"></PasswordlessConfirmationSentStep>\r\n\r\n    <ExistingAccountStep\r\n                         v-else-if=\"step.isExistingAccount\"\r\n                         :disabled=\"isSendingForgotUsername || isRegistering || isNavigating\"\r\n                         :options=\"existingAccountStepOptions\"\r\n                         @movePrevious=\"onMovePrevious()\"\r\n                         @emailUsername=\"onEmailUsername\"\r\n                         @sendToLogin=\"onSendToLogin\"></ExistingAccountStep>\r\n\r\n    <ConfirmationSentStep\r\n                          v-else-if=\"step.isConfirmationSent\"\r\n                          :options=\"confirmationSentStepOptions\">\r\n    </ConfirmationSentStep>\r\n\r\n    <CompletedStep\r\n                   v-else-if=\"step.isCompleted\"\r\n                   :disabled=\"isRegistering || isNavigating\"\r\n                   :options=\"completedStepOptions\"\r\n                   @navigate=\"onNavigate($event)\">\r\n    </CompletedStep>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, ref } from \"vue\";\r\n    import CompletedStep from \"./AccountEntry/completedStep.partial.obs\";\r\n    import ConfirmationSentStep from \"./AccountEntry/confirmationSentStep.partial.obs\";\r\n    import DuplicatePersonSelectionStep from \"./AccountEntry/duplicatePersonSelectionStep.partial.obs\";\r\n    import ExistingAccountStep from \"./AccountEntry/existingAccountStep.partial.obs\";\r\n    import PasswordlessConfirmationSentStep from \"./AccountEntry/passwordlessConfirmationSentStep.partial.obs\";\r\n    import RegistrationStep from \"./AccountEntry/registrationStep.partial.obs\";\r\n    import NotificationBox from \"@Obsidian/Controls/notificationBox.obs\";\r\n    import { AccountEntryStep } from \"@Obsidian/Enums/Blocks/Security/AccountEntry/accountEntryStep\";\r\n    import { onConfigurationValuesChanged, useConfigurationValues, useInvokeBlockAction, useReloadBlock } from \"@Obsidian/Utility/block\";\r\n    import { useHttp } from \"@Obsidian/Utility/http\";\r\n    import { removeCurrentUrlQueryParams } from \"@Obsidian/Utility/url\";\r\n    import { AccountEntryCompletedStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryCompletedStepBag\";\r\n    import { AccountEntryConfirmationSentStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryConfirmationSentStepBag\";\r\n    import { AccountEntryDuplicatePersonSelectionStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryDuplicatePersonSelectionStepBag\";\r\n    import { AccountEntryDuplicatePersonItemBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryDuplicatePersonItemBag\";\r\n    import { AccountEntryExistingAccountStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryExistingAccountStepBag\";\r\n    import { AccountEntryForgotUsernameRequestBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryForgotUsernameRequestBag\";\r\n    import { AccountEntryInitializationBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryInitializationBox\";\r\n    import { AccountEntryPasswordlessConfirmationSentStepBag } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryPasswordlessConfirmationSentStepBag\";\r\n    import { AccountEntryRegisterRequestBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryRegisterRequestBox\";\r\n    import { AccountEntryRegisterResponseBox } from \"@Obsidian/ViewModels/Blocks/Security/AccountEntry/accountEntryRegisterResponseBox\";\r\n\r\n    const config = useConfigurationValues<AccountEntryInitializationBox>();\r\n    const invokeBlockAction = useInvokeBlockAction();\r\n    const http = useHttp();\r\n\r\n    removeCurrentUrlQueryParams(\"State\");\r\n\r\n    //#region Values\r\n\r\n    const errorMessage = ref<string | null>();\r\n\r\n    const stepStack = ref<AccountEntryStep[]>([]);\r\n    const accountEntryStep = computed<AccountEntryStep | null>(() => stepStack.value.length ? stepStack.value[stepStack.value.length - 1] : null);\r\n\r\n    const registrationInfo = ref<AccountEntryRegisterRequestBox>({\r\n        accountInfo: {\r\n            password: \"\",\r\n            username: \"\"\r\n        },\r\n        personInfo: {\r\n            birthday: {\r\n                year: 0,\r\n                month: 0,\r\n                day: 0\r\n            },\r\n            email: config.email || \"\",\r\n            firstName: \"\",\r\n            gender: 0,\r\n            lastName: \"\",\r\n            phoneNumbers: [...config.phoneNumbers ?? []]\r\n        },\r\n        fullName: null,\r\n        selectedPersonId: null,\r\n        state: config.state\r\n    });\r\n    const isUsernameAvailable = ref<boolean | null>(null);\r\n\r\n    const duplicatePersonSelectionStepOptions = ref<AccountEntryDuplicatePersonSelectionStepBag>({});\r\n    const internalSelectedDuplicatePerson = ref<AccountEntryDuplicatePersonItemBag | null>(null);\r\n    const selectedDuplicatePerson = computed<AccountEntryDuplicatePersonItemBag | null>({\r\n        get() {\r\n            return internalSelectedDuplicatePerson.value;\r\n        },\r\n        set(newValue: AccountEntryDuplicatePersonItemBag | null) {\r\n            internalSelectedDuplicatePerson.value = newValue;\r\n            registrationInfo.value.selectedPersonId = newValue?.id;\r\n        }\r\n    });\r\n\r\n    const passwordlessConfirmationSentStepOptions = ref<AccountEntryPasswordlessConfirmationSentStepBag>({});\r\n    const passwordlessConfirmationCode = ref<string>(\"\");\r\n\r\n    const existingAccountStepOptions = ref<AccountEntryExistingAccountStepBag>({});\r\n\r\n    const confirmationSentStepOptions = ref<AccountEntryConfirmationSentStepBag>({});\r\n\r\n    const completedStepOptions = ref<AccountEntryCompletedStepBag>({\r\n        isPlainCaption: false,\r\n        isRedirectAutomatic: false\r\n    });\r\n\r\n    const isNavigating = ref<boolean>(false);\r\n    const isRegistering = ref<boolean>(false);\r\n    const isSendingForgotUsername = ref<boolean>(false);\r\n\r\n    //#endregion\r\n\r\n    //#region Computed Values\r\n\r\n    const step = computed(() => ({\r\n        isCompleted: accountEntryStep.value === AccountEntryStep.Completed,\r\n        isConfirmationSent: accountEntryStep.value === AccountEntryStep.ConfirmationSent,\r\n        isDuplicatePersonSelection: accountEntryStep.value === AccountEntryStep.DuplicatePersonSelection,\r\n        isExistingAccount: accountEntryStep.value === AccountEntryStep.ExistingAccount,\r\n        isRegistration: accountEntryStep.value === AccountEntryStep.Registration,\r\n        isPasswordlessConfirmationSent: accountEntryStep.value === AccountEntryStep.PasswordlessConfirmationSent\r\n    }));\r\n\r\n    const sentLoginCaption = computed<string>(() => {\r\n        return config.sentLoginCaption || \"Your username has been emailed to you. If you've forgotten your password, the email includes a link to reset your password.\";\r\n    });\r\n\r\n    //#endregion\r\n\r\n    //#region Event Handlers\r\n\r\n    /**\r\n     * Event handler for the username being checked.\r\n     *\r\n     * @param username The username to check.\r\n     */\r\n    async function onCheckUsernameAvailability(username: string): Promise<void> {\r\n        if (config.isUsernameAvailabilityCheckDisabled) {\r\n            isUsernameAvailable.value = null;\r\n        }\r\n        else {\r\n            const response = await http.get<boolean>(\"/api/userlogins/available\", { username: username });\r\n            isUsernameAvailable.value = response.data;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Event handler for the duplicate person being selected.\r\n     */\r\n    async function onDuplicatePersonSelected(): Promise<void> {\r\n        // Individual selected a person. Let them choose what to do on the next step.\r\n        registrationInfo.value.selectedPersonId = selectedDuplicatePerson.value?.id;\r\n\r\n        await register();\r\n    }\r\n\r\n    /**\r\n     * Event handler for moving to the step prior to the \"Duplicate Person Selection Step\".\r\n     */\r\n    function onDuplicatePersonSelectionStepMovePrevious(): void {\r\n        selectedDuplicatePerson.value = null;\r\n        onMovePrevious();\r\n    }\r\n\r\n    /**\r\n     * Event handler for the \"Email username\" button being clicked.\r\n     */\r\n    async function onEmailUsername(): Promise<void> {\r\n        try {\r\n            isSendingForgotUsername.value = true;\r\n\r\n            const bag: AccountEntryForgotUsernameRequestBag = {\r\n                personId: registrationInfo.value.selectedPersonId ?? 0,\r\n                email: registrationInfo.value.personInfo?.email,\r\n                lastName: registrationInfo.value.personInfo?.lastName\r\n            };\r\n\r\n            const result = await invokeBlockAction<void>(\"ForgotUsername\", { bag });\r\n\r\n            if (!result?.isSuccess) {\r\n                showError(result?.errorMessage || \"An unexpected error occurred.\");\r\n                return;\r\n            }\r\n\r\n            showCompletedStepNext({\r\n                isPlainCaption: true,\r\n                caption: sentLoginCaption.value,\r\n                isRedirectAutomatic: false\r\n            });\r\n        }\r\n        finally {\r\n            isSendingForgotUsername.value = false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Event handler for moving to the previous step.\r\n     */\r\n    function onMovePrevious(): void {\r\n        movePrevious();\r\n    }\r\n\r\n    /**\r\n     * Handles the event when a component triggers navigation.\r\n     *\r\n     * @param url The URL to navigate to.\r\n     * @returns an unresolving promise so the page/form remains unusable until the redirect is complete.\r\n     */\r\n    async function onNavigate(url: string): Promise<void> {\r\n        await navigate(url);\r\n    }\r\n\r\n    /**\r\n     * Event handler for no duplicate person being selected.\r\n     */\r\n    async function onNoDuplicatePersonSelected(): Promise<void> {\r\n        registrationInfo.value.selectedPersonId = 0;\r\n        await register();\r\n    }\r\n\r\n    /**\r\n     * Event handler for moving to the step prior to the \"Passwordless Confirmation Sent Step\".\r\n     */\r\n    function onPasswordlessConfirmationSentStepMovePrevious(): void {\r\n        passwordlessConfirmationCode.value = \"\";\r\n        registrationInfo.value.code = \"\";\r\n        movePrevious();\r\n    }\r\n\r\n    /**\r\n     * Event handler for the passwordless confirmation being submitted.\r\n     */\r\n    async function onPasswordlessConfirmationSubmitted(): Promise<void> {\r\n        registrationInfo.value.code = passwordlessConfirmationCode.value;\r\n\r\n        await register();\r\n    }\r\n\r\n    /**\r\n     * Event handler for registering the account.\r\n     */\r\n    async function onRegister(): Promise<void> {\r\n        await register();\r\n    }\r\n\r\n    /**\r\n     * Event handler for the \"Let me log in\" button being clicked.\r\n     */\r\n    async function onSendToLogin(): Promise<void> {\r\n        await navigate(config.loginPageUrl || \"/Login\");\r\n    }\r\n\r\n    //#endregion\r\n\r\n    //#region Functions\r\n\r\n    /**\r\n     * Clears the error message.\r\n     */\r\n    function clearError(): void {\r\n        errorMessage.value = null;\r\n    }\r\n\r\n    /**\r\n     * Moves to the previous step.\r\n     * Defaults to the registration step if no more steps.\r\n     */\r\n    function movePrevious(): void {\r\n        if (stepStack.value.length) {\r\n            stepStack.value.splice(stepStack.value.length - 1);\r\n        }\r\n        else {\r\n            showRegistrationStepNext();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Navigates to a URL.\r\n     *\r\n     * @param url The URL to navigate to.\r\n     * @returns an unresolving promise so the page/form remains disabled until the redirect is complete.\r\n     */\r\n    async function navigate(url: string): Promise<void> {\r\n        isNavigating.value = true;\r\n        window.location.href = url;\r\n        return new Promise((_resolve, _reject) => {\r\n            // Return an unresolving promise so the page/form remains disabled until the redirect is complete.\r\n        });\r\n    }\r\n\r\n    async function register(): Promise<void> {\r\n        try {\r\n            isRegistering.value = true;\r\n            clearError();\r\n            isUsernameAvailable.value = null;\r\n\r\n            const response = await invokeBlockAction<AccountEntryRegisterResponseBox>(\"Register\", { box: registrationInfo.value });\r\n\r\n            if (response?.data?.step || response?.data?.step === AccountEntryStep.Registration) {\r\n                switch (response.data.step) {\r\n                    case AccountEntryStep.Completed: {\r\n                        showCompletedStepNext(response.data.completedStepBag);\r\n                        break;\r\n                    }\r\n\r\n                    case AccountEntryStep.ConfirmationSent: {\r\n                        showConfirmationSentStepNext(response.data.confirmationSentStepBag);\r\n                        break;\r\n                    }\r\n\r\n                    case AccountEntryStep.DuplicatePersonSelection: {\r\n                        showDuplicatePersonSelectionStepNext(response.data.duplicatePersonSelectionStepBag);\r\n                        break;\r\n                    }\r\n\r\n                    case AccountEntryStep.PasswordlessConfirmationSent: {\r\n                        showPasswordlessConfirmationSentStepNext(response.data.passwordlessConfirmationSentStepBag);\r\n                        break;\r\n                    }\r\n\r\n                    case AccountEntryStep.ExistingAccount: {\r\n                        showExistingAccountStepNext(response.data.existingAccountStepBag);\r\n                        break;\r\n                    }\r\n\r\n                    case AccountEntryStep.Registration: {\r\n                        showRegistrationStepNext();\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                showError(response?.errorMessage || \"An unexpected error occurred\");\r\n            }\r\n        }\r\n        finally {\r\n            isRegistering.value = false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Completed\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showCompletedStepNext(options?: AccountEntryCompletedStepBag | null): void {\r\n        if (options) {\r\n            completedStepOptions.value = options;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.Completed);\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Confirmation Sent\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showConfirmationSentStepNext(options?: AccountEntryConfirmationSentStepBag | null): void {\r\n        if (options) {\r\n            confirmationSentStepOptions.value = options;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.ConfirmationSent);\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Duplicate Person Selection\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showDuplicatePersonSelectionStepNext(options?: AccountEntryDuplicatePersonSelectionStepBag | null): void {\r\n        if (options) {\r\n            duplicatePersonSelectionStepOptions.value = options;\r\n            selectedDuplicatePerson.value = null;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.DuplicatePersonSelection);\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Passwordless Confirmation Sent\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showPasswordlessConfirmationSentStepNext(options?: AccountEntryPasswordlessConfirmationSentStepBag | null): void {\r\n        if (options) {\r\n            passwordlessConfirmationSentStepOptions.value = options;\r\n            passwordlessConfirmationCode.value = \"\";\r\n            registrationInfo.value.state = options.state;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.PasswordlessConfirmationSent);\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Existing Account\" step.\r\n     *\r\n     * @param options The step options. Will not set new options if not supplied.\r\n     */\r\n    function showExistingAccountStepNext(options?: AccountEntryExistingAccountStepBag | null): void {\r\n        if (options) {\r\n            existingAccountStepOptions.value = options;\r\n        }\r\n        stepStack.value.push(AccountEntryStep.ExistingAccount);\r\n    }\r\n\r\n    /**\r\n     * Sets and shows an error message.\r\n     *\r\n     * @param error The error message to show.\r\n     */\r\n    function showError(error: string): void {\r\n        errorMessage.value = error;\r\n    }\r\n\r\n    /**\r\n     * Shows the \"Registration\" step.\r\n     */\r\n    function showRegistrationStepNext(): void {\r\n        // Clear duplicate person data.\r\n        selectedDuplicatePerson.value = null;\r\n        duplicatePersonSelectionStepOptions.value = {};\r\n\r\n        stepStack.value.push(AccountEntryStep.Registration);\r\n    }\r\n\r\n    //#endregion\r\n\r\n    showRegistrationStepNext();\r\n    onConfigurationValuesChanged(useReloadBlock());\r\n</script>"],"names":["onContinueClicked","tryNavigate","props","options","redirectUrl","url","emit","onMounted","isRedirectAutomatic","propertyNames","computed","_props$items","items","length","firstTruthyItem","find","item","getPropertyNames","getColumnSlotName","columnId","concat","getHeaderSlotName","getProperties","Object","entries","properties","map","_ref","_ref2","_slicedToArray","name","_value","internalModelValue","useVModelPassthrough","onNextClicked","value","onPreviousClicked","onEmailUsernameClicked","onSendToLoginClicked","internalValue","onFormSubmitted","usernameValidators","_params","trim","usernameFieldLabel","validateUsernameRegex","test","config","usernameRegexDescription","usernameValidationError","ref","isUsernameError","isEmailRequiredForUsername","usernameRegex","RegExp","internalUsername","get","_props$modelValue$use","_props$modelValue","modelValue","username","set","newValue","_objectSpread","internalPassword","_props$modelValue$pas","_props$modelValue2","password","internalConfirmPassword","_props$modelValue$con","_props$modelValue3","confirmPassword","confirmPasswordRules","usernameValidationCaption","isUsernameAvailable","toLowerCase","onUsernameChanged","_internalUsername$val","isUsernameAvailabilityCheckDisabled","internalPhoneNumber","_props$modelValue$pho","phoneNumber","internalCountryCode","_props$modelValue$cou","countryCode","internalIsSmsEnabled","isSmsEnabled","internalIsUnlisted","isUnlisted","phoneNumberRules","isRequired","arePhoneNumbersShown","campusPickerLabel","isAddressShown","isAddressRequired","isCampusPickerShown","isEmailHidden","internalFirstName","_props$modelValue$fir","firstName","internalLastName","_props$modelValue$las","lastName","internalEmail","_props$modelValue$ema","email","internalGender","_props$modelValue$gen","_props$modelValue4","gender","internalBirthday","_props$modelValue$bir","_props$modelValue5","birthday","getDefaultDatePartsPickerModel","internalPhoneNumbers","_props$modelValue6","phoneNumbers","internalAddress","_props$modelValue7","address","addressRules","internalArePhoneNumbersShown","some","p","isHidden","isListItemBag","object","onCampusChanged","campus","ValidationErrorMessages","fullName","shouldUsernameUpdateSetPersonInfoEmail","internalIsUsernameAvailable","internalAccountInfo","accountInfo","_props$modelValue$per","personInfo","internalPersonInfo","onCheckUsernameAvailability","onFormSubmit","_onFormSubmit","apply","arguments","_asyncToGenerator","isPersonInfoValid","isOldEnough","_internalPersonInfo$v","minimumAge","threshold","RockDateTime","now","addYears","birthdate","fromParts","year","month","day","isLaterThan","MinimumAge","replace","toString","useConfigurationValues","invokeBlockAction","useInvokeBlockAction","http","useHttp","removeCurrentUrlQueryParams","errorMessage","stepStack","accountEntryStep","registrationInfo","_config$phoneNumbers","selectedPersonId","state","duplicatePersonSelectionStepOptions","internalSelectedDuplicatePerson","selectedDuplicatePerson","id","passwordlessConfirmationSentStepOptions","passwordlessConfirmationCode","existingAccountStepOptions","confirmationSentStepOptions","completedStepOptions","isPlainCaption","isNavigating","isRegistering","isSendingForgotUsername","step","isCompleted","AccountEntryStep","Completed","isConfirmationSent","ConfirmationSent","isDuplicatePersonSelection","DuplicatePersonSelection","isExistingAccount","ExistingAccount","isRegistration","Registration","isPasswordlessConfirmationSent","PasswordlessConfirmationSent","sentLoginCaption","_x","_onCheckUsernameAvailability","response","data","onDuplicatePersonSelected","_onDuplicatePersonSelected","_selectedDuplicatePer","register","onDuplicatePersonSelectionStepMovePrevious","onMovePrevious","onEmailUsername","_onEmailUsername","_registrationInfo$val","_registrationInfo$val2","_registrationInfo$val3","bag","personId","result","isSuccess","showError","showCompletedStepNext","caption","movePrevious","onNavigate","_x2","_onNavigate","navigate","onNoDuplicatePersonSelected","_onNoDuplicatePersonSelected","onPasswordlessConfirmationSentStepMovePrevious","code","onPasswordlessConfirmationSubmitted","_onPasswordlessConfirmationSubmitted","onRegister","_onRegister","onSendToLogin","_onSendToLogin","loginPageUrl","clearError","splice","showRegistrationStepNext","_x3","_navigate","window","location","href","Promise","_resolve","_reject","_register","_response$data","_response$data2","box","completedStepBag","showConfirmationSentStepNext","confirmationSentStepBag","showDuplicatePersonSelectionStepNext","duplicatePersonSelectionStepBag","showPasswordlessConfirmationSentStepNext","passwordlessConfirmationSentStepBag","showExistingAccountStepNext","existingAccountStepBag","push","error","onConfigurationValuesChanged","useReloadBlock"],"mappings":"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"}