@omnitend/dashboard-for-laravel 0.4.14 → 0.5.0

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.
@@ -1,8 +1,8 @@
1
1
  {
2
- "generated": "2025-12-02T13:23:09.065Z",
2
+ "generated": "2026-06-28T12:36:46.436Z",
3
3
  "package": {
4
4
  "name": "@omnitend/dashboard-for-laravel",
5
- "version": "0.4.8"
5
+ "version": "0.5.0"
6
6
  },
7
7
  "components": {
8
8
  "base": [
@@ -503,6 +503,27 @@
503
503
  ],
504
504
  "methods": []
505
505
  },
506
+ {
507
+ "name": "DFormRadioGroup",
508
+ "category": "base",
509
+ "filePath": "resources/js/components/base/DFormRadioGroup.vue",
510
+ "description": "",
511
+ "props": [],
512
+ "events": [],
513
+ "slots": [
514
+ {
515
+ "name": "name",
516
+ "description": "",
517
+ "bindings": [
518
+ {
519
+ "name": "name",
520
+ "title": "binding"
521
+ }
522
+ ]
523
+ }
524
+ ],
525
+ "methods": []
526
+ },
506
527
  {
507
528
  "name": "DFormSelect",
508
529
  "category": "base",
@@ -1154,71 +1175,18 @@
1154
1175
  "category": "extended",
1155
1176
  "filePath": "resources/js/components/extended/DXBasicForm.vue",
1156
1177
  "description": "",
1157
- "props": [
1158
- {
1159
- "name": "form",
1160
- "type": "UseFormReturn",
1161
- "required": true,
1162
- "description": "Form instance from useForm composable"
1163
- },
1164
- {
1165
- "name": "fields",
1166
- "type": "Array",
1167
- "required": true,
1168
- "description": "Field definitions"
1169
- },
1170
- {
1171
- "name": "submitText",
1172
- "type": "string",
1173
- "required": false,
1174
- "default": "\"Submit\"",
1175
- "description": "Submit button text"
1176
- },
1177
- {
1178
- "name": "submitLoadingText",
1179
- "type": "string",
1180
- "required": false,
1181
- "default": "\"Submitting...\"",
1182
- "description": "Submit button loading text"
1183
- },
1184
- {
1185
- "name": "showSubmit",
1186
- "type": "boolean",
1187
- "required": false,
1188
- "default": "true",
1189
- "description": "Show submit button"
1190
- }
1191
- ],
1192
- "events": [
1193
- {
1194
- "name": "submit",
1195
- "description": "",
1196
- "properties": []
1197
- }
1198
- ],
1178
+ "props": [],
1179
+ "events": [],
1199
1180
  "slots": [
1200
1181
  {
1201
- "name": "`field-${field.key}`",
1182
+ "name": "name",
1202
1183
  "description": "",
1203
1184
  "bindings": [
1204
1185
  {
1205
1186
  "name": "name",
1206
1187
  "title": "binding"
1207
- },
1208
- {
1209
- "name": "field",
1210
- "title": "binding"
1211
- },
1212
- {
1213
- "name": "form",
1214
- "title": "binding"
1215
1188
  }
1216
1189
  ]
1217
- },
1218
- {
1219
- "name": "footer",
1220
- "description": "",
1221
- "bindings": []
1222
1190
  }
1223
1191
  ],
1224
1192
  "methods": []
@@ -1459,6 +1427,125 @@
1459
1427
  ],
1460
1428
  "methods": []
1461
1429
  },
