@omnitend/dashboard-for-laravel 0.19.2 → 0.22.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.
- package/dist/components/extended/DXDashboard.vue.d.ts +22 -6
- package/dist/components/extended/DXDashboardNavbar.vue.d.ts +16 -0
- package/dist/components/extended/DXFieldLabel.vue.d.ts +11 -1
- package/dist/components/extended/DXFormField.vue.d.ts +41 -0
- package/dist/components/extended/DXSwitch.vue.d.ts +30 -0
- package/dist/components/extended/dxFieldContext.d.ts +11 -0
- package/dist/dashboard-for-laravel.js +10913 -10827
- package/dist/dashboard-for-laravel.js.map +1 -1
- package/dist/dashboard-for-laravel.umd.cjs +8 -8
- package/dist/dashboard-for-laravel.umd.cjs.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/style.css +1 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/navigation.d.ts +13 -0
- package/dist/utils/api.d.ts +1 -1
- package/docs/public/api-reference.json +255 -103
- package/docs/public/docs-map.md +3 -2
- package/docs/public/llms.txt +3 -2
- package/package.json +9 -5
- package/resources/css/theme.scss +22 -3
- package/resources/js/components/extended/DXDashboard.vue +32 -10
- package/resources/js/components/extended/DXDashboardNavbar.vue +104 -26
- package/resources/js/components/extended/DXField.vue +66 -77
- package/resources/js/components/extended/DXFieldLabel.vue +18 -3
- package/resources/js/components/extended/DXForm.vue +31 -109
- package/resources/js/components/extended/DXFormField.vue +98 -0
- package/resources/js/components/extended/DXSwitch.vue +153 -0
- package/resources/js/components/extended/dxFieldContext.ts +14 -0
- package/resources/js/composables/useForm.ts +10 -3
- package/resources/js/index.ts +3 -0
- package/resources/js/types/index.ts +4 -1
- package/resources/js/types/navigation.ts +15 -0
- package/resources/js/utils/api.ts +19 -2
package/dist/types/index.d.ts
CHANGED
|
@@ -123,7 +123,10 @@ export interface FieldDefinition {
|
|
|
123
123
|
* Longer help text revealed in a popover from a small info affordance
|
|
124
124
|
* on the field's label (on hover/focus). Complements `hint` (which is
|
|
125
125
|
* always-visible muted text below the control). May be a function of
|
|
126
|
-
* the model.
|
|
126
|
+
* the model. Plain text only — for a rich popover body (lists, bold,
|
|
127
|
+
* paragraphs) use the `#info-popover(<key>)` slot. Note the separate
|
|
128
|
+
* `#info(<key>)` slot renders an always-visible block below the control,
|
|
129
|
+
* not popover content.
|
|
127
130
|
*/
|
|
128
131
|
info?: MaybeFn<string>;
|
|
129
132
|
/**
|
|
@@ -28,3 +28,16 @@ export interface NavigationGroup {
|
|
|
28
28
|
visible?: boolean;
|
|
29
29
|
}
|
|
30
30
|
export type Navigation = NavigationGroup[];
|
|
31
|
+
/**
|
|
32
|
+
* Horizontal alignment of the navbar search slot content within its region:
|
|
33
|
+
* `"start"` = flush left (after the title from `md` up), `"center"` = centred.
|
|
34
|
+
* Shared by DXDashboard (which forwards it) and DXDashboardNavbar.
|
|
35
|
+
*/
|
|
36
|
+
export type NavbarSearchAlign = "start" | "center";
|
|
37
|
+
/**
|
|
38
|
+
* What the navbar actions slot does below the `md` breakpoint: `"wrap"` moves
|
|
39
|
+
* it to its own full-width row (the bar grows), `"hide"` removes it entirely
|
|
40
|
+
* (for apps that relocate page actions into the page on phones).
|
|
41
|
+
* Shared by DXDashboard (which forwards it) and DXDashboardNavbar.
|
|
42
|
+
*/
|
|
43
|
+
export type NavbarActionsOnMobile = "wrap" | "hide";
|
package/dist/utils/api.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ declare class ApiClient {
|
|
|
24
24
|
post<T = unknown>(url: string, data?: any, options?: Omit<RequestOptions, "method" | "body">): Promise<ApiResponse<T>>;
|
|
25
25
|
put<T = unknown>(url: string, data?: any, options?: Omit<RequestOptions, "method" | "body">): Promise<ApiResponse<T>>;
|
|
26
26
|
patch<T = unknown>(url: string, data?: any, options?: Omit<RequestOptions, "method" | "body">): Promise<ApiResponse<T>>;
|
|
27
|
-
delete<T = unknown>(url: string, options?: Omit<RequestOptions, "method">): Promise<ApiResponse<T>>;
|
|
27
|
+
delete<T = unknown>(url: string, data?: any, options?: Omit<RequestOptions, "method" | "body">): Promise<ApiResponse<T>>;
|
|
28
28
|
}
|
|
29
29
|
export declare const api: ApiClient;
|
|
30
30
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generated": "2026-07-
|
|
2
|
+
"generated": "2026-07-11T04:13:01.837Z",
|
|
3
3
|
"package": {
|
|
4
4
|
"name": "@omnitend/dashboard-for-laravel",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.21.0"
|
|
6
6
|
},
|
|
7
7
|
"components": {
|
|
8
8
|
"base": [
|
|
@@ -205,19 +205,19 @@
|
|
|
205
205
|
"type": "boolean",
|
|
206
206
|
"required": false,
|
|
207
207
|
"default": "false",
|
|
208
|
-
"description": "Show an in-flight state: the button is disabled immediately and, after\n`spinnerDelay`, a trailing spinner appears (and the label swaps to\n`loadingText` if given)."
|
|
208
|
+
"description": "Show an in-flight state: the button is disabled immediately and, after\n`spinnerDelay`, a trailing spinner appears (and the label swaps to\n`loadingText` if given).\n\nDiverges from bvn: `BButton` has a native `loading`/`loadingText` that\nshows its spinner immediately. We intercept both and render our own\nanti-flash spinner instead, so bvn's native loading never fires. See\nDIVERGENCES.md."
|
|
209
209
|
},
|
|
210
210
|
{
|
|
211
211
|
"name": "loadingText",
|
|
212
212
|
"type": "string",
|
|
213
213
|
"required": false,
|
|
214
|
-
"description": "Label shown in place of the default slot while the spinner is visible.\nOmit to keep the original label alongside the spinner."
|
|
214
|
+
"description": "Label shown in place of the default slot while the spinner is visible.\nOmit to keep the original label alongside the spinner. (See `loading` re:\nthe bvn divergence.)"
|
|
215
215
|
},
|
|
216
216
|
{
|
|
217
217
|
"name": "icon",
|
|
218
218
|
"type": "string",
|
|
219
219
|
"required": false,
|
|
220
|
-
"description": "Leading Bootstrap Icons glyph name, rendered as `<i class=\"bi bi-{icon}\">`.\ne.g. `icon=\"save\"`. Hidden while the loading spinner is visible."
|
|
220
|
+
"description": "Leading Bootstrap Icons glyph name, rendered as `<i class=\"bi bi-{icon}\">`.\ne.g. `icon=\"save\"`. Hidden while the loading spinner is visible.\n\nDiverges from bvn: `BButton`'s native `icon` is a `boolean` (icon-button\nstyling mode). We redefine it as a glyph-name `string`, so bvn's boolean\nicon mode is unreachable through `DButton`. See DIVERGENCES.md."
|
|
221
221
|
},
|
|
222
222
|
{
|
|
223
223
|
"name": "block",
|
|
@@ -600,9 +600,42 @@
|
|
|
600
600
|
"name": "DFormSelect",
|
|
601
601
|
"category": "base",
|
|
602
602
|
"filePath": "resources/js/components/base/DFormSelect.vue",
|
|
603
|
-
"description": "",
|
|
604
|
-
"props": [
|
|
605
|
-
|
|
603
|
+
"description": "Type-safe wrapper around Bootstrap Vue Next BFormSelect. Adds one behaviour BVN lacks: a `select` option whose value is `null` round-trips correctly. BVN renders each option's value as a plain HTML `value` attribute, so when that value is `null` Vue omits the attribute and the browser falls back to using the option's *text* as its DOM value — a model bound to `null` then matches no option and the select renders blank. We map a `null` option value (and a `null` model) to a private string sentinel so BVN renders a real value attribute, while keeping the consumer's model and emitted value as `null`. Legacy Bootstrap-Vue (BS4) handled this; BVN does not. (Radios likely need the same treatment — see #81.)",
|
|
604
|
+
"props": [
|
|
605
|
+
{
|
|
606
|
+
"name": "modelValue",
|
|
607
|
+
"type": "union",
|
|
608
|
+
"required": false,
|
|
609
|
+
"description": ""
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
"name": "options",
|
|
613
|
+
"type": "TSTypeOperator",
|
|
614
|
+
"required": false,
|
|
615
|
+
"description": ""
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
"name": "valueField",
|
|
619
|
+
"type": "string",
|
|
620
|
+
"required": false,
|
|
621
|
+
"default": "\"value\"",
|
|
622
|
+
"description": "Key on object options that holds the value (BVN default: \"value\")."
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
"name": "optionsField",
|
|
626
|
+
"type": "string",
|
|
627
|
+
"required": false,
|
|
628
|
+
"default": "\"options\"",
|
|
629
|
+
"description": "Key on object options that holds nested options / groups (BVN default: \"options\")."
|
|
630
|
+
}
|
|
631
|
+
],
|
|
632
|
+
"events": [
|
|
633
|
+
{
|
|
634
|
+
"name": "update:modelValue",
|
|
635
|
+
"description": "",
|
|
636
|
+
"properties": []
|
|
637
|
+
}
|
|
638
|
+
],
|
|
606
639
|
"slots": [
|
|
607
640
|
{
|
|
608
641
|
"name": "name",
|
|
@@ -1361,7 +1394,14 @@
|
|
|
1361
1394
|
"name": "fluid",
|
|
1362
1395
|
"type": "boolean",
|
|
1363
1396
|
"required": false,
|
|
1364
|
-
"description": "Render the page content full-width and left-aligned instead of the default\ncentred, reading-width
|
|
1397
|
+
"description": "Render the page content full-width and left-aligned instead of the default\ncentred, reading-width column. Use for data-heavy admin pages (wide tables)."
|
|
1398
|
+
},
|
|
1399
|
+
{
|
|
1400
|
+
"name": "contentMaxWidth",
|
|
1401
|
+
"type": "string",
|
|
1402
|
+
"required": false,
|
|
1403
|
+
"default": "'1140px'",
|
|
1404
|
+
"description": "Max width of the centred content column (any CSS length). A genuine cap, so\nforms and text-heavy pages don't stretch to ~2000px on a wide display.\nIgnored when `fluid`. Set a large value (or use `fluid`) for full width."
|
|
1365
1405
|
},
|
|
1366
1406
|
{
|
|
1367
1407
|
"name": "contentClass",
|
|
@@ -1377,11 +1417,18 @@
|
|
|
1377
1417
|
"description": "User object for navbar dropdown"
|
|
1378
1418
|
},
|
|
1379
1419
|
{
|
|
1380
|
-
"name": "
|
|
1381
|
-
"type": "
|
|
1420
|
+
"name": "searchAlign",
|
|
1421
|
+
"type": "NavbarSearchAlign",
|
|
1382
1422
|
"required": false,
|
|
1383
|
-
"default": "'
|
|
1384
|
-
"description": "
|
|
1423
|
+
"default": "'start'",
|
|
1424
|
+
"description": "Horizontal alignment of the navbar search slot content (`\"start\"` = flush\nleft, `\"center\"` = centred), forwarded to DXDashboardNavbar."
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
"name": "actionsOnMobile",
|
|
1428
|
+
"type": "NavbarActionsOnMobile",
|
|
1429
|
+
"required": false,
|
|
1430
|
+
"default": "'wrap'",
|
|
1431
|
+
"description": "What the navbar actions slot does below `md`: `\"wrap\"` to its own\nfull-width row, `\"hide\"` to remove it (relocate actions into the page on\nphones). Forwarded to DXDashboardNavbar."
|
|
1385
1432
|
},
|
|
1386
1433
|
{
|
|
1387
1434
|
"name": "collapsibleGroups",
|
|
@@ -1436,7 +1483,7 @@
|
|
|
1436
1483
|
"name": "DXDashboardNavbar",
|
|
1437
1484
|
"category": "extended",
|
|
1438
1485
|
"filePath": "resources/js/components/extended/DXDashboardNavbar.vue",
|
|
1439
|
-
"description": "Top navigation bar for the dashboard shell: menu toggle, page title,
|
|
1486
|
+
"description": "Top navigation bar for the dashboard shell: menu toggle, page title, search (aligned per `searchAlign`, left by default), page-level actions, and the user menu. Usually rendered by `DXDashboard`, which forwards these slots with a `navbar-` prefix.",
|
|
1440
1487
|
"props": [
|
|
1441
1488
|
{
|
|
1442
1489
|
"name": "user",
|
|
@@ -1451,6 +1498,20 @@
|
|
|
1451
1498
|
"required": false,
|
|
1452
1499
|
"default": "\"\"",
|
|
1453
1500
|
"description": "Page title shown at the left of the navbar (hidden below the `md` breakpoint)."
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
"name": "searchAlign",
|
|
1504
|
+
"type": "NavbarSearchAlign",
|
|
1505
|
+
"required": false,
|
|
1506
|
+
"default": "\"start\"",
|
|
1507
|
+
"description": "Horizontal alignment of the search slot content within its region\n(`\"start\"` = flush left, `\"center\"` = centred). Applies at every size:\nthe region sits inline after the title from `md` up, and is its own\nfull-width row below."
|
|
1508
|
+
},
|
|
1509
|
+
{
|
|
1510
|
+
"name": "actionsOnMobile",
|
|
1511
|
+
"type": "NavbarActionsOnMobile",
|
|
1512
|
+
"required": false,
|
|
1513
|
+
"default": "\"wrap\"",
|
|
1514
|
+
"description": "What the actions slot does below the `md` breakpoint: `\"wrap\"` moves it\nto its own full-width row (the bar grows), `\"hide\"` removes it entirely\n(for apps that relocate page actions into the page on phones)."
|
|
1454
1515
|
}
|
|
1455
1516
|
],
|
|
1456
1517
|
"events": [
|
|
@@ -1468,12 +1529,12 @@
|
|
|
1468
1529
|
},
|
|
1469
1530
|
{
|
|
1470
1531
|
"name": "search",
|
|
1471
|
-
"description": "Search input or component.
|
|
1532
|
+
"description": "Search input or component. Aligned per `searchAlign` within its region (inline in the bar from `md` up; its own full-width row below).",
|
|
1472
1533
|
"bindings": []
|
|
1473
1534
|
},
|
|
1474
1535
|
{
|
|
1475
1536
|
"name": "actions",
|
|
1476
|
-
"description": "Page-level primary actions (e.g. a Create button)
|
|
1537
|
+
"description": "Page-level primary actions (e.g. a Create button). Right-aligned next to the user menu from `md` up; below, wraps to its own full-width row or is hidden entirely per `actionsOnMobile`.",
|
|
1477
1538
|
"bindings": [
|
|
1478
1539
|
{
|
|
1479
1540
|
"title": "binding",
|
|
@@ -1734,7 +1795,7 @@
|
|
|
1734
1795
|
"name": "DXField",
|
|
1735
1796
|
"category": "extended",
|
|
1736
1797
|
"filePath": "resources/js/components/extended/DXField.vue",
|
|
1737
|
-
"description": "Renders a single `FieldDefinition` of any type (text, select, autocomplete, checkbox, switch, repeater, currency, percentage, file/image, component, etc.) with its label, validation error, hint and help. Used by `DXForm` and `DXTable`'s edit modal; exposes `value`, `span`, `info`, `hint` and `repeater-row` slots for per-field customisation.",
|
|
1798
|
+
"description": "Renders a single `FieldDefinition` of any type (text, select, autocomplete, checkbox, switch, repeater, currency, percentage, file/image, component, etc.) with its label, validation error, hint and help. Used by `DXForm` and `DXTable`'s edit modal; exposes `value`, `span`, `info`, `info-popover`, `hint` and `repeater-row` slots for per-field customisation.",
|
|
1738
1799
|
"props": [
|
|
1739
1800
|
{
|
|
1740
1801
|
"name": "field",
|
|
@@ -1782,7 +1843,7 @@
|
|
|
1782
1843
|
"name": "hideLabel",
|
|
1783
1844
|
"type": "boolean",
|
|
1784
1845
|
"required": false,
|
|
1785
|
-
"description": "Skip rendering the field's own label
|
|
1846
|
+
"description": "Skip rendering the field's own (outer) label. Applies to the standard\nlabelled-field branch and to the checkbox/switch/repeater branches. In\nhorizontal layout no label column is reserved either, so the control\nspans the full width (a switch/checkbox self-label then lines up with\nsibling row labels). Used by DXRepeater's `table` layout (a column\nheader already names the field) and by consumers hiding the redundant\nrow label on a switch/checkbox, which render their own label inside the\ncontrol (#78)."
|
|
1786
1847
|
}
|
|
1787
1848
|
],
|
|
1788
1849
|
"events": [],
|
|
@@ -1826,8 +1887,8 @@
|
|
|
1826
1887
|
]
|
|
1827
1888
|
},
|
|
1828
1889
|
{
|
|
1829
|
-
"name": "
|
|
1830
|
-
"description": "
|
|
1890
|
+
"name": "hint",
|
|
1891
|
+
"description": "Overrides the field's hint text shown below the control.",
|
|
1831
1892
|
"bindings": [
|
|
1832
1893
|
{
|
|
1833
1894
|
"title": "binding",
|
|
@@ -1844,28 +1905,12 @@
|
|
|
1844
1905
|
},
|
|
1845
1906
|
"name": "model",
|
|
1846
1907
|
"description": "The model passed to field predicates (defaults to the live form data)."
|
|
1847
|
-
},
|
|
1848
|
-
{
|
|
1849
|
-
"title": "binding",
|
|
1850
|
-
"type": {
|
|
1851
|
-
"name": "any"
|
|
1852
|
-
},
|
|
1853
|
-
"name": "value",
|
|
1854
|
-
"description": "The current field value."
|
|
1855
|
-
},
|
|
1856
|
-
{
|
|
1857
|
-
"title": "binding",
|
|
1858
|
-
"type": {
|
|
1859
|
-
"name": "(value: any) => void"
|
|
1860
|
-
},
|
|
1861
|
-
"name": "update",
|
|
1862
|
-
"description": "Setter that writes the value back and clears the field's validation error."
|
|
1863
1908
|
}
|
|
1864
1909
|
]
|
|
1865
1910
|
},
|
|
1866
1911
|
{
|
|
1867
|
-
"name": "
|
|
1868
|
-
"description": "
|
|
1912
|
+
"name": "value",
|
|
1913
|
+
"description": "Replaces the built-in control with a custom value editor.",
|
|
1869
1914
|
"bindings": [
|
|
1870
1915
|
{
|
|
1871
1916
|
"title": "binding",
|
|
@@ -1882,12 +1927,28 @@
|
|
|
1882
1927
|
},
|
|
1883
1928
|
"name": "model",
|
|
1884
1929
|
"description": "The model passed to field predicates (defaults to the live form data)."
|
|
1930
|
+
},
|
|
1931
|
+
{
|
|
1932
|
+
"title": "binding",
|
|
1933
|
+
"type": {
|
|
1934
|
+
"name": "any"
|
|
1935
|
+
},
|
|
1936
|
+
"name": "value",
|
|
1937
|
+
"description": "The current field value."
|
|
1938
|
+
},
|
|
1939
|
+
{
|
|
1940
|
+
"title": "binding",
|
|
1941
|
+
"type": {
|
|
1942
|
+
"name": "(value: any) => void"
|
|
1943
|
+
},
|
|
1944
|
+
"name": "update",
|
|
1945
|
+
"description": "Setter that writes the value back and clears the field's validation error."
|
|
1885
1946
|
}
|
|
1886
1947
|
]
|
|
1887
1948
|
},
|
|
1888
1949
|
{
|
|
1889
|
-
"name": "
|
|
1890
|
-
"description": "
|
|
1950
|
+
"name": "info",
|
|
1951
|
+
"description": "Rich info block rendered below the control.",
|
|
1891
1952
|
"bindings": [
|
|
1892
1953
|
{
|
|
1893
1954
|
"title": "binding",
|
|
@@ -1935,7 +1996,13 @@
|
|
|
1935
1996
|
}
|
|
1936
1997
|
],
|
|
1937
1998
|
"events": [],
|
|
1938
|
-
"slots": [
|
|
1999
|
+
"slots": [
|
|
2000
|
+
{
|
|
2001
|
+
"name": "popover",
|
|
2002
|
+
"description": "Rich popover body. Overrides the plain `info` text — use",
|
|
2003
|
+
"bindings": []
|
|
2004
|
+
}
|
|
2005
|
+
],
|
|
1939
2006
|
"methods": []
|
|
1940
2007
|
},
|
|
1941
2008
|
{
|
|
@@ -2078,34 +2145,18 @@
|
|
|
2078
2145
|
]
|
|
2079
2146
|
},
|
|
2080
2147
|
{
|
|
2081
|
-
"name": "
|
|
2082
|
-
"description": "
|
|
2148
|
+
"name": "name",
|
|
2149
|
+
"description": "",
|
|
2083
2150
|
"bindings": [
|
|
2084
2151
|
{
|
|
2085
2152
|
"name": "name",
|
|
2086
2153
|
"title": "binding"
|
|
2087
|
-
},
|
|
2088
|
-
{
|
|
2089
|
-
"title": "binding",
|
|
2090
|
-
"type": {
|
|
2091
|
-
"name": "FieldDefinition"
|
|
2092
|
-
},
|
|
2093
|
-
"name": "field",
|
|
2094
|
-
"description": "The field definition being replaced."
|
|
2095
|
-
},
|
|
2096
|
-
{
|
|
2097
|
-
"title": "binding",
|
|
2098
|
-
"type": {
|
|
2099
|
-
"name": "object"
|
|
2100
|
-
},
|
|
2101
|
-
"name": "model",
|
|
2102
|
-
"description": "Live form data merged with `context`, for predicates."
|
|
2103
2154
|
}
|
|
2104
2155
|
]
|
|
2105
2156
|
},
|
|
2106
2157
|
{
|
|
2107
|
-
"name": "`
|
|
2108
|
-
"description": "Content inserted
|
|
2158
|
+
"name": "`tab-after(${tab.key})`",
|
|
2159
|
+
"description": "Content inserted below a tab's fields, keyed by tab (slot name `tab-after(<tabKey>)`).",
|
|
2109
2160
|
"bindings": [
|
|
2110
2161
|
{
|
|
2111
2162
|
"name": "name",
|
|
@@ -2114,10 +2165,10 @@
|
|
|
2114
2165
|
{
|
|
2115
2166
|
"title": "binding",
|
|
2116
2167
|
"type": {
|
|
2117
|
-
"name": "
|
|
2168
|
+
"name": "FormTab"
|
|
2118
2169
|
},
|
|
2119
|
-
"name": "
|
|
2120
|
-
"description": "The
|
|
2170
|
+
"name": "tab",
|
|
2171
|
+
"description": "The tab definition being rendered."
|
|
2121
2172
|
},
|
|
2122
2173
|
{
|
|
2123
2174
|
"title": "binding",
|
|
@@ -2130,78 +2181,122 @@
|
|
|
2130
2181
|
]
|
|
2131
2182
|
},
|
|
2132
2183
|
{
|
|
2133
|
-
"name": "
|
|
2134
|
-
"description": "
|
|
2184
|
+
"name": "footer",
|
|
2185
|
+
"description": "Content rendered below the submit button (e.g. a cancel link or secondary actions).",
|
|
2135
2186
|
"bindings": [
|
|
2136
2187
|
{
|
|
2137
|
-
"
|
|
2138
|
-
"
|
|
2188
|
+
"title": "binding",
|
|
2189
|
+
"type": {
|
|
2190
|
+
"name": "UseFormReturn"
|
|
2191
|
+
},
|
|
2192
|
+
"name": "form",
|
|
2193
|
+
"description": "The resolved form instance (state, errors, submit helpers)."
|
|
2139
2194
|
}
|
|
2140
2195
|
]
|
|
2196
|
+
}
|
|
2197
|
+
],
|
|
2198
|
+
"methods": []
|
|
2199
|
+
},
|
|
2200
|
+
{
|
|
2201
|
+
"name": "DXFormField",
|
|
2202
|
+
"category": "extended",
|
|
2203
|
+
"filePath": "resources/js/components/extended/DXFormField.vue",
|
|
2204
|
+
"description": "DXFormField — internal per-field renderer for DXForm. Owns the single per-field render block that DXForm's tabbed and flat layouts both need: the `field(<key>)` full-replacement slot, the `field-before(<key>)`/`field-after(<key>)` wrapper slots, and the `<DXField>` element with its `value`/`span`/`info`/`hint`/`repeater-row` slot forwarding. Extracted so those per-field props/slots are wired in ONE place — before this, DXForm carried two near-identical copies (tabbed + flat) and a new per-field prop had to be added to both, which was easy to miss (see #78/#83). DXForm forwards all of its slots into each instance; this component only reads the ones matching its field's key. Internal: not exported from the package index — consumers use DXForm.",
|
|
2205
|
+
"props": [
|
|
2206
|
+
{
|
|
2207
|
+
"name": "field",
|
|
2208
|
+
"type": "FieldDefinition",
|
|
2209
|
+
"required": true,
|
|
2210
|
+
"description": "The field to render."
|
|
2141
2211
|
},
|
|
2142
2212
|
{
|
|
2143
|
-
"name": "
|
|
2144
|
-
"
|
|
2213
|
+
"name": "form",
|
|
2214
|
+
"type": "UseFormReturn",
|
|
2215
|
+
"required": true,
|
|
2216
|
+
"description": "The resolved form instance (state, errors, submit helpers)."
|
|
2217
|
+
},
|
|
2218
|
+
{
|
|
2219
|
+
"name": "model",
|
|
2220
|
+
"type": "Record",
|
|
2221
|
+
"required": true,
|
|
2222
|
+
"description": "Live form data merged with context, for slot bindings/predicates."
|
|
2223
|
+
},
|
|
2224
|
+
{
|
|
2225
|
+
"name": "layout",
|
|
2226
|
+
"type": "union",
|
|
2227
|
+
"required": false,
|
|
2228
|
+
"description": "Form-level layout; overridden per-field by `field.layout`."
|
|
2229
|
+
},
|
|
2230
|
+
{
|
|
2231
|
+
"name": "labelCols",
|
|
2232
|
+
"type": "LabelCols",
|
|
2233
|
+
"required": false,
|
|
2234
|
+
"description": "Form-level label column width; overridden per-field by `field.labelCols`."
|
|
2235
|
+
}
|
|
2236
|
+
],
|
|
2237
|
+
"events": [],
|
|
2238
|
+
"slots": [
|
|
2239
|
+
{
|
|
2240
|
+
"name": "`field(${field.key})`",
|
|
2241
|
+
"description": "",
|
|
2145
2242
|
"bindings": [
|
|
2146
2243
|
{
|
|
2147
2244
|
"name": "name",
|
|
2148
2245
|
"title": "binding"
|
|
2149
2246
|
},
|
|
2150
2247
|
{
|
|
2151
|
-
"title": "binding",
|
|
2152
|
-
"type": {
|
|
2153
|
-
"name": "FieldDefinition"
|
|
2154
|
-
},
|
|
2155
2248
|
"name": "field",
|
|
2156
|
-
"
|
|
2249
|
+
"title": "binding"
|
|
2157
2250
|
},
|
|
2158
2251
|
{
|
|
2159
|
-
"title": "binding",
|
|
2160
|
-
"type": {
|
|
2161
|
-
"name": "object"
|
|
2162
|
-
},
|
|
2163
2252
|
"name": "model",
|
|
2164
|
-
"
|
|
2253
|
+
"title": "binding"
|
|
2165
2254
|
}
|
|
2166
2255
|
]
|
|
2167
2256
|
},
|
|
2168
2257
|
{
|
|
2169
|
-
"name": "`
|
|
2170
|
-
"description": "
|
|
2258
|
+
"name": "`field-before(${field.key})`",
|
|
2259
|
+
"description": "",
|
|
2171
2260
|
"bindings": [
|
|
2172
2261
|
{
|
|
2173
2262
|
"name": "name",
|
|
2174
2263
|
"title": "binding"
|
|
2175
2264
|
},
|
|
2176
2265
|
{
|
|
2177
|
-
"
|
|
2178
|
-
"
|
|
2179
|
-
"name": "FormTab"
|
|
2180
|
-
},
|
|
2181
|
-
"name": "tab",
|
|
2182
|
-
"description": "The tab definition being rendered."
|
|
2266
|
+
"name": "field",
|
|
2267
|
+
"title": "binding"
|
|
2183
2268
|
},
|
|
2184
2269
|
{
|
|
2185
|
-
"title": "binding",
|
|
2186
|
-
"type": {
|
|
2187
|
-
"name": "object"
|
|
2188
|
-
},
|
|
2189
2270
|
"name": "model",
|
|
2190
|
-
"
|
|
2271
|
+
"title": "binding"
|
|
2191
2272
|
}
|
|
2192
2273
|
]
|
|
2193
2274
|
},
|
|
2194
2275
|
{
|
|
2195
|
-
"name": "
|
|
2196
|
-
"description": "
|
|
2276
|
+
"name": "slotName",
|
|
2277
|
+
"description": "",
|
|
2197
2278
|
"bindings": [
|
|
2198
2279
|
{
|
|
2199
|
-
"
|
|
2200
|
-
"
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2280
|
+
"name": "name",
|
|
2281
|
+
"title": "binding"
|
|
2282
|
+
}
|
|
2283
|
+
]
|
|
2284
|
+
},
|
|
2285
|
+
{
|
|
2286
|
+
"name": "`field-after(${field.key})`",
|
|
2287
|
+
"description": "",
|
|
2288
|
+
"bindings": [
|
|
2289
|
+
{
|
|
2290
|
+
"name": "name",
|
|
2291
|
+
"title": "binding"
|
|
2292
|
+
},
|
|
2293
|
+
{
|
|
2294
|
+
"name": "field",
|
|
2295
|
+
"title": "binding"
|
|
2296
|
+
},
|
|
2297
|
+
{
|
|
2298
|
+
"name": "model",
|
|
2299
|
+
"title": "binding"
|
|
2205
2300
|
}
|
|
2206
2301
|
]
|
|
2207
2302
|
}
|
|
@@ -2465,6 +2560,63 @@
|
|
|
2465
2560
|
],
|
|
2466
2561
|
"methods": []
|
|
2467
2562
|
},
|
|
2563
|
+
{
|
|
2564
|
+
"name": "DXSwitch",
|
|
2565
|
+
"category": "extended",
|
|
2566
|
+
"filePath": "resources/js/components/extended/DXSwitch.vue",
|
|
2567
|
+
"description": "DXSwitch — a \"filled box\" toggle switch. An opinionated switch built on `DFormCheckbox` (`switch`): a bordered box sized like a `.form-control` with the label on the left and the toggle on the right, colour-coding its state (a neutral box when off, a filled primary box when on). Used standalone or, internally, by `DXField`'s `switch` field type so a form switch and a lone switch share one look. Usage: ```vue <DXSwitch v-model=\"isCurrent\" label=\"Product is current\" /> ``` For a form field, prefer a `DXField`/`DXForm` `type: 'switch'`; reach for `DXSwitch` directly when you want the styled toggle outside a form. Pass a `label` prop for simple text, or the default slot for richer label content.",
|
|
2568
|
+
"props": [
|
|
2569
|
+
{
|
|
2570
|
+
"name": "modelValue",
|
|
2571
|
+
"type": "boolean",
|
|
2572
|
+
"required": false,
|
|
2573
|
+
"default": "false",
|
|
2574
|
+
"description": "Whether the switch is on."
|
|
2575
|
+
},
|
|
2576
|
+
{
|
|
2577
|
+
"name": "label",
|
|
2578
|
+
"type": "string",
|
|
2579
|
+
"required": false,
|
|
2580
|
+
"description": "Static text beside the toggle; the fallback when no contextual text applies."
|
|
2581
|
+
},
|
|
2582
|
+
{
|
|
2583
|
+
"name": "textWhenTrue",
|
|
2584
|
+
"type": "string",
|
|
2585
|
+
"required": false,
|
|
2586
|
+
"description": "Text shown when on — overrides `label` in the on state (e.g. \"Product is current\")."
|
|
2587
|
+
},
|
|
2588
|
+
{
|
|
2589
|
+
"name": "textWhenFalse",
|
|
2590
|
+
"type": "string",
|
|
2591
|
+
"required": false,
|
|
2592
|
+
"description": "Text shown when off — overrides `label` in the off state (e.g. \"Product is not current\")."
|
|
2593
|
+
}
|
|
2594
|
+
],
|
|
2595
|
+
"events": [
|
|
2596
|
+
{
|
|
2597
|
+
"name": "update:modelValue",
|
|
2598
|
+
"description": "",
|
|
2599
|
+
"properties": []
|
|
2600
|
+
}
|
|
2601
|
+
],
|
|
2602
|
+
"slots": [
|
|
2603
|
+
{
|
|
2604
|
+
"name": "default",
|
|
2605
|
+
"description": "Label content shown beside the toggle. Falls back to the contextual",
|
|
2606
|
+
"bindings": [
|
|
2607
|
+
{
|
|
2608
|
+
"title": "binding",
|
|
2609
|
+
"type": {
|
|
2610
|
+
"name": "boolean"
|
|
2611
|
+
},
|
|
2612
|
+
"name": "on",
|
|
2613
|
+
"description": "Whether the switch is currently on."
|
|
2614
|
+
}
|
|
2615
|
+
]
|
|
2616
|
+
}
|
|
2617
|
+
],
|
|
2618
|
+
"methods": []
|
|
2619
|
+
},
|
|
2468
2620
|
{
|
|
2469
2621
|
"name": "DXTable",
|
|
2470
2622
|
"category": "extended",
|
|
@@ -3002,8 +3154,8 @@
|
|
|
3002
3154
|
]
|
|
3003
3155
|
},
|
|
3004
3156
|
"stats": {
|
|
3005
|
-
"totalComponents":
|
|
3157
|
+
"totalComponents": 73,
|
|
3006
3158
|
"baseComponents": 57,
|
|
3007
|
-
"extendedComponents":
|
|
3159
|
+
"extendedComponents": 16
|
|
3008
3160
|
}
|
|
3009
3161
|
}
|
package/docs/public/docs-map.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Documentation Map
|
|
2
2
|
|
|
3
3
|
> Auto-generated hierarchical overview of all documentation
|
|
4
|
-
> Last updated: 2026-07-
|
|
4
|
+
> Last updated: 2026-07-11T04:13:01.900Z
|
|
5
5
|
|
|
6
6
|
This file provides a complete map of all available documentation for AI agents and developers.
|
|
7
7
|
|
|
@@ -80,6 +80,7 @@ This file provides a complete map of all available documentation for AI agents a
|
|
|
80
80
|
- [DXForm](/components/extended/DXForm): The canonical form renderer. Drive it with field definitions; add `tabs` when
|
|
81
81
|
- [DXRepeater](/components/extended/DXRepeater): A repeatable sub-form (field array) primitive for nested, dynamic collections —
|
|
82
82
|
- [DXStatCard](/components/extended/DXStatCard): A KPI / stat tile: a big formatted value with a title, optional subtitle, an
|
|
83
|
+
- [DXSwitch](/components/extended/DXSwitch): A "filled box" toggle switch built on `DFormCheckbox`: a bordered box sized like
|
|
83
84
|
- [DXTable](/components/extended/DXTable): A comprehensive data table component with built-in pagination, sorting, filtering, and CRUD operatio
|
|
84
85
|
|
|
85
86
|
### Examples
|
|
@@ -99,4 +100,4 @@ This file provides a complete map of all available documentation for AI agents a
|
|
|
99
100
|
|
|
100
101
|
---
|
|
101
102
|
|
|
102
|
-
**Total Pages**:
|
|
103
|
+
**Total Pages**: 76
|
package/docs/public/llms.txt
CHANGED
|
@@ -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
|
|
5
|
+
> A dual-package library (NPM + Composer) providing 68 Vue 3 components for building Laravel dashboards with Bootstrap Vue Next.
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
@@ -81,7 +81,7 @@ Lightweight type-safe wrappers around Bootstrap Vue Next components providing AP
|
|
|
81
81
|
- [DToaster](/components/base/dtoaster): Bootstrap Vue Next Toaster wrapper
|
|
82
82
|
- [DTooltip](/components/base/dtooltip): Bootstrap Vue Next Tooltip wrapper
|
|
83
83
|
|
|
84
|
-
## Extended Components (
|
|
84
|
+
## Extended Components (11 components)
|
|
85
85
|
|
|
86
86
|
Custom dashboard components with advanced functionality beyond Bootstrap Vue Next.
|
|
87
87
|
|
|
@@ -94,6 +94,7 @@ Custom dashboard components with advanced functionality beyond Bootstrap Vue Nex
|
|
|
94
94
|
- [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
|
|
95
95
|
- [DXRepeater](/components/extended/dxrepeater): Repeatable nested sub-form (field array) primitive
|
|
96
96
|
- [DXStatCard](/components/extended/dxstatcard): Extended dashboard component
|
|
97
|
+
- [DXSwitch](/components/extended/dxswitch): Extended dashboard component
|
|
97
98
|
- [DXTable](/components/extended/dxtable): Data table with pagination, filtering, and sorting
|
|
98
99
|
|
|
99
100
|
## Composables
|