Skip to content

Commit 1aeeb2b

Browse files
committed
refactor: navbar/progressbar use setup
1 parent 1faeca9 commit 1aeeb2b

File tree

6 files changed

+103
-125
lines changed

6 files changed

+103
-125
lines changed

src/components/navbar/Navbar.vue

Lines changed: 36 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -20,53 +20,42 @@
2020
</nav>
2121
</template>
2222

23-
<script>
23+
<script setup>
2424
import Collapse from '../collapse/Collapse.vue';
25+
import { computed, onMounted, ref, watch } from 'vue';
2526
26-
export default {
27-
components: { Collapse },
28-
props: {
29-
modelValue: Boolean,
30-
fluid: {
31-
type: Boolean,
32-
default: true,
33-
},
34-
fixedTop: Boolean,
35-
fixedBottom: Boolean,
36-
staticTop: Boolean,
37-
inverse: Boolean,
38-
},
39-
emits: ['update:modalValue'],
40-
data() {
41-
return {
42-
show: false,
43-
};
44-
},
45-
computed: {
46-
navClasses() {
47-
return {
48-
navbar: true,
49-
'navbar-default': !this.inverse,
50-
'navbar-inverse': this.inverse,
51-
'navbar-static-top': this.staticTop,
52-
'navbar-fixed-bottom': this.fixedBottom,
53-
'navbar-fixed-top': this.fixedTop,
54-
};
55-
},
56-
},
57-
watch: {
58-
modelValue(v) {
59-
this.show = v;
60-
},
61-
},
62-
mounted() {
63-
this.show = !!this.modelValue;
64-
},
65-
methods: {
66-
toggle() {
67-
this.show = !this.show;
68-
this.$emit('update:modalValue', this.show);
69-
},
70-
},
71-
};
27+
const props = defineProps({
28+
modelValue: Boolean,
29+
fluid: { type: Boolean, default: true },
30+
fixedTop: Boolean,
31+
fixedBottom: Boolean,
32+
staticTop: Boolean,
33+
inverse: Boolean,
34+
});
35+
const emit = defineEmits(['update:modalValue']);
36+
const show = ref(false);
37+
const navClasses = computed(() => ({
38+
navbar: true,
39+
'navbar-default': !props.inverse,
40+
'navbar-inverse': props.inverse,
41+
'navbar-static-top': props.staticTop,
42+
'navbar-fixed-bottom': props.fixedBottom,
43+
'navbar-fixed-top': props.fixedTop,
44+
}));
45+
46+
watch(
47+
() => props.modelValue,
48+
(v) => {
49+
show.value = v;
50+
}
51+
);
52+
53+
onMounted(() => {
54+
show.value = !!props.modelValue;
55+
});
56+
57+
function toggle() {
58+
show.value = !show.value;
59+
emit('update:modalValue', show.value);
60+
}
7261
</script>

src/components/navbar/NavbarForm.vue

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
</form>
1111
</template>
1212

13-
<script>
14-
export default {
15-
props: {
16-
left: Boolean,
17-
right: Boolean,
18-
},
19-
};
13+
<script setup>
14+
defineProps({
15+
left: Boolean,
16+
right: Boolean,
17+
});
2018
</script>

src/components/navbar/NavbarNav.vue

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@
1111
</ul>
1212
</template>
1313

14-
<script>
15-
export default {
16-
props: {
17-
left: Boolean,
18-
right: Boolean,
19-
},
20-
};
14+
<script setup>
15+
defineProps({
16+
left: Boolean,
17+
right: Boolean,
18+
});
2119
</script>

src/components/navbar/NavbarText.vue

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
</p>
1111
</template>
1212

13-
<script>
14-
export default {
15-
props: {
16-
left: Boolean,
17-
right: Boolean,
18-
},
19-
};
13+
<script setup>
14+
defineProps({
15+
left: Boolean,
16+
right: Boolean,
17+
});
2018
</script>

src/components/progressbar/ProgressBar.vue

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,34 @@
55
</div>
66
</template>
77

8-
<script>
8+
<script setup>
99
import ProgressBarStack from './ProgressBarStack.vue';
1010
11-
export default {
12-
components: { ProgressBarStack },
13-
props: {
14-
modelValue: {
15-
type: Number,
16-
validator(value) {
17-
return value >= 0 && value <= 100;
18-
},
19-
default: 0,
20-
},
21-
labelText: { type: String, default: undefined },
22-
type: { type: String, default: undefined },
23-
label: {
24-
type: Boolean,
25-
default: false,
26-
},
27-
minWidth: {
28-
type: Boolean,
29-
default: false,
30-
},
31-
striped: {
32-
type: Boolean,
33-
default: false,
34-
},
35-
active: {
36-
type: Boolean,
37-
default: false,
11+
defineProps({
12+
modelValue: {
13+
type: Number,
14+
validator(value) {
15+
return value >= 0 && value <= 100;
3816
},
17+
default: 0,
18+
},
19+
labelText: { type: String, default: undefined },
20+
type: { type: String, default: undefined },
21+
label: {
22+
type: Boolean,
23+
default: false,
24+
},
25+
minWidth: {
26+
type: Boolean,
27+
default: false,
28+
},
29+
striped: {
30+
type: Boolean,
31+
default: false,
32+
},
33+
active: {
34+
type: Boolean,
35+
default: false,
3936
},
40-
};
37+
});
4138
</script>

src/components/progressbar/ProgressBarStack.vue

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,32 @@
1919
</div>
2020
</template>
2121

22-
<script>
23-
export default {
24-
props: {
25-
modelValue: {
26-
type: Number,
27-
required: true,
28-
validator(value) {
29-
return value >= 0 && value <= 100;
30-
},
31-
},
32-
labelText: { type: String, default: undefined },
33-
type: { type: String, default: undefined },
34-
label: {
35-
type: Boolean,
36-
default: false,
37-
},
38-
minWidth: {
39-
type: Boolean,
40-
default: false,
41-
},
42-
striped: {
43-
type: Boolean,
44-
default: false,
45-
},
46-
active: {
47-
type: Boolean,
48-
default: false,
22+
<script setup>
23+
defineProps({
24+
modelValue: {
25+
type: Number,
26+
required: true,
27+
validator(value) {
28+
return value >= 0 && value <= 100;
4929
},
5030
},
51-
};
31+
labelText: { type: String, default: undefined },
32+
type: { type: String, default: undefined },
33+
label: {
34+
type: Boolean,
35+
default: false,
36+
},
37+
minWidth: {
38+
type: Boolean,
39+
default: false,
40+
},
41+
striped: {
42+
type: Boolean,
43+
default: false,
44+
},
45+
active: {
46+
type: Boolean,
47+
default: false,
48+
},
49+
});
5250
</script>

0 commit comments

Comments
 (0)