@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/dist/dashboard-for-laravel.js +6100 -6065
- package/dist/dashboard-for-laravel.js.map +1 -1
- package/dist/dashboard-for-laravel.umd.cjs +5 -5
- package/dist/dashboard-for-laravel.umd.cjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -2
- package/resources/js/components/extended/DXTable.vue +64 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omnitend/dashboard-for-laravel",
|
|
3
|
-
"version": "0.4.
|
|
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="
|
|
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="
|
|
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));
|