@mixd-id/web-scaffold 0.1.230406196 → 0.1.230406198
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/package.json +1 -1
- package/src/components/Ahref.vue +1 -2
- package/src/components/Article.vue +1 -8
- package/src/components/Block.vue +1 -8
- package/src/components/Box.vue +0 -7
- package/src/components/Button.vue +11 -10
- package/src/components/Carousel.vue +4 -8
- package/src/components/Flex.vue +1 -12
- package/src/components/Grid.vue +1 -8
- package/src/components/Image.vue +13 -8
- package/src/components/Link.vue +24 -8
- package/src/components/Modal.vue +8 -1
- package/src/index.js +3 -0
- package/src/mixin/component.js +11 -0
- package/src/widgets/ComponentSetting.vue +19 -1
- package/src/widgets/ContactForm.vue +12 -17
- package/src/widgets/EmbeddedVideo.vue +1 -8
- package/src/widgets/FAQ.vue +1 -8
- package/src/widgets/FeatureList.vue +3 -8
- package/src/widgets/Header1.vue +6 -15
- package/src/widgets/Header1Setting.vue +75 -0
- package/src/widgets/Header2Setting.vue +277 -0
- package/src/widgets/HeaderSetting.vue +5 -197
- package/src/widgets/IconList.vue +1 -8
- package/src/widgets/ImageSetting.vue +59 -36
- package/src/widgets/LinkSetting.vue +49 -11
- package/src/widgets/ModalSetting.vue +94 -0
- package/src/widgets/Review.vue +5 -8
- package/src/widgets/Share.vue +0 -7
- package/src/widgets/StyleSetting.vue +49 -4
- package/src/widgets/WebComponentSelector.vue +23 -5
- package/src/widgets/WebPageBuilder.vue +80 -37
- package/src/widgets/WebPageSelector.vue +12 -8
- package/src/widgets/WebTemplateCreator.vue +16 -4
- package/tailwind.config.js +42 -36
package/package.json
CHANGED
package/src/components/Ahref.vue
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<a v-if="isExternalLink" :href="href" :target="target" :class="compClass">
|
|
2
|
+
<a v-if="isExternalLink" :href="href" :target="target" :class="compClass" :style="computedStyle">
|
|
3
3
|
<slot>{{ text }}</slot>
|
|
4
4
|
</a>
|
|
5
5
|
<router-link v-else :to="href" :target="target" :class="compClass">
|
|
@@ -59,7 +59,6 @@ export default {
|
|
|
59
59
|
@apply relative flex items-center justify-center;
|
|
60
60
|
@apply whitespace-nowrap text-ellipsis overflow-hidden;
|
|
61
61
|
@apply rounded-lg;
|
|
62
|
-
background-image: v-bind(bgImages[0]);
|
|
63
62
|
}
|
|
64
63
|
.button>*:first-child{
|
|
65
64
|
@apply flex items-center justify-center
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.comp">
|
|
2
|
+
<div :class="$style.comp" :style="computedStyle">
|
|
3
3
|
<article ref="article" :class="$style.article"
|
|
4
4
|
v-html="computedHtml"
|
|
5
5
|
:contenteditable="editMode === 1"
|
|
@@ -352,7 +352,6 @@ export default{
|
|
|
352
352
|
|
|
353
353
|
.comp{
|
|
354
354
|
@apply relative;
|
|
355
|
-
background-image: v-bind(bgImages[0]);
|
|
356
355
|
}
|
|
357
356
|
|
|
358
357
|
.article{
|
|
@@ -391,10 +390,4 @@ export default{
|
|
|
391
390
|
@apply break-words;
|
|
392
391
|
}
|
|
393
392
|
|
|
394
|
-
@media screen(md){
|
|
395
|
-
.comp{
|
|
396
|
-
background-image: v-bind(bgImages[1]);
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
|
|
400
393
|
</style>
|
package/src/components/Block.vue
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.comp">
|
|
2
|
+
<div :class="$style.comp" :style="computedStyle">
|
|
3
3
|
<component v-for="item in items"
|
|
4
4
|
:is="item.type"
|
|
5
5
|
:="item" />
|
|
@@ -26,13 +26,6 @@ export default{
|
|
|
26
26
|
|
|
27
27
|
.comp{
|
|
28
28
|
@apply block;
|
|
29
|
-
background-image: v-bind(bgImages[0]);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
@media screen(md){
|
|
33
|
-
.comp{
|
|
34
|
-
background-image: v-bind(bgImages[1]);
|
|
35
|
-
}
|
|
36
29
|
}
|
|
37
30
|
|
|
38
31
|
</style>
|
package/src/components/Box.vue
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<button :class="compClass" :disabled="isDisabled" @click="onClick">
|
|
2
|
+
<button :class="compClass" :disabled="isDisabled" @click="onClick" :style="computedStyle">
|
|
3
3
|
<slot>{{ text }}</slot>
|
|
4
4
|
<div v-if="isLoading" :class="$style.loadingPane">
|
|
5
5
|
<svg :class="$style.spinner" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
|
|
@@ -88,7 +88,7 @@ export default{
|
|
|
88
88
|
this.$el.focus()
|
|
89
89
|
},
|
|
90
90
|
|
|
91
|
-
setState(state){
|
|
91
|
+
setState(state, percentage){
|
|
92
92
|
this._state = state
|
|
93
93
|
},
|
|
94
94
|
|
|
@@ -107,7 +107,12 @@ export default{
|
|
|
107
107
|
break
|
|
108
108
|
|
|
109
109
|
default:
|
|
110
|
-
|
|
110
|
+
if(this.target.indexOf('://') >= 0){
|
|
111
|
+
window.location = this.target
|
|
112
|
+
}
|
|
113
|
+
else{
|
|
114
|
+
this.$router.push(this.target)
|
|
115
|
+
}
|
|
111
116
|
break
|
|
112
117
|
}
|
|
113
118
|
}
|
|
@@ -136,7 +141,6 @@ export default{
|
|
|
136
141
|
@apply relative flex items-center justify-center;
|
|
137
142
|
@apply whitespace-nowrap text-ellipsis overflow-hidden;
|
|
138
143
|
@apply rounded-lg;
|
|
139
|
-
background-image: v-bind(bgImages[0]);
|
|
140
144
|
}
|
|
141
145
|
.button>*:first-child{
|
|
142
146
|
@apply flex items-center justify-center
|
|
@@ -279,6 +283,9 @@ export default{
|
|
|
279
283
|
.loadingPane{
|
|
280
284
|
@apply absolute left-0 top-0 right-0 bottom-0 flex items-center justify-center pl-1;
|
|
281
285
|
}
|
|
286
|
+
.loading{
|
|
287
|
+
color: transparent;
|
|
288
|
+
}
|
|
282
289
|
.loading>*:first-child{
|
|
283
290
|
@apply opacity-0
|
|
284
291
|
}
|
|
@@ -298,10 +305,4 @@ export default{
|
|
|
298
305
|
@apply animate-spin h-5 w-5;
|
|
299
306
|
}
|
|
300
307
|
|
|
301
|
-
@media screen(md){
|
|
302
|
-
.button{
|
|
303
|
-
background-image: v-bind(bgImages[1]);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
308
|
</style>
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.comp"
|
|
2
|
+
<div :class="$style.comp"
|
|
3
|
+
@mousedown="mouseDown"
|
|
4
|
+
@touchstart.passive="mouseDown"
|
|
5
|
+
:style="computedStyle">
|
|
3
6
|
|
|
4
7
|
<div ref="inner" :class="computedContainerClass">
|
|
5
8
|
<div v-for="item in items" :class="computedItemClass">
|
|
@@ -315,7 +318,6 @@ export default{
|
|
|
315
318
|
white-space: nowrap;
|
|
316
319
|
overflow: hidden;
|
|
317
320
|
position: relative;
|
|
318
|
-
background-image: v-bind(bgImages[0]);
|
|
319
321
|
}
|
|
320
322
|
|
|
321
323
|
.comp img{
|
|
@@ -375,10 +377,4 @@ export default{
|
|
|
375
377
|
-webkit-overflow-scrolling: touch;
|
|
376
378
|
}
|
|
377
379
|
|
|
378
|
-
@media screen(md){
|
|
379
|
-
.comp{
|
|
380
|
-
background-image: v-bind(bgImages[1]);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
|
|
384
380
|
</style>
|
package/src/components/Flex.vue
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.Flex">
|
|
2
|
+
<div :class="$style.Flex" :style="computedStyle">
|
|
3
3
|
|
|
4
4
|
<component v-for="(item, idx) in items"
|
|
5
5
|
:is="item.type"
|
|
@@ -23,10 +23,6 @@ export default{
|
|
|
23
23
|
columnType: Array,
|
|
24
24
|
},
|
|
25
25
|
|
|
26
|
-
methods: {
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
26
|
}
|
|
31
27
|
|
|
32
28
|
</script>
|
|
@@ -35,12 +31,5 @@ export default{
|
|
|
35
31
|
|
|
36
32
|
.Flex{
|
|
37
33
|
@apply flex;
|
|
38
|
-
background-image: v-bind(bgImages[0]);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
@media screen(md){
|
|
42
|
-
.Flex{
|
|
43
|
-
background-image: v-bind(bgImages[1]);
|
|
44
|
-
}
|
|
45
34
|
}
|
|
46
35
|
</style>
|
package/src/components/Grid.vue
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.comp">
|
|
2
|
+
<div :class="$style.comp" :style="computedStyle">
|
|
3
3
|
|
|
4
4
|
<component v-for="item in items"
|
|
5
5
|
:is="item.type"
|
|
@@ -28,13 +28,6 @@ export default{
|
|
|
28
28
|
|
|
29
29
|
.comp{
|
|
30
30
|
@apply grid w-full;
|
|
31
|
-
background-image: v-bind(bgImages[0]);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
@media screen(md){
|
|
35
|
-
.comp{
|
|
36
|
-
background-image: v-bind(bgImages[1]);
|
|
37
|
-
}
|
|
38
31
|
}
|
|
39
32
|
|
|
40
33
|
</style>
|
package/src/components/Image.vue
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.comp"
|
|
2
|
+
<div :class="$style.comp"
|
|
3
|
+
@click="onClick"
|
|
4
|
+
@mousemove="onMouseMove"
|
|
5
|
+
@mousedown="onMouseDown"
|
|
6
|
+
:style="computedStyle">
|
|
3
7
|
|
|
4
8
|
<slot v-if="status === 0" name="empty" :instance="this"></slot>
|
|
5
9
|
|
|
@@ -9,6 +13,7 @@
|
|
|
9
13
|
</div>
|
|
10
14
|
</slot>
|
|
11
15
|
|
|
16
|
+
<div v-else-if="status === 2 && actualSrc.indexOf('<svg') >= 0" v-html="actualSrc"></div>
|
|
12
17
|
<img v-else-if="status === 2" :class="computedItemClass" :src="actualSrc" ref="img" />
|
|
13
18
|
|
|
14
19
|
<slot v-else-if="status === 3" name="error" :instance="this"></slot>
|
|
@@ -141,6 +146,10 @@ export default{
|
|
|
141
146
|
this.actualSrc = this.src
|
|
142
147
|
this.status = 2
|
|
143
148
|
}
|
|
149
|
+
else if(this.src.indexOf('<svg') >= 0){
|
|
150
|
+
this.actualSrc = this.src
|
|
151
|
+
this.status = 2
|
|
152
|
+
}
|
|
144
153
|
else{
|
|
145
154
|
const src = {}
|
|
146
155
|
|
|
@@ -227,6 +236,9 @@ export default{
|
|
|
227
236
|
reader.readAsDataURL(this.src)
|
|
228
237
|
this.status = 1
|
|
229
238
|
}
|
|
239
|
+
else{
|
|
240
|
+
this.status = 0
|
|
241
|
+
}
|
|
230
242
|
},
|
|
231
243
|
|
|
232
244
|
onClick(){
|
|
@@ -260,7 +272,6 @@ export default{
|
|
|
260
272
|
|
|
261
273
|
.comp{
|
|
262
274
|
@apply relative overflow-hidden;
|
|
263
|
-
background-image: v-bind(bgImages[0]);
|
|
264
275
|
}
|
|
265
276
|
|
|
266
277
|
.img{
|
|
@@ -280,10 +291,4 @@ export default{
|
|
|
280
291
|
@apply bg-text-200 animate-pulse;
|
|
281
292
|
}
|
|
282
293
|
|
|
283
|
-
@media screen and (min-width: 768px){
|
|
284
|
-
.comp{
|
|
285
|
-
background-image: v-bind(bgImages[1]);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
294
|
</style>
|
package/src/components/Link.vue
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<a v-if="mode === 'download' && items.length > 0"
|
|
3
|
-
:href="download.url"
|
|
4
|
-
:download="download.as ?? (download.originalName ?? '')">
|
|
3
|
+
:href="(download ?? {}).url"
|
|
4
|
+
:download="download.as ?? ((download ?? {}).originalName ?? '')">
|
|
5
5
|
<component v-for="(item, idx) in items"
|
|
6
6
|
:is="item.type"
|
|
7
7
|
:key="idx"
|
|
8
8
|
:="item" />
|
|
9
9
|
</a>
|
|
10
10
|
<a v-else-if="mode === 'download'"
|
|
11
|
-
:href="download.url"
|
|
12
|
-
:download="download.as ?? (download.originalName ?? '')">
|
|
11
|
+
:href="(download ?? {}).url"
|
|
12
|
+
:download="(download ?? {}).as ?? ((download ?? {}).originalName ?? '')">
|
|
13
13
|
{{ text }}
|
|
14
14
|
</a>
|
|
15
|
-
<a v-else-if="
|
|
15
|
+
<a v-else-if="mode === 'link' && items.length > 0" :target="target">
|
|
16
16
|
<component v-for="(item, idx) in items"
|
|
17
17
|
:is="item.type"
|
|
18
18
|
:key="idx"
|
|
19
19
|
:="item" />
|
|
20
20
|
</a>
|
|
21
|
-
<a v-else-if="
|
|
22
|
-
<router-link v-else-if="items.length > 0" :to="
|
|
21
|
+
<a v-else-if="mode === 'link'" :href="href" :target="target">{{ text }}</a>
|
|
22
|
+
<router-link v-else-if="items.length > 0" :to="to">
|
|
23
23
|
<component v-for="(item, idx) in items"
|
|
24
24
|
:is="item.type"
|
|
25
25
|
:key="idx"
|
|
26
26
|
:="item" />
|
|
27
27
|
</router-link>
|
|
28
|
-
<router-link v-else :to="
|
|
28
|
+
<router-link v-else :to="to">{{ text }}</router-link>
|
|
29
29
|
</template>
|
|
30
30
|
|
|
31
31
|
<script>
|
|
@@ -42,6 +42,10 @@ export default{
|
|
|
42
42
|
type: String,
|
|
43
43
|
default: ''
|
|
44
44
|
},
|
|
45
|
+
route: {
|
|
46
|
+
type: Object,
|
|
47
|
+
default: {}
|
|
48
|
+
},
|
|
45
49
|
mode: String,
|
|
46
50
|
target: String,
|
|
47
51
|
text: String,
|
|
@@ -54,6 +58,18 @@ export default{
|
|
|
54
58
|
return (this.href ?? '').indexOf('://') > -1;
|
|
55
59
|
},
|
|
56
60
|
|
|
61
|
+
to(){
|
|
62
|
+
const obj = {}
|
|
63
|
+
|
|
64
|
+
if(this.route.hash)
|
|
65
|
+
obj.hash = '#' + this.route.hash
|
|
66
|
+
|
|
67
|
+
if(this.route.path)
|
|
68
|
+
obj.path = this.route.path
|
|
69
|
+
|
|
70
|
+
return obj
|
|
71
|
+
}
|
|
72
|
+
|
|
57
73
|
}
|
|
58
74
|
|
|
59
75
|
}
|
package/src/components/Modal.vue
CHANGED
|
@@ -10,7 +10,12 @@
|
|
|
10
10
|
:class="computedClass"
|
|
11
11
|
:style="computedStyle"
|
|
12
12
|
:data-state="computedState ? 1 : 0">
|
|
13
|
-
<
|
|
13
|
+
<component v-if="Array.isArray(items) && items.length > 0"
|
|
14
|
+
v-for="(item, idx) in items"
|
|
15
|
+
:is="item.type"
|
|
16
|
+
:key="item.key"
|
|
17
|
+
:="item" />
|
|
18
|
+
<form v-else-if="useForm" @submit.prevent="$emit('submit')">
|
|
14
19
|
<div class="modal-head">
|
|
15
20
|
<slot name="head" :context="context"></slot>
|
|
16
21
|
</div>
|
|
@@ -91,6 +96,8 @@ export default{
|
|
|
91
96
|
},
|
|
92
97
|
|
|
93
98
|
mode: 'v-if', // v-if or v-show
|
|
99
|
+
|
|
100
|
+
items: Array,
|
|
94
101
|
},
|
|
95
102
|
|
|
96
103
|
methods: {
|
package/src/index.js
CHANGED
|
@@ -444,6 +444,8 @@ export default{
|
|
|
444
444
|
app.component('Header1', defineAsyncComponent(() => import("./widgets/Header1.vue")))
|
|
445
445
|
app.component('Header2', defineAsyncComponent(() => import("./widgets/Header2.vue")))
|
|
446
446
|
app.component('HeaderSetting', defineAsyncComponent(() => import("./widgets/HeaderSetting.vue")))
|
|
447
|
+
app.component('Header1Setting', defineAsyncComponent(() => import("./widgets/Header1Setting.vue")))
|
|
448
|
+
app.component('Header2Setting', defineAsyncComponent(() => import("./widgets/Header2Setting.vue")))
|
|
447
449
|
app.component('IconList', defineAsyncComponent(() => import("./widgets/IconList.vue")))
|
|
448
450
|
app.component('IconListSetting', defineAsyncComponent(() => import("./widgets/IconListSetting.vue")))
|
|
449
451
|
app.component('LinkSetting', defineAsyncComponent(() => import("./widgets/LinkSetting.vue")))
|
|
@@ -467,5 +469,6 @@ export default{
|
|
|
467
469
|
app.component('WebPageSelector', defineAsyncComponent(() => import("./widgets/WebPageSelector.vue")))
|
|
468
470
|
app.component('WebLayoutSelector', defineAsyncComponent(() => import("./widgets/WebLayoutSelector.vue")))
|
|
469
471
|
app.component('WebTemplateCreator', defineAsyncComponent(() => import("./widgets/WebTemplateCreator.vue")))
|
|
472
|
+
app.component('ModalSetting', defineAsyncComponent(() => import("./widgets/ModalSetting.vue")))
|
|
470
473
|
}
|
|
471
474
|
}
|
package/src/mixin/component.js
CHANGED
|
@@ -87,6 +87,17 @@ export const componentMixin = {
|
|
|
87
87
|
]
|
|
88
88
|
},
|
|
89
89
|
|
|
90
|
+
computedStyle(){
|
|
91
|
+
|
|
92
|
+
const obj = {}
|
|
93
|
+
|
|
94
|
+
if(this.bgImages && this.bgImages[0]){
|
|
95
|
+
obj['background-image'] = this.bgImages[0]
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return obj
|
|
99
|
+
},
|
|
100
|
+
|
|
90
101
|
pageData(){
|
|
91
102
|
return (this.page ?? {}).data
|
|
92
103
|
},
|
|
@@ -1460,10 +1460,16 @@ export default{
|
|
|
1460
1460
|
aspectRatio: [
|
|
1461
1461
|
[ 'Square', 'aspect-square' ],
|
|
1462
1462
|
[ '2/1', 'aspect-[2/1]' ],
|
|
1463
|
+
[ '3/1', 'aspect-[3/1]' ],
|
|
1463
1464
|
[ '4/1', 'aspect-[4/1]' ],
|
|
1464
1465
|
[ '4/3', 'aspect-[4/3]' ],
|
|
1466
|
+
[ '5/1', 'aspect-[5/1]' ],
|
|
1467
|
+
[ '6/1', 'aspect-[6/1]' ],
|
|
1468
|
+
[ '7/1', 'aspect-[7/1]' ],
|
|
1469
|
+
[ '8/1', 'aspect-[8/1]' ],
|
|
1465
1470
|
[ '8/3', 'aspect-[8/3]' ],
|
|
1466
1471
|
[ '8/5.6', 'aspect-[8/5.6]' ],
|
|
1472
|
+
[ '9/1', 'aspect-[9/1]' ],
|
|
1467
1473
|
[ 'Video (16:9)', 'aspect-video' ],
|
|
1468
1474
|
[ '1/2', 'aspect-[1/2]' ],
|
|
1469
1475
|
[ '2/3', 'aspect-[2/3]' ],
|
|
@@ -1681,10 +1687,17 @@ export default{
|
|
|
1681
1687
|
[ '6', 'h-6' ],
|
|
1682
1688
|
[ '7', 'h-7' ],
|
|
1683
1689
|
[ '8', 'h-8' ],
|
|
1690
|
+
[ '9', 'h-9' ],
|
|
1691
|
+
[ '10', 'h-10' ],
|
|
1692
|
+
[ '11', 'h-11' ],
|
|
1684
1693
|
[ '12', 'h-12' ],
|
|
1694
|
+
[ '14', 'h-14' ],
|
|
1685
1695
|
[ '16', 'h-16' ],
|
|
1686
1696
|
[ '20', 'h-20' ],
|
|
1687
|
-
[ '
|
|
1697
|
+
[ '24', 'h-24' ],
|
|
1698
|
+
[ '32', 'h-32' ],
|
|
1699
|
+
[ '36', 'h-36' ],
|
|
1700
|
+
[ '48', 'h-48' ],
|
|
1688
1701
|
[ '10vh', 'h-10vh' ],
|
|
1689
1702
|
[ '20vh', 'h-20vh' ],
|
|
1690
1703
|
[ '30vh', 'h-30vh' ],
|
|
@@ -1937,6 +1950,11 @@ export default{
|
|
|
1937
1950
|
[ '3', 'w-3' ],
|
|
1938
1951
|
[ '4', 'w-4' ],
|
|
1939
1952
|
[ '5', 'w-5' ],
|
|
1953
|
+
[ '6', 'w-6' ],
|
|
1954
|
+
[ '8', 'w-8' ],
|
|
1955
|
+
[ '10', 'w-10' ],
|
|
1956
|
+
[ '12', 'w-12' ],
|
|
1957
|
+
[ '16', 'w-16' ],
|
|
1940
1958
|
[ '20', 'w-20' ],
|
|
1941
1959
|
[ '24', 'w-24' ],
|
|
1942
1960
|
[ '28', 'w-28' ],
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.comp" v-if="state === 1">
|
|
2
|
+
<div :class="$style.comp" v-if="state === 1" :style="computedStyle">
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
<div v-if="title || description" class="flex flex-col gap-1">
|
|
5
|
+
<h2 v-if="title">{{ title }}</h2>
|
|
6
|
+
<p v-if="description" v-html="description"></p>
|
|
7
7
|
<CitySelector ref="citySelector" @change="setCity"/>
|
|
8
|
-
|
|
8
|
+
</div>
|
|
9
9
|
|
|
10
10
|
<div class="flex flex-col gap-4">
|
|
11
11
|
<div v-for="field in fields">
|
|
@@ -34,9 +34,11 @@
|
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
36
36
|
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
<div>
|
|
38
|
+
<Button ref="submitBtn" class="w-full" @click="submitForm" :state="!canSubmit ? -1 : 1">
|
|
39
|
+
<h5>Kirim</h5>
|
|
40
|
+
</Button>
|
|
41
|
+
</div>
|
|
40
42
|
|
|
41
43
|
</div>
|
|
42
44
|
<div :class="$style.comp" class="" v-else-if="state === 2">
|
|
@@ -152,16 +154,9 @@ export default{
|
|
|
152
154
|
<style module>
|
|
153
155
|
|
|
154
156
|
.comp{
|
|
155
|
-
@apply flex-1 w-full max-w-[480px]
|
|
157
|
+
@apply flex-1 w-full max-w-[480px] mx-auto rounded-lg overflow-hidden;
|
|
156
158
|
@apply border-text-200 border-[1px] p-6;
|
|
157
|
-
@apply flex flex-col
|
|
158
|
-
background-image: v-bind(bgImages[0]);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
@media screen and (min-width: 768px){
|
|
162
|
-
.comp{
|
|
163
|
-
background-image: v-bind(bgImages[1]);
|
|
164
|
-
}
|
|
159
|
+
@apply flex flex-col gap-12 bg-base;
|
|
165
160
|
}
|
|
166
161
|
|
|
167
162
|
</style>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.comp">
|
|
2
|
+
<div :class="$style.comp" :style="computedStyle">
|
|
3
3
|
<iframe :class="videoClass"
|
|
4
4
|
:src="computedSrc"
|
|
5
5
|
frameborder="0"
|
|
@@ -49,7 +49,6 @@ export default{
|
|
|
49
49
|
|
|
50
50
|
.comp{
|
|
51
51
|
@apply flex flex-col;
|
|
52
|
-
background-image: v-bind(bgImages[0]);
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
.video{
|
|
@@ -58,10 +57,4 @@ export default{
|
|
|
58
57
|
width: 100%;
|
|
59
58
|
}
|
|
60
59
|
|
|
61
|
-
@media screen and (min-width: 768px){
|
|
62
|
-
.comp{
|
|
63
|
-
background-image: v-bind(bgImages[1]);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
60
|
</style>
|
package/src/widgets/FAQ.vue
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.comp">
|
|
2
|
+
<div :class="$style.comp" :style="computedStyle">
|
|
3
3
|
<h3>{{ title }}</h3>
|
|
4
4
|
<div :class="$style.items">
|
|
5
5
|
<div v-for="(item, idx) in items" :class="$style.item">
|
|
@@ -39,7 +39,6 @@ export default{
|
|
|
39
39
|
|
|
40
40
|
.comp{
|
|
41
41
|
@apply w-full mx-auto max-w-screen-md;
|
|
42
|
-
background-image: v-bind(bgImages[0]);
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
.items{
|
|
@@ -77,10 +76,4 @@ export default{
|
|
|
77
76
|
@apply rotate-180
|
|
78
77
|
}
|
|
79
78
|
|
|
80
|
-
@media screen(md){
|
|
81
|
-
.comp{
|
|
82
|
-
background-image: v-bind(bgImages[1]);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
79
|
</style>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="$style.comp"
|
|
2
|
+
<div :class="$style.comp"
|
|
3
|
+
v-if="Array.isArray(items) && items.length > 0"
|
|
4
|
+
:style="computedStyle">
|
|
3
5
|
<div v-if="id" :id="id" :class="$style.anchor"></div>
|
|
4
6
|
<div class="mb-8">
|
|
5
7
|
<h3>{{ title ?? '' }}</h3>
|
|
@@ -82,7 +84,6 @@ export default{
|
|
|
82
84
|
.comp{
|
|
83
85
|
@apply relative;
|
|
84
86
|
@apply w-full max-w-screen-xl mx-auto p-6;
|
|
85
|
-
background-image: v-bind(bgImages[0]);
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
.container{
|
|
@@ -97,12 +98,6 @@ export default{
|
|
|
97
98
|
@apply absolute top-[-80px];
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
@media screen(md){
|
|
101
|
-
.comp{
|
|
102
|
-
background-image: v-bind(bgImages[1]);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
101
|
</style>
|
|
107
102
|
|
|
108
103
|
<style>
|
package/src/widgets/Header1.vue
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div :class="$style.comp">
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.25 8C4.25 7.58579 4.58579 7.25 5 7.25H19C19.4142 7.25 19.75 7.58579 19.75 8C19.75 8.41421 19.4142 8.75 19 8.75H5C4.58579 8.75 4.25 8.41421 4.25 8Z"/>
|
|
8
|
-
</svg>
|
|
9
|
-
</button>
|
|
10
|
-
</div>
|
|
11
|
-
<div class="flex-1 flex justify-center items-center">
|
|
12
|
-
<Image :src="logoUrl" class="max-w-[35vw] h-[56px]"/>
|
|
13
|
-
</div>
|
|
14
|
-
<div class="w-[60px]">
|
|
15
|
-
|
|
16
|
-
</div>
|
|
3
|
+
<component v-for="(item, idx) in items"
|
|
4
|
+
:is="item.type"
|
|
5
|
+
:key="item.key"
|
|
6
|
+
:="item" />
|
|
17
7
|
</div>
|
|
18
8
|
</template>
|
|
19
9
|
|
|
@@ -26,7 +16,8 @@ export default{
|
|
|
26
16
|
mixins: [ componentMixin ],
|
|
27
17
|
|
|
28
18
|
props: {
|
|
29
|
-
images: Object
|
|
19
|
+
images: Object,
|
|
20
|
+
items: Array,
|
|
30
21
|
},
|
|
31
22
|
|
|
32
23
|
computed: {
|