@edc-motor/admin-kit 0.4.27 → 0.4.29

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edc-motor/admin-kit",
3
- "version": "0.4.27",
3
+ "version": "0.4.29",
4
4
  "description": "EdC Motor — kit del panel de administración: layout, gestores CRUD, imágenes, PDF, páginas, configuración, usuarios y copias (paquete fuente: lo compila el consumidor con Vite)",
5
5
  "license": "GPL-3.0-only",
6
6
  "type": "module",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@edc-motor/ui": "^0.4.27",
36
+ "@edc-motor/ui": "^0.4.29",
37
37
  "axios": "^1.7.0"
38
38
  },
39
39
  "peerDependencies": {
@@ -195,21 +195,57 @@
195
195
  // cuerpo del modal, no el viewport) se apilan, el select debajo.
196
196
  &__field--row {
197
197
  display: flex;
198
- align-items: flex-end;
198
+ // ARRIBA (no al fondo): con un textarea alto (p. ej. el subtítulo) el
199
+ // select de alineación debe quedar a la altura de las etiquetas, no
200
+ // descolgado al fondo de la fila.
201
+ align-items: flex-start;
199
202
  gap: $space-3;
200
203
 
201
204
  .schema-fields__field-main { flex: 1 1 0; }
202
205
  }
203
206
 
204
- &__field-align { flex: 0 0 180px; }
207
+ // Ancho justo para "Centrado"/"Izquierda" + etiqueta en es/en/eu sin
208
+ // cortarse (180px sobraba de aire).
209
+ &__field-align { flex: 0 0 140px; }
205
210
 
206
211
  // Imagen a dos columnas: el input a la izquierda, sus ajustes (posición,
207
- // escalado, reparto de columnas) apilados a la derecha.
212
+ // escalado, reparto de columnas) apilados a la derecha. `stretch` (no
213
+ // `start`) para que la columna de la imagen pueda llenar el alto de la
214
+ // fila — la cadena de contenedores hasta el cuadro de arrastre lleva
215
+ // `flex: 1` para que la dropzone crezca con ella.
208
216
  &__field--image-group {
209
217
  display: grid;
210
218
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
211
219
  gap: $space-3;
212
- align-items: start;
220
+ align-items: stretch;
221
+
222
+ .schema-fields__field-main {
223
+ display: flex;
224
+ flex-direction: column;
225
+ min-width: 0;
226
+ }
227
+
228
+ // El campo imagen (label + ImageUpload) y el propio ImageUpload
229
+ // (`@edc-motor/ui`) se apuntan al `flex: 1` de la columna; SUELTO
230
+ // (form-modals normales, TranslatableImage) el componente no vive en
231
+ // esta cadena y conserva su tamaño natural (160×160).
232
+ .schema-fields__image {
233
+ display: flex;
234
+ flex-direction: column;
235
+ gap: $space-1;
236
+ flex: 1;
237
+ min-height: 0;
238
+ }
239
+
240
+ .image-upload {
241
+ flex: 1;
242
+ min-height: 0;
243
+ }
244
+
245
+ .image-upload__zone {
246
+ flex: 1;
247
+ width: 100%;
248
+ }
213
249
  }
214
250
 
215
251
  &__field-image-settings {
@@ -52,6 +52,9 @@ export interface PageBlocksLabels {
52
52
  panelContent: string
53
53
  parent: string
54
54
  parentNone: string
55
+ /** Título de la sección de interruptores (PDF/Índice) del panel, debajo
56
+ * de las acciones de verdad (editar, borrar…). */
57
+ stateKicker: string
55
58
  }
56
59
 
57
60
  const defaultLabels: PageBlocksLabels = {
@@ -75,6 +78,7 @@ const defaultLabels: PageBlocksLabels = {
75
78
  panelContent: 'Contenido',
76
79
  parent: 'Bloque padre (índices indentados)',
77
80
  parentNone: '— Ninguno —',
81
+ stateKicker: 'Estado',
78
82
  }
79
83
 
80
84
  const props = withDefaults(
@@ -729,8 +733,23 @@ defineExpose({ reload: load })
729
733
  <template v-else>
730
734
  <p class="manager-panel__kicker">{{ L.panelTitle }}</p>
731
735
 
732
- <!-- Acciones PRIMERO (los interruptores arriba); después,
733
- secciones separadas (patrón panel) -->
736
+ <!-- Acciones de verdad (patrón panel): los interruptores
737
+ PDF/Índice van en su propia sección, debajo -->
738
+ <div class="manager-detail__actions">
739
+ <BaseButton variant="info" :disabled="busy" @click="openEdit(selected)">
740
+ <template #icon><SquarePen :size="14" /></template>
741
+ {{ L.edit }}
742
+ </BaseButton>
743
+ <BaseButton variant="danger" :disabled="busy" @click="remove(selected)">
744
+ <template #icon><Trash2 :size="14" /></template>
745
+ {{ L.delete }}
746
+ </BaseButton>
747
+ </div>
748
+
749
+ <!-- Estado: los interruptores (flags), separados de las
750
+ acciones de verdad -->
751
+ <hr class="manager-panel__divider" />
752
+ <p class="manager-panel__kicker">{{ L.stateKicker }}</p>
734
753
  <div class="manager-detail__actions">
735
754
  <BaseButton
736
755
  variant="success"
@@ -751,14 +770,6 @@ defineExpose({ reload: load })
751
770
  <template #icon><List :size="14" /></template>
752
771
  {{ L.indexableShort }}
753
772
  </BaseButton>
754
- <BaseButton variant="info" :disabled="busy" @click="openEdit(selected)">
755
- <template #icon><SquarePen :size="14" /></template>
756
- {{ L.edit }}
757
- </BaseButton>
758
- <BaseButton variant="danger" :disabled="busy" @click="remove(selected)">
759
- <template #icon><Trash2 :size="14" /></template>
760
- {{ L.delete }}
761
- </BaseButton>
762
773
  </div>
763
774
 
764
775
  <hr class="manager-panel__divider" />