40 lines
707 B
Vue
40 lines
707 B
Vue
![]() |
<script>
|
||
|
export default {
|
||
|
props: {
|
||
|
storageKey: {
|
||
|
type: String,
|
||
|
required: true,
|
||
|
},
|
||
|
value: {
|
||
|
type: String,
|
||
|
required: false,
|
||
|
default: '',
|
||
|
},
|
||
|
},
|
||
|
watch: {
|
||
|
value(newVal) {
|
||
|
this.saveValue(newVal);
|
||
|
},
|
||
|
},
|
||
|
mounted() {
|
||
|
// On mount, trigger update if we actually have a localStorageValue
|
||
|
const value = this.getValue();
|
||
|
|
||
|
if (value && this.value !== value) {
|
||
|
this.$emit('input', value);
|
||
|
}
|
||
|
},
|
||
|
methods: {
|
||
|
getValue() {
|
||
|
return localStorage.getItem(this.storageKey);
|
||
|
},
|
||
|
saveValue(val) {
|
||
|
localStorage.setItem(this.storageKey, val);
|
||
|
},
|
||
|
},
|
||
|
render() {
|
||
|
return this.$slots.default;
|
||
|
},
|
||
|
};
|
||
|
</script>
|