{"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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"}