@v-c/dialog 0.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.
@@ -0,0 +1,277 @@
1
+ import { useRefProvide } from "./context.js";
2
+ import Dialog_default from "./Dialog/index.js";
3
+ import { createVNode, defineComponent, mergeDefaults, mergeProps, shallowRef, watch } from "vue";
4
+ import Portal from "@v-c/portal";
5
+ var DialogWrap_default = /* @__PURE__ */ defineComponent((props, { slots }) => {
6
+ const animatedVisible = shallowRef(false);
7
+ const { setPanelRef } = useRefProvide();
8
+ watch(() => props.panelRef, () => {
9
+ setPanelRef(props.panelRef);
10
+ }, { immediate: true });
11
+ watch(() => props.visible, () => {
12
+ if (props.visible) animatedVisible.value = true;
13
+ }, { immediate: true });
14
+ return () => {
15
+ const { visible, getContainer, forceRender, destroyOnHidden = false, afterClose } = props;
16
+ if (!forceRender && destroyOnHidden && !animatedVisible) return null;
17
+ return createVNode(Portal, {
18
+ "open": !!(visible || forceRender || animatedVisible),
19
+ "autoDestroy": false,
20
+ "getContainer": getContainer,
21
+ "autoLock": !!(visible || animatedVisible)
22
+ }, { default: () => [createVNode(Dialog_default, mergeProps(props, {
23
+ "destroyOnHidden": destroyOnHidden,
24
+ "afterClose": () => {
25
+ afterClose?.();
26
+ animatedVisible.value = false;
27
+ }
28
+ }), slots)] });
29
+ };
30
+ }, {
31
+ props: /* @__PURE__ */ mergeDefaults({
32
+ className: {
33
+ type: String,
34
+ required: false,
35
+ default: void 0
36
+ },
37
+ keyboard: {
38
+ type: Boolean,
39
+ required: false,
40
+ default: void 0
41
+ },
42
+ style: {
43
+ type: Object,
44
+ required: false,
45
+ default: void 0
46
+ },
47
+ rootStyle: {
48
+ type: Object,
49
+ required: false,
50
+ default: void 0
51
+ },
52
+ mask: {
53
+ type: Boolean,
54
+ required: false,
55
+ default: void 0
56
+ },
57
+ children: {
58
+ type: [
59
+ Object,
60
+ Function,
61
+ String,
62
+ Number,
63
+ null,
64
+ Boolean,
65
+ Array
66
+ ],
67
+ required: false,
68
+ default: void 0
69
+ },
70
+ afterClose: {
71
+ type: Function,
72
+ required: false,
73
+ default: void 0
74
+ },
75
+ afterOpenChange: {
76
+ type: Function,
77
+ required: false,
78
+ default: void 0
79
+ },
80
+ onClose: {
81
+ type: Function,
82
+ required: false,
83
+ default: void 0
84
+ },
85
+ closable: {
86
+ type: [Boolean, Object],
87
+ required: false,
88
+ default: void 0
89
+ },
90
+ maskClosable: {
91
+ type: Boolean,
92
+ required: false,
93
+ default: void 0
94
+ },
95
+ visible: {
96
+ type: Boolean,
97
+ required: false,
98
+ default: void 0
99
+ },
100
+ destroyOnHidden: {
101
+ type: Boolean,
102
+ required: false,
103
+ default: void 0
104
+ },
105
+ mousePosition: {
106
+ type: [Object, null],
107
+ required: false,
108
+ default: void 0
109
+ },
110
+ title: {
111
+ type: [
112
+ Object,
113
+ Function,
114
+ String,
115
+ Number,
116
+ null,
117
+ Boolean,
118
+ Array
119
+ ],
120
+ required: false,
121
+ default: void 0
122
+ },
123
+ footer: {
124
+ type: [
125
+ Object,
126
+ Function,
127
+ String,
128
+ Number,
129
+ null,
130
+ Boolean,
131
+ Array
132
+ ],
133
+ required: false,
134
+ default: void 0
135
+ },
136
+ transitionName: {
137
+ type: String,
138
+ required: false,
139
+ default: void 0
140
+ },
141
+ maskTransitionName: {
142
+ type: String,
143
+ required: false,
144
+ default: void 0
145
+ },
146
+ animation: {
147
+ required: false,
148
+ default: void 0
149
+ },
150
+ maskAnimation: {
151
+ required: false,
152
+ default: void 0
153
+ },
154
+ wrapStyle: {
155
+ type: Object,
156
+ required: false,
157
+ default: void 0
158
+ },
159
+ bodyStyle: {
160
+ type: Object,
161
+ required: false,
162
+ default: void 0
163
+ },
164
+ maskStyle: {
165
+ type: Object,
166
+ required: false,
167
+ default: void 0
168
+ },
169
+ prefixCls: {
170
+ type: String,
171
+ required: false,
172
+ default: void 0
173
+ },
174
+ wrapClassName: {
175
+ type: String,
176
+ required: false,
177
+ default: void 0
178
+ },
179
+ width: {
180
+ type: [String, Number],
181
+ required: false,
182
+ default: void 0
183
+ },
184
+ height: {
185
+ type: [String, Number],
186
+ required: false,
187
+ default: void 0
188
+ },
189
+ zIndex: {
190
+ type: Number,
191
+ required: false,
192
+ default: void 0
193
+ },
194
+ bodyProps: {
195
+ required: false,
196
+ default: void 0
197
+ },
198
+ maskProps: {
199
+ required: false,
200
+ default: void 0
201
+ },
202
+ rootClassName: {
203
+ type: String,
204
+ required: false,
205
+ default: void 0
206
+ },
207
+ classNames: {
208
+ type: Object,
209
+ required: false,
210
+ default: void 0
211
+ },
212
+ styles: {
213
+ type: Object,
214
+ required: false,
215
+ default: void 0
216
+ },
217
+ wrapProps: {
218
+ required: false,
219
+ default: void 0
220
+ },
221
+ getContainer: {
222
+ type: [
223
+ String,
224
+ Function,
225
+ Boolean
226
+ ],
227
+ required: false,
228
+ skipCheck: true,
229
+ default: void 0
230
+ },
231
+ closeIcon: {
232
+ type: [
233
+ Object,
234
+ Function,
235
+ String,
236
+ Number,
237
+ null,
238
+ Boolean,
239
+ Array
240
+ ],
241
+ required: false,
242
+ default: void 0
243
+ },
244
+ modalRender: {
245
+ type: Function,
246
+ required: false,
247
+ default: void 0
248
+ },
249
+ forceRender: {
250
+ type: Boolean,
251
+ required: false,
252
+ default: void 0
253
+ },
254
+ focusTriggerAfterClose: {
255
+ type: Boolean,
256
+ required: false,
257
+ default: void 0
258
+ },
259
+ panelRef: {
260
+ required: false,
261
+ default: void 0
262
+ }
263
+ }, {
264
+ getContainer: void 0,
265
+ closeIcon: void 0,
266
+ prefixCls: "vc-dialog",
267
+ visible: true,
268
+ keyboard: true,
269
+ focusTriggerAfterClose: true,
270
+ closable: true,
271
+ mask: true,
272
+ maskClosable: true,
273
+ forceRender: false
274
+ }),
275
+ name: "Dialog"
276
+ });
277
+ export { DialogWrap_default as default };
File without changes
@@ -0,0 +1,54 @@
1
+ import { GetContainer } from '@v-c/util/dist/PortalWrapper';
2
+ import { VueNode } from '@v-c/util/dist/type';
3
+ import { CSSProperties } from 'vue';
4
+ export type SemanticName = 'header' | 'body' | 'footer' | 'container' | 'title' | 'wrapper' | 'mask';
5
+ export type ModalClassNames = Partial<Record<SemanticName, string>>;
6
+ export type ModalStyles = Partial<Record<SemanticName, CSSProperties>>;
7
+ export interface IDialogPropTypes {
8
+ className?: string;
9
+ keyboard?: boolean;
10
+ style?: CSSProperties;
11
+ rootStyle?: CSSProperties;
12
+ mask?: boolean;
13
+ children?: VueNode;
14
+ afterClose?: () => any;
15
+ afterOpenChange?: (open: boolean) => void;
16
+ onClose?: (e: any) => any;
17
+ closable?: boolean | ({
18
+ closeIcon?: VueNode;
19
+ disabled?: boolean;
20
+ } & Record<string, any>);
21
+ maskClosable?: boolean;
22
+ visible?: boolean;
23
+ destroyOnHidden?: boolean;
24
+ mousePosition?: {
25
+ x: number;
26
+ y: number;
27
+ } | null;
28
+ title?: VueNode;
29
+ footer?: VueNode;
30
+ transitionName?: string;
31
+ maskTransitionName?: string;
32
+ animation?: any;
33
+ maskAnimation?: any;
34
+ wrapStyle?: Record<string, any>;
35
+ bodyStyle?: Record<string, any>;
36
+ maskStyle?: Record<string, any>;
37
+ prefixCls?: string;
38
+ wrapClassName?: string;
39
+ width?: string | number;
40
+ height?: string | number;
41
+ zIndex?: number;
42
+ bodyProps?: any;
43
+ maskProps?: any;
44
+ rootClassName?: string;
45
+ classNames?: ModalClassNames;
46
+ styles?: ModalStyles;
47
+ wrapProps?: any;
48
+ getContainer?: GetContainer | false;
49
+ closeIcon?: VueNode;
50
+ modalRender?: (node: VueNode) => VueNode;
51
+ forceRender?: boolean;
52
+ focusTriggerAfterClose?: boolean;
53
+ panelRef?: any;
54
+ }
File without changes
@@ -0,0 +1,21 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
9
+ key = keys[i];
10
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
11
+ get: ((k) => from[k]).bind(null, key),
12
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
13
+ });
14
+ }
15
+ return to;
16
+ };
17
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
18
+ value: mod,
19
+ enumerable: true
20
+ }) : target, mod));
21
+ exports.__toESM = __toESM;
@@ -0,0 +1,24 @@
1
+ const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
2
+ let vue = require("vue");
3
+ var RefContext = Symbol("RefContext");
4
+ function useRefProvide() {
5
+ const panel = (0, vue.shallowRef)();
6
+ const setPanelRef = (el) => {
7
+ panel.value = el;
8
+ };
9
+ (0, vue.provide)(RefContext, {
10
+ panel,
11
+ setPanel(panel$1) {
12
+ setPanelRef(panel$1);
13
+ }
14
+ });
15
+ return {
16
+ panel,
17
+ setPanelRef
18
+ };
19
+ }
20
+ function useGetRefContext() {
21
+ return (0, vue.inject)(RefContext, {});
22
+ }
23
+ exports.useGetRefContext = useGetRefContext;
24
+ exports.useRefProvide = useRefProvide;
@@ -0,0 +1,10 @@
1
+ import { ShallowRef } from 'vue';
2
+ export interface RefContextProps {
3
+ panel: ShallowRef<HTMLDivElement | undefined>;
4
+ setPanel: (panel: HTMLDivElement) => void;
5
+ }
6
+ export declare function useRefProvide(): {
7
+ panel: ShallowRef<HTMLDivElement | undefined, HTMLDivElement | undefined>;
8
+ setPanelRef: (el: HTMLDivElement) => void;
9
+ };
10
+ export declare function useGetRefContext(): RefContextProps;
@@ -0,0 +1,22 @@
1
+ import { inject, provide, shallowRef } from "vue";
2
+ var RefContext = Symbol("RefContext");
3
+ function useRefProvide() {
4
+ const panel = shallowRef();
5
+ const setPanelRef = (el) => {
6
+ panel.value = el;
7
+ };
8
+ provide(RefContext, {
9
+ panel,
10
+ setPanel(panel$1) {
11
+ setPanelRef(panel$1);
12
+ }
13
+ });
14
+ return {
15
+ panel,
16
+ setPanelRef
17
+ };
18
+ }
19
+ function useGetRefContext() {
20
+ return inject(RefContext, {});
21
+ }
22
+ export { useGetRefContext, useRefProvide };
package/dist/index.cjs ADDED
@@ -0,0 +1,6 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ const require_Panel = require("./Dialog/Content/Panel.cjs");
3
+ const require_DialogWrap = require("./DialogWrap.cjs");
4
+ var src_default = require_DialogWrap.default;
5
+ exports.Panel = require_Panel.default;
6
+ exports.default = src_default;
@@ -0,0 +1,6 @@
1
+ import { IDialogPropTypes as DialogProps } from './IDialogPropTypes';
2
+ import { default as Panel } from './Dialog/Content/Panel';
3
+ import { default as DialogWrap } from './DialogWrap';
4
+ export type { DialogProps };
5
+ export { Panel };
6
+ export default DialogWrap;
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ import Panel_default from "./Dialog/Content/Panel.js";
2
+ import DialogWrap_default from "./DialogWrap.js";
3
+ var src_default = DialogWrap_default;
4
+ export { Panel_default as Panel, src_default as default };
package/dist/util.cjs ADDED
@@ -0,0 +1,31 @@
1
+ function getMotionName(prefixCls, transitionName, animationName) {
2
+ let motionName = transitionName;
3
+ if (!motionName && animationName) motionName = `${prefixCls}-${animationName}`;
4
+ return motionName;
5
+ }
6
+ function getScroll(w, top) {
7
+ let ret = w[`page${top ? "Y" : "X"}Offset`];
8
+ const method = `scroll${top ? "Top" : "Left"}`;
9
+ if (typeof ret !== "number") {
10
+ const d = w.document;
11
+ ret = d.documentElement[method];
12
+ if (typeof ret !== "number") ret = d.body[method];
13
+ }
14
+ return ret;
15
+ }
16
+ function offset(el) {
17
+ const rect = el.getBoundingClientRect();
18
+ const pos = {
19
+ left: rect.left,
20
+ top: rect.top
21
+ };
22
+ const doc = el.ownerDocument;
23
+ const w = doc.defaultView || doc.parentWindow;
24
+ if (w) {
25
+ pos.left += getScroll(w);
26
+ pos.top += getScroll(w, true);
27
+ }
28
+ return pos;
29
+ }
30
+ exports.getMotionName = getMotionName;
31
+ exports.offset = offset;
package/dist/util.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export declare function getMotionName(prefixCls: string, transitionName?: string, animationName?: string): string | undefined;
2
+ export declare function offset(el: Element): {
3
+ left: number;
4
+ top: number;
5
+ };
package/dist/util.js ADDED
@@ -0,0 +1,30 @@
1
+ function getMotionName(prefixCls, transitionName, animationName) {
2
+ let motionName = transitionName;
3
+ if (!motionName && animationName) motionName = `${prefixCls}-${animationName}`;
4
+ return motionName;
5
+ }
6
+ function getScroll(w, top) {
7
+ let ret = w[`page${top ? "Y" : "X"}Offset`];
8
+ const method = `scroll${top ? "Top" : "Left"}`;
9
+ if (typeof ret !== "number") {
10
+ const d = w.document;
11
+ ret = d.documentElement[method];
12
+ if (typeof ret !== "number") ret = d.body[method];
13
+ }
14
+ return ret;
15
+ }
16
+ function offset(el) {
17
+ const rect = el.getBoundingClientRect();
18
+ const pos = {
19
+ left: rect.left,
20
+ top: rect.top
21
+ };
22
+ const doc = el.ownerDocument;
23
+ const w = doc.defaultView || doc.parentWindow;
24
+ if (w) {
25
+ pos.left += getScroll(w);
26
+ pos.top += getScroll(w, true);
27
+ }
28
+ return pos;
29
+ }
30
+ export { getMotionName, offset };
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@v-c/dialog",
3
+ "type": "module",
4
+ "version": "0.0.1",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/index.d.ts",
8
+ "import": "./dist/index.js",
9
+ "require": "./dist/index.cjs"
10
+ },
11
+ "./dist/*.js": "./dist/*.js",
12
+ "./dist/*.d.ts": "./dist/*.d.ts",
13
+ "./package.json": "./package.json"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "main": "dist/index.js",
19
+ "types": "./dist/index.d.ts",
20
+ "files": [
21
+ "dist",
22
+ "package.json"
23
+ ],
24
+ "peerDependencies": {
25
+ "vue": "^3.0.0"
26
+ },
27
+ "dependencies": {
28
+ "@v-c/portal": "^1.0.0",
29
+ "@v-c/util": "^1.0.2"
30
+ },
31
+ "scripts": {
32
+ "build": "vite build",
33
+ "prepublish": "pnpm build",
34
+ "test": "vitest run",
35
+ "bump": "bumpp",
36
+ "bump:patch": "bumpp --release patch"
37
+ }
38
+ }