@bagelink/vue 0.0.1016 → 0.0.1020
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/components/form/BglField.vue.d.ts.map +1 -1
- package/dist/components/form/FieldArray.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/index.vue.d.ts.map +1 -1
- package/dist/components/layout/TabsBody.vue.d.ts.map +1 -1
- package/dist/components/lightbox/index.d.ts.map +1 -1
- package/dist/index.cjs +127 -141
- package/dist/index.mjs +127 -141
- package/dist/style.css +23 -15
- package/package.json +1 -1
- package/src/components/form/BglField.vue +9 -0
- package/src/components/form/FieldArray.vue +31 -22
- package/src/components/form/inputs/RichText/index.vue +2 -2
- package/src/components/layout/TabsBody.vue +2 -2
- package/src/components/lightbox/index.ts +0 -1
package/dist/style.css
CHANGED
|
@@ -605,8 +605,16 @@ data[data-v-6c27f163] {
|
|
|
605
605
|
transform: translateY(-2.6rem);
|
|
606
606
|
}
|
|
607
607
|
|
|
608
|
-
.itemBox
|
|
609
|
-
|
|
608
|
+
.itemBox{
|
|
609
|
+
/* border-top: 2px solid var(--bgl-gray); */
|
|
610
|
+
/* border-bottom: 2px solid var(--bgl-gray); */
|
|
611
|
+
background: var(--input-bg);
|
|
612
|
+
}
|
|
613
|
+
.itemBox .bagel-input input,
|
|
614
|
+
.itemBox .bagel-input textarea,
|
|
615
|
+
.itemBox .bagel-input select,
|
|
616
|
+
.itemBox .custom-select .input {
|
|
617
|
+
background: var(--bgl-white) !important;
|
|
610
618
|
}
|
|
611
619
|
|
|
612
620
|
.primary-checkbox input[data-v-73f1d9ad] {
|
|
@@ -1194,26 +1202,26 @@ pre code.hljs{
|
|
|
1194
1202
|
line-height: 1.65;
|
|
1195
1203
|
}
|
|
1196
1204
|
|
|
1197
|
-
.rich-text-editor[data-v-
|
|
1205
|
+
.rich-text-editor[data-v-8d91c8f8] {
|
|
1198
1206
|
background: var(--input-bg);
|
|
1199
1207
|
border: 1px solid var(--border-color);
|
|
1200
1208
|
transition: all 0.3s ease;
|
|
1201
1209
|
}
|
|
1202
|
-
.editor-container[data-v-
|
|
1210
|
+
.editor-container[data-v-8d91c8f8] {
|
|
1203
1211
|
display: flex;
|
|
1204
1212
|
gap: 1rem;
|
|
1205
1213
|
}
|
|
1206
|
-
.content-area[data-v-
|
|
1207
|
-
.preview-area[data-v-
|
|
1214
|
+
.content-area[data-v-8d91c8f8],
|
|
1215
|
+
.preview-area[data-v-8d91c8f8] {
|
|
1208
1216
|
flex: 1;
|
|
1209
1217
|
min-height: 200px;
|
|
1210
1218
|
background: var(--bgl-richtext-color);
|
|
1211
1219
|
}
|
|
1212
|
-
.split-view[data-v-
|
|
1220
|
+
.split-view[data-v-8d91c8f8] {
|
|
1213
1221
|
display: grid;
|
|
1214
1222
|
grid-template-columns: 1fr 1fr;
|
|
1215
1223
|
}
|
|
1216
|
-
.editableContent[data-v-
|
|
1224
|
+
.editableContent[data-v-8d91c8f8] {
|
|
1217
1225
|
width: 100%;
|
|
1218
1226
|
min-height: 240px;
|
|
1219
1227
|
height: 100%;
|
|
@@ -1221,7 +1229,7 @@ line-height: 1.65;
|
|
|
1221
1229
|
outline: none;
|
|
1222
1230
|
background: transparent;
|
|
1223
1231
|
}
|
|
1224
|
-
.html-editor[data-v-
|
|
1232
|
+
.html-editor[data-v-8d91c8f8] {
|
|
1225
1233
|
width: 100%;
|
|
1226
1234
|
height: 100%;
|
|
1227
1235
|
min-height: 200px;
|
|
@@ -1232,12 +1240,12 @@ line-height: 1.65;
|
|
|
1232
1240
|
color: white;
|
|
1233
1241
|
background-color: var(--bgl-black);
|
|
1234
1242
|
}
|
|
1235
|
-
.preview-area[data-v-
|
|
1243
|
+
.preview-area[data-v-8d91c8f8] {
|
|
1236
1244
|
font-family: monospace;
|
|
1237
1245
|
white-space: pre-wrap;
|
|
1238
1246
|
overflow-x: auto;
|
|
1239
1247
|
}
|
|
1240
|
-
.fullscreen-mode[data-v-
|
|
1248
|
+
.fullscreen-mode[data-v-8d91c8f8] {
|
|
1241
1249
|
position: fixed;
|
|
1242
1250
|
top: 0;
|
|
1243
1251
|
left: 0;
|
|
@@ -1246,15 +1254,15 @@ line-height: 1.65;
|
|
|
1246
1254
|
z-index: 9999;
|
|
1247
1255
|
padding: 2rem;
|
|
1248
1256
|
}
|
|
1249
|
-
.fullscreen-mode .editor-container[data-v-
|
|
1257
|
+
.fullscreen-mode .editor-container[data-v-8d91c8f8] {
|
|
1250
1258
|
height: calc(100vh - 4rem);
|
|
1251
1259
|
}
|
|
1252
|
-
.fullscreen-mode .content-area[data-v-
|
|
1253
|
-
.fullscreen-mode .preview-area[data-v-
|
|
1260
|
+
.fullscreen-mode .content-area[data-v-8d91c8f8],
|
|
1261
|
+
.fullscreen-mode .preview-area[data-v-8d91c8f8] {
|
|
1254
1262
|
height: 100%;
|
|
1255
1263
|
overflow-y: auto;
|
|
1256
1264
|
}
|
|
1257
|
-
.fullscreen-mode .code-editor[data-v-
|
|
1265
|
+
.fullscreen-mode .code-editor[data-v-8d91c8f8]{
|
|
1258
1266
|
height: 100% !important;
|
|
1259
1267
|
}
|
|
1260
1268
|
.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}
|
package/package.json
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
ToggleInput,
|
|
12
12
|
bindAttrs,
|
|
13
13
|
classify,
|
|
14
|
+
BagelForm
|
|
14
15
|
} from '@bagelink/vue'
|
|
15
16
|
import TabsNav from '../layout/TabsNav.vue'
|
|
16
17
|
|
|
@@ -42,6 +43,7 @@ const is = $computed(() => {
|
|
|
42
43
|
if (props.field.$el === 'file') return FileUpload
|
|
43
44
|
if (props.field.$el === 'date') return DateInput
|
|
44
45
|
if (props.field.$el === 'tabs') return TabsNav
|
|
46
|
+
if (props.field.$el === 'form') return BagelForm
|
|
45
47
|
return props.field.$el ?? 'div'
|
|
46
48
|
})
|
|
47
49
|
|
|
@@ -68,6 +70,8 @@ function setFieldData(key: string, val: any) {
|
|
|
68
70
|
return data
|
|
69
71
|
}
|
|
70
72
|
|
|
73
|
+
const isForm = $computed(() => props.field.$el === 'form' || props.field.$el === BagelForm)
|
|
74
|
+
|
|
71
75
|
function getFieldData(obj: any, key: string) {
|
|
72
76
|
if (typeof obj !== 'object' || obj === null) return obj
|
|
73
77
|
const keys = key.split(objPathRegex)
|
|
@@ -84,12 +88,17 @@ function getFieldData(obj: any, key: string) {
|
|
|
84
88
|
|
|
85
89
|
const fieldData = $computed({
|
|
86
90
|
set: (val: any) => {
|
|
91
|
+
if (isForm) {
|
|
92
|
+
emit('update:modelValue', val)
|
|
93
|
+
return
|
|
94
|
+
}
|
|
87
95
|
if (!props.field.id) return
|
|
88
96
|
const data = setFieldData(props.field.id, val)
|
|
89
97
|
emit('update:modelValue', data)
|
|
90
98
|
},
|
|
91
99
|
get: () => {
|
|
92
100
|
if (props.field.id) return getFieldData(props.modelValue, props.field.id)
|
|
101
|
+
if (isForm) return props.modelValue
|
|
93
102
|
return props.field.defaultValue ?? ''
|
|
94
103
|
},
|
|
95
104
|
})
|
|
@@ -54,21 +54,21 @@ function addItem() {
|
|
|
54
54
|
emitValue()
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
const computedField = $computed(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
) as Field<Record<string, any>>
|
|
57
|
+
// const computedField = $computed(
|
|
58
|
+
// () => ({
|
|
59
|
+
// label: props.label,
|
|
60
|
+
// placeholder: props.placeholder,
|
|
61
|
+
// children: props.children,
|
|
62
|
+
// class: props.class,
|
|
63
|
+
// attrs: props.attrs,
|
|
64
|
+
// required: props.required,
|
|
65
|
+
// disabled: props.disabled,
|
|
66
|
+
// helptext: props.helptext,
|
|
67
|
+
// options: props.options,
|
|
68
|
+
// defaultValue: props.defaultValue,
|
|
69
|
+
// $el: props.el,
|
|
70
|
+
// }) as Field<T>
|
|
71
|
+
// ) as Field<Record<string, any>>
|
|
72
72
|
</script>
|
|
73
73
|
|
|
74
74
|
<template>
|
|
@@ -76,8 +76,8 @@ const computedField = $computed(
|
|
|
76
76
|
<p class="label mb-05">
|
|
77
77
|
{{ label }}
|
|
78
78
|
</p>
|
|
79
|
-
<div>
|
|
80
|
-
<
|
|
79
|
+
<div class="ps-05 border-start">
|
|
80
|
+
<div v-for="(_, i) in data" :key="i" outline thin class="mb-05 itemBox transition p-05">
|
|
81
81
|
<BglForm v-if="schema" v-model="data[i]" :schema="schema" @update:model-value="emitValue" />
|
|
82
82
|
<Btn
|
|
83
83
|
v-if="props.delete"
|
|
@@ -88,16 +88,25 @@ const computedField = $computed(
|
|
|
88
88
|
flat
|
|
89
89
|
@click="deleteItem(i)"
|
|
90
90
|
/>
|
|
91
|
-
</
|
|
92
|
-
<Btn v-if="add" icon="add" color="gray" class="
|
|
91
|
+
</div>
|
|
92
|
+
<Btn v-if="add" thin icon="add" color="gray" class="txt12" @click="addItem">
|
|
93
93
|
<p>Add {{ label }}</p>
|
|
94
94
|
</Btn>
|
|
95
95
|
</div>
|
|
96
96
|
</div>
|
|
97
97
|
</template>
|
|
98
98
|
|
|
99
|
-
<style
|
|
100
|
-
.itemBox
|
|
101
|
-
|
|
99
|
+
<style>
|
|
100
|
+
.itemBox{
|
|
101
|
+
/* border-top: 2px solid var(--bgl-gray); */
|
|
102
|
+
/* border-bottom: 2px solid var(--bgl-gray); */
|
|
103
|
+
background: var(--input-bg);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.itemBox .bagel-input input,
|
|
107
|
+
.itemBox .bagel-input textarea,
|
|
108
|
+
.itemBox .bagel-input select,
|
|
109
|
+
.itemBox .custom-select .input {
|
|
110
|
+
background: var(--bgl-white) !important;
|
|
102
111
|
}
|
|
103
112
|
</style>
|
|
@@ -50,7 +50,7 @@ watch(() => editor.state.content, (newValue) => {
|
|
|
50
50
|
</script>
|
|
51
51
|
|
|
52
52
|
<template>
|
|
53
|
-
<div class="rich-text-editor rounded pt-05 px-05 pb-075" :class="{ 'fullscreen-mode': editor.state.isFullscreen }">
|
|
53
|
+
<div class="rich-text-editor rounded pt-05 px-05 pb-075 mb-05" :class="{ 'fullscreen-mode': editor.state.isFullscreen }">
|
|
54
54
|
<Toolbar
|
|
55
55
|
v-if="editor.state.hasInit" :config="toolbarConfig" :selectedStyles="editor.state.selectedStyles"
|
|
56
56
|
@action="editor.handleToolbarAction"
|
|
@@ -148,4 +148,4 @@ line-height: 1.65;
|
|
|
148
148
|
.fullscreen-mode .code-editor{
|
|
149
149
|
height: 100% !important;
|
|
150
150
|
}
|
|
151
|
-
</style
|
|
151
|
+
</style>
|
|
@@ -11,7 +11,6 @@ let clickHandler: ((e: MouseEvent) => any) = (_e: MouseEvent) => void 0
|
|
|
11
11
|
|
|
12
12
|
const lightboxDirective: Directive = {
|
|
13
13
|
mounted(el: HTMLElement, binding) {
|
|
14
|
-
el.classList.add('hover')
|
|
15
14
|
const item = bindingToItem(binding, el)
|
|
16
15
|
groupHandler(item)
|
|
17
16
|
clickHandler = (e: MouseEvent) => { openClickHandler(e, el, binding) }
|