@bagelink/vue 1.15.458 → 1.15.468
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/inputs/ArrayInput.vue.d.ts +2 -0
- package/dist/components/form/inputs/ArrayInput.vue.d.ts.map +1 -1
- package/dist/core.css +1 -1
- package/dist/form-flow/form-flow.d.ts +2 -0
- package/dist/form-flow/form-flow.d.ts.map +1 -1
- package/dist/index.cjs +33 -33
- package/dist/index.css +1 -1
- package/dist/index.mjs +5488 -5452
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/form/inputs/ArrayInput.vue +38 -8
- package/src/components/layout/AppSidebar.vue +1 -1
- package/src/form-flow/form-flow.ts +2 -0
package/package.json
CHANGED
|
@@ -22,6 +22,8 @@ const props = defineProps<{
|
|
|
22
22
|
itemLabel?: string
|
|
23
23
|
collapsible?: boolean
|
|
24
24
|
simple?: boolean
|
|
25
|
+
/** Shows fixed item labels with drag handles, without editable row content. */
|
|
26
|
+
reorderOnly?: boolean
|
|
25
27
|
/** Factory for new rows. Prefer this over pushing `undefined` (which becomes `null` after JSON sync). */
|
|
26
28
|
createItem?: () => T
|
|
27
29
|
} & BagelInputShellProps>()
|
|
@@ -49,7 +51,7 @@ const itemLabelPrefix = computed(() => {
|
|
|
49
51
|
return $t('arrayInput.item')
|
|
50
52
|
})
|
|
51
53
|
|
|
52
|
-
const IDENTIFIER_FIELDS = ['title', 'name', 'key', 'label', 'displayName', 'display_name', 'heading', 'caption', 'text']
|
|
54
|
+
const IDENTIFIER_FIELDS = ['title', 'name', 'type', 'key', 'label', 'displayName', 'display_name', 'heading', 'caption', 'text']
|
|
53
55
|
const IMAGE_FIELDS = ['image', 'thumbnail', 'avatar', 'photo', 'picture', 'profilePic', 'profile_pic', 'icon', 'logo']
|
|
54
56
|
|
|
55
57
|
function getItemIdentifier(item: T): string | null {
|
|
@@ -170,16 +172,37 @@ function getItemRef(i: number) {
|
|
|
170
172
|
<p v-if="helptext" class="helptext">
|
|
171
173
|
{{ helptext }}
|
|
172
174
|
</p>
|
|
173
|
-
<
|
|
174
|
-
<
|
|
175
|
-
<
|
|
176
|
-
<div v-if="allowDelete" class=" h-100p" :class="{ 'border-start ps-025 ms-075': !simple }">
|
|
175
|
+
<Draggable v-if="reorderOnly" :model-value="items" handle=".grab" :disabled="!allowReorder" class="grid gap-05 mb-05" @end="onDraggableEnd">
|
|
176
|
+
<template #default="{ index: i }">
|
|
177
|
+
<div class="grid gap-0 grid-array-line-reorder align-items-center pe-025 border radius-1 overflow-hidden">
|
|
177
178
|
<Btn
|
|
178
|
-
v-tooltip="resolveI18n(
|
|
179
|
-
|
|
179
|
+
v-if="allowReorder" v-tooltip="resolveI18n('Drag to reorder')" flat xs icon="drag_indicator"
|
|
180
|
+
class="grab"
|
|
180
181
|
/>
|
|
182
|
+
<p class="ellipsis-1 txt12 line-height-1">
|
|
183
|
+
{{ getItemIdentifier(items[i]) ?? getItemLabel(i) }}
|
|
184
|
+
</p>
|
|
181
185
|
</div>
|
|
182
|
-
</
|
|
186
|
+
</template>
|
|
187
|
+
</Draggable>
|
|
188
|
+
<template v-else-if="!collapsible">
|
|
189
|
+
<Draggable :model-value="items" handle=".grab" :disabled="!allowReorder" class="grid gap-05 mb-05" @end="onDraggableEnd">
|
|
190
|
+
<template #default="{ index: i }">
|
|
191
|
+
<div class="array-input-row grid align-items-center" :class="{ 'array-input-row-reorder': allowReorder, 'simpleArray mb-025': isSimple, 'pb-1': !isSimple }">
|
|
192
|
+
<Btn
|
|
193
|
+
v-if="allowReorder" v-tooltip="resolveI18n('Drag to reorder')" flat thin icon="drag_indicator"
|
|
194
|
+
class="grab"
|
|
195
|
+
/>
|
|
196
|
+
<slot :item="getItemRef(i)" :index="i" />
|
|
197
|
+
<div v-if="allowDelete" class="h-100p" :class="{ 'border-start ps-025 ms-075': !simple }">
|
|
198
|
+
<Btn
|
|
199
|
+
v-tooltip="resolveI18n(deleteTooltip || 'Delete')" flat icon="delete"
|
|
200
|
+
@click="deleteItem(i)"
|
|
201
|
+
/>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
</template>
|
|
205
|
+
</Draggable>
|
|
183
206
|
</template>
|
|
184
207
|
<Draggable v-if="collapsible" :model-value="items" handle=".grab" :disabled="!allowReorder" class="grid gap-05 mb-05" @end="onDraggableEnd">
|
|
185
208
|
<template #default="{ index: i }">
|
|
@@ -228,6 +251,9 @@ function getItemRef(i: number) {
|
|
|
228
251
|
.array-input-row {
|
|
229
252
|
grid-template-columns: 1fr auto;
|
|
230
253
|
}
|
|
254
|
+
.array-input-row-reorder {
|
|
255
|
+
grid-template-columns: auto 1fr auto;
|
|
256
|
+
}
|
|
231
257
|
|
|
232
258
|
.array-collapse-enter-active,
|
|
233
259
|
.array-collapse-leave-active {
|
|
@@ -262,6 +288,10 @@ transform: scale(0.98);
|
|
|
262
288
|
grid-template-columns: auto 1fr auto;
|
|
263
289
|
background: var(--array-input-bg) !important;
|
|
264
290
|
}
|
|
291
|
+
.grid-array-line-reorder {
|
|
292
|
+
grid-template-columns: auto 1fr;
|
|
293
|
+
background: var(--array-input-bg) !important;
|
|
294
|
+
}
|
|
265
295
|
|
|
266
296
|
.grid-array-line button:hover {
|
|
267
297
|
filter: brightness(90%);
|
|
@@ -152,7 +152,7 @@ const sidebarStyles = computed(() => {
|
|
|
152
152
|
<aside
|
|
153
153
|
id="bgl-app-sidebar"
|
|
154
154
|
class="app-sidebar" :class="{
|
|
155
|
-
'fixed start top bottom h-100vh z-99': isMobile,
|
|
155
|
+
'fixed start top bottom h-100vh m_h-100svh z-99': isMobile,
|
|
156
156
|
'h-100p': !isMobile,
|
|
157
157
|
'sidebar-mobile-open': isMobile && isOpen,
|
|
158
158
|
'sidebar-mobile-closed': isMobile && !isOpen,
|
|
@@ -443,6 +443,7 @@ export const $ = {
|
|
|
443
443
|
min?: number
|
|
444
444
|
max?: number
|
|
445
445
|
simple?: boolean
|
|
446
|
+
reorderOnly?: boolean
|
|
446
447
|
}),
|
|
447
448
|
maybeConfig?: BaseFieldConfig & {
|
|
448
449
|
allowAdd?: boolean
|
|
@@ -452,6 +453,7 @@ export const $ = {
|
|
|
452
453
|
min?: number
|
|
453
454
|
max?: number
|
|
454
455
|
simple?: boolean
|
|
456
|
+
reorderOnly?: boolean
|
|
455
457
|
}
|
|
456
458
|
): FieldBuilder<any[]> {
|
|
457
459
|
// Label-first: $.array('Items', schema) or $.array('Items', schema, { min: 1 })
|