style: format web apps with prettier and sort imports
Apply repo-wide Prettier/lint normalization across admin-web, desktop-client and ops-web: single quotes, no semicolons, trailing commas, consistent line wrapping, and import ordering. Also drop an unused brand-logo import in DesktopShell.vue. No behavior changes — formatting only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,11 +8,7 @@ import {
|
||||
ThunderboltOutlined,
|
||||
} from '@ant-design/icons-vue'
|
||||
import { ApiClientError } from '@geo/http-client'
|
||||
import type {
|
||||
BrandLibrarySummary,
|
||||
QuestionCandidate,
|
||||
QuestionSource,
|
||||
} from '@geo/shared-types'
|
||||
import type { BrandLibrarySummary, QuestionCandidate, QuestionSource } from '@geo/shared-types'
|
||||
import { useMutation, useQuery, useQueryClient } from '@tanstack/vue-query'
|
||||
import { message } from 'ant-design-vue'
|
||||
import { computed, onBeforeUnmount, reactive, ref } from 'vue'
|
||||
@@ -896,7 +892,9 @@ function backToBrands(): void {
|
||||
{{ t('brands.questions.aiFill.button') }}
|
||||
</a-button>
|
||||
<div class="tool-estimate">
|
||||
{{ t('brands.questions.combination.estimate', { count: expansionToolPreviewCount }) }}
|
||||
{{
|
||||
t('brands.questions.combination.estimate', { count: expansionToolPreviewCount })
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -905,10 +903,19 @@ function backToBrands(): void {
|
||||
<div class="word-column" data-col="region">
|
||||
<div class="word-column__head">
|
||||
<strong>{{ t('brands.questions.combination.region') }}</strong>
|
||||
<span>{{ splitLines(expansionForm.region).length || t('brands.questions.combination.defaultWord') }}</span>
|
||||
<span>
|
||||
{{
|
||||
splitLines(expansionForm.region).length ||
|
||||
t('brands.questions.combination.defaultWord')
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="word-column__list">
|
||||
<div v-for="(item, index) in expansionForm.region" :key="index" class="word-column__item">
|
||||
<div
|
||||
v-for="(item, index) in expansionForm.region"
|
||||
:key="index"
|
||||
class="word-column__item"
|
||||
>
|
||||
<span class="word-column__dot"></span>
|
||||
<input
|
||||
v-model="expansionForm.region[index]"
|
||||
@@ -919,17 +926,33 @@ function backToBrands(): void {
|
||||
@keydown.backspace="handleBackspace('region', index, $event)"
|
||||
@blur="handleBlur('region', index)"
|
||||
/>
|
||||
<button v-if="index < expansionForm.region.length - 1" class="word-column__remove" tabindex="-1" @click="removeItem('region', index)">×</button>
|
||||
<button
|
||||
v-if="index < expansionForm.region.length - 1"
|
||||
class="word-column__remove"
|
||||
tabindex="-1"
|
||||
@click="removeItem('region', index)"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-column" data-col="prefix">
|
||||
<div class="word-column__head">
|
||||
<strong>{{ t('brands.questions.combination.prefix') }}</strong>
|
||||
<span>{{ splitLines(expansionForm.prefix).length || t('brands.questions.combination.defaultWord') }}</span>
|
||||
<span>
|
||||
{{
|
||||
splitLines(expansionForm.prefix).length ||
|
||||
t('brands.questions.combination.defaultWord')
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="word-column__list">
|
||||
<div v-for="(item, index) in expansionForm.prefix" :key="index" class="word-column__item">
|
||||
<div
|
||||
v-for="(item, index) in expansionForm.prefix"
|
||||
:key="index"
|
||||
class="word-column__item"
|
||||
>
|
||||
<span class="word-column__dot"></span>
|
||||
<input
|
||||
v-model="expansionForm.prefix[index]"
|
||||
@@ -940,7 +963,14 @@ function backToBrands(): void {
|
||||
@keydown.backspace="handleBackspace('prefix', index, $event)"
|
||||
@blur="handleBlur('prefix', index)"
|
||||
/>
|
||||
<button v-if="index < expansionForm.prefix.length - 1" class="word-column__remove" tabindex="-1" @click="removeItem('prefix', index)">×</button>
|
||||
<button
|
||||
v-if="index < expansionForm.prefix.length - 1"
|
||||
class="word-column__remove"
|
||||
tabindex="-1"
|
||||
@click="removeItem('prefix', index)"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -950,7 +980,11 @@ function backToBrands(): void {
|
||||
<span>{{ splitLines(expansionForm.core).length }}</span>
|
||||
</div>
|
||||
<div class="word-column__list">
|
||||
<div v-for="(item, index) in expansionForm.core" :key="index" class="word-column__item">
|
||||
<div
|
||||
v-for="(item, index) in expansionForm.core"
|
||||
:key="index"
|
||||
class="word-column__item"
|
||||
>
|
||||
<span class="word-column__dot"></span>
|
||||
<input
|
||||
v-model="expansionForm.core[index]"
|
||||
@@ -961,7 +995,14 @@ function backToBrands(): void {
|
||||
@keydown.backspace="handleBackspace('core', index, $event)"
|
||||
@blur="handleBlur('core', index)"
|
||||
/>
|
||||
<button v-if="index < expansionForm.core.length - 1" class="word-column__remove" tabindex="-1" @click="removeItem('core', index)">×</button>
|
||||
<button
|
||||
v-if="index < expansionForm.core.length - 1"
|
||||
class="word-column__remove"
|
||||
tabindex="-1"
|
||||
@click="removeItem('core', index)"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -971,7 +1012,11 @@ function backToBrands(): void {
|
||||
<span>{{ splitLines(expansionForm.industry).length }}</span>
|
||||
</div>
|
||||
<div class="word-column__list">
|
||||
<div v-for="(item, index) in expansionForm.industry" :key="index" class="word-column__item">
|
||||
<div
|
||||
v-for="(item, index) in expansionForm.industry"
|
||||
:key="index"
|
||||
class="word-column__item"
|
||||
>
|
||||
<span class="word-column__dot"></span>
|
||||
<input
|
||||
v-model="expansionForm.industry[index]"
|
||||
@@ -982,17 +1027,33 @@ function backToBrands(): void {
|
||||
@keydown.backspace="handleBackspace('industry', index, $event)"
|
||||
@blur="handleBlur('industry', index)"
|
||||
/>
|
||||
<button v-if="index < expansionForm.industry.length - 1" class="word-column__remove" tabindex="-1" @click="removeItem('industry', index)">×</button>
|
||||
<button
|
||||
v-if="index < expansionForm.industry.length - 1"
|
||||
class="word-column__remove"
|
||||
tabindex="-1"
|
||||
@click="removeItem('industry', index)"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-column" data-col="suffix">
|
||||
<div class="word-column__head">
|
||||
<strong>{{ t('brands.questions.combination.suffix') }}</strong>
|
||||
<span>{{ splitLines(expansionForm.suffix).length || t('brands.questions.combination.defaultWord') }}</span>
|
||||
<span>
|
||||
{{
|
||||
splitLines(expansionForm.suffix).length ||
|
||||
t('brands.questions.combination.defaultWord')
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="word-column__list">
|
||||
<div v-for="(item, index) in expansionForm.suffix" :key="index" class="word-column__item">
|
||||
<div
|
||||
v-for="(item, index) in expansionForm.suffix"
|
||||
:key="index"
|
||||
class="word-column__item"
|
||||
>
|
||||
<span class="word-column__dot"></span>
|
||||
<input
|
||||
v-model="expansionForm.suffix[index]"
|
||||
@@ -1003,7 +1064,14 @@ function backToBrands(): void {
|
||||
@keydown.backspace="handleBackspace('suffix', index, $event)"
|
||||
@blur="handleBlur('suffix', index)"
|
||||
/>
|
||||
<button v-if="index < expansionForm.suffix.length - 1" class="word-column__remove" tabindex="-1" @click="removeItem('suffix', index)">×</button>
|
||||
<button
|
||||
v-if="index < expansionForm.suffix.length - 1"
|
||||
class="word-column__remove"
|
||||
tabindex="-1"
|
||||
@click="removeItem('suffix', index)"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1068,15 +1136,14 @@ function backToBrands(): void {
|
||||
<div v-if="!candidateRows.length" class="candidate-empty">
|
||||
{{ t('brands.questions.emptyCandidates') }}
|
||||
</div>
|
||||
<div
|
||||
v-for="row in candidateRows"
|
||||
:key="row.id"
|
||||
class="candidate-row"
|
||||
>
|
||||
<div v-for="row in candidateRows" :key="row.id" class="candidate-row">
|
||||
<a-checkbox
|
||||
:checked="row.selected"
|
||||
:disabled="isCandidateSelectionDisabled(row)"
|
||||
@change="(event: Event) => updateCandidateSelection(row, (event.target as HTMLInputElement).checked)"
|
||||
@change="
|
||||
(event: Event) =>
|
||||
updateCandidateSelection(row, (event.target as HTMLInputElement).checked)
|
||||
"
|
||||
/>
|
||||
<a-textarea
|
||||
v-if="editingCandidateId === row.id"
|
||||
@@ -1087,11 +1154,7 @@ function backToBrands(): void {
|
||||
@blur="stopEditingCandidate(row)"
|
||||
@keydown.enter="stopEditingCandidate(row)"
|
||||
/>
|
||||
<span
|
||||
v-else
|
||||
class="candidate-row__text"
|
||||
@dblclick="startEditingCandidate(row.id)"
|
||||
>
|
||||
<span v-else class="candidate-row__text" @dblclick="startEditingCandidate(row.id)">
|
||||
{{ row.text }}
|
||||
</span>
|
||||
<a-tag v-if="editingCandidateId !== row.id && row.duplicate" color="orange">
|
||||
@@ -1101,7 +1164,12 @@ function backToBrands(): void {
|
||||
{{ t('brands.questions.badges.tooShort') }}
|
||||
</a-tag>
|
||||
<div v-if="editingCandidateId !== row.id" class="candidate-row__actions">
|
||||
<a-button type="text" shape="circle" class="action-btn-edit" @click="startEditingCandidate(row.id)">
|
||||
<a-button
|
||||
type="text"
|
||||
shape="circle"
|
||||
class="action-btn-edit"
|
||||
@click="startEditingCandidate(row.id)"
|
||||
>
|
||||
<EditOutlined />
|
||||
</a-button>
|
||||
<a-button type="text" shape="circle" danger @click="removeCandidate(row.id)">
|
||||
@@ -1429,8 +1497,6 @@ function backToBrands(): void {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.tool-estimate {
|
||||
padding: 8px 12px;
|
||||
color: #475569;
|
||||
@@ -1460,7 +1526,9 @@ function backToBrands(): void {
|
||||
.word-column:focus-within {
|
||||
background: #ffffff;
|
||||
border-color: #1677ff;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05), 0 0 0 2px rgba(22, 119, 255, 0.1);
|
||||
box-shadow:
|
||||
0 4px 12px rgba(0, 0, 0, 0.05),
|
||||
0 0 0 2px rgba(22, 119, 255, 0.1);
|
||||
}
|
||||
|
||||
.word-column__head {
|
||||
@@ -1573,7 +1641,9 @@ function backToBrands(): void {
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
padding: 0 4px;
|
||||
transition: opacity 0.2s, color 0.2s;
|
||||
transition:
|
||||
opacity 0.2s,
|
||||
color 0.2s;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
Reference in New Issue
Block a user