forked from jsnbuchanan/crowd-funder-for-time-pwa
style: improve code formatting and readability
- Format Vue template attributes and event handlers for better readability - Reorganize component props and event bindings - Improve error handling and state management in QR scanner - Add proper aria labels and accessibility attributes - Refactor camera state handling in WebInlineQRScanner - Clean up promise handling in WebPlatformService - Standardize string quotes to double quotes - Improve component structure and indentation No functional changes, purely code style and maintainability improvements.
This commit is contained in:
@@ -3,7 +3,12 @@
|
||||
<TopMessage />
|
||||
|
||||
<!-- CONTENT -->
|
||||
<main id="Content" class="p-6 pb-24 max-w-3xl mx-auto" role="main" aria-label="Account Profile">
|
||||
<main
|
||||
id="Content"
|
||||
class="p-6 pb-24 max-w-3xl mx-auto"
|
||||
role="main"
|
||||
aria-label="Account Profile"
|
||||
>
|
||||
<!-- Heading -->
|
||||
<h1 id="ViewHeading" class="text-4xl text-center font-light">
|
||||
Your Identity
|
||||
@@ -78,31 +83,28 @@
|
||||
:icon-size="96"
|
||||
:profile-image-url="profileImageUrl"
|
||||
class="inline-block align-text-bottom border border-slate-300 rounded"
|
||||
@click="showLargeIdenticonUrl = profileImageUrl"
|
||||
role="button"
|
||||
aria-label="View profile image in large size"
|
||||
tabindex="0"
|
||||
@click="showLargeIdenticonUrl = profileImageUrl"
|
||||
/>
|
||||
<font-awesome
|
||||
icon="trash-can"
|
||||
class="text-red-500 fa-fw ml-8 mt-8 w-12 h-12"
|
||||
@click="confirmDeleteImage"
|
||||
role="button"
|
||||
aria-label="Delete profile image"
|
||||
tabindex="0"
|
||||
@click="confirmDeleteImage"
|
||||
/>
|
||||
</span>
|
||||
<div v-else class="text-center">
|
||||
<template v-if="isRegistered">
|
||||
<div class="inline-block text-md 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-4 py-2 rounded-md" @click="openImageDialog()">
|
||||
<font-awesome
|
||||
icon="user"
|
||||
class="fa-fw"
|
||||
/>
|
||||
<font-awesome
|
||||
icon="camera"
|
||||
class="fa-fw"
|
||||
/>
|
||||
<div
|
||||
class="inline-block text-md 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-4 py-2 rounded-md"
|
||||
@click="openImageDialog()"
|
||||
>
|
||||
<font-awesome icon="user" class="fa-fw" />
|
||||
<font-awesome icon="camera" class="fa-fw" />
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
@@ -124,7 +126,10 @@
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<ImageMethodDialog ref="imageMethodDialog" :isRegistered="isRegistered" />
|
||||
<ImageMethodDialog
|
||||
ref="imageMethodDialog"
|
||||
:is-registered="isRegistered"
|
||||
/>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<div class="flex justify-center text-center text-sm leading-tight mb-1">
|
||||
@@ -171,14 +176,20 @@
|
||||
<code class="truncate" aria-label="Your DID">{{ activeDid }}</code>
|
||||
<button
|
||||
class="ml-2"
|
||||
aria-label="Copy DID to clipboard"
|
||||
@click="
|
||||
doCopyTwoSecRedo(activeDid, () => (showDidCopy = !showDidCopy))
|
||||
"
|
||||
aria-label="Copy DID to clipboard"
|
||||
>
|
||||
<font-awesome icon="copy" class="text-slate-400 fa-fw" aria-hidden="true"></font-awesome>
|
||||
<font-awesome
|
||||
icon="copy"
|
||||
class="text-slate-400 fa-fw"
|
||||
aria-hidden="true"
|
||||
></font-awesome>
|
||||
</button>
|
||||
<span v-show="showDidCopy" role="status" aria-live="polite">Copied</span>
|
||||
<span v-show="showDidCopy" role="status" aria-live="polite"
|
||||
>Copied</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="text-blue-500 text-sm font-bold">
|
||||
@@ -201,8 +212,8 @@
|
||||
aria-live="polite"
|
||||
>
|
||||
<p class="mb-2">
|
||||
Before you can publicly announce a new project or time
|
||||
commitment, a friend needs to register you.
|
||||
Before you can publicly announce a new project or time commitment, a
|
||||
friend needs to register you.
|
||||
</p>
|
||||
<router-link
|
||||
:to="{ name: 'contact-qr' }"
|
||||
@@ -224,19 +235,22 @@
|
||||
Reminder Notification
|
||||
<button
|
||||
class="text-slate-400 fa-fw cursor-pointer"
|
||||
@click.stop="showReminderNotificationInfo"
|
||||
aria-label="Learn more about reminder notifications"
|
||||
@click.stop="showReminderNotificationInfo"
|
||||
>
|
||||
<font-awesome icon="question-circle" aria-hidden="true"></font-awesome>
|
||||
<font-awesome
|
||||
icon="question-circle"
|
||||
aria-hidden="true"
|
||||
></font-awesome>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="relative ml-2 cursor-pointer"
|
||||
@click="showReminderNotificationChoice()"
|
||||
role="switch"
|
||||
:aria-checked="notifyingReminder"
|
||||
aria-label="Toggle reminder notifications"
|
||||
tabindex="0"
|
||||
@click="showReminderNotificationChoice()"
|
||||
>
|
||||
<!-- input -->
|
||||
<input v-model="notifyingReminder" type="checkbox" class="sr-only" />
|
||||
@@ -297,7 +311,9 @@
|
||||
class="bg-slate-100 rounded-md overflow-hidden px-4 py-4 mt-8 mb-8"
|
||||
aria-labelledby="searchLocationHeading"
|
||||
>
|
||||
<h2 id="searchLocationHeading" class="mb-2 font-bold">Location for Searches</h2>
|
||||
<h2 id="searchLocationHeading" class="mb-2 font-bold">
|
||||
Location for Searches
|
||||
</h2>
|
||||
<router-link
|
||||
:to="{ name: 'search-area' }"
|
||||
class="block w-full text-center 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-4 py-2 rounded-md"
|
||||
@@ -316,8 +332,8 @@
|
||||
Public Profile
|
||||
<button
|
||||
class="text-slate-400 fa-fw cursor-pointer"
|
||||
@click="showProfileInfo"
|
||||
aria-label="Learn more about public profile"
|
||||
@click="showProfileInfo"
|
||||
>
|
||||
<font-awesome icon="circle-info" aria-hidden="true"></font-awesome>
|
||||
</button>
|
||||
@@ -408,9 +424,18 @@
|
||||
>
|
||||
<h2 id="usageLimitsHeading" class="mb-2 font-bold">Usage Limits</h2>
|
||||
<!-- show spinner if loading limits -->
|
||||
<div v-if="loadingLimits" class="text-center" role="status" aria-live="polite">
|
||||
<div
|
||||
v-if="loadingLimits"
|
||||
class="text-center"
|
||||
role="status"
|
||||
aria-live="polite"
|
||||
>
|
||||
Checking…
|
||||
<font-awesome icon="spinner" class="fa-spin" aria-hidden="true"></font-awesome>
|
||||
<font-awesome
|
||||
icon="spinner"
|
||||
class="fa-spin"
|
||||
aria-hidden="true"
|
||||
></font-awesome>
|
||||
</div>
|
||||
<div class="mb-4 text-center">
|
||||
{{ limitsMessage }}
|
||||
@@ -468,9 +493,13 @@
|
||||
class="text-blue-500 text-sm font-semibold mb-3 cursor-pointer"
|
||||
@click="showAdvanced = !showAdvanced"
|
||||
>
|
||||
{{ showAdvanced ? 'Hide Advanced Settings' : 'Show Advanced Settings' }}
|
||||
{{ showAdvanced ? "Hide Advanced Settings" : "Show Advanced Settings" }}
|
||||
</h3>
|
||||
<section v-if="showAdvanced || showGeneralAdvanced" id="sectionAdvanced" aria-labelledby="advancedHeading">
|
||||
<section
|
||||
v-if="showAdvanced || showGeneralAdvanced"
|
||||
id="sectionAdvanced"
|
||||
aria-labelledby="advancedHeading"
|
||||
>
|
||||
<h2 id="advancedHeading" class="sr-only">Advanced Settings</h2>
|
||||
<p class="text-rose-600 mb-8">
|
||||
Beware: the features here can be confusing and even change data in ways
|
||||
@@ -642,8 +671,14 @@
|
||||
|
||||
<div id="sectionClaimServer">
|
||||
<h2 class="text-slate-500 text-sm font-bold mt-4">Claim Server</h2>
|
||||
<div class="px-4 py-4" role="group" aria-labelledby="claimServerHeading">
|
||||
<h3 id="claimServerHeading" class="sr-only">Claim Server Configuration</h3>
|
||||
<div
|
||||
class="px-4 py-4"
|
||||
role="group"
|
||||
aria-labelledby="claimServerHeading"
|
||||
>
|
||||
<h3 id="claimServerHeading" class="sr-only">
|
||||
Claim Server Configuration
|
||||
</h3>
|
||||
<label for="apiServerInput" class="sr-only">API Server URL</label>
|
||||
<input
|
||||
id="apiServerInput"
|
||||
@@ -653,18 +688,15 @@
|
||||
aria-describedby="apiServerDescription"
|
||||
placeholder="Enter API server URL"
|
||||
/>
|
||||
<div
|
||||
id="apiServerDescription"
|
||||
class="sr-only"
|
||||
role="tooltip"
|
||||
>
|
||||
Enter the URL for the claim server. You can use the buttons below to quickly set common server URLs.
|
||||
<div id="apiServerDescription" class="sr-only" role="tooltip">
|
||||
Enter the URL for the claim server. You can use the buttons below to
|
||||
quickly set common server URLs.
|
||||
</div>
|
||||
<button
|
||||
v-if="apiServerInput != apiServer"
|
||||
class="w-full px-4 rounded bg-yellow-500 border border-slate-400"
|
||||
@click="onClickSaveApiServer()"
|
||||
aria-label="Save API server URL"
|
||||
@click="onClickSaveApiServer()"
|
||||
>
|
||||
<font-awesome
|
||||
icon="floppy-disk"
|
||||
@@ -676,22 +708,22 @@
|
||||
<div class="mt-2" role="group" aria-label="Quick server selection">
|
||||
<button
|
||||
class="px-3 rounded bg-slate-200 border border-slate-400"
|
||||
@click="apiServerInput = AppConstants.PROD_ENDORSER_API_SERVER"
|
||||
aria-label="Use production server URL"
|
||||
@click="apiServerInput = AppConstants.PROD_ENDORSER_API_SERVER"
|
||||
>
|
||||
Use Prod
|
||||
</button>
|
||||
<button
|
||||
class="px-3 rounded bg-slate-200 border border-slate-400"
|
||||
@click="apiServerInput = AppConstants.TEST_ENDORSER_API_SERVER"
|
||||
aria-label="Use test server URL"
|
||||
@click="apiServerInput = AppConstants.TEST_ENDORSER_API_SERVER"
|
||||
>
|
||||
Use Test
|
||||
</button>
|
||||
<button
|
||||
class="px-3 rounded bg-slate-200 border border-slate-400"
|
||||
@click="apiServerInput = AppConstants.LOCAL_ENDORSER_API_SERVER"
|
||||
aria-label="Use local server URL"
|
||||
@click="apiServerInput = AppConstants.LOCAL_ENDORSER_API_SERVER"
|
||||
>
|
||||
Use Local
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user