Browse Source

feat(@vben/playground): add full-screen examples (#4126)

* feat(@vben/playground): add full-screen examples

* chore: rm unuse class

* chore: move fullScreen demo to features router

* chore: responsive

* chore: 调整路由路径

* chore: card增加间距

---------

Co-authored-by: Li Kui <90845831+likui628@users.noreply.github.com>
invalid w 7 months ago
parent
commit
f20c5d9e2e

+ 3 - 0
playground/src/locales/langs/en-US.json

@@ -48,6 +48,9 @@
         "watermark": "Watermark",
         "tabs": "Tabs",
         "tabDetail": "Tab Detail Page",
+        "fullScreen": {
+          "title": "FullScreen"
+        },
         "clipboard": "Clipboard"
       },
       "breadcrumb": {

+ 3 - 0
playground/src/locales/langs/zh-CN.json

@@ -48,6 +48,9 @@
         "watermark": "水印",
         "tabs": "标签页",
         "tabDetail": "标签详情页",
+        "fullScreen": {
+          "title": "全屏"
+        },
         "clipboard": "剪贴板"
       },
       "breadcrumb": {

+ 9 - 0
playground/src/router/routes/modules/demos.ts

@@ -165,6 +165,15 @@ const routes: RouteRecordRaw[] = [
               },
             ],
           },
+          {
+            name: 'FullScreenDemo',
+            path: '/demos/features/full-screen',
+            component: () =>
+              import('#/views/demos/features/full-screen/index.vue'),
+            meta: {
+              title: $t('page.demos.features.fullScreen.title'),
+            },
+          },
           {
             name: 'ClipboardDemo',
             path: '/demos/features/clipboard',

+ 1 - 1
playground/src/router/routes/modules/examples.ts

@@ -17,7 +17,7 @@ const routes: RouteRecordRaw[] = [
     children: [
       {
         name: 'EllipsisDemo',
-        path: '/examples/ellipsis',
+        path: 'ellipsis',
         component: () => import('#/views/examples/ellipsis/index.vue'),
         meta: {
           title: $t('page.examples.ellipsis.title'),

+ 47 - 0
playground/src/views/demos/features/full-screen/index.vue

@@ -0,0 +1,47 @@
+<script lang="ts" setup>
+import { ref } from 'vue';
+
+import { Page } from '@vben/common-ui';
+
+import { useFullscreen } from '@vueuse/core';
+import { Button, Card } from 'ant-design-vue';
+
+const domRef = ref<HTMLElement>();
+
+const { enter, exit, isFullscreen, toggle } = useFullscreen();
+
+const { isFullscreen: isDomFullscreen, toggle: toggleDom } =
+  useFullscreen(domRef);
+</script>
+
+<template>
+  <Page title="全屏示例">
+    <Card title="Window Full Screen">
+      <div class="flex flex-wrap items-center gap-4">
+        <Button :disabled="isFullscreen" type="primary" @click="enter">
+          Enter Window Full Screen
+        </Button>
+        <Button @click="toggle"> Toggle Window Full Screen </Button>
+
+        <Button :disabled="!isFullscreen" danger @click="exit">
+          Exit Window Full Screen
+        </Button>
+
+        <span class="text-nowrap"> Current State: {{ isFullscreen }} </span>
+      </div>
+    </Card>
+
+    <Card class="mt-3" title="Dom Full Screen">
+      <Button type="primary" @click="toggleDom"> Enter Dom Full Screen </Button>
+    </Card>
+
+    <div
+      ref="domRef"
+      class="mx-auto mt-10 flex h-64 w-1/2 items-center justify-center rounded-md bg-yellow-400"
+    >
+      <Button class="mr-2" type="primary" @click="toggleDom">
+        {{ isDomFullscreen ? 'Exit Dom Full Screen' : 'Enter Dom Full Screen' }}
+      </Button>
+    </div>
+  </Page>
+</template>