@v-c/dialog 0.0.4 → 1.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
1
  import { getMotionName } from "../util.js";
2
2
  import Content_default from "./Content/index.js";
3
3
  import Mask_default from "./Mask.js";
4
- import { createVNode, defineComponent, mergeDefaults, mergeProps, onUnmounted, shallowRef, useId, watch } from "vue";
4
+ import { createVNode, defineComponent, mergeDefaults, mergeProps, nextTick, onUnmounted, shallowRef, useId, watch } from "vue";
5
5
  import { warning } from "@v-c/util";
6
6
  import contains from "@v-c/util/dist/Dom/contains";
7
7
  import pickAttrs from "@v-c/util/dist/pickAttrs";
@@ -20,6 +20,7 @@ var Dialog_default = /* @__PURE__ */ defineComponent((props, { expose, slots })
20
20
  const wrapperRef = shallowRef();
21
21
  const contentRef = shallowRef();
22
22
  const animatedVisible = shallowRef(props.visible);
23
+ const isFixedPos = shallowRef(false);
23
24
  const ariaId = useId();
24
25
  function saveLastOutSideActiveElementRef() {
25
26
  if (!contains(wrapperRef.value, document.activeElement)) lastOutSideActiveElementRef.value = document.activeElement;
@@ -67,6 +68,10 @@ var Dialog_default = /* @__PURE__ */ defineComponent((props, { expose, slots })
67
68
  if (props.visible) {
68
69
  animatedVisible.value = true;
69
70
  saveLastOutSideActiveElementRef();
71
+ nextTick(() => {
72
+ const wrapEl = wrapperRef.value;
73
+ if (wrapEl) isFixedPos.value = getComputedStyle(wrapEl).position === "fixed";
74
+ });
70
75
  }
71
76
  }, { immediate: true });
72
77
  onUnmounted(() => {
@@ -113,6 +118,7 @@ var Dialog_default = /* @__PURE__ */ defineComponent((props, { expose, slots })
113
118
  "ariaId": ariaId,
114
119
  "prefixCls": prefixCls,
115
120
  "visible": !!visible,
121
+ "isFixedPos": isFixedPos.value,
116
122
  "motionName": getMotionName(prefixCls, transitionName, animation)
117
123
  }), slots)])]);
118
124
  };
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@v-c/dialog",
3
3
  "type": "module",
4
- "version": "0.0.4",
4
+ "version": "1.0.1",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/index.d.ts",
8
8
  "import": "./dist/index.js",
9
- "require": "./dist/index.cjs"
9
+ "default": "./dist/index.js"
10
10
  },
11
11
  "./dist/*.js": "./dist/*.js",
12
12
  "./dist/*.d.ts": "./dist/*.d.ts",
@@ -25,8 +25,8 @@
25
25
  "vue": "^3.0.0"
26
26
  },
27
27
  "dependencies": {
28
- "@v-c/portal": "^1.0.3",
29
- "@v-c/util": "^1.0.8"
28
+ "@v-c/portal": "^1.0.7",
29
+ "@v-c/util": "^1.0.12"
30
30
  },
