@omnitend/dashboard-for-laravel 0.33.1 → 0.34.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/charts.js +82 -90
- package/dist/charts.js.map +1 -1
- package/dist/charts.umd.cjs +1 -1
- package/dist/charts.umd.cjs.map +1 -1
- package/dist/components/base/DButton.vue.d.ts +1 -1
- package/dist/components/charts/DXBarChart.vue.d.ts +3 -18
- package/dist/components/charts/DXLineChart.vue.d.ts +3 -18
- package/dist/components/charts/useThemedChart.d.ts +35 -0
- package/dist/components/extended/DXChoiceField.vue.d.ts +26 -0
- package/dist/components/extended/DXDashboardSidebar.vue.d.ts +1 -1
- package/dist/components/extended/DXField.vue.d.ts +10 -113
- package/dist/components/extended/DXFieldShell.vue.d.ts +73 -0
- package/dist/components/extended/DXNumericField.vue.d.ts +23 -0
- package/dist/components/extended/DXRepeater.vue.d.ts +4 -4
- package/dist/components/extended/DXRepeaterCards.vue.d.ts +45 -0
- package/dist/components/extended/DXTable.vue.d.ts +69 -2
- package/dist/components/extended/DXTableEditorModal.vue.d.ts +17 -2
- package/dist/components/extended/DXUserAvatar.vue.d.ts +1 -1
- package/dist/composables/useAsyncOptions.d.ts +20 -0
- package/dist/composables/useResourceEditor.d.ts +2 -1
- package/dist/dashboard-for-laravel.js +9982 -10052
- package/dist/dashboard-for-laravel.js.map +1 -1
- package/dist/dashboard-for-laravel.umd.cjs +7 -7
- package/dist/dashboard-for-laravel.umd.cjs.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/style.css +1 -1
- package/dist/types/index.d.ts +146 -0
- package/dist/utils/formSchema.d.ts +59 -0
- package/docs/public/api-reference.json +458 -30
- package/docs/public/docs-map.md +1 -1
- package/docs/public/llms.txt +5 -2
- package/package.json +1 -1
- package/resources/js/components/charts/DXBarChart.vue +4 -43
- package/resources/js/components/charts/DXLineChart.vue +4 -43
- package/resources/js/components/charts/useThemedChart.ts +69 -0
- package/resources/js/components/extended/DXChoiceField.vue +114 -0
- package/resources/js/components/extended/DXField.vue +328 -615
- package/resources/js/components/extended/DXFieldShell.vue +124 -0
- package/resources/js/components/extended/DXForm.vue +9 -5
- package/resources/js/components/extended/DXNumericField.vue +144 -0
- package/resources/js/components/extended/DXRepeater.vue +53 -175
- package/resources/js/components/extended/DXRepeaterCards.vue +133 -0
- package/resources/js/components/extended/DXTable.vue +202 -32
- package/resources/js/components/extended/DXTableEditorModal.vue +34 -2
- package/resources/js/composables/defineForm.ts +8 -44
- package/resources/js/composables/useAsyncOptions.ts +61 -0
- package/resources/js/composables/useResourceEditor.ts +24 -38
- package/resources/js/index.ts +33 -0
- package/resources/js/types/index.ts +231 -0
- package/resources/js/utils/formSchema.ts +126 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generated": "2026-07-
|
|
2
|
+
"generated": "2026-07-21T07:46:13.035Z",
|
|
3
3
|
"package": {
|
|
4
4
|
"name": "@omnitend/dashboard-for-laravel",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.34.0"
|
|
6
6
|
},
|
|
7
7
|
"components": {
|
|
8
8
|
"base": [
|
|
@@ -351,6 +351,26 @@
|
|
|
351
351
|
],
|
|
352
352
|
"methods": []
|
|
353
353
|
},
|
|
354
|
+
{
|
|
355
|
+
"name": "DCarousel",
|
|
356
|
+
"category": "base",
|
|
357
|
+
"filePath": "resources/js/index.ts",
|
|
358
|
+
"description": "Bootstrap Vue Next Carousel (re-exported as DCarousel).",
|
|
359
|
+
"props": [],
|
|
360
|
+
"events": [],
|
|
361
|
+
"slots": [],
|
|
362
|
+
"methods": []
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "DCarouselSlide",
|
|
366
|
+
"category": "base",
|
|
367
|
+
"filePath": "resources/js/index.ts",
|
|
368
|
+
"description": "Bootstrap Vue Next CarouselSlide (re-exported as DCarouselSlide).",
|
|
369
|
+
"props": [],
|
|
370
|
+
"events": [],
|
|
371
|
+
"slots": [],
|
|
372
|
+
"methods": []
|
|
373
|
+
},
|
|
354
374
|
{
|
|
355
375
|
"name": "DCol",
|
|
356
376
|
"category": "base",
|
|
@@ -1169,6 +1189,16 @@
|
|
|
1169
1189
|
"slots": [],
|
|
1170
1190
|
"methods": []
|
|
1171
1191
|
},
|
|
1192
|
+
{
|
|
1193
|
+
"name": "DTab",
|
|
1194
|
+
"category": "base",
|
|
1195
|
+
"filePath": "resources/js/index.ts",
|
|
1196
|
+
"description": "Bootstrap Vue Next Tab (re-exported as DTab).",
|
|
1197
|
+
"props": [],
|
|
1198
|
+
"events": [],
|
|
1199
|
+
"slots": [],
|
|
1200
|
+
"methods": []
|
|
1201
|
+
},
|
|
1172
1202
|
{
|
|
1173
1203
|
"name": "DTable",
|
|
1174
1204
|
"category": "base",
|
|
@@ -1329,7 +1359,7 @@
|
|
|
1329
1359
|
},
|
|
1330
1360
|
{
|
|
1331
1361
|
"name": "options",
|
|
1332
|
-
"type": "
|
|
1362
|
+
"type": "ChartOptions",
|
|
1333
1363
|
"required": false,
|
|
1334
1364
|
"description": "Chart.js options; deep-merged over the themed defaults."
|
|
1335
1365
|
},
|
|
@@ -1385,6 +1415,65 @@
|
|
|
1385
1415
|
],
|
|
1386
1416
|
"methods": []
|
|
1387
1417
|
},
|
|
1418
|
+
{
|
|
1419
|
+
"name": "DXChoiceField",
|
|
1420
|
+
"category": "extended",
|
|
1421
|
+
"filePath": "resources/js/components/extended/DXChoiceField.vue",
|
|
1422
|
+
"description": "The choice control family for DXField: `select` (plain or `searchable`), `radio`, and `checkbox-group`. Extracted from DXField (#135) unchanged. These share the \"no native readonly\" convention (read-only is expressed as `disabled`, hence the pre-merged `disabled` + `controlProps`). The parent DXField still owns the value/options/guards and the `setValue` coercion; this component only renders the control and emits the edited value up. Plain-text `autocomplete` (a text input + datalist) stays in DXField itself, with the text-family controls, because it uses the native-readonly guard path rather than this disabled-only convention.",
|
|
1423
|
+
"props": [
|
|
1424
|
+
{
|
|
1425
|
+
"name": "field",
|
|
1426
|
+
"type": "FieldDefinition",
|
|
1427
|
+
"required": true,
|
|
1428
|
+
"description": "Field definition (type select/radio/checkbox-group + `searchable`)."
|
|
1429
|
+
},
|
|
1430
|
+
{
|
|
1431
|
+
"name": "modelValue",
|
|
1432
|
+
"type": "any",
|
|
1433
|
+
"required": true,
|
|
1434
|
+
"description": "Current model value."
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
"name": "options",
|
|
1438
|
+
"type": "Array",
|
|
1439
|
+
"required": false,
|
|
1440
|
+
"description": "Resolved options (async-loaded or static)."
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
"name": "state",
|
|
1444
|
+
"type": "union",
|
|
1445
|
+
"required": false,
|
|
1446
|
+
"description": "Validation state passed to the control."
|
|
1447
|
+
},
|
|
1448
|
+
{
|
|
1449
|
+
"name": "disabled",
|
|
1450
|
+
"type": "boolean",
|
|
1451
|
+
"required": false,
|
|
1452
|
+
"description": "Pre-merged disabled state (`isDisabled || isReadonly || isPlaintext`)."
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"name": "controlProps",
|
|
1456
|
+
"type": "Record",
|
|
1457
|
+
"required": false,
|
|
1458
|
+
"description": "Escape-hatch control props, already guard-merged by DXField."
|
|
1459
|
+
},
|
|
1460
|
+
{
|
|
1461
|
+
"name": "optionsReady",
|
|
1462
|
+
"type": "boolean",
|
|
1463
|
+
"required": false,
|
|
1464
|
+
"description": "Whether async options have resolved (a searchable select must not render\nbefore its options load, or it shows the raw id instead of the label)."
|
|
1465
|
+
}
|
|
1466
|
+
],
|
|
1467
|
+
"events": [
|
|
1468
|
+
{
|
|
1469
|
+
"name": "update:modelValue",
|
|
1470
|
+
"description": "",
|
|
1471
|
+
"properties": []
|
|
1472
|
+
}
|
|
1473
|
+
],
|
|
1474
|
+
"slots": [],
|
|
1475
|
+
"methods": []
|
|
1476
|
+
},
|
|
1388
1477
|
{
|
|
1389
1478
|
"name": "DXCurrencyInput",
|
|
1390
1479
|
"category": "extended",
|
|
@@ -1912,7 +2001,7 @@
|
|
|
1912
2001
|
"name": "DXField",
|
|
1913
2002
|
"category": "extended",
|
|
1914
2003
|
"filePath": "resources/js/components/extended/DXField.vue",
|
|
1915
|
-
"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.",
|
|
2004
|
+
"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. Structure (#135): a thin DISPATCHER. The shared chrome (label + validation feedback + hint + help + info) lives in `DXFieldShell`; the numeric controls (currency/percentage/number) in `DXNumericField`; the choice controls (select/searchable/radio/checkbox-group) in `DXChoiceField`; and the async option loading in the `useAsyncOptions` composable. This file decides which control to render inside the shell by `field.type`. None of those pieces are exported — they exist only to keep this component factored.",
|
|
1916
2005
|
"props": [
|
|
1917
2006
|
{
|
|
1918
2007
|
"name": "field",
|
|
@@ -2005,7 +2094,7 @@
|
|
|
2005
2094
|
},
|
|
2006
2095
|
{
|
|
2007
2096
|
"name": "hint",
|
|
2008
|
-
"description": "Overrides the field's hint text shown below the control.",
|
|
2097
|
+
"description": "Overrides the field's hint text shown below the control (or, in horizontal layout, in the label column).",
|
|
2009
2098
|
"bindings": [
|
|
2010
2099
|
{
|
|
2011
2100
|
"title": "binding",
|
|
@@ -2026,8 +2115,8 @@
|
|
|
2026
2115
|
]
|
|
2027
2116
|
},
|
|
2028
2117
|
{
|
|
2029
|
-
"name": "
|
|
2030
|
-
"description": "
|
|
2118
|
+
"name": "info",
|
|
2119
|
+
"description": "Rich info block rendered below the control.",
|
|
2031
2120
|
"bindings": [
|
|
2032
2121
|
{
|
|
2033
2122
|
"title": "binding",
|
|
@@ -2044,28 +2133,12 @@
|
|
|
2044
2133
|
},
|
|
2045
2134
|
"name": "model",
|
|
2046
2135
|
"description": "The model passed to field predicates (defaults to the live form data)."
|
|
2047
|
-
},
|
|
2048
|
-
{
|
|
2049
|
-
"title": "binding",
|
|
2050
|
-
"type": {
|
|
2051
|
-
"name": "any"
|
|
2052
|
-
},
|
|
2053
|
-
"name": "value",
|
|
2054
|
-
"description": "The current field value."
|
|
2055
|
-
},
|
|
2056
|
-
{
|
|
2057
|
-
"title": "binding",
|
|
2058
|
-
"type": {
|
|
2059
|
-
"name": "(value: any) => void"
|
|
2060
|
-
},
|
|
2061
|
-
"name": "update",
|
|
2062
|
-
"description": "Setter that writes the value back and clears the field's validation error."
|
|
2063
2136
|
}
|
|
2064
2137
|
]
|
|
2065
2138
|
},
|
|
2066
2139
|
{
|
|
2067
|
-
"name": "
|
|
2068
|
-
"description": "
|
|
2140
|
+
"name": "value",
|
|
2141
|
+
"description": "Replaces the built-in control with a custom value editor.",
|
|
2069
2142
|
"bindings": [
|
|
2070
2143
|
{
|
|
2071
2144
|
"title": "binding",
|
|
@@ -2082,6 +2155,22 @@
|
|
|
2082
2155
|
},
|
|
2083
2156
|
"name": "model",
|
|
2084
2157
|
"description": "The model passed to field predicates (defaults to the live form data)."
|
|
2158
|
+
},
|
|
2159
|
+
{
|
|
2160
|
+
"title": "binding",
|
|
2161
|
+
"type": {
|
|
2162
|
+
"name": "any"
|
|
2163
|
+
},
|
|
2164
|
+
"name": "value",
|
|
2165
|
+
"description": "The current field value."
|
|
2166
|
+
},
|
|
2167
|
+
{
|
|
2168
|
+
"title": "binding",
|
|
2169
|
+
"type": {
|
|
2170
|
+
"name": "(value: any) => void"
|
|
2171
|
+
},
|
|
2172
|
+
"name": "update",
|
|
2173
|
+
"description": "Setter that writes the value back and clears the field's validation error."
|
|
2085
2174
|
}
|
|
2086
2175
|
]
|
|
2087
2176
|
},
|
|
@@ -2144,6 +2233,123 @@
|
|
|
2144
2233
|
],
|
|
2145
2234
|
"methods": []
|
|
2146
2235
|
},
|
|
2236
|
+
{
|
|
2237
|
+
"name": "DXFieldShell",
|
|
2238
|
+
"category": "extended",
|
|
2239
|
+
"filePath": "resources/js/components/extended/DXFieldShell.vue",
|
|
2240
|
+
"description": "The chrome every DXField branch shares: the optional label (with its info affordance and, in horizontal layout, its hint), the control (default slot), and the trailing validation feedback + info block + hint + static help. Before #135 this markup was re-rendered separately in each of DXField's ~7 branches; it now lives here once. Two shapes: - `mode=\"group\"` — root is a `DFormGroup` that owns the `#label` column and holds the control + trailing block inside it (standard / horizontal checkbox / horizontal switch). - `mode=\"plain\"` — root is a plain `div`; the control renders its own inline label (vertical checkbox/switch), or a heading/rows (switch-list), or a nested group (repeater). The trailing block follows the control in the div. The `hint` and `info` slots are forwarded down from DXField (content AND slot props). `hint` falls back to `{{ resolvedHint }}` when no slot is supplied.",
|
|
2241
|
+
"props": [
|
|
2242
|
+
{
|
|
2243
|
+
"name": "field",
|
|
2244
|
+
"type": "FieldDefinition",
|
|
2245
|
+
"required": true,
|
|
2246
|
+
"description": "The field definition (for `field.help` and slot props)."
|
|
2247
|
+
},
|
|
2248
|
+
{
|
|
2249
|
+
"name": "form",
|
|
2250
|
+
"type": "UseFormReturn",
|
|
2251
|
+
"required": true,
|
|
2252
|
+
"description": "Form instance owning the field's errors."
|
|
2253
|
+
},
|
|
2254
|
+
{
|
|
2255
|
+
"name": "errorKey",
|
|
2256
|
+
"type": "string",
|
|
2257
|
+
"required": true,
|
|
2258
|
+
"description": "Error key for validation lookups."
|
|
2259
|
+
},
|
|
2260
|
+
{
|
|
2261
|
+
"name": "model",
|
|
2262
|
+
"type": "any",
|
|
2263
|
+
"required": false,
|
|
2264
|
+
"description": "Model passed to `hint`/`info` slot props."
|
|
2265
|
+
},
|
|
2266
|
+
{
|
|
2267
|
+
"name": "mode",
|
|
2268
|
+
"type": "union",
|
|
2269
|
+
"required": true,
|
|
2270
|
+
"description": "Layout shape. `group` = DFormGroup root with a label column; `plain` =\nplain div, the control owning its own inline label/heading."
|
|
2271
|
+
},
|
|
2272
|
+
{
|
|
2273
|
+
"name": "wrapperClass",
|
|
2274
|
+
"type": "string",
|
|
2275
|
+
"required": false,
|
|
2276
|
+
"description": "Wrapper class (`field.class || 'mb-3'`)."
|
|
2277
|
+
},
|
|
2278
|
+
{
|
|
2279
|
+
"name": "groupAttrs",
|
|
2280
|
+
"type": "Record",
|
|
2281
|
+
"required": false,
|
|
2282
|
+
"description": "BFormGroup attrs (horizontal label-cols etc.); group mode only."
|
|
2283
|
+
},
|
|
2284
|
+
{
|
|
2285
|
+
"name": "label",
|
|
2286
|
+
"type": "string",
|
|
2287
|
+
"required": true,
|
|
2288
|
+
"description": "Resolved label text (group mode). Always supplied by DXField."
|
|
2289
|
+
},
|
|
2290
|
+
{
|
|
2291
|
+
"name": "info",
|
|
2292
|
+
"type": "string",
|
|
2293
|
+
"required": false,
|
|
2294
|
+
"description": "Resolved info text for the label popover (group mode)."
|
|
2295
|
+
},
|
|
2296
|
+
{
|
|
2297
|
+
"name": "hideLabel",
|
|
2298
|
+
"type": "boolean",
|
|
2299
|
+
"required": false,
|
|
2300
|
+
"description": "Skip the label column entirely (group mode)."
|
|
2301
|
+
},
|
|
2302
|
+
{
|
|
2303
|
+
"name": "hintInLabel",
|
|
2304
|
+
"type": "boolean",
|
|
2305
|
+
"required": false,
|
|
2306
|
+
"description": "Whether the hint sits in the label column (horizontal) rather than below\nthe control. Group mode only; plain mode always renders the hint below."
|
|
2307
|
+
},
|
|
2308
|
+
{
|
|
2309
|
+
"name": "resolvedHint",
|
|
2310
|
+
"type": "string",
|
|
2311
|
+
"required": false,
|
|
2312
|
+
"description": "Resolved hint text (fallback when no `hint` slot is supplied)."
|
|
2313
|
+
}
|
|
2314
|
+
],
|
|
2315
|
+
"events": [],
|
|
2316
|
+
"slots": [
|
|
2317
|
+
{
|
|
2318
|
+
"name": "hint",
|
|
2319
|
+
"description": "",
|
|
2320
|
+
"bindings": [
|
|
2321
|
+
{
|
|
2322
|
+
"name": "field",
|
|
2323
|
+
"title": "binding"
|
|
2324
|
+
},
|
|
2325
|
+
{
|
|
2326
|
+
"name": "model",
|
|
2327
|
+
"title": "binding"
|
|
2328
|
+
}
|
|
2329
|
+
]
|
|
2330
|
+
},
|
|
2331
|
+
{
|
|
2332
|
+
"name": "default",
|
|
2333
|
+
"description": "",
|
|
2334
|
+
"bindings": []
|
|
2335
|
+
},
|
|
2336
|
+
{
|
|
2337
|
+
"name": "info",
|
|
2338
|
+
"description": "",
|
|
2339
|
+
"bindings": [
|
|
2340
|
+
{
|
|
2341
|
+
"name": "field",
|
|
2342
|
+
"title": "binding"
|
|
2343
|
+
},
|
|
2344
|
+
{
|
|
2345
|
+
"name": "model",
|
|
2346
|
+
"title": "binding"
|
|
2347
|
+
}
|
|
2348
|
+
]
|
|
2349
|
+
}
|
|
2350
|
+
],
|
|
2351
|
+
"methods": []
|
|
2352
|
+
},
|
|
2147
2353
|
{
|
|
2148
2354
|
"name": "DXForm",
|
|
2149
2355
|
"category": "extended",
|
|
@@ -2469,7 +2675,7 @@
|
|
|
2469
2675
|
},
|
|
2470
2676
|
{
|
|
2471
2677
|
"name": "options",
|
|
2472
|
-
"type": "
|
|
2678
|
+
"type": "ChartOptions",
|
|
2473
2679
|
"required": false,
|
|
2474
2680
|
"description": "Chart.js options; deep-merged over the themed defaults."
|
|
2475
2681
|
},
|
|
@@ -2504,6 +2710,65 @@
|
|
|
2504
2710
|
"slots": [],
|
|
2505
2711
|
"methods": []
|
|
2506
2712
|
},
|
|
2713
|
+
{
|
|
2714
|
+
"name": "DXNumericField",
|
|
2715
|
+
"category": "extended",
|
|
2716
|
+
"filePath": "resources/js/components/extended/DXNumericField.vue",
|
|
2717
|
+
"description": "The numeric control family for DXField: `currency`, `percentage`, `number`. Extracted from DXField (#135) unchanged. The parent DXField still owns the value/guards/`setValue` coercion — this component only renders the control and emits the raw edited value back up. The `percentage` `asFraction` display scaling (model holds a 0–1 fraction, input shows 0–100) lives here because it is purely presentational to this control.",
|
|
2718
|
+
"props": [
|
|
2719
|
+
{
|
|
2720
|
+
"name": "field",
|
|
2721
|
+
"type": "FieldDefinition",
|
|
2722
|
+
"required": true,
|
|
2723
|
+
"description": "Field definition (type currency/percentage/number + numeric options)."
|
|
2724
|
+
},
|
|
2725
|
+
{
|
|
2726
|
+
"name": "modelValue",
|
|
2727
|
+
"type": "any",
|
|
2728
|
+
"required": true,
|
|
2729
|
+
"description": "Current model value."
|
|
2730
|
+
},
|
|
2731
|
+
{
|
|
2732
|
+
"name": "state",
|
|
2733
|
+
"type": "union",
|
|
2734
|
+
"required": false,
|
|
2735
|
+
"description": "Validation state passed to the control."
|
|
2736
|
+
},
|
|
2737
|
+
{
|
|
2738
|
+
"name": "isDisabled",
|
|
2739
|
+
"type": "boolean",
|
|
2740
|
+
"required": false,
|
|
2741
|
+
"description": "Disabled state (`isDisabled`)."
|
|
2742
|
+
},
|
|
2743
|
+
{
|
|
2744
|
+
"name": "isReadonly",
|
|
2745
|
+
"type": "boolean",
|
|
2746
|
+
"required": false,
|
|
2747
|
+
"description": "Readonly state (`isReadonly`)."
|
|
2748
|
+
},
|
|
2749
|
+
{
|
|
2750
|
+
"name": "isPlaintext",
|
|
2751
|
+
"type": "boolean",
|
|
2752
|
+
"required": false,
|
|
2753
|
+
"description": "Plaintext (display-only) state (`isPlaintext`)."
|
|
2754
|
+
},
|
|
2755
|
+
{
|
|
2756
|
+
"name": "inputProps",
|
|
2757
|
+
"type": "Record",
|
|
2758
|
+
"required": false,
|
|
2759
|
+
"description": "Escape-hatch input props, already guard-merged by DXField."
|
|
2760
|
+
}
|
|
2761
|
+
],
|
|
2762
|
+
"events": [
|
|
2763
|
+
{
|
|
2764
|
+
"name": "update:modelValue",
|
|
2765
|
+
"description": "",
|
|
2766
|
+
"properties": []
|
|
2767
|
+
}
|
|
2768
|
+
],
|
|
2769
|
+
"slots": [],
|
|
2770
|
+
"methods": []
|
|
2771
|
+
},
|
|
2507
2772
|
{
|
|
2508
2773
|
"name": "DXRepeater",
|
|
2509
2774
|
"category": "extended",
|
|
@@ -2540,6 +2805,83 @@
|
|
|
2540
2805
|
{
|
|
2541
2806
|
"name": "row",
|
|
2542
2807
|
"description": "Custom layout for a single repeater row, replacing the default sub-field stack (including the built-in Remove control — call `remove()` yourself). In table layout, rendered as the `<tr>`'s children: supply one `<td>` per sub-field plus a trailing `<td>` to match the header's column count (the header always includes an empty column for the built-in remove button).",
|
|
2808
|
+
"bindings": []
|
|
2809
|
+
}
|
|
2810
|
+
],
|
|
2811
|
+
"methods": []
|
|
2812
|
+
},
|
|
2813
|
+
{
|
|
2814
|
+
"name": "DXRepeaterCards",
|
|
2815
|
+
"category": "extended",
|
|
2816
|
+
"filePath": "resources/js/components/extended/DXRepeaterCards.vue",
|
|
2817
|
+
"description": "DXRepeaterCards — the cards layout for DXRepeater: each row is its own bordered card with sub-fields stacked vertically, plus the add-row button. Internal to DXRepeater (not exported). It exists because DXRepeater rendered this exact markup TWICE — as the default `repeaterLayout: \"cards\"` branch and as the responsive fallback when the `\"table\"` layout lacks room — and the two copies would drift (#135). DXRepeater owns all the row state and passes it in; this component is presentational. The `.dx-repeater-row*` scoped styles live here (a scoped rule can't reach markup in another component), so the cards chrome moves as one unit with the markup it styles.",
|
|
2818
|
+
"props": [
|
|
2819
|
+
{
|
|
2820
|
+
"name": "visibleRows",
|
|
2821
|
+
"type": "Array",
|
|
2822
|
+
"required": true,
|
|
2823
|
+
"description": "Rows shown in the UI, each paired with its real (unfiltered) array index."
|
|
2824
|
+
},
|
|
2825
|
+
{
|
|
2826
|
+
"name": "subFields",
|
|
2827
|
+
"type": "Array",
|
|
2828
|
+
"required": true,
|
|
2829
|
+
"description": "Sub-field definitions for a row."
|
|
2830
|
+
},
|
|
2831
|
+
{
|
|
2832
|
+
"name": "form",
|
|
2833
|
+
"type": "UseFormReturn",
|
|
2834
|
+
"required": true,
|
|
2835
|
+
"description": "Form instance owning the repeater array."
|
|
2836
|
+
},
|
|
2837
|
+
{
|
|
2838
|
+
"name": "field",
|
|
2839
|
+
"type": "FieldDefinition",
|
|
2840
|
+
"required": true,
|
|
2841
|
+
"description": "The repeater field definition (for `showRowIndex` and `addLabel`)."
|
|
2842
|
+
},
|
|
2843
|
+
{
|
|
2844
|
+
"name": "minItems",
|
|
2845
|
+
"type": "number",
|
|
2846
|
+
"required": true,
|
|
2847
|
+
"description": "Minimum rows — the Remove button disables at this count."
|
|
2848
|
+
},
|
|
2849
|
+
{
|
|
2850
|
+
"name": "maxItems",
|
|
2851
|
+
"type": "union",
|
|
2852
|
+
"required": true,
|
|
2853
|
+
"description": "Maximum rows — the Add button disables at this count."
|
|
2854
|
+
},
|
|
2855
|
+
{
|
|
2856
|
+
"name": "rowKey",
|
|
2857
|
+
"type": "TSFunctionType",
|
|
2858
|
+
"required": true,
|
|
2859
|
+
"description": "Stable v-for key for a row (owned by DXRepeater — row identity, not index)."
|
|
2860
|
+
},
|
|
2861
|
+
{
|
|
2862
|
+
"name": "rowPath",
|
|
2863
|
+
"type": "TSFunctionType",
|
|
2864
|
+
"required": true,
|
|
2865
|
+
"description": "Dot path into form.data for a row at the given true index."
|
|
2866
|
+
},
|
|
2867
|
+
{
|
|
2868
|
+
"name": "removeRow",
|
|
2869
|
+
"type": "TSFunctionType",
|
|
2870
|
+
"required": true,
|
|
2871
|
+
"description": "Remove the row at the given true index (respects minItems / soft-delete)."
|
|
2872
|
+
},
|
|
2873
|
+
{
|
|
2874
|
+
"name": "addRow",
|
|
2875
|
+
"type": "TSFunctionType",
|
|
2876
|
+
"required": true,
|
|
2877
|
+
"description": "Append a fresh row (respects maxItems)."
|
|
2878
|
+
}
|
|
2879
|
+
],
|
|
2880
|
+
"events": [],
|
|
2881
|
+
"slots": [
|
|
2882
|
+
{
|
|
2883
|
+
"name": "row",
|
|
2884
|
+
"description": "Custom layout for a single repeater row, replacing the default sub-field stack (including the built-in Remove control — call `remove()` yourself).",
|
|
2543
2885
|
"bindings": [
|
|
2544
2886
|
{
|
|
2545
2887
|
"title": "binding",
|
|
@@ -2813,6 +3155,12 @@
|
|
|
2813
3155
|
"required": false,
|
|
2814
3156
|
"description": "Adapts the built-in provider's request params / response body to a\n backend convention that differs from dfl's (see DXTableApiAdapter)."
|
|
2815
3157
|
},
|
|
3158
|
+
{
|
|
3159
|
+
"name": "source",
|
|
3160
|
+
"type": "DXTableSource",
|
|
3161
|
+
"required": false,
|
|
3162
|
+
"description": "Discriminated data-source (#130) — the type-safe alternative to the\nlegacy `items` / `provider` / `apiUrl` / `inertiaUrl` / `clientSide`\nprops. When set it WINS over those props; when omitted, the legacy props\napply unchanged. See `DXTableSource`."
|
|
3163
|
+
},
|
|
2816
3164
|
{
|
|
2817
3165
|
"name": "fields",
|
|
2818
3166
|
"type": "Array",
|
|
@@ -2972,7 +3320,7 @@
|
|
|
2972
3320
|
"name": "editFields",
|
|
2973
3321
|
"type": "Array",
|
|
2974
3322
|
"required": false,
|
|
2975
|
-
"description": "Form field definitions for edit modal (if provided, enables edit on row
|
|
3323
|
+
"description": "Form field definitions for edit modal (if provided, enables edit on row\nclick). `import type` is erased at compile time, so this creates no\nruntime import cycle (#131)."
|
|
2976
3324
|
},
|
|
2977
3325
|
{
|
|
2978
3326
|
"name": "editTabs",
|
|
@@ -2993,6 +3341,44 @@
|
|
|
2993
3341
|
"default": "\"lg\"",
|
|
2994
3342
|
"description": "Edit modal size"
|
|
2995
3343
|
},
|
|
3344
|
+
{
|
|
3345
|
+
"name": "editLayout",
|
|
3346
|
+
"type": "union",
|
|
3347
|
+
"required": false,
|
|
3348
|
+
"default": "\"horizontal\"",
|
|
3349
|
+
"description": "Field layout for the edit/create modal's form, forwarded to its `DXForm`\n(\"vertical\" = label above input, \"horizontal\" = label left). Defaults to\n**\"horizontal\"** to match the Omni Tend form convention (a raw modal form\npreviously fell back to DXForm's vertical default, which looked out of\nplace next to horizontal page forms). Pass `\"vertical\"` to opt out."
|
|
3350
|
+
},
|
|
3351
|
+
{
|
|
3352
|
+
"name": "editLabelCols",
|
|
3353
|
+
"type": "LabelCols",
|
|
3354
|
+
"required": false,
|
|
3355
|
+
"description": "Label column width for the edit modal's horizontal layout, forwarded to\n`DXForm`'s `labelCols` (a single width or a per-breakpoint object). Only\nmeaningful when `editLayout` is \"horizontal\"."
|
|
3356
|
+
},
|
|
3357
|
+
{
|
|
3358
|
+
"name": "editCard",
|
|
3359
|
+
"type": "boolean",
|
|
3360
|
+
"required": false,
|
|
3361
|
+
"default": "false",
|
|
3362
|
+
"description": "Wrap the edit/create modal's form in a bordered card. Off by default (the\nmodal body already provides a boundary); opt in for a more contained,\npanelled look around a tabbed edit form."
|
|
3363
|
+
},
|
|
3364
|
+
{
|
|
3365
|
+
"name": "saveText",
|
|
3366
|
+
"type": "string",
|
|
3367
|
+
"required": false,
|
|
3368
|
+
"description": "Override the modal's Save button label (default: \"Save {item}\")."
|
|
3369
|
+
},
|
|
3370
|
+
{
|
|
3371
|
+
"name": "createText",
|
|
3372
|
+
"type": "string",
|
|
3373
|
+
"required": false,
|
|
3374
|
+
"description": "Override the modal's Create button label (default: \"Create {item}\")."
|
|
3375
|
+
},
|
|
3376
|
+
{
|
|
3377
|
+
"name": "deleteText",
|
|
3378
|
+
"type": "string",
|
|
3379
|
+
"required": false,
|
|
3380
|
+
"description": "Override the modal's Delete button label (default: \"Delete {item}\")."
|
|
3381
|
+
},
|
|
2996
3382
|
{
|
|
2997
3383
|
"name": "editUrl",
|
|
2998
3384
|
"type": "string",
|
|
@@ -3288,6 +3674,48 @@
|
|
|
3288
3674
|
"type": "string",
|
|
3289
3675
|
"required": false,
|
|
3290
3676
|
"description": "Delete endpoint — gates the Delete button."
|
|
3677
|
+
},
|
|
3678
|
+
{
|
|
3679
|
+
"name": "layout",
|
|
3680
|
+
"type": "union",
|
|
3681
|
+
"required": false,
|
|
3682
|
+
"description": "Field layout forwarded to the modal's DXForm (defaults handled upstream)."
|
|
3683
|
+
},
|
|
3684
|
+
{
|
|
3685
|
+
"name": "labelCols",
|
|
3686
|
+
"type": "LabelCols",
|
|
3687
|
+
"required": false,
|
|
3688
|
+
"description": "Label column width forwarded to DXForm (horizontal layout)."
|
|
3689
|
+
},
|
|
3690
|
+
{
|
|
3691
|
+
"name": "card",
|
|
3692
|
+
"type": "boolean",
|
|
3693
|
+
"required": false,
|
|
3694
|
+
"description": "Wrap the modal form in a card (opt-in — off by default)."
|
|
3695
|
+
},
|
|
3696
|
+
{
|
|
3697
|
+
"name": "itemName",
|
|
3698
|
+
"type": "string",
|
|
3699
|
+
"required": false,
|
|
3700
|
+
"description": "Singular item noun for the default button labels (e.g. \"customer\")."
|
|
3701
|
+
},
|
|
3702
|
+
{
|
|
3703
|
+
"name": "saveText",
|
|
3704
|
+
"type": "string",
|
|
3705
|
+
"required": false,
|
|
3706
|
+
"description": "Override the Save button label (edit mode)."
|
|
3707
|
+
},
|
|
3708
|
+
{
|
|
3709
|
+
"name": "createText",
|
|
3710
|
+
"type": "string",
|
|
3711
|
+
"required": false,
|
|
3712
|
+
"description": "Override the Create button label (create mode)."
|
|
3713
|
+
},
|
|
3714
|
+
{
|
|
3715
|
+
"name": "deleteText",
|
|
3716
|
+
"type": "string",
|
|
3717
|
+
"required": false,
|
|
3718
|
+
"description": "Override the Delete button label."
|
|
3291
3719
|
}
|
|
3292
3720
|
],
|
|
3293
3721
|
"events": [
|
|
@@ -3643,8 +4071,8 @@
|
|
|
3643
4071
|
]
|
|
3644
4072
|
},
|
|
3645
4073
|
"stats": {
|
|
3646
|
-
"totalComponents":
|
|
3647
|
-
"baseComponents":
|
|
3648
|
-
"extendedComponents":
|
|
4074
|
+
"totalComponents": 84,
|
|
4075
|
+
"baseComponents": 60,
|
|
4076
|
+
"extendedComponents": 24
|
|
3649
4077
|
}
|
|
3650
4078
|
}
|
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-21T07:46:13.078Z
|
|
5
5
|
|
|
6
6
|
This file provides a complete map of all available documentation for AI agents and developers.
|
|
7
7
|
|
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 73 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 (
|
|
22
|
+
## Base Components (60 components)
|
|
23
23
|
|
|
24
24
|
Lightweight type-safe wrappers around Bootstrap Vue Next components providing API stability and consistent theming.
|
|
25
25
|
|
|
@@ -35,6 +35,8 @@ Lightweight type-safe wrappers around Bootstrap Vue Next components providing AP
|
|
|
35
35
|
- [DButtonGroup](/components/base/dbuttongroup): Bootstrap Vue Next ButtonGroup wrapper
|
|
36
36
|
- [DButtonToolbar](/components/base/dbuttontoolbar): Bootstrap Vue Next ButtonToolbar wrapper
|
|
37
37
|
- [DCard](/components/base/dcard): Bootstrap Vue Next Card wrapper
|
|
38
|
+
- [DCarousel](/components/base/dcarousel): Bootstrap Vue Next Carousel wrapper
|
|
39
|
+
- [DCarouselSlide](/components/base/dcarouselslide): Bootstrap Vue Next CarouselSlide wrapper
|
|
38
40
|
- [DCol](/components/base/dcol): Bootstrap Vue Next Col wrapper
|
|
39
41
|
- [DCollapse](/components/base/dcollapse): Bootstrap Vue Next Collapse wrapper
|
|
40
42
|
- [DContainer](/components/base/dcontainer): Bootstrap Vue Next Container wrapper
|
|
@@ -75,6 +77,7 @@ Lightweight type-safe wrappers around Bootstrap Vue Next components providing AP
|
|
|
75
77
|
- [DProgress](/components/base/dprogress): Bootstrap Vue Next Progress wrapper
|
|
76
78
|
- [DRow](/components/base/drow): Bootstrap Vue Next Row wrapper
|
|
77
79
|
- [DSpinner](/components/base/dspinner): Bootstrap Vue Next Spinner wrapper
|
|
80
|
+
- [DTab](/components/base/dtab): Bootstrap Vue Next Tab wrapper
|
|
78
81
|
- [DTable](/components/base/dtable): Bootstrap Vue Next Table wrapper
|
|
79
82
|
- [DTabs](/components/base/dtabs): Bootstrap Vue Next Tabs wrapper
|
|
80
83
|
- [DToast](/components/base/dtoast): Bootstrap Vue Next Toast wrapper
|
package/package.json
CHANGED