1430
+ {
1431
+ "name": "DXField",
1432
+ "category": "extended",
1433
+ "filePath": "resources/js/components/extended/DXField.vue",
1434
+ "description": "",
1435
+ "props": [
1436
+ {
1437
+ "name": "field",
1438
+ "type": "FieldDefinition",
1439
+ "required": true,
1440
+ "description": "Field definition to render"
1441
+ },
1442
+ {
1443
+ "name": "form",
1444
+ "type": "UseFormReturn",
1445
+ "required": true,
1446
+ "description": "Form instance owning the field's data and errors"
1447
+ },
1448
+ {
1449
+ "name": "model",
1450
+ "type": "any",
1451
+ "required": false,
1452
+ "description": "Model passed to predicates (label/hint/when/disabled/readonly).\nDefaults to the live form data; a parent may widen it (e.g. a table\nmerging the original row)."
1453
+ },
1454
+ {
1455
+ "name": "keyPath",
1456
+ "type": "string",
1457
+ "required": false,
1458
+ "description": "Dot path into form.data for the value (defaults to field.key)."
1459
+ },
1460
+ {
1461
+ "name": "errorKey",
1462
+ "type": "string",
1463
+ "required": false,
1464
+ "description": "Error key for validation lookups (defaults to keyPath/field.key)."
1465
+ }
1466
+ ],
1467
+ "events": [],
1468
+ "slots": [
1469
+ {
1470
+ "name": "span",
1471
+ "description": "",
1472
+ "bindings": [
1473
+ {
1474
+ "name": "field",
1475
+ "title": "binding"
1476
+ },
1477
+ {
1478
+ "name": "model",
1479
+ "title": "binding"
1480
+ },
1481
+ {
1482
+ "name": "value",
1483
+ "title": "binding"
1484
+ },
1485
+ {
1486
+ "name": "update",
1487
+ "title": "binding"
1488
+ }
1489
+ ]
1490
+ },
1491
+ {
1492
+ "name": "value",
1493
+ "description": "",
1494
+ "bindings": [
1495
+ {
1496
+ "name": "field",
1497
+ "title": "binding"
1498
+ },
1499
+ {
1500
+ "name": "model",
1501
+ "title": "binding"
1502
+ },
1503
+ {
1504
+ "name": "value",
1505
+ "title": "binding"
1506
+ },
1507
+ {
1508
+ "name": "update",
1509
+ "title": "binding"
1510
+ }
1511
+ ]
1512
+ },
1513
+ {
1514
+ "name": "info",
1515
+ "description": "",
1516
+ "bindings": [
1517
+ {
1518
+ "name": "field",
1519
+ "title": "binding"
1520
+ },
1521
+ {
1522
+ "name": "model",
1523
+ "title": "binding"
1524
+ }
1525
+ ]
1526
+ },
1527
+ {
1528
+ "name": "hint",
1529
+ "description": "",
1530
+ "bindings": [
1531
+ {
1532
+ "name": "field",
1533
+ "title": "binding"
1534
+ },
1535
+ {
1536
+ "name": "model",
1537
+ "title": "binding"
1538
+ }
1539
+ ]
1540
+ },
1541
+ {
1542
+ "name": "repeater-row",
1543
+ "description": "",
1544
+ "bindings": []
1545
+ }
1546
+ ],
1547
+ "methods": []
1548
+ },
1462
1549
  {
1463
1550
  "name": "DXForm",
1464
1551
  "category": "extended",
@@ -1467,9 +1554,27 @@
1467
1554
  "props": [
1468
1555
  {
1469
1556
  "name": "form",
1470
- "type": "DefineFormReturn",
1557
+ "type": "union",
1471
1558
  "required": true,
1472
- "description": "Form object from defineForm"
1559
+ "description": "Form instance — either a raw `useForm` return or a `defineForm`\nreturn (`{ form, fields }`). With the latter, `fields` may be\nomitted and is taken from the form object."
1560
+ },
1561
+ {
1562
+ "name": "fields",
1563
+ "type": "Array",
1564
+ "required": false,
1565
+ "description": "Field definitions (optional when `form` is a defineForm return)."
1566
+ },
1567
+ {
1568
+ "name": "tabs",
1569
+ "type": "Array",
1570
+ "required": false,
1571
+ "description": "Tab definitions. When omitted, a flat single-column form renders."
1572
+ },
1573
+ {
1574
+ "name": "context",
1575
+ "type": "Record",
1576
+ "required": false,
1577
+ "description": "Extra context merged under the live form data when evaluating\npredicates (label/hint/when/disabled). E.g. a table passes the\noriginal row so predicates can read non-edited columns."
1473
1578
  },
1474
1579
  {
1475
1580
  "name": "submitText",
@@ -1490,7 +1595,14 @@
1490
1595
  "type": "boolean",
1491
1596
  "required": false,
1492
1597
  "default": "true",
1493
- "description": "Show submit button"
1598
+ "description": "Show the submit button"
1599
+ },
1600
+ {
1601
+ "name": "autoErrorTab",
1602
+ "type": "boolean",
1603
+ "required": false,
1604
+ "default": "true",
1605
+ "description": "Auto-switch to the first tab containing a validation error."
1494
1606
  }
1495
1607
  ],
1496
1608
  "events": [
@@ -1502,12 +1614,138 @@
1502
1614
  ],
1503
1615
  "slots": [
1504
1616
  {
1505
- "name": "name",
1617
+ "name": "`tab-content(${tab.key})`",
1618
+ "description": "",
1619
+ "bindings": [
1620
+ {
1621
+ "name": "name",
1622
+ "title": "binding"
1623
+ },
1624
+ {
1625
+ "name": "tab",
1626
+ "title": "binding"
1627
+ },
1628
+ {
1629
+ "name": "model",
1630
+ "title": "binding"
1631
+ }
1632
+ ]
1633
+ },
1634
+ {
1635
+ "name": "`tab-before(${tab.key})`",
1506
1636
  "description": "",
1507
1637
  "bindings": [
1508
1638
  {
1509
1639
  "name": "name",
1510
1640
  "title": "binding"
1641
+ },
1642
+ {
1643
+ "name": "tab",
1644
+ "title": "binding"
1645
+ },
1646
+ {
1647
+ "name": "model",
1648
+ "title": "binding"
1649
+ }
1650
+ ]
1651
+ },
1652
+ {
1653
+ "name": "slotName",
1654
+ "description": "",
1655
+ "bindings": [
1656
+ {
1657
+ "name": "name",
1658
+ "title": "binding"
1659
+ }
1660
+ ]
1661
+ },
1662
+ {
1663
+ "name": "`tab-after(${tab.key})`",
1664
+ "description": "",
1665
+ "bindings": [
1666
+ {
1667
+ "name": "name",
1668
+ "title": "binding"
1669
+ },
1670
+ {
1671
+ "name": "tab",
1672
+ "title": "binding"
1673
+ },
1674
+ {
1675
+ "name": "model",
1676
+ "title": "binding"
1677
+ }
1678
+ ]
1679
+ },
1680
+ {
1681
+ "name": "footer",
1682
+ "description": "",
1683
+ "bindings": [
1684
+ {
1685
+ "name": "form",
1686
+ "title": "binding"
1687
+ }
1688
+ ]
1689
+ }
1690
+ ],
1691
+ "methods": []
1692
+ },
1693
+ {
1694
+ "name": "DXRepeater",
1695
+ "category": "extended",
1696
+ "filePath": "resources/js/components/extended/DXRepeater.vue",
1697
+ "description": "",
1698
+ "props": [
1699
+ {
1700
+ "name": "form",
1701
+ "type": "UseFormReturn",
1702
+ "required": true,
1703
+ "description": "Form instance owning the repeater array"
1704
+ },
1705
+ {
1706
+ "name": "field",
1707
+ "type": "FieldDefinition",
1708
+ "required": true,
1709
+ "description": "The repeater field definition (provides sub-fields, limits, labels)"
1710
+ },
1711
+ {
1712
+ "name": "keyPath",
1713
+ "type": "string",
1714
+ "required": false,
1715
+ "description": "Dot path into form.data for the array (defaults to field.key)"
1716
+ },
1717
+ {
1718
+ "name": "model",
1719
+ "type": "any",
1720
+ "required": false,
1721
+ "description": "Model passed to predicates from the parent context"
1722
+ }
1723
+ ],
1724
+ "events": [],
1725
+ "slots": [
1726
+ {
1727
+ "name": "row",
1728
+ "description": "",
1729
+ "bindings": [
1730
+ {
1731
+ "name": "row",
1732
+ "title": "binding"
1733
+ },
1734
+ {
1735
+ "name": "index",
1736
+ "title": "binding"
1737
+ },
1738
+ {
1739
+ "name": "fields",
1740
+ "title": "binding"
1741
+ },
1742
+ {
1743
+ "name": "remove",
1744
+ "title": "binding"
1745
+ },
1746
+ {
1747
+ "name": "path",
1748
+ "title": "binding"
1511
1749
  }
1512
1750
  ]
1513
1751
  }
@@ -1728,6 +1966,18 @@
1728
1966
  "type": "string",
1729
1967
  "required": false,
1730
1968
  "description": "API endpoint pattern for deletions (e.g., \"/api/products/:id\")"
1969
+ },
1970
+ {
1971
+ "name": "createUrl",
1972
+ "type": "string",
1973
+ "required": false,
1974
+ "description": "API endpoint for creating new items (e.g., \"/api/products\") — enables \"New\" button"
1975
+ },
1976
+ {
1977
+ "name": "clientSide",
1978
+ "type": "boolean",
1979
+ "required": false,
1980
+ "description": "Enable client-side filtering, sorting, and pagination on items array"
1731
1981
  }
1732
1982
  ],
