vuetify 3.5.5 → 3.5.6
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/json/attributes.json +40 -0
- package/dist/json/importMap-labs.json +8 -8
- package/dist/json/importMap.json +132 -128
- package/dist/json/tags.json +15 -0
- package/dist/json/web-types.json +292 -1
- package/dist/vuetify-labs.css +1632 -1635
- package/dist/vuetify-labs.d.ts +242 -1
- package/dist/vuetify-labs.esm.js +24 -13
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +24 -13
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +711 -714
- package/dist/vuetify.d.ts +281 -39
- package/dist/vuetify.esm.js +24 -13
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +24 -13
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +22 -21
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +7 -4
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +3 -1
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VDataTable/index.d.mts +214 -1
- package/lib/components/VDataTable/index.mjs +1 -0
- package/lib/components/VDataTable/index.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +4 -7
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +4 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +2 -0
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +2 -0
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +27 -0
- package/lib/components/VSelect/VSelect.mjs +4 -3
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/index.d.mts +241 -1
- package/lib/composables/filter.mjs +1 -1
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/goto.mjs +2 -2
- package/lib/composables/goto.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +39 -38
- package/package.json +2 -2
|
@@ -239,6 +239,219 @@ type VDataTableHeadersSlots = {
|
|
|
239
239
|
} & {
|
|
240
240
|
[key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps;
|
|
241
241
|
};
|
|
242
|
+
declare const VDataTableHeaders: {
|
|
243
|
+
new (...args: any[]): vue.CreateComponentPublicInstance<{
|
|
244
|
+
sticky: boolean;
|
|
245
|
+
multiSort: boolean;
|
|
246
|
+
sortAscIcon: IconValue;
|
|
247
|
+
sortDescIcon: IconValue;
|
|
248
|
+
} & {
|
|
249
|
+
color?: string | undefined;
|
|
250
|
+
loading?: string | boolean | undefined;
|
|
251
|
+
headerProps?: Record<string, any> | undefined;
|
|
252
|
+
} & {
|
|
253
|
+
$children?: {} | vue.VNodeChild | {
|
|
254
|
+
[x: `header.${string}`]: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
255
|
+
headers?: ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
256
|
+
loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
257
|
+
'header.data-table-select'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
258
|
+
'header.data-table-expand'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
259
|
+
};
|
|
260
|
+
'v-slots'?: {
|
|
261
|
+
[x: `header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
262
|
+
headers?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
263
|
+
loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
264
|
+
'header.data-table-select'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
265
|
+
'header.data-table-expand'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
266
|
+
} | undefined;
|
|
267
|
+
} & {
|
|
268
|
+
[x: `v-slot:header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
269
|
+
"v-slot:headers"?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
270
|
+
"v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
271
|
+
"v-slot:header.data-table-select"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
272
|
+
"v-slot:header.data-table-expand"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
273
|
+
}, void, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
|
|
274
|
+
sticky: boolean;
|
|
275
|
+
multiSort: boolean;
|
|
276
|
+
sortAscIcon: IconValue;
|
|
277
|
+
sortDescIcon: IconValue;
|
|
278
|
+
} & {
|
|
279
|
+
color?: string | undefined;
|
|
280
|
+
loading?: string | boolean | undefined;
|
|
281
|
+
headerProps?: Record<string, any> | undefined;
|
|
282
|
+
} & {
|
|
283
|
+
$children?: {} | vue.VNodeChild | {
|
|
284
|
+
[x: `header.${string}`]: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
285
|
+
headers?: ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
286
|
+
loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
287
|
+
'header.data-table-select'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
288
|
+
'header.data-table-expand'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
289
|
+
};
|
|
290
|
+
'v-slots'?: {
|
|
291
|
+
[x: `header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
292
|
+
headers?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
293
|
+
loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
294
|
+
'header.data-table-select'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
295
|
+
'header.data-table-expand'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
296
|
+
} | undefined;
|
|
297
|
+
} & {
|
|
298
|
+
[x: `v-slot:header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
299
|
+
"v-slot:headers"?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
300
|
+
"v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
301
|
+
"v-slot:header.data-table-select"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
302
|
+
"v-slot:header.data-table-expand"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
303
|
+
}, {
|
|
304
|
+
sticky: boolean;
|
|
305
|
+
multiSort: boolean;
|
|
306
|
+
sortAscIcon: IconValue;
|
|
307
|
+
sortDescIcon: IconValue;
|
|
308
|
+
}, true, {}, vue.SlotsType<Partial<{
|
|
309
|
+
[x: `header.${string}`]: (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
310
|
+
[key: string]: any;
|
|
311
|
+
}>[];
|
|
312
|
+
headers: (arg: HeadersSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
313
|
+
[key: string]: any;
|
|
314
|
+
}>[];
|
|
315
|
+
loader: (arg: LoaderSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
316
|
+
[key: string]: any;
|
|
317
|
+
}>[];
|
|
318
|
+
'header.data-table-select': (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
319
|
+
[key: string]: any;
|
|
320
|
+
}>[];
|
|
321
|
+
'header.data-table-expand': (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
322
|
+
[key: string]: any;
|
|
323
|
+
}>[];
|
|
324
|
+
}>>, {
|
|
325
|
+
P: {};
|
|
326
|
+
B: {};
|
|
327
|
+
D: {};
|
|
328
|
+
C: {};
|
|
329
|
+
M: {};
|
|
330
|
+
Defaults: {};
|
|
331
|
+
}, {
|
|
332
|
+
sticky: boolean;
|
|
333
|
+
multiSort: boolean;
|
|
334
|
+
sortAscIcon: IconValue;
|
|
335
|
+
sortDescIcon: IconValue;
|
|
336
|
+
} & {
|
|
337
|
+
color?: string | undefined;
|
|
338
|
+
loading?: string | boolean | undefined;
|
|
339
|
+
headerProps?: Record<string, any> | undefined;
|
|
340
|
+
} & {
|
|
341
|
+
$children?: {} | vue.VNodeChild | {
|
|
342
|
+
[x: `header.${string}`]: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
343
|
+
headers?: ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
344
|
+
loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
345
|
+
'header.data-table-select'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
346
|
+
'header.data-table-expand'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
347
|
+
};
|
|
348
|
+
'v-slots'?: {
|
|
349
|
+
[x: `header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
350
|
+
headers?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
351
|
+
loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
352
|
+
'header.data-table-select'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
353
|
+
'header.data-table-expand'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
354
|
+
} | undefined;
|
|
355
|
+
} & {
|
|
356
|
+
[x: `v-slot:header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
357
|
+
"v-slot:headers"?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
358
|
+
"v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
359
|
+
"v-slot:header.data-table-select"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
360
|
+
"v-slot:header.data-table-expand"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
361
|
+
}, {}, {}, {}, {}, {
|
|
362
|
+
sticky: boolean;
|
|
363
|
+
multiSort: boolean;
|
|
364
|
+
sortAscIcon: IconValue;
|
|
365
|
+
sortDescIcon: IconValue;
|
|
366
|
+
}>;
|
|
367
|
+
__isFragment?: undefined;
|
|
368
|
+
__isTeleport?: undefined;
|
|
369
|
+
__isSuspense?: undefined;
|
|
370
|
+
} & vue.ComponentOptionsBase<{
|
|
371
|
+
sticky: boolean;
|
|
372
|
+
multiSort: boolean;
|
|
373
|
+
sortAscIcon: IconValue;
|
|
374
|
+
sortDescIcon: IconValue;
|
|
375
|
+
} & {
|
|
376
|
+
color?: string | undefined;
|
|
377
|
+
loading?: string | boolean | undefined;
|
|
378
|
+
headerProps?: Record<string, any> | undefined;
|
|
379
|
+
} & {
|
|
380
|
+
$children?: {} | vue.VNodeChild | {
|
|
381
|
+
[x: `header.${string}`]: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
382
|
+
headers?: ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
383
|
+
loader?: ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
384
|
+
'header.data-table-select'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
385
|
+
'header.data-table-expand'?: ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
386
|
+
};
|
|
387
|
+
'v-slots'?: {
|
|
388
|
+
[x: `header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
389
|
+
headers?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
390
|
+
loader?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
391
|
+
'header.data-table-select'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
392
|
+
'header.data-table-expand'?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
393
|
+
} | undefined;
|
|
394
|
+
} & {
|
|
395
|
+
[x: `v-slot:header.${string}`]: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
396
|
+
"v-slot:headers"?: false | ((arg: HeadersSlotProps) => vue.VNodeChild) | undefined;
|
|
397
|
+
"v-slot:loader"?: false | ((arg: LoaderSlotProps) => vue.VNodeChild) | undefined;
|
|
398
|
+
"v-slot:header.data-table-select"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
399
|
+
"v-slot:header.data-table-expand"?: false | ((arg: VDataTableHeaderCellColumnSlotProps) => vue.VNodeChild) | undefined;
|
|
400
|
+
}, void, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
|
|
401
|
+
sticky: boolean;
|
|
402
|
+
multiSort: boolean;
|
|
403
|
+
sortAscIcon: IconValue;
|
|
404
|
+
sortDescIcon: IconValue;
|
|
405
|
+
}, {}, string, vue.SlotsType<Partial<{
|
|
406
|
+
[x: `header.${string}`]: (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
407
|
+
[key: string]: any;
|
|
408
|
+
}>[];
|
|
409
|
+
headers: (arg: HeadersSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
410
|
+
[key: string]: any;
|
|
411
|
+
}>[];
|
|
412
|
+
loader: (arg: LoaderSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
413
|
+
[key: string]: any;
|
|
414
|
+
}>[];
|
|
415
|
+
'header.data-table-select': (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
416
|
+
[key: string]: any;
|
|
417
|
+
}>[];
|
|
418
|
+
'header.data-table-expand': (arg: VDataTableHeaderCellColumnSlotProps) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
419
|
+
[key: string]: any;
|
|
420
|
+
}>[];
|
|
421
|
+
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
|
|
422
|
+
loading: (StringConstructor | BooleanConstructor)[];
|
|
423
|
+
color: StringConstructor;
|
|
424
|
+
sticky: BooleanConstructor;
|
|
425
|
+
multiSort: BooleanConstructor;
|
|
426
|
+
sortAscIcon: {
|
|
427
|
+
type: PropType<IconValue>;
|
|
428
|
+
default: string;
|
|
429
|
+
};
|
|
430
|
+
sortDescIcon: {
|
|
431
|
+
type: PropType<IconValue>;
|
|
432
|
+
default: string;
|
|
433
|
+
};
|
|
434
|
+
headerProps: {
|
|
435
|
+
type: PropType<Record<string, any>>;
|
|
436
|
+
};
|
|
437
|
+
}, vue.ExtractPropTypes<{
|
|
438
|
+
loading: (StringConstructor | BooleanConstructor)[];
|
|
439
|
+
color: StringConstructor;
|
|
440
|
+
sticky: BooleanConstructor;
|
|
441
|
+
multiSort: BooleanConstructor;
|
|
442
|
+
sortAscIcon: {
|
|
443
|
+
type: PropType<IconValue>;
|
|
444
|
+
default: string;
|
|
445
|
+
};
|
|
446
|
+
sortDescIcon: {
|
|
447
|
+
type: PropType<IconValue>;
|
|
448
|
+
default: string;
|
|
449
|
+
};
|
|
450
|
+
headerProps: {
|
|
451
|
+
type: PropType<Record<string, any>>;
|
|
452
|
+
};
|
|
453
|
+
}>>;
|
|
454
|
+
type VDataTableHeaders = InstanceType<typeof VDataTableHeaders>;
|
|
242
455
|
|
|
243
456
|
type Density = null | 'default' | 'comfortable' | 'compact';
|
|
244
457
|
|
|
@@ -4176,4 +4389,4 @@ declare const VDataTableServer: {
|
|
|
4176
4389
|
}>>;
|
|
4177
4390
|
type VDataTableServer = InstanceType<typeof VDataTableServer>;
|
|
4178
4391
|
|
|
4179
|
-
export { VDataTable, VDataTableFooter, VDataTableRow, VDataTableRows, VDataTableServer, VDataTableVirtual };
|
|
4392
|
+
export { VDataTable, VDataTableFooter, VDataTableHeaders, VDataTableRow, VDataTableRows, VDataTableServer, VDataTableVirtual };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { VDataTable } from "./VDataTable.mjs";
|
|
2
|
+
export { VDataTableHeaders } from "./VDataTableHeaders.mjs";
|
|
2
3
|
export { VDataTableFooter } from "./VDataTableFooter.mjs";
|
|
3
4
|
export { VDataTableRows } from "./VDataTableRows.mjs";
|
|
4
5
|
export { VDataTableRow } from "./VDataTableRow.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["VDataTable","VDataTableFooter","VDataTableRows","VDataTableRow","VDataTableVirtual","VDataTableServer"],"sources":["../../../src/components/VDataTable/index.ts"],"sourcesContent":["export { VDataTable } from './VDataTable'\nexport { VDataTableFooter } from './VDataTableFooter'\nexport { VDataTableRows } from './VDataTableRows'\nexport { VDataTableRow } from './VDataTableRow'\nexport { VDataTableVirtual } from './VDataTableVirtual'\nexport { VDataTableServer } from './VDataTableServer'\n"],"mappings":"SAASA,UAAU;AAAA,SACVC,gBAAgB;AAAA,SAChBC,cAAc;AAAA,SACdC,aAAa;AAAA,SACbC,iBAAiB;AAAA,SACjBC,gBAAgB"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["VDataTable","VDataTableHeaders","VDataTableFooter","VDataTableRows","VDataTableRow","VDataTableVirtual","VDataTableServer"],"sources":["../../../src/components/VDataTable/index.ts"],"sourcesContent":["export { VDataTable } from './VDataTable'\nexport { VDataTableHeaders } from './VDataTableHeaders'\nexport { VDataTableFooter } from './VDataTableFooter'\nexport { VDataTableRows } from './VDataTableRows'\nexport { VDataTableRow } from './VDataTableRow'\nexport { VDataTableVirtual } from './VDataTableVirtual'\nexport { VDataTableServer } from './VDataTableServer'\n"],"mappings":"SAASA,UAAU;AAAA,SACVC,iBAAiB;AAAA,SACjBC,gBAAgB;AAAA,SAChBC,cAAc;AAAA,SACdC,aAAa;AAAA,SACbC,iBAAiB;AAAA,SACjBC,gBAAgB"}
|
|
@@ -131,23 +131,20 @@
|
|
|
131
131
|
opacity: calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
.v-expansion-panel-title--
|
|
134
|
+
.v-expansion-panel-title--focusable.v-expansion-panel-title--active .v-expansion-panel-title__overlay {
|
|
135
135
|
opacity: calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier));
|
|
136
136
|
}
|
|
137
|
-
.v-expansion-panel-title--
|
|
137
|
+
.v-expansion-panel-title--focusable.v-expansion-panel-title--active:hover .v-expansion-panel-title__overlay {
|
|
138
138
|
opacity: calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier));
|
|
139
139
|
}
|
|
140
|
-
.v-expansion-panel-title--
|
|
140
|
+
.v-expansion-panel-title--focusable.v-expansion-panel-title--active:focus-visible .v-expansion-panel-title__overlay {
|
|
141
141
|
opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
|
|
142
142
|
}
|
|
143
143
|
@supports not selector(:focus-visible) {
|
|
144
|
-
.v-expansion-panel-title--
|
|
144
|
+
.v-expansion-panel-title--focusable.v-expansion-panel-title--active:focus .v-expansion-panel-title__overlay {
|
|
145
145
|
opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
-
.v-expansion-panel-title--active::before {
|
|
149
|
-
opacity: 0.12;
|
|
150
|
-
}
|
|
151
148
|
|
|
152
149
|
.v-expansion-panel-title__overlay {
|
|
153
150
|
position: absolute;
|
|
@@ -126,10 +126,11 @@
|
|
|
126
126
|
transition: .3s min-height settings.$standard-easing
|
|
127
127
|
width: 100%
|
|
128
128
|
justify-content: space-between
|
|
129
|
-
@include tools.states('.v-expansion-panel-title__overlay', true)
|
|
130
129
|
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
@include tools.states('.v-expansion-panel-title__overlay', false)
|
|
131
|
+
|
|
132
|
+
&--focusable.v-expansion-panel-title--active
|
|
133
|
+
@include tools.active-states('.v-expansion-panel-title__overlay')
|
|
133
134
|
|
|
134
135
|
.v-expansion-panel-title__overlay
|
|
135
136
|
@include tools.absolute()
|
|
@@ -19,6 +19,7 @@ export const makeVExpansionPanelTitleProps = propsFactory({
|
|
|
19
19
|
default: '$collapse'
|
|
20
20
|
},
|
|
21
21
|
hideActions: Boolean,
|
|
22
|
+
focusable: Boolean,
|
|
22
23
|
static: Boolean,
|
|
23
24
|
ripple: {
|
|
24
25
|
type: [Boolean, Object],
|
|
@@ -53,6 +54,7 @@ export const VExpansionPanelTitle = genericComponent()({
|
|
|
53
54
|
useRender(() => _withDirectives(_createVNode("button", {
|
|
54
55
|
"class": ['v-expansion-panel-title', {
|
|
55
56
|
'v-expansion-panel-title--active': expansionPanel.isSelected.value,
|
|
57
|
+
'v-expansion-panel-title--focusable': props.focusable,
|
|
56
58
|
'v-expansion-panel-title--static': props.static
|
|
57
59
|
}, backgroundColorClasses.value, props.class],
|
|
58
60
|
"style": [backgroundColorStyles.value, props.style],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VExpansionPanelTitle.mjs","names":["VExpansionPanelSymbol","VIcon","useBackgroundColor","makeComponentProps","IconValue","Ripple","computed","inject","genericComponent","propsFactory","useRender","makeVExpansionPanelTitleProps","color","String","expandIcon","type","default","collapseIcon","hideActions","Boolean","static","ripple","Object","readonly","VExpansionPanelTitle","name","directives","props","setup","_ref","slots","expansionPanel","Error","backgroundColorClasses","backgroundColorStyles","slotProps","disabled","value","expanded","isSelected","_withDirectives","_createVNode","class","style","undefined","toggle","actions","_resolveDirective"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanelTitle.tsx"],"sourcesContent":["// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ninterface ExpansionPanelTitleSlot {\n collapseIcon: IconValue\n disabled: boolean | undefined\n expanded: boolean\n expandIcon: IconValue\n readonly: boolean\n}\n\nexport type VExpansionPanelTitleSlots = {\n default: ExpansionPanelTitleSlot\n actions: ExpansionPanelTitleSlot\n}\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n hideActions: Boolean,\n static: Boolean,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: false,\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n}, 'VExpansionPanelTitle')\n\nexport const VExpansionPanelTitle = genericComponent<VExpansionPanelTitleSlots>()({\n name: 'VExpansionPanelTitle',\n\n directives: { Ripple },\n\n props: makeVExpansionPanelTitleProps(),\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly,\n }))\n\n useRender(() => (\n <button\n class={[\n 'v-expansion-panel-title',\n {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n 'v-expansion-panel-title--static': props.static,\n },\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n type=\"button\"\n tabindex={ expansionPanel.disabled.value ? -1 : undefined }\n disabled={ expansionPanel.disabled.value }\n aria-expanded={ expansionPanel.isSelected.value }\n onClick={ !props.readonly ? expansionPanel.toggle : undefined }\n v-ripple={ props.ripple }\n >\n <span class=\"v-expansion-panel-title__overlay\" />\n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n <span class=\"v-expansion-panel-title__icon\">\n {\n slots.actions ? slots.actions(slotProps.value)\n : <VIcon icon={ expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon } />\n }\n </span>\n )}\n </button>\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType<typeof VExpansionPanelTitle>\n"],"mappings":";AAAA;AAAA,SACSA,qBAAqB;AAAA,SACrBC,KAAK,8BAEd;AAAA,SACSC,kBAAkB;AAAA,SAClBC,kBAAkB;AAAA,SAClBC,SAAS,uCAElB;AAAA,SACSC,MAAM,6CAEf;AACA,SAASC,QAAQ,EAAEC,MAAM,QAAQ,KAAK;AAAA,SAC7BC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAiBA,OAAO,MAAMC,6BAA6B,GAAGF,YAAY,CAAC;EACxDG,KAAK,EAAEC,MAAM;EACbC,UAAU,EAAE;IACVC,IAAI,EAAEX,SAAS;IACfY,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAE;IACZF,IAAI,EAAEX,SAAS;IACfY,OAAO,EAAE;EACX,CAAC;EACDE,WAAW,EAAEC,OAAO;EACpBC,
|
|
1
|
+
{"version":3,"file":"VExpansionPanelTitle.mjs","names":["VExpansionPanelSymbol","VIcon","useBackgroundColor","makeComponentProps","IconValue","Ripple","computed","inject","genericComponent","propsFactory","useRender","makeVExpansionPanelTitleProps","color","String","expandIcon","type","default","collapseIcon","hideActions","Boolean","focusable","static","ripple","Object","readonly","VExpansionPanelTitle","name","directives","props","setup","_ref","slots","expansionPanel","Error","backgroundColorClasses","backgroundColorStyles","slotProps","disabled","value","expanded","isSelected","_withDirectives","_createVNode","class","style","undefined","toggle","actions","_resolveDirective"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanelTitle.tsx"],"sourcesContent":["// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ninterface ExpansionPanelTitleSlot {\n collapseIcon: IconValue\n disabled: boolean | undefined\n expanded: boolean\n expandIcon: IconValue\n readonly: boolean\n}\n\nexport type VExpansionPanelTitleSlots = {\n default: ExpansionPanelTitleSlot\n actions: ExpansionPanelTitleSlot\n}\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n hideActions: Boolean,\n focusable: Boolean,\n static: Boolean,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: false,\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n}, 'VExpansionPanelTitle')\n\nexport const VExpansionPanelTitle = genericComponent<VExpansionPanelTitleSlots>()({\n name: 'VExpansionPanelTitle',\n\n directives: { Ripple },\n\n props: makeVExpansionPanelTitleProps(),\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly,\n }))\n\n useRender(() => (\n <button\n class={[\n 'v-expansion-panel-title',\n {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n 'v-expansion-panel-title--focusable': props.focusable,\n 'v-expansion-panel-title--static': props.static,\n },\n backgroundColorClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n type=\"button\"\n tabindex={ expansionPanel.disabled.value ? -1 : undefined }\n disabled={ expansionPanel.disabled.value }\n aria-expanded={ expansionPanel.isSelected.value }\n onClick={ !props.readonly ? expansionPanel.toggle : undefined }\n v-ripple={ props.ripple }\n >\n <span class=\"v-expansion-panel-title__overlay\" />\n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n <span class=\"v-expansion-panel-title__icon\">\n {\n slots.actions ? slots.actions(slotProps.value)\n : <VIcon icon={ expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon } />\n }\n </span>\n )}\n </button>\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType<typeof VExpansionPanelTitle>\n"],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
|
|
|
15
15
|
export const makeVExpansionPanelsProps = propsFactory({
|
|
16
16
|
color: String,
|
|
17
17
|
flat: Boolean,
|
|
18
|
+
focusable: Boolean,
|
|
18
19
|
static: Boolean,
|
|
19
20
|
tile: Boolean,
|
|
20
21
|
variant: {
|
|
@@ -49,6 +50,7 @@ export const VExpansionPanels = genericComponent()({
|
|
|
49
50
|
readonly: toRef(props, 'readonly')
|
|
50
51
|
},
|
|
51
52
|
VExpansionPanelTitle: {
|
|
53
|
+
focusable: toRef(props, 'focusable'),
|
|
52
54
|
static: toRef(props, 'static')
|
|
53
55
|
}
|
|
54
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VExpansionPanels.mjs","names":["makeComponentProps","provideDefaults","makeGroupProps","useGroup","makeTagProps","makeThemeProps","provideTheme","computed","toRef","genericComponent","propsFactory","useRender","VExpansionPanelSymbol","Symbol","for","allowedVariants","makeVExpansionPanelsProps","color","String","flat","Boolean","static","tile","variant","type","default","validator","v","includes","readonly","VExpansionPanels","name","props","emits","val","setup","_ref","slots","themeClasses","variantClass","VExpansionPanel","VExpansionPanelTitle","_createVNode","tag","value","class","style"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanels.tsx"],"sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-expansion-panel')\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport const makeVExpansionPanelsProps = propsFactory({\n color: String,\n flat: Boolean,\n static: Boolean,\n tile: Boolean,\n variant: {\n type: String as PropType<Variant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n ...makeGroupProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VExpansionPanels')\n\nexport const VExpansionPanels = genericComponent()({\n name: 'VExpansionPanels',\n\n props: makeVExpansionPanelsProps(),\n\n emits: {\n 'update:modelValue': (val: unknown) => true,\n },\n\n setup (props, { slots }) {\n useGroup(props, VExpansionPanelSymbol)\n\n const { themeClasses } = provideTheme(props)\n\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`)\n\n provideDefaults({\n VExpansionPanel: {\n color: toRef(props, 'color'),\n readonly: toRef(props, 'readonly'),\n },\n VExpansionPanelTitle: {\n static: toRef(props, 'static'),\n },\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-expansion-panels',\n {\n 'v-expansion-panels--flat': props.flat,\n 'v-expansion-panels--tile': props.tile,\n },\n themeClasses.value,\n variantClass.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanels = InstanceType<typeof VExpansionPanels>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,eAAe;AAAA,SACfC,cAAc,EAAEC,QAAQ;AAAA,SACxBC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,uCAErC;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAIA,OAAO,MAAMC,qBAAqD,GAAGC,MAAM,CAACC,GAAG,CAAC,2BAA2B,CAAC;AAE5G,MAAMC,eAAe,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAU;AAI5E,OAAO,MAAMC,yBAAyB,GAAGN,YAAY,CAAC;EACpDO,KAAK,EAAEC,MAAM;EACbC,IAAI,EAAEC,OAAO;EACbC,
|
|
1
|
+
{"version":3,"file":"VExpansionPanels.mjs","names":["makeComponentProps","provideDefaults","makeGroupProps","useGroup","makeTagProps","makeThemeProps","provideTheme","computed","toRef","genericComponent","propsFactory","useRender","VExpansionPanelSymbol","Symbol","for","allowedVariants","makeVExpansionPanelsProps","color","String","flat","Boolean","focusable","static","tile","variant","type","default","validator","v","includes","readonly","VExpansionPanels","name","props","emits","val","setup","_ref","slots","themeClasses","variantClass","VExpansionPanel","VExpansionPanelTitle","_createVNode","tag","value","class","style"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanels.tsx"],"sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-expansion-panel')\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport const makeVExpansionPanelsProps = propsFactory({\n color: String,\n flat: Boolean,\n focusable: Boolean,\n static: Boolean,\n tile: Boolean,\n variant: {\n type: String as PropType<Variant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n ...makeGroupProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VExpansionPanels')\n\nexport const VExpansionPanels = genericComponent()({\n name: 'VExpansionPanels',\n\n props: makeVExpansionPanelsProps(),\n\n emits: {\n 'update:modelValue': (val: unknown) => true,\n },\n\n setup (props, { slots }) {\n useGroup(props, VExpansionPanelSymbol)\n\n const { themeClasses } = provideTheme(props)\n\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`)\n\n provideDefaults({\n VExpansionPanel: {\n color: toRef(props, 'color'),\n readonly: toRef(props, 'readonly'),\n },\n VExpansionPanelTitle: {\n focusable: toRef(props, 'focusable'),\n static: toRef(props, 'static'),\n },\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-expansion-panels',\n {\n 'v-expansion-panels--flat': props.flat,\n 'v-expansion-panels--tile': props.tile,\n },\n themeClasses.value,\n variantClass.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanels = InstanceType<typeof VExpansionPanels>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,eAAe;AAAA,SACfC,cAAc,EAAEC,QAAQ;AAAA,SACxBC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,uCAErC;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAIA,OAAO,MAAMC,qBAAqD,GAAGC,MAAM,CAACC,GAAG,CAAC,2BAA2B,CAAC;AAE5G,MAAMC,eAAe,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAU;AAI5E,OAAO,MAAMC,yBAAyB,GAAGN,YAAY,CAAC;EACpDO,KAAK,EAAEC,MAAM;EACbC,IAAI,EAAEC,OAAO;EACbC,SAAS,EAAED,OAAO;EAClBE,MAAM,EAAEF,OAAO;EACfG,IAAI,EAAEH,OAAO;EACbI,OAAO,EAAE;IACPC,IAAI,EAAEP,MAA2B;IACjCQ,OAAO,EAAE,SAAS;IAClBC,SAAS,EAAGC,CAAM,IAAKb,eAAe,CAACc,QAAQ,CAACD,CAAC;EACnD,CAAC;EACDE,QAAQ,EAAEV,OAAO;EAEjB,GAAGpB,kBAAkB,CAAC,CAAC;EACvB,GAAGE,cAAc,CAAC,CAAC;EACnB,GAAGE,YAAY,CAAC,CAAC;EACjB,GAAGC,cAAc,CAAC;AACpB,CAAC,EAAE,kBAAkB,CAAC;AAEtB,OAAO,MAAM0B,gBAAgB,GAAGtB,gBAAgB,CAAC,CAAC,CAAC;EACjDuB,IAAI,EAAE,kBAAkB;EAExBC,KAAK,EAAEjB,yBAAyB,CAAC,CAAC;EAElCkB,KAAK,EAAE;IACL,mBAAmB,EAAGC,GAAY,IAAK;EACzC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrBlC,QAAQ,CAAC8B,KAAK,EAAErB,qBAAqB,CAAC;IAEtC,MAAM;MAAE2B;IAAa,CAAC,GAAGjC,YAAY,CAAC2B,KAAK,CAAC;IAE5C,MAAMO,YAAY,GAAGjC,QAAQ,CAAC,MAAM0B,KAAK,CAACT,OAAO,IAAK,+BAA8BS,KAAK,CAACT,OAAQ,EAAC,CAAC;IAEpGvB,eAAe,CAAC;MACdwC,eAAe,EAAE;QACfxB,KAAK,EAAET,KAAK,CAACyB,KAAK,EAAE,OAAO,CAAC;QAC5BH,QAAQ,EAAEtB,KAAK,CAACyB,KAAK,EAAE,UAAU;MACnC,CAAC;MACDS,oBAAoB,EAAE;QACpBrB,SAAS,EAAEb,KAAK,CAACyB,KAAK,EAAE,WAAW,CAAC;QACpCX,MAAM,EAAEd,KAAK,CAACyB,KAAK,EAAE,QAAQ;MAC/B;IACF,CAAC,CAAC;IAEFtB,SAAS,CAAC,MAAAgC,YAAA,CAAAV,KAAA,CAAAW,GAAA;MAAA,SAEC,CACL,oBAAoB,EACpB;QACE,0BAA0B,EAAEX,KAAK,CAACd,IAAI;QACtC,0BAA0B,EAAEc,KAAK,CAACV;MACpC,CAAC,EACDgB,YAAY,CAACM,KAAK,EAClBL,YAAY,CAACK,KAAK,EAClBZ,KAAK,CAACa,KAAK,CACZ;MAAA,SACOb,KAAK,CAACc;IAAK,GACTT,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -15,6 +15,7 @@ declare const VExpansionPanels: {
|
|
|
15
15
|
readonly: boolean;
|
|
16
16
|
static: boolean;
|
|
17
17
|
tag: string;
|
|
18
|
+
focusable: boolean;
|
|
18
19
|
tile: boolean;
|
|
19
20
|
} & {
|
|
20
21
|
max?: number | undefined;
|
|
@@ -46,6 +47,7 @@ declare const VExpansionPanels: {
|
|
|
46
47
|
readonly: boolean;
|
|
47
48
|
static: boolean;
|
|
48
49
|
tag: string;
|
|
50
|
+
focusable: boolean;
|
|
49
51
|
tile: boolean;
|
|
50
52
|
} & {
|
|
51
53
|
max?: number | undefined;
|
|
@@ -75,6 +77,7 @@ declare const VExpansionPanels: {
|
|
|
75
77
|
readonly: boolean;
|
|
76
78
|
static: boolean;
|
|
77
79
|
tag: string;
|
|
80
|
+
focusable: boolean;
|
|
78
81
|
tile: boolean;
|
|
79
82
|
modelValue: any;
|
|
80
83
|
}, true, {}, vue.SlotsType<Partial<{
|
|
@@ -97,6 +100,7 @@ declare const VExpansionPanels: {
|
|
|
97
100
|
readonly: boolean;
|
|
98
101
|
static: boolean;
|
|
99
102
|
tag: string;
|
|
103
|
+
focusable: boolean;
|
|
100
104
|
tile: boolean;
|
|
101
105
|
} & {
|
|
102
106
|
max?: number | undefined;
|
|
@@ -126,6 +130,7 @@ declare const VExpansionPanels: {
|
|
|
126
130
|
readonly: boolean;
|
|
127
131
|
static: boolean;
|
|
128
132
|
tag: string;
|
|
133
|
+
focusable: boolean;
|
|
129
134
|
tile: boolean;
|
|
130
135
|
modelValue: any;
|
|
131
136
|
}>;
|
|
@@ -141,6 +146,7 @@ declare const VExpansionPanels: {
|
|
|
141
146
|
readonly: boolean;
|
|
142
147
|
static: boolean;
|
|
143
148
|
tag: string;
|
|
149
|
+
focusable: boolean;
|
|
144
150
|
tile: boolean;
|
|
145
151
|
} & {
|
|
146
152
|
max?: number | undefined;
|
|
@@ -172,6 +178,7 @@ declare const VExpansionPanels: {
|
|
|
172
178
|
readonly: boolean;
|
|
173
179
|
static: boolean;
|
|
174
180
|
tag: string;
|
|
181
|
+
focusable: boolean;
|
|
175
182
|
tile: boolean;
|
|
176
183
|
modelValue: any;
|
|
177
184
|
}, {}, string, vue.SlotsType<Partial<{
|
|
@@ -200,6 +207,7 @@ declare const VExpansionPanels: {
|
|
|
200
207
|
};
|
|
201
208
|
color: StringConstructor;
|
|
202
209
|
flat: BooleanConstructor;
|
|
210
|
+
focusable: BooleanConstructor;
|
|
203
211
|
static: BooleanConstructor;
|
|
204
212
|
tile: BooleanConstructor;
|
|
205
213
|
variant: {
|
|
@@ -230,6 +238,7 @@ declare const VExpansionPanels: {
|
|
|
230
238
|
};
|
|
231
239
|
color: StringConstructor;
|
|
232
240
|
flat: BooleanConstructor;
|
|
241
|
+
focusable: BooleanConstructor;
|
|
233
242
|
static: BooleanConstructor;
|
|
234
243
|
tile: BooleanConstructor;
|
|
235
244
|
variant: {
|
|
@@ -252,6 +261,7 @@ declare const VExpansionPanel: {
|
|
|
252
261
|
readonly: boolean;
|
|
253
262
|
static: boolean;
|
|
254
263
|
tag: string;
|
|
264
|
+
focusable: boolean;
|
|
255
265
|
tile: boolean;
|
|
256
266
|
ripple: boolean | {
|
|
257
267
|
class: string;
|
|
@@ -299,6 +309,7 @@ declare const VExpansionPanel: {
|
|
|
299
309
|
readonly: boolean;
|
|
300
310
|
static: boolean;
|
|
301
311
|
tag: string;
|
|
312
|
+
focusable: boolean;
|
|
302
313
|
tile: boolean;
|
|
303
314
|
ripple: boolean | {
|
|
304
315
|
class: string;
|
|
@@ -342,6 +353,7 @@ declare const VExpansionPanel: {
|
|
|
342
353
|
readonly: boolean;
|
|
343
354
|
static: boolean;
|
|
344
355
|
tag: string;
|
|
356
|
+
focusable: boolean;
|
|
345
357
|
rounded: string | number | boolean;
|
|
346
358
|
tile: boolean;
|
|
347
359
|
ripple: boolean | {
|
|
@@ -374,6 +386,7 @@ declare const VExpansionPanel: {
|
|
|
374
386
|
readonly: boolean;
|
|
375
387
|
static: boolean;
|
|
376
388
|
tag: string;
|
|
389
|
+
focusable: boolean;
|
|
377
390
|
tile: boolean;
|
|
378
391
|
ripple: boolean | {
|
|
379
392
|
class: string;
|
|
@@ -417,6 +430,7 @@ declare const VExpansionPanel: {
|
|
|
417
430
|
readonly: boolean;
|
|
418
431
|
static: boolean;
|
|
419
432
|
tag: string;
|
|
433
|
+
focusable: boolean;
|
|
420
434
|
rounded: string | number | boolean;
|
|
421
435
|
tile: boolean;
|
|
422
436
|
ripple: boolean | {
|
|
@@ -436,6 +450,7 @@ declare const VExpansionPanel: {
|
|
|
436
450
|
readonly: boolean;
|
|
437
451
|
static: boolean;
|
|
438
452
|
tag: string;
|
|
453
|
+
focusable: boolean;
|
|
439
454
|
tile: boolean;
|
|
440
455
|
ripple: boolean | {
|
|
441
456
|
class: string;
|
|
@@ -483,6 +498,7 @@ declare const VExpansionPanel: {
|
|
|
483
498
|
readonly: boolean;
|
|
484
499
|
static: boolean;
|
|
485
500
|
tag: string;
|
|
501
|
+
focusable: boolean;
|
|
486
502
|
rounded: string | number | boolean;
|
|
487
503
|
tile: boolean;
|
|
488
504
|
ripple: boolean | {
|
|
@@ -517,6 +533,7 @@ declare const VExpansionPanel: {
|
|
|
517
533
|
default: string;
|
|
518
534
|
};
|
|
519
535
|
hideActions: BooleanConstructor;
|
|
536
|
+
focusable: BooleanConstructor;
|
|
520
537
|
static: BooleanConstructor;
|
|
521
538
|
ripple: {
|
|
522
539
|
type: vue.PropType<boolean | {
|
|
@@ -561,6 +578,7 @@ declare const VExpansionPanel: {
|
|
|
561
578
|
default: string;
|
|
562
579
|
};
|
|
563
580
|
hideActions: BooleanConstructor;
|
|
581
|
+
focusable: BooleanConstructor;
|
|
564
582
|
static: BooleanConstructor;
|
|
565
583
|
ripple: {
|
|
566
584
|
type: vue.PropType<boolean | {
|
|
@@ -706,6 +724,7 @@ declare const VExpansionPanelTitle: {
|
|
|
706
724
|
style: vue.StyleValue;
|
|
707
725
|
readonly: boolean;
|
|
708
726
|
static: boolean;
|
|
727
|
+
focusable: boolean;
|
|
709
728
|
ripple: boolean | {
|
|
710
729
|
class: string;
|
|
711
730
|
} | undefined;
|
|
@@ -731,6 +750,7 @@ declare const VExpansionPanelTitle: {
|
|
|
731
750
|
style: vue.StyleValue;
|
|
732
751
|
readonly: boolean;
|
|
733
752
|
static: boolean;
|
|
753
|
+
focusable: boolean;
|
|
734
754
|
ripple: boolean | {
|
|
735
755
|
class: string;
|
|
736
756
|
} | undefined;
|
|
@@ -756,6 +776,7 @@ declare const VExpansionPanelTitle: {
|
|
|
756
776
|
style: vue.StyleValue;
|
|
757
777
|
readonly: boolean;
|
|
758
778
|
static: boolean;
|
|
779
|
+
focusable: boolean;
|
|
759
780
|
ripple: boolean | {
|
|
760
781
|
class: string;
|
|
761
782
|
} | undefined;
|
|
@@ -780,6 +801,7 @@ declare const VExpansionPanelTitle: {
|
|
|
780
801
|
style: vue.StyleValue;
|
|
781
802
|
readonly: boolean;
|
|
782
803
|
static: boolean;
|
|
804
|
+
focusable: boolean;
|
|
783
805
|
ripple: boolean | {
|
|
784
806
|
class: string;
|
|
785
807
|
} | undefined;
|
|
@@ -805,6 +827,7 @@ declare const VExpansionPanelTitle: {
|
|
|
805
827
|
style: vue.StyleValue;
|
|
806
828
|
readonly: boolean;
|
|
807
829
|
static: boolean;
|
|
830
|
+
focusable: boolean;
|
|
808
831
|
ripple: boolean | {
|
|
809
832
|
class: string;
|
|
810
833
|
} | undefined;
|
|
@@ -819,6 +842,7 @@ declare const VExpansionPanelTitle: {
|
|
|
819
842
|
style: vue.StyleValue;
|
|
820
843
|
readonly: boolean;
|
|
821
844
|
static: boolean;
|
|
845
|
+
focusable: boolean;
|
|
822
846
|
ripple: boolean | {
|
|
823
847
|
class: string;
|
|
824
848
|
} | undefined;
|
|
@@ -844,6 +868,7 @@ declare const VExpansionPanelTitle: {
|
|
|
844
868
|
style: vue.StyleValue;
|
|
845
869
|
readonly: boolean;
|
|
846
870
|
static: boolean;
|
|
871
|
+
focusable: boolean;
|
|
847
872
|
ripple: boolean | {
|
|
848
873
|
class: string;
|
|
849
874
|
} | undefined;
|
|
@@ -873,6 +898,7 @@ declare const VExpansionPanelTitle: {
|
|
|
873
898
|
default: string;
|
|
874
899
|
};
|
|
875
900
|
hideActions: BooleanConstructor;
|
|
901
|
+
focusable: BooleanConstructor;
|
|
876
902
|
static: BooleanConstructor;
|
|
877
903
|
ripple: {
|
|
878
904
|
type: PropType<boolean | {
|
|
@@ -897,6 +923,7 @@ declare const VExpansionPanelTitle: {
|
|
|
897
923
|
default: string;
|
|
898
924
|
};
|
|
899
925
|
hideActions: BooleanConstructor;
|
|
926
|
+
focusable: BooleanConstructor;
|
|
900
927
|
static: BooleanConstructor;
|
|
901
928
|
ripple: {
|
|
902
929
|
type: PropType<boolean | {
|
|
@@ -183,9 +183,10 @@ export const VSelect = genericComponent()({
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
function select(item) {
|
|
186
|
-
|
|
187
|
-
const add = index === -1;
|
|
186
|
+
let add = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
188
187
|
if (props.multiple) {
|
|
188
|
+
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
189
|
+
add = index === -1;
|
|
189
190
|
if (add) {
|
|
190
191
|
model.value = [...model.value, item];
|
|
191
192
|
} else {
|
|
@@ -346,7 +347,7 @@ export const VSelect = genericComponent()({
|
|
|
346
347
|
function onChipClose(e) {
|
|
347
348
|
e.stopPropagation();
|
|
348
349
|
e.preventDefault();
|
|
349
|
-
select(item);
|
|
350
|
+
select(item, false);
|
|
350
351
|
}
|
|
351
352
|
const slotProps = {
|
|
352
353
|
'onClick:close': onChipClose,
|