@v-c/notification 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
- import Notification from "../Notification.js";
2
- import { useNotificationContext } from "../NotificationProvider.js";
3
1
  import useListPosition from "../hooks/useListPosition/index.js";
4
2
  import useStack from "../hooks/useStack.js";
3
+ import Notification from "../Notification.js";
4
+ import { useNotificationContext } from "../NotificationProvider.js";
5
5
  import Content from "./Content.js";
6
6
  import { TransitionGroup, computed, createVNode, defineComponent, isVNode, mergeProps, ref, shallowRef, toRef, watch, watchEffect } from "vue";
7
7
  import { clsx } from "@v-c/util";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@v-c/notification",
3
3
  "type": "module",
4
- "version": "2.0.0",
4
+ "version": "2.0.1",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -15,6 +15,10 @@
15
15
  "./package.json": "./package.json"
16
16
  },
17
17
  "main": "./dist/index.js",
18
+ "files": [
19
+ "dist",
20
+ "package.json"
21
+ ],
18
22
  "peerDependencies": {
19
23
  "vue": "^3.0.0"
20
24
  },
package/bump.config.ts DELETED
@@ -1,6 +0,0 @@
1
- import { defineConfig } from 'bumpp'
2
-
3
- export default defineConfig({
4
- commit: 'chore(release): @v-c/notification %s',
5
- tag: '@v-c/notification@%s',
6
- })
package/docs/context.vue DELETED
@@ -1,34 +0,0 @@
1
- <script setup lang="ts">
2
- import { h } from 'vue'
3
- import { useNotification } from '../src'
4
- import motion from './motion'
5
-
6
- const [{ open }, holder] = useNotification({ motion })
7
- const NOTICE = {
8
- content: h('span', ['simple show']),
9
- onclose() {
10
- console.log('simple close')
11
- },
12
- }
13
- function handleClick() {
14
- open({
15
- ...NOTICE,
16
- props: {
17
- 'data-testid': 'my-data-testid',
18
- },
19
- })
20
- }
21
- </script>
22
-
23
- <template>
24
- <div>
25
- <button @click="handleClick">
26
- simple show
27
- </button>
28
- <holder />
29
- </div>
30
- </template>
31
-
32
- <style lang="less">
33
- @import "./index.less";
34
- </style>
package/docs/hooks.vue DELETED
@@ -1,89 +0,0 @@
1
- <script setup lang="ts">
2
- import { useNotification } from '../src'
3
- import motion from './motion'
4
-
5
- const [notice, contextHolder] = useNotification({ motion, closable: true })
6
- </script>
7
-
8
- <template>
9
- <div>
10
- <!-- Default -->
11
- <button
12
- @click="() => {
13
- notice.open({
14
- content: `${new Date().toISOString()}`,
15
- })
16
- }"
17
- >
18
- Basic
19
- </button>
20
- <button
21
- @click="() => {
22
- notice.open({
23
- content: `${Array(Math.round(Math.random() * 5) + 1)
24
- .fill(1)
25
- .map(() => new Date().toISOString())
26
- .join('\n')}`,
27
- duration: null,
28
- })
29
- }"
30
- >
31
- Not Auto Close
32
- </button>
33
-
34
- <button
35
- @click="() => {
36
- notice.open({
37
- content: `${Array(5)
38
- .fill(1)
39
- .map(() => new Date().toISOString())
40
- .join('\n')}`,
41
- duration: null,
42
- });
43
- }"
44
- >
45
- Not Auto Close
46
- </button>
47
- </div>
48
-
49
- <div>
50
- <button
51
- @click="() => {
52
- notice.open({
53
- content: `No Close! ${new Date().toISOString()}`,
54
- duration: null,
55
- closable: false,
56
- key: 'No Close',
57
- onClose: () => {
58
- console.log('Close!!!');
59
- },
60
- });
61
- }"
62
- >
63
- No Closable
64
- </button>
65
-
66
- <button
67
- @click="() => {
68
- notice.close('No Close');
69
- }"
70
- >
71
- Force Close No Closable
72
- </button>
73
- </div>
74
-
75
- <div>
76
- <button
77
- @click="() => {
78
- notice.destroy();
79
- }"
80
- >
81
- Destroy All
82
- </button>
83
- </div>
84
- <contextHolder />
85
- </template>
86
-
87
- <style scoped>
88
-
89
- </style>
package/docs/index.less DELETED
@@ -1,265 +0,0 @@
1
- @notificationPrefixCls: vc-notification;
2
-
3
- .@{notificationPrefixCls} {
4
- // ====================== Notification ======================
5
- position: fixed;
6
- z-index: 1000;
7
- display: flex;
8
- max-height: 100vh;
9
- padding: 10px;
10
- align-items: flex-end;
11
- width: 340px;
12
- overflow-x: hidden;
13
- overflow-y: auto;
14
- height: 100vh;
15
- box-sizing: border-box;
16
- pointer-events: none;
17
- flex-direction: column;
18
-
19
- // Position
20
- &-top,
21
- &-topLeft,
22
- &-topRight {
23
- top: 0;
24
- }
25
-
26
- &-bottom,
27
- &-bottomRight,
28
- &-bottomLeft {
29
- bottom: 0;
30
- }
31
-
32
- &-bottomRight,
33
- &-topRight {
34
- right: 0;
35
- }
36
-
37
- // ========================= Notice =========================
38
- &-notice {
39
- position: relative;
40
- display: block;
41
- box-sizing: border-box;
42
- line-height: 1.5;
43
- width: 100%;
44
-
45
- &-wrapper {
46
- pointer-events: auto;
47
- position: relative;
48
- display: block;
49
- box-sizing: border-box;
50
- border-radius: 3px 3px;
51
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
52
- margin: 0 0 16px;
53
- border: 1px solid #999;
54
- border: 0px solid rgba(0, 0, 0, 0);
55
- background: #fff;
56
- width: 300px;
57
- }
58
-
59
- // Content
60
- &-content {
61
- padding: 7px 20px 7px 10px;
62
- }
63
-
64
- &-closable &-content {
65
- padding-right: 20px;
66
- }
67
-
68
- &-close {
69
- position: absolute;
70
- top: 3px;
71
- right: 5px;
72
- color: #000;
73
- font-weight: 700;
74
- font-size: 16px;
75
- line-height: 1;
76
- text-decoration: none;
77
- text-shadow: 0 1px 0 #fff;
78
- outline: none;
79
- cursor: pointer;
80
- opacity: 0.2;
81
- filter: alpha(opacity=20);
82
- border: 0;
83
- background-color: #fff;
84
-
85
- &-x:after {
86
- content: '×';
87
- }
88
-
89
- &:hover {
90
- text-decoration: none;
91
- opacity: 1;
92
- filter: alpha(opacity=100);
93
- }
94
- }
95
-
96
- // Progress
97
- &-progress {
98
- position: absolute;
99
- left: 3px;
100
- right: 3px;
101
- border-radius: 1px;
102
- overflow: hidden;
103
- appearance: none;
104
- -webkit-appearance: none;
105
- display: block;
106
- inline-size: 100%;
107
- block-size: 2px;
108
- border: 0;
109
-
110
- &,
111
- &::-webkit-progress-bar {
112
- background-color: rgba(0, 0, 0, 0.04);
113
- }
114
-
115
- &::-moz-progress-bar {
116
- background-color: #31afff;
117
- }
118
-
119
- &::-webkit-progress-value {
120
- background-color: #31afff;
121
- }
122
- }
123
- }
124
-
125
- &-fade {
126
- overflow: hidden;
127
- transition: all 0.3s;
128
- }
129
-
130
- &-fade-appear-prepare {
131
- pointer-events: none;
132
- opacity: 0 !important;
133
- }
134
-
135
- &-fade-appear-start {
136
- transform: translateX(100%);
137
- opacity: 0;
138
- }
139
-
140
- &-fade-appear-active {
141
- transform: translateX(0);
142
- opacity: 1;
143
- }
144
-
145
- // .fade-effect() {
146
- // animation-duration: 0.3s;
147
- // animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2);
148
- // animation-fill-mode: both;
149
- // }
150
-
151
- // &-fade-appear,
152
- // &-fade-enter {
153
- // opacity: 0;
154
- // animation-play-state: paused;
155
- // .fade-effect();
156
- // }
157
-
158
- // &-fade-leave {
159
- // .fade-effect();
160
- // animation-play-state: paused;
161
- // }
162
-
163
- // &-fade-appear&-fade-appear-active,
164
- // &-fade-enter&-fade-enter-active {
165
- // animation-name: rcNotificationFadeIn;
166
- // animation-play-state: running;
167
- // }
168
-
169
- // &-fade-leave&-fade-leave-active {
170
- // animation-name: rcDialogFadeOut;
171
- // animation-play-state: running;
172
- // }
173
-
174
- // @keyframes rcNotificationFadeIn {
175
- // 0% {
176
- // opacity: 0;
177
- // }
178
- // 100% {
179
- // opacity: 1;
180
- // }
181
- // }
182
-
183
- // @keyframes rcDialogFadeOut {
184
- // 0% {
185
- // opacity: 1;
186
- // }
187
- // 100% {
188
- // opacity: 0;
189
- // }
190
- // }
191
-
192
- // ========================= Stack =========================
193
- &-stack {
194
- & > .@{notificationPrefixCls}-notice {
195
- &-wrapper {
196
- transition: all 0.3s;
197
- position: absolute;
198
- top: 12px;
199
- opacity: 1;
200
-
201
- &:not(:nth-last-child(-n + 3)) {
202
- opacity: 0;
203
- right: 34px;
204
- width: 252px;
205
- overflow: hidden;
206
- color: transparent;
207
- pointer-events: none;
208
- }
209
-
210
- &:nth-last-child(1) {
211
- right: 10px;
212
- }
213
-
214
- &:nth-last-child(2) {
215
- right: 18px;
216
- width: 284px;
217
- color: transparent;
218
- overflow: hidden;
219
- }
220
-
221
- &:nth-last-child(3) {
222
- right: 26px;
223
- width: 268px;
224
- color: transparent;
225
- overflow: hidden;
226
- }
227
- }
228
- }
229
-
230
- &&-expanded {
231
- & > .@{notificationPrefixCls}-notice {
232
- &-wrapper {
233
- &:not(:nth-last-child(-n + 1)) {
234
- opacity: 1;
235
- width: 300px;
236
- right: 10px;
237
- overflow: unset;
238
- color: inherit;
239
- pointer-events: auto;
240
- }
241
-
242
- &::before {
243
- content: "";
244
- position: absolute;
245
- left: 0;
246
- right: 0;
247
- top: -16px;
248
- width: 100%;
249
- height: calc(100% + 32px);
250
- background: transparent;
251
- pointer-events: auto;
252
- color: rgb(0,0,0);
253
- }
254
- }
255
- }
256
- }
257
-
258
- &.@{notificationPrefixCls}-bottomRight {
259
- & > .@{notificationPrefixCls}-notice-wrapper {
260
- top: unset;
261
- bottom: 12px;
262
- }
263
- }
264
- }
265
- }
package/docs/maxCount.vue DELETED
@@ -1,24 +0,0 @@
1
- <script setup lang="ts">
2
- import { useNotification } from '../src'
3
- import motion from './motion.ts'
4
- import './index.less'
5
-
6
- const [notice, contextHolder] = useNotification({ maxCount: 3, motion })
7
- </script>
8
-
9
- <template>
10
- <button
11
- @click="() => {
12
- notice.open({
13
- content: `${new Date().toISOString()}`,
14
- });
15
- }"
16
- >
17
- Max Count
18
- </button>
19
- <contextHolder />
20
- </template>
21
-
22
- <style scoped>
23
-
24
- </style>
package/docs/motion.ts DELETED
@@ -1,33 +0,0 @@
1
- import type { TransitionGroupProps } from 'vue'
2
-
3
- const motion: TransitionGroupProps = {
4
- appear: true,
5
- name: 'vc-notification-fade',
6
- // enterFromClass: 'vc-notification-fade-appear-start vc-notification-fade-appear-prepare',
7
- // enterActiveClass: 'vc-notification-fade',
8
- // enterToClass: 'vc-notification-fade-appear-active',
9
- // leaveFromClass: 'vc-notification-fade-appear-active',
10
- // leaveToClass: 'vc-notification-fade-appear-start vc-notification-fade-appear-prepare',
11
- // leaveActiveClass: 'vc-notification-fade vc-notification-fade-appear-leave',
12
- // moveClass: 'vc-notification-fade',
13
- onBeforeLeave: (el) => {
14
- const _el = el as HTMLDivElement
15
- _el.style.height = `${_el.offsetHeight}px`
16
- },
17
- onLeave(el) {
18
- setTimeout(() => {
19
- const _el = el as HTMLDivElement
20
- _el.style.height = '0px'
21
- _el.style.opacity = '1'
22
- _el.style.margin = '0px'
23
- })
24
- },
25
- onAfterLeave(el) {
26
- const _el = el as HTMLDivElement
27
- _el.style.height = ''
28
- _el.style.opacity = ''
29
- _el.style.margin = ''
30
- },
31
- }
32
-
33
- export default motion
@@ -1,31 +0,0 @@
1
- <script setup lang="ts">
2
- import Context from './context.vue'
3
- import Hooks from './hooks.vue'
4
- import MaxCount from './maxCount.vue'
5
- import ShowProgress from './showProgress.vue'
6
- import Stack from './stack.vue'
7
- </script>
8
-
9
- <template>
10
- <Story title="Notification">
11
- <Variant title="Context">
12
- <Context />
13
- </Variant>
14
-
15
- <Variant title="Hooks">
16
- <Hooks />
17
- </Variant>
18
-
19
- <Variant title="MaxCount">
20
- <MaxCount />
21
- </Variant>
22
-
23
- <Variant title="ShowProgress">
24
- <ShowProgress />
25
- </Variant>
26
-
27
- <Variant title="Stack">
28
- <Stack />
29
- </Variant>
30
- </Story>
31
- </template>
@@ -1,34 +0,0 @@
1
- <script setup lang="ts">
2
- import { useNotification } from '../src'
3
- import motion from './motion.ts'
4
- import './index.less'
5
-
6
- const [notice, contextHolder] = useNotification({ showProgress: true, motion })
7
- </script>
8
-
9
- <template>
10
- <button
11
- @click="() => {
12
- notice.open({
13
- content: `${new Date().toISOString()}`,
14
- });
15
- }"
16
- >
17
- Show With Progress
18
- </button>
19
- <button
20
- @click="() => {
21
- notice.open({
22
- content: `${new Date().toISOString()}`,
23
- pauseOnHover: false,
24
- });
25
- }"
26
- >
27
- Not Pause On Hover
28
- </button>
29
- <contextHolder />
30
- </template>
31
-
32
- <style scoped>
33
-
34
- </style>
package/docs/stack.vue DELETED
@@ -1,39 +0,0 @@
1
- <script setup lang="ts">
2
- import { useNotification } from '../src'
3
- import motion from './motion.ts'
4
- import './index.less'
5
-
6
- const [{ open }, contextHolder] = useNotification({ motion, stack: true })
7
-
8
- function getConfig() {
9
- return {
10
- content: `${Array.from({ length: Math.round(Math.random() * 5) + 1 })
11
- .fill(1)
12
- .map(() => new Date().toISOString())
13
- .join('\n')}`,
14
- duration: null,
15
- }
16
- }
17
- </script>
18
-
19
- <template>
20
- <button
21
- @click="() => {
22
- open(getConfig());
23
- }"
24
- >
25
- Top Right
26
- </button>
27
- <button
28
- @click="() => {
29
- open({ ...getConfig(), placement: 'bottomRight' });
30
- }"
31
- >
32
- Bottom Right
33
- </button>
34
- <contextHolder />
35
- </template>
36
-
37
- <style scoped>
38
-
39
- </style>