1733
1983
  "events": [
@@ -1756,6 +2006,16 @@
1756
2006
  "description": "",
1757
2007
  "properties": []
1758
2008
  },
2009
+ {
2010
+ "name": "rowCreated",
2011
+ "description": "",
2012
+ "properties": []
2013
+ },
2014
+ {
2015
+ "name": "createError",
2016
+ "description": "",
2017
+ "properties": []
2018
+ },
1759
2019
  {
1760
2020
  "name": "rowUpdated",
1761
2021
  "description": "",
@@ -1814,7 +2074,7 @@
1814
2074
  ]
1815
2075
  },
1816
2076
  {
1817
- "name": "`tab-content(${tab.key})`",
2077
+ "name": "`edit-value(${key})`",
1818
2078
  "description": "",
1819
2079
  "bindings": [
1820
2080
  {
@@ -1826,31 +2086,21 @@
1826
2086
  "title": "binding"
1827
2087
  },
1828
2088
  {
1829
- "name": "tab",
1830
- "title": "binding"
1831
- }
1832
- ]
1833
- },
1834
- {
1835
- "name": "`tab-before(${tab.key})`",
1836
- "description": "",
1837
- "bindings": [
1838
- {
1839
- "name": "name",
2089
+ "name": "value",
1840
2090
  "title": "binding"
1841
2091
  },
1842
2092
  {
1843
- "name": "item",
2093
+ "name": "update",
1844
2094
  "title": "binding"
1845
2095
  },
1846
2096
  {
1847
- "name": "tab",
2097
+ "name": "field",
1848
2098
  "title": "binding"
1849
2099
  }
1850
2100
  ]
1851
2101
  },
