Skip to content

Commit d0b513e

Browse files
authored
chore(sfc-playground): editor can modify whether auto-save is enabled (#11428)
1 parent f599321 commit d0b513e

File tree

4 files changed

+36
-9
lines changed

4 files changed

+36
-9
lines changed

packages-private/sfc-playground/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"vite": "catalog:"
1414
},
1515
"dependencies": {
16-
"@vue/repl": "^4.3.1",
16+
"@vue/repl": "^4.4.0",
1717
"file-saver": "^2.0.5",
1818
"jszip": "^3.10.1",
1919
"vue": "workspace:*"

packages-private/sfc-playground/src/App.vue

+14
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ setVH()
1414
1515
const useSSRMode = ref(false)
1616
17+
const AUTO_SAVE_STORAGE_KEY = 'vue-sfc-playground-auto-save'
18+
const initAutoSave: boolean = JSON.parse(
19+
localStorage.getItem(AUTO_SAVE_STORAGE_KEY) ?? 'true',
20+
)
21+
const autoSave = ref(initAutoSave)
22+
1723
const { productionMode, vueVersion, importMap } = useVueImportMap({
1824
runtimeDev: import.meta.env.PROD
1925
? `${location.origin}/vue.runtime.esm-browser.js`
@@ -89,6 +95,11 @@ function toggleSSR() {
8995
useSSRMode.value = !useSSRMode.value
9096
}
9197
98+
function toggleAutoSave() {
99+
autoSave.value = !autoSave.value
100+
localStorage.setItem(AUTO_SAVE_STORAGE_KEY, String(autoSave.value))
101+
}
102+
92103
function reloadPage() {
93104
replRef.value?.reload()
94105
}
@@ -111,9 +122,11 @@ onMounted(() => {
111122
:store="store"
112123
:prod="productionMode"
113124
:ssr="useSSRMode"
125+
:autoSave="autoSave"
114126
@toggle-theme="toggleTheme"
115127
@toggle-prod="toggleProdMode"
116128
@toggle-ssr="toggleSSR"
129+
@toggle-autosave="toggleAutoSave"
117130
@reload-page="reloadPage"
118131
/>
119132
<Repl
@@ -123,6 +136,7 @@ onMounted(() => {
123136
@keydown.ctrl.s.prevent
124137
@keydown.meta.s.prevent
125138
:ssr="useSSRMode"
139+
:autoSave="autoSave"
126140
:store="store"
127141
:showCompileOutput="true"
128142
:autoResize="true"

packages-private/sfc-playground/src/Header.vue

+16-3
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ const props = defineProps<{
1414
store: ReplStore
1515
prod: boolean
1616
ssr: boolean
17+
autoSave: boolean
1718
}>()
1819
const emit = defineEmits([
1920
'toggle-theme',
2021
'toggle-ssr',
2122
'toggle-prod',
23+
'toggle-autosave',
2224
'reload-page',
2325
])
2426
@@ -107,6 +109,14 @@ function toggleDark() {
107109
>
108110
<span>{{ ssr ? 'SSR ON' : 'SSR OFF' }}</span>
109111
</button>
112+
<button
113+
title="Toggle editor auto save mode"
114+
class="toggle-autosave"
115+
:class="{ enabled: autoSave }"
116+
@click="$emit('toggle-autosave')"
117+
>
118+
<span>{{ autoSave ? 'AutoSave ON' : 'AutoSave OFF' }}</span>
119+
</button>
110120
<button title="Toggle dark mode" class="toggle-dark" @click="toggleDark">
111121
<Sun class="light" />
112122
<Moon class="dark" />
@@ -199,7 +209,8 @@ h1 img {
199209
}
200210
201211
.toggle-prod span,
202-
.toggle-ssr span {
212+
.toggle-ssr span,
213+
.toggle-autosave span {
203214
font-size: 12px;
204215
border-radius: 4px;
205216
padding: 4px 6px;
@@ -214,11 +225,13 @@ h1 img {
214225
background: var(--purple);
215226
}
216227
217-
.toggle-ssr span {
228+
.toggle-ssr span,
229+
.toggle-autosave span {
218230
background-color: var(--btn-bg);
219231
}
220232
221-
.toggle-ssr.enabled span {
233+
.toggle-ssr.enabled span,
234+
.toggle-autosave.enabled span {
222235
color: #fff;
223236
background-color: var(--green);
224237
}

pnpm-lock.yaml

+5-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)