@leaflink/stash 48.21.0 → 48.21.2
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/dist/Dialog.js +65 -57
- package/dist/Dialog.js.map +1 -1
- package/dist/Dialog.vue.d.ts +7 -0
- package/dist/ModalsPlugin.js +10 -12
- package/dist/ModalsPlugin.js.map +1 -1
- package/dist/ToastsPlugin.js +7 -9
- package/dist/ToastsPlugin.js.map +1 -1
- package/dist/index.js +20 -22
- package/dist/index.js.map +1 -1
- package/dist/useDialog.d.ts +4 -0
- package/package.json +1 -1
package/dist/Dialog.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as A, useSlots as H, useAttrs as K, useCssModule as L, ref as T, computed as s, watchEffect as q, nextTick as F, openBlock as l, createBlock as f, Transition as P, withCtx as m, createElementBlock as p, mergeProps as Y, unref as e, withKeys as j, createElementVNode as a, normalizeClass as o, createCommentVNode as i, toDisplayString as _, renderSlot as G, createTextVNode as S, createVNode as J } from "vue";
|
|
2
2
|
import y from "lodash-es/capitalize";
|
|
3
|
-
import
|
|
4
|
-
import { S as
|
|
3
|
+
import O from "lodash-es/uniqueId";
|
|
4
|
+
import { S as B, b as g, a as I } from "./statusLevels-a8b041f4.js";
|
|
5
5
|
import { t as c } from "./locale.js";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { _ as
|
|
6
|
+
import z from "./Button.js";
|
|
7
|
+
import Q from "./Icon.js";
|
|
8
|
+
import { _ as R } from "./_plugin-vue_export-helper-dad06003.js";
|
|
9
9
|
import "lodash-es/get";
|
|
10
10
|
import "./Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js";
|
|
11
11
|
import "./index-9e1095ef.js";
|
|
12
12
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
13
|
-
const
|
|
13
|
+
const U = ["open", "aria-labelledby", "data-test"], W = ["id"], X = {
|
|
14
14
|
key: 0,
|
|
15
15
|
class: "tw-mb-0"
|
|
16
|
-
},
|
|
16
|
+
}, tt = ["innerHTML"], et = { class: "tw-text-right" }, ot = /* @__PURE__ */ A({
|
|
17
17
|
name: "ll-dialog",
|
|
18
18
|
inheritAttrs: !1,
|
|
19
19
|
__name: "Dialog",
|
|
@@ -25,44 +25,51 @@ const W = ["open", "aria-labelledby", "data-test"], X = ["id"], tt = {
|
|
|
25
25
|
description: { default: "" },
|
|
26
26
|
cancelText: { default: c("ll.cancel") },
|
|
27
27
|
confirmText: { default: "" },
|
|
28
|
+
onConfirm: { type: Function, default: () => {
|
|
29
|
+
} },
|
|
28
30
|
alert: { type: Boolean, default: !1 },
|
|
29
31
|
status: { default: void 0 }
|
|
30
32
|
},
|
|
31
33
|
emits: ["update:open", "cancel"],
|
|
32
|
-
setup(
|
|
33
|
-
const t =
|
|
34
|
-
() => t.status ?
|
|
35
|
-
),
|
|
34
|
+
setup(D, { emit: M }) {
|
|
35
|
+
const t = D, b = M, h = H(), v = K(), n = L(), w = O("dialog-header-"), r = T(!1), d = T(), E = s(() => t.confirmText || (t.alert ? c("ll.okay") : c("ll.confirm"))), x = s(() => !!h.default || t.description), N = s(
|
|
36
|
+
() => t.status ? B[y(t.status)] : B.Info
|
|
37
|
+
), V = s(
|
|
36
38
|
() => t.status ? g[y(t.status)] : g.Info
|
|
37
39
|
), k = s(
|
|
38
|
-
() => t.status ?
|
|
39
|
-
),
|
|
40
|
+
() => t.status ? I[y(t.status)] : I.Info
|
|
41
|
+
), $ = s(() => t.dangerZone || t.status === g.Error);
|
|
40
42
|
function C() {
|
|
41
43
|
b("update:open", !1), b("cancel");
|
|
42
44
|
}
|
|
43
|
-
async function
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
async function Z(u) {
|
|
46
|
+
if (!r.value) {
|
|
47
|
+
r.value = !0;
|
|
48
|
+
try {
|
|
49
|
+
await t.onConfirm(u);
|
|
50
|
+
} finally {
|
|
51
|
+
r.value = !1;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
47
54
|
}
|
|
48
|
-
return
|
|
49
|
-
t.open &&
|
|
50
|
-
|
|
55
|
+
return q(() => {
|
|
56
|
+
t.open && d.value && F(function() {
|
|
57
|
+
d.value.focus();
|
|
51
58
|
});
|
|
52
|
-
}), (u,
|
|
59
|
+
}), (u, dt) => (l(), f(P, { name: "fade" }, {
|
|
53
60
|
default: m(() => [
|
|
54
|
-
t.open ? (l(), p("dialog",
|
|
61
|
+
t.open ? (l(), p("dialog", Y({
|
|
55
62
|
key: 0,
|
|
56
63
|
ref_key: "root",
|
|
57
|
-
ref:
|
|
64
|
+
ref: d,
|
|
58
65
|
open: t.open,
|
|
59
66
|
tabindex: "0",
|
|
60
|
-
"aria-labelledby": e(
|
|
67
|
+
"aria-labelledby": e(w),
|
|
61
68
|
"aria-modal": "true",
|
|
62
69
|
class: ["stash-dialog", e(n).dialog],
|
|
63
|
-
"data-test": e(
|
|
64
|
-
}, e(
|
|
65
|
-
onKeydown:
|
|
70
|
+
"data-test": e(v)["data-test"] || "ll-dialog"
|
|
71
|
+
}, e(v), {
|
|
72
|
+
onKeydown: j(C, ["esc"])
|
|
66
73
|
}), [
|
|
67
74
|
a("div", {
|
|
68
75
|
class: o(["stash-dialog__body", [
|
|
@@ -81,76 +88,77 @@ const W = ["open", "aria-labelledby", "data-test"], X = ["id"], tt = {
|
|
|
81
88
|
a("div", {
|
|
82
89
|
class: o(["tw-flex tw-items-center", x.value && "tw-mb-1.5"])
|
|
83
90
|
}, [
|
|
84
|
-
t.status ? (l(), f(
|
|
91
|
+
t.status ? (l(), f(Q, {
|
|
85
92
|
key: 0,
|
|
86
93
|
"data-test": "dialog-status-icon",
|
|
87
|
-
name:
|
|
88
|
-
title:
|
|
94
|
+
name: N.value,
|
|
95
|
+
title: V.value,
|
|
89
96
|
class: o(`tw-text-${k.value}`)
|
|
90
|
-
}, null, 8, ["name", "title", "class"])) :
|
|
97
|
+
}, null, 8, ["name", "title", "class"])) : i("", !0),
|
|
91
98
|
a("h3", {
|
|
92
|
-
id: e(
|
|
99
|
+
id: e(w),
|
|
93
100
|
class: o({ "tw-ml-1.5 tw-mt-px": t.status })
|
|
94
|
-
}, _(t.header), 11,
|
|
101
|
+
}, _(t.header), 11, W)
|
|
95
102
|
], 2),
|
|
96
|
-
x.value ? (l(), p("p",
|
|
97
|
-
e(h).default ?
|
|
103
|
+
x.value ? (l(), p("p", X, [
|
|
104
|
+
e(h).default ? G(u.$slots, "default", { key: 0 }) : (l(), p("span", {
|
|
98
105
|
key: 1,
|
|
99
106
|
innerHTML: t.description
|
|
100
|
-
}, null, 8,
|
|
101
|
-
])) :
|
|
107
|
+
}, null, 8, tt))
|
|
108
|
+
])) : i("", !0)
|
|
102
109
|
], 2),
|
|
103
110
|
a("footer", {
|
|
104
111
|
class: o(["stash-dialog__footer", e(n).footer]),
|
|
105
112
|
"data-test": "stash-dialog|footer"
|
|
106
113
|
}, [
|
|
107
|
-
a("div",
|
|
114
|
+
a("div", et, [
|
|
108
115
|
a("div", {
|
|
109
116
|
class: o({ "button-grid": !t.alert })
|
|
110
117
|
}, [
|
|
111
|
-
t.alert ?
|
|
118
|
+
t.alert ? i("", !0) : (l(), f(z, {
|
|
112
119
|
key: 0,
|
|
113
120
|
"data-test": "button|cancel",
|
|
114
121
|
secondary: "",
|
|
115
122
|
onClick: C
|
|
116
123
|
}, {
|
|
117
124
|
default: m(() => [
|
|
118
|
-
|
|
125
|
+
S(_(t.cancelText), 1)
|
|
119
126
|
]),
|
|
120
127
|
_: 1
|
|
121
128
|
})),
|
|
122
|
-
|
|
129
|
+
J(z, {
|
|
123
130
|
"data-test": "button|confirm",
|
|
124
|
-
disabled: t.disabled
|
|
125
|
-
|
|
131
|
+
disabled: t.disabled,
|
|
132
|
+
"is-loading": r.value,
|
|
133
|
+
color: $.value ? "red" : "blue",
|
|
126
134
|
class: o({
|
|
127
135
|
"tw-w-full": t.alert
|
|
128
136
|
}),
|
|
129
|
-
onClick:
|
|
137
|
+
onClick: Z
|
|
130
138
|
}, {
|
|
131
139
|
default: m(() => [
|
|
132
|
-
|
|
140
|
+
S(_(E.value), 1)
|
|
133
141
|
]),
|
|
134
142
|
_: 1
|
|
135
|
-
}, 8, ["disabled", "color", "class"])
|
|
143
|
+
}, 8, ["disabled", "is-loading", "color", "class"])
|
|
136
144
|
], 2)
|
|
137
145
|
])
|
|
138
146
|
], 2)
|
|
139
147
|
], 2)
|
|
140
|
-
], 16,
|
|
148
|
+
], 16, U)) : i("", !0)
|
|
141
149
|
]),
|
|
142
150
|
_: 3
|
|
143
151
|
}));
|
|
144
152
|
}
|
|
145
|
-
}),
|
|
146
|
-
dialog:
|
|
147
|
-
body:
|
|
148
|
-
grey:
|
|
149
|
-
content:
|
|
150
|
-
footer:
|
|
151
|
-
},
|
|
152
|
-
$style:
|
|
153
|
-
}, kt = /* @__PURE__ */
|
|
153
|
+
}), at = "_dialog_1fzac_2", st = "_body_1fzac_19", lt = "_grey_1fzac_32", nt = "_content_1fzac_42", rt = "_footer_1fzac_47", it = {
|
|
154
|
+
dialog: at,
|
|
155
|
+
body: st,
|
|
156
|
+
grey: lt,
|
|
157
|
+
content: nt,
|
|
158
|
+
footer: rt
|
|
159
|
+
}, ct = {
|
|
160
|
+
$style: it
|
|
161
|
+
}, kt = /* @__PURE__ */ R(ot, [["__cssModules", ct]]);
|
|
154
162
|
export {
|
|
155
163
|
kt as default
|
|
156
164
|
};
|
package/dist/Dialog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sources":["../src/components/Dialog/Dialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import capitalize from 'lodash-es/capitalize';\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, nextTick, ref, useAttrs, useCssModule, useSlots, watchEffect } from 'vue';\n\n import {\n StatusColor,\n StatusColors,\n StatusIcon,\n StatusIcons,\n StatusSeverities,\n StatusSeverity,\n } from '../../../types/statusLevels';\n import { t } from '../../locale';\n import Button from '../Button/Button.vue';\n import Icon from '../Icon/Icon.vue';\n\n export interface DialogProps {\n /**\n * Shows or hides the dialog.\n * Usage: v-model:open=\"isOpen\"\n */\n open?: boolean;\n\n /**\n * Whether the confirmation button is enabled or not.\n */\n disabled?: boolean;\n\n /**\n * Is this a dangerous action? Will turn the confirmation button red.\n */\n dangerZone?: boolean;\n\n /**\n * Header text.\n */\n header?: string;\n\n /**\n * Description text.\n */\n description?: string;\n\n /**\n * Cancel button text.\n */\n cancelText?: string;\n\n /**\n * Confirm button text.\n */\n confirmText?: string;\n\n /**\n * Treats it like an Alert Dialog, with only the confirmation button showing.\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/alert}\n */\n alert?: boolean;\n\n /**\n * Adds a top accent border and icon next to the header.\n * This behaves similarly to the Alert component in respect to the levels, icons, and colors\n * passing `error` will treat the dialog the same as `dangerZone`\n */\n status?: StatusSeverity;\n }\n\n const props = withDefaults(defineProps<DialogProps>(), {\n open: false,\n disabled: false,\n dangerZone: false,\n header: t('ll.areYouSure'),\n description: '',\n cancelText: t('ll.cancel'),\n confirmText: '',\n alert: false,\n status: undefined,\n });\n\n defineOptions({\n name: 'll-dialog',\n inheritAttrs: false,\n });\n\n const emits = defineEmits<{\n (e: 'update:open', value: boolean): void;\n (e: 'cancel'): void;\n }>();\n\n const slots = useSlots();\n const attrs = useAttrs();\n const classes = useCssModule();\n const headerId = uniqueId('dialog-header-');\n\n const isConfirming = ref(false);\n const root = ref();\n\n // Set the default confirm button text to \"Confirm\".\n // If the `alert` prop is true, the default text is \"Okay\".\n // If the `confirmText` prop is provided, `confirmText` is used whether the alert prop is true.\n const modifiedConfirmText = computed(() => props.confirmText || (props.alert ? t('ll.okay') : t('ll.confirm')));\n\n const hasDescription = computed(() => !!slots.default || props.description);\n\n const statusIcon = computed<StatusIcon>(() =>\n props.status ? StatusIcons[capitalize(props.status)] : StatusIcons.Info,\n );\n const statusTitle = computed<StatusSeverity>(() =>\n props.status ? StatusSeverities[capitalize(props.status)] : StatusSeverities.Info,\n );\n const statusColor = computed<StatusColor>(() =>\n props.status ? StatusColors[capitalize(props.status)] : StatusColors.Info,\n );\n\n const computedDangerZone = computed(() => props.dangerZone || props.status === StatusSeverities.Error);\n\n function cancel() {\n emits('update:open', false);\n emits('cancel');\n }\n\n async function handleConfirm(event: Event) {\n isConfirming.value
|
|
1
|
+
{"version":3,"file":"Dialog.js","sources":["../src/components/Dialog/Dialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import capitalize from 'lodash-es/capitalize';\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, nextTick, ref, useAttrs, useCssModule, useSlots, watchEffect } from 'vue';\n\n import {\n StatusColor,\n StatusColors,\n StatusIcon,\n StatusIcons,\n StatusSeverities,\n StatusSeverity,\n } from '../../../types/statusLevels';\n import { t } from '../../locale';\n import Button from '../Button/Button.vue';\n import Icon from '../Icon/Icon.vue';\n\n export interface DialogProps {\n /**\n * Shows or hides the dialog.\n * Usage: v-model:open=\"isOpen\"\n */\n open?: boolean;\n\n /**\n * Whether the confirmation button is enabled or not.\n */\n disabled?: boolean;\n\n /**\n * Is this a dangerous action? Will turn the confirmation button red.\n */\n dangerZone?: boolean;\n\n /**\n * Header text.\n */\n header?: string;\n\n /**\n * Description text.\n */\n description?: string;\n\n /**\n * Cancel button text.\n */\n cancelText?: string;\n\n /**\n * Confirm button text.\n */\n confirmText?: string;\n\n /**\n * Callback function when the confirm button is clicked.\n */\n onConfirm?: (event: Event) => Promise<void> | void;\n\n /**\n * Treats it like an Alert Dialog, with only the confirmation button showing.\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/alert}\n */\n alert?: boolean;\n\n /**\n * Adds a top accent border and icon next to the header.\n * This behaves similarly to the Alert component in respect to the levels, icons, and colors\n * passing `error` will treat the dialog the same as `dangerZone`\n */\n status?: StatusSeverity;\n }\n\n const props = withDefaults(defineProps<DialogProps>(), {\n open: false,\n disabled: false,\n dangerZone: false,\n header: t('ll.areYouSure'),\n description: '',\n cancelText: t('ll.cancel'),\n confirmText: '',\n onConfirm: () => undefined,\n alert: false,\n status: undefined,\n });\n\n defineOptions({\n name: 'll-dialog',\n inheritAttrs: false,\n });\n\n const emits = defineEmits<{\n (e: 'update:open', value: boolean): void;\n (e: 'cancel'): void;\n }>();\n\n const slots = useSlots();\n const attrs = useAttrs();\n const classes = useCssModule();\n const headerId = uniqueId('dialog-header-');\n\n const isConfirming = ref(false);\n const root = ref();\n\n // Set the default confirm button text to \"Confirm\".\n // If the `alert` prop is true, the default text is \"Okay\".\n // If the `confirmText` prop is provided, `confirmText` is used whether the alert prop is true.\n const modifiedConfirmText = computed(() => props.confirmText || (props.alert ? t('ll.okay') : t('ll.confirm')));\n\n const hasDescription = computed(() => !!slots.default || props.description);\n\n const statusIcon = computed<StatusIcon>(() =>\n props.status ? StatusIcons[capitalize(props.status)] : StatusIcons.Info,\n );\n const statusTitle = computed<StatusSeverity>(() =>\n props.status ? StatusSeverities[capitalize(props.status)] : StatusSeverities.Info,\n );\n const statusColor = computed<StatusColor>(() =>\n props.status ? StatusColors[capitalize(props.status)] : StatusColors.Info,\n );\n\n const computedDangerZone = computed(() => props.dangerZone || props.status === StatusSeverities.Error);\n\n function cancel() {\n emits('update:open', false);\n emits('cancel');\n }\n\n async function handleConfirm(event: Event) {\n if (isConfirming.value) {\n return;\n }\n\n isConfirming.value = true;\n\n try {\n await props.onConfirm(event);\n } finally {\n isConfirming.value = false;\n }\n }\n\n watchEffect(() => {\n if (props.open && root.value) {\n // Move focus to confirm button\n nextTick(function () {\n root.value.focus();\n });\n }\n });\n</script>\n\n<template>\n <transition name=\"fade\">\n <dialog\n v-if=\"props.open\"\n ref=\"root\"\n :open=\"props.open\"\n tabindex=\"0\"\n :aria-labelledby=\"headerId\"\n aria-modal=\"true\"\n class=\"stash-dialog\"\n :class=\"classes.dialog\"\n :data-test=\"attrs['data-test'] || 'll-dialog'\"\n v-bind=\"attrs\"\n @keydown.esc=\"cancel\"\n >\n <div\n class=\"stash-dialog__body\"\n :class=\"[\n classes.body,\n `tw-border-${statusColor}`,\n {\n 'tw-border-t-6': props.status,\n },\n ]\"\n data-test=\"stash-dialog|body\"\n >\n <div class=\"stash-dialog__body__content\" :class=\"classes.content\" data-test=\"stash-dialog|body-content\">\n <div class=\"tw-flex tw-items-center\" :class=\"hasDescription && 'tw-mb-1.5'\">\n <Icon\n v-if=\"props.status\"\n data-test=\"dialog-status-icon\"\n :name=\"statusIcon\"\n :title=\"statusTitle\"\n :class=\"`tw-text-${statusColor}`\"\n />\n <h3 :id=\"headerId\" :class=\"{ 'tw-ml-1.5 tw-mt-px': props.status }\">{{ props.header }}</h3>\n </div>\n\n <p v-if=\"hasDescription\" class=\"tw-mb-0\">\n <slot v-if=\"slots.default\"></slot>\n <!-- eslint-disable-next-line vue/no-v-html -->\n <span v-else v-html=\"props.description\"></span>\n </p>\n </div>\n\n <footer class=\"stash-dialog__footer\" :class=\"classes.footer\" data-test=\"stash-dialog|footer\">\n <div class=\"tw-text-right\">\n <div :class=\"{ 'button-grid': !props.alert }\">\n <Button v-if=\"!props.alert\" data-test=\"button|cancel\" secondary @click=\"cancel\">\n {{ props.cancelText }}\n </Button>\n\n <Button\n data-test=\"button|confirm\"\n :disabled=\"props.disabled\"\n :is-loading=\"isConfirming\"\n :color=\"computedDangerZone ? 'red' : 'blue'\"\n :class=\"{\n 'tw-w-full': props.alert,\n }\"\n @click=\"handleConfirm\"\n >\n {{ modifiedConfirmText }}\n </Button>\n </div>\n </div>\n </footer>\n </div>\n </dialog>\n </transition>\n</template>\n\n<style module>\n .dialog {\n background: rgb(0 0 0 / 30%);\n bottom: 0;\n display: flex;\n flex-direction: column;\n left: 0;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n place-content: center;\n position: fixed;\n right: 0;\n top: 0;\n z-index: theme('zIndex.dialog');\n width: 100%;\n height: 100vh;\n }\n\n .body {\n @apply tw-shadow-3xl;\n\n background: var(--color-white);\n color: var(--color-ice-700);\n display: flex;\n flex-direction: column;\n margin: 0 auto;\n max-height: 100vh;\n max-width: 360px;\n transition: transform theme('transitionDuration.150') theme('transitionTimingFunction.swing');\n width: 100%;\n\n &.grey {\n background: var(--color-ice-200);\n border-radius: theme('borderRadius.DEFAULT');\n }\n\n @media screen('md') {\n border-radius: theme('borderRadius.DEFAULT');\n }\n }\n\n .content {\n flex-grow: 1;\n padding: theme('spacing.6') var(--grid-gutter);\n }\n\n .footer {\n background: var(--color-ice-200);\n border-top: theme('borderWidth.DEFAULT') solid var(--color-ice-500);\n display: initial; /* TEMP. Will need to fix marketplace `footer` style */\n padding: theme('spacing.6') var(--grid-gutter);\n\n @media screen('md') {\n border-bottom-left-radius: theme('borderRadius.DEFAULT');\n border-bottom-right-radius: theme('borderRadius.DEFAULT');\n }\n }\n\n :global(.fade-enter-from),\n :global(.fade-leave-active) {\n .body {\n transform: translate3d(0, theme('spacing.3'), 0);\n }\n }\n</style>\n"],"names":["props","__props","emits","__emit","slots","useSlots","attrs","useAttrs","classes","useCssModule","headerId","uniqueId","isConfirming","ref","root","modifiedConfirmText","computed","t","hasDescription","statusIcon","StatusIcons","capitalize","statusTitle","StatusSeverities","statusColor","StatusColors","computedDangerZone","cancel","handleConfirm","event","watchEffect","nextTick"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EE,UAAMA,IAAQC,GAkBRC,IAAQC,GAKRC,IAAQC,KACRC,IAAQC,KACRC,IAAUC,KACVC,IAAWC,EAAS,gBAAgB,GAEpCC,IAAeC,EAAI,EAAK,GACxBC,IAAOD,KAKPE,IAAsBC,EAAS,MAAMhB,EAAM,gBAAgBA,EAAM,QAAQiB,EAAE,SAAS,IAAIA,EAAE,YAAY,EAAE,GAExGC,IAAiBF,EAAS,MAAM,CAAC,CAACZ,EAAM,WAAWJ,EAAM,WAAW,GAEpEmB,IAAaH;AAAA,MAAqB,MACtChB,EAAM,SAASoB,EAAYC,EAAWrB,EAAM,MAAM,CAAC,IAAIoB,EAAY;AAAA,IAAA,GAE/DE,IAAcN;AAAA,MAAyB,MAC3ChB,EAAM,SAASuB,EAAiBF,EAAWrB,EAAM,MAAM,CAAC,IAAIuB,EAAiB;AAAA,IAAA,GAEzEC,IAAcR;AAAA,MAAsB,MACxChB,EAAM,SAASyB,EAAaJ,EAAWrB,EAAM,MAAM,CAAC,IAAIyB,EAAa;AAAA,IAAA,GAGjEC,IAAqBV,EAAS,MAAMhB,EAAM,cAAcA,EAAM,WAAWuB,EAAiB,KAAK;AAErG,aAASI,IAAS;AAChB,MAAAzB,EAAM,eAAe,EAAK,GAC1BA,EAAM,QAAQ;AAAA,IAChB;AAEA,mBAAe0B,EAAcC,GAAc;AACzC,UAAI,CAAAjB,EAAa,OAIjB;AAAA,QAAAA,EAAa,QAAQ;AAEjB,YAAA;AACI,gBAAAZ,EAAM,UAAU6B,CAAK;AAAA,QAAA,UAC3B;AACA,UAAAjB,EAAa,QAAQ;AAAA,QACvB;AAAA;AAAA,IACF;AAEA,WAAAkB,EAAY,MAAM;AACZ,MAAA9B,EAAM,QAAQc,EAAK,SAErBiB,EAAS,WAAY;AACnB,QAAAjB,EAAK,MAAM;MAAM,CAClB;AAAA,IACH,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/Dialog.vue.d.ts
CHANGED
|
@@ -40,6 +40,7 @@ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes
|
|
|
40
40
|
description: string;
|
|
41
41
|
cancelText: any;
|
|
42
42
|
confirmText: string;
|
|
43
|
+
onConfirm: () => undefined;
|
|
43
44
|
alert: boolean;
|
|
44
45
|
status: undefined;
|
|
45
46
|
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
@@ -53,6 +54,7 @@ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes
|
|
|
53
54
|
description: string;
|
|
54
55
|
cancelText: any;
|
|
55
56
|
confirmText: string;
|
|
57
|
+
onConfirm: () => undefined;
|
|
56
58
|
alert: boolean;
|
|
57
59
|
status: undefined;
|
|
58
60
|
}>>> & Readonly<{
|
|
@@ -66,6 +68,7 @@ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes
|
|
|
66
68
|
dangerZone: boolean;
|
|
67
69
|
cancelText: string;
|
|
68
70
|
confirmText: string;
|
|
71
|
+
onConfirm: (event: Event) => void | Promise<void>;
|
|
69
72
|
alert: boolean;
|
|
70
73
|
status: "error" | "warning" | "info" | "success";
|
|
71
74
|
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
|
|
@@ -103,6 +106,10 @@ export declare interface DialogProps {
|
|
|
103
106
|
* Confirm button text.
|
|
104
107
|
*/
|
|
105
108
|
confirmText?: string;
|
|
109
|
+
/**
|
|
110
|
+
* Callback function when the confirm button is clicked.
|
|
111
|
+
*/
|
|
112
|
+
onConfirm?: (event: Event) => Promise<void> | void;
|
|
106
113
|
/**
|
|
107
114
|
* Treats it like an Alert Dialog, with only the confirmation button showing.
|
|
108
115
|
*
|
package/dist/ModalsPlugin.js
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import { createVNode as
|
|
2
|
-
import
|
|
1
|
+
import { createVNode as o, h as s, render as n } from "vue";
|
|
2
|
+
import c from "./Modals.js";
|
|
3
3
|
import "./useModals.js";
|
|
4
4
|
import "lodash-es/merge";
|
|
5
5
|
import "./_plugin-vue_export-helper-dad06003.js";
|
|
6
|
-
const
|
|
7
|
-
install(
|
|
8
|
-
const d = (e == null ? void 0 : e.mountNodeId) ||
|
|
6
|
+
const m = "stash-modals-mount-node", I = {
|
|
7
|
+
install(l, e) {
|
|
8
|
+
const d = (e == null ? void 0 : e.mountNodeId) || m;
|
|
9
9
|
let t = document.getElementById(d);
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const m = l(r(u));
|
|
14
|
-
document.body.appendChild(t), m.appContext = o._context, n(m, t);
|
|
10
|
+
t || (t = document.createElement("div"), t.id = d, t.dataset.test = m, document.body.appendChild(t)), e != null && e.mountNodeClass && !t.classList.contains(e.mountNodeClass) && t.classList.add(e.mountNodeClass);
|
|
11
|
+
const a = o(s(c));
|
|
12
|
+
a.appContext = l._context, n(a, t);
|
|
15
13
|
}
|
|
16
14
|
};
|
|
17
15
|
export {
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
m as DEFAULT_MODALS_PLUGIN_NODE_ID,
|
|
17
|
+
I as default
|
|
20
18
|
};
|
|
21
19
|
//# sourceMappingURL=ModalsPlugin.js.map
|
package/dist/ModalsPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalsPlugin.js","sources":["../src/plugins/ModalsPlugin.ts"],"sourcesContent":["import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Modals from '../components/Modals/Modals.vue';\n\nexport interface ModalsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_MODALS_PLUGIN_NODE_ID = 'stash-modals-mount-node';\n\nexport default <Plugin>{\n install(app: App, options?: ModalsPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_MODALS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n
|
|
1
|
+
{"version":3,"file":"ModalsPlugin.js","sources":["../src/plugins/ModalsPlugin.ts"],"sourcesContent":["import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Modals from '../components/Modals/Modals.vue';\n\nexport interface ModalsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_MODALS_PLUGIN_NODE_ID = 'stash-modals-mount-node';\n\nexport default <Plugin>{\n install(app: App, options?: ModalsPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_MODALS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n if (!mountNode) {\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n mountNode.dataset.test = DEFAULT_MODALS_PLUGIN_NODE_ID;\n document.body.appendChild(mountNode);\n }\n\n if (options?.mountNodeClass && !mountNode.classList.contains(options.mountNodeClass)) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Modals));\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n"],"names":["DEFAULT_MODALS_PLUGIN_NODE_ID","ModalsPlugin","app","options","mountNodeId","mountNode","vNode","createVNode","h","Modals","render"],"mappings":";;;;;AASO,MAAMA,IAAgC,2BAEtBC,IAAA;AAAA,EACrB,QAAQC,GAAUC,GAA+B;AACzC,UAAAC,KAAcD,KAAA,gBAAAA,EAAS,gBAAeH;AACxC,QAAAK,IAAY,SAAS,eAAeD,CAAW;AAEnD,IAAKC,MACSA,IAAA,SAAS,cAAc,KAAK,GACxCA,EAAU,KAAKD,GACfC,EAAU,QAAQ,OAAOL,GAChB,SAAA,KAAK,YAAYK,CAAS,IAGjCF,KAAA,QAAAA,EAAS,kBAAkB,CAACE,EAAU,UAAU,SAASF,EAAQ,cAAc,KACvEE,EAAA,UAAU,IAAIF,EAAQ,cAAc;AAGhD,UAAMG,IAAQC,EAAYC,EAAEC,CAAM,CAAC;AACnC,IAAAH,EAAM,aAAaJ,EAAI,UAEvBQ,EAAOJ,GAAOD,CAAS;AAAA,EACzB;AACF;"}
|
package/dist/ToastsPlugin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createVNode as a, h as
|
|
2
|
-
import
|
|
1
|
+
import { createVNode as a, h as s, render as n } from "vue";
|
|
2
|
+
import c from "./Toasts.js";
|
|
3
3
|
import "./useToasts.js";
|
|
4
4
|
import "lodash-es/merge";
|
|
5
5
|
import "lodash-es/uniqueId";
|
|
@@ -12,19 +12,17 @@ import "./Icon.js";
|
|
|
12
12
|
import "./index-9e1095ef.js";
|
|
13
13
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
14
14
|
import "./_plugin-vue_export-helper-dad06003.js";
|
|
15
|
-
const o = "stash-toasts-mount-node",
|
|
15
|
+
const o = "stash-toasts-mount-node", D = {
|
|
16
16
|
install(r, t) {
|
|
17
17
|
const m = (t == null ? void 0 : t.mountNodeId) || o;
|
|
18
18
|
let e = document.getElementById(m);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const d = a(n(i));
|
|
23
|
-
document.body.appendChild(e), d.appContext = r._context, s(d, e);
|
|
19
|
+
e || (e = document.createElement("div"), e.id = m, e.dataset.test = o, document.body.appendChild(e)), t != null && t.mountNodeClass && !e.classList.contains(t.mountNodeClass) && e.classList.add(t.mountNodeClass);
|
|
20
|
+
const d = a(s(c));
|
|
21
|
+
d.appContext = r._context, n(d, e);
|
|
24
22
|
}
|
|
25
23
|
};
|
|
26
24
|
export {
|
|
27
25
|
o as DEFAULT_TOASTS_PLUGIN_NODE_ID,
|
|
28
|
-
|
|
26
|
+
D as default
|
|
29
27
|
};
|
|
30
28
|
//# sourceMappingURL=ToastsPlugin.js.map
|
package/dist/ToastsPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastsPlugin.js","sources":["../src/plugins/ToastsPlugin.ts"],"sourcesContent":["import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Toasts from '../components/Toasts/Toasts.vue';\n\nexport interface ToastsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_TOASTS_PLUGIN_NODE_ID = 'stash-toasts-mount-node';\n\nexport default <Plugin>{\n install(app: App, options?: ToastsPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_TOASTS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n
|
|
1
|
+
{"version":3,"file":"ToastsPlugin.js","sources":["../src/plugins/ToastsPlugin.ts"],"sourcesContent":["import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Toasts from '../components/Toasts/Toasts.vue';\n\nexport interface ToastsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_TOASTS_PLUGIN_NODE_ID = 'stash-toasts-mount-node';\n\nexport default <Plugin>{\n install(app: App, options?: ToastsPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_TOASTS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n if (!mountNode) {\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n mountNode.dataset.test = DEFAULT_TOASTS_PLUGIN_NODE_ID;\n document.body.appendChild(mountNode);\n }\n\n if (options?.mountNodeClass && !mountNode.classList.contains(options.mountNodeClass)) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Toasts));\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n"],"names":["DEFAULT_TOASTS_PLUGIN_NODE_ID","ToastsPlugin","app","options","mountNodeId","mountNode","vNode","createVNode","h","Toasts","render"],"mappings":";;;;;;;;;;;;;;AASO,MAAMA,IAAgC,2BAEtBC,IAAA;AAAA,EACrB,QAAQC,GAAUC,GAA+B;AACzC,UAAAC,KAAcD,KAAA,gBAAAA,EAAS,gBAAeH;AACxC,QAAAK,IAAY,SAAS,eAAeD,CAAW;AAEnD,IAAKC,MACSA,IAAA,SAAS,cAAc,KAAK,GACxCA,EAAU,KAAKD,GACfC,EAAU,QAAQ,OAAOL,GAChB,SAAA,KAAK,YAAYK,CAAS,IAGjCF,KAAA,QAAAA,EAAS,kBAAkB,CAACE,EAAU,UAAU,SAASF,EAAQ,cAAc,KACvEE,EAAA,UAAU,IAAIF,EAAQ,cAAc;AAGhD,UAAMG,IAAQC,EAAYC,EAAEC,CAAM,CAAC;AACnC,IAAAH,EAAM,aAAaJ,EAAI,UAEvBQ,EAAOJ,GAAOD,CAAS;AAAA,EACzB;AACF;"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import w from "./locale.js";
|
|
2
|
-
import { defineComponent as y, computed as x, openBlock as X, createBlock as Y, mergeProps as D, createSlots as P, renderList as
|
|
2
|
+
import { defineComponent as y, computed as x, openBlock as X, createBlock as Y, mergeProps as D, createSlots as P, renderList as N, unref as $, withCtx as _, createVNode as k, h as I, render as H } from "vue";
|
|
3
3
|
import B from "lodash-es/omit";
|
|
4
4
|
import F from "./useDialog.js";
|
|
5
5
|
import q from "./CustomRender.js";
|
|
@@ -9,7 +9,7 @@ import G from "./ModalsPlugin.js";
|
|
|
9
9
|
import U from "./ToastsPlugin.js";
|
|
10
10
|
import { overridePersistentStorage as V } from "./storage.js";
|
|
11
11
|
import { persistentStorage as Dt } from "./storage.js";
|
|
12
|
-
import { S as
|
|
12
|
+
import { S as Nt, a as $t, b as _t } from "./colors-8d9b9429.js";
|
|
13
13
|
import { S as Ht, a as Bt } from "./misc-76697f61.js";
|
|
14
14
|
import { a as qt, S as At, b as Rt } from "./statusLevels-a8b041f4.js";
|
|
15
15
|
import "lodash-es/get";
|
|
@@ -101,7 +101,7 @@ var z = function() {
|
|
|
101
101
|
var e = this.$$touchObj;
|
|
102
102
|
S(e), O(this), e.touchStarted = e.touchMoved = !1, e.startX = e.startY = 0;
|
|
103
103
|
}
|
|
104
|
-
function
|
|
104
|
+
function m(e) {
|
|
105
105
|
var t = this.$$touchObj, r = e.type.indexOf("touch") >= 0, f = e.type.indexOf("mouse") >= 0;
|
|
106
106
|
r && (t.lastTouchEndTime = e.timeStamp);
|
|
107
107
|
var d = r && !t.touchHoldTimer;
|
|
@@ -119,7 +119,7 @@ var z = function() {
|
|
|
119
119
|
} else
|
|
120
120
|
T(e, this, "tap");
|
|
121
121
|
}
|
|
122
|
-
function
|
|
122
|
+
function h() {
|
|
123
123
|
C(this);
|
|
124
124
|
}
|
|
125
125
|
function b() {
|
|
@@ -182,10 +182,10 @@ var z = function() {
|
|
|
182
182
|
default:
|
|
183
183
|
r.callbacks[d] = r.callbacks[d] || [], r.callbacks[d].push(t);
|
|
184
184
|
}
|
|
185
|
-
r.hasBindTouchEvents || (e.addEventListener("touchstart", a, f), e.addEventListener("touchmove", p, f), e.addEventListener("touchcancel", v), e.addEventListener("touchend",
|
|
185
|
+
r.hasBindTouchEvents || (e.addEventListener("touchstart", a, f), e.addEventListener("touchmove", p, f), e.addEventListener("touchcancel", v), e.addEventListener("touchend", m), r.options.disableClick || (e.addEventListener("mousedown", a), e.addEventListener("mousemove", p), e.addEventListener("mouseup", m), e.addEventListener("mouseenter", h), e.addEventListener("mouseleave", b)), r.hasBindTouchEvents = !0);
|
|
186
186
|
},
|
|
187
187
|
unmounted: function(e) {
|
|
188
|
-
S(e.$$touchObj), e.removeEventListener("touchstart", a), e.removeEventListener("touchmove", p), e.removeEventListener("touchcancel", v), e.removeEventListener("touchend",
|
|
188
|
+
S(e.$$touchObj), e.removeEventListener("touchstart", a), e.removeEventListener("touchmove", p), e.removeEventListener("touchcancel", v), e.removeEventListener("touchend", m), e.$$touchObj && !e.$$touchObj.options.disableClick && (e.removeEventListener("mousedown", a), e.removeEventListener("mousemove", p), e.removeEventListener("mouseup", m), e.removeEventListener("mouseenter", h), e.removeEventListener("mouseleave", b)), delete e.$$touchObj;
|
|
189
189
|
}
|
|
190
190
|
}), s.directive(`${n.namespace}-class`, {
|
|
191
191
|
beforeMount: function(e, t) {
|
|
@@ -205,26 +205,26 @@ const K = /* @__PURE__ */ y({
|
|
|
205
205
|
setup(s) {
|
|
206
206
|
const o = F(), n = x(() => o.active ? B(o.active, ["deferred", "onConfirm", "onCancel", "slots"]) : null);
|
|
207
207
|
function a() {
|
|
208
|
-
var v,
|
|
209
|
-
(v = o.active) != null && v.onCancel && o.active.onCancel(), (
|
|
208
|
+
var v, m, h;
|
|
209
|
+
(v = o.active) != null && v.onCancel && o.active.onCancel(), (h = (m = o.active) == null ? void 0 : m.deferred) == null || h.resolve({
|
|
210
210
|
isCanceled: !0
|
|
211
211
|
}), o.close();
|
|
212
212
|
}
|
|
213
213
|
async function p() {
|
|
214
|
-
var v,
|
|
215
|
-
(v = o.active) != null && v.onConfirm && await o.active.onConfirm(), (
|
|
214
|
+
var v, m, h;
|
|
215
|
+
(v = o.active) != null && v.onConfirm && await o.active.onConfirm(), (h = (m = o.active) == null ? void 0 : m.deferred) == null || h.resolve({
|
|
216
216
|
isConfirmed: !0
|
|
217
217
|
}), o.close();
|
|
218
218
|
}
|
|
219
|
-
return (v,
|
|
220
|
-
var
|
|
219
|
+
return (v, m) => {
|
|
220
|
+
var h;
|
|
221
221
|
return X(), Y(A, D({
|
|
222
222
|
open: !!n.value
|
|
223
223
|
}, n.value, {
|
|
224
224
|
onConfirm: p,
|
|
225
225
|
onCancel: a
|
|
226
226
|
}), P({ _: 2 }, [
|
|
227
|
-
|
|
227
|
+
N((h = $(o).active) == null ? void 0 : h.slots, (b, c) => ({
|
|
228
228
|
name: c,
|
|
229
229
|
fn: _(() => [
|
|
230
230
|
k(q, { render: b }, null, 8, ["render"])
|
|
@@ -237,11 +237,9 @@ const K = /* @__PURE__ */ y({
|
|
|
237
237
|
install(s, o) {
|
|
238
238
|
const n = (o == null ? void 0 : o.mountNodeId) || j;
|
|
239
239
|
let a = document.getElementById(n);
|
|
240
|
-
|
|
241
|
-
return;
|
|
242
|
-
a = document.createElement("div"), a.id = n, a.dataset.test = j, o != null && o.mountNodeClass && a.classList.add(o.mountNodeClass);
|
|
240
|
+
a || (a = document.createElement("div"), a.id = n, a.dataset.test = j, document.body.appendChild(a)), o != null && o.mountNodeClass && !a.classList.contains(o.mountNodeClass) && a.classList.add(o.mountNodeClass);
|
|
243
241
|
const p = k(I(K));
|
|
244
|
-
|
|
242
|
+
p.appContext = s._context, H(p, a);
|
|
245
243
|
}
|
|
246
244
|
}, xt = {
|
|
247
245
|
install(s, {
|
|
@@ -252,8 +250,8 @@ const K = /* @__PURE__ */ y({
|
|
|
252
250
|
provider: "static"
|
|
253
251
|
},
|
|
254
252
|
googleMapsApiKey: v = void 0,
|
|
255
|
-
menus:
|
|
256
|
-
modals:
|
|
253
|
+
menus: m,
|
|
254
|
+
modals: h,
|
|
257
255
|
toasts: b,
|
|
258
256
|
dialogs: c
|
|
259
257
|
} = {}) {
|
|
@@ -263,13 +261,13 @@ const K = /* @__PURE__ */ y({
|
|
|
263
261
|
storage: n,
|
|
264
262
|
staticPath: a,
|
|
265
263
|
googleMapsApiKey: v
|
|
266
|
-
}),
|
|
264
|
+
}), m !== !1 && s.use(R, m), h !== !1 && s.use(G, h), b !== !1 && s.use(U, b), c !== !1 && s.use(Q, c);
|
|
267
265
|
}
|
|
268
266
|
};
|
|
269
267
|
export {
|
|
270
268
|
Ht as SpacingDensity,
|
|
271
|
-
|
|
272
|
-
|
|
269
|
+
Nt as StashColors,
|
|
270
|
+
$t as StashCommonColors,
|
|
273
271
|
Bt as StashImageProvider,
|
|
274
272
|
_t as StashPrimaryColors,
|
|
275
273
|
qt as StatusColors,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/vue3-touch-events/index.js","../src/components/Dialogs/Dialogs.vue","../src/plugins/DialogsPlugin.ts","../src/index.ts"],"sourcesContent":["/**\r\n * @project vue3-touch-events\r\n * @author Robin Rodricks, Xavier Julien, Jerry Bendy\r\n * @since 30/4/2021\r\n * @url https://github.com/robinrodricks/vue3-touch-events\r\n */\r\n\r\nfunction touchX(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientX;\r\n }\r\n return event.touches[0].clientX;\r\n}\r\n\r\nfunction touchY(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientY;\r\n }\r\n return event.touches[0].clientY;\r\n}\r\n\r\nvar isPassiveSupported = (function() {\r\n var supportsPassive = false;\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function() {\r\n supportsPassive = true;\r\n }\r\n });\r\n window.addEventListener('test', null, opts);\r\n } catch (e) {}\r\n return supportsPassive;\r\n})();\r\n\r\nvar vueTouchEvents = {\r\n install: function (app, constructorOptions) {\r\n\t\t\r\n var globalOptions = Object.assign({}, {\r\n disableClick: false,\r\n tapTolerance: 10, // px\r\n swipeTolerance: 30, // px\r\n touchHoldTolerance: 400, // ms\r\n longTapTimeInterval: 400, // ms\r\n touchClass: '',\r\n\t\t\tdragFrequency: 100, // ms\r\n\t\t\trollOverFrequency: 100, // ms\r\n namespace: 'touch',\r\n }, constructorOptions);\r\n\r\n function touchStartEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0,\r\n $el = this;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchStartTime = event.timeStamp;\r\n }\r\n\r\n if (isMouseEvent && $this.lastTouchStartTime && event.timeStamp - $this.lastTouchStartTime < 350) {\r\n return;\r\n }\r\n\r\n if ($this.touchStarted) {\r\n return;\r\n }\r\n\r\n addTouchClass(this);\r\n\r\n $this.touchStarted = true; // always true while the element is being PRESSED\r\n\r\n $this.touchMoved = false; // true only when the element is PRESSED and DRAGGED a bit\r\n $this.swipeOutBounded = false;\r\n\r\n $this.startX = touchX(event);\r\n $this.startY = touchY(event);\r\n\r\n $this.currentX = 0; // always updated with the last mouse X/Y while over the element\r\n $this.currentY = 0;\r\n\r\n $this.touchStartTime = event.timeStamp;\r\n\t\t\t\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n\t\t\t$this.hasSwipe = hasEvent(this, 'swipe')\r\n\t\t\t\t|| hasEvent(this, 'swipe.left') || hasEvent(this, 'swipe.right')\r\n\t\t\t\t|| hasEvent(this, 'swipe.top') || hasEvent(this, 'swipe.bottom');\r\n\r\n\t\t\t// performance: only start hold timer if the `hold` event is registered on this element\r\n\t\t\tif (hasEvent(this, 'hold')){\r\n\t\t\t\t\r\n\t\t\t\t// Trigger touchhold event after `touchHoldTolerance` MS\r\n\t\t\t\t$this.touchHoldTimer = setTimeout(function() {\r\n\t\t\t\t\t$this.touchHoldTimer = null;\r\n\t\t\t\t\ttriggerEvent(event, $el, 'hold');\r\n\t\t\t\t}, $this.options.touchHoldTolerance);\r\n\t\t\t}\r\n\t\t\t\r\n triggerEvent(event, this, 'press');\r\n }\r\n\r\n function touchMoveEvent(event) {\r\n var $this = this.$$touchObj;\r\n\t\t\t\r\n\t\t\tvar curX = touchX(event);\r\n\t\t\tvar curY = touchY(event);\r\n\r\n\t\t\tvar movedAgain = ($this.currentX != curX) || ($this.currentY != curY);\r\n\t\t\t\r\n $this.currentX = curX;\r\n $this.currentY = curY;\r\n\r\n if (!$this.touchMoved) {\r\n var tapTolerance = $this.options.tapTolerance;\r\n\r\n $this.touchMoved = Math.abs($this.startX - $this.currentX) > tapTolerance ||\r\n\t\t\t\t\t\t\t\t Math.abs($this.startY - $this.currentY) > tapTolerance;\r\n\r\n\t\t\t\t// trigger `drag.once` only once after mouse FIRST moved while dragging the element\r\n\t\t\t\t// (`touchMoved` is the flag that indicates we no longer need to trigger this)\r\n if($this.touchMoved){\r\n cancelTouchHoldTimer($this);\r\n triggerEvent(event, this, 'drag.once');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n\t\t\t\tvar swipeOutBounded = $this.options.swipeTolerance;\r\n\r\n\t\t\t\t$this.swipeOutBounded = Math.abs($this.startX - $this.currentX) > swipeOutBounded &&\r\n\t\t\t\t\tMath.abs($this.startY - $this.currentY) > swipeOutBounded;\r\n }\r\n\r\n\t\t\t// only trigger `rollover` event if cursor actually moved over this element\r\n if(hasEvent(this, 'rollover') && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `rollover` event based on `rollOverFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.rollOverFrequency;\r\n\t\t\t\tif ($this.touchRollTime == null || now > ($this.touchRollTime + throttle)){\r\n\t\t\t\t\t$this.touchRollTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'rollover');\r\n\t\t\t\t}\r\n }\r\n\r\n\t\t\t// only trigger `drag` event if cursor actually moved and if we are still dragging this element\r\n if(hasEvent(this, 'drag') && $this.touchStarted && $this.touchMoved && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `drag` event based on `dragFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.dragFrequency;\r\n\t\t\t\tif ($this.touchDragTime == null || now > ($this.touchDragTime + throttle)){\r\n\t\t\t\t\t$this.touchDragTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'drag');\r\n\t\t\t\t}\r\n }\r\n }\r\n\r\n function touchCancelEvent() {\r\n var $this = this.$$touchObj;\r\n\r\n cancelTouchHoldTimer($this);\r\n removeTouchClass(this);\r\n\r\n $this.touchStarted = $this.touchMoved = false;\r\n $this.startX = $this.startY = 0;\r\n }\r\n\r\n function touchEndEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchEndTime = event.timeStamp;\r\n }\r\n\r\n var touchholdEnd = isTouchEvent && !$this.touchHoldTimer;\r\n cancelTouchHoldTimer($this);\r\n\r\n $this.touchStarted = false;\r\n\r\n removeTouchClass(this);\r\n\r\n if (isMouseEvent && $this.lastTouchEndTime && event.timeStamp - $this.lastTouchEndTime < 350) {\r\n return;\r\n }\r\n\r\n // trigger `end` event when touch stopped\r\n triggerEvent(event, this, 'release');\r\n\r\n if (!$this.touchMoved) {\r\n // detect if this is a longTap event or not\r\n if (hasEvent(this, 'longtap') && event.timeStamp - $this.touchStartTime > $this.options.longTapTimeInterval) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n triggerEvent(event, this, 'longtap');\r\n\r\n } else if (hasEvent(this, 'hold') && touchholdEnd) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n return;\r\n } else {\r\n // emit tap event\r\n triggerEvent(event, this, 'tap');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n var swipeOutBounded = $this.options.swipeTolerance,\r\n direction,\r\n distanceY = Math.abs($this.startY - $this.currentY),\r\n distanceX = Math.abs($this.startX - $this.currentX);\r\n\r\n if (distanceY > swipeOutBounded || distanceX > swipeOutBounded) {\r\n if (distanceY > distanceX) {\r\n direction = $this.startY > $this.currentY ? 'top' : 'bottom';\r\n } else {\r\n direction = $this.startX > $this.currentX ? 'left' : 'right';\r\n }\r\n\r\n // Only emit the specified event when it has modifiers\r\n if (hasEvent(this, 'swipe.' + direction)) {\r\n triggerEvent(event, this, 'swipe.' + direction, direction);\r\n } else {\r\n // Emit a common event when it has no any modifier\r\n triggerEvent(event, this, 'swipe', direction);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function mouseEnterEvent() {\r\n addTouchClass(this);\r\n }\r\n\r\n function mouseLeaveEvent() {\r\n removeTouchClass(this);\r\n }\r\n\r\n function hasEvent($el, eventType) {\r\n var callbacks = $el.$$touchObj.callbacks[eventType];\r\n\t\t\treturn (callbacks != null && callbacks.length > 0);\r\n\t\t}\r\n\t\t\r\n function triggerEvent(e, $el, eventType, param) {\r\n var $this = $el.$$touchObj;\r\n\r\n // get the subscribers for this event\r\n var callbacks = $this.callbacks[eventType];\r\n\t\t\t\r\n\t\t\t// exit if no subscribers to this particular event\r\n if (callbacks == null || callbacks.length === 0) {\r\n return null;\r\n }\r\n\r\n\t\t\t// per callback\r\n for (var i = 0; i < callbacks.length; i++) {\r\n var binding = callbacks[i];\r\n\r\n if (binding.modifiers.stop) {\r\n e.stopPropagation();\r\n }\r\n\r\n if (binding.modifiers.prevent) {\r\n e.preventDefault();\r\n }\r\n\r\n // handle `self` modifier`\r\n if (binding.modifiers.self && e.target !== e.currentTarget) {\r\n continue;\r\n }\r\n\r\n if (typeof binding.value === 'function') {\r\n if (param) {\r\n binding.value(param, e);\r\n } else {\r\n binding.value(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function addTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.add(className);\r\n }\r\n\r\n function removeTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.remove(className);\r\n }\r\n\r\n function cancelTouchHoldTimer($this) {\r\n if ($this && $this.touchHoldTimer) {\r\n clearTimeout($this.touchHoldTimer);\r\n $this.touchHoldTimer = null;\r\n }\r\n }\r\n\r\n function buildTouchObj($el, extraOptions) {\r\n var touchObj = $el.$$touchObj || {\r\n // an object contains all callbacks registered,\r\n // key is event name, value is an array\r\n callbacks: {},\r\n // prevent bind twice, set to true when event bound\r\n hasBindTouchEvents: false,\r\n // default options, would be override by v-touch-options\r\n options: globalOptions\r\n };\r\n if (extraOptions) {\r\n touchObj.options = Object.assign({}, touchObj.options, extraOptions);\r\n }\r\n $el.$$touchObj = touchObj;\r\n return $el.$$touchObj;\r\n }\r\n\r\n app.directive(globalOptions.namespace, {\r\n beforeMount: function ($el, binding) {\r\n // build a touch configuration object\r\n var $this = buildTouchObj($el);\r\n // declare passive option for the event listener. Defaults to { passive: true } if supported\r\n var passiveOpt = isPassiveSupported ? { passive: true } : false;\r\n // register callback\r\n var eventType = binding.arg || 'tap';\r\n switch (eventType) {\r\n case 'swipe':\r\n var _m = binding.modifiers;\r\n if (_m.left || _m.right || _m.top || _m.bottom) {\r\n for (var i in binding.modifiers) {\r\n if (['left', 'right', 'top', 'bottom'].indexOf(i) >= 0) {\r\n var _e = 'swipe.' + i;\r\n $this.callbacks[_e] = $this.callbacks[_e] || [];\r\n $this.callbacks[_e].push(binding);\r\n }\r\n }\r\n } else {\r\n $this.callbacks.swipe = $this.callbacks.swipe || [];\r\n $this.callbacks.swipe.push(binding);\r\n }\r\n break;\r\n\r\n case 'press':\r\n case 'drag':\r\n if (binding.modifiers.disablePassive) {\r\n // change the passive option for the `drag` event if disablePassive modifier exists\r\n passiveOpt = false;\r\n }\r\n default:\r\n $this.callbacks[eventType] = $this.callbacks[eventType] || [];\r\n $this.callbacks[eventType].push(binding);\r\n }\r\n\r\n // prevent bind twice\r\n if ($this.hasBindTouchEvents) {\r\n return;\r\n }\r\n\r\n $el.addEventListener('touchstart', touchStartEvent, passiveOpt);\r\n $el.addEventListener('touchmove', touchMoveEvent, passiveOpt);\r\n $el.addEventListener('touchcancel', touchCancelEvent);\r\n $el.addEventListener('touchend', touchEndEvent);\r\n\r\n if (!$this.options.disableClick) {\r\n $el.addEventListener('mousedown', touchStartEvent);\r\n $el.addEventListener('mousemove', touchMoveEvent);\r\n $el.addEventListener('mouseup', touchEndEvent);\r\n $el.addEventListener('mouseenter', mouseEnterEvent);\r\n $el.addEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // set bind mark to true\r\n $this.hasBindTouchEvents = true;\r\n },\r\n\r\n unmounted: function ($el) {\r\n cancelTouchHoldTimer($el.$$touchObj)\r\n\r\n $el.removeEventListener('touchstart', touchStartEvent);\r\n $el.removeEventListener('touchmove', touchMoveEvent);\r\n $el.removeEventListener('touchcancel', touchCancelEvent);\r\n $el.removeEventListener('touchend', touchEndEvent);\r\n\r\n if ($el.$$touchObj && !$el.$$touchObj.options.disableClick) {\r\n $el.removeEventListener('mousedown', touchStartEvent);\r\n $el.removeEventListener('mousemove', touchMoveEvent);\r\n $el.removeEventListener('mouseup', touchEndEvent);\r\n $el.removeEventListener('mouseenter', mouseEnterEvent);\r\n $el.removeEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // remove vars\r\n delete $el.$$touchObj;\r\n }\r\n });\r\n\r\n app.directive(`${globalOptions.namespace}-class`, {\r\n beforeMount: function ($el, binding) {\r\n buildTouchObj($el, {\r\n touchClass: binding.value\r\n });\r\n }\r\n });\r\n\r\n app.directive(`${globalOptions.namespace}-options`, {\r\n beforeMount: function($el, binding) {\r\n buildTouchObj($el, binding.value);\r\n }\r\n });\r\n }\r\n};\r\n\r\n/*\r\n * Exports\r\n */\r\nexport default vueTouchEvents\r\n","<script setup lang=\"ts\">\n import omit from 'lodash-es/omit';\n import { computed } from 'vue';\n\n import useDialog from '../../composables/useDialog/useDialog';\n import CustomRender from '../CustomRender/CustomRender.vue';\n import Dialog from '../Dialog/Dialog.vue';\n\n const dialog = useDialog();\n\n const attributes = computed(() => {\n if (!dialog.active) return null;\n\n return omit(dialog.active, ['deferred', 'onConfirm', 'onCancel', 'slots']);\n });\n\n function onCancel() {\n if (dialog.active?.onCancel) {\n dialog.active.onCancel();\n }\n\n dialog.active?.deferred?.resolve({\n isCanceled: true,\n });\n\n dialog.close();\n }\n\n async function onConfirm() {\n if (dialog.active?.onConfirm) {\n await dialog.active.onConfirm();\n }\n\n dialog.active?.deferred?.resolve({\n isConfirmed: true,\n });\n\n dialog.close();\n }\n</script>\n\n<template>\n <Dialog :open=\"!!attributes\" v-bind=\"attributes\" @confirm=\"onConfirm\" @cancel=\"onCancel\">\n <template v-for=\"(value, name) in dialog.active?.slots\" :key=\"name\" #[name]>\n <CustomRender :render=\"value\" />\n </template>\n </Dialog>\n</template>\n","import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Dialogs from '../components/Dialogs/Dialogs.vue';\n\nexport interface DialogsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_DIALOGS_PLUGIN_NODE_ID = 'stash-dialogs-mount-node';\n\nexport default <Plugin>{\n install(app: App, options?: DialogsPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_DIALOGS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n // If the mount node already exists, do nothing\n if (mountNode) {\n return;\n }\n\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n mountNode.dataset.test = DEFAULT_DIALOGS_PLUGIN_NODE_ID;\n\n if (options?.mountNodeClass) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Dialogs));\n document.body.appendChild(mountNode);\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n","import { Plugin } from 'vue';\nimport Vue3TouchEvents, { type Vue3TouchEventsOptions } from 'vue3-touch-events';\n\nimport { I18nPlugin, StashOptionImages, StashProvideState } from '../types/misc';\nimport locale from './locale';\n// this is valid syntax per the TS docs, but prettier throws an error expecting a comma after `type`\n// eslint-disable-next-line prettier/prettier\nimport DialogsPlugin, { type DialogsPluginOptions } from './plugins/DialogsPlugin';\nimport MenusPlugin, { type MenusPluginOptions } from './plugins/MenusPlugin';\nimport ModalsPlugin, { type ModalsPluginOptions } from './plugins/ModalsPlugin';\nimport ToastsPlugin, { type ToastsPluginOptions } from './plugins/ToastsPlugin';\nimport { overridePersistentStorage, persistentStorage } from './storage';\n\nexport interface StashPluginOptions {\n i18n?: I18nPlugin;\n storage?: {\n set: <T = unknown>(name: string, data: T, options?: { [key: string]: unknown }) => void;\n get: <T = unknown>(name: string, options?: { [key: string]: unknown }) => T;\n };\n staticPath?: string;\n images?: StashOptionImages;\n googleMapsApiKey?: string;\n menus?: false | MenusPluginOptions;\n modals?: false | ModalsPluginOptions;\n toasts?: false | ToastsPluginOptions;\n dialogs?: false | DialogsPluginOptions;\n}\n\nexport default <Plugin>{\n install(\n app,\n {\n i18n = undefined,\n storage = undefined,\n staticPath = '/static',\n images = {\n provider: 'static',\n },\n googleMapsApiKey = undefined,\n menus,\n modals,\n toasts,\n dialogs,\n }: StashPluginOptions = {},\n ) {\n app.use<Vue3TouchEventsOptions>(Vue3TouchEvents, {});\n\n // locale\n if (i18n) {\n locale.use(i18n.locale);\n locale.i18n(i18n && i18n.t);\n }\n\n // persistent storage (localStorage)\n if (storage) {\n overridePersistentStorage(storage);\n }\n\n // expose stash options to the rest of your application\n app.provide<StashProvideState>('stashOptions', {\n i18n,\n images,\n storage,\n staticPath,\n googleMapsApiKey,\n });\n\n if (menus !== false) {\n app.use(MenusPlugin, menus);\n }\n\n if (modals !== false) {\n app.use(ModalsPlugin, modals);\n }\n\n if (toasts !== false) {\n app.use(ToastsPlugin, toasts);\n }\n\n if (dialogs !== false) {\n app.use(DialogsPlugin, dialogs);\n }\n },\n};\n\nexport { persistentStorage };\n\n// Re-export things that are useful for consumers\nexport * from '../types';\nexport * from './storage';\n\n// Todo: Investigate tree-shaking issues to see if we can expose these. Theoritically\n// should be no issue, however test framework startup time, specifically w/ Jest,\n// seems to be the major blocker here.\n// export * from './components';\n// export * from './composables';\n// export * from './constants';\n// export * from './directives';\n// export * from './locale';\n// export * from './plugins';\n// export { default as ToastsPlugin } from './plugins/ToastsPlugin';\n"],"names":["touchX","event","touchY","isPassiveSupported","supportsPassive","opts","vueTouchEvents","app","constructorOptions","globalOptions","touchStartEvent","$this","isTouchEvent","isMouseEvent","$el","addTouchClass","hasEvent","triggerEvent","touchMoveEvent","curX","curY","movedAgain","swipeOutBounded","tapTolerance","cancelTouchHoldTimer","now","throttle","touchCancelEvent","removeTouchClass","touchEndEvent","touchholdEnd","direction","distanceY","distanceX","mouseEnterEvent","mouseLeaveEvent","eventType","callbacks","param","i","binding","className","buildTouchObj","extraOptions","touchObj","passiveOpt","_m","_e","dialog","useDialog","attributes","computed","omit","onCancel","_a","_c","_b","onConfirm","DEFAULT_DIALOGS_PLUGIN_NODE_ID","DialogsPlugin","options","mountNodeId","mountNode","vNode","createVNode","h","Dialogs","render","index","i18n","storage","staticPath","images","googleMapsApiKey","menus","modals","toasts","dialogs","Vue3TouchEvents","locale","overridePersistentStorage","MenusPlugin","ModalsPlugin","ToastsPlugin"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/vue3-touch-events/index.js","../src/components/Dialogs/Dialogs.vue","../src/plugins/DialogsPlugin.ts","../src/index.ts"],"sourcesContent":["/**\r\n * @project vue3-touch-events\r\n * @author Robin Rodricks, Xavier Julien, Jerry Bendy\r\n * @since 30/4/2021\r\n * @url https://github.com/robinrodricks/vue3-touch-events\r\n */\r\n\r\nfunction touchX(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientX;\r\n }\r\n return event.touches[0].clientX;\r\n}\r\n\r\nfunction touchY(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientY;\r\n }\r\n return event.touches[0].clientY;\r\n}\r\n\r\nvar isPassiveSupported = (function() {\r\n var supportsPassive = false;\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function() {\r\n supportsPassive = true;\r\n }\r\n });\r\n window.addEventListener('test', null, opts);\r\n } catch (e) {}\r\n return supportsPassive;\r\n})();\r\n\r\nvar vueTouchEvents = {\r\n install: function (app, constructorOptions) {\r\n\t\t\r\n var globalOptions = Object.assign({}, {\r\n disableClick: false,\r\n tapTolerance: 10, // px\r\n swipeTolerance: 30, // px\r\n touchHoldTolerance: 400, // ms\r\n longTapTimeInterval: 400, // ms\r\n touchClass: '',\r\n\t\t\tdragFrequency: 100, // ms\r\n\t\t\trollOverFrequency: 100, // ms\r\n namespace: 'touch',\r\n }, constructorOptions);\r\n\r\n function touchStartEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0,\r\n $el = this;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchStartTime = event.timeStamp;\r\n }\r\n\r\n if (isMouseEvent && $this.lastTouchStartTime && event.timeStamp - $this.lastTouchStartTime < 350) {\r\n return;\r\n }\r\n\r\n if ($this.touchStarted) {\r\n return;\r\n }\r\n\r\n addTouchClass(this);\r\n\r\n $this.touchStarted = true; // always true while the element is being PRESSED\r\n\r\n $this.touchMoved = false; // true only when the element is PRESSED and DRAGGED a bit\r\n $this.swipeOutBounded = false;\r\n\r\n $this.startX = touchX(event);\r\n $this.startY = touchY(event);\r\n\r\n $this.currentX = 0; // always updated with the last mouse X/Y while over the element\r\n $this.currentY = 0;\r\n\r\n $this.touchStartTime = event.timeStamp;\r\n\t\t\t\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n\t\t\t$this.hasSwipe = hasEvent(this, 'swipe')\r\n\t\t\t\t|| hasEvent(this, 'swipe.left') || hasEvent(this, 'swipe.right')\r\n\t\t\t\t|| hasEvent(this, 'swipe.top') || hasEvent(this, 'swipe.bottom');\r\n\r\n\t\t\t// performance: only start hold timer if the `hold` event is registered on this element\r\n\t\t\tif (hasEvent(this, 'hold')){\r\n\t\t\t\t\r\n\t\t\t\t// Trigger touchhold event after `touchHoldTolerance` MS\r\n\t\t\t\t$this.touchHoldTimer = setTimeout(function() {\r\n\t\t\t\t\t$this.touchHoldTimer = null;\r\n\t\t\t\t\ttriggerEvent(event, $el, 'hold');\r\n\t\t\t\t}, $this.options.touchHoldTolerance);\r\n\t\t\t}\r\n\t\t\t\r\n triggerEvent(event, this, 'press');\r\n }\r\n\r\n function touchMoveEvent(event) {\r\n var $this = this.$$touchObj;\r\n\t\t\t\r\n\t\t\tvar curX = touchX(event);\r\n\t\t\tvar curY = touchY(event);\r\n\r\n\t\t\tvar movedAgain = ($this.currentX != curX) || ($this.currentY != curY);\r\n\t\t\t\r\n $this.currentX = curX;\r\n $this.currentY = curY;\r\n\r\n if (!$this.touchMoved) {\r\n var tapTolerance = $this.options.tapTolerance;\r\n\r\n $this.touchMoved = Math.abs($this.startX - $this.currentX) > tapTolerance ||\r\n\t\t\t\t\t\t\t\t Math.abs($this.startY - $this.currentY) > tapTolerance;\r\n\r\n\t\t\t\t// trigger `drag.once` only once after mouse FIRST moved while dragging the element\r\n\t\t\t\t// (`touchMoved` is the flag that indicates we no longer need to trigger this)\r\n if($this.touchMoved){\r\n cancelTouchHoldTimer($this);\r\n triggerEvent(event, this, 'drag.once');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n\t\t\t\tvar swipeOutBounded = $this.options.swipeTolerance;\r\n\r\n\t\t\t\t$this.swipeOutBounded = Math.abs($this.startX - $this.currentX) > swipeOutBounded &&\r\n\t\t\t\t\tMath.abs($this.startY - $this.currentY) > swipeOutBounded;\r\n }\r\n\r\n\t\t\t// only trigger `rollover` event if cursor actually moved over this element\r\n if(hasEvent(this, 'rollover') && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `rollover` event based on `rollOverFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.rollOverFrequency;\r\n\t\t\t\tif ($this.touchRollTime == null || now > ($this.touchRollTime + throttle)){\r\n\t\t\t\t\t$this.touchRollTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'rollover');\r\n\t\t\t\t}\r\n }\r\n\r\n\t\t\t// only trigger `drag` event if cursor actually moved and if we are still dragging this element\r\n if(hasEvent(this, 'drag') && $this.touchStarted && $this.touchMoved && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `drag` event based on `dragFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.dragFrequency;\r\n\t\t\t\tif ($this.touchDragTime == null || now > ($this.touchDragTime + throttle)){\r\n\t\t\t\t\t$this.touchDragTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'drag');\r\n\t\t\t\t}\r\n }\r\n }\r\n\r\n function touchCancelEvent() {\r\n var $this = this.$$touchObj;\r\n\r\n cancelTouchHoldTimer($this);\r\n removeTouchClass(this);\r\n\r\n $this.touchStarted = $this.touchMoved = false;\r\n $this.startX = $this.startY = 0;\r\n }\r\n\r\n function touchEndEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchEndTime = event.timeStamp;\r\n }\r\n\r\n var touchholdEnd = isTouchEvent && !$this.touchHoldTimer;\r\n cancelTouchHoldTimer($this);\r\n\r\n $this.touchStarted = false;\r\n\r\n removeTouchClass(this);\r\n\r\n if (isMouseEvent && $this.lastTouchEndTime && event.timeStamp - $this.lastTouchEndTime < 350) {\r\n return;\r\n }\r\n\r\n // trigger `end` event when touch stopped\r\n triggerEvent(event, this, 'release');\r\n\r\n if (!$this.touchMoved) {\r\n // detect if this is a longTap event or not\r\n if (hasEvent(this, 'longtap') && event.timeStamp - $this.touchStartTime > $this.options.longTapTimeInterval) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n triggerEvent(event, this, 'longtap');\r\n\r\n } else if (hasEvent(this, 'hold') && touchholdEnd) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n return;\r\n } else {\r\n // emit tap event\r\n triggerEvent(event, this, 'tap');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n var swipeOutBounded = $this.options.swipeTolerance,\r\n direction,\r\n distanceY = Math.abs($this.startY - $this.currentY),\r\n distanceX = Math.abs($this.startX - $this.currentX);\r\n\r\n if (distanceY > swipeOutBounded || distanceX > swipeOutBounded) {\r\n if (distanceY > distanceX) {\r\n direction = $this.startY > $this.currentY ? 'top' : 'bottom';\r\n } else {\r\n direction = $this.startX > $this.currentX ? 'left' : 'right';\r\n }\r\n\r\n // Only emit the specified event when it has modifiers\r\n if (hasEvent(this, 'swipe.' + direction)) {\r\n triggerEvent(event, this, 'swipe.' + direction, direction);\r\n } else {\r\n // Emit a common event when it has no any modifier\r\n triggerEvent(event, this, 'swipe', direction);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function mouseEnterEvent() {\r\n addTouchClass(this);\r\n }\r\n\r\n function mouseLeaveEvent() {\r\n removeTouchClass(this);\r\n }\r\n\r\n function hasEvent($el, eventType) {\r\n var callbacks = $el.$$touchObj.callbacks[eventType];\r\n\t\t\treturn (callbacks != null && callbacks.length > 0);\r\n\t\t}\r\n\t\t\r\n function triggerEvent(e, $el, eventType, param) {\r\n var $this = $el.$$touchObj;\r\n\r\n // get the subscribers for this event\r\n var callbacks = $this.callbacks[eventType];\r\n\t\t\t\r\n\t\t\t// exit if no subscribers to this particular event\r\n if (callbacks == null || callbacks.length === 0) {\r\n return null;\r\n }\r\n\r\n\t\t\t// per callback\r\n for (var i = 0; i < callbacks.length; i++) {\r\n var binding = callbacks[i];\r\n\r\n if (binding.modifiers.stop) {\r\n e.stopPropagation();\r\n }\r\n\r\n if (binding.modifiers.prevent) {\r\n e.preventDefault();\r\n }\r\n\r\n // handle `self` modifier`\r\n if (binding.modifiers.self && e.target !== e.currentTarget) {\r\n continue;\r\n }\r\n\r\n if (typeof binding.value === 'function') {\r\n if (param) {\r\n binding.value(param, e);\r\n } else {\r\n binding.value(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function addTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.add(className);\r\n }\r\n\r\n function removeTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.remove(className);\r\n }\r\n\r\n function cancelTouchHoldTimer($this) {\r\n if ($this && $this.touchHoldTimer) {\r\n clearTimeout($this.touchHoldTimer);\r\n $this.touchHoldTimer = null;\r\n }\r\n }\r\n\r\n function buildTouchObj($el, extraOptions) {\r\n var touchObj = $el.$$touchObj || {\r\n // an object contains all callbacks registered,\r\n // key is event name, value is an array\r\n callbacks: {},\r\n // prevent bind twice, set to true when event bound\r\n hasBindTouchEvents: false,\r\n // default options, would be override by v-touch-options\r\n options: globalOptions\r\n };\r\n if (extraOptions) {\r\n touchObj.options = Object.assign({}, touchObj.options, extraOptions);\r\n }\r\n $el.$$touchObj = touchObj;\r\n return $el.$$touchObj;\r\n }\r\n\r\n app.directive(globalOptions.namespace, {\r\n beforeMount: function ($el, binding) {\r\n // build a touch configuration object\r\n var $this = buildTouchObj($el);\r\n // declare passive option for the event listener. Defaults to { passive: true } if supported\r\n var passiveOpt = isPassiveSupported ? { passive: true } : false;\r\n // register callback\r\n var eventType = binding.arg || 'tap';\r\n switch (eventType) {\r\n case 'swipe':\r\n var _m = binding.modifiers;\r\n if (_m.left || _m.right || _m.top || _m.bottom) {\r\n for (var i in binding.modifiers) {\r\n if (['left', 'right', 'top', 'bottom'].indexOf(i) >= 0) {\r\n var _e = 'swipe.' + i;\r\n $this.callbacks[_e] = $this.callbacks[_e] || [];\r\n $this.callbacks[_e].push(binding);\r\n }\r\n }\r\n } else {\r\n $this.callbacks.swipe = $this.callbacks.swipe || [];\r\n $this.callbacks.swipe.push(binding);\r\n }\r\n break;\r\n\r\n case 'press':\r\n case 'drag':\r\n if (binding.modifiers.disablePassive) {\r\n // change the passive option for the `drag` event if disablePassive modifier exists\r\n passiveOpt = false;\r\n }\r\n default:\r\n $this.callbacks[eventType] = $this.callbacks[eventType] || [];\r\n $this.callbacks[eventType].push(binding);\r\n }\r\n\r\n // prevent bind twice\r\n if ($this.hasBindTouchEvents) {\r\n return;\r\n }\r\n\r\n $el.addEventListener('touchstart', touchStartEvent, passiveOpt);\r\n $el.addEventListener('touchmove', touchMoveEvent, passiveOpt);\r\n $el.addEventListener('touchcancel', touchCancelEvent);\r\n $el.addEventListener('touchend', touchEndEvent);\r\n\r\n if (!$this.options.disableClick) {\r\n $el.addEventListener('mousedown', touchStartEvent);\r\n $el.addEventListener('mousemove', touchMoveEvent);\r\n $el.addEventListener('mouseup', touchEndEvent);\r\n $el.addEventListener('mouseenter', mouseEnterEvent);\r\n $el.addEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // set bind mark to true\r\n $this.hasBindTouchEvents = true;\r\n },\r\n\r\n unmounted: function ($el) {\r\n cancelTouchHoldTimer($el.$$touchObj)\r\n\r\n $el.removeEventListener('touchstart', touchStartEvent);\r\n $el.removeEventListener('touchmove', touchMoveEvent);\r\n $el.removeEventListener('touchcancel', touchCancelEvent);\r\n $el.removeEventListener('touchend', touchEndEvent);\r\n\r\n if ($el.$$touchObj && !$el.$$touchObj.options.disableClick) {\r\n $el.removeEventListener('mousedown', touchStartEvent);\r\n $el.removeEventListener('mousemove', touchMoveEvent);\r\n $el.removeEventListener('mouseup', touchEndEvent);\r\n $el.removeEventListener('mouseenter', mouseEnterEvent);\r\n $el.removeEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // remove vars\r\n delete $el.$$touchObj;\r\n }\r\n });\r\n\r\n app.directive(`${globalOptions.namespace}-class`, {\r\n beforeMount: function ($el, binding) {\r\n buildTouchObj($el, {\r\n touchClass: binding.value\r\n });\r\n }\r\n });\r\n\r\n app.directive(`${globalOptions.namespace}-options`, {\r\n beforeMount: function($el, binding) {\r\n buildTouchObj($el, binding.value);\r\n }\r\n });\r\n }\r\n};\r\n\r\n/*\r\n * Exports\r\n */\r\nexport default vueTouchEvents\r\n","<script setup lang=\"ts\">\n import omit from 'lodash-es/omit';\n import { computed } from 'vue';\n\n import useDialog from '../../composables/useDialog/useDialog';\n import CustomRender from '../CustomRender/CustomRender.vue';\n import Dialog from '../Dialog/Dialog.vue';\n\n const dialog = useDialog();\n\n const attributes = computed(() => {\n if (!dialog.active) return null;\n\n return omit(dialog.active, ['deferred', 'onConfirm', 'onCancel', 'slots']);\n });\n\n function onCancel() {\n if (dialog.active?.onCancel) {\n dialog.active.onCancel();\n }\n\n dialog.active?.deferred?.resolve({\n isCanceled: true,\n });\n\n dialog.close();\n }\n\n async function onConfirm() {\n if (dialog.active?.onConfirm) {\n await dialog.active.onConfirm();\n }\n\n dialog.active?.deferred?.resolve({\n isConfirmed: true,\n });\n\n dialog.close();\n }\n</script>\n\n<template>\n <Dialog :open=\"!!attributes\" v-bind=\"attributes\" @confirm=\"onConfirm\" @cancel=\"onCancel\">\n <template v-for=\"(value, name) in dialog.active?.slots\" :key=\"name\" #[name]>\n <CustomRender :render=\"value\" />\n </template>\n </Dialog>\n</template>\n","import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Dialogs from '../components/Dialogs/Dialogs.vue';\n\nexport interface DialogsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport const DEFAULT_DIALOGS_PLUGIN_NODE_ID = 'stash-dialogs-mount-node';\n\nexport default <Plugin>{\n install(app: App, options?: DialogsPluginOptions) {\n const mountNodeId = options?.mountNodeId || DEFAULT_DIALOGS_PLUGIN_NODE_ID;\n let mountNode = document.getElementById(mountNodeId);\n\n if (!mountNode) {\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n mountNode.dataset.test = DEFAULT_DIALOGS_PLUGIN_NODE_ID;\n document.body.appendChild(mountNode);\n }\n\n if (options?.mountNodeClass && !mountNode.classList.contains(options.mountNodeClass)) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Dialogs));\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n","import { Plugin } from 'vue';\nimport Vue3TouchEvents, { type Vue3TouchEventsOptions } from 'vue3-touch-events';\n\nimport { I18nPlugin, StashOptionImages, StashProvideState } from '../types/misc';\nimport locale from './locale';\n// this is valid syntax per the TS docs, but prettier throws an error expecting a comma after `type`\n// eslint-disable-next-line prettier/prettier\nimport DialogsPlugin, { type DialogsPluginOptions } from './plugins/DialogsPlugin';\nimport MenusPlugin, { type MenusPluginOptions } from './plugins/MenusPlugin';\nimport ModalsPlugin, { type ModalsPluginOptions } from './plugins/ModalsPlugin';\nimport ToastsPlugin, { type ToastsPluginOptions } from './plugins/ToastsPlugin';\nimport { overridePersistentStorage, persistentStorage } from './storage';\n\nexport interface StashPluginOptions {\n i18n?: I18nPlugin;\n storage?: {\n set: <T = unknown>(name: string, data: T, options?: { [key: string]: unknown }) => void;\n get: <T = unknown>(name: string, options?: { [key: string]: unknown }) => T;\n };\n staticPath?: string;\n images?: StashOptionImages;\n googleMapsApiKey?: string;\n menus?: false | MenusPluginOptions;\n modals?: false | ModalsPluginOptions;\n toasts?: false | ToastsPluginOptions;\n dialogs?: false | DialogsPluginOptions;\n}\n\nexport default <Plugin>{\n install(\n app,\n {\n i18n = undefined,\n storage = undefined,\n staticPath = '/static',\n images = {\n provider: 'static',\n },\n googleMapsApiKey = undefined,\n menus,\n modals,\n toasts,\n dialogs,\n }: StashPluginOptions = {},\n ) {\n app.use<Vue3TouchEventsOptions>(Vue3TouchEvents, {});\n\n // locale\n if (i18n) {\n locale.use(i18n.locale);\n locale.i18n(i18n && i18n.t);\n }\n\n // persistent storage (localStorage)\n if (storage) {\n overridePersistentStorage(storage);\n }\n\n // expose stash options to the rest of your application\n app.provide<StashProvideState>('stashOptions', {\n i18n,\n images,\n storage,\n staticPath,\n googleMapsApiKey,\n });\n\n if (menus !== false) {\n app.use(MenusPlugin, menus);\n }\n\n if (modals !== false) {\n app.use(ModalsPlugin, modals);\n }\n\n if (toasts !== false) {\n app.use(ToastsPlugin, toasts);\n }\n\n if (dialogs !== false) {\n app.use(DialogsPlugin, dialogs);\n }\n },\n};\n\nexport { persistentStorage };\n\n// Re-export things that are useful for consumers\nexport * from '../types';\nexport * from './storage';\n\n// Todo: Investigate tree-shaking issues to see if we can expose these. Theoritically\n// should be no issue, however test framework startup time, specifically w/ Jest,\n// seems to be the major blocker here.\n// export * from './components';\n// export * from './composables';\n// export * from './constants';\n// export * from './directives';\n// export * from './locale';\n// export * from './plugins';\n// export { default as ToastsPlugin } from './plugins/ToastsPlugin';\n"],"names":["touchX","event","touchY","isPassiveSupported","supportsPassive","opts","vueTouchEvents","app","constructorOptions","globalOptions","touchStartEvent","$this","isTouchEvent","isMouseEvent","$el","addTouchClass","hasEvent","triggerEvent","touchMoveEvent","curX","curY","movedAgain","swipeOutBounded","tapTolerance","cancelTouchHoldTimer","now","throttle","touchCancelEvent","removeTouchClass","touchEndEvent","touchholdEnd","direction","distanceY","distanceX","mouseEnterEvent","mouseLeaveEvent","eventType","callbacks","param","i","binding","className","buildTouchObj","extraOptions","touchObj","passiveOpt","_m","_e","dialog","useDialog","attributes","computed","omit","onCancel","_a","_c","_b","onConfirm","DEFAULT_DIALOGS_PLUGIN_NODE_ID","DialogsPlugin","options","mountNodeId","mountNode","vNode","createVNode","h","Dialogs","render","index","i18n","storage","staticPath","images","googleMapsApiKey","menus","modals","toasts","dialogs","Vue3TouchEvents","locale","overridePersistentStorage","MenusPlugin","ModalsPlugin","ToastsPlugin"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/useDialog.d.ts
CHANGED
|
@@ -44,6 +44,10 @@ declare interface DialogProps {
|
|
|
44
44
|
* Confirm button text.
|
|
45
45
|
*/
|
|
46
46
|
confirmText?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Callback function when the confirm button is clicked.
|
|
49
|
+
*/
|
|
50
|
+
onConfirm?: (event: Event) => Promise<void> | void;
|
|
47
51
|
/**
|
|
48
52
|
* Treats it like an Alert Dialog, with only the confirmation button showing.
|
|
49
53
|
*
|