You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.9 KiB
130 lines
3.9 KiB
<!--
|
|
NewEditAccountView.vue - Account Identity Editor
|
|
|
|
A simple view for editing user account identity information.
|
|
Allows users to update their display name (firstName) which is used
|
|
throughout the application for user identification.
|
|
|
|
Key Features:
|
|
- Edit display name (firstName field)
|
|
- Save changes to account settings
|
|
- Cancel changes and return to previous view
|
|
- Handles deprecated lastName field for backward compatibility
|
|
|
|
Migration Status: ✅ Complete Enhanced Triple Migration Pattern
|
|
- Phase 1: Database Migration (PlatformServiceMixin) ✅
|
|
- Phase 2: SQL Abstraction (Service methods) ✅
|
|
- Phase 3: Notification Migration (N/A - no notifications) ✅
|
|
- Phase 4: Template Streamlining (Simple template) ✅
|
|
|
|
Author: Matthew Raymer
|
|
Last Updated: 2025-07-07
|
|
-->
|
|
<template>
|
|
<section id="Content" class="p-6 pb-24 max-w-3xl mx-auto">
|
|
<!-- Breadcrumb -->
|
|
<div id="ViewBreadcrumb" class="mb-8">
|
|
<h1 class="text-lg text-center font-light relative px-7">
|
|
<!-- Cancel -->
|
|
<button
|
|
class="text-lg text-center px-2 py-1 absolute -left-2 -top-1"
|
|
@click="$router.back()"
|
|
>
|
|
<font-awesome icon="chevron-left" class="fa-fw"></font-awesome>
|
|
</button>
|
|
Edit Identity
|
|
</h1>
|
|
</div>
|
|
|
|
<input
|
|
v-model="givenName"
|
|
type="text"
|
|
placeholder="Name"
|
|
class="block w-full rounded border border-slate-400 mb-4 px-3 py-2"
|
|
/>
|
|
|
|
<div class="mt-8">
|
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-2">
|
|
<button
|
|
type="button"
|
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
|
@click="onClickSaveChanges()"
|
|
>
|
|
Save Changes
|
|
</button>
|
|
<!-- SHOW ME instead while processing saving changes -->
|
|
<button
|
|
type="button"
|
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
|
@click="onClickCancel()"
|
|
>
|
|
Cancel
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { Component, Vue } from "vue-facing-decorator";
|
|
import { Router } from "vue-router";
|
|
|
|
import { PlatformServiceMixin } from "@/utils/PlatformServiceMixin";
|
|
|
|
@Component({
|
|
components: {},
|
|
mixins: [PlatformServiceMixin],
|
|
})
|
|
export default class NewEditAccountView extends Vue {
|
|
$router!: Router;
|
|
|
|
/**
|
|
* User's display name for editing
|
|
* Combines firstName and deprecated lastName for backward compatibility
|
|
*/
|
|
givenName = "";
|
|
|
|
/**
|
|
* Vue lifecycle hook - Initialize component with current account settings
|
|
*
|
|
* Loads the user's current name from account settings and populates
|
|
* the editing field. Handles deprecated lastName field by concatenating
|
|
* with firstName for display purposes.
|
|
*
|
|
* @async
|
|
*/
|
|
async created() {
|
|
const settings = await this.$accountSettings();
|
|
this.givenName =
|
|
(settings.firstName || "") +
|
|
(settings.lastName ? ` ${settings.lastName}` : ""); // deprecated, pre v 0.1.3
|
|
}
|
|
|
|
/**
|
|
* Save the edited name changes to account settings
|
|
*
|
|
* Updates the user's firstName in account settings with the current
|
|
* givenName value. Clears the deprecated lastName field and navigates
|
|
* back to the previous view upon successful save.
|
|
*
|
|
* @async
|
|
*/
|
|
async onClickSaveChanges() {
|
|
await this.$updateSettings({
|
|
firstName: this.givenName,
|
|
lastName: "", // deprecated, pre v 0.1.3
|
|
});
|
|
this.$router.back();
|
|
}
|
|
|
|
/**
|
|
* Cancel editing and return to previous view
|
|
*
|
|
* Discards any unsaved changes and navigates back to the
|
|
* previous view without updating account settings.
|
|
*/
|
|
onClickCancel() {
|
|
this.$router.back();
|
|
}
|
|
}
|
|
</script>
|
|
|