31
31
  "scripts": {
32
32
  "build": "vite build",
@@ -1,366 +0,0 @@
1
- Object.defineProperties(exports, {
2
- __esModule: { value: true },
3
- [Symbol.toStringTag]: { value: "Module" }
4
- });
5
- const require_rolldown_runtime = require("../../_virtual/rolldown_runtime.cjs");
6
- const require_context = require("../../context.cjs");
7
- let vue = require("vue");
8
- let _v_c_util = require("@v-c/util");
9
- let _v_c_util_dist_pickAttrs = require("@v-c/util/dist/pickAttrs");
10
- _v_c_util_dist_pickAttrs = require_rolldown_runtime.__toESM(_v_c_util_dist_pickAttrs);
11
- let _v_c_util_dist_Dom_focus = require("@v-c/util/dist/Dom/focus");
12
- let _v_c_util_dist_props_util = require("@v-c/util/dist/props-util");
13
- var Panel = /* @__PURE__ */ (0, vue.defineComponent)((props, { expose, slots }) => {
14
- const { setPanel } = require_context.useGetRefContext();
15
- const internalRef = (0, vue.shallowRef)();
16
- const mergeRefFun = (el) => {
17
- internalRef.value = el;
18
- setPanel?.(el);
19
- props?.holderRef?.(el);
20
- };
21
- (0, _v_c_util_dist_Dom_focus.useLockFocus)((0, vue.computed)(() => !!props.visible && !!props.isFixedPos && props.focusTrap !== false), () => internalRef.value);
22
- expose({ focus: () => {
23
- internalRef.value?.focus?.({ preventScroll: true });
24
- } });
25
- return () => {
26
- const { width, height, footer, prefixCls, classNames: modalClassNames, styles: modalStyles, title, closable, closeIcon, bodyProps, bodyStyle, ariaId, style, className, forceRender, onClose, onMouseDown, onMouseUp, modalRender, animationVisible } = props;
27
- const contentStyle = {};
28
- if (width !== void 0) contentStyle.width = (0, _v_c_util_dist_props_util.getStylePxValue)(width);
29
- if (height !== void 0) contentStyle.height = (0, _v_c_util_dist_props_util.getStylePxValue)(height);
30
- const footerNode = footer ? (0, vue.createVNode)("div", {
31
- "class": (0, _v_c_util.classNames)(`${prefixCls}-footer`, modalClassNames?.footer),
32
- "style": { ...modalStyles?.footer }
33
- }, [footer]) : null;
34
- const headerNode = title ? (0, vue.createVNode)("div", {
35
- "class": (0, _v_c_util.classNames)(`${prefixCls}-header`, modalClassNames?.header),
36
- "style": { ...modalStyles?.header }
37
- }, [(0, vue.createVNode)("div", {
38
- "class": (0, _v_c_util.clsx)(`${prefixCls}-title`, modalClassNames?.title),
39
- "id": ariaId,
40
- "style": { ...modalStyles?.title }
41
- }, [title])]) : null;
42
- const closableFun = () => {
43
- if (typeof closable === "object" && closable !== null) return closable;
44
- if (closable) return { closeIcon: closeIcon ?? (0, vue.createVNode)("span", { "class": `${prefixCls}-close-x` }, null) };
45
- return {};
46
- };
47
- const closableObj = closableFun();
48
- const ariaProps = (0, _v_c_util_dist_pickAttrs.default)(closableObj, true);
49
- const closeBtnIsDisabled = typeof closable === "object" && closable?.disabled;
50
- const closerNode = closable ? (0, vue.createVNode)("button", (0, vue.mergeProps)({
51
- "type": "button",
52
- "onClick": onClose,
53
- "aria-label": "Close"
54
- }, ariaProps, {
55
- "class": `${prefixCls}-close`,
56
- "disabled": closeBtnIsDisabled
57
- }), [closableObj.closeIcon]) : null;
58
- const content = (0, vue.createVNode)("div", {
59
- "class": (0, _v_c_util.classNames)(`${prefixCls}-container`, modalClassNames?.container),
60
- "style": modalStyles?.container
61
- }, [
62
- closerNode,
63
- headerNode,
64
- (0, vue.createVNode)("div", (0, vue.mergeProps)({
65
- "class": (0, _v_c_util.classNames)(`${prefixCls}-body`, modalClassNames?.body),
66
- "style": {
67
- ...bodyStyle,
68
- ...modalStyles?.body
69
- }
70
- }, bodyProps), [slots?.default?.()]),
71
- footerNode
72
- ]);
73
- const renderContent = () => {
74
- if (!animationVisible && forceRender) return null;
75
- return modalRender ? modalRender(content) : content;
76
- };
77
- return (0, vue.createVNode)("div", (0, vue.mergeProps)({
78
- "key": "dialog-element",
79
- "role": "dialog"
80
- }, { "aria-labelledby": title ? ariaId : null }, {
81
- "aria-modal": "true",
82
- "ref": mergeRefFun,
83
- "style": {
84
- ...style,
85
- ...contentStyle
86
- },
87
- "class": [prefixCls, className],
88
- "onMousedown": onMouseDown,
89
- "onMouseup": onMouseUp,
90
- "tabindex": -1
91
- }), [renderContent()]);
92
- };
93
- }, {
94
- props: {
95
- prefixCls: {
96
- type: String,
97
- required: true,
98
- default: void 0
99
- },
100
- ariaId: {
101
- type: String,
102
- required: false,
103
- default: void 0
104
- },
105
- onMouseDown: {
106
- type: Function,
107
- required: false,
108
- default: void 0
109
- },
110
- onMouseUp: {
111
- type: Function,
112
- required: false,
113
- default: void 0
114
- },
115
- holderRef: {
116
- type: Function,
117
- required: false,
118
- default: void 0
119
- },
120
- isFixedPos: {
121
- type: Boolean,
122
- required: false,
123
- default: void 0
124
- },
125
- className: {
126
- type: String,
127
- required: false,
128
- default: void 0
129
- },
130
- keyboard: {
131
- type: Boolean,
132
- required: false,
133
- default: void 0
134
- },
135
- style: {
136
- type: Object,
137
- required: false,
138
- default: void 0
139
- },
140
- rootStyle: {
141
- type: Object,
142
- required: false,
143
- default: void 0
144
- },
145
- mask: {
146
- type: Boolean,
147
- required: false,
148
- default: void 0
149
- },
150
- children: {
151
- type: [
152
- Object,
153
- Function,
154
- String,
155
- Number,
156
- null,
157
- Boolean,
158
- Array
159
- ],
160
- required: false,
161
- default: void 0
162
- },
163
- afterClose: {
164
- type: Function,
165
- required: false,
166
- default: void 0
167
- },
168
- afterOpenChange: {
169
- type: Function,
170
- required: false,
171
- default: void 0
172
- },
173
- onClose: {
174
- type: Function,
175
- required: false,
176
- default: void 0
177
- },
178
- closable: {
179
- type: [Boolean, Object],
180
- required: false,
181
- default: void 0
182
- },
183
- maskClosable: {
184
- type: Boolean,
185
- required: false,
186
- default: void 0
187
- },
188
- visible: {
189
- type: Boolean,
190
- required: false,
191
- default: void 0
192
- },
193
- destroyOnHidden: {
194
- type: Boolean,
195
- required: false,
196
- default: void 0
197
- },
198
- mousePosition: {
199
- type: [Object, null],
200
- required: false,
201
- default: void 0
202
- },
203
- title: {
204
- type: [
205
- Object,
206
- Function,
207
- String,
208
- Number,
209
- null,
210
- Boolean,
211
- Array
212
- ],
213
- required: false,
214
- default: void 0
215
- },
216
- footer: {
217
- type: [
218
- Object,
219
- Function,
220
- String,
221
- Number,
222
- null,
223
- Boolean,
224
- Array
225
- ],
226
- required: false,
227
- default: void 0
228
- },
229
- transitionName: {
230
- type: String,
231
- required: false,
232
- default: void 0
233
- },
234
- maskTransitionName: {
235
- type: String,
236
- required: false,
237
- default: void 0
238
- },
239
- animation: {
240
- required: false,
241
- default: void 0
242
- },
243
- maskAnimation: {
244
- required: false,
245
- default: void 0
246
- },
247
- wrapStyle: {
248
- type: Object,
249
- required: false,
250
- default: void 0
251
- },
252
- bodyStyle: {
253
- type: Object,
254
- required: false,
255
- default: void 0
256
- },
257
- maskStyle: {
258
- type: Object,
259
- required: false,
260
- default: void 0
261
- },
262
- wrapClassName: {
263
- type: String,
264
- required: false,
265
- default: void 0
266
- },
267
- width: {
268
- type: [String, Number],
269
- required: false,
270
- default: void 0
271
- },
272
- height: {
273
- type: [String, Number],
274
- required: false,
275
- default: void 0
276
- },
277
- zIndex: {
278
- type: Number,
279
- required: false,
280
- default: void 0
281
- },
282
- bodyProps: {
283
- required: false,
284
- default: void 0
285
- },
286
- maskProps: {
287
- required: false,
288
- default: void 0
289
- },
290
- rootClassName: {
291
- type: String,
292
- required: false,
293
- default: void 0
294
- },
295
- classNames: {
296
- type: Object,
297
- required: false,
298
- default: void 0
299
- },
300
- styles: {
301
- type: Object,
302
- required: false,
303
- default: void 0
304
- },
305
- wrapProps: {
306
- required: false,
307
- default: void 0
308
- },
309
- getContainer: {
310
- type: [
311
- String,
312
- Function,
313
- Boolean
314
- ],
315
- required: false,
316
- skipCheck: true,
317
- default: void 0
318
- },
319
- closeIcon: {
320
- type: [
321
- Object,
322
- Function,
323
- String,
324
- Number,
325
- null,
326
- Boolean,
327
- Array
328
- ],
329
- required: false,
330
- default: void 0
331
- },
332
- modalRender: {
333
- type: Function,
334
- required: false,
335
- default: void 0
336
- },
337
- forceRender: {
338
- type: Boolean,
339
- required: false,
340
- default: void 0
341
- },
342
- focusTriggerAfterClose: {
343
- type: Boolean,
344
- required: false,
345
- default: void 0
346
- },
347
- focusTrap: {
348
- type: Boolean,
349
- required: false,
350
- default: void 0
351
- },
352
- panelRef: {
353
- required: false,
354
- default: void 0
355
- },
356
- animationVisible: {
357
- type: Boolean,
358
- required: true,
359
- default: void 0
360
- }
361
- },
362
- name: "Panel",
363
- inheritAttrs: false
364
- });
365
- var Panel_default = Panel;
366
- exports.default = Panel_default;