diff --git a/packages/ui/package.json b/packages/ui/package.json index c18a1966..429ba2f2 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -35,6 +35,7 @@ }, "dependencies": { "@popperjs/core": "^2.10", + "@vue-kakuyaku/core": "^0.4", "@vueuse/core": "^9.13", "@vueuse/math": "^9.13", "date-fns": "^2.29", @@ -66,7 +67,6 @@ "@types/lodash-es": "^4.17.6", "@vitejs/plugin-vue": "^4.0.0", "@vitejs/plugin-vue-jsx": "^3.0.0", - "@vue-kakuyaku/core": "^0.4.3", "@vue/compiler-core": "^3.2", "@vue/test-utils": "^2", "axe-core": "^4.4.1", diff --git a/packages/ui/src/components/Notifications/SUseNotification.ts b/packages/ui/src/components/Notifications/SUseNotification.ts index cf744a9d..917098d7 100644 --- a/packages/ui/src/components/Notifications/SUseNotification.ts +++ b/packages/ui/src/components/Notifications/SUseNotification.ts @@ -1,8 +1,8 @@ import { h, defineComponent, type PropType, onScopeDispose } from 'vue' import { useVModel } from '@vueuse/core' +import { useParamScope } from '@vue-kakuyaku/core' import { Status } from '@/types' import SNotificationBody from './SNotificationBody.vue' -import { useConditionalScope } from '@/composables/conditional-scope' import { forceInject } from '@/util' import { NOTIFICATIONS_API_KEY } from './api' @@ -43,7 +43,7 @@ export default /* @__PURE__ */ defineComponent({ emit('click:close') } - useConditionalScope(show, () => { + useParamScope(show, () => { const unreg = toasts.register({ slot: () => { const { show: _show, ...rest } = props diff --git a/packages/ui/src/composables/conditional-scope.ts b/packages/ui/src/composables/conditional-scope.ts deleted file mode 100644 index 139cb8bc..00000000 --- a/packages/ui/src/composables/conditional-scope.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { type Ref, effectScope, EffectScope, watch, onScopeDispose } from 'vue' - -// TODO use vue-kakuyaku -export function useConditionalScope(enabled: Ref, scopeSetupFn: () => void) { - let scope: EffectScope | null = null - - function setupScope() { - scope = effectScope() - scope.run(scopeSetupFn) - } - - function stopScope() { - scope?.stop() - } - - watch( - enabled, - (flag) => { - if (flag) { - setupScope() - } else { - stopScope() - } - }, - { immediate: true }, - ) - - onScopeDispose(stopScope) -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c13effc6..a139806f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,7 +72,7 @@ importers: '@types/lodash-es': ^4.17.6 '@vitejs/plugin-vue': ^4.0.0 '@vitejs/plugin-vue-jsx': ^3.0.0 - '@vue-kakuyaku/core': ^0.4.3 + '@vue-kakuyaku/core': ^0.4 '@vue/compiler-core': ^3.2 '@vue/test-utils': ^2 '@vueuse/core': ^9.13 @@ -109,6 +109,7 @@ importers: windicss: ^3.5.4 dependencies: '@popperjs/core': 2.11.6 + '@vue-kakuyaku/core': 0.4.3 '@vueuse/core': 9.13.0_vue@3.2.47 '@vueuse/math': 9.13.0_vue@3.2.47 date-fns: 2.29.3 @@ -139,7 +140,6 @@ importers: '@types/lodash-es': 4.17.6 '@vitejs/plugin-vue': 4.0.0_vite@4.1.4+vue@3.2.47 '@vitejs/plugin-vue-jsx': 3.0.0_vite@4.1.4+vue@3.2.47 - '@vue-kakuyaku/core': 0.4.3 '@vue/compiler-core': 3.2.47 '@vue/test-utils': 2.3.0_vue@3.2.47 axe-core: 4.6.3 @@ -2843,12 +2843,12 @@ packages: telejson: 7.0.4 dev: true - /@storybook/channel-postmessage/7.0.0-rc.5: - resolution: {integrity: sha512-NBnIKiACAnLpsVe7bf9B2XE4tH+4HgTJh8Mvj1Dpu1jxu2cJ3j20x3IGgELXCXSEicUbXCqr+O1Zc7CHBXYV+g==} + /@storybook/channel-postmessage/7.0.0-rc.8: + resolution: {integrity: sha512-SHx9X5HtNV7/XzcjxzEYFM/3Xxn2pIsNtzFMIpe9YhfMQLGKXgmm9Hv5o5s4GXZquJN6w646XE90eOol6cwTDg==} dependencies: - '@storybook/channels': 7.0.0-rc.5 - '@storybook/client-logger': 7.0.0-rc.5 - '@storybook/core-events': 7.0.0-rc.5 + '@storybook/channels': 7.0.0-rc.8 + '@storybook/client-logger': 7.0.0-rc.8 + '@storybook/core-events': 7.0.0-rc.8 '@storybook/global': 5.0.0 qs: 6.11.1 telejson: 7.0.4 @@ -2867,8 +2867,8 @@ packages: resolution: {integrity: sha512-WG0bH5EYIi2Eh7iRNq9ScvQlzuBZqtlg0CV8FdLdEeDp6LuYRgIabdjON0PDGagwpir0ozDAqF5sRMwYkhuVPg==} dev: true - /@storybook/channels/7.0.0-rc.5: - resolution: {integrity: sha512-/T4iJQsTj42bs+d2sG8aLyInKh1IjZeK0vPoJRK9gvy3YfxTj3yodZ60s2yywKJCgGjg5zJMFxYMWqSVmHIdnw==} + /@storybook/channels/7.0.0-rc.8: + resolution: {integrity: sha512-2tI/ECbQcXjncYGLVdrttNT8adIp6kV/bnQGJWmF5hBXZ7Izwyq1WRPTgPT++RihmOOTHvkRx4GCKfwluOrNpA==} dev: true /@storybook/cli/7.0.0-beta.62: @@ -2926,8 +2926,8 @@ packages: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger/7.0.0-rc.5: - resolution: {integrity: sha512-YkqjJb2jK6/jT4zm9cmdMVZeOyzoDxiyK3BedhoXKMRDMz+7+E7tcOZEXsuvTGekJe459TTnwYLfvUvObaXNKw==} + /@storybook/client-logger/7.0.0-rc.8: + resolution: {integrity: sha512-6pBwnK0vB0mgkO8opiHbZxBVGyaKFSpJXglfx8F15gIwA3r1njgtOZvvYx+03DCz0ExaTiSXrrbWp39mI8mo5w==} dependencies: '@storybook/global': 5.0.0 dev: true @@ -3008,8 +3008,8 @@ packages: resolution: {integrity: sha512-/301tBWbUnhv4tTg5feTR3r1iZ+ep+drEX3ii61SfQNWLugeo9sLIldtxRuEElT6X3Xypw4nCnd+fc3IKDs/Xw==} dev: true - /@storybook/core-events/7.0.0-rc.5: - resolution: {integrity: sha512-n9+TqgrgkXN5V+mNdgdnojUVqhKOsyL3DNfOmAsbLEewhg5z6+QDYxOe/FBe1usGI2DV+ihwb/knMZzuYXN5ow==} + /@storybook/core-events/7.0.0-rc.8: + resolution: {integrity: sha512-KsKf+Ob6zQ8+IJ9oDD5xqASwYGzcjT08azBjSt4yocHIJ3mY741h88YDS0wcwnM+JrV6iFYlY0hiK35lnBEddA==} dev: true /@storybook/core-server/7.0.0-beta.62: @@ -3128,14 +3128,14 @@ packages: '@storybook/preview-api': 7.0.0-beta.62 dev: true - /@storybook/instrumenter/7.0.0-rc.5: - resolution: {integrity: sha512-e9AtV1hNTs4ppmqKfst/cInmRnhkK9VcGf3xB/d9Qqm0Sqo+sNXu6ywK5KpAURdCzsUEOPXbJ9H52yTrU4f74A==} + /@storybook/instrumenter/7.0.0-rc.8: + resolution: {integrity: sha512-esRTjLLJJAKsTun/8u/wvsS+OPlwB2eal+ZAo0cBo+YTpkw0A6R+HunhNU1elZ8ztbJsZxP2drPprrFGXgeaLQ==} dependencies: - '@storybook/channels': 7.0.0-rc.5 - '@storybook/client-logger': 7.0.0-rc.5 - '@storybook/core-events': 7.0.0-rc.5 + '@storybook/channels': 7.0.0-rc.8 + '@storybook/client-logger': 7.0.0-rc.8 + '@storybook/core-events': 7.0.0-rc.8 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.0.0-rc.5 + '@storybook/preview-api': 7.0.0-rc.8 dev: true /@storybook/manager-api/7.0.0-beta.62_biqbaboplfbrettd7655fr4n2y: @@ -3205,16 +3205,16 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api/7.0.0-rc.5: - resolution: {integrity: sha512-cuyFIT/4MXfoqN6d5AK/KH7Yp0cifuOmcBj4+9xrmrPK47m4F8eHZ/mX6rXE6rVFNsWv65Al5An6WCM1CDImJg==} + /@storybook/preview-api/7.0.0-rc.8: + resolution: {integrity: sha512-K45I81s2ZOoeAmKC8DP0HPhR67tr94pkgKddaoWLQJHBgVq9GKuy7QCcnn2zYKOFd1d/uqcnrQyg4AkmcjkVCg==} dependencies: - '@storybook/channel-postmessage': 7.0.0-rc.5 - '@storybook/channels': 7.0.0-rc.5 - '@storybook/client-logger': 7.0.0-rc.5 - '@storybook/core-events': 7.0.0-rc.5 + '@storybook/channel-postmessage': 7.0.0-rc.8 + '@storybook/channels': 7.0.0-rc.8 + '@storybook/client-logger': 7.0.0-rc.8 + '@storybook/core-events': 7.0.0-rc.8 '@storybook/csf': 0.0.2-next.10 '@storybook/global': 5.0.0 - '@storybook/types': 7.0.0-rc.5 + '@storybook/types': 7.0.0-rc.8 '@types/qs': 6.9.7 dequal: 2.0.3 lodash: 4.17.21 @@ -3273,8 +3273,8 @@ packages: /@storybook/testing-library/0.0.14-next.1: resolution: {integrity: sha512-1CAl40IKIhcPaCC4pYCG0b9IiYNymktfV/jTrX7ctquRY3akaN7f4A1SippVHosksft0M+rQTFE0ccfWW581fw==} dependencies: - '@storybook/client-logger': 7.0.0-rc.5 - '@storybook/instrumenter': 7.0.0-rc.5 + '@storybook/client-logger': 7.0.0-rc.8 + '@storybook/instrumenter': 7.0.0-rc.8 '@testing-library/dom': 8.20.0 '@testing-library/user-event': 13.5.0_yxlyej73nftwmh2fiao7paxmlm ts-dedent: 2.2.0 @@ -3303,10 +3303,10 @@ packages: file-system-cache: 2.0.2 dev: true - /@storybook/types/7.0.0-rc.5: - resolution: {integrity: sha512-gLKUY7EfPYenz0Y1jw90AUAUlKTHOj9p7J3d8GcI5x5buHdU+M7Q1jotPWzDwRFI24y3Ob31oyCBhysIw8S2Aw==} + /@storybook/types/7.0.0-rc.8: + resolution: {integrity: sha512-Jz3MLLKs+Jy8dZVd+HVHuKAbxa7xcF/MLfUNldu0HxtJr3b7ybUlvjWjT5h2I60V5TYkWGf9wcKmegI6TGiJXQ==} dependencies: - '@storybook/channels': 7.0.0-rc.5 + '@storybook/channels': 7.0.0-rc.8 '@types/babel__core': 7.20.0 '@types/express': 4.17.17 file-system-cache: 2.0.2 @@ -3664,7 +3664,7 @@ packages: /@types/web-bluetooth/0.0.14: resolution: {integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==} - dev: true + dev: false /@types/web-bluetooth/0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} @@ -3970,7 +3970,7 @@ packages: vue: 3.2.47 transitivePeerDependencies: - '@vue/composition-api' - dev: true + dev: false /@vue/babel-helper-vue-transform-on/1.0.2: resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} @@ -4094,7 +4094,7 @@ packages: '@vueuse/shared': 8.9.4_vue@3.2.47 vue: 3.2.47 vue-demi: 0.13.11_vue@3.2.47 - dev: true + dev: false /@vueuse/core/9.13.0_vue@3.2.47: resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} @@ -4119,7 +4119,7 @@ packages: /@vueuse/metadata/8.9.4: resolution: {integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==} - dev: true + dev: false /@vueuse/metadata/9.13.0: resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} @@ -4137,7 +4137,7 @@ packages: dependencies: vue: 3.2.47 vue-demi: 0.13.11_vue@3.2.47 - dev: true + dev: false /@vueuse/shared/9.13.0_vue@3.2.47: resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} @@ -10346,6 +10346,7 @@ packages: /type-fest/3.6.1: resolution: {integrity: sha512-htXWckxlT6U4+ilVgweNliPqlsVSSucbxVexRYllyMVJDtf5rTjv6kF/s+qAd4QSL1BZcnJPEJavYBPQiWuZDA==} engines: {node: '>=14.16'} + dev: false /type-is/1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}