@fastkit/vui 0.8.6 → 0.8.9

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/vui.cjs.js CHANGED
@@ -410,19 +410,24 @@ function defineFormSelectorComponent(opts) {
410
410
  "indeterminate": true,
411
411
  "class": "mr-1",
412
412
  "size": CONTROL_LOADING_SPINNER_SIZES[this.size || 'md']
413
- }, null), this.loadingMessageRef]), this.propItems.map(attrs => {
414
- const selected = selectorControl.isSelected(attrs.value);
415
- return itemRenderer({
416
- selected,
417
- control: selectorControl,
418
- attrs: { ...attrs,
419
- modelValue: selected,
420
- key: attrs.value
421
- },
422
- slots: {
423
- default: () => attrs.label(this.selectorControl)
424
- }
425
- });
413
+ }, null), this.loadingMessageRef]), this.propGroups.map(group => {
414
+ const {
415
+ items
416
+ } = group;
417
+ return vue.createVNode(vue.Fragment, null, [items.map(attrs => {
418
+ const selected = selectorControl.isSelected(attrs.value);
419
+ return itemRenderer({
420
+ selected,
421
+ control: selectorControl,
422
+ attrs: { ...attrs,
423
+ modelValue: selected,
424
+ key: attrs.value
425
+ },
426
+ slots: {
427
+ default: () => attrs.label(this.selectorControl)
428
+ }
429
+ });
430
+ })]);
426
431
  }), vueKit.renderSlotOrEmpty(this.$slots, 'default')])
427
432
  });
428
433
  }
@@ -447,7 +452,7 @@ function useElevation(props, opts = {}) {
447
452
  };
448
453
  }
449
454
 
