Unify the web UI on shared controls and let pipeline columns be managed on the board.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -10,7 +10,10 @@ import {
|
||||
startOfLocalDay,
|
||||
toFaDigits,
|
||||
} from '@/lib/jalali';
|
||||
import UiButton from '@/components/ui/UiButton.vue';
|
||||
import UiModal from '@/components/ui/UiModal.vue';
|
||||
import UiIcon from '@/components/UiIcon.vue';
|
||||
import ActivityFormView from '@/views/ActivityFormView.vue';
|
||||
import type {
|
||||
ActivityDto,
|
||||
ActivityFilter,
|
||||
@@ -62,6 +65,10 @@ const q = ref(typeof route.query.q === 'string' ? route.query.q : '');
|
||||
const typeFilter = ref<TypeFilter>('all');
|
||||
const filterOpen = ref(false);
|
||||
const ideasOpen = ref(false);
|
||||
const activityModal = ref<{
|
||||
type?: ActivityType;
|
||||
title?: string;
|
||||
} | null>(null);
|
||||
const menuId = ref<string | null>(null);
|
||||
const counts = ref<Record<ActivityFilter, number>>({
|
||||
today: 0,
|
||||
@@ -282,10 +289,10 @@ onMounted(() => {
|
||||
<p class="lead">تماس، جلسه و وظیفه — امروز و عقبافتادهها یکجا.</p>
|
||||
</div>
|
||||
<div class="head-actions">
|
||||
<RouterLink class="btn primary" :to="{ name: 'activity-new' }">
|
||||
<span>+</span>
|
||||
<UiButton type="button" @click="activityModal = {}">
|
||||
<UiIcon name="plus" :size="16" />
|
||||
فعالیت جدید
|
||||
</RouterLink>
|
||||
</UiButton>
|
||||
<RouterLink class="btn ghost" :to="{ name: 'activities-calendar' }">
|
||||
<UiIcon name="calendar" :size="18" />
|
||||
تقویم
|
||||
@@ -360,24 +367,23 @@ onMounted(() => {
|
||||
: 'فیلتر یا جستجو را عوض کنید، یا یک فعالیت جدید بسازید.'
|
||||
}}
|
||||
</p>
|
||||
<RouterLink class="btn primary wide" :to="{ name: 'activity-new' }">
|
||||
<span>+</span>
|
||||
<UiButton block type="button" @click="activityModal = {}">
|
||||
{{ trulyEmpty ? 'اولین فعالیتت رو ثبت کن' : 'فعالیت جدید' }}
|
||||
</RouterLink>
|
||||
</UiButton>
|
||||
<button class="btn ghost wide" type="button" @click="ideasOpen = !ideasOpen">
|
||||
<UiIcon name="lightbulb" :size="18" />
|
||||
ایدههایی برای شروع
|
||||
</button>
|
||||
<div v-if="ideasOpen" class="idea-list">
|
||||
<RouterLink :to="{ name: 'activity-new', query: { type: 'call', title: 'تماس پیگیری' } }">
|
||||
<button type="button" @click="activityModal = { type: 'call', title: 'تماس پیگیری' }">
|
||||
تماس پیگیری
|
||||
</RouterLink>
|
||||
<RouterLink :to="{ name: 'activity-new', query: { type: 'meeting', title: 'جلسه دمو' } }">
|
||||
</button>
|
||||
<button type="button" @click="activityModal = { type: 'meeting', title: 'جلسه دمو' }">
|
||||
جلسه دمو
|
||||
</RouterLink>
|
||||
<RouterLink :to="{ name: 'activity-new', query: { type: 'task', title: 'وظیفه یادآوری' } }">
|
||||
</button>
|
||||
<button type="button" @click="activityModal = { type: 'task', title: 'وظیفه یادآوری' }">
|
||||
وظیفه یادآوری
|
||||
</RouterLink>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -553,6 +559,21 @@ onMounted(() => {
|
||||
<p class="per">نمایش {{ toFaDigits(PAGE_SIZE) }} در هر صفحه</p>
|
||||
</footer>
|
||||
</template>
|
||||
|
||||
<UiModal
|
||||
:open="Boolean(activityModal)"
|
||||
title="فعالیت جدید"
|
||||
@close="activityModal = null"
|
||||
>
|
||||
<ActivityFormView
|
||||
v-if="activityModal"
|
||||
embedded
|
||||
:initial-type="activityModal.type"
|
||||
:initial-title="activityModal.title"
|
||||
@saved="activityModal = null; void load(); void loadCounts()"
|
||||
@cancel="activityModal = null"
|
||||
/>
|
||||
</UiModal>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
@@ -792,7 +813,13 @@ h1 {
|
||||
width: min(100%, 320px);
|
||||
}
|
||||
|
||||
.idea-list a {
|
||||
.idea-list a,
|
||||
.idea-list button {
|
||||
border: 0;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
background: #f8fafc;
|
||||
border-radius: 10px;
|
||||
padding: 0.65rem 0.8rem;
|
||||
|
||||
Reference in New Issue
Block a user