@bagelink/vue 1.15.176 → 1.15.178
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/kanban/KanbanBoard.vue.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1255 -1258
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/kanban/KanbanBoard.vue +22 -47
package/package.json
CHANGED
|
@@ -112,20 +112,20 @@ function cardBadges(item: T) {
|
|
|
112
112
|
</script>
|
|
113
113
|
|
|
114
114
|
<template>
|
|
115
|
-
<div class="bgl-kanban">
|
|
115
|
+
<div class="bgl-kanban m_pt-075 gap-1 display-flex overflow-x min-h-0 min-w-0">
|
|
116
116
|
<div
|
|
117
117
|
v-for="col in resolvedColumns" :key="col.id"
|
|
118
|
-
class="bgl-kanban-col"
|
|
118
|
+
class="bgl-kanban-col column display-flex"
|
|
119
119
|
:class="{ 'is-dragover': dragOverCol === col.id }"
|
|
120
120
|
@dragover.prevent="draggable && (dragOverCol = col.id)"
|
|
121
121
|
@dragleave="dragOverCol === col.id && (dragOverCol = null)"
|
|
122
122
|
@drop="onDrop(col)"
|
|
123
123
|
>
|
|
124
124
|
<!-- header -->
|
|
125
|
-
<div class="bgl-kanban-head">
|
|
125
|
+
<div class="bgl-kanban-head gap-05 px-025 flex">
|
|
126
126
|
<slot name="column-header" :column="col" :count="col.items.length">
|
|
127
127
|
<Badge v-if="col.color" dot :color="col.color" :value="col.title" flat sm />
|
|
128
|
-
<span v-else class="bgl-kanban-title">
|
|
128
|
+
<span v-else class="bgl-kanban-title txt13 semi">
|
|
129
129
|
<Badge v-if="col.icon" :icon="col.icon" flat sm :value="col.title" />
|
|
130
130
|
<template v-else>{{ col.title }}</template>
|
|
131
131
|
</span>
|
|
@@ -134,7 +134,7 @@ function cardBadges(item: T) {
|
|
|
134
134
|
</div>
|
|
135
135
|
|
|
136
136
|
<!-- cards -->
|
|
137
|
-
<div class="bgl-kanban-list">
|
|
137
|
+
<div class="bgl-kanban-list column display-flex">
|
|
138
138
|
<div
|
|
139
139
|
v-for="(item, i) in col.items" :key="keyOf(item)"
|
|
140
140
|
class="bgl-kanban-card-wrap"
|
|
@@ -146,46 +146,40 @@ function cardBadges(item: T) {
|
|
|
146
146
|
>
|
|
147
147
|
<slot name="card" :item="item" :column="col">
|
|
148
148
|
<!-- default schema card -->
|
|
149
|
-
<div class="bgl-kanban-card">
|
|
150
|
-
<div v-if="cardTitle(item)" class="bgl-kanban-card-title">{{ cardTitle(item) }}</div>
|
|
151
|
-
<div v-if="cardSubtitle(item)" class="bgl-kanban-card-sub">{{ cardSubtitle(item) }}</div>
|
|
152
|
-
<div v-if="cardBadges(item).length" class="bgl-kanban-card-badges">
|
|
149
|
+
<div class="bgl-kanban-card display-flex column gap-05 border bg-box">
|
|
150
|
+
<div v-if="cardTitle(item)" class="bgl-kanban-card-title txt13 semi line-height-13">{{ cardTitle(item) }}</div>
|
|
151
|
+
<div v-if="cardSubtitle(item)" class="bgl-kanban-card-sub txt12 opacity-7">{{ cardSubtitle(item) }}</div>
|
|
152
|
+
<div v-if="cardBadges(item).length" class="bgl-kanban-card-badges gap-025 display-flex flex-wrap">
|
|
153
153
|
<Badge v-for="(b, bi) in cardBadges(item)" :key="bi" sm soft :color="b.color || 'gray'" :value="b.label" />
|
|
154
154
|
</div>
|
|
155
|
-
<div v-if="cardId(item)" class="bgl-kanban-card-
|
|
155
|
+
<div v-if="cardId(item)" class="bgl-kanban-card-foot1 bg-red txt11 opacity-5 monospace">{{ cardId(item) }}</div>
|
|
156
156
|
</div>
|
|
157
157
|
</slot>
|
|
158
158
|
</div>
|
|
159
159
|
|
|
160
|
-
<EmptyState v-if="!col.items.length && !col.loading" compact icon="inbox" :title="emptyText" class="bgl-kanban-empty" />
|
|
161
|
-
<Loading v-if="col.loading" class="bgl-kanban-loading" />
|
|
160
|
+
<EmptyState v-if="!col.items.length && !col.loading" compact icon="inbox" :title="emptyText" class="bgl-kanban-empty py-075 opacity-5" />
|
|
161
|
+
<Loading v-if="col.loading" class="bgl-kanban-loading p-1 display-flex justify-content-center" />
|
|
162
|
+
<!-- footer / load more -->
|
|
163
|
+
<div v-if="canLoadMore(col) || slots['column-footer']" class="bgl-kanban-foot">
|
|
164
|
+
<slot name="column-footer" :column="col">
|
|
165
|
+
<Btn
|
|
166
|
+
v-if="canLoadMore(col)" flat thin sm full-width icon="expand_more"
|
|
167
|
+
:value="`Load more`" :disabled="col.loading" @click="onLoadMore(col)"
|
|
168
|
+
/>
|
|
169
|
+
</slot>
|
|
170
|
+
</div>
|
|
162
171
|
</div>
|
|
163
172
|
|
|
164
|
-
<!-- footer / load more -->
|
|
165
|
-
<div v-if="canLoadMore(col) || slots['column-footer']" class="bgl-kanban-foot">
|
|
166
|
-
<slot name="column-footer" :column="col">
|
|
167
|
-
<Btn
|
|
168
|
-
v-if="canLoadMore(col)" flat thin sm full-width icon="expand_more"
|
|
169
|
-
:value="`Load more`" :disabled="col.loading" @click="onLoadMore(col)"
|
|
170
|
-
/>
|
|
171
|
-
</slot>
|
|
172
|
-
</div>
|
|
173
173
|
</div>
|
|
174
174
|
</div>
|
|
175
175
|
</template>
|
|
176
176
|
|
|
177
177
|
<style scoped>
|
|
178
178
|
.bgl-kanban {
|
|
179
|
-
display: flex;
|
|
180
179
|
align-items: stretch;
|
|
181
|
-
gap: 1rem;
|
|
182
180
|
overflow-x: auto;
|
|
183
|
-
min-height: 0;
|
|
184
|
-
min-width: 0;
|
|
185
181
|
}
|
|
186
182
|
.bgl-kanban-col {
|
|
187
|
-
display: flex;
|
|
188
|
-
flex-direction: column;
|
|
189
183
|
gap: .6rem;
|
|
190
184
|
width: 280px;
|
|
191
185
|
min-width: 280px;
|
|
@@ -198,34 +192,15 @@ function cardBadges(item: T) {
|
|
|
198
192
|
outline: 1px dashed color-mix(in srgb, var(--bgl-primary) 40%, transparent);
|
|
199
193
|
outline-offset: 2px;
|
|
200
194
|
}
|
|
201
|
-
.bgl-kanban-
|
|
202
|
-
display: flex;
|
|
203
|
-
align-items: center;
|
|
204
|
-
gap: .5rem;
|
|
205
|
-
padding: 0 .25rem;
|
|
206
|
-
}
|
|
207
|
-
.bgl-kanban-title { font-size: 13px; font-weight: 600; }
|
|
208
|
-
/* flex:1 → list fills the column so empty columns stay full-height drop targets */
|
|
209
|
-
.bgl-kanban-list { display: flex; flex-direction: column; gap: .6rem; flex: 1; min-height: 8px; }
|
|
195
|
+
.bgl-kanban-list { gap: .6rem; flex: 1; min-height: 8px; }
|
|
210
196
|
.bgl-kanban-card-wrap { cursor: pointer; }
|
|
211
197
|
.bgl-kanban-card-wrap[draggable='true'] { cursor: grab; }
|
|
212
198
|
.bgl-kanban-card-wrap[draggable='true']:active { cursor: grabbing; }
|
|
213
199
|
.bgl-kanban-card {
|
|
214
|
-
display: flex;
|
|
215
|
-
flex-direction: column;
|
|
216
|
-
gap: .5rem;
|
|
217
200
|
padding: .75rem .85rem;
|
|
218
|
-
background: var(--bgl-box-bg);
|
|
219
|
-
border: 1px solid var(--bgl-border-color);
|
|
220
201
|
border-radius: var(--bgl-radius, 12px);
|
|
221
202
|
transition: border-color .12s, box-shadow .12s;
|
|
222
203
|
}
|
|
223
204
|
.bgl-kanban-card:hover { border-color: color-mix(in srgb, var(--bgl-primary) 50%, var(--bgl-border-color)); }
|
|
224
|
-
.bgl-kanban-card-title { font-size: 13px; font-weight: 600; line-height: 1.3; }
|
|
225
|
-
.bgl-kanban-card-sub { font-size: 12px; opacity: .7; }
|
|
226
|
-
.bgl-kanban-card-badges { display: flex; gap: .25rem; flex-wrap: wrap; }
|
|
227
|
-
.bgl-kanban-card-foot { font-size: 11px; font-family: ui-monospace, monospace; opacity: .5; }
|
|
228
|
-
.bgl-kanban-empty { padding: .75rem 0; opacity: .5; }
|
|
229
|
-
.bgl-kanban-loading { padding: 1rem; display: flex; justify-content: center; }
|
|
230
205
|
.bgl-kanban-foot { padding-top: .1rem; }
|
|
231
206
|
</style>
|