1852
2102
  {
1853
- "name": "`edit-span(${fieldKey})`",
2103
+ "name": "`edit-span(${key})`",
1854
2104
  "description": "",
1855
2105
  "bindings": [
1856
2106
  {
@@ -1876,7 +2126,7 @@
1876
2126
  ]
1877
2127
  },
1878
2128
  {
1879
- "name": "`edit-value(${fieldKey})`",
2129
+ "name": "`tab-content(${key})`",
1880
2130
  "description": "",
1881
2131
  "bindings": [
1882
2132
  {
@@ -1888,21 +2138,31 @@
1888
2138
  "title": "binding"
1889
2139
  },
1890
2140
  {
1891
- "name": "value",
2141
+ "name": "tab",
2142
+ "title": "binding"
2143
+ }
2144
+ ]
2145
+ },
2146
+ {
2147
+ "name": "`tab-before(${key})`",
2148
+ "description": "",
2149
+ "bindings": [
2150
+ {
2151
+ "name": "name",
1892
2152
  "title": "binding"
1893
2153
  },
1894
2154
  {
1895
- "name": "update",
2155
+ "name": "item",
1896
2156
  "title": "binding"
1897
2157
  },
1898
2158
  {
1899
- "name": "field",
2159
+ "name": "tab",
1900
2160
  "title": "binding"
1901
2161
  }
1902
2162
  ]
1903
2163
  },
1904
2164
  {
1905
- "name": "`tab-after(${tab.key})`",
2165
+ "name": "`tab-after(${key})`",
1906
2166
  "description": "",
1907
2167
  "bindings": [
1908
2168
  {
@@ -1925,8 +2185,8 @@
1925
2185
  ]
1926
2186
  },
1927
2187
  "stats": {
1928
- "totalComponents": 61,
1929
- "baseComponents": 55,
1930
- "extendedComponents": 6
2188
+ "totalComponents": 64,
2189
+ "baseComponents": 56,
2190
+ "extendedComponents": 8
1931
2191
  }
1932
2192
  }
@@ -1,7 +1,7 @@
1
1
  # Documentation Map
2
2
 
3
3
  > Auto-generated hierarchical overview of all documentation
4
- > Last updated: 2025-12-02T13:23:09.125Z
4
+ > Last updated: 2026-06-28T12:36:46.494Z
5
5
 
6
6
  This file provides a complete map of all available documentation for AI agents and developers.
7
7
 
@@ -69,11 +69,12 @@ This file provides a complete map of all available documentation for AI agents a
69
69
 
70
70
  ### Extended
71
71
 
72
- - [DXBasicForm](/components/extended/DXBasicForm): Form instance from useForm composable
73
72
  - [DXDashboard](/components/extended/DXDashboard): Complete dashboard layout component that combines sidebar navigation, top navbar, and content area.
74
73
  - [DXDashboardNavbar](/components/extended/DXDashboardNavbar): A responsive top navigation bar component for Laravel dashboards with user menu, search functionalit
75
74
  - [DXDashboardSidebar](/components/extended/DXDashboardSidebar): A collapsible sidebar navigation component for Laravel dashboards with support for navigation groups
76
- - [DXForm](/components/extended/DXForm): Form object from defineForm
75
+ - [DXField](/components/extended/DXField): The single-field renderer that powers `DXForm` and
76
+ - [DXForm](/components/extended/DXForm): The canonical form renderer. Drive it with field definitions; add `tabs` when
77
+ - [DXRepeater](/components/extended/DXRepeater): A repeatable sub-form (field array) primitive for nested, dynamic collections —
77
78
  - [DXTable](/components/extended/DXTable): A comprehensive data table component with built-in pagination, sorting, filtering, and CRUD operatio
78
79
 
79
80
  ### Examples
@@ -93,4 +94,4 @@ This file provides a complete map of all available documentation for AI agents a
93
94
 
94
95
  ---
95
96
 
96
- **Total Pages**: 69
97
+ **Total Pages**: 70
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Vue 3 dashboard components for Laravel with Bootstrap Vue Next
4
4
  >
5
- > A dual-package library (NPM + Composer) providing 61 Vue 3 components for building Laravel dashboards with Bootstrap Vue Next.
5
+ > A dual-package library (NPM + Composer) providing 64 Vue 3 components for building Laravel dashboards with Bootstrap Vue Next.
6
6
 
7
7
  ## Installation
8
8
 
@@ -19,7 +19,7 @@
19
19
  - [Theming](/guide/theming): Customize appearance with CSS variables
20
20
  - [TypeScript](/guide/typescript): TypeScript types and best practices
21
21
 
22
- ## Base Components (55 components)
22
+ ## Base Components (56 components)
23
23
 
24
24
  Lightweight type-safe wrappers around Bootstrap Vue Next components providing API stability and consistent theming.
25
25
 
@@ -47,6 +47,7 @@ Lightweight type-safe wrappers around Bootstrap Vue Next components providing AP
47
47
  - [DFormInput](/components/base/dforminput): Bootstrap Vue Next FormInput wrapper
48
48
  - [DFormInvalidFeedback](/components/base/dforminvalidfeedback): Bootstrap Vue Next FormInvalidFeedback wrapper
49
49
  - [DFormRadio](/components/base/dformradio): Bootstrap Vue Next FormRadio wrapper
50
+ - [DFormRadioGroup](/components/base/dformradiogroup): Bootstrap Vue Next FormRadioGroup wrapper
50
51
  - [DFormSelect](/components/base/dformselect): Bootstrap Vue Next FormSelect wrapper
51
52
  - [DFormSpinbutton](/components/base/dformspinbutton): Bootstrap Vue Next FormSpinbutton wrapper
52
53
  - [DFormTags](/components/base/dformtags): Bootstrap Vue Next FormTags wrapper
@@ -79,15 +80,17 @@ Lightweight type-safe wrappers around Bootstrap Vue Next components providing AP
79
80
  - [DToaster](/components/base/dtoaster): Bootstrap Vue Next Toaster wrapper
80
81
  - [DTooltip](/components/base/dtooltip): Bootstrap Vue Next Tooltip wrapper
81
82
 
82
- ## Extended Components (6 components)
83
+ ## Extended Components (8 components)
83
84
 
84
85
  Custom dashboard components with advanced functionality beyond Bootstrap Vue Next.
85
86
 
86
- - [DXBasicForm](/components/extended/dxbasicform): Auto-generated forms from field definitions
87
+ - [DXBasicForm](/components/extended/dxbasicform): Extended dashboard component
87
88
  - [DXDashboard](/components/extended/dxdashboard): Complete dashboard layout with sidebar and navbar
88
89
  - [DXDashboardNavbar](/components/extended/dxdashboardnavbar): Top navbar with user dropdown
89
90
  - [DXDashboardSidebar](/components/extended/dxdashboardsidebar): Collapsible sidebar with navigation
90
- - [DXForm](/components/extended/dxform): Advanced form wrapper with defineForm integration
91
+ - [DXField](/components/extended/dxfield): Single-field renderer for any field type with value/span/info/hint slots
92
+ - [DXForm](/components/extended/dxform): Form renderer driven by field definitions, with optional tabs, conditional fields, per-field slots, async options, nested repeaters, and auto error-tab switching
93
+ - [DXRepeater](/components/extended/dxrepeater): Repeatable nested sub-form (field array) primitive
91
94
  - [DXTable](/components/extended/dxtable): Data table with pagination, filtering, and sorting
92
95
 
93
96
  ## Composables
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnitend/dashboard-for-laravel",
3
- "version": "0.4.14",
3
+ "version": "0.5.0",
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",
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @component
3
+ * Type-safe wrapper around Bootstrap Vue Next BFormRadioGroup component.
4
+ * Renders a group of radio inputs from an `options` array or slot content.
5
+ */
6
+ <script setup lang="ts">
7
+ import { BFormRadioGroup } from "bootstrap-vue-next";
8
+
9
+ defineOptions({
10
+ inheritAttrs: false,
11
+ });
12
+ </script>
13
+
14
+ <template>
15
+ <BFormRadioGroup v-bind="$attrs">
16
+ <!-- Dynamically pass through all named slots with their props -->
17
+ <template v-for="(_, name) in $slots" :key="name" #[name]="slotProps">
18
+ <slot :name="name" v-bind="slotProps" />
19
+ </template>
20
+ </BFormRadioGroup>
21
+ </template>