vue-devui 1.0.0-rc.9 → 1.0.0
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.
- package/README.md +163 -149
- package/alert/index.es.js +12 -7
- package/alert/index.umd.js +1 -1
- package/alert/style.css +1 -1
- package/auto-complete/index.es.js +8019 -254
- package/auto-complete/index.umd.js +29 -3
- package/auto-complete/style.css +1 -1
- package/badge/index.es.js +8 -2
- package/badge/index.umd.js +1 -1
- package/badge/style.css +1 -1
- package/button/index.es.js +104 -40
- package/button/index.umd.js +15 -15
- package/button/style.css +1 -1
- package/card/index.es.js +5 -1
- package/card/index.umd.js +1 -1
- package/card/style.css +1 -1
- package/checkbox/index.es.js +7772 -81
- package/checkbox/index.umd.js +27 -1
- package/checkbox/style.css +1 -1
- package/{date-picker → collapse}/index.d.ts +0 -0
- package/collapse/index.es.js +213 -0
- package/collapse/index.umd.js +1 -0
- package/{date-picker → collapse}/package.json +1 -1
- package/collapse/style.css +1 -0
- package/countdown/index.es.js +56 -13
- package/countdown/index.umd.js +1 -1
- package/date-picker-pro/index.d.ts +7 -0
- package/date-picker-pro/index.es.js +12020 -0
- package/date-picker-pro/index.umd.js +27 -0
- package/date-picker-pro/package.json +7 -0
- package/date-picker-pro/style.css +1 -0
- package/drawer/index.es.js +1 -1
- package/drawer/index.umd.js +1 -1
- package/drawer/style.css +1 -1
- package/dropdown/index.es.js +77 -121
- package/dropdown/index.umd.js +1 -1
- package/dropdown/style.css +1 -1
- package/editable-select/index.es.js +324 -104
- package/editable-select/index.umd.js +1 -1
- package/editable-select/style.css +1 -1
- package/form/index.es.js +91 -118
- package/form/index.umd.js +14 -14
- package/form/style.css +1 -1
- package/icon/index.es.js +106 -41
- package/icon/index.umd.js +1 -1
- package/icon/style.css +1 -1
- package/image-preview/style.css +1 -1
- package/input/index.es.js +8088 -169
- package/input/index.umd.js +27 -1
- package/input/style.css +1 -1
- package/input-number/index.es.js +8 -9
- package/input-number/index.umd.js +1 -1
- package/input-number/style.css +1 -1
- package/layout/index.es.js +1 -1
- package/layout/index.umd.js +1 -1
- package/loading/style.css +1 -1
- package/mention/index.d.ts +7 -0
- package/mention/index.es.js +8310 -0
- package/mention/index.umd.js +36 -0
- package/mention/package.json +7 -0
- package/mention/style.css +1 -0
- package/menu/index.d.ts +7 -0
- package/menu/index.es.js +934 -0
- package/menu/index.umd.js +1 -0
- package/menu/package.json +7 -0
- package/menu/style.css +1 -0
- package/message/index.d.ts +7 -0
- package/message/index.es.js +538 -0
- package/message/index.umd.js +1 -0
- package/message/package.json +7 -0
- package/message/style.css +1 -0
- package/modal/index.es.js +275 -185
- package/modal/index.umd.js +1 -1
- package/modal/style.css +1 -1
- package/notification/index.es.js +143 -72
- package/notification/index.umd.js +1 -1
- package/notification/style.css +1 -1
- package/nuxt/components/Collapse.js +3 -0
- package/nuxt/components/CollapseItem.js +3 -0
- package/nuxt/components/DRangeDatePickerPro.js +3 -0
- package/nuxt/components/DatePickerPro.js +3 -0
- package/nuxt/components/IconGroup.js +3 -0
- package/nuxt/components/Mention.js +3 -0
- package/nuxt/components/Menu.js +3 -0
- package/nuxt/components/MenuItem.js +3 -0
- package/nuxt/components/Message.js +3 -0
- package/nuxt/components/OptionGroup.js +3 -0
- package/nuxt/components/RadioButton.js +3 -0
- package/nuxt/components/Step.js +3 -0
- package/nuxt/components/Steps.js +3 -0
- package/nuxt/components/SubMenu.js +3 -0
- package/nuxt/components/TABLE_TOKEN.js +3 -0
- package/nuxt/components/TimePicker.js +3 -0
- package/nuxt/components/TimeSelect.js +3 -0
- package/nuxt/components/animationInjectionKey.js +3 -0
- package/nuxt/components/collapseItemProps.js +3 -0
- package/nuxt/components/collapseProps.js +3 -0
- package/nuxt/components/datePickerProCommonProps.js +3 -0
- package/nuxt/components/datePickerProPanelProps.js +3 -0
- package/nuxt/components/datePickerProProps.js +3 -0
- package/nuxt/components/mentionProps.js +3 -0
- package/nuxt/components/messageProps.js +3 -0
- package/nuxt/components/roundInjectionKey.js +3 -0
- package/nuxt/components/skeletonItemProps.js +3 -0
- package/nuxt/components/stepProps.js +3 -0
- package/nuxt/components/stepsProps.js +3 -0
- package/nuxt/components/tableProps.js +3 -0
- package/nuxt/components/timerPickerPanelProps.js +3 -0
- package/nuxt/components/treeNodeProps.js +3 -0
- package/overlay/index.es.js +76 -139
- package/overlay/index.umd.js +1 -1
- package/overlay/style.css +1 -1
- package/package.json +6 -3
- package/pagination/index.es.js +175 -7
- package/pagination/index.umd.js +1 -1
- package/pagination/style.css +1 -1
- package/panel/style.css +1 -1
- package/popover/index.es.js +101 -162
- package/popover/index.umd.js +17 -17
- package/popover/style.css +1 -1
- package/progress/style.css +1 -1
- package/radio/index.es.js +7854 -58
- package/radio/index.umd.js +27 -1
- package/radio/style.css +1 -1
- package/rate/style.css +1 -1
- package/result/index.es.js +92 -41
- package/result/index.umd.js +1 -1
- package/result/style.css +1 -1
- package/search/index.es.js +3729 -1206
- package/search/index.umd.js +18 -18
- package/search/style.css +1 -1
- package/select/index.es.js +4426 -2501
- package/select/index.umd.js +17 -17
- package/select/style.css +1 -1
- package/skeleton/index.es.js +87 -261
- package/skeleton/index.umd.js +1 -1
- package/skeleton/style.css +1 -1
- package/slider/index.es.js +116 -143
- package/slider/index.umd.js +1 -1
- package/slider/style.css +1 -1
- package/splitter/index.es.js +256 -147
- package/splitter/index.umd.js +16 -16
- package/splitter/style.css +1 -1
- package/statistic/index.es.js +34 -16
- package/statistic/index.umd.js +1 -1
- package/statistic/style.css +1 -1
- package/status/style.css +1 -1
- package/steps/index.d.ts +7 -0
- package/steps/index.es.js +386 -0
- package/steps/index.umd.js +1 -0
- package/steps/package.json +7 -0
- package/steps/style.css +1 -0
- package/style.css +1 -1
- package/switch/index.es.js +7779 -60
- package/switch/index.umd.js +27 -1
- package/switch/style.css +1 -1
- package/table/index.es.js +4092 -1464
- package/table/index.umd.js +17 -17
- package/table/style.css +1 -1
- package/tabs/index.es.js +224 -77
- package/tabs/index.umd.js +1 -1
- package/tabs/style.css +1 -1
- package/tag/index.es.js +5 -1
- package/tag/index.umd.js +1 -1
- package/tag/style.css +1 -1
- package/textarea/index.es.js +3357 -1064
- package/textarea/index.umd.js +19 -19
- package/textarea/style.css +1 -1
- package/time-picker/index.d.ts +7 -0
- package/time-picker/index.es.js +9549 -0
- package/time-picker/index.umd.js +27 -0
- package/time-picker/package.json +7 -0
- package/time-picker/style.css +1 -0
- package/time-select/index.d.ts +7 -0
- package/time-select/index.es.js +9585 -0
- package/time-select/index.umd.js +27 -0
- package/time-select/package.json +7 -0
- package/time-select/style.css +1 -0
- package/timeline/index.es.js +92 -41
- package/timeline/index.umd.js +1 -1
- package/timeline/style.css +1 -1
- package/tooltip/index.es.js +100 -163
- package/tooltip/index.umd.js +16 -16
- package/tooltip/style.css +1 -1
- package/tree/index.es.js +11036 -608
- package/tree/index.umd.js +27 -1
- package/tree/style.css +1 -1
- package/upload/index.es.js +389 -105
- package/upload/index.umd.js +1 -1
- package/upload/style.css +1 -1
- package/vue-devui.es.js +17291 -9726
- package/vue-devui.umd.js +24 -23
- package/date-picker/index.es.js +0 -1298
- package/date-picker/index.umd.js +0 -1
- package/date-picker/style.css +0 -1
- package/nuxt/components/DatePicker.js +0 -3
- package/nuxt/components/StickSlider.js +0 -3
- package/nuxt/components/formControlProps.js +0 -3
- package/nuxt/components/overlayEmits.js +0 -3
- package/nuxt/components/overlayProps.js +0 -3
package/modal/index.es.js
CHANGED
|
@@ -33,7 +33,7 @@ var __publicField = (obj, key, value) => {
|
|
|
33
33
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
34
34
|
return value;
|
|
35
35
|
};
|
|
36
|
-
import { defineComponent, toRefs, computed, createVNode, resolveDynamicComponent, mergeProps,
|
|
36
|
+
import { defineComponent, toRefs, computed, createVNode, resolveDynamicComponent, mergeProps, watch, onUnmounted, Transition, ref, unref, nextTick, onMounted, Teleport, h, render } from "vue";
|
|
37
37
|
import { offset, autoPlacement, arrow, shift, computePosition } from "@floating-ui/dom";
|
|
38
38
|
const modalProps = {
|
|
39
39
|
modelValue: {
|
|
@@ -54,11 +54,24 @@ const modalProps = {
|
|
|
54
54
|
},
|
|
55
55
|
beforeClose: {
|
|
56
56
|
type: Function
|
|
57
|
+
},
|
|
58
|
+
escapable: {
|
|
59
|
+
type: Boolean,
|
|
60
|
+
default: true
|
|
61
|
+
},
|
|
62
|
+
showClose: {
|
|
63
|
+
type: Boolean,
|
|
64
|
+
default: true
|
|
65
|
+
},
|
|
66
|
+
showOverlay: {
|
|
67
|
+
type: Boolean,
|
|
68
|
+
default: true
|
|
69
|
+
},
|
|
70
|
+
appendToBody: {
|
|
71
|
+
type: Boolean,
|
|
72
|
+
default: true
|
|
57
73
|
}
|
|
58
74
|
};
|
|
59
|
-
function isUrl(value) {
|
|
60
|
-
return /^((http|https):)?\/\//.test(value);
|
|
61
|
-
}
|
|
62
75
|
const DEFAULT_PREFIX = "icon";
|
|
63
76
|
const iconProps = {
|
|
64
77
|
name: {
|
|
@@ -81,6 +94,17 @@ const iconProps = {
|
|
|
81
94
|
classPrefix: {
|
|
82
95
|
type: String,
|
|
83
96
|
default: DEFAULT_PREFIX
|
|
97
|
+
},
|
|
98
|
+
operable: {
|
|
99
|
+
type: Boolean,
|
|
100
|
+
default: false
|
|
101
|
+
},
|
|
102
|
+
disabled: {
|
|
103
|
+
type: Boolean,
|
|
104
|
+
default: false
|
|
105
|
+
},
|
|
106
|
+
rotate: {
|
|
107
|
+
type: [Number, String]
|
|
84
108
|
}
|
|
85
109
|
};
|
|
86
110
|
const svgIconProps = {
|
|
@@ -151,178 +175,190 @@ var svgIcon = defineComponent({
|
|
|
151
175
|
};
|
|
152
176
|
}
|
|
153
177
|
});
|
|
178
|
+
function isUrl(value) {
|
|
179
|
+
return /^((http|https):)?\/\//.test(value);
|
|
180
|
+
}
|
|
181
|
+
function useIconDom(props, ctx) {
|
|
182
|
+
const {
|
|
183
|
+
component,
|
|
184
|
+
name,
|
|
185
|
+
size,
|
|
186
|
+
color,
|
|
187
|
+
classPrefix,
|
|
188
|
+
rotate
|
|
189
|
+
} = toRefs(props);
|
|
190
|
+
const ns = useNamespace("icon");
|
|
191
|
+
const iconSize = computed(() => {
|
|
192
|
+
return typeof size.value === "number" ? `${size.value}px` : size.value;
|
|
193
|
+
});
|
|
194
|
+
const IconComponent = component.value ? resolveDynamicComponent(component.value) : resolveDynamicComponent(svgIcon);
|
|
195
|
+
const imgIconDom = () => {
|
|
196
|
+
return createVNode("img", mergeProps({
|
|
197
|
+
"src": name.value,
|
|
198
|
+
"alt": name.value.split("/")[name.value.split("/").length - 1],
|
|
199
|
+
"class": [(rotate == null ? void 0 : rotate.value) === "infinite" && ns.m("spin")],
|
|
200
|
+
"style": {
|
|
201
|
+
width: iconSize.value || "",
|
|
202
|
+
transform: `rotate(${rotate == null ? void 0 : rotate.value}deg)`,
|
|
203
|
+
verticalAlign: "middle"
|
|
204
|
+
}
|
|
205
|
+
}, ctx.attrs), null);
|
|
206
|
+
};
|
|
207
|
+
const svgIconDom = () => {
|
|
208
|
+
return createVNode(IconComponent, mergeProps({
|
|
209
|
+
"name": name.value,
|
|
210
|
+
"color": color.value,
|
|
211
|
+
"size": iconSize.value,
|
|
212
|
+
"class": [(rotate == null ? void 0 : rotate.value) === "infinite" && ns.m("spin")],
|
|
213
|
+
"style": {
|
|
214
|
+
transform: `rotate(${rotate == null ? void 0 : rotate.value}deg)`
|
|
215
|
+
}
|
|
216
|
+
}, ctx.attrs), null);
|
|
217
|
+
};
|
|
218
|
+
const fontIconDom = () => {
|
|
219
|
+
const fontIconClass = /^icon-/.test(name.value) ? name.value : `${classPrefix.value}-${name.value}`;
|
|
220
|
+
return createVNode("i", mergeProps({
|
|
221
|
+
"class": [classPrefix.value, fontIconClass, (rotate == null ? void 0 : rotate.value) === "infinite" && ns.m("spin")],
|
|
222
|
+
"style": {
|
|
223
|
+
fontSize: iconSize.value,
|
|
224
|
+
color: color.value,
|
|
225
|
+
transform: `rotate(${rotate == null ? void 0 : rotate.value}deg)`
|
|
226
|
+
}
|
|
227
|
+
}, ctx.attrs), null);
|
|
228
|
+
};
|
|
229
|
+
const iconDom = () => {
|
|
230
|
+
return component.value ? svgIconDom() : isUrl(name.value) ? imgIconDom() : fontIconDom();
|
|
231
|
+
};
|
|
232
|
+
return {
|
|
233
|
+
iconDom
|
|
234
|
+
};
|
|
235
|
+
}
|
|
154
236
|
var Icon = defineComponent({
|
|
155
237
|
name: "DIcon",
|
|
156
238
|
props: iconProps,
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}) {
|
|
239
|
+
emits: ["click"],
|
|
240
|
+
setup(props, ctx) {
|
|
160
241
|
const {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
size,
|
|
164
|
-
color,
|
|
165
|
-
classPrefix
|
|
242
|
+
disabled,
|
|
243
|
+
operable
|
|
166
244
|
} = toRefs(props);
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
"alt": name.value.split("/")[name.value.split("/").length - 1],
|
|
182
|
-
"style": {
|
|
183
|
-
width: iconSize.value || ""
|
|
184
|
-
}
|
|
185
|
-
}, attrs), null);
|
|
186
|
-
};
|
|
187
|
-
const fontIconDom = () => {
|
|
188
|
-
const fontIconClass = /^icon-/.test(name.value) ? name.value : `${classPrefix.value}-${name.value}`;
|
|
189
|
-
return createVNode("i", mergeProps({
|
|
190
|
-
"class": [classPrefix.value, fontIconClass],
|
|
191
|
-
"style": {
|
|
192
|
-
fontSize: iconSize.value,
|
|
193
|
-
color: color.value
|
|
194
|
-
}
|
|
195
|
-
}, attrs), null);
|
|
245
|
+
const {
|
|
246
|
+
iconDom
|
|
247
|
+
} = useIconDom(props, ctx);
|
|
248
|
+
const ns = useNamespace("icon");
|
|
249
|
+
const wrapClassed = computed(() => ({
|
|
250
|
+
[ns.e("container")]: true,
|
|
251
|
+
[ns.m("disabled")]: disabled.value,
|
|
252
|
+
[ns.m("operable")]: operable.value
|
|
253
|
+
}));
|
|
254
|
+
const onClick = (e) => {
|
|
255
|
+
if (disabled.value) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
ctx.emit("click", e);
|
|
196
259
|
};
|
|
197
260
|
return () => {
|
|
198
|
-
|
|
261
|
+
var _a, _b, _c, _d;
|
|
262
|
+
return createVNode("div", {
|
|
263
|
+
"class": wrapClassed.value,
|
|
264
|
+
"onClick": onClick
|
|
265
|
+
}, [(_b = (_a = ctx.slots).prefix) == null ? void 0 : _b.call(_a), iconDom(), (_d = (_c = ctx.slots).suffix) == null ? void 0 : _d.call(_c)]);
|
|
199
266
|
};
|
|
200
267
|
}
|
|
201
268
|
});
|
|
202
|
-
var
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
const
|
|
207
|
-
setup(props, ctx) {
|
|
208
|
-
const ns = useNamespace("overlay");
|
|
269
|
+
var iconGroup = "";
|
|
270
|
+
defineComponent({
|
|
271
|
+
name: "DIconGroup",
|
|
272
|
+
setup(_, ctx) {
|
|
273
|
+
const ns = useNamespace("icon-group");
|
|
209
274
|
return () => {
|
|
210
|
-
|
|
211
|
-
return createVNode(
|
|
212
|
-
"
|
|
213
|
-
},
|
|
214
|
-
default: () => [createVNode(Transition, {
|
|
215
|
-
"name": ns.e("fade")
|
|
216
|
-
}, _isSlot(_slot = renderSlot(ctx.slots, "default")) ? _slot : {
|
|
217
|
-
default: () => [_slot]
|
|
218
|
-
})]
|
|
219
|
-
});
|
|
275
|
+
var _a, _b;
|
|
276
|
+
return createVNode("div", {
|
|
277
|
+
"class": ns.b()
|
|
278
|
+
}, [(_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a)]);
|
|
220
279
|
};
|
|
221
280
|
}
|
|
222
281
|
});
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
type: Boolean
|
|
226
|
-
},
|
|
227
|
-
backgroundBlock: {
|
|
282
|
+
const fixedOverlayProps = {
|
|
283
|
+
modelValue: {
|
|
228
284
|
type: Boolean,
|
|
229
285
|
default: false
|
|
230
286
|
},
|
|
231
|
-
|
|
232
|
-
type: String,
|
|
233
|
-
default: ""
|
|
234
|
-
},
|
|
235
|
-
backgroundStyle: {
|
|
236
|
-
type: [String, Object]
|
|
237
|
-
},
|
|
238
|
-
onBackdropClick: {
|
|
239
|
-
type: Function
|
|
240
|
-
},
|
|
241
|
-
backdropClose: {
|
|
287
|
+
lockScroll: {
|
|
242
288
|
type: Boolean,
|
|
243
289
|
default: true
|
|
244
290
|
},
|
|
245
|
-
|
|
291
|
+
closeOnClickOverlay: {
|
|
246
292
|
type: Boolean,
|
|
247
293
|
default: true
|
|
248
294
|
}
|
|
249
295
|
};
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
296
|
+
function lockScroll() {
|
|
297
|
+
if (document.documentElement.scrollHeight > document.documentElement.clientHeight) {
|
|
298
|
+
const scrollTop = document.documentElement.scrollTop;
|
|
299
|
+
const style = document.documentElement.getAttribute("style");
|
|
300
|
+
document.documentElement.style.position = "fixed";
|
|
301
|
+
document.documentElement.style.top = `-${scrollTop}px`;
|
|
302
|
+
document.documentElement.style.width = document.documentElement.style.width || "100%";
|
|
303
|
+
document.documentElement.style.overflowY = "scroll";
|
|
304
|
+
return () => {
|
|
305
|
+
if (style) {
|
|
306
|
+
document.documentElement.setAttribute("style", style);
|
|
307
|
+
} else {
|
|
308
|
+
document.documentElement.removeAttribute("style");
|
|
309
|
+
}
|
|
310
|
+
document.documentElement.scrollTop = scrollTop;
|
|
311
|
+
};
|
|
254
312
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
function
|
|
258
|
-
|
|
259
|
-
const
|
|
260
|
-
return [ns.e("background"), props.backgroundClass, !props.hasBackdrop ? ns.em("background", "disabled") : ns.em("background", "color")];
|
|
261
|
-
});
|
|
262
|
-
const overlayClass = computed(() => {
|
|
263
|
-
return ns.b();
|
|
264
|
-
});
|
|
265
|
-
const handleBackdropClick = (event) => {
|
|
266
|
-
var _a;
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
function useFixedOverlay(props, ctx) {
|
|
316
|
+
let lockScrollCb;
|
|
317
|
+
const onClick = (event) => {
|
|
267
318
|
event.preventDefault();
|
|
268
|
-
(
|
|
269
|
-
if (props.
|
|
270
|
-
ctx.emit("update:
|
|
319
|
+
ctx.emit("click", event);
|
|
320
|
+
if (props.closeOnClickOverlay) {
|
|
321
|
+
ctx.emit("update:modelValue", false);
|
|
271
322
|
}
|
|
272
323
|
};
|
|
273
|
-
const
|
|
274
|
-
|
|
275
|
-
const body = document.body;
|
|
276
|
-
const originOverflow = body.style.overflow;
|
|
277
|
-
const originPosition = body.style.position;
|
|
278
|
-
watch([() => props.visible, () => props.backgroundBlock], ([visible, backgroundBlock]) => {
|
|
279
|
-
if (backgroundBlock) {
|
|
280
|
-
const top = body.getBoundingClientRect().y;
|
|
281
|
-
if (visible) {
|
|
282
|
-
body.style.overflowY = "scroll";
|
|
283
|
-
body.style.position = visible ? "fixed" : "";
|
|
284
|
-
body.style.top = `${top}px`;
|
|
285
|
-
} else {
|
|
286
|
-
body.style.overflowY = originOverflow;
|
|
287
|
-
body.style.position = originPosition;
|
|
288
|
-
body.style.top = "";
|
|
289
|
-
window.scrollTo(0, -top);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
|
-
onUnmounted(() => {
|
|
294
|
-
document.body.style.overflow = originOverflow;
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
return {
|
|
298
|
-
backgroundClass,
|
|
299
|
-
overlayClass,
|
|
300
|
-
handleBackdropClick,
|
|
301
|
-
handleOverlayBubbleCancel
|
|
324
|
+
const removeBodyAdditions = () => {
|
|
325
|
+
lockScrollCb == null ? void 0 : lockScrollCb();
|
|
302
326
|
};
|
|
327
|
+
watch(() => props.modelValue, (val) => {
|
|
328
|
+
if (val) {
|
|
329
|
+
props.lockScroll && (lockScrollCb = lockScroll());
|
|
330
|
+
} else {
|
|
331
|
+
removeBodyAdditions();
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
onUnmounted(removeBodyAdditions);
|
|
335
|
+
return { onClick };
|
|
303
336
|
}
|
|
304
337
|
var fixedOverlay = "";
|
|
305
338
|
const FixedOverlay = defineComponent({
|
|
306
339
|
name: "DFixedOverlay",
|
|
340
|
+
inheritAttrs: false,
|
|
307
341
|
props: fixedOverlayProps,
|
|
308
|
-
emits:
|
|
342
|
+
emits: ["update:modelValue", "click"],
|
|
309
343
|
setup(props, ctx) {
|
|
310
344
|
const {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
345
|
+
modelValue
|
|
346
|
+
} = toRefs(props);
|
|
347
|
+
const ns = useNamespace("fixed-overlay");
|
|
348
|
+
const {
|
|
349
|
+
onClick
|
|
350
|
+
} = useFixedOverlay(props, ctx);
|
|
351
|
+
return () => createVNode(Transition, {
|
|
352
|
+
"name": ns.m("fade")
|
|
353
|
+
}, {
|
|
354
|
+
default: () => {
|
|
355
|
+
var _a, _b;
|
|
356
|
+
return [modelValue.value && createVNode("div", mergeProps({
|
|
357
|
+
"class": ns.b()
|
|
358
|
+
}, ctx.attrs, {
|
|
359
|
+
"onClick": onClick
|
|
360
|
+
}), [(_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a)])];
|
|
361
|
+
}
|
|
326
362
|
});
|
|
327
363
|
}
|
|
328
364
|
});
|
|
@@ -496,12 +532,58 @@ function useModal(props, emit) {
|
|
|
496
532
|
function close() {
|
|
497
533
|
emit("update:modelValue", false);
|
|
498
534
|
}
|
|
499
|
-
function
|
|
500
|
-
|
|
501
|
-
|
|
535
|
+
function execClose() {
|
|
536
|
+
props.beforeClose ? props.beforeClose(close) : close();
|
|
537
|
+
}
|
|
538
|
+
function onOverlayClick() {
|
|
539
|
+
props.closeOnClickOverlay && execClose();
|
|
540
|
+
}
|
|
541
|
+
function onCloseBtnClick() {
|
|
542
|
+
execClose();
|
|
543
|
+
}
|
|
544
|
+
function onKeydown(event) {
|
|
545
|
+
if (event["keyCode"] === 27) {
|
|
546
|
+
execClose();
|
|
502
547
|
}
|
|
503
548
|
}
|
|
504
|
-
|
|
549
|
+
onMounted(() => {
|
|
550
|
+
if (props.escapable) {
|
|
551
|
+
window.addEventListener("keydown", onKeydown);
|
|
552
|
+
}
|
|
553
|
+
});
|
|
554
|
+
onUnmounted(() => {
|
|
555
|
+
if (props.escapable) {
|
|
556
|
+
window.addEventListener("keydown", onKeydown);
|
|
557
|
+
}
|
|
558
|
+
});
|
|
559
|
+
return { onCloseBtnClick, onOverlayClick };
|
|
560
|
+
}
|
|
561
|
+
function useModalRender(props) {
|
|
562
|
+
const showContainer = ref(false);
|
|
563
|
+
const showModal = ref(false);
|
|
564
|
+
let lockScrollCb;
|
|
565
|
+
const removeBodyAdditions = () => {
|
|
566
|
+
lockScrollCb == null ? void 0 : lockScrollCb();
|
|
567
|
+
};
|
|
568
|
+
watch(() => props.modelValue, (val) => {
|
|
569
|
+
if (val) {
|
|
570
|
+
props.lockScroll && (lockScrollCb = lockScroll());
|
|
571
|
+
showContainer.value = true;
|
|
572
|
+
nextTick(() => {
|
|
573
|
+
showModal.value = true;
|
|
574
|
+
});
|
|
575
|
+
} else {
|
|
576
|
+
removeBodyAdditions();
|
|
577
|
+
showModal.value = false;
|
|
578
|
+
setTimeout(() => {
|
|
579
|
+
showContainer.value = false;
|
|
580
|
+
}, 100);
|
|
581
|
+
}
|
|
582
|
+
}, {
|
|
583
|
+
immediate: true
|
|
584
|
+
});
|
|
585
|
+
onUnmounted(removeBodyAdditions);
|
|
586
|
+
return { showContainer, showModal };
|
|
505
587
|
}
|
|
506
588
|
var Header = defineComponent({
|
|
507
589
|
name: "DModalHeader",
|
|
@@ -540,55 +622,63 @@ var Modal = defineComponent({
|
|
|
540
622
|
setup(props, {
|
|
541
623
|
slots,
|
|
542
624
|
attrs,
|
|
543
|
-
emit
|
|
544
|
-
expose
|
|
625
|
+
emit
|
|
545
626
|
}) {
|
|
546
627
|
const ns = useNamespace("modal");
|
|
547
628
|
const {
|
|
548
629
|
modelValue,
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
630
|
+
title,
|
|
631
|
+
showClose,
|
|
632
|
+
showOverlay,
|
|
633
|
+
appendToBody
|
|
552
634
|
} = toRefs(props);
|
|
553
635
|
const {
|
|
554
|
-
|
|
636
|
+
onCloseBtnClick,
|
|
637
|
+
onOverlayClick
|
|
555
638
|
} = useModal(props, emit);
|
|
556
|
-
|
|
557
|
-
|
|
639
|
+
const {
|
|
640
|
+
showContainer,
|
|
641
|
+
showModal
|
|
642
|
+
} = useModalRender(props);
|
|
643
|
+
return () => createVNode(Teleport, {
|
|
644
|
+
"to": "body",
|
|
645
|
+
"disabled": !appendToBody.value
|
|
646
|
+
}, {
|
|
647
|
+
default: () => [showOverlay.value && createVNode(FixedOverlay, {
|
|
648
|
+
"modelValue": modelValue.value,
|
|
649
|
+
"onUpdate:modelValue": ($event) => modelValue.value = $event,
|
|
650
|
+
"lock-scroll": false,
|
|
651
|
+
"style": {
|
|
652
|
+
zIndex: "calc(var(--devui-z-index-modal, 1050) - 1)"
|
|
653
|
+
}
|
|
654
|
+
}, null), showContainer.value && createVNode("div", {
|
|
655
|
+
"class": ns.e("container"),
|
|
656
|
+
"onClick": onOverlayClick
|
|
657
|
+
}, [createVNode(Transition, {
|
|
658
|
+
"name": ns.m("wipe")
|
|
659
|
+
}, {
|
|
660
|
+
default: () => {
|
|
661
|
+
var _a;
|
|
662
|
+
return [showModal.value && createVNode("div", mergeProps({
|
|
663
|
+
"class": ns.b()
|
|
664
|
+
}, attrs, {
|
|
665
|
+
"onClick": (e) => e.stopPropagation()
|
|
666
|
+
}), [showClose.value && createVNode(Icon, {
|
|
667
|
+
"name": "close",
|
|
668
|
+
"class": "btn-close",
|
|
669
|
+
"size": "var(--devui-font-size-md,12px)",
|
|
670
|
+
"onClick": onCloseBtnClick
|
|
671
|
+
}, null), slots.header ? slots.header() : title.value && createVNode(Header, null, {
|
|
672
|
+
default: () => [title.value]
|
|
673
|
+
}), createVNode(Body, null, {
|
|
674
|
+
default: () => {
|
|
675
|
+
var _a2;
|
|
676
|
+
return [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)];
|
|
677
|
+
}
|
|
678
|
+
}), (_a = slots.footer) == null ? void 0 : _a.call(slots)])];
|
|
679
|
+
}
|
|
680
|
+
})])]
|
|
558
681
|
});
|
|
559
|
-
return () => {
|
|
560
|
-
const fixedOverlayProps2 = {
|
|
561
|
-
visible: modelValue.value,
|
|
562
|
-
"onUpdate:visible": handleVisibleChange,
|
|
563
|
-
"background-class": ns.e("mask"),
|
|
564
|
-
"background-block": lockScroll.value,
|
|
565
|
-
"backdrop-close": closeOnClickOverlay.value
|
|
566
|
-
};
|
|
567
|
-
return createVNode(FixedOverlay, fixedOverlayProps2, {
|
|
568
|
-
default: () => [createVNode(Transition, {
|
|
569
|
-
"name": ns.m("wipe")
|
|
570
|
-
}, {
|
|
571
|
-
default: () => {
|
|
572
|
-
var _a;
|
|
573
|
-
return [createVNode("div", mergeProps({
|
|
574
|
-
"class": ns.b()
|
|
575
|
-
}, attrs), [createVNode(Icon, {
|
|
576
|
-
"name": "close",
|
|
577
|
-
"class": "btn-close",
|
|
578
|
-
"size": "var(--devui-font-size-md,12px)",
|
|
579
|
-
"onClick": () => handleVisibleChange(false)
|
|
580
|
-
}, null), slots.header ? slots.header() : title.value && createVNode(Header, null, {
|
|
581
|
-
default: () => [title.value]
|
|
582
|
-
}), createVNode(Body, null, {
|
|
583
|
-
default: () => {
|
|
584
|
-
var _a2;
|
|
585
|
-
return [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)];
|
|
586
|
-
}
|
|
587
|
-
}), (_a = slots.footer) == null ? void 0 : _a.call(slots)])];
|
|
588
|
-
}
|
|
589
|
-
})]
|
|
590
|
-
});
|
|
591
|
-
};
|
|
592
682
|
}
|
|
593
683
|
});
|
|
594
684
|
var Footer = defineComponent({
|
package/modal/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var le=Object.defineProperty,re=Object.defineProperties;var ae=Object.getOwnPropertyDescriptors;var V=Object.getOwnPropertySymbols;var $=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var D=(i,e,u)=>e in i?le(i,e,{enumerable:!0,configurable:!0,writable:!0,value:u}):i[e]=u,N=(i,e)=>{for(var u in e||(e={}))$.call(e,u)&&D(i,u,e[u]);if(V)for(var u of V(e))j.call(e,u)&&D(i,u,e[u]);return i},S=(i,e)=>re(i,ae(e));var z=(i,e)=>{var u={};for(var h in i)$.call(i,h)&&e.indexOf(h)<0&&(u[h]=i[h]);if(i!=null&&V)for(var h of V(i))e.indexOf(h)<0&&j.call(i,h)&&(u[h]=i[h]);return u};var L=(i,e,u)=>(D(i,typeof e!="symbol"?e+"":e,u),u);(function(i,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("vue"),require("@floating-ui/dom")):typeof define=="function"&&define.amd?define(["exports","vue","@floating-ui/dom"],e):(i=typeof globalThis!="undefined"?globalThis:i||self,e(i.index={},i.Vue,i.dom))})(this,function(i,e,u){"use strict";const h={modelValue:{type:Boolean,default:!1},title:{type:String,default:""},lockScroll:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0},beforeClose:{type:Function}};function R(t){return/^((http|https):)?\/\//.test(t)}const F={name:{type:String,default:"",required:!0},size:{type:[Number,String],default:"inherit"},color:{type:String,default:"inherit"},component:{type:Object,default:null},classPrefix:{type:String,default:"icon"}},T={name:{type:String,default:"",required:!0},color:{type:String,default:"inherit"},size:{type:[Number,String],default:"inherit"}};function C(t,o,n){let l=t;return o&&(l+=`__${o}`),n&&(l+=`--${n}`),l}function b(t,o=!1){const n=o?`.devui-${t}`:`devui-${t}`;return{b:()=>C(n),e:a=>a?C(n,a):"",m:a=>a?C(n,"",a):"",em:(a,s)=>a&&s?C(n,a,s):""}}var de="",_=e.defineComponent({name:"DSvgIcon",props:T,setup(t){const{name:o,color:n,size:l}=e.toRefs(t),r=b("svg-icon"),c=e.computed(()=>`#icon-${o.value}`),d=e.computed(()=>typeof l.value=="number"?`${l.value}px`:l.value),a={width:d.value,height:d.value};return()=>e.createVNode("svg",{class:r.b(),style:a},[e.createVNode("use",{"xlink:href":c.value,fill:n.value},null)])}}),U=e.defineComponent({name:"DIcon",props:F,setup(t,{attrs:o}){const{component:n,name:l,size:r,color:c,classPrefix:d}=e.toRefs(t),a=n.value?e.resolveDynamicComponent(n.value):e.resolveDynamicComponent(_),s=e.computed(()=>typeof r.value=="number"?`${r.value}px`:r.value),y=()=>e.createVNode(a,e.mergeProps({name:l.value,color:c.value,size:s.value},o),null),f=()=>e.createVNode("img",e.mergeProps({src:l.value,alt:l.value.split("/")[l.value.split("/").length-1],style:{width:s.value||""}},o),null),p=()=>{const m=/^icon-/.test(l.value)?l.value:`${d.value}-${l.value}`;return e.createVNode("i",e.mergeProps({class:[d.value,m],style:{fontSize:s.value,color:c.value}},o),null)};return()=>n.value?y():R(l.value)?f():p()}}),se="";function q(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const X=e.defineComponent({setup(t,o){const n=b("overlay");return()=>{let l;return e.createVNode(e.Teleport,{to:"#d-overlay-anchor"},{default:()=>[e.createVNode(e.Transition,{name:n.e("fade")},q(l=e.renderSlot(o.slots,"default"))?l:{default:()=>[l]})]})}}}),Y=S(N({},{visible:{type:Boolean},backgroundBlock:{type:Boolean,default:!1},backgroundClass:{type:String,default:""},backgroundStyle:{type:[String,Object]},onBackdropClick:{type:Function},backdropClose:{type:Boolean,default:!0},hasBackdrop:{type:Boolean,default:!0}}),{overlayStyle:{type:[String,Object],default:void 0}}),H=["update:visible","backdropClick"];function K(t,o){const n=b("overlay"),l=e.computed(()=>[n.e("background"),t.backgroundClass,t.hasBackdrop?n.em("background","color"):n.em("background","disabled")]),r=e.computed(()=>n.b()),c=a=>{var s;a.preventDefault(),(s=t.onBackdropClick)==null||s.call(t),t.backdropClose&&o.emit("update:visible",!1)},d=a=>a.cancelBubble=!0;return e.onMounted(()=>{const a=document.body,s=a.style.overflow,y=a.style.position;e.watch([()=>t.visible,()=>t.backgroundBlock],([f,p])=>{if(p){const m=a.getBoundingClientRect().y;f?(a.style.overflowY="scroll",a.style.position=f?"fixed":"",a.style.top=`${m}px`):(a.style.overflowY=s,a.style.position=y,a.style.top="",window.scrollTo(0,-m))}}),e.onUnmounted(()=>{document.body.style.overflow=s})}),{backgroundClass:l,overlayClass:r,handleBackdropClick:c,handleOverlayBubbleCancel:d}}var ue="";const G=e.defineComponent({name:"DFixedOverlay",props:Y,emits:H,setup(t,o){const{backgroundClass:n,overlayClass:l,handleBackdropClick:r,handleOverlayBubbleCancel:c}=K(t,o);return()=>e.createVNode(X,null,{default:()=>[t.visible&&e.createVNode("div",{class:n.value,style:t.backgroundStyle,onClick:r},[e.createVNode("div",{class:l.value,style:t.overlayStyle,onClick:c},[e.renderSlot(o.slots,"default")])])]})}}),J={modelValue:{type:Boolean,default:!1},origin:{type:Object,require:!0},position:{type:Array,default:["bottom"]},offset:{type:[Number,Object],default:8},shiftOffset:{type:Number},align:{type:String,default:null},showArrow:{type:Boolean,default:!1},isArrowCenter:{type:Boolean,default:!0}};function Q(t){const o=/(auto|scroll|hidden)/;for(let n=t;n=n.parentElement;n.parentElement!==document.body){const l=window.getComputedStyle(n);if(o.test(l.overflow+l.overflowX+l.overflowY))return n}return window}function W(t,o,n,l){let{x:r,y:c}=o;if(!t){const{width:d,height:a}=l;r&&n.includes("start")&&(r=12),r&&n.includes("end")&&(r=Math.round(d-24)),c&&n.includes("start")&&(c=10),c&&n.includes("end")&&(c=a-14)}return{x:r,y:c}}function Z(t,o){const n=e.ref(),l=e.ref();let r=null;const c=(a,s,y,f)=>{const{x:p,y:m}=W(t.isArrowCenter,y,s,f.getBoundingClientRect()),v={top:"bottom",right:"left",bottom:"top",left:"right"}[s.split("-")[0]];Object.assign(a.style,{left:p?`${p}px`:"",top:m?`${m}px`:"",right:"",bottom:"",[v]:"-4px"})},d=async()=>{const a=t.origin,s=e.unref(n.value),y=e.unref(l.value),f=[u.offset(t.offset),u.autoPlacement({alignment:t.align,allowedPlacements:t.position})];t.showArrow&&f.push(u.arrow({element:y})),t.shiftOffset!==void 0&&f.push(u.shift());const{x:p,y:m,placement:v,middlewareData:w}=await u.computePosition(a,s,{strategy:"fixed",middleware:f});let g=p,P=m;if(t.shiftOffset!==void 0){const{x:A,y:I}=w.shift;A<0&&(g-=t.shiftOffset),A>0&&(g+=t.shiftOffset),I<0&&(P-=t.shiftOffset),I>0&&(P+=t.shiftOffset)}o("positionChange",v),Object.assign(s.style,{top:`${P}px`,left:`${g}px`}),t.showArrow&&c(y,v,w.arrow,s)};return e.watch(()=>t.modelValue,()=>{t.modelValue&&t.origin?(r=Q(t.origin),e.nextTick(d),r==null||r.addEventListener("scroll",d),r!==window&&window.addEventListener("scroll",d),window.addEventListener("resize",d)):(r==null||r.removeEventListener("scroll",d),r!==window&&window.removeEventListener("scroll",d),window.removeEventListener("resize",d))}),e.onUnmounted(()=>{r==null||r.removeEventListener("scroll",d),r!==window&&window.removeEventListener("scroll",d),window.removeEventListener("resize",d)}),{arrowRef:l,overlayRef:n,updatePosition:d}}var fe="";e.defineComponent({name:"DFlexibleOverlay",inheritAttrs:!1,props:J,emits:["update:modelValue","positionChange"],setup(t,{slots:o,attrs:n,emit:l,expose:r}){const c=b("flexible-overlay"),{arrowRef:d,overlayRef:a,updatePosition:s}=Z(t,l);return r({updatePosition:s}),()=>{var y;return t.modelValue&&e.createVNode("div",e.mergeProps({ref:a,class:c.b()},n),[(y=o.default)==null?void 0:y.call(o),t.showArrow&&e.createVNode("div",{ref:d,class:c.e("arrow")},null)])}}});const ee=typeof window!="undefined";function te(t,o){function n(){o("update:modelValue",!1)}function l(r){r||(t.beforeClose?t.beforeClose(n):n())}return{handleVisibleChange:l}}var x=e.defineComponent({name:"DModalHeader",setup(t,{slots:o}){const n=b("modal");return()=>{var l;return e.createVNode("div",{class:n.e("header")},[(l=o.default)==null?void 0:l.call(o)])}}}),B=e.defineComponent({name:"DModalBody",setup(t,{slots:o}){const n=b("modal");return()=>{var l;return e.createVNode("div",{class:n.e("body")},[(l=o.default)==null?void 0:l.call(o)])}}}),me="",k=e.defineComponent({name:"DModal",inheritAttrs:!1,props:h,emits:["update:modelValue"],setup(t,{slots:o,attrs:n,emit:l,expose:r}){const c=b("modal"),{modelValue:d,lockScroll:a,closeOnClickOverlay:s,title:y}=e.toRefs(t),{handleVisibleChange:f}=te(t,l);return r({handleVisibleChange:f}),()=>{const p={visible:d.value,"onUpdate:visible":f,"background-class":c.e("mask"),"background-block":a.value,"backdrop-close":s.value};return e.createVNode(G,p,{default:()=>[e.createVNode(e.Transition,{name:c.m("wipe")},{default:()=>{var m;return[e.createVNode("div",e.mergeProps({class:c.b()},n),[e.createVNode(U,{name:"close",class:"btn-close",size:"var(--devui-font-size-md,12px)",onClick:()=>f(!1)},null),o.header?o.header():y.value&&e.createVNode(x,null,{default:()=>[y.value]}),e.createVNode(B,null,{default:()=>{var v;return[(v=o.default)==null?void 0:v.call(o)]}}),(m=o.footer)==null?void 0:m.call(o)])]}})]})}}}),M=e.defineComponent({name:"DModalFooter",setup(t,{slots:o}){const n=b("modal");return()=>{var l;return e.createVNode("div",{class:n.e("footer")},[(l=o.default)==null?void 0:l.call(o)])}}});class oe{constructor(o){this.anchorContainer=o}renderModal(o,n,l){const r=e.h(this.component(),n,l);return e.render(r,o),r}renderNull(o){setTimeout(()=>{e.render(null,o)},500)}}let O;class E extends oe{component(){return k}open(o={}){const n=document.createElement("div");this.anchorContainer.appendChild(n);const f=o,{header:l,content:r,footer:c}=f,d=z(f,["header","content","footer"]),a=(p,m)=>this.renderModal(n,S(N({},p),{modelValue:!0,"onUpdate:modelValue":m}),{header:l,default:r,footer:c}),s=()=>{var m,v,w;const p=g=>{g||s()};a(d,g=>{g?a(d,p):(this.renderModal(n,S(N({},d),{modelValue:!1})),this.renderNull(n))}),(w=(v=(m=O==null?void 0:O.component)==null?void 0:m.exposed)==null?void 0:v.handleVisibleChange)==null||w.call(v,!1)},y=p=>{p||s()};return this.renderModal(n,{modelValue:!1}),O=a(d,y),{hide:s}}}L(E,"token","MODAL_SERVICE_TOKEN");var ne={title:"Modal \u5F39\u7A97",category:"\u53CD\u9988",status:"100%",install(t){if(t.component(k.name,k),t.component(x.name,x),t.component(B.name,B),t.component(M.name,M),!ee)return;let o=document.getElementById("d-modal-anchors-container");o||(o=document.createElement("div"),o.setAttribute("id","d-modal-anchors-container"),document.body.appendChild(o)),t.provide(E.token,new E(o))}};i.Modal=k,i.default=ne,i.modalProps=h,Object.defineProperty(i,"__esModule",{value:!0}),i[Symbol.toStringTag]="Module"});
|
|
1
|
+
var le=Object.defineProperty,ae=Object.defineProperties;var re=Object.getOwnPropertyDescriptors;var E=Object.getOwnPropertySymbols;var $=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable;var D=(d,e,u)=>e in d?le(d,e,{enumerable:!0,configurable:!0,writable:!0,value:u}):d[e]=u,S=(d,e)=>{for(var u in e||(e={}))$.call(e,u)&&D(d,u,e[u]);if(E)for(var u of E(e))z.call(e,u)&&D(d,u,e[u]);return d},A=(d,e)=>ae(d,re(e));var R=(d,e)=>{var u={};for(var w in d)$.call(d,w)&&e.indexOf(w)<0&&(u[w]=d[w]);if(d!=null&&E)for(var w of E(d))e.indexOf(w)<0&&z.call(d,w)&&(u[w]=d[w]);return u};var L=(d,e,u)=>(D(d,typeof e!="symbol"?e+"":e,u),u);(function(d,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("vue"),require("@floating-ui/dom")):typeof define=="function"&&define.amd?define(["exports","vue","@floating-ui/dom"],e):(d=typeof globalThis!="undefined"?globalThis:d||self,e(d.index={},d.Vue,d.dom))})(this,function(d,e,u){"use strict";const w={modelValue:{type:Boolean,default:!1},title:{type:String,default:""},lockScroll:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0},beforeClose:{type:Function},escapable:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},showOverlay:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!0}},F={name:{type:String,default:"",required:!0},size:{type:[Number,String],default:"inherit"},color:{type:String,default:"inherit"},component:{type:Object,default:null},classPrefix:{type:String,default:"icon"},operable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},rotate:{type:[Number,String]}},U={name:{type:String,default:"",required:!0},color:{type:String,default:"inherit"},size:{type:[Number,String],default:"inherit"}};function b(n,t,o){let l=n;return t&&(l+=`__${t}`),o&&(l+=`--${o}`),l}function C(n,t=!1){const o=t?`.devui-${n}`:`devui-${n}`;return{b:()=>b(o),e:r=>r?b(o,r):"",m:r=>r?b(o,"",r):"",em:(r,c)=>r&&c?b(o,r,c):""}}var se="",_=e.defineComponent({name:"DSvgIcon",props:U,setup(n){const{name:t,color:o,size:l}=e.toRefs(n),a=C("svg-icon"),s=e.computed(()=>`#icon-${t.value}`),i=e.computed(()=>typeof l.value=="number"?`${l.value}px`:l.value),r={width:i.value,height:i.value};return()=>e.createVNode("svg",{class:a.b(),style:r},[e.createVNode("use",{"xlink:href":s.value,fill:o.value},null)])}});function j(n){return/^((http|https):)?\/\//.test(n)}function H(n,t){const{component:o,name:l,size:a,color:s,classPrefix:i,rotate:r}=e.toRefs(n),c=C("icon"),f=e.computed(()=>typeof a.value=="number"?`${a.value}px`:a.value),p=o.value?e.resolveDynamicComponent(o.value):e.resolveDynamicComponent(_),m=()=>e.createVNode("img",e.mergeProps({src:l.value,alt:l.value.split("/")[l.value.split("/").length-1],class:[(r==null?void 0:r.value)==="infinite"&&c.m("spin")],style:{width:f.value||"",transform:`rotate(${r==null?void 0:r.value}deg)`,verticalAlign:"middle"}},t.attrs),null),h=()=>e.createVNode(p,e.mergeProps({name:l.value,color:s.value,size:f.value,class:[(r==null?void 0:r.value)==="infinite"&&c.m("spin")],style:{transform:`rotate(${r==null?void 0:r.value}deg)`}},t.attrs),null),v=()=>{const y=/^icon-/.test(l.value)?l.value:`${i.value}-${l.value}`;return e.createVNode("i",e.mergeProps({class:[i.value,y,(r==null?void 0:r.value)==="infinite"&&c.m("spin")],style:{fontSize:f.value,color:s.value,transform:`rotate(${r==null?void 0:r.value}deg)`}},t.attrs),null)};return{iconDom:()=>o.value?h():j(l.value)?m():v()}}var q=e.defineComponent({name:"DIcon",props:F,emits:["click"],setup(n,t){const{disabled:o,operable:l}=e.toRefs(n),{iconDom:a}=H(n,t),s=C("icon"),i=e.computed(()=>({[s.e("container")]:!0,[s.m("disabled")]:o.value,[s.m("operable")]:l.value})),r=c=>{o.value||t.emit("click",c)};return()=>{var c,f,p,m;return e.createVNode("div",{class:i.value,onClick:r},[(f=(c=t.slots).prefix)==null?void 0:f.call(c),a(),(m=(p=t.slots).suffix)==null?void 0:m.call(p)])}}}),de="";e.defineComponent({name:"DIconGroup",setup(n,t){const o=C("icon-group");return()=>{var l,a;return e.createVNode("div",{class:o.b()},[(a=(l=t.slots).default)==null?void 0:a.call(l)])}}});const X={modelValue:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}};function P(){if(document.documentElement.scrollHeight>document.documentElement.clientHeight){const n=document.documentElement.scrollTop,t=document.documentElement.getAttribute("style");return document.documentElement.style.position="fixed",document.documentElement.style.top=`-${n}px`,document.documentElement.style.width=document.documentElement.style.width||"100%",document.documentElement.style.overflowY="scroll",()=>{t?document.documentElement.setAttribute("style",t):document.documentElement.removeAttribute("style"),document.documentElement.scrollTop=n}}}function Y(n,t){let o;const l=s=>{s.preventDefault(),t.emit("click",s),n.closeOnClickOverlay&&t.emit("update:modelValue",!1)},a=()=>{o==null||o()};return e.watch(()=>n.modelValue,s=>{s?n.lockScroll&&(o=P()):a()}),e.onUnmounted(a),{onClick:l}}var ce="";const G=e.defineComponent({name:"DFixedOverlay",inheritAttrs:!1,props:X,emits:["update:modelValue","click"],setup(n,t){const{modelValue:o}=e.toRefs(n),l=C("fixed-overlay"),{onClick:a}=Y(n,t);return()=>e.createVNode(e.Transition,{name:l.m("fade")},{default:()=>{var s,i;return[o.value&&e.createVNode("div",e.mergeProps({class:l.b()},t.attrs,{onClick:a}),[(i=(s=t.slots).default)==null?void 0:i.call(s)])]}})}}),K={modelValue:{type:Boolean,default:!1},origin:{type:Object,require:!0},position:{type:Array,default:["bottom"]},offset:{type:[Number,Object],default:8},shiftOffset:{type:Number},align:{type:String,default:null},showArrow:{type:Boolean,default:!1},isArrowCenter:{type:Boolean,default:!0}};function J(n){const t=/(auto|scroll|hidden)/;for(let o=n;o=o.parentElement;o.parentElement!==document.body){const l=window.getComputedStyle(o);if(t.test(l.overflow+l.overflowX+l.overflowY))return o}return window}function Q(n,t,o,l){let{x:a,y:s}=t;if(!n){const{width:i,height:r}=l;a&&o.includes("start")&&(a=12),a&&o.includes("end")&&(a=Math.round(i-24)),s&&o.includes("start")&&(s=10),s&&o.includes("end")&&(s=r-14)}return{x:a,y:s}}function W(n,t){const o=e.ref(),l=e.ref();let a=null;const s=(r,c,f,p)=>{const{x:m,y:h}=Q(n.isArrowCenter,f,c,p.getBoundingClientRect()),v={top:"bottom",right:"left",bottom:"top",left:"right"}[c.split("-")[0]];Object.assign(r.style,{left:m?`${m}px`:"",top:h?`${h}px`:"",right:"",bottom:"",[v]:"-4px"})},i=async()=>{const r=n.origin,c=e.unref(o.value),f=e.unref(l.value),p=[u.offset(n.offset),u.autoPlacement({alignment:n.align,allowedPlacements:n.position})];n.showArrow&&p.push(u.arrow({element:f})),n.shiftOffset!==void 0&&p.push(u.shift());const{x:m,y:h,placement:v,middlewareData:g}=await u.computePosition(r,c,{strategy:"fixed",middleware:p});let y=m,B=h;if(n.shiftOffset!==void 0){const{x:T,y:I}=g.shift;T<0&&(y-=n.shiftOffset),T>0&&(y+=n.shiftOffset),I<0&&(B-=n.shiftOffset),I>0&&(B+=n.shiftOffset)}t("positionChange",v),Object.assign(c.style,{top:`${B}px`,left:`${y}px`}),n.showArrow&&s(f,v,g.arrow,c)};return e.watch(()=>n.modelValue,()=>{n.modelValue&&n.origin?(a=J(n.origin),e.nextTick(i),a==null||a.addEventListener("scroll",i),a!==window&&window.addEventListener("scroll",i),window.addEventListener("resize",i)):(a==null||a.removeEventListener("scroll",i),a!==window&&window.removeEventListener("scroll",i),window.removeEventListener("resize",i))}),e.onUnmounted(()=>{a==null||a.removeEventListener("scroll",i),a!==window&&window.removeEventListener("scroll",i),window.removeEventListener("resize",i)}),{arrowRef:l,overlayRef:o,updatePosition:i}}var ue="";e.defineComponent({name:"DFlexibleOverlay",inheritAttrs:!1,props:K,emits:["update:modelValue","positionChange"],setup(n,{slots:t,attrs:o,emit:l,expose:a}){const s=C("flexible-overlay"),{arrowRef:i,overlayRef:r,updatePosition:c}=W(n,l);return a({updatePosition:c}),()=>{var f;return n.modelValue&&e.createVNode("div",e.mergeProps({ref:r,class:s.b()},o),[(f=t.default)==null?void 0:f.call(t),n.showArrow&&e.createVNode("div",{ref:i,class:s.e("arrow")},null)])}}});const Z=typeof window!="undefined";function ee(n,t){function o(){t("update:modelValue",!1)}function l(){n.beforeClose?n.beforeClose(o):o()}function a(){n.closeOnClickOverlay&&l()}function s(){l()}function i(r){r.keyCode===27&&l()}return e.onMounted(()=>{n.escapable&&window.addEventListener("keydown",i)}),e.onUnmounted(()=>{n.escapable&&window.addEventListener("keydown",i)}),{onCloseBtnClick:s,onOverlayClick:a}}function te(n){const t=e.ref(!1),o=e.ref(!1);let l;const a=()=>{l==null||l()};return e.watch(()=>n.modelValue,s=>{s?(n.lockScroll&&(l=P()),t.value=!0,e.nextTick(()=>{o.value=!0})):(a(),o.value=!1,setTimeout(()=>{t.value=!1},100))},{immediate:!0}),e.onUnmounted(a),{showContainer:t,showModal:o}}var N=e.defineComponent({name:"DModalHeader",setup(n,{slots:t}){const o=C("modal");return()=>{var l;return e.createVNode("div",{class:o.e("header")},[(l=t.default)==null?void 0:l.call(t)])}}}),k=e.defineComponent({name:"DModalBody",setup(n,{slots:t}){const o=C("modal");return()=>{var l;return e.createVNode("div",{class:o.e("body")},[(l=t.default)==null?void 0:l.call(t)])}}}),fe="",V=e.defineComponent({name:"DModal",inheritAttrs:!1,props:w,emits:["update:modelValue"],setup(n,{slots:t,attrs:o,emit:l}){const a=C("modal"),{modelValue:s,title:i,showClose:r,showOverlay:c,appendToBody:f}=e.toRefs(n),{onCloseBtnClick:p,onOverlayClick:m}=ee(n,l),{showContainer:h,showModal:v}=te(n);return()=>e.createVNode(e.Teleport,{to:"body",disabled:!f.value},{default:()=>[c.value&&e.createVNode(G,{modelValue:s.value,"onUpdate:modelValue":g=>s.value=g,"lock-scroll":!1,style:{zIndex:"calc(var(--devui-z-index-modal, 1050) - 1)"}},null),h.value&&e.createVNode("div",{class:a.e("container"),onClick:m},[e.createVNode(e.Transition,{name:a.m("wipe")},{default:()=>{var g;return[v.value&&e.createVNode("div",e.mergeProps({class:a.b()},o,{onClick:y=>y.stopPropagation()}),[r.value&&e.createVNode(q,{name:"close",class:"btn-close",size:"var(--devui-font-size-md,12px)",onClick:p},null),t.header?t.header():i.value&&e.createVNode(N,null,{default:()=>[i.value]}),e.createVNode(k,null,{default:()=>{var y;return[(y=t.default)==null?void 0:y.call(t)]}}),(g=t.footer)==null?void 0:g.call(t)])]}})])]})}}),M=e.defineComponent({name:"DModalFooter",setup(n,{slots:t}){const o=C("modal");return()=>{var l;return e.createVNode("div",{class:o.e("footer")},[(l=t.default)==null?void 0:l.call(t)])}}});class ne{constructor(t){this.anchorContainer=t}renderModal(t,o,l){const a=e.h(this.component(),o,l);return e.render(a,t),a}renderNull(t){setTimeout(()=>{e.render(null,t)},500)}}let O;class x extends ne{component(){return V}open(t={}){const o=document.createElement("div");this.anchorContainer.appendChild(o);const p=t,{header:l,content:a,footer:s}=p,i=R(p,["header","content","footer"]),r=(m,h)=>this.renderModal(o,A(S({},m),{modelValue:!0,"onUpdate:modelValue":h}),{header:l,default:a,footer:s}),c=()=>{var h,v,g;const m=y=>{y||c()};r(i,y=>{y?r(i,m):(this.renderModal(o,A(S({},i),{modelValue:!1})),this.renderNull(o))}),(g=(v=(h=O==null?void 0:O.component)==null?void 0:h.exposed)==null?void 0:v.handleVisibleChange)==null||g.call(v,!1)},f=m=>{m||c()};return this.renderModal(o,{modelValue:!1}),O=r(i,f),{hide:c}}}L(x,"token","MODAL_SERVICE_TOKEN");var oe={title:"Modal \u5F39\u7A97",category:"\u53CD\u9988",status:"100%",install(n){if(n.component(V.name,V),n.component(N.name,N),n.component(k.name,k),n.component(M.name,M),!Z)return;let t=document.getElementById("d-modal-anchors-container");t||(t=document.createElement("div"),t.setAttribute("id","d-modal-anchors-container"),document.body.appendChild(t)),n.provide(x.token,new x(t))}};d.Modal=V,d.default=oe,d.modalProps=w,Object.defineProperty(d,"__esModule",{value:!0}),d[Symbol.toStringTag]="Module"});
|
package/modal/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.devui-
|
|
1
|
+
.devui-icon__container{display:inline-block;color:var(--devui-icon-fill, #71757f)}.devui-icon__container>*:not(:last-child){vertical-align:middle;margin-right:8px}.devui-icon__container i{vertical-align:middle;transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}.devui-icon--disabled{color:var(--devui-disabled-text, #adb0b8);cursor:not-allowed}.devui-icon--disabled i{color:var(--devui-disabled-text, #adb0b8)}.devui-icon--operable:not(.devui-icon--disabled){cursor:pointer;transition:color var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}.devui-icon--operable:not(.devui-icon--disabled) i{cursor:pointer}.devui-icon--operable:hover:not(.devui-icon--disabled){color:var(--devui-icon-fill-hover, #252b3a)}.devui-icon--operable:hover:not(.devui-icon--disabled).devui-icon__container{background-color:var(--devui-icon-background-hover, var(--devui-list-item-hover-bg, #f2f2f3))}.devui-icon--operable:hover:not(.devui-icon--disabled) i{color:var(--devui-icon-fill-hover, #252b3a)}.devui-icon--operable:active:not(.devui-icon--disabled){color:var(--devui-icon-active-color, var(--devui-icon-fill-active, #252b3a))}.devui-icon--operable:active:not(.devui-icon--disabled).devui-icon__container{background-color:var(--devui-icon-background-active, var(--devui-list-item-active-bg, #f2f5fc))}.devui-icon--operable:active:not(.devui-icon--disabled) i{color:var(--devui-icon-active-color, var(--devui-icon-fill-active, #252b3a))}.devui-icon--operable.devui-icon__container{height:32px;line-height:32px;padding:0 8px;margin-left:-8px;border-radius:var(--devui-border-radius, 4px);transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}.devui-icon--spin{animation:iconSpin 2.5s linear infinite}.devui-svg-icon{vertical-align:middle}@keyframes iconSpin{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.devui-icon-group{display:inline-flex;align-items:center}.devui-icon-group>.devui-icon__container:not(.devui-icon--operable){padding:8px;margin-left:0}.devui-icon-group>.devui-icon__container:not(.devui-icon--operable):first-child{margin-left:-8px}.devui-icon-group>*:not(:first-child){margin-left:0}.devui-fixed-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:var(--devui-shadow, rgba(37, 43, 58, .2));z-index:1050}.devui-fixed-overlay--fade-enter-active,.devui-fixed-overlay--fade-leave-active{transition:opacity .1s cubic-bezier(0,0,1,1)}.devui-fixed-overlay--fade-enter-from,.devui-fixed-overlay--fade-leave-to{opacity:0}.devui-flexible-overlay{position:fixed;border-radius:var(--devui-border-radius, 4px);background-color:var(--devui-connected-overlay-bg, #ffffff);box-shadow:var(--devui-shadow-length-connected-overlay, 0 4px 8px 0) var(--devui-shadow, rgba(37, 43, 58, .2));z-index:1000}.devui-flexible-overlay__arrow{position:absolute;width:8px;height:8px;transform:rotate(45deg);background-color:inherit}.devui-modal__container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--devui-z-index-modal, 1050);outline:0;overflow-y:auto;display:flex;flex-direction:column}.devui-modal{position:relative;width:300px;margin:auto;border-radius:var(--devui-border-radius, 4px);border:none;opacity:1;transform:translateY(0);background-color:var(--devui-fullscreen-overlay-bg, #ffffff);background-clip:padding-box;outline:0;box-shadow:var(--devui-shadow-length-fullscreen-overlay, 0 12px 24px 0) var(--devui-shadow, rgba(37, 43, 58, .2))}.devui-modal .btn-close{position:absolute;right:16px;top:16px;width:20px;height:20px;line-height:20px;text-align:center;color:#000;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.devui-modal .btn-close:hover{color:var(--devui-icon-fill-active-hover, #252b3a);background-color:var(--devui-list-item-hover-bg, #f2f2f3)}.devui-modal .btn-close i{position:absolute;right:0;top:0}.devui-modal-content{background:var(--devui-fullscreen-overlay-bg, #ffffff);border-radius:var(--devui-border-radius, 4px)}.devui-modal__header{width:100%;height:56px;padding:32px 32px 0;font-size:var(--devui-font-size-card-title, 16px);font-weight:700;box-sizing:border-box;border:none;user-select:none}.devui-modal__header .header-alert-icon{display:inline-block;vertical-align:middle;margin-right:8px;line-height:16px;text-align:center}.devui-modal__body{padding:20px 32px;font-size:var(--devui-font-size, 14px);color:var(--devui-text-weak, #575d6c);box-sizing:border-box}.devui-modal__footer{width:100%;border-top:none;text-align:center;padding:0 32px 24px;box-sizing:border-box}.devui-modal__footer>*{margin:0 4px}.devui-modal--wipe-enter-active{transition:opacity .1s cubic-bezier(.16,.75,.5,1),transform .1s cubic-bezier(0,0,1,1)}.devui-modal--wipe-leave-active{transition:opacity .1s cubic-bezier(.5,0,.84,.25),transform .1s cubic-bezier(0,0,1,1)}.devui-modal--wipe-enter-from,.devui-modal--wipe-leave-to{opacity:.2;transform:translateY(-24px)}
|