450
- function _isSlot$e(s) {
455
+ function _isSlot$f(s) {
451
456
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
452
457
  }
453
458
 
@@ -468,7 +473,7 @@ const VSkeltonLoaderBone = vue.defineComponent({
468
473
  const TagName = props.tag;
469
474
  return vue.createVNode(TagName, vue.mergeProps(ctx.attrs, {
470
475
  "class": "v-skelton-loader-bone"
471
- }), _isSlot$e(_slot = vueUtils.renderSlotOrEmpty(ctx.slots)) ? _slot : {
476
+ }), _isSlot$f(_slot = vueUtils.renderSlotOrEmpty(ctx.slots)) ? _slot : {
472
477
  default: () => [_slot]
473
478
  });
474
479
  };
@@ -1291,7 +1296,7 @@ const VButtonGroup = vue.defineComponent({
1291
1296
 
1292
1297
  });
1293
1298
 
1294
- function _isSlot$d(s) {
1299
+ function _isSlot$e(s) {
1295
1300
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1296
1301
  }
1297
1302
 
@@ -1540,7 +1545,7 @@ const VPagination = vue.defineComponent({
1540
1545
  "class": classes,
1541
1546
  "to": to,
1542
1547
  "key": key
1543
- }, _isSlot$d(children) ? children : {
1548
+ }, _isSlot$e(children) ? children : {
1544
1549
  default: () => [children]
1545
1550
  });
1546
1551
  } else {
@@ -1696,7 +1701,7 @@ const VDrawerLayout = vue.defineComponent({
1696
1701
 
1697
1702
  });
1698
1703
 
1699
- function _isSlot$c(s) {
1704
+ function _isSlot$d(s) {
1700
1705
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1701
1706
  }
1702
1707
 
@@ -1733,7 +1738,7 @@ const VHero = vue.defineComponent({
1733
1738
  }, {
1734
1739
  default: () => [vue.createVNode(HTagName, {
1735
1740
  "class": "v-hero__title"
1736
- }, _isSlot$c(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1741
+ }, _isSlot$d(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1737
1742
  default: () => [_slot]
1738
1743
  }), adornment && vue.createVNode("div", {
1739
1744
  "class": "v-hero__adornment"
@@ -1745,7 +1750,7 @@ const VHero = vue.defineComponent({
1745
1750
 
1746
1751
  });
1747
1752
 
1748
- function _isSlot$b(s) {
1753
+ function _isSlot$c(s) {
1749
1754
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1750
1755
  }
1751
1756
 
@@ -1786,7 +1791,7 @@ function renderNavigationItemInput(input, extraProps) {
1786
1791
  } = resolveNavigationItemInput(input);
1787
1792
  return vue.createVNode(VNavigationItem, { ...props,
1788
1793
  ...extraProps
1789
- }, _isSlot$b(label) ? label : {
1794
+ }, _isSlot$c(label) ? label : {
1790
1795
  default: () => [label]
1791
1796
  });
1792
1797
  }
@@ -1941,7 +1946,7 @@ const VNavigationItem = vue.defineComponent({
1941
1946
  "class": ['v-navigation-item', classes.value],
1942
1947
  "onClick": onClick,
1943
1948
  "onChangeActive": onChangeActive
1944
- }), _isSlot$b(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1949
+ }), _isSlot$c(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1945
1950
  default: () => [_slot]
1946
1951
  }), _children && vue.createVNode(vueUtils.VExpandTransition, null, {
1947
1952
  default: () => [vue.withDirectives(vue.createVNode("div", {
@@ -2125,7 +2130,7 @@ const VCheckbox = vue.defineComponent({
2125
2130
 
2126
2131
  });
2127
2132
 
2128
- function _isSlot$a(s) {
2133
+ function _isSlot$b(s) {
2129
2134
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
2130
2135
  }
2131
2136
 
@@ -2137,7 +2142,7 @@ const VCheckboxGroup = defineFormSelectorComponent({
2137
2142
  itemRenderer: ({
2138
2143
  attrs,
2139
2144
  slots
2140
- }) => vue.createVNode(VCheckbox, attrs, _isSlot$a(slots) ? slots : {
2145
+ }) => vue.createVNode(VCheckbox, attrs, _isSlot$b(slots) ? slots : {
2141
2146
  default: () => [slots]
2142
2147
  })
2143
2148
  });
@@ -2189,7 +2194,7 @@ const VRadio = vue.defineComponent({
2189
2194
 
2190
2195
  });
2191
2196
 
2192
- function _isSlot$9(s) {
2197
+ function _isSlot$a(s) {
2193
2198
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
2194
2199
  }
2195
2200
 
@@ -2200,7 +2205,7 @@ const VRadioGroup = defineFormSelectorComponent({
2200
2205
  itemRenderer: ({
2201
2206
  attrs,
2202
2207
  slots
2203
- }) => vue.createVNode(VRadio, attrs, _isSlot$9(slots) ? slots : {
2208
+ }) => vue.createVNode(VRadio, attrs, _isSlot$a(slots) ? slots : {
2204
2209
  default: () => [slots]
2205
2210
  })
2206
2211
  });
@@ -2262,7 +2267,7 @@ const VSwitch = vue.defineComponent({
2262
2267
 
2263
2268
  });
2264
2269
 
2265
- function _isSlot$8(s) {
2270
+ function _isSlot$9(s) {
2266
2271
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
2267
2272
  }
2268
2273
 
@@ -2274,7 +2279,7 @@ const VSwitchGroup = defineFormSelectorComponent({
2274
2279
  itemRenderer: ({
2275
2280
  attrs,
2276
2281
  slots
2277
- }) => vue.createVNode(VSwitch, attrs, _isSlot$8(slots) ? slots : {
2282
+ }) => vue.createVNode(VSwitch, attrs, _isSlot$9(slots) ? slots : {
2278
2283
  default: () => [slots]
2279
2284
  })
2280
2285
  });
@@ -2313,10 +2318,13 @@ const VOption = vue.defineComponent({
2313
2318
  selectorItemControl,
2314
2319
  classes
2315
2320
  } = this;
2316
- return vue.createVNode("label", {
2321
+ return vue.createVNode("label", vue.mergeProps({
2317
2322
  "class": classes,
2318
- "onClick": selectorItemControl.handleClickElement
2319
- }, [vue.createVNode("span", {
2323
+ "onClick": selectorItemControl.handleClickElement,
2324
+ "tabindex": selectorItemControl.tabindex
2325
+ }, {
2326
+ 'aria-disabled': selectorItemControl.isDisabled
2327
+ }), [vue.createVNode("span", {
2320
2328
  "class": "v-option__label"
2321
2329
  }, [vueKit.renderSlotOrEmpty(this.$slots, 'default')])]);
2322
2330
  }
@@ -2470,6 +2478,10 @@ const VControlField = vue.defineComponent({
2470
2478
 
2471
2479
  });
2472
2480
 
2481
+ function _isSlot$8(s) {
2482
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
2483
+ }
2484
+
2473
2485
  const {
2474
2486
  props: props$3,
2475
2487
  emits: emits$3
@@ -2573,18 +2585,29 @@ const VSelect = vue.defineComponent({
2573
2585
  selectedItems
2574
2586
  } = this;
2575
2587
  const children = this.$slots.default && this.$slots.default() || [];
2576
- const propOptions = this.propItems.map(item => {
2577
- return vue.createVNode(VOption, {
2588
+ const propGroups = this.propGroups.map(group => {
2589
+ let _slot;
2590
+
2591
+ return vue.createVNode(VOptionGroup, {
2592
+ "key": group.id,
2593
+ "groupId": group.id,
2594
+ "label": group.label(selectorControl),
2595
+ "disabled": group.disabled
2596
+ }, _isSlot$8(_slot = group.items.map(item => vue.createVNode(VOption, {
2578
2597
  "disabled": item.disabled,
2579
2598
  "value": item.value,
2580
2599
  "key": item.value
2581
2600
  }, {
2582
2601
  default: () => item.label(selectorControl)
2602
+ }))) ? _slot : {
2603
+ default: () => [_slot]
2583
2604
  });
2584
2605
  });
2585
2606
  return vue.createVNode(VFormControl, {
2586
2607
  "nodeControl": nodeControl,
2587
- "class": ['v-select', this.classes],
2608
+ "class": ['v-select', this.classes, {
2609
+ 'v-select--multiple': this.multiple
2610
+ }],
2588
2611
  "label": this.label,
2589
2612
  "hint": this.hint,
2590
2613
  "hinttip": this.hinttip,
@@ -2600,11 +2623,20 @@ const VSelect = vue.defineComponent({
2600
2623
  "distance": 0,
2601
2624
  "alwaysRender": true,
2602
2625
  "modelValue": this.menuOpened,
2603
- "onUpdate:modelValue": $event => this.menuOpened = $event
2626
+ "onUpdate:modelValue": $event => this.menuOpened = $event,
2627
+ "itemElements": body => body.querySelectorAll('.v-option'),
2628
+ "onChoiceItemElement": item => {
2629
+ const ev = new MouseEvent('click', {
2630
+ view: window,
2631
+ bubbles: true,
2632
+ cancelable: true
2633
+ });
2634
+ item.dispatchEvent(ev);
2635
+ }
2604
2636
  }, {
2605
2637
  default: () => [vue.createVNode("div", {
2606
2638
  "class": ['v-select__body', this.classes]
2607
- }, [children, propOptions])],
2639
+ }, [children, propGroups])],
2608
2640
  activator: ({
2609
2641
  attrs,
2610
2642
  control
@@ -2617,6 +2649,7 @@ const VSelect = vue.defineComponent({
2617
2649
  "endAdornment": this.endAdornment,
2618
2650
  "size": this.size,
2619
2651
  "focused": this.menuOpened,
2652
+ "autoHeight": this.multiple,
2620
2653
  "onClick": ev => {
2621
2654
  if (this.canOperation && !control.isActive) {
2622
2655
  let t = ev.target;
@@ -410,19 +410,24 @@ function defineFormSelectorComponent(opts) {
410
410
  "indeterminate": true,
411
411
  "class": "mr-1",
412
412
  "size": CONTROL_LOADING_SPINNER_SIZES[this.size || 'md']
413
- }, null), this.loadingMessageRef]), this.propItems.map(attrs => {
414
- const selected = selectorControl.isSelected(attrs.value);
415
- return itemRenderer({
416
- selected,
417
- control: selectorControl,
418
- attrs: { ...attrs,
419
- modelValue: selected,
420
- key: attrs.value
421
- },
422
- slots: {
423
- default: () => attrs.label(this.selectorControl)
424
- }
425
- });
413
+ }, null), this.loadingMessageRef]), this.propGroups.map(group => {
414
+ const {
415
+ items
416
+ } = group;
417
+ return vue.createVNode(vue.Fragment, null, [items.map(attrs => {
418
+ const selected = selectorControl.isSelected(attrs.value);
419
+ return itemRenderer({
420
+ selected,
421
+ control: selectorControl,
422
+ attrs: { ...attrs,
423
+ modelValue: selected,
424
+ key: attrs.value
425
+ },
426
+ slots: {
427
+ default: () => attrs.label(this.selectorControl)
428
+ }
429
+ });
430
+ })]);
426
431
  }), vueKit.renderSlotOrEmpty(this.$slots, 'default')])
427
432
  });
428
433
  }
@@ -447,7 +452,7 @@ function useElevation(props, opts = {}) {
447
452
  };
448
453
  }
449
454
 
450
- function _isSlot$e(s) {
455
+ function _isSlot$f(s) {
451
456
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
452
457
  }
453
458
 
@@ -468,7 +473,7 @@ const VSkeltonLoaderBone = vue.defineComponent({
468
473
  const TagName = props.tag;
469
474
  return vue.createVNode(TagName, vue.mergeProps(ctx.attrs, {
470
475
  "class": "v-skelton-loader-bone"
471
- }), _isSlot$e(_slot = vueUtils.renderSlotOrEmpty(ctx.slots)) ? _slot : {
476
+ }), _isSlot$f(_slot = vueUtils.renderSlotOrEmpty(ctx.slots)) ? _slot : {
472
477
  default: () => [_slot]
473
478
  });
474
479
  };
@@ -1291,7 +1296,7 @@ const VButtonGroup = vue.defineComponent({
1291
1296
 
1292
1297
  });
1293
1298
 
1294
- function _isSlot$d(s) {
1299
+ function _isSlot$e(s) {
1295
1300
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1296
1301
  }
1297
1302
 
@@ -1540,7 +1545,7 @@ const VPagination = vue.defineComponent({
1540
1545
  "class": classes,
1541
1546
  "to": to,
1542
1547
  "key": key
1543
- }, _isSlot$d(children) ? children : {
1548
+ }, _isSlot$e(children) ? children : {
1544
1549
  default: () => [children]
1545
1550
  });
1546
1551
  } else {
@@ -1696,7 +1701,7 @@ const VDrawerLayout = vue.defineComponent({
1696
1701
 
1697
1702
  });
1698
1703
 
1699
- function _isSlot$c(s) {
1704
+ function _isSlot$d(s) {
1700
1705
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1701
1706
  }
1702
1707
 
@@ -1733,7 +1738,7 @@ const VHero = vue.defineComponent({
1733
1738
  }, {
1734
1739
  default: () => [vue.createVNode(HTagName, {
1735
1740
  "class": "v-hero__title"
1736
- }, _isSlot$c(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1741
+ }, _isSlot$d(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1737
1742
  default: () => [_slot]
1738
1743
  }), adornment && vue.createVNode("div", {
1739
1744
  "class": "v-hero__adornment"
@@ -1745,7 +1750,7 @@ const VHero = vue.defineComponent({
1745
1750
 
1746
1751
  });
1747
1752
 
1748
- function _isSlot$b(s) {
1753
+ function _isSlot$c(s) {
1749
1754
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1750
1755
  }
1751
1756
 
@@ -1786,7 +1791,7 @@ function renderNavigationItemInput(input, extraProps) {
1786
1791
  } = resolveNavigationItemInput(input);
1787
1792
  return vue.createVNode(VNavigationItem, { ...props,
1788
1793
  ...extraProps
1789
- }, _isSlot$b(label) ? label : {
1794
+ }, _isSlot$c(label) ? label : {
1790
1795
  default: () => [label]
1791
1796
  });
1792
1797
  }
@@ -1941,7 +1946,7 @@ const VNavigationItem = vue.defineComponent({
1941
1946
  "class": ['v-navigation-item', classes.value],
1942
1947
  "onClick": onClick,
1943
1948
  "onChangeActive": onChangeActive
1944
- }), _isSlot$b(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1949
+ }), _isSlot$c(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1945
1950
  default: () => [_slot]
1946
1951
  }), _children && vue.createVNode(vueUtils.VExpandTransition, null, {
1947
1952
  default: () => [vue.withDirectives(vue.createVNode("div", {
@@ -2125,7 +2130,7 @@ const VCheckbox = vue.defineComponent({
2125
2130
 
2126
2131
  });
2127
2132
 
2128
- function _isSlot$a(s) {
2133
+ function _isSlot$b(s) {
2129
2134
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
2130
2135
  }
2131
2136
 
@@ -2137,7 +2142,7 @@ const VCheckboxGroup = defineFormSelectorComponent({
2137
2142
  itemRenderer: ({
2138
2143
  attrs,
2139
2144
  slots
2140
- }) => vue.createVNode(VCheckbox, attrs, _isSlot$a(slots) ? slots : {
2145
+ }) => vue.createVNode(VCheckbox, attrs, _isSlot$b(slots) ? slots : {
2141
2146
  default: () => [slots]
2142
2147
  })
2143
2148
  });
@@ -2189,7 +2194,7 @@ const VRadio = vue.defineComponent({
2189
2194
 
2190
2195
  });
2191
2196
 
2192
- function _isSlot$9(s) {
2197
+ function _isSlot$a(s) {
2193
2198
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
2194
2199
  }
2195
2200
 
@@ -2200,7 +2205,7 @@ const VRadioGroup = defineFormSelectorComponent({
2200
2205
  itemRenderer: ({
2201
2206
  attrs,
2202
2207
  slots
2203
- }) => vue.createVNode(VRadio, attrs, _isSlot$9(slots) ? slots : {
2208
+ }) => vue.createVNode(VRadio, attrs, _isSlot$a(slots) ? slots : {
2204
2209
  default: () => [slots]
2205
2210
  })
2206
2211
  });
@@ -2262,7 +2267,7 @@ const VSwitch = vue.defineComponent({
2262
2267
 
2263
2268
  });
2264
2269
 
2265
- function _isSlot$8(s) {
2270
+ function _isSlot$9(s) {
2266
2271
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
2267
2272
  }
2268
2273
 
@@ -2274,7 +2279,7 @@ const VSwitchGroup = defineFormSelectorComponent({
2274
2279
  itemRenderer: ({
2275
2280
  attrs,
2276
2281
  slots
2277
- }) => vue.createVNode(VSwitch, attrs, _isSlot$8(slots) ? slots : {
2282
+ }) => vue.createVNode(VSwitch, attrs, _isSlot$9(slots) ? slots : {
2278
2283
  default: () => [slots]
2279
2284
  })
2280
2285
  });
@@ -2313,10 +2318,13 @@ const VOption = vue.defineComponent({
2313
2318
  selectorItemControl,
2314
2319
  classes
2315
2320
  } = this;
2316
- return vue.createVNode("label", {
2321
+ return vue.createVNode("label", vue.mergeProps({
2317
2322
  "class": classes,
2318
- "onClick": selectorItemControl.handleClickElement
2319
- }, [vue.createVNode("span", {
2323
+ "onClick": selectorItemControl.handleClickElement,
2324
+ "tabindex": selectorItemControl.tabindex
2325
+ }, {
2326
+ 'aria-disabled': selectorItemControl.isDisabled
2327
+ }), [vue.createVNode("span", {
2320
2328
  "class": "v-option__label"
2321
2329
  }, [vueKit.renderSlotOrEmpty(this.$slots, 'default')])]);
2322
2330
  }
@@ -2470,6 +2478,10 @@ const VControlField = vue.defineComponent({
2470
2478
 
2471
2479
  });
2472
2480
 
2481
+ function _isSlot$8(s) {
2482
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
2483
+ }
2484
+
2473
2485
  const {
2474
2486
  props: props$3,
2475
2487
  emits: emits$3
@@ -2573,18 +2585,29 @@ const VSelect = vue.defineComponent({
2573
2585
  selectedItems
2574
2586
  } = this;
2575
2587
  const children = this.$slots.default && this.$slots.default() || [];
2576
- const propOptions = this.propItems.map(item => {
2577
- return vue.createVNode(VOption, {
2588
+ const propGroups = this.propGroups.map(group => {
2589
+ let _slot;
2590
+
2591
+ return vue.createVNode(VOptionGroup, {
2592
+ "key": group.id,
2593
+ "groupId": group.id,
2594
+ "label": group.label(selectorControl),
2595
+ "disabled": group.disabled
2596
+ }, _isSlot$8(_slot = group.items.map(item => vue.createVNode(VOption, {
2578
2597
  "disabled": item.disabled,
2579
2598
  "value": item.value,
2580
2599
  "key": item.value
2581
2600
  }, {
2582
2601
  default: () => item.label(selectorControl)
2602
+ }))) ? _slot : {
2603
+ default: () => [_slot]
2583
2604
  });
2584
2605
  });
2585
2606
  return vue.createVNode(VFormControl, {
2586
2607
  "nodeControl": nodeControl,
2587
- "class": ['v-select', this.classes],
2608
+ "class": ['v-select', this.classes, {
2609
+ 'v-select--multiple': this.multiple
2610
+ }],
2588
2611
  "label": this.label,
2589
2612
  "hint": this.hint,
2590
2613
  "hinttip": this.hinttip,
@@ -2600,11 +2623,20 @@ const VSelect = vue.defineComponent({
2600
2623
  "distance": 0,
2601
2624
  "alwaysRender": true,
2602
2625
  "modelValue": this.menuOpened,
2603
- "onUpdate:modelValue": $event => this.menuOpened = $event
2626
+ "onUpdate:modelValue": $event => this.menuOpened = $event,
2627
+ "itemElements": body => body.querySelectorAll('.v-option'),
2628
+ "onChoiceItemElement": item => {
2629
+ const ev = new MouseEvent('click', {
2630
+ view: window,
2631
+ bubbles: true,
2632
+ cancelable: true
2633
+ });
2634
+ item.dispatchEvent(ev);
2635
+ }
2604
2636
  }, {
2605
2637
  default: () => [vue.createVNode("div", {
2606
2638
  "class": ['v-select__body', this.classes]
2607
- }, [children, propOptions])],
2639
+ }, [children, propGroups])],
2608
2640
  activator: ({
2609
2641
  attrs,
2610
2642
  control
@@ -2617,6 +2649,7 @@ const VSelect = vue.defineComponent({
2617
2649
  "endAdornment": this.endAdornment,
2618
2650
  "size": this.size,
2619
2651
  "focused": this.menuOpened,
2652
+ "autoHeight": this.multiple,
2620
2653
  "onClick": ev => {
2621
2654
  if (this.canOperation && !control.isActive) {
2622
2655
  let t = ev.target;
package/dist/vui.css CHANGED
@@ -1833,12 +1833,25 @@ thead th {
1833
1833
  opacity: 0.1;
1834
1834
  }
1835
1835
  .v-option {
1836
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1837
+ padding: 0;
1838
+ touch-action: manipulation;
1839
+ cursor: pointer;
1840
+ user-select: none;
1841
+ background-color: transparent;
1842
+ border: 0;
1843
+ outline: 0;
1844
+ appearance: none;
1836
1845
  position: relative;
1837
1846
  display: flex;
1838
1847
  width: 100%;
1839
- padding: 0.375em 1em;
1840
- cursor: pointer;
1841
- user-select: none;
1848
+ padding: 0.75em 1em;
1849
+ }
1850
+ .v-option::-moz-focus-inner {
1851
+ border: 0;
1852
+ }
1853
+ .v-option, .v-option:hover, .v-option:focus {
1854
+ text-decoration: none;
1842
1855
  }
1843
1856
  .v-option input {
1844
1857
  position: absolute;
@@ -1884,9 +1897,27 @@ thead th {
1884
1897
  .v-option--has-not-value .v-option__label {
1885
1898
  font-style: italic;
1886
1899
  }
1900
+ .v-option[disabled], .v-option[tabindex="-1"] {
1901
+ color: var(--palette-muted);
1902
+ pointer-events: none;
1903
+ opacity: 0.4;
1904
+ }
1905
+ .v-option[disabled]::before, .v-option[tabindex="-1"]::before {
1906
+ opacity: 0 !important;
1907
+ }
1887
1908
  .v-option-group {
1888
1909
  display: block;
1889
1910
  }
1911
+ .v-option-group__label {
1912
+ padding: 1em;
1913
+ font-size: 0.875em;
1914
+ color: var(--palette-caption);
1915
+ opacity: 0.6;
1916
+ }
1917
+ .v-option-group--disabled .v-option-group__label {
1918
+ color: var(--palette-muted);
1919
+ opacity: 0.4;
1920
+ }
1890
1921
  .v-select__input {
1891
1922
  cursor: pointer;
1892
1923
  }
@@ -1914,6 +1945,17 @@ thead th {
1914
1945
  white-space: nowrap;
1915
1946
  vertical-align: middle;
1916
1947
  }
1948
+ .v-select--multiple .v-select__selections {
1949
+ display: block;
1950
+ }
1951
+ .v-select--multiple .v-select__selections__inner {
1952
+ display: block;
1953
+ overflow: auto;
1954
+ white-space: unset;
1955
+ }
1956
+ .v-select--multiple .v-control-field__body {
1957
+ padding: 0.2em 0;
1958
+ }
1917
1959
  .v-select__placeholder {
1918
1960
  font-style: italic;
1919
1961
  color: var(--control-disabled-color);