1
1
<script setup lang="ts">
2
- import { NDatePicker , NFlex , NIcon , NInput , NSelect , NTooltip } from ' naive-ui' ;
3
- import { computed , defineProps , ref , watch } from ' vue' ;
2
+ import { NDatePicker , NFlex , NIcon , NInput } from ' naive-ui' ;
4
3
5
- import type { SelectOption } from ' naive-ui ' ;
4
+ import { computed , defineProps , ref , watch } from ' vue ' ;
6
5
6
+ import NavbarPageSizeSelect from ' ~/components/common/navbar/NavbarPageSizeSelect.vue' ;
7
7
import IconLoop from ' ~/components/icons/IconLoop.vue' ;
8
+
8
9
import { useHistoryStore , useHistoryStoreRefs } from ' ~/stores/data/history.store' ;
10
+ import { useI18n } from ' ~/utils' ;
9
11
import { debounce } from ' ~/utils/debounce.utils' ;
10
12
13
+ const i18n = useI18n (' navbar' );
14
+
11
15
const { searchHistory, historyEnd, historyStart, pageSize } = useHistoryStoreRefs ();
12
16
const { setHistoryRange } = useHistoryStore ();
13
17
14
18
const debouncedSearch = ref (searchHistory .value );
15
19
16
- const pageSizeOptions: SelectOption [] = [
17
- { label: ' 50' , value: 50 },
18
- { label: ' 100' , value: 100 },
19
- { label: ' 200' , value: 200 },
20
- { label: ' 500' , value: 500 },
21
- { label: ' 1000' , value: 1000 },
22
- ];
23
-
24
20
defineProps ({
25
- parentElement: HTMLElement ,
21
+ parentElement: {
22
+ type: HTMLElement ,
23
+ required: false ,
24
+ },
26
25
});
27
26
28
27
watch (searchHistory , () => {
@@ -51,9 +50,9 @@ const onDateChange = debounce((values?: [number, number]) => {
51
50
</script >
52
51
53
52
<template >
54
- <NFlex class =" row" align =" center" justify =" center " :vertical =" false" >
53
+ <NFlex class =" row" align =" center" justify =" space-evenly " :vertical =" false" >
55
54
<NDatePicker
56
- class =" picker"
55
+ class =" date- picker"
57
56
type =" daterange"
58
57
:to =" parentElement"
59
58
:default-value =" [Date.now(), Date.now()]"
@@ -67,7 +66,7 @@ const onDateChange = debounce((values?: [number, number]) => {
67
66
/>
68
67
<NInput
69
68
v-model:value =" debouncedSearch"
70
- class =" input"
69
+ class =" search- input"
71
70
placeholder =" Search"
72
71
autosize
73
72
clearable
@@ -76,42 +75,21 @@ const onDateChange = debounce((values?: [number, number]) => {
76
75
<NIcon :component =" IconLoop" />
77
76
</template >
78
77
</NInput >
79
- <NTooltip
80
- :show-arrow =" false"
81
- placement =" bottom"
82
- :delay =" 500"
83
- trigger =" hover"
84
- :to =" parentElement"
85
- >
86
- <span > Page size </span >
87
- <template #trigger >
88
- <NSelect
89
- v-model:value =" pageSize"
90
- class =" empty select"
91
- :options =" pageSizeOptions"
92
- :to =" parentElement"
93
- />
94
- </template >
95
- </NTooltip >
78
+ <NavbarPageSizeSelect v-model:page-size =" pageSize" :parent-element =" parentElement" />
96
79
</NFlex >
97
80
</template >
98
81
99
82
<style lang="scss" scoped>
100
- @use ' ~/styles/mixin' as mixin ;
101
-
102
83
.row {
103
84
width : 100% ;
85
+ padding : 0 0.5rem ;
104
86
105
- .picker {
106
- flex : 0 1 47% ;
107
- }
108
-
109
- .input {
110
- flex : 0 1 calc (47% - 5rem );
87
+ .date-picker {
88
+ flex : 0 1 50% ;
111
89
}
112
90
113
- .select {
114
- flex : 0 1 5rem ;
91
+ .search-input {
92
+ flex : 1 1 calc ( 46 % - 5rem ) ;
115
93
}
116
94
}
117
95
</style >
0 commit comments