Skip to content

Commit d81325f

Browse files
committed
fix(manager): address PR #303 review for orders grid drafts toggle
Move the show-drafts checkbox to the grid header next to stats, persist the user choice in localStorage, and add an xPDOQuery type hint on the backend.
1 parent 22bb74b commit d81325f

2 files changed

Lines changed: 32 additions & 12 deletions

File tree

core/components/minishop3/src/Controllers/Api/Manager/OrdersController.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1572,8 +1572,10 @@ protected function shouldShowDrafts(array $params): bool
15721572

15731573
/**
15741574
* Exclude draft status from getList query unless drafts are explicitly shown.
1575+
*
1576+
* @param \xPDO\Om\xPDOQuery $c Query object
15751577
*/
1576-
protected function applyDraftVisibilityFilter($c, array $params): void
1578+
protected function applyDraftVisibilityFilter(\xPDO\Om\xPDOQuery $c, array $params): void
15771579
{
15781580
if ($this->shouldShowDrafts($params)) {
15791581
return;

vueManager/src/components/OrdersGrid.vue

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,21 @@ const toast = useToast()
2222
const { _ } = useLexicon()
2323
2424
const ms3Config = typeof ms3 !== 'undefined' ? ms3.config : null
25-
const showDrafts = ref(Boolean(ms3Config?.order_show_drafts))
25+
const SHOW_DRAFTS_STORAGE_KEY = 'ms3_orders_show_drafts'
26+
27+
function readShowDraftsPreference() {
28+
try {
29+
const stored = localStorage.getItem(SHOW_DRAFTS_STORAGE_KEY)
30+
if (stored !== null) {
31+
return stored === '1'
32+
}
33+
} catch {
34+
/* localStorage unavailable */
35+
}
36+
return Boolean(ms3Config?.order_show_drafts)
37+
}
38+
39+
const showDrafts = ref(readShowDraftsPreference())
2640
2741
/** Filter keys sent as direct API params (not filter_ prefix). */
2842
const DIRECT_FILTER_KEYS = new Set([
@@ -391,6 +405,11 @@ const hasActiveFilters = computed(() => {
391405
})
392406
393407
function toggleShowDrafts() {
408+
try {
409+
localStorage.setItem(SHOW_DRAFTS_STORAGE_KEY, showDrafts.value ? '1' : '0')
410+
} catch {
411+
/* localStorage unavailable */
412+
}
394413
first.value = 0
395414
loadOrders()
396415
}
@@ -569,6 +588,15 @@ onMounted(async () => {
569588
@click="createNewOrder"
570589
/>
571590
</div>
591+
<div class="show-drafts-toggle">
592+
<Checkbox
593+
v-model="showDrafts"
594+
input-id="orders-show-drafts"
595+
binary
596+
@change="toggleShowDrafts"
597+
/>
598+
<label for="orders-show-drafts">{{ _('ms3_orders_show_drafts') }}</label>
599+
</div>
572600
<div class="grid-stats" :title="_('orders_stat_tooltip')">
573601
<span class="stat-item">
574602
<i class="pi pi-calendar"></i>
@@ -670,15 +698,6 @@ onMounted(async () => {
670698
671699
<!-- Filter buttons -->
672700
<div class="filter-buttons">
673-
<div class="show-drafts-toggle">
674-
<Checkbox
675-
v-model="showDrafts"
676-
input-id="orders-show-drafts"
677-
binary
678-
@change="toggleShowDrafts"
679-
/>
680-
<label for="orders-show-drafts">{{ _('ms3_orders_show_drafts') }}</label>
681-
</div>
682701
<Button
683702
:label="_('apply_filters')"
684703
icon="pi pi-filter"
@@ -917,7 +936,6 @@ onMounted(async () => {
917936
display: flex;
918937
align-items: center;
919938
gap: 0.5rem;
920-
margin-right: auto;
921939
}
922940
923941
.show-drafts-toggle label {

0 commit comments

Comments
 (0)