nuxt-glorious 1.2.2-7 → 1.2.2-9
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.
Potentially problematic release.
This version of nuxt-glorious might be problematic. Click here for more details.
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/dist/runtime/assets/style/components/input.css +10 -0
- package/dist/runtime/assets/style/components/modal.css +3 -3
- package/dist/runtime/components/G/Input.vue +166 -98
- package/dist/runtime/components/G/Modal.vue +13 -4
- package/dist/runtime/plugins/InputComponent.mjs +12 -0
- package/dist/runtime/plugins/module.d.ts +4 -0
- package/dist/runtime/plugins/module.mjs +94 -0
- package/package.json +1 -1
- package/dist/runtime/plugins/Drawer.mjs +0 -35
- /package/dist/runtime/plugins/{Drawer.d.ts → InputComponent.d.ts} +0 -0
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
@@ -70,7 +70,7 @@ const module = defineNuxtModule({
|
|
70
70
|
});
|
71
71
|
});
|
72
72
|
addPlugin(resolver.resolve("./runtime/plugins/glorious-app-setting"));
|
73
|
-
addPlugin(resolver.resolve("./runtime/plugins/
|
73
|
+
addPlugin(resolver.resolve("./runtime/plugins/InputComponent"));
|
74
74
|
addRouteMiddleware({
|
75
75
|
name: "g-auth-strategy",
|
76
76
|
path: resolver.resolve("./runtime/middlewares/AuthStrategy"),
|
@@ -88,4 +88,14 @@
|
|
88
88
|
}
|
89
89
|
.glorious-input-tag > div {
|
90
90
|
@apply bg-green-500 px-1 rounded text-white flex items-center gap-2 cursor-pointer;
|
91
|
+
}
|
92
|
+
|
93
|
+
.glorious-input-options {
|
94
|
+
@apply p-1 shadow-lg absolute w-full bg-white rounded border-gray-200 border max-h-[200px] overflow-y-auto;
|
95
|
+
}
|
96
|
+
.glorious-input-options > div {
|
97
|
+
@apply py-2 hover:bg-gray-100 cursor-pointer rounded px-2;
|
98
|
+
}
|
99
|
+
.glorious-input-options.size-md {
|
100
|
+
@apply top-11;
|
91
101
|
}
|
@@ -31,11 +31,11 @@
|
|
31
31
|
.glorious-scaffold-modal.close {
|
32
32
|
@apply hidden;
|
33
33
|
}
|
34
|
-
.glorious-scaffold-modal.open {
|
34
|
+
.glorious-scaffold-modal.open.animation {
|
35
35
|
animation: animationMobile 0.3s normal forwards;
|
36
36
|
}
|
37
37
|
@screen md {
|
38
|
-
.glorious-scaffold-modal.open {
|
38
|
+
.glorious-scaffold-modal.open.animation {
|
39
39
|
animation: animationOpacity 0.3s normal forwards;
|
40
40
|
}
|
41
41
|
}
|
@@ -61,6 +61,6 @@
|
|
61
61
|
transform: translateY(0);
|
62
62
|
}
|
63
63
|
100% {
|
64
|
-
transform: translateY(
|
64
|
+
transform: translateY(0);
|
65
65
|
}
|
66
66
|
}
|
@@ -1,40 +1,40 @@
|
|
1
1
|
<script setup lang="ts">
|
2
|
-
import { computed, ref, watch } from
|
3
|
-
import { useGloriousCore } from
|
2
|
+
import { computed, ref, watch } from '#imports'
|
3
|
+
import { useGloriousCore } from '../../composables/useGloriousCore'
|
4
4
|
const props = defineProps({
|
5
5
|
modelValue: {
|
6
6
|
required: false,
|
7
|
-
default:
|
7
|
+
default: '',
|
8
8
|
type: [String, Array<String>, Number],
|
9
9
|
},
|
10
10
|
color: {
|
11
11
|
required: false,
|
12
|
-
default:
|
13
|
-
type: String as () =>
|
12
|
+
default: 'primary',
|
13
|
+
type: String as () => 'orange' | 'blue' | 'gray' | 'red' | 'primary',
|
14
14
|
},
|
15
15
|
placeholder: {
|
16
16
|
required: false,
|
17
|
-
default:
|
17
|
+
default: '',
|
18
18
|
type: String,
|
19
19
|
},
|
20
20
|
title: {
|
21
21
|
required: false,
|
22
|
-
default:
|
22
|
+
default: '',
|
23
23
|
type: String,
|
24
24
|
},
|
25
25
|
size: {
|
26
26
|
required: false,
|
27
|
-
default:
|
28
|
-
type: String as () =>
|
27
|
+
default: 'md',
|
28
|
+
type: String as () => 'xl' | 'lg' | 'md' | 'sm' | 'xsm',
|
29
29
|
},
|
30
30
|
error: {
|
31
31
|
required: false,
|
32
|
-
default:
|
32
|
+
default: '|',
|
33
33
|
type: String,
|
34
34
|
},
|
35
35
|
icon: {
|
36
36
|
required: false,
|
37
|
-
default:
|
37
|
+
default: '',
|
38
38
|
type: String,
|
39
39
|
},
|
40
40
|
disabled: {
|
@@ -44,139 +44,177 @@ const props = defineProps({
|
|
44
44
|
},
|
45
45
|
type: {
|
46
46
|
required: false,
|
47
|
-
default:
|
47
|
+
default: 'text',
|
48
48
|
type: String as () =>
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
49
|
+
| 'button'
|
50
|
+
| 'checkbox'
|
51
|
+
| 'color'
|
52
|
+
| 'date'
|
53
|
+
| 'email'
|
54
|
+
| 'file'
|
55
|
+
| 'hidden'
|
56
|
+
| 'password'
|
57
|
+
| 'radio'
|
58
|
+
| 'range'
|
59
|
+
| 'tel'
|
60
|
+
| 'text'
|
61
|
+
| 'url'
|
62
|
+
| 'number',
|
63
63
|
},
|
64
64
|
autocomplete: {
|
65
65
|
required: false,
|
66
|
-
default:
|
67
|
-
type: String as () =>
|
68
|
-
},
|
69
|
-
mode: {
|
70
|
-
required: false,
|
71
|
-
default: "normal",
|
72
|
-
type: String as () => "normal" | "tag",
|
66
|
+
default: 'off',
|
67
|
+
type: String as () => 'off' | 'on' | 'new-password',
|
73
68
|
},
|
74
69
|
display: {
|
75
70
|
required: false,
|
76
|
-
default:
|
77
|
-
type: String as () =>
|
71
|
+
default: '',
|
72
|
+
type: String as () => 'price',
|
78
73
|
},
|
79
74
|
inputMode: {
|
80
75
|
required: false,
|
81
|
-
default:
|
76
|
+
default: 'text',
|
82
77
|
type: String as () =>
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
78
|
+
| 'text'
|
79
|
+
| 'none'
|
80
|
+
| 'decimal'
|
81
|
+
| 'numeric'
|
82
|
+
| 'tel'
|
83
|
+
| 'search'
|
84
|
+
| 'email'
|
85
|
+
| 'url',
|
86
|
+
},
|
87
|
+
mode: {
|
88
|
+
required: false,
|
89
|
+
default: 'normal',
|
90
|
+
type: String as () => 'normal' | 'tag',
|
91
91
|
},
|
92
|
-
|
92
|
+
tagLockOption: {
|
93
|
+
required: false,
|
94
|
+
default: false,
|
95
|
+
type: Boolean,
|
96
|
+
},
|
97
|
+
options: {
|
98
|
+
required: false,
|
99
|
+
default: [],
|
100
|
+
type: Array<object>,
|
101
|
+
},
|
102
|
+
loadingOptions: {
|
103
|
+
required: false,
|
104
|
+
default: false,
|
105
|
+
type: Boolean,
|
106
|
+
},
|
107
|
+
})
|
93
108
|
|
94
|
-
const inputValue: any = ref(null)
|
109
|
+
const inputValue: any = ref(null)
|
95
110
|
|
96
|
-
const emits = defineEmits([
|
111
|
+
const emits = defineEmits(['update:modelValue'])
|
97
112
|
|
98
113
|
watch(
|
99
114
|
() => inputValue.value,
|
100
115
|
() => {
|
101
|
-
if (props.mode ===
|
116
|
+
if (props.mode === 'tag') return
|
102
117
|
|
103
118
|
switch (props.display) {
|
104
|
-
case
|
119
|
+
case 'price':
|
105
120
|
inputValue.value = useGloriousCore.numbersWithSeperateSamePrice(
|
106
121
|
inputValue.value
|
107
|
-
)
|
122
|
+
)
|
108
123
|
emits(
|
109
|
-
|
110
|
-
inputValue.value.toString().replaceAll(
|
111
|
-
)
|
112
|
-
break
|
124
|
+
'update:modelValue',
|
125
|
+
inputValue.value.toString().replaceAll(',', '')
|
126
|
+
)
|
127
|
+
break
|
113
128
|
default:
|
114
|
-
emits(
|
115
|
-
break
|
129
|
+
emits('update:modelValue', inputValue.value)
|
130
|
+
break
|
116
131
|
}
|
117
132
|
}
|
118
|
-
)
|
133
|
+
)
|
119
134
|
|
120
135
|
const computeIconSize = computed(() => {
|
121
|
-
let iconSize = 0
|
136
|
+
let iconSize = 0
|
122
137
|
|
123
138
|
switch (props.size) {
|
124
|
-
case
|
125
|
-
iconSize = 30
|
126
|
-
break
|
127
|
-
case
|
128
|
-
iconSize = 27
|
129
|
-
break
|
130
|
-
case
|
131
|
-
iconSize = 25
|
132
|
-
break
|
133
|
-
case
|
134
|
-
iconSize = 23
|
135
|
-
break
|
136
|
-
case
|
137
|
-
iconSize = 20
|
138
|
-
break
|
139
|
+
case 'xl':
|
140
|
+
iconSize = 30
|
141
|
+
break
|
142
|
+
case 'lg':
|
143
|
+
iconSize = 27
|
144
|
+
break
|
145
|
+
case 'md':
|
146
|
+
iconSize = 25
|
147
|
+
break
|
148
|
+
case 'sm':
|
149
|
+
iconSize = 23
|
150
|
+
break
|
151
|
+
case 'xsm':
|
152
|
+
iconSize = 20
|
153
|
+
break
|
139
154
|
default:
|
140
|
-
iconSize = 30
|
141
|
-
break
|
155
|
+
iconSize = 30
|
156
|
+
break
|
142
157
|
}
|
143
158
|
|
144
|
-
return iconSize
|
145
|
-
})
|
159
|
+
return iconSize
|
160
|
+
})
|
146
161
|
|
147
162
|
// ------------------------------------------------------------------------------------------------ TAG
|
148
|
-
const tags: any = ref([])
|
163
|
+
const tags: any = ref([])
|
149
164
|
|
150
165
|
const addTag = (event: any) => {
|
151
|
-
if (
|
166
|
+
if (props.tagLockOption) return
|
167
|
+
|
168
|
+
if (tags.value.length === 0) tags.value = []
|
169
|
+
|
170
|
+
if (props.mode !== 'tag') return
|
171
|
+
const value: any = event.target.value
|
172
|
+
tags.value.push(value)
|
173
|
+
emits('update:modelValue', tags.value)
|
174
|
+
inputValue.value = ''
|
175
|
+
}
|
176
|
+
|
177
|
+
const addTagViaOption = (option: any, event: any) => {
|
178
|
+
// event.stopPropagation() if want not close with window
|
179
|
+
if (tags.value.length === 0) tags.value = []
|
180
|
+
|
181
|
+
const value: any = option
|
182
|
+
tags.value.push(value)
|
183
|
+
emits('update:modelValue', tags.value)
|
184
|
+
inputValue.value = ''
|
185
|
+
}
|
152
186
|
|
153
|
-
if (props.mode !== "tag") return;
|
154
|
-
const value: any = event.target.value;
|
155
|
-
tags.value.push(value);
|
156
|
-
emits("update:modelValue", tags.value);
|
157
|
-
inputValue.value = "";
|
158
|
-
};
|
159
187
|
const removeTag = (tag: string) => {
|
160
|
-
tags.value = tags.value.filter((item: any) => item !== tag)
|
161
|
-
emits(
|
162
|
-
}
|
188
|
+
tags.value = tags.value.filter((item: any) => item !== tag)
|
189
|
+
emits('update:modelValue', tags.value)
|
190
|
+
}
|
163
191
|
|
164
192
|
// -------------------------------------- init value
|
165
193
|
const initValue = () => {
|
166
|
-
if (props.mode ===
|
167
|
-
tags.value = props.modelValue
|
168
|
-
return
|
194
|
+
if (props.mode === 'tag') {
|
195
|
+
tags.value = props.modelValue
|
196
|
+
return
|
169
197
|
}
|
170
198
|
|
171
|
-
inputValue.value = props.modelValue
|
172
|
-
}
|
173
|
-
initValue()
|
199
|
+
inputValue.value = props.modelValue
|
200
|
+
}
|
201
|
+
initValue()
|
174
202
|
watch(
|
175
203
|
() => props.modelValue,
|
176
204
|
() => initValue()
|
177
|
-
)
|
205
|
+
)
|
206
|
+
|
207
|
+
const typeInput = ref(props.type)
|
208
|
+
|
209
|
+
const inputClicked = (event: any) => {
|
210
|
+
if (props.mode === 'tag' && props.options) {
|
211
|
+
console.log(event.currentTarget.parentElement.children)
|
178
212
|
|
179
|
-
const
|
213
|
+
const optionsElement = event.currentTarget.parentElement.children[1]
|
214
|
+
if (optionsElement.classList.contains('hidden'))
|
215
|
+
optionsElement.classList.remove('hidden')
|
216
|
+
}
|
217
|
+
}
|
180
218
|
</script>
|
181
219
|
|
182
220
|
<template>
|
@@ -191,7 +229,7 @@ const typeInput = ref(props.type);
|
|
191
229
|
v-model="inputValue"
|
192
230
|
:inputmode="props.inputMode"
|
193
231
|
:autocomplete="props.autocomplete"
|
194
|
-
class="w-full"
|
232
|
+
class="w-full glorious-input-field"
|
195
233
|
:class="[
|
196
234
|
props.size,
|
197
235
|
`glorious-input-${props.color}`,
|
@@ -201,6 +239,7 @@ const typeInput = ref(props.type);
|
|
201
239
|
:disabled="props.disabled"
|
202
240
|
:type="typeInput"
|
203
241
|
@keyup.enter="addTag($event)"
|
242
|
+
@click="inputClicked($event)"
|
204
243
|
/>
|
205
244
|
<GIcon
|
206
245
|
v-if="props.type === 'password' && typeInput === 'password'"
|
@@ -216,10 +255,29 @@ const typeInput = ref(props.type);
|
|
216
255
|
name="glorious-eye-off-fill"
|
217
256
|
@click="typeInput = 'password'"
|
218
257
|
></GIcon>
|
258
|
+
|
259
|
+
<div
|
260
|
+
v-if="props.options.length > 0"
|
261
|
+
class="glorious-input-options"
|
262
|
+
:class="[`size-${props.size}`]"
|
263
|
+
>
|
264
|
+
<div v-if="props.loadingOptions" class="flex justify-center">
|
265
|
+
<GLoading color="green" />
|
266
|
+
</div>
|
267
|
+
<template v-else>
|
268
|
+
<div
|
269
|
+
v-for="(option, index) in props.options"
|
270
|
+
:key="index"
|
271
|
+
@click="addTagViaOption(option, $event)"
|
272
|
+
>
|
273
|
+
{{ option.text }}
|
274
|
+
</div>
|
275
|
+
</template>
|
276
|
+
</div>
|
219
277
|
</div>
|
220
278
|
<div v-if="tags.length !== 0" class="glorious-input-tag">
|
221
279
|
<div v-for="(item, index) in tags" :key="index">
|
222
|
-
{{ item }}
|
280
|
+
{{ typeof item === 'object' ? item.text : item }}
|
223
281
|
<GIcon
|
224
282
|
name="glorious-x"
|
225
283
|
:size="10"
|
@@ -331,4 +389,14 @@ const typeInput = ref(props.type);
|
|
331
389
|
.glorious-input-tag > div {
|
332
390
|
@apply bg-green-500 px-1 rounded text-white flex items-center gap-2 cursor-pointer;
|
333
391
|
}
|
392
|
+
|
393
|
+
.glorious-input-options {
|
394
|
+
@apply p-1 shadow-lg absolute w-full bg-white rounded border-gray-200 border max-h-[200px] overflow-y-auto;
|
395
|
+
}
|
396
|
+
.glorious-input-options > div {
|
397
|
+
@apply py-2 hover:bg-gray-100 cursor-pointer rounded px-2;
|
398
|
+
}
|
399
|
+
.glorious-input-options.size-md {
|
400
|
+
@apply top-11;
|
401
|
+
}
|
334
402
|
</style>
|
@@ -67,12 +67,21 @@ const addBlurBackground = (): void => {
|
|
67
67
|
watch(
|
68
68
|
() => props.modelValue,
|
69
69
|
() => {
|
70
|
+
const modals = document.querySelectorAll(".glorious-scaffold-modal");
|
70
71
|
if (props.modelValue && props.blur) {
|
71
72
|
addBlurBackground();
|
73
|
+
setTimeout(() => {
|
74
|
+
modals.forEach((el: any) => {
|
75
|
+
el.classList.remove("animation");
|
76
|
+
});
|
77
|
+
}, 500);
|
72
78
|
} else {
|
73
79
|
const blur: any = document.querySelector(
|
74
80
|
".glorious-scaffold-modal-bg-blur"
|
75
81
|
);
|
82
|
+
modals.forEach((el: any) => {
|
83
|
+
el.classList.add("animation");
|
84
|
+
});
|
76
85
|
if (blur !== null) blur.remove();
|
77
86
|
}
|
78
87
|
}
|
@@ -81,7 +90,7 @@ watch(
|
|
81
90
|
|
82
91
|
<template>
|
83
92
|
<div
|
84
|
-
class="glorious-scaffold-modal"
|
93
|
+
class="glorious-scaffold-modal animation"
|
85
94
|
:class="[props.modelValue ? 'open' : 'close', `size-${props.size}`]"
|
86
95
|
>
|
87
96
|
<!-- header -->
|
@@ -153,11 +162,11 @@ watch(
|
|
153
162
|
.glorious-scaffold-modal.close {
|
154
163
|
@apply hidden;
|
155
164
|
}
|
156
|
-
.glorious-scaffold-modal.open {
|
165
|
+
.glorious-scaffold-modal.open.animation {
|
157
166
|
animation: animationMobile 0.3s normal forwards;
|
158
167
|
}
|
159
168
|
@screen md {
|
160
|
-
.glorious-scaffold-modal.open {
|
169
|
+
.glorious-scaffold-modal.open.animation {
|
161
170
|
animation: animationOpacity 0.3s normal forwards;
|
162
171
|
}
|
163
172
|
}
|
@@ -183,7 +192,7 @@ watch(
|
|
183
192
|
transform: translateY(0);
|
184
193
|
}
|
185
194
|
100% {
|
186
|
-
transform: translateY(
|
195
|
+
transform: translateY(0);
|
187
196
|
}
|
188
197
|
}
|
189
198
|
</style>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
export default defineNuxtPlugin((nuxtApp) => {
|
2
|
+
nuxtApp.hook("app:beforeMount", () => {
|
3
|
+
window.addEventListener("click", (event) => {
|
4
|
+
if (!event.target.matches(".glorious-input-field")) {
|
5
|
+
const options = document.querySelectorAll(".glorious-input-options");
|
6
|
+
options.forEach((el) => {
|
7
|
+
el.classList.add("hidden");
|
8
|
+
});
|
9
|
+
}
|
10
|
+
});
|
11
|
+
});
|
12
|
+
});
|
@@ -0,0 +1,94 @@
|
|
1
|
+
import {
|
2
|
+
defineNuxtModule,
|
3
|
+
addPlugin,
|
4
|
+
addComponentsDir,
|
5
|
+
createResolver,
|
6
|
+
addImportsDir,
|
7
|
+
installModule,
|
8
|
+
addRouteMiddleware
|
9
|
+
} from "@nuxt/kit";
|
10
|
+
import defu from "defu";
|
11
|
+
export default defineNuxtModule({
|
12
|
+
meta: {
|
13
|
+
name: "glorious",
|
14
|
+
configKey: "glorious"
|
15
|
+
},
|
16
|
+
// Default configuration options of the Nuxt module
|
17
|
+
defaults: {},
|
18
|
+
async setup(options, nuxt) {
|
19
|
+
const resolver = createResolver(import.meta.url);
|
20
|
+
nuxt.options.runtimeConfig.public.glorious = defu(nuxt.options.glorious, {
|
21
|
+
fetch: {
|
22
|
+
baseURL: "/",
|
23
|
+
credentials: "same-origin"
|
24
|
+
},
|
25
|
+
seo: {
|
26
|
+
suffix: "",
|
27
|
+
title: "",
|
28
|
+
description: ""
|
29
|
+
},
|
30
|
+
auth: {
|
31
|
+
cookie: {
|
32
|
+
name: "ga-token",
|
33
|
+
httpOnly: false
|
34
|
+
},
|
35
|
+
redirect: {
|
36
|
+
logout: "/login",
|
37
|
+
login: "/login"
|
38
|
+
},
|
39
|
+
strategy: {
|
40
|
+
provider: "",
|
41
|
+
//[laravel-passport]
|
42
|
+
endpoints: {
|
43
|
+
userInfo: {
|
44
|
+
url: "/",
|
45
|
+
method: "GET",
|
46
|
+
pick: ""
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
51
|
+
});
|
52
|
+
await installModule("@nuxtjs/tailwindcss", {
|
53
|
+
// module configuration
|
54
|
+
exposeConfig: true,
|
55
|
+
config: {
|
56
|
+
darkMode: "class",
|
57
|
+
content: {
|
58
|
+
files: [
|
59
|
+
resolver.resolve("./runtime/components/G/**/*.{vue,mjs,ts}"),
|
60
|
+
resolver.resolve("./runtime/*.{mjs,js,ts}")
|
61
|
+
]
|
62
|
+
}
|
63
|
+
}
|
64
|
+
});
|
65
|
+
await installModule("@pinia/nuxt");
|
66
|
+
addImportsDir(resolver.resolve("runtime/composables"));
|
67
|
+
addImportsDir(resolver.resolve("runtime/stores"));
|
68
|
+
addImportsDir(resolver.resolve("runtime/middlewares"));
|
69
|
+
addComponentsDir({
|
70
|
+
path: resolver.resolve("runtime/components"),
|
71
|
+
global: true,
|
72
|
+
watch: false
|
73
|
+
});
|
74
|
+
nuxt.hook("nitro:config", async (nitro) => {
|
75
|
+
nitro.publicAssets.push({
|
76
|
+
dir: resolver.resolve("./runtime/assets")
|
77
|
+
});
|
78
|
+
});
|
79
|
+
addPlugin(resolver.resolve("./runtime/plugins/glorious-app-setting"));
|
80
|
+
addPlugin({
|
81
|
+
src: resolver.resolve("./runtime/plugins/InputComponent"),
|
82
|
+
mode: "client"
|
83
|
+
});
|
84
|
+
addRouteMiddleware({
|
85
|
+
name: "g-auth-strategy",
|
86
|
+
path: resolver.resolve("./runtime/middlewares/AuthStrategy"),
|
87
|
+
global: true
|
88
|
+
});
|
89
|
+
addRouteMiddleware({
|
90
|
+
name: "g-auth",
|
91
|
+
path: resolver.resolve("./runtime/middlewares/Auth")
|
92
|
+
});
|
93
|
+
}
|
94
|
+
});
|
package/package.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"version": "1.2.2-
|
2
|
+
"version": "1.2.2-9",
|
3
3
|
"name": "nuxt-glorious",
|
4
4
|
"description": "This package provides many things needed by a project, including server requests and authentication, SEO and other requirements of a project.",
|
5
5
|
"repository": "sajadhzj/nuxt-glorious",
|
@@ -1,35 +0,0 @@
|
|
1
|
-
import { defineNuxtPlugin } from "#app";
|
2
|
-
export default defineNuxtPlugin(() => {
|
3
|
-
const methods = {
|
4
|
-
addBlurBackground: (key) => {
|
5
|
-
const backgroundBlur = document.createElement("div");
|
6
|
-
backgroundBlur.classList.add("bg-blur-drawer");
|
7
|
-
const nuxt = document.getElementById("__nuxt");
|
8
|
-
nuxt.appendChild(backgroundBlur);
|
9
|
-
backgroundBlur.addEventListener("click", () => {
|
10
|
-
const componentId = document.getElementById(key);
|
11
|
-
componentId.classList.replace("open", "close");
|
12
|
-
backgroundBlur.remove();
|
13
|
-
});
|
14
|
-
},
|
15
|
-
drawer: {
|
16
|
-
provide: (key) => {
|
17
|
-
let drawer = document.getElementById(key);
|
18
|
-
if (drawer.classList.contains("close")) {
|
19
|
-
drawer.classList.remove("hidden");
|
20
|
-
drawer.classList.replace("close", "open");
|
21
|
-
methods.addBlurBackground(key);
|
22
|
-
} else {
|
23
|
-
drawer.classList.replace("open", "close");
|
24
|
-
const bgBlur = document.querySelector(".bg-blur-drawer");
|
25
|
-
bgBlur?.remove();
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
};
|
30
|
-
return {
|
31
|
-
provide: {
|
32
|
-
drawer: (key = "drawer") => methods.drawer.provide(key)
|
33
|
-
}
|
34
|
-
};
|
35
|
-
});
|
File without changes
|