Skip to content

Commit 0364692

Browse files
committed
+ Photo Widget
1 parent aefdf23 commit 0364692

File tree

8 files changed

+74
-63
lines changed

8 files changed

+74
-63
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"@vueuse/router": "^9.9.0",
3030
"@widget-js/cli": "^1.1.1",
3131
"@widget-js/core": "^0.5.21",
32-
"@widget-js/vue3": "^0.5.21",
32+
"@widget-js/vue3": "workspace:*",
3333
"animate.css": "^4.1.1",
3434
"axios": "^1.1.3",
3535
"color": "^4.2.3",
@@ -85,4 +85,4 @@
8585
"webpack": "^5.74.0",
8686
"webpack-cli": "^4.10.0"
8787
}
88-
}
88+
}
+43-43
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,43 @@
1-
import { ref, watch } from 'vue'
2-
import { CubicBezierPoints, EasingFunction, useTransition } from '@vueuse/core'
3-
import { BrowserWindowApi } from '@widget-js/core'
4-
import { MaybeRef } from '@vueuse/shared'
5-
6-
export interface UseBrowserWindowAnimationOptions {
7-
transition?: MaybeRef<EasingFunction | CubicBezierPoints>
8-
duration?: MaybeRef<number>
9-
delay?: MaybeRef<number>
10-
/**
11-
* Disables the transition
12-
*/
13-
disabled?: MaybeRef<boolean>
14-
}
15-
16-
export function useBrowserWindowAnimation(options: UseBrowserWindowAnimationOptions) {
17-
const x = ref(0)
18-
const y = ref(0)
19-
const width = ref(600)
20-
const height = ref(800)
21-
const ready = ref(false)
22-
23-
const animationX = useTransition(x, options)
24-
const animationY = useTransition(y, options)
25-
const animationWidth = useTransition(width, options)
26-
const animationHeight = useTransition(height, options)
27-
28-
BrowserWindowApi.getBounds().then((bounds) => {
29-
x.value = bounds.x
30-
y.value = bounds.y
31-
width.value = bounds.width
32-
height.value = bounds.height
33-
ready.value = true
34-
})
35-
36-
watch([animationX, animationY, animationWidth, animationHeight], async ([x, y, width, height]) => {
37-
if (ready.value) {
38-
await BrowserWindowApi.setBounds({ x, y, width, height }, false)
39-
}
40-
})
41-
42-
return { ready, x, y, width, height }
43-
}
1+
// import { ref, watch } from 'vue'
2+
// import { CubicBezierPoints, EasingFunction, useTransition } from '@vueuse/core'
3+
// import { BrowserWindowApi } from '@widget-js/core'
4+
// import { MaybeRef } from '@vueuse/shared'
5+
//
6+
// export interface UseBrowserWindowAnimationOptions {
7+
// transition?: MaybeRef<EasingFunction | CubicBezierPoints>
8+
// duration?: MaybeRef<number>
9+
// delay?: MaybeRef<number>
10+
// /**
11+
// * Disables the transition
12+
// */
13+
// disabled?: MaybeRef<boolean>
14+
// }
15+
//
16+
// export function useBrowserWindowAnimation(options: UseBrowserWindowAnimationOptions) {
17+
// const x = ref(0)
18+
// const y = ref(0)
19+
// const width = ref(600)
20+
// const height = ref(800)
21+
// const ready = ref(false)
22+
//
23+
// const animationX = useTransition(x, options)
24+
// const animationY = useTransition(y, options)
25+
// const animationWidth = useTransition(width, options)
26+
// const animationHeight = useTransition(height, options)
27+
//
28+
// BrowserWindowApi.getBounds().then((bounds) => {
29+
// x.value = bounds.x
30+
// y.value = bounds.y
31+
// width.value = bounds.width
32+
// height.value = bounds.height
33+
// ready.value = true
34+
// })
35+
//
36+
// watch([animationX, animationY, animationWidth, animationHeight], async ([x, y, width, height]) => {
37+
// if (ready.value) {
38+
// await BrowserWindowApi.setBounds({ x, y, width, height }, false)
39+
// }
40+
// })
41+
//
42+
// return { ready, x, y, width, height }
43+
// }

src/widgets/dynamic-island/DynamicIslandWidgetView.vue

+9-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@
88
</template>
99

