@omnitend/dashboard-for-laravel 0.4.11 → 0.4.13

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": "@omnitend/dashboard-for-laravel",
3
- "version": "0.4.11",
3
+ "version": "0.4.13",
4
4
  "description": "Vue 3 dashboard components for Laravel with Bootstrap Vue Next",
5
5
  "type": "module",
6
6
  "main": "./dist/dashboard-for-laravel.umd.cjs",
@@ -90,7 +90,6 @@
90
90
  "vite": "^6.4.1",
91
91
  "vitest": "^4.0.3",
92
92
  "vitest-browser-vue": "^2.0.0",
93
- "vue": "^3.5.25",
94
93
  "vue-tsc": "^2.2.12"
95
94
  },
96
95
  "keywords": [
@@ -503,7 +503,7 @@
503
503
  <!-- Other field types with label -->
504
504
  <DFormGroup
505
505
  v-else
506
- :label="getField(fieldKey).label || fieldKey"
506
+ :label="getFieldLabel(fieldKey)"
507
507
  class="mb-3"
508
508
  >
509
509
  <!-- Custom value slot -->
@@ -521,20 +521,36 @@
521
521
  :required="getField(fieldKey).required"
522
522
  :rows="getField(fieldKey).rows || 3"
523
523
  :state="editForm.getState(fieldKey)"
524
+ :disabled="isFieldDisabled(fieldKey)"
524
525
  @input="editForm.clearError(fieldKey)"
525
526
  />
527
+ <DFormSelect
528
+ v-else-if="getField(fieldKey).type === 'select'"
529
+ v-model="editForm.data[fieldKey]"
530
+ :required="getField(fieldKey).required"
531
+ :options="getField(fieldKey).options"
532
+ :state="editForm.getState(fieldKey)"
533
+ :disabled="isFieldDisabled(fieldKey)"
534
+ @change="editForm.clearError(fieldKey)"
535
+ />
526
536
  <DFormInput
527
537
  v-else
528
538
  v-model="editForm.data[fieldKey]"
529
539
  :type="getField(fieldKey).type || 'text'"
530
540
  :required="getField(fieldKey).required"
541
+ :step="getField(fieldKey).step"
531
542
  :state="editForm.getState(fieldKey)"
543
+ :disabled="isFieldDisabled(fieldKey)"
532
544
  @input="editForm.clearError(fieldKey)"
533
545
  />
534
546
  <!-- Validation error -->
535
547
  <DFormInvalidFeedback v-if="editForm.hasError(fieldKey)">
536
548
  {{ editForm.getError(fieldKey) }}
537
549
  </DFormInvalidFeedback>
550
+ <!-- Hint text -->
551
+ <DFormText v-if="getFieldHint(fieldKey)" class="text-muted">
552
+ {{ getFieldHint(fieldKey) }}
553
+ </DFormText>
538
554
  </DFormGroup>
539
555
  </template>
540
556
 
@@ -549,7 +565,7 @@
549
565
  <DXBasicForm
550
566
  v-else-if="editForm"
551
567
  :form="editForm"
552
- :fields="editFields"
568
+ :fields="resolvedEditFields"
553
569
  :show-submit="false"
554
570
  @submit="handleEditSave"
555
571
  />
@@ -607,6 +623,7 @@ import DFormGroup from "../base/DFormGroup.vue";
607
623
  import DFormTextarea from "../base/DFormTextarea.vue";
608
624
  import DFormCheckbox from "../base/DFormCheckbox.vue";
609
625
  import DFormInvalidFeedback from "../base/DFormInvalidFeedback.vue";
626
+ import DFormText from "../base/DFormText.vue";
610
627
  import DXBasicForm from "./DXBasicForm.vue";
611
628
  export type FilterType = 'text' | 'select' | 'number' | 'date' | false;
612
629
 
@@ -1436,6 +1453,51 @@ const getField = (key: string) => {
1436
1453
  return props.editFields?.find(f => f.key === key) || { key };
1437
1454
  };
1438
1455
 
1456
+ // Helper: Get field label (supports function for dynamic labels)
1457
+ const getFieldLabel = (key: string): string => {
1458
+ const field = getField(key);
1459
+ if (typeof field.label === 'function') {
1460
+ return field.label(selectedItem.value);
1461
+ }
1462
+ return field.label || key;
1463
+ };
1464
+
1465
+ // Helper: Get field hint (supports function for dynamic hints)
1466
+ const getFieldHint = (key: string): string | undefined => {
1467
+ const field = getField(key);
1468
+ if (typeof field.hint === 'function') {
1469
+ return field.hint(selectedItem.value);
1470
+ }
1471
+ return field.hint;
1472
+ };
1473
+
1474
+ // Helper: Check if field is disabled (supports disabledWhen function)
1475
+ const isFieldDisabled = (key: string): boolean => {
1476
+ const field = getField(key);
1477
+ if (typeof field.disabledWhen === 'function') {
1478
+ return field.disabledWhen(selectedItem.value);
1479
+ }
1480
+ return field.disabled || false;
1481
+ };
1482
+
1483
+ // Computed: Resolve edit fields with dynamic labels/hints for DXBasicForm
1484
+ const resolvedEditFields = computed(() => {
1485
+ if (!props.editFields) return [];
1486
+
1487
+ return props.editFields.map(field => ({
1488
+ ...field,
1489
+ label: typeof field.label === 'function'
1490
+ ? field.label(selectedItem.value)
1491
+ : field.label,
1492
+ hint: typeof field.hint === 'function'
1493
+ ? field.hint(selectedItem.value)
1494
+ : field.hint,
1495
+ disabled: typeof field.disabledWhen === 'function'
1496
+ ? field.disabledWhen(selectedItem.value)
1497
+ : field.disabled,
1498
+ }));
1499
+ });
1500
+
1439
1501
  // Computed: Singular and plural item names
1440
1502
  const singularItemName = computed(() => props.itemName);
1441
1503
  const pluralItemName = computed(() => pluralize(props.itemName));