1010
<script lang="ts">
11-
import {AppNotification, BrowserWindowApi, ElectronUtils, NotificationApi, WidgetApi, WidgetData} from '@widget-js/core'
11+
import {
12+
AppNotification,
13+
BrowserWindowApi,
14+
ElectronUtils,
15+
NotificationApi,
16+
WidgetApi,
17+
WidgetData
18+
} from '@widget-js/core'
1219
import DynamicIslandWidget from './DynamicIslandWidget.vue'
1320
import { useNotification, useWidget } from '@widget-js/vue3'
1421
import { computed, reactive, ref, watch } from 'vue'
@@ -40,7 +47,7 @@ export default {
4047
useNotification((newNotification) => {
4148
if (newNotification) {
4249
BrowserWindowApi.showInactive()
43-
BrowserWindowApi.moveTop()
50+
BrowserWindowApi.setAlwaysOnTop(true)
4451
Object.assign(notification, newNotification)
4552
setState()
4653
startHideTimeout()

src/widgets/photo/PhotoConfigView.vue

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ import { useWidget, WidgetConfigOption, WidgetEditDialog } from '@widget-js/vue3
2121
import { DialogApi, WidgetDataApi } from '@widget-js/core'
2222
import { reactive, ref } from 'vue'
2323
import { PhotoData } from '@/widgets/photo/PhotoData'
24-
24+
import PhotoWidget from "@/widgets/photo/Photo.widget";
25+
const defaultData = new PhotoData(PhotoWidget.name)
26+
defaultData.borderRadius = 22
2527
const { widgetData, widgetParams } = useWidget(PhotoData, {
26-
defaultData: {
27-
borderRadius: 22
28-
},
28+
defaultData,
2929
onDataLoaded: () => {
3030
directory.value = widgetData.value.directory
3131
}

src/widgets/photo/PhotoWidget.vue

+16-12
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
<el-carousel :height="`${widgetParams.heightPx}px`" indicator-position="none" :interval="5000">
44
<template v-if="widgetParams.preview">
55
<el-carousel-item v-for="item in defaultPhotos" :key="item">
6-
<img class="photo-item" :src="item" alt=""/>
6+
<img class="photo-item" :src="item" alt="" />
77
</el-carousel-item>
88
</template>
99
<template v-else>
1010
<el-carousel-item v-for="item in photos" :key="item">
11-
<img class="photo-item" :src="item" alt=""/>
11+
<img class="photo-item" :src="item" alt="" />
1212
</el-carousel-item>
1313
<el-carousel-item v-if="showGuide" @click="showConfig">
1414
<h4 class="justify-center">点击设置图片文件</h4>
@@ -22,18 +22,22 @@
2222
</template>
2323

2424
<script lang="ts" setup>
25-
import {useWidget} from '@widget-js/vue3'
26-
import {PhotoData} from '@/widgets/photo/PhotoData'
27-
import {ref} from 'vue'
28-
import {BrowserWindowApi, FileApi, HostedWidgetApi, WidgetApi} from '@widget-js/core'
25+
import { useWidget } from '@widget-js/vue3'
26+
import { PhotoData } from '@/widgets/photo/PhotoData'
27+
import { ref } from 'vue'
28+
import { FileApi, HostedWidgetApi } from '@widget-js/core'
29+
import photo1 from './assets/photo1.jpg'
30+
import photo2 from './assets/photo2.jpg'
31+
import photo3 from './assets/photo3.jpg'
32+
import PhotoWidget from "@/widgets/photo/Photo.widget";
2933
30-
const defaultPhotos = ['/images/photo1.jpg', '/images/photo2.jpg', '/images/photo3.jpg']
34+
const defaultPhotos = [photo1, photo2, photo3]
3135
const photos = ref<string[]>([])
3236
const showGuide = ref(false)
33-
const {widgetData, widgetParams, sizeStyle} = useWidget(PhotoData, {
34-
defaultData: {
35-
borderRadius: 22
36-
},
37+
const defaultData = new PhotoData(PhotoWidget.name)
38+
defaultData.borderRadius = 22
39+
const { widgetData, widgetParams, sizeStyle } = useWidget(PhotoData, {
40+
defaultData,
3741
onDataLoaded: (data) => {
3842
if (data && data.directory) {
3943
// photos.value
@@ -59,7 +63,7 @@ const {widgetData, widgetParams, sizeStyle} = useWidget(PhotoData, {
5963
const showConfig = async () => {
6064
// const widgetConfigUrl = await WidgetApi.getWidgetConfigUrl(widgetParams.name, widgetParams);
6165
// await BrowserWindowApi.openUrl(widgetConfigUrl!);
62-
HostedWidgetApi.openConfigRoute(widgetParams.id, widgetParams)
66+
HostedWidgetApi.openConfigRoute(widgetParams.id!, widgetParams)
6367
}
6468
</script>
6569

File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)