@deot/vc-components 1.0.27 → 1.0.29

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/index.js CHANGED
@@ -5,7 +5,7 @@ import { Utils as Utils$1, IS_SERVER as IS_SERVER$1 } from '@deot/vc-shared';
5
5
  import * as Utils from '@deot/helper-utils';
6
6
  import { getUid, preZero, raf, getPropByPath, throttle as throttle$1, hasOwn } from '@deot/helper-utils';
7
7
  import * as $ from '@deot/helper-dom';
8
- import { composedPath, scrollIntoView, prefixStyle, removeClass, addClass, hasClass, getStyle } from '@deot/helper-dom';
8
+ import { composedPath, scrollIntoView, prefixStyle, getStyle, removeClass, addClass, hasClass } from '@deot/helper-dom';
9
9
  import { useAttrs, useScrollbar, getInstance } from '@deot/vc-hooks';
10
10
  import { Wheel } from '@deot/helper-wheel';
11
11
  import { Validator } from '@deot/helper-validator';
@@ -81,9 +81,9 @@ const props$1q = {
81
81
 
82
82
  /** @jsxImportSource vue */
83
83
 
84
- const COMPONENT_NAME$20 = 'vc-action-sheet';
84
+ const COMPONENT_NAME$22 = 'vc-action-sheet';
85
85
  const ActionSheet = /* @__PURE__ */ defineComponent({
86
- name: COMPONENT_NAME$20,
86
+ name: COMPONENT_NAME$22,
87
87
  props: props$1q,
88
88
  setup(props, {
89
89
  slots
@@ -270,9 +270,9 @@ const IconManager = new Manager();
270
270
 
271
271
  /** @jsxImportSource vue */
272
272
 
273
- const COMPONENT_NAME$1$ = 'vc-icon';
273
+ const COMPONENT_NAME$21 = 'vc-icon';
274
274
  const Icon = /* @__PURE__ */ defineComponent({
275
- name: COMPONENT_NAME$1$,
275
+ name: COMPONENT_NAME$21,
276
276
  props: props$1o,
277
277
  setup(props) {
278
278
  const viewBox = ref('0 0 1024 1024');
@@ -471,9 +471,9 @@ const useTransition = () => {
471
471
  };
472
472
  };
473
473
 
474
- const COMPONENT_NAME$1_ = "vc-transition";
474
+ const COMPONENT_NAME$20 = "vc-transition";
475
475
  const Transition = defineComponent({
476
- name: COMPONENT_NAME$1_,
476
+ name: COMPONENT_NAME$20,
477
477
  props: props$1n,
478
478
  // 当不声明emits的情况下,事件存在于attrs中
479
479
  inheritAttrs: false,
@@ -494,9 +494,9 @@ const Transition = defineComponent({
494
494
  }
495
495
  });
496
496
 
497
- const COMPONENT_NAME$1Z = "vc-transition-collapse";
497
+ const COMPONENT_NAME$1$ = "vc-transition-collapse";
498
498
  const TransitionCollapse = defineComponent({
499
- name: COMPONENT_NAME$1Z,
499
+ name: COMPONENT_NAME$1$,
500
500
  props: props$1n,
501
501
  // 当不声明emits的情况下,事件存在于attrs中
502
502
  inheritAttrs: false,
@@ -615,9 +615,9 @@ const TransitionCollapse = defineComponent({
615
615
  }
616
616
  });
617
617
 
618
- const COMPONENT_NAME$1Y = "vc-transition-fade";
618
+ const COMPONENT_NAME$1_ = "vc-transition-fade";
619
619
  const TransitionFade = defineComponent({
620
- name: COMPONENT_NAME$1Y,
620
+ name: COMPONENT_NAME$1_,
621
621
  props: {
622
622
  ...props$1n,
623
623
  // inheritAttrs必须是false
@@ -652,9 +652,9 @@ const TransitionFade = defineComponent({
652
652
  }
653
653
  });
654
654
 
655
- const COMPONENT_NAME$1X = "vc-transition-scale";
655
+ const COMPONENT_NAME$1Z = "vc-transition-scale";
656
656
  const TransitionScale = defineComponent({
657
- name: COMPONENT_NAME$1X,
657
+ name: COMPONENT_NAME$1Z,
658
658
  props: {
659
659
  ...props$1n,
660
660
  mode: {
@@ -694,9 +694,9 @@ const TransitionScale = defineComponent({
694
694
  }
695
695
  });
696
696
 
697
- const COMPONENT_NAME$1W = "vc-transition-slide";
697
+ const COMPONENT_NAME$1Y = "vc-transition-slide";
698
698
  const TransitionSlide = defineComponent({
699
- name: COMPONENT_NAME$1W,
699
+ name: COMPONENT_NAME$1Y,
700
700
  props: {
701
701
  ...props$1n,
702
702
  mode: {
@@ -736,9 +736,9 @@ const TransitionSlide = defineComponent({
736
736
  }
737
737
  });
738
738
 
739
- const COMPONENT_NAME$1V = "vc-transition-zoom";
739
+ const COMPONENT_NAME$1X = "vc-transition-zoom";
740
740
  const TransitionZoom = defineComponent({
741
- name: COMPONENT_NAME$1V,
741
+ name: COMPONENT_NAME$1X,
742
742
  props: {
743
743
  ...props$1n,
744
744
  mode: {
@@ -780,7 +780,7 @@ const TransitionZoom = defineComponent({
780
780
 
781
781
  /** @jsxImportSource vue */
782
782
 
783
- const COMPONENT_NAME$1U = 'vc-alert';
783
+ const COMPONENT_NAME$1W = 'vc-alert';
784
784
 
785
785
  // [color, borderColor, backgroundColor], -> CSS
786
786
  const THEME_MAP = {
@@ -790,7 +790,7 @@ const THEME_MAP = {
790
790
  warning: ['#ffbf00', '#ffe58f', '#fffbe6']
791
791
  };
792
792
  const Alert = /* @__PURE__ */ defineComponent({
793
- name: COMPONENT_NAME$1U,
793
+ name: COMPONENT_NAME$1W,
794
794
  props: props$1p,
795
795
  setup(props, {
796
796
  slots,
@@ -889,9 +889,9 @@ const props$1m = {
889
889
 
890
890
  /** @jsxImportSource vue */
891
891
 
892
- const COMPONENT_NAME$1T = 'vc-artboard';
892
+ const COMPONENT_NAME$1V = 'vc-artboard';
893
893
  const Artboard = /* @__PURE__ */ defineComponent({
894
- name: COMPONENT_NAME$1T,
894
+ name: COMPONENT_NAME$1V,
895
895
  props: props$1m,
896
896
  setup(props, {
897
897
  slots
@@ -930,9 +930,9 @@ const props$1l = {
930
930
 
931
931
  /** @jsxImportSource vue */
932
932
 
933
- const COMPONENT_NAME$1S = 'vc-spin';
933
+ const COMPONENT_NAME$1U = 'vc-spin';
934
934
  const Spin = /* @__PURE__ */ defineComponent({
935
- name: COMPONENT_NAME$1S,
935
+ name: COMPONENT_NAME$1U,
936
936
  props: props$1l,
937
937
  setup(props, {
938
938
  slots
@@ -983,9 +983,9 @@ const props$1k = {
983
983
  exclude: RegExp
984
984
  };
985
985
 
986
- const COMPONENT_NAME$1R = "vc-debounce";
986
+ const COMPONENT_NAME$1T = "vc-debounce";
987
987
  const Debounce = defineComponent({
988
- name: COMPONENT_NAME$1R,
988
+ name: COMPONENT_NAME$1T,
989
989
  props: props$1k,
990
990
  /**
991
991
  * 不声明emits使得事件被透传放入attrs中, 这样可以让所有的事件透传
@@ -1057,9 +1057,9 @@ const props$1j = {
1057
1057
 
1058
1058
  /** @jsxImportSource vue */
1059
1059
 
1060
- const COMPONENT_NAME$1Q = 'vc-button';
1060
+ const COMPONENT_NAME$1S = 'vc-button';
1061
1061
  const Button = /* @__PURE__ */ defineComponent({
1062
- name: COMPONENT_NAME$1Q,
1062
+ name: COMPONENT_NAME$1S,
1063
1063
  emits: ['click'],
1064
1064
  props: props$1j,
1065
1065
  setup(props, {
@@ -1141,9 +1141,9 @@ const props$1i = {
1141
1141
 
1142
1142
  /** @jsxImportSource vue */
1143
1143
 
1144
- const COMPONENT_NAME$1P = 'vc-button-group';
1144
+ const COMPONENT_NAME$1R = 'vc-button-group';
1145
1145
  const ButtonGroup = /* @__PURE__ */ defineComponent({
1146
- name: COMPONENT_NAME$1P,
1146
+ name: COMPONENT_NAME$1R,
1147
1147
  props: props$1i,
1148
1148
  setup(props, {
1149
1149
  slots
@@ -1177,9 +1177,9 @@ const props$1h = {
1177
1177
 
1178
1178
  /** @jsxImportSource vue */
1179
1179
 
1180
- const COMPONENT_NAME$1O = 'vc-calendar';
1180
+ const COMPONENT_NAME$1Q = 'vc-calendar';
1181
1181
  const Calendar = /* @__PURE__ */ defineComponent({
1182
- name: COMPONENT_NAME$1O,
1182
+ name: COMPONENT_NAME$1Q,
1183
1183
  props: props$1h,
1184
1184
  setup(props, {
1185
1185
  slots
@@ -1217,9 +1217,9 @@ const props$1g = {
1217
1217
 
1218
1218
  /** @jsxImportSource vue */
1219
1219
 
1220
- const COMPONENT_NAME$1N = 'vc-card';
1220
+ const COMPONENT_NAME$1P = 'vc-card';
1221
1221
  const Card = /* @__PURE__ */ defineComponent({
1222
- name: COMPONENT_NAME$1N,
1222
+ name: COMPONENT_NAME$1P,
1223
1223
  props: props$1g,
1224
1224
  setup(props, {
1225
1225
  slots
@@ -1255,9 +1255,9 @@ const props$1f = {
1255
1255
 
1256
1256
  /** @jsxImportSource vue */
1257
1257
 
1258
- const COMPONENT_NAME$1M = 'vc-carousel';
1258
+ const COMPONENT_NAME$1O = 'vc-carousel';
1259
1259
  const Carousel = /* @__PURE__ */ defineComponent({
1260
- name: COMPONENT_NAME$1M,
1260
+ name: COMPONENT_NAME$1O,
1261
1261
  props: props$1f,
1262
1262
  setup(props, {
1263
1263
  slots
@@ -1281,9 +1281,9 @@ const props$1e = {
1281
1281
 
1282
1282
  /** @jsxImportSource vue */
1283
1283
 
1284
- const COMPONENT_NAME$1L = 'vc-cascader';
1284
+ const COMPONENT_NAME$1N = 'vc-cascader';
1285
1285
  const Cascader = /* @__PURE__ */ defineComponent({
1286
- name: COMPONENT_NAME$1L,
1286
+ name: COMPONENT_NAME$1N,
1287
1287
  props: props$1e,
1288
1288
  setup(props, {
1289
1289
  slots
@@ -1352,9 +1352,9 @@ const props$1d = {
1352
1352
 
1353
1353
  /** @jsxImportSource vue */
1354
1354
 
1355
- const COMPONENT_NAME$1K = 'vc-chart';
1355
+ const COMPONENT_NAME$1M = 'vc-chart';
1356
1356
  const Chart = /* @__PURE__ */ defineComponent({
1357
- name: COMPONENT_NAME$1K,
1357
+ name: COMPONENT_NAME$1M,
1358
1358
  props: props$1d,
1359
1359
  emits: [...EVENTS, 'ready'],
1360
1360
  setup(props, {
@@ -1586,9 +1586,9 @@ const useCheckbox = () => {
1586
1586
 
1587
1587
  /** @jsxImportSource vue */
1588
1588
 
1589
- const COMPONENT_NAME$1J = 'vc-checkbox';
1589
+ const COMPONENT_NAME$1L = 'vc-checkbox';
1590
1590
  const Checkbox = /* @__PURE__ */ defineComponent({
1591
- name: COMPONENT_NAME$1J,
1591
+ name: COMPONENT_NAME$1L,
1592
1592
  props: props$1c,
1593
1593
  emits: ['update:modelValue', 'change'],
1594
1594
  setup(props, {
@@ -1675,9 +1675,9 @@ const useCheckboxGroup = () => {
1675
1675
 
1676
1676
  /** @jsxImportSource vue */
1677
1677
 
1678
- const COMPONENT_NAME$1I = 'vc-checkbox-group';
1678
+ const COMPONENT_NAME$1K = 'vc-checkbox-group';
1679
1679
  const CheckboxGroup = /* @__PURE__ */ defineComponent({
1680
- name: COMPONENT_NAME$1I,
1680
+ name: COMPONENT_NAME$1K,
1681
1681
  props: props$1b,
1682
1682
  emits: ['update:modelValue', 'change'],
1683
1683
  setup(props, {
@@ -1695,9 +1695,9 @@ const CheckboxGroup = /* @__PURE__ */ defineComponent({
1695
1695
 
1696
1696
  /** @jsxImportSource vue */
1697
1697
 
1698
- const COMPONENT_NAME$1H = 'vcm-checkbox';
1698
+ const COMPONENT_NAME$1J = 'vcm-checkbox';
1699
1699
  const MCheckbox = /* @__PURE__ */ defineComponent({
1700
- name: COMPONENT_NAME$1H,
1700
+ name: COMPONENT_NAME$1J,
1701
1701
  props: props$1c,
1702
1702
  emits: ['update:modelValue', 'change'],
1703
1703
  setup(props, {
@@ -1737,9 +1737,9 @@ const MCheckbox = /* @__PURE__ */ defineComponent({
1737
1737
 
1738
1738
  /** @jsxImportSource vue */
1739
1739
 
1740
- const COMPONENT_NAME$1G = 'vcm-checkbox-group';
1740
+ const COMPONENT_NAME$1I = 'vcm-checkbox-group';
1741
1741
  const MCheckboxGroup = /* @__PURE__ */ defineComponent({
1742
- name: COMPONENT_NAME$1G,
1742
+ name: COMPONENT_NAME$1I,
1743
1743
  props: props$1b,
1744
1744
  emits: ['update:modelValue', 'change'],
1745
1745
  setup(props, {
@@ -1798,9 +1798,9 @@ const props$19 = {
1798
1798
  }
1799
1799
  };
1800
1800
 
1801
- const COMPONENT_NAME$1F = "vc-customer";
1801
+ const COMPONENT_NAME$1H = "vc-customer";
1802
1802
  const Customer = defineComponent({
1803
- name: COMPONENT_NAME$1F,
1803
+ name: COMPONENT_NAME$1H,
1804
1804
  props: props$19,
1805
1805
  setup(props, context) {
1806
1806
  return () => h(() => {
@@ -1811,9 +1811,9 @@ const Customer = defineComponent({
1811
1811
 
1812
1812
  /** @jsxImportSource vue */
1813
1813
 
1814
- const COMPONENT_NAME$1E = 'vc-message';
1814
+ const COMPONENT_NAME$1G = 'vc-message';
1815
1815
  const MessageView = /* @__PURE__ */ defineComponent({
1816
- name: COMPONENT_NAME$1E,
1816
+ name: COMPONENT_NAME$1G,
1817
1817
  emits: ['before-close', 'close', 'portal-fulfilled'],
1818
1818
  props: props$1a,
1819
1819
  setup(props, {
@@ -1960,7 +1960,7 @@ class PortalLeaf {
1960
1960
  }
1961
1961
  }
1962
1962
 
1963
- const COMPONENT_NAME$1D = "vc-portal";
1963
+ const COMPONENT_NAME$1F = "vc-portal";
1964
1964
  class Portal {
1965
1965
  /**
1966
1966
  * 清理Portals类型组件
@@ -2012,7 +2012,7 @@ class Portal {
2012
2012
  this.wrapper = wrapper;
2013
2013
  this.globalOptions = {
2014
2014
  ...options,
2015
- name: options?.name || wrapper.name || Utils.getUid(COMPONENT_NAME$1D)
2015
+ name: options?.name || wrapper.name || Utils.getUid(COMPONENT_NAME$1F)
2016
2016
  };
2017
2017
  }
2018
2018
  popup(propsData, options) {
@@ -2111,7 +2111,7 @@ class Portal {
2111
2111
  ...rest
2112
2112
  } = options;
2113
2113
  let useAllNodes = fragment;
2114
- const name = multiple ? `${name$}__${Utils.getUid(COMPONENT_NAME$1D)}` : name$;
2114
+ const name = multiple ? `${name$}__${Utils.getUid(COMPONENT_NAME$1F)}` : name$;
2115
2115
  const container = document.createElement(tag);
2116
2116
  const root = typeof el === "object" ? el : document.querySelector(el || "body");
2117
2117
  !alive && Portal.leafs.get(name)?.destroy();
@@ -2145,7 +2145,7 @@ class Portal {
2145
2145
  } else {
2146
2146
  const wrapper = this.wrapper;
2147
2147
  const app = createApp({
2148
- name: COMPONENT_NAME$1D,
2148
+ name: COMPONENT_NAME$1F,
2149
2149
  parent,
2150
2150
  setup() {
2151
2151
  if (alive) {
@@ -2257,13 +2257,13 @@ const props$18 = {
2257
2257
  }
2258
2258
  };
2259
2259
 
2260
- const COMPONENT_NAME$1C = 'vc-portal-view';
2260
+ const COMPONENT_NAME$1E = 'vc-portal-view';
2261
2261
 
2262
2262
  /**
2263
2263
  * 写法不同,但与vue@2.x 保持一致
2264
2264
  */
2265
2265
  const PortalView = /* @__PURE__ */ defineComponent({
2266
- name: COMPONENT_NAME$1C,
2266
+ name: COMPONENT_NAME$1E,
2267
2267
  props: props$18,
2268
2268
  setup(props, {
2269
2269
  slots
@@ -2434,9 +2434,9 @@ const useClipboard = (done) => {
2434
2434
  return () => h(props.tag, { onClick: handleClick, class: "vc-clipboard" }, slots?.default?.());
2435
2435
  };
2436
2436
 
2437
- const COMPONENT_NAME$1B = "vc-clipboard";
2437
+ const COMPONENT_NAME$1D = "vc-clipboard";
2438
2438
  const Clipboard$1 = defineComponent({
2439
- name: COMPONENT_NAME$1B,
2439
+ name: COMPONENT_NAME$1D,
2440
2440
  props: props$17,
2441
2441
  setup() {
2442
2442
  return useClipboard((content) => Message.success({ content }));
@@ -2476,9 +2476,9 @@ const MTransitionZoom = TransitionZoom;
2476
2476
 
2477
2477
  /** @jsxImportSource vue */
2478
2478
 
2479
- const COMPONENT_NAME$1A = 'vcm-toast';
2479
+ const COMPONENT_NAME$1C = 'vcm-toast';
2480
2480
  const MToastView = /* @__PURE__ */ defineComponent({
2481
- name: COMPONENT_NAME$1A,
2481
+ name: COMPONENT_NAME$1C,
2482
2482
  emits: ['close', 'portal-fulfilled'],
2483
2483
  props: props$16,
2484
2484
  setup(props, {
@@ -2580,9 +2580,9 @@ const warning$2 = create$3({ mode: "warning" });
2580
2580
  const error$2 = create$3({ mode: "error" });
2581
2581
  const MToast = Object.assign(MToastView, { destroy: destroy$4, info: info$2, success: success$2, loading, warning: warning$2, error: error$2 });
2582
2582
 
2583
- const COMPONENT_NAME$1z = "vcm-clipboard";
2583
+ const COMPONENT_NAME$1B = "vcm-clipboard";
2584
2584
  const MClipboard$1 = defineComponent({
2585
- name: COMPONENT_NAME$1z,
2585
+ name: COMPONENT_NAME$1B,
2586
2586
  props: props$17,
2587
2587
  setup() {
2588
2588
  return useClipboard((content) => MToast.info({ content }));
@@ -2614,9 +2614,9 @@ const props$15 = {
2614
2614
  }
2615
2615
  };
2616
2616
 
2617
- const COMPONENT_NAME$1y = "vc-collapse";
2617
+ const COMPONENT_NAME$1A = "vc-collapse";
2618
2618
  const Collapse = defineComponent({
2619
- name: COMPONENT_NAME$1y,
2619
+ name: COMPONENT_NAME$1A,
2620
2620
  props: props$15,
2621
2621
  emits: ["update:moodelValue", "change"],
2622
2622
  setup(props, { slots, emit }) {
@@ -2730,12 +2730,12 @@ const props$13 = {
2730
2730
 
2731
2731
  /** @jsxImportSource vue */
2732
2732
 
2733
- function _isSlot$3(s) {
2733
+ function _isSlot$2(s) {
2734
2734
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !isVNode(s);
2735
2735
  }
2736
- const COMPONENT_NAME$1x = 'vc-expand';
2736
+ const COMPONENT_NAME$1z = 'vc-expand';
2737
2737
  const Expand$1 = /* @__PURE__ */ defineComponent({
2738
- name: COMPONENT_NAME$1x,
2738
+ name: COMPONENT_NAME$1z,
2739
2739
  props: props$13,
2740
2740
  setup(props, {
2741
2741
  slots
@@ -2754,7 +2754,7 @@ const Expand$1 = /* @__PURE__ */ defineComponent({
2754
2754
  enter: 200,
2755
2755
  leave: 200
2756
2756
  }
2757
- }, _isSlot$3(_slot = withDirectives(createVNode(Content, null, {
2757
+ }, _isSlot$2(_slot = withDirectives(createVNode(Content, null, {
2758
2758
  default: () => [(props.alive || !props.alive && isActive.value) && slots.default?.()]
2759
2759
  }), [[vShow, isActive.value]])) ? _slot : {
2760
2760
  default: () => [_slot]
@@ -2765,9 +2765,9 @@ const Expand$1 = /* @__PURE__ */ defineComponent({
2765
2765
 
2766
2766
  /** @jsxImportSource vue */
2767
2767
 
2768
- const COMPONENT_NAME$1w = 'vc-collapse-item';
2768
+ const COMPONENT_NAME$1y = 'vc-collapse-item';
2769
2769
  const CollapseItem = /* @__PURE__ */ defineComponent({
2770
- name: COMPONENT_NAME$1w,
2770
+ name: COMPONENT_NAME$1y,
2771
2771
  props: props$14,
2772
2772
  setup(props, {
2773
2773
  slots,
@@ -2842,9 +2842,9 @@ const props$12 = {
2842
2842
 
2843
2843
  /** @jsxImportSource vue */
2844
2844
 
2845
- const COMPONENT_NAME$1v = 'vc-color-picker';
2845
+ const COMPONENT_NAME$1x = 'vc-color-picker';
2846
2846
  const ColorPicker = /* @__PURE__ */ defineComponent({
2847
- name: COMPONENT_NAME$1v,
2847
+ name: COMPONENT_NAME$1x,
2848
2848
  props: props$12,
2849
2849
  setup(props, {
2850
2850
  slots
@@ -2868,9 +2868,9 @@ const props$11 = {
2868
2868
 
2869
2869
  /** @jsxImportSource vue */
2870
2870
 
2871
- const COMPONENT_NAME$1u = 'vc-countdown';
2871
+ const COMPONENT_NAME$1w = 'vc-countdown';
2872
2872
  const Countdown = /* @__PURE__ */ defineComponent({
2873
- name: COMPONENT_NAME$1u,
2873
+ name: COMPONENT_NAME$1w,
2874
2874
  props: props$11,
2875
2875
  setup(props, {
2876
2876
  slots
@@ -3320,9 +3320,9 @@ const useNativeEmitter = (input, expose) => {
3320
3320
 
3321
3321
  /** @jsxImportSource vue */
3322
3322
 
3323
- const COMPONENT_NAME$1t = 'vc-input';
3323
+ const COMPONENT_NAME$1v = 'vc-input';
3324
3324
  const Input = /* @__PURE__ */ defineComponent({
3325
- name: COMPONENT_NAME$1t,
3325
+ name: COMPONENT_NAME$1v,
3326
3326
  inheritAttrs: false,
3327
3327
  props: {
3328
3328
  ...props$$,
@@ -3335,7 +3335,8 @@ const Input = /* @__PURE__ */ defineComponent({
3335
3335
  emits: ['update:modelValue', 'input', 'change', 'focus', 'blur', 'clear', 'paste', 'keydown', 'keypress', 'keyup', 'enter', 'tip'],
3336
3336
  setup(props, {
3337
3337
  slots,
3338
- expose
3338
+ expose,
3339
+ attrs
3339
3340
  }) {
3340
3341
  const input = ref();
3341
3342
  useNativeEmitter(input, expose);
@@ -3402,9 +3403,9 @@ const Input = /* @__PURE__ */ defineComponent({
3402
3403
  }, classes.value]
3403
3404
  }, [slots.prepend?.() || props.prepend && createVNode(Icon, {
3404
3405
  "type": props.prepend
3405
- }, null)]), createVNode("div", {
3406
+ }, null)]), createVNode("div", mergeProps({
3406
3407
  "class": ['vc-input__content', classes.value]
3407
- }, [slots.content?.() || renderInput(false)]), !props.disabled && props.clearable && createVNode(TransitionFade, null, {
3408
+ }, slots.content ? it.value.listeners : {}), [slots.content ? slots.content() : renderInput(false)]), !props.disabled && props.clearable && createVNode(TransitionFade, null, {
3408
3409
  default: () => [createVNode(Icon, {
3409
3410
  "class": "vc-input__icon-clear",
3410
3411
  "type": "clear",
@@ -3656,9 +3657,9 @@ const useInputNumber = () => {
3656
3657
 
3657
3658
  /** @jsxImportSource vue */
3658
3659
 
3659
- const COMPONENT_NAME$1s = 'vc-input-number';
3660
+ const COMPONENT_NAME$1u = 'vc-input-number';
3660
3661
  const InputNumber = /* @__PURE__ */ defineComponent({
3661
- name: COMPONENT_NAME$1s,
3662
+ name: COMPONENT_NAME$1u,
3662
3663
  props: props$X,
3663
3664
  inheritAttrs: false,
3664
3665
  setup(props, {
@@ -3722,9 +3723,9 @@ const props$W = {
3722
3723
 
3723
3724
  /** @jsxImportSource vue */
3724
3725
 
3725
- const COMPONENT_NAME$1r = 'vc-input-search';
3726
+ const COMPONENT_NAME$1t = 'vc-input-search';
3726
3727
  const InputSearch = /* @__PURE__ */ defineComponent({
3727
- name: COMPONENT_NAME$1r,
3728
+ name: COMPONENT_NAME$1t,
3728
3729
  props: props$W,
3729
3730
  inheritAttrs: false,
3730
3731
  setup(props, {
@@ -4012,12 +4013,9 @@ const usePos = () => {
4012
4013
 
4013
4014
  /** @jsxImportSource vue */
4014
4015
 
4015
- function _isSlot$2(s) {
4016
- return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !isVNode(s);
4017
- }
4018
- const COMPONENT_NAME$1q = 'vc-popover-wrapper';
4016
+ const COMPONENT_NAME$1s = 'vc-popover-wrapper';
4019
4017
  const PopoverWrapper = /* @__PURE__ */ defineComponent({
4020
- name: COMPONENT_NAME$1q,
4018
+ name: COMPONENT_NAME$1s,
4021
4019
  props: props$_,
4022
4020
  emits: ['portal-fulfilled', 'close'],
4023
4021
  setup(props, {
@@ -4079,7 +4077,12 @@ const PopoverWrapper = /* @__PURE__ */ defineComponent({
4079
4077
  return container;
4080
4078
  }
4081
4079
  };
4082
- const setPopupStyle = () => {
4080
+
4081
+ /**
4082
+ * 添加debounce解决连续setPopupStyle的情况
4083
+ * 待排查
4084
+ */
4085
+ const setPopupStyle = debounce(() => {
4083
4086
  if (!vnode.el) return;
4084
4087
  const triggerEl = getHackContainer();
4085
4088
  const {
@@ -4109,13 +4112,15 @@ const PopoverWrapper = /* @__PURE__ */ defineComponent({
4109
4112
  fitPos.value = result;
4110
4113
  wrapperStyle.value = $wrapperStyle;
4111
4114
  arrowStyle.value = $arrowStyle;
4112
-
4113
4115
  // 自适应高度
4114
4116
  if (props.autoWidth) return;
4115
4117
  wrapperW.value = {
4116
4118
  width: `${triggerEl.getBoundingClientRect().width}px`
4117
4119
  };
4118
- };
4120
+ }, 50, {
4121
+ leading: true,
4122
+ trailing: false
4123
+ });
4119
4124
  let timer;
4120
4125
  let isPressMouse = false;
4121
4126
  const handleTriggerChange = e => {
@@ -4170,7 +4175,7 @@ const PopoverWrapper = /* @__PURE__ */ defineComponent({
4170
4175
  switch (direction[0]) {
4171
4176
  case 'top':
4172
4177
  case 'bottom':
4173
- if (left + vnode.el.offsetWidth >= window.innerWidth) {
4178
+ if (left + vnode.el.offsetWidth > window.innerWidth) {
4174
4179
  wrapperStyle.value = {
4175
4180
  ...wrapperStyle.value,
4176
4181
  left: `${window.innerWidth - vnode.el.offsetWidth}px`
@@ -4230,7 +4235,6 @@ const PopoverWrapper = /* @__PURE__ */ defineComponent({
4230
4235
  }
4231
4236
  });
4232
4237
  return () => {
4233
- let _slot;
4234
4238
  return createVNode(TransitionScale, {
4235
4239
  "mode": props.animation || 'part',
4236
4240
  "duration": {
@@ -4238,38 +4242,40 @@ const PopoverWrapper = /* @__PURE__ */ defineComponent({
4238
4242
  leave: 150
4239
4243
  },
4240
4244
  "onAfterLeave": handleRemove
4241
- }, _isSlot$2(_slot = withDirectives(createVNode("div", {
4242
- "style": [wrapperStyle.value, wrapperW.value, props.portalStyle],
4243
- "class": [wrapperClasses.value, props.portalClass, 'vc-popover-wrapper'],
4244
- "onMousedown": () => !props.hover && handleMouseDown(),
4245
- "onMouseenter": e => props.hover && handleChange(e, {
4246
- visible: true
4247
- }),
4248
- "onMouseleave": e => props.hover && handleChange(e, {
4249
- visible: false
4250
- })
4251
- }, [createVNode("div", {
4252
- "class": [themeClasses.value, 'vc-popover-wrapper__container']
4253
- }, [props.arrow && createVNode("div", {
4254
- "style": arrowStyle.value,
4255
- "class": [themeClasses.value, posClasses.value, 'vc-popover-wrapper__arrow']
4256
- }, null), slots.content ? slots.content() : typeof props.content === 'function' ? createVNode(Customer, {
4257
- "render": props.content
4258
- }, null) : createVNode("div", {
4259
- "innerHTML": props.content
4260
- }, null)])]), [[vShow, isActive.value]])) ? _slot : {
4261
- default: () => [_slot]
4245
+ }, {
4246
+ default: () => [withDirectives(createVNode("div", {
4247
+ "style": [wrapperStyle.value, wrapperW.value, props.portalStyle],
4248
+ "class": [wrapperClasses.value, props.portalClass, 'vc-popover-wrapper'],
4249
+ "onMousedown": () => !props.hover && handleMouseDown(),
4250
+ "onMouseenter": e => props.hover && handleChange(e, {
4251
+ visible: true
4252
+ }),
4253
+ "onMouseleave": e => props.hover && handleChange(e, {
4254
+ visible: false
4255
+ })
4256
+ }, [createVNode("div", {
4257
+ "class": [themeClasses.value, 'vc-popover-wrapper__container']
4258
+ }, [props.arrow && createVNode("div", {
4259
+ "style": arrowStyle.value,
4260
+ "class": [themeClasses.value, posClasses.value, 'vc-popover-wrapper__arrow']
4261
+ }, null), slots.content ? slots.content() : typeof props.content === 'function' ? createVNode(Customer, {
4262
+ "render": props.content
4263
+ }, null) : createVNode("div", {
4264
+ "innerHTML": props.content
4265
+ }, null)])]), [[vShow, isActive.value]])]
4262
4266
  });
4263
4267
  };
4264
4268
  }
4265
4269
  });
4266
- const PopoverPortal = new Portal(PopoverWrapper);
4270
+ const PopoverPortal = new Portal(PopoverWrapper, {
4271
+ leaveDelay: 0
4272
+ });
4267
4273
 
4268
4274
  /** @jsxImportSource vue */
4269
4275
 
4270
- const COMPONENT_NAME$1p = 'vc-popover';
4276
+ const COMPONENT_NAME$1r = 'vc-popover';
4271
4277
  const Popover$1 = /* @__PURE__ */ defineComponent({
4272
- name: COMPONENT_NAME$1p,
4278
+ name: COMPONENT_NAME$1r,
4273
4279
  props: props$Z,
4274
4280
  emits: ['update:modelValue', 'visible-change', 'ready', 'close'],
4275
4281
  setup(props, {
@@ -5370,9 +5376,9 @@ const getTimeType = type => {
5370
5376
  }
5371
5377
  return view;
5372
5378
  };
5373
- const COMPONENT_NAME$1o = 'vc-date-confirm';
5379
+ const COMPONENT_NAME$1q = 'vc-date-confirm';
5374
5380
  const Confirm = /* @__PURE__ */ defineComponent({
5375
- name: COMPONENT_NAME$1o,
5381
+ name: COMPONENT_NAME$1q,
5376
5382
  props: {
5377
5383
  showTime: {
5378
5384
  type: Boolean,
@@ -5436,9 +5442,9 @@ const Confirm = /* @__PURE__ */ defineComponent({
5436
5442
 
5437
5443
  /** @jsxImportSource vue */
5438
5444
 
5439
- const COMPONENT_NAME$1n = 'vc-date-header';
5445
+ const COMPONENT_NAME$1p = 'vc-date-header';
5440
5446
  const DateHeader = /* @__PURE__ */ defineComponent({
5441
- name: COMPONENT_NAME$1n,
5447
+ name: COMPONENT_NAME$1p,
5442
5448
  props: {
5443
5449
  panelDate: Date,
5444
5450
  showNext: {
@@ -5522,9 +5528,9 @@ const DateHeader = /* @__PURE__ */ defineComponent({
5522
5528
 
5523
5529
  /** @jsxImportSource vue */
5524
5530
 
5525
- const COMPONENT_NAME$1m = 'vc-date-table';
5531
+ const COMPONENT_NAME$1o = 'vc-date-table';
5526
5532
  const DateTable = /* @__PURE__ */ defineComponent({
5527
- name: COMPONENT_NAME$1m,
5533
+ name: COMPONENT_NAME$1o,
5528
5534
  props: {
5529
5535
  value: Array,
5530
5536
  firstDayOfWeek: {
@@ -5733,9 +5739,9 @@ const DateTable = /* @__PURE__ */ defineComponent({
5733
5739
 
5734
5740
  /** @jsxImportSource vue */
5735
5741
 
5736
- const COMPONENT_NAME$1l = 'vc-month-table';
5742
+ const COMPONENT_NAME$1n = 'vc-month-table';
5737
5743
  const MonthTable = /* @__PURE__ */ defineComponent({
5738
- name: COMPONENT_NAME$1l,
5744
+ name: COMPONENT_NAME$1n,
5739
5745
  props: {
5740
5746
  value: Array,
5741
5747
  panelDate: Date,
@@ -5867,7 +5873,7 @@ const MonthTable = /* @__PURE__ */ defineComponent({
5867
5873
 
5868
5874
  /** @jsxImportSource vue */
5869
5875
 
5870
- const COMPONENT_NAME$1k = 'vc-quarter-table';
5876
+ const COMPONENT_NAME$1m = 'vc-quarter-table';
5871
5877
 
5872
5878
  /**
5873
5879
  * 获取季度对应的月份范围
@@ -5901,7 +5907,7 @@ const getQuarterRangeByMonth = value => {
5901
5907
  }
5902
5908
  };
5903
5909
  const QuarterTable = /* @__PURE__ */ defineComponent({
5904
- name: COMPONENT_NAME$1k,
5910
+ name: COMPONENT_NAME$1m,
5905
5911
  props: {
5906
5912
  value: Array,
5907
5913
  panelDate: Date,
@@ -6024,9 +6030,9 @@ const QuarterTable = /* @__PURE__ */ defineComponent({
6024
6030
 
6025
6031
  /** @jsxImportSource vue */
6026
6032
 
6027
- const COMPONENT_NAME$1j = 'vc-shortcuts-select';
6033
+ const COMPONENT_NAME$1l = 'vc-shortcuts-select';
6028
6034
  const ShortcutsSelect = /* @__PURE__ */ defineComponent({
6029
- name: COMPONENT_NAME$1j,
6035
+ name: COMPONENT_NAME$1l,
6030
6036
  props: {
6031
6037
  panelDate: Date,
6032
6038
  config: Array,
@@ -6066,9 +6072,9 @@ const ShortcutsSelect = /* @__PURE__ */ defineComponent({
6066
6072
 
6067
6073
  /** @jsxImportSource vue */
6068
6074
 
6069
- const COMPONENT_NAME$1i = 'vc-time-select';
6075
+ const COMPONENT_NAME$1k = 'vc-time-select';
6070
6076
  const TimeSelect = /* @__PURE__ */ defineComponent({
6071
- name: COMPONENT_NAME$1i,
6077
+ name: COMPONENT_NAME$1k,
6072
6078
  props: {
6073
6079
  hours: {
6074
6080
  type: [Number, String],
@@ -6347,9 +6353,9 @@ const TimeSelect = /* @__PURE__ */ defineComponent({
6347
6353
 
6348
6354
  /** @jsxImportSource vue */
6349
6355
 
6350
- const COMPONENT_NAME$1h = 'vc-year-table';
6356
+ const COMPONENT_NAME$1j = 'vc-year-table';
6351
6357
  const YearTable = /* @__PURE__ */ defineComponent({
6352
- name: COMPONENT_NAME$1h,
6358
+ name: COMPONENT_NAME$1j,
6353
6359
  props: {
6354
6360
  value: Array,
6355
6361
  panelDate: Date,
@@ -6472,9 +6478,9 @@ const getDateIsInRange = (value, type, leftPanelDate, rightPanelDate) => {
6472
6478
  }
6473
6479
  return true;
6474
6480
  };
6475
- const COMPONENT_NAME$1g = 'vc-date-range-panel';
6481
+ const COMPONENT_NAME$1i = 'vc-date-range-panel';
6476
6482
  const DateRangePanel = /* @__PURE__ */ defineComponent({
6477
- name: COMPONENT_NAME$1g,
6483
+ name: COMPONENT_NAME$1i,
6478
6484
  props: {
6479
6485
  ...props$V,
6480
6486
  confirm: {
@@ -6853,9 +6859,9 @@ const DateRangePanel = /* @__PURE__ */ defineComponent({
6853
6859
 
6854
6860
  /** @jsxImportSource vue */
6855
6861
 
6856
- const COMPONENT_NAME$1f = 'vc-date-panel';
6862
+ const COMPONENT_NAME$1h = 'vc-date-panel';
6857
6863
  const DatePanel = /* @__PURE__ */ defineComponent({
6858
- name: COMPONENT_NAME$1f,
6864
+ name: COMPONENT_NAME$1h,
6859
6865
  props: {
6860
6866
  ...props$V,
6861
6867
  type: String,
@@ -7063,9 +7069,9 @@ const isEqualYear$1 = value => {
7063
7069
  const endYear = value[1].getFullYear();
7064
7070
  return startYear === endYear;
7065
7071
  };
7066
- const COMPONENT_NAME$1e = 'vc-monthrange-panel';
7072
+ const COMPONENT_NAME$1g = 'vc-monthrange-panel';
7067
7073
  const MonthRangePanel = /* @__PURE__ */ defineComponent({
7068
- name: COMPONENT_NAME$1e,
7074
+ name: COMPONENT_NAME$1g,
7069
7075
  props: {
7070
7076
  ...props$V,
7071
7077
  confirm: {
@@ -7240,9 +7246,9 @@ const isEqualYear = value => {
7240
7246
  const endYear = value[1].getFullYear();
7241
7247
  return startYear === endYear;
7242
7248
  };
7243
- const COMPONENT_NAME$1d = 'vc-quarterrange-panel';
7249
+ const COMPONENT_NAME$1f = 'vc-quarterrange-panel';
7244
7250
  const QuarterRangePanel = /* @__PURE__ */ defineComponent({
7245
- name: COMPONENT_NAME$1d,
7251
+ name: COMPONENT_NAME$1f,
7246
7252
  props: {
7247
7253
  ...props$V,
7248
7254
  confirm: {
@@ -7481,9 +7487,9 @@ const getComparedDate = (leftDate, rightDate) => {
7481
7487
  seconds
7482
7488
  };
7483
7489
  };
7484
- const COMPONENT_NAME$1c = 'vc-timerange-panel';
7490
+ const COMPONENT_NAME$1e = 'vc-timerange-panel';
7485
7491
  const TimeRangePanel = /* @__PURE__ */ defineComponent({
7486
- name: COMPONENT_NAME$1c,
7492
+ name: COMPONENT_NAME$1e,
7487
7493
  props: props$U,
7488
7494
  emits: ['pick', 'clear', 'ok'],
7489
7495
  setup(props, {
@@ -7582,9 +7588,9 @@ const TimeRangePanel = /* @__PURE__ */ defineComponent({
7582
7588
 
7583
7589
  /** @jsxImportSource vue */
7584
7590
 
7585
- const COMPONENT_NAME$1b = 'vc-time-panel';
7591
+ const COMPONENT_NAME$1d = 'vc-time-panel';
7586
7592
  const TimePanel = /* @__PURE__ */ defineComponent({
7587
- name: COMPONENT_NAME$1b,
7593
+ name: COMPONENT_NAME$1d,
7588
7594
  props: props$U,
7589
7595
  emits: ['pick', 'clear', 'ok'],
7590
7596
  setup(props, {
@@ -7639,7 +7645,7 @@ const TimePanel = /* @__PURE__ */ defineComponent({
7639
7645
 
7640
7646
  /** @jsxImportSource vue */
7641
7647
 
7642
- const COMPONENT_NAME$1a = 'vc-date-picker';
7648
+ const COMPONENT_NAME$1c = 'vc-date-picker';
7643
7649
  const getPanel$1 = type => {
7644
7650
  if (['daterange', 'datetimerange'].includes(type)) {
7645
7651
  return DateRangePanel;
@@ -7650,7 +7656,7 @@ const getPanel$1 = type => {
7650
7656
  }
7651
7657
  return DatePanel;
7652
7658
  };
7653
- const DatePicker = createPicker(COMPONENT_NAME$1a, props$10, () => {
7659
+ const DatePicker = createPicker(COMPONENT_NAME$1c, props$10, () => {
7654
7660
  const props = getCurrentInstance().props;
7655
7661
  const icon = ref('date');
7656
7662
  const panel = shallowRef({});
@@ -7683,9 +7689,9 @@ const props$T = {
7683
7689
 
7684
7690
  /** @jsxImportSource vue */
7685
7691
 
7686
- const COMPONENT_NAME$19 = 'vc-divider';
7692
+ const COMPONENT_NAME$1b = 'vc-divider';
7687
7693
  const Divider = /* @__PURE__ */ defineComponent({
7688
- name: COMPONENT_NAME$19,
7694
+ name: COMPONENT_NAME$1b,
7689
7695
  props: props$T,
7690
7696
  setup(props, {
7691
7697
  slots
@@ -7840,7 +7846,7 @@ const props$Q = {
7840
7846
 
7841
7847
  /** @jsxImportSource vue */
7842
7848
 
7843
- const COMPONENT_NAME$18 = 'vc-scroller-track';
7849
+ const COMPONENT_NAME$1a = 'vc-scroller-track';
7844
7850
  const BAR_MAP = {
7845
7851
  vertical: {
7846
7852
  scroll: 'scrollTop',
@@ -7860,7 +7866,7 @@ const BAR_MAP = {
7860
7866
  }
7861
7867
  };
7862
7868
  const Track = /* @__PURE__ */ defineComponent({
7863
- name: COMPONENT_NAME$18,
7869
+ name: COMPONENT_NAME$1a,
7864
7870
  props: props$S,
7865
7871
  emits: ['change'],
7866
7872
  inheritAttrs: false,
@@ -8050,9 +8056,9 @@ const Track = /* @__PURE__ */ defineComponent({
8050
8056
 
8051
8057
  /** @jsxImportSource vue */
8052
8058
 
8053
- const COMPONENT_NAME$17 = 'vc-scroller-bar';
8059
+ const COMPONENT_NAME$19 = 'vc-scroller-bar';
8054
8060
  const Bar = /* @__PURE__ */ defineComponent({
8055
- name: COMPONENT_NAME$17,
8061
+ name: COMPONENT_NAME$19,
8056
8062
  props: props$R,
8057
8063
  emits: ['change'],
8058
8064
  setup(props, {
@@ -8267,7 +8273,7 @@ const useScroller = (expose) => {
8267
8273
 
8268
8274
  /** @jsxImportSource vue */
8269
8275
 
8270
- const COMPONENT_NAME$16 = 'vc-scroller';
8276
+ const COMPONENT_NAME$18 = 'vc-scroller';
8271
8277
 
8272
8278
  /**
8273
8279
  * 作为备选方案,目前推荐使用ScrollerWheel
@@ -8278,7 +8284,7 @@ const COMPONENT_NAME$16 = 'vc-scroller';
8278
8284
  * 2. 增加了一层嵌套
8279
8285
  */
8280
8286
  const Scroller = /* @__PURE__ */ defineComponent({
8281
- name: COMPONENT_NAME$16,
8287
+ name: COMPONENT_NAME$18,
8282
8288
  props: props$Q,
8283
8289
  emits: ['scroll'],
8284
8290
  setup(props, {
@@ -8339,7 +8345,7 @@ const Scroller = /* @__PURE__ */ defineComponent({
8339
8345
 
8340
8346
  /** @jsxImportSource vue */
8341
8347
 
8342
- const COMPONENT_NAME$15 = 'vc-scroller-wheel';
8348
+ const COMPONENT_NAME$17 = 'vc-scroller-wheel';
8343
8349
 
8344
8350
  /**
8345
8351
  * 为减少一层嵌套,为去除滚动bar的抖动,使用wheel模拟
@@ -8361,7 +8367,7 @@ const COMPONENT_NAME$15 = 'vc-scroller-wheel';
8361
8367
  * 设置scrollTop不会reflow和repaint,不需要考虑transfrom来改变content(transform也只在draw完成)
8362
8368
  */
8363
8369
  const ScrollerWheel = /* @__PURE__ */ defineComponent({
8364
- name: COMPONENT_NAME$15,
8370
+ name: COMPONENT_NAME$17,
8365
8371
  props: Object.assign(props$Q, {
8366
8372
  stopPropagation: {
8367
8373
  type: Boolean,
@@ -8550,9 +8556,9 @@ const props$P = {
8550
8556
 
8551
8557
  /** @jsxImportSource vue */
8552
8558
 
8553
- const COMPONENT_NAME$14 = 'vc-drawer';
8559
+ const COMPONENT_NAME$16 = 'vc-drawer';
8554
8560
  const DrawerView = /* @__PURE__ */ defineComponent({
8555
- name: COMPONENT_NAME$14,
8561
+ name: COMPONENT_NAME$16,
8556
8562
  props: props$P,
8557
8563
  emits: ['close', 'update:modelValue', 'visible-change'],
8558
8564
  setup(props, {
@@ -8720,30 +8726,178 @@ const MDrawer = Drawer;
8720
8726
  const MDrawerView = DrawerView;
8721
8727
 
8722
8728
  const props$O = {
8723
- tag: {
8729
+ modelValue: {
8730
+ type: Boolean,
8731
+ default: false
8732
+ },
8733
+ portalClass: [String, Object],
8734
+ placement: {
8724
8735
  type: String,
8725
- default: "div"
8736
+ default: "bottom"
8737
+ },
8738
+ trigger: {
8739
+ type: String,
8740
+ default: "hover"
8741
+ },
8742
+ arrow: {
8743
+ type: Boolean,
8744
+ default: false
8726
8745
  }
8727
8746
  };
8728
8747
 
8729
8748
  /** @jsxImportSource vue */
8730
8749
 
8731
- const COMPONENT_NAME$13 = 'vc-dropdown';
8750
+ const COMPONENT_NAME$15 = 'vc-dropdown';
8732
8751
  const Dropdown = /* @__PURE__ */ defineComponent({
8733
- name: COMPONENT_NAME$13,
8752
+ name: COMPONENT_NAME$15,
8734
8753
  props: props$O,
8754
+ inheritAttrs: false,
8755
+ emits: ['update:modelValue', 'ready', 'close', 'visible-change', 'click'],
8735
8756
  setup(props, {
8757
+ slots,
8758
+ emit,
8759
+ expose
8760
+ }) {
8761
+ const its = useAttrs({
8762
+ merge: false
8763
+ });
8764
+ const isActive = ref(false);
8765
+ const dropdownId = ref(getUid('dropdown'));
8766
+ const inherit = computed(() => {
8767
+ return {
8768
+ style: its.value.style,
8769
+ class: its.value.class
8770
+ };
8771
+ });
8772
+ const attrs = computed(() => {
8773
+ return its.value.attrs;
8774
+ });
8775
+ watch(() => props.modelValue, v => {
8776
+ isActive.value = v;
8777
+ }, {
8778
+ immediate: true
8779
+ });
8780
+
8781
+ /**
8782
+ * v-model 同步, 外部的数据改变时不会触发
8783
+ */
8784
+ const sync = () => {
8785
+ emit('update:modelValue', isActive.value);
8786
+ emit('visible-change', isActive.value);
8787
+ };
8788
+ const handleChange = v => {
8789
+ isActive.value = v;
8790
+ sync();
8791
+ };
8792
+ const close = () => {
8793
+ isActive.value = false;
8794
+ sync();
8795
+ };
8796
+ expose({
8797
+ close,
8798
+ dropdownId
8799
+ });
8800
+ return () => {
8801
+ return createVNode(Popover, mergeProps(attrs.value, {
8802
+ "modelValue": isActive.value,
8803
+ "placement": props.placement,
8804
+ "trigger": props.trigger,
8805
+ "arrow": props.arrow,
8806
+ "portalClass": ['is-padding-none', 'vc-dropdown-wrapper', props.portalClass],
8807
+ "class": ['vc-dropdown', inherit.value.class],
8808
+ "style": inherit.value.style,
8809
+ "onReady": () => emit('ready'),
8810
+ "onClose": () => emit('close'),
8811
+ "onVisibleChange": handleChange
8812
+ }), {
8813
+ default: () => slots?.default?.(),
8814
+ content: () => slots?.content?.()
8815
+ });
8816
+ };
8817
+ }
8818
+ });
8819
+
8820
+ /** @jsxImportSource vue */
8821
+
8822
+ const COMPONENT_NAME$14 = 'vc-dropdown-menu';
8823
+ const DropdownMenu = /* @__PURE__ */ defineComponent({
8824
+ name: COMPONENT_NAME$14,
8825
+ setup(_, {
8736
8826
  slots
8737
8827
  }) {
8738
8828
  return () => {
8739
- return createVNode("div", {
8740
- "class": "vc-dropdown"
8829
+ return createVNode("ul", {
8830
+ "class": "vc-dropdown-menu"
8741
8831
  }, [slots?.default?.()]);
8742
8832
  };
8743
8833
  }
8744
8834
  });
8745
8835
 
8836
+ /** @jsxImportSource vue */
8837
+
8838
+ const COMPONENT_NAME$13 = 'vc-dropdown-item';
8839
+ const DropdownItem = /* @__PURE__ */ defineComponent({
8840
+ name: COMPONENT_NAME$13,
8841
+ props: {
8842
+ value: {
8843
+ type: [String, Number],
8844
+ value: undefined
8845
+ },
8846
+ label: {
8847
+ type: [String, Number],
8848
+ value: undefined
8849
+ },
8850
+ disabled: {
8851
+ type: Boolean,
8852
+ default: false
8853
+ },
8854
+ selected: {
8855
+ type: Boolean,
8856
+ default: false
8857
+ },
8858
+ divided: {
8859
+ type: Boolean,
8860
+ default: false
8861
+ },
8862
+ closable: {
8863
+ type: Boolean,
8864
+ default: true
8865
+ }
8866
+ },
8867
+ setup(props, {
8868
+ slots,
8869
+ emit
8870
+ }) {
8871
+ const owner = getInstance('dropdown', 'dropdownId');
8872
+ const currentValue = computed(() => {
8873
+ const v = typeof props.value === 'undefined' || props.value === '' ? props.label : props.value;
8874
+ return v;
8875
+ });
8876
+ const classes = computed(() => {
8877
+ return {
8878
+ 'is-selected': props.selected,
8879
+ 'is-divided': props.divided,
8880
+ 'is-disabled': props.disabled
8881
+ };
8882
+ });
8883
+ const handleClick = e => {
8884
+ if (props.disabled) return;
8885
+ emit('click', currentValue.value, e);
8886
+ owner.emit('click', currentValue.value, e);
8887
+ props.closable && owner.exposed?.close();
8888
+ };
8889
+ return () => {
8890
+ return createVNode("li", {
8891
+ "class": [classes.value, 'vc-dropdown-item'],
8892
+ "onClick": handleClick
8893
+ }, [slots.default ? slots.default?.() : props.label]);
8894
+ };
8895
+ }
8896
+ });
8897
+
8746
8898
  const MDropdown = Dropdown;
8899
+ const MDropdownMenu = DropdownMenu;
8900
+ const MDropdownItem = DropdownItem;
8747
8901
 
8748
8902
  const props$N = {
8749
8903
  tag: {
@@ -9029,6 +9183,8 @@ const useFormItem = (expose) => {
9029
9183
  "is-validating": validateState.value === "validating",
9030
9184
  "is-inline": form.props.inline,
9031
9185
  "is-nest": isNest.value,
9186
+ "is-alone": !props.showMessage,
9187
+ // 用于单独去除form-item的默认margin_bottom
9032
9188
  [`is-${labelPosition.value}`]: true
9033
9189
  };
9034
9190
  });
@@ -10428,6 +10584,9 @@ const props$z = {
10428
10584
  type: Boolean,
10429
10585
  default: false
10430
10586
  },
10587
+ // draggable为true时有效
10588
+ x: Number,
10589
+ y: Number,
10431
10590
  okText: {
10432
10591
  type: [String, Boolean],
10433
10592
  default: "确定"
@@ -10485,8 +10644,8 @@ const ModalView = /* @__PURE__ */ defineComponent({
10485
10644
  const header = shallowRef();
10486
10645
  const scroller = shallowRef();
10487
10646
  const resizer = shallowRef();
10488
- const x = ref(0);
10489
- const y = ref(0);
10647
+ const x = ref(props.x);
10648
+ const y = ref(props.y);
10490
10649
  const isActive = ref(false);
10491
10650
 
10492
10651
  // 注: 服务端渲染为0, 在客服端激活前,展示端存在问题【高度不定】
@@ -10528,8 +10687,8 @@ const ModalView = /* @__PURE__ */ defineComponent({
10528
10687
  });
10529
10688
  const draggableStyle = computed(() => {
10530
10689
  if (IS_SERVER$1 || !props.draggable) return {};
10531
- const left = x.value || window.innerWidth / 2 - defaultSize.value.width / 2;
10532
- const top = y.value || window.innerHeight / 2 - defaultSize.value.height / 2;
10690
+ const left = typeof x.value === 'undefined' ? window.innerWidth / 2 - defaultSize.value.width / 2 : x.value;
10691
+ const top = typeof y.value === 'undefined' ? window.innerHeight / 2 - defaultSize.value.height / 2 : y.value;
10533
10692
  return {
10534
10693
  left: `${left}px`,
10535
10694
  top: `${top}px`
@@ -12126,10 +12285,49 @@ const Picker = /* @__PURE__ */ defineComponent({
12126
12285
  const MPicker = Picker;
12127
12286
 
12128
12287
  const props$p = {
12129
- tag: {
12288
+ title: {
12289
+ type: [String, Function],
12290
+ default: ""
12291
+ },
12292
+ content: {
12293
+ type: [String, Function],
12294
+ default: ""
12295
+ },
12296
+ modelValue: {
12297
+ type: Boolean,
12298
+ default: false
12299
+ },
12300
+ placement: {
12130
12301
  type: String,
12131
- default: "div"
12132
- }
12302
+ default: "top"
12303
+ },
12304
+ trigger: {
12305
+ type: String,
12306
+ default: "click"
12307
+ },
12308
+ okText: {
12309
+ type: String,
12310
+ default: "确定"
12311
+ },
12312
+ cancelText: {
12313
+ type: String,
12314
+ default: "取消"
12315
+ },
12316
+ okType: {
12317
+ type: String,
12318
+ default: "primary"
12319
+ },
12320
+ cancelType: {
12321
+ type: String,
12322
+ default: "default"
12323
+ },
12324
+ type: {
12325
+ type: String,
12326
+ default: "warning",
12327
+ validator: (v) => /(warning|info|success|error)/.test(v)
12328
+ },
12329
+ width: [String, Number],
12330
+ portalClass: [String, Object]
12133
12331
  };
12134
12332
 
12135
12333
  /** @jsxImportSource vue */
@@ -12138,13 +12336,125 @@ const COMPONENT_NAME$C = 'vc-popconfirm';
12138
12336
  const Popconfirm = /* @__PURE__ */ defineComponent({
12139
12337
  name: COMPONENT_NAME$C,
12140
12338
  props: props$p,
12339
+ inheritAttrs: false,
12340
+ emits: ['update:modelValue', 'visible-change', 'ready', 'close', 'cancel', 'ok'],
12141
12341
  setup(props, {
12142
- slots
12342
+ slots,
12343
+ emit
12143
12344
  }) {
12345
+ const instance = getCurrentInstance();
12346
+ const its = useAttrs({
12347
+ merge: false
12348
+ });
12349
+ const isActive = ref(false);
12350
+ const contentStyle = computed(() => {
12351
+ return props.content || !!slots.content ? {
12352
+ marginBottom: '15px'
12353
+ } : {};
12354
+ });
12355
+ const inherit = computed(() => {
12356
+ return {
12357
+ style: its.value.style,
12358
+ class: its.value.class
12359
+ };
12360
+ });
12361
+ const attrs = computed(() => {
12362
+ return its.value.attrs;
12363
+ });
12364
+ watch(() => props.modelValue, v => {
12365
+ isActive.value = v;
12366
+ }, {
12367
+ immediate: true
12368
+ });
12369
+
12370
+ /**
12371
+ * v-model 同步, 外部的数据改变时不会触发
12372
+ */
12373
+ const sync = () => {
12374
+ emit('update:modelValue', isActive.value);
12375
+ emit('visible-change', isActive.value);
12376
+ };
12377
+ const handleBefore = (e, hook) => {
12378
+ e.stopPropagation();
12379
+ e.preventDefault();
12380
+ if (!isActive.value) return;
12381
+ const fn = hook && hook(e);
12382
+ if (fn && fn.then) {
12383
+ return fn.then(res => {
12384
+ isActive.value = false;
12385
+ sync();
12386
+ return res;
12387
+ });
12388
+ } else if (!fn || fn === true) {
12389
+ isActive.value = false;
12390
+ sync();
12391
+ }
12392
+ };
12393
+ const handleOk = (...rest) => {
12394
+ const ok = instance.vnode.props?.onOk || (() => {});
12395
+ return ok(...rest);
12396
+ };
12397
+ const handleCancel = (...rest) => {
12398
+ const cancel = instance.vnode.props?.onCancel || (() => {});
12399
+ return cancel(...rest);
12400
+ };
12401
+ const handleChange = v => {
12402
+ isActive.value = v;
12403
+ sync();
12404
+ };
12144
12405
  return () => {
12145
- return createVNode("div", {
12146
- "class": "vc-popconfirm"
12147
- }, [slots?.default?.()]);
12406
+ return createVNode(Popover, mergeProps(attrs.value, {
12407
+ "modelValue": isActive.value,
12408
+ "placement": props.placement,
12409
+ "trigger": props.trigger,
12410
+ "portalClass": ['is-padding-none', 'vc-popconfirm-wrapper', props.portalClass],
12411
+ "class": ['vc-popconfirm', inherit.value.class],
12412
+ "style": inherit.value.style,
12413
+ "onReady": () => emit('ready'),
12414
+ "onClose": () => emit('close'),
12415
+ "onVisibleChange": handleChange
12416
+ }), {
12417
+ default: () => slots?.default?.(),
12418
+ content: () => {
12419
+ return createVNode("div", {
12420
+ "style": [{
12421
+ width: `${props.width}px`
12422
+ }],
12423
+ "class": "vc-popconfirm__wrapper"
12424
+ }, [createVNode("div", {
12425
+ "class": "vc-popconfirm__title"
12426
+ }, [slots.icon ? slots.icon() : createVNode(Icon, {
12427
+ "type": props.type,
12428
+ "class": [`is-${props.type}`, 'vc-popconfirm__icon']
12429
+ }, null), createVNode("div", null, [slots.title ? slots.title() : typeof props.title === 'string' ? createVNode("div", {
12430
+ "innerHTML": props.title
12431
+ }, null) : typeof props.title === 'function' ? createVNode(Customer, {
12432
+ "render": props.title
12433
+ }, null) : null])]), createVNode("div", {
12434
+ "style": contentStyle.value,
12435
+ "class": "vc-popconfirm__content"
12436
+ }, [slots.content ? slots.content() : typeof props.content === 'string' ? createVNode("div", {
12437
+ "innerHTML": props.content
12438
+ }, null) : typeof props.content === 'function' ? createVNode(Customer, {
12439
+ "render": props.content
12440
+ }, null) : null]), createVNode("div", {
12441
+ "class": "vc-popconfirm__footer"
12442
+ }, [createVNode(Button, {
12443
+ "type": props.cancelType,
12444
+ "style": "margin-right: 8px;",
12445
+ "size": "small",
12446
+ "onClick": e => handleBefore(e, handleCancel)
12447
+ }, {
12448
+ default: () => [props.cancelText]
12449
+ }), createVNode(Button, {
12450
+ "type": props.okType,
12451
+ "size": "small",
12452
+ "onClick": e => handleBefore(e, handleOk)
12453
+ }, {
12454
+ default: () => [props.okText]
12455
+ })])]);
12456
+ }
12457
+ });
12148
12458
  };
12149
12459
  }
12150
12460
  });
@@ -13751,6 +14061,18 @@ const props$d = {
13751
14061
  uncheckedText: {
13752
14062
  type: String,
13753
14063
  default: ""
14064
+ },
14065
+ width: {
14066
+ type: Number,
14067
+ default: 36
14068
+ },
14069
+ height: {
14070
+ type: Number,
14071
+ default: 20
14072
+ },
14073
+ borderWidth: {
14074
+ type: Number,
14075
+ default: 1
13754
14076
  }
13755
14077
  };
13756
14078
 
@@ -13833,28 +14155,65 @@ const Switch = /* @__PURE__ */ defineComponent({
13833
14155
  expose
13834
14156
  }) {
13835
14157
  const {
14158
+ checked,
13836
14159
  classes,
13837
14160
  currentValue,
13838
14161
  isLoading,
13839
14162
  handleToggle
13840
14163
  } = useSwitch(expose);
14164
+ const size = computed(() => {
14165
+ return props.height - props.borderWidth * 4;
14166
+ });
14167
+ const lefts = computed(() => {
14168
+ return {
14169
+ inner: checked.value ? props.width - props.borderWidth * 3 - size.value : props.borderWidth,
14170
+ loading: checked.value ? props.height - props.borderWidth * 2 : props.borderWidth * 2
14171
+ };
14172
+ });
14173
+ const contentOffset = computed(() => {
14174
+ return Math.max(props.height / 2, size.value) + props.borderWidth * 2;
14175
+ });
13841
14176
  return () => {
13842
- return createVNode("span", {
13843
- "class": [classes.value, 'vc-switch'],
14177
+ return createVNode("div", {
14178
+ "style": {
14179
+ width: `${props.width}px`
14180
+ },
14181
+ "class": [classes.value, 'vc-switch']
14182
+ }, [createVNode("span", {
14183
+ "style": {
14184
+ height: `${props.height}px`,
14185
+ borderWidth: `${props.borderWidth}px`
14186
+ },
14187
+ "class": "vc-switch__wrapper",
13844
14188
  "onClick": handleToggle
13845
14189
  }, [createVNode("input", {
13846
14190
  "name": props.name,
13847
14191
  "value": currentValue.value,
13848
14192
  "type": "hidden"
13849
14193
  }, null), createVNode("span", {
13850
- "class": "vc-switch__content"
14194
+ "class": "vc-switch__content",
14195
+ "style": {
14196
+ left: `${checked.value ? props.height / 4 : contentOffset.value}px`,
14197
+ right: `${checked.value ? contentOffset.value : props.height / 4}px`,
14198
+ top: 0,
14199
+ bottom: 0
14200
+ }
13851
14201
  }, [currentValue.value === props.checkedValue ? slots.checked ? slots.checked() : props.checkedText : null, currentValue.value === props.uncheckedValue ? slots.unchecked ? slots.unchecked() : props.uncheckedText : null]), createVNode("span", {
13852
- "class": "vc-switch__inner"
14202
+ "class": "vc-switch__inner",
14203
+ "style": {
14204
+ width: `${size.value}px`,
14205
+ height: `${size.value}px`,
14206
+ left: `${lefts.value.inner}px`,
14207
+ top: `${props.borderWidth}px`
14208
+ }
13853
14209
  }, null), isLoading.value && createVNode(Spin, {
13854
14210
  "size": 14,
13855
14211
  "foreground": "#fff",
13856
- "class": "vc-switch__loading"
13857
- }, null)]);
14212
+ "class": "vc-switch__loading",
14213
+ "style": {
14214
+ left: `${lefts.value.loading}px`
14215
+ }
14216
+ }, null)])]);
13858
14217
  };
13859
14218
  }
13860
14219
  });
@@ -15013,6 +15372,79 @@ const NormalList = /* @__PURE__ */ defineComponent({
15013
15372
  }
15014
15373
  });
15015
15374
 
15375
+ const HIDDEN_TEXT_STYLE = `
15376
+ position: absolute!important;
15377
+ word-break: break-all!important;
15378
+ overflow: auto!important;
15379
+ opacity: 1!important;
15380
+ z-index: -1000!important;
15381
+ top: 0!important;
15382
+ right: 100px!important;
15383
+ `;
15384
+ const SIZING_STYLE$1 = [
15385
+ "letter-spacing",
15386
+ "line-height",
15387
+ "padding-top",
15388
+ "padding-bottom",
15389
+ "font-family",
15390
+ "font-weight",
15391
+ "font-size",
15392
+ "text-rendering",
15393
+ "text-transform",
15394
+ "width",
15395
+ // 'text-indent', // 需要额外计算
15396
+ "padding-left",
15397
+ "padding-right",
15398
+ "border-width",
15399
+ "box-sizing"
15400
+ ];
15401
+ let hiddenEl$1;
15402
+ const getFitIndex = (options = {}) => {
15403
+ const { el, line, value, suffix, indent = 0 } = options;
15404
+ let lineHeight = parseInt(getStyle(el, "line-height"), 10);
15405
+ if (!hiddenEl$1) {
15406
+ hiddenEl$1 = document.createElement("div");
15407
+ document.body.appendChild(hiddenEl$1);
15408
+ }
15409
+ el.getAttribute("wrap") ? hiddenEl$1.setAttribute("wrap", el.getAttribute("wrap")) : hiddenEl$1.removeAttribute("wrap");
15410
+ const {
15411
+ paddingSize,
15412
+ borderSize,
15413
+ boxSizing,
15414
+ sizingStyle
15415
+ } = Utils$1.getComputedStyle(el, SIZING_STYLE$1);
15416
+ const textIndent = `text-indent: ${parseInt(getStyle(el, "text-indent"), 10) + indent}px;`;
15417
+ hiddenEl$1.setAttribute("style", `${sizingStyle};${textIndent};${HIDDEN_TEXT_STYLE}`);
15418
+ let sideHeight = paddingSize || 0;
15419
+ boxSizing === "border-box" && (sideHeight += borderSize);
15420
+ if (Number.isNaN(lineHeight)) {
15421
+ hiddenEl$1.innerText = ".";
15422
+ lineHeight = hiddenEl$1.clientHeight - sideHeight;
15423
+ }
15424
+ let endIndex = -1;
15425
+ const strs = (typeof value === "number" ? `${value}` : value || "").split("");
15426
+ let innerText = "";
15427
+ for (let i = 0; i < strs.length; i++) {
15428
+ innerText += strs[i];
15429
+ hiddenEl$1.innerText = innerText;
15430
+ if (endIndex === -1 && hiddenEl$1.clientHeight - sideHeight > lineHeight * line) {
15431
+ endIndex = i;
15432
+ break;
15433
+ }
15434
+ }
15435
+ if (endIndex >= 0 && endIndex <= strs.length - 1) {
15436
+ for (let i = endIndex - 1; i >= 0; i--) {
15437
+ innerText = innerText.substring(0, i);
15438
+ hiddenEl$1.innerText = innerText + suffix;
15439
+ if (hiddenEl$1.clientHeight - sideHeight <= lineHeight * line) {
15440
+ endIndex = i;
15441
+ break;
15442
+ }
15443
+ }
15444
+ }
15445
+ return endIndex;
15446
+ };
15447
+
15016
15448
  const TableBody = /* @__PURE__ */ defineComponent({
15017
15449
  name: 'vc-table-body',
15018
15450
  props: {
@@ -15121,10 +15553,13 @@ const TableBody = /* @__PURE__ */ defineComponent({
15121
15553
  column
15122
15554
  });
15123
15555
  }
15124
- return cellStyle;
15556
+ return {
15557
+ ...cellStyle,
15558
+ ...column.style
15559
+ };
15125
15560
  };
15126
15561
  const getCellClass = (rowIndex, columnIndex, row, column) => {
15127
- const classes = [column.realAlign, column.className];
15562
+ const classes = [column.realAlign, column.class];
15128
15563
  if (isColumnHidden(columnIndex)) {
15129
15564
  classes.push('is-hidden');
15130
15565
  }
@@ -15141,24 +15576,44 @@ const TableBody = /* @__PURE__ */ defineComponent({
15141
15576
  }
15142
15577
  return classes.join(' ');
15143
15578
  };
15144
- const handleCellMouseEnter = (e, row) => {
15579
+ let poper;
15580
+ const handleCellMouseEnter = (e, row, column) => {
15145
15581
  const cell = getCell(e);
15582
+ const hoverState = {
15583
+ cell,
15584
+ column,
15585
+ row
15586
+ };
15146
15587
  if (cell) {
15147
- const column = getColumnByCell(states.columns, cell);
15148
- const hoverState = {
15149
- cell,
15150
- column,
15151
- row
15152
- };
15153
15588
  table.hoverState.value = hoverState;
15154
15589
  table.emit('cell-mouse-enter', hoverState.row, hoverState.column, hoverState.cell, e);
15155
15590
  }
15591
+ // 判断是否text-overflow, 如果是就显示tooltip
15592
+ const el = e.target.querySelector('.vc-table__text-line');
15593
+ if (!el) return;
15594
+ const value = `${row[column.prop]}`;
15595
+ const endIndex = getFitIndex({
15596
+ el,
15597
+ value,
15598
+ line: column.line,
15599
+ suffix: '...'
15600
+ });
15601
+ if (endIndex > 0 && endIndex < value.length - 1) {
15602
+ poper && poper.destroy();
15603
+ poper = Popover.open({
15604
+ el: document.body,
15605
+ triggerEl: el,
15606
+ hover: true,
15607
+ alone: true,
15608
+ autoWidth: true,
15609
+ content: value
15610
+ });
15611
+ }
15156
15612
  };
15157
- const handleCellMouseLeave = e => {
15613
+ const handleCellMouseLeave = (e, row, column) => {
15158
15614
  const cell = getCell(e);
15159
15615
  if (!cell) return;
15160
- const oldHoverState = table.hoverState.value || {};
15161
- table.emit('cell-mouse-leave', oldHoverState.row, oldHoverState.column, oldHoverState.cell, e);
15616
+ table.emit('cell-mouse-leave', row, column, cell, e);
15162
15617
  };
15163
15618
  const handleMouseEnter = debounce(index => {
15164
15619
  table.store.setHoverRow(index);
@@ -15229,8 +15684,8 @@ const TableBody = /* @__PURE__ */ defineComponent({
15229
15684
  "key": column.id,
15230
15685
  "style": [getCellStyle(rowIndex, columnIndex, row, column), sizeStyle],
15231
15686
  "class": [getCellClass(rowIndex, columnIndex, row, column), 'vc-table__td'],
15232
- "onMouseenter": e => handleCellMouseEnter(e, row),
15233
- "onMouseleave": e => handleCellMouseLeave(e)
15687
+ "onMouseenter": e => handleCellMouseEnter(e, row, column),
15688
+ "onMouseleave": e => handleCellMouseLeave(e, row, column)
15234
15689
  }, [renderCell({
15235
15690
  row,
15236
15691
  column,
@@ -15286,7 +15741,11 @@ const TableBody = /* @__PURE__ */ defineComponent({
15286
15741
  allowRender.value = true;
15287
15742
  }
15288
15743
  });
15289
- onBeforeUnmount(() => (timer && clearTimeout(timer), allowRender.value = false));
15744
+ onBeforeUnmount(() => {
15745
+ poper && poper.destroy();
15746
+ timer && clearTimeout(timer);
15747
+ allowRender.value = false;
15748
+ });
15290
15749
  return () => {
15291
15750
  if (!allowRender.value) return;
15292
15751
  return createVNode("div", {
@@ -15413,10 +15872,13 @@ const TableHeader = /* @__PURE__ */ defineComponent({
15413
15872
  column
15414
15873
  });
15415
15874
  }
15416
- return headerCellStyle;
15875
+ return {
15876
+ ...headerCellStyle,
15877
+ ...column.style
15878
+ };
15417
15879
  };
15418
15880
  const getHeaderCellClass = (rowIndex, columnIndex, row, column) => {
15419
- const classes = [column.id, column.order, column.realHeaderAlign, column.className, column.labelClass];
15881
+ const classes = [column.id, column.order, column.realHeaderAlign, column.class, column.labelClass];
15420
15882
  if (rowIndex === 0 && columnsHidden.value[columnIndex]) {
15421
15883
  classes.push('is-hidden');
15422
15884
  }
@@ -16351,210 +16813,19 @@ const Table = /* @__PURE__ */ defineComponent({
16351
16813
  }
16352
16814
  });
16353
16815
 
16354
- const props$b = {
16355
- tag: {
16356
- type: String,
16357
- default: "div"
16358
- },
16359
- value: {
16360
- type: String,
16361
- default: ""
16362
- },
16363
- line: {
16364
- type: Number,
16365
- default: 0
16366
- },
16367
- // TODO: 是否改为tail-indent来表示尾部缩进
16368
- indent: {
16369
- type: Number,
16370
- default: 0
16816
+ const cellStarts = {
16817
+ default: {
16818
+ order: ''
16371
16819
  },
16372
- resize: {
16373
- type: [Boolean, Number],
16374
- default: 100
16820
+ selection: {
16821
+ width: 60,
16822
+ minWidth: 60,
16823
+ order: ''
16375
16824
  },
16376
- suffix: {
16377
- type: String,
16378
- default: "..."
16379
- },
16380
- placement: {
16381
- type: String,
16382
- default: "top"
16383
- },
16384
- portalClass: [Object, String, Array],
16385
- portalStyle: [Object, String, Array],
16386
- renderRow: {
16387
- type: Function,
16388
- default: (props$) => {
16389
- return props$.value;
16390
- }
16391
- }
16392
- };
16393
-
16394
- const HIDDEN_TEXT_STYLE = `
16395
- position: absolute!important;
16396
- word-break: break-all!important;
16397
- overflow: auto!important;
16398
- opacity: 0!important;
16399
- z-index: -1000!important;
16400
- top: 0!important;
16401
- right: 0!important;
16402
- `;
16403
- const SIZING_STYLE$1 = [
16404
- "letter-spacing",
16405
- "line-height",
16406
- "padding-top",
16407
- "padding-bottom",
16408
- "font-family",
16409
- "font-weight",
16410
- "font-size",
16411
- "text-rendering",
16412
- "text-transform",
16413
- "width",
16414
- // 'text-indent', // 需要额外计算
16415
- "padding-left",
16416
- "padding-right",
16417
- "border-width",
16418
- "box-sizing"
16419
- ];
16420
- let hiddenEl$1;
16421
- const getFitIndex = (options = {}) => {
16422
- const { el, line, value, suffix, indent } = options;
16423
- let lineHeight = parseInt(getStyle(el, "line-height"), 10);
16424
- if (!hiddenEl$1) {
16425
- hiddenEl$1 = document.createElement("div");
16426
- document.body.appendChild(hiddenEl$1);
16427
- }
16428
- el.getAttribute("wrap") ? hiddenEl$1.setAttribute("wrap", el.getAttribute("wrap")) : hiddenEl$1.removeAttribute("wrap");
16429
- const {
16430
- paddingSize,
16431
- borderSize,
16432
- boxSizing,
16433
- sizingStyle
16434
- } = Utils$1.getComputedStyle(el, SIZING_STYLE$1);
16435
- const textIndent = `text-indent: ${parseInt(getStyle(el, "text-indent"), 10) + indent}px;`;
16436
- hiddenEl$1.setAttribute("style", `${sizingStyle};${textIndent};${HIDDEN_TEXT_STYLE}`);
16437
- let sideHeight = paddingSize || 0;
16438
- boxSizing === "border-box" && (sideHeight += borderSize);
16439
- if (Number.isNaN(lineHeight)) {
16440
- hiddenEl$1.innerText = ".";
16441
- lineHeight = hiddenEl$1.clientHeight - sideHeight;
16442
- }
16443
- let endIndex = 0;
16444
- hiddenEl$1.innerText = suffix;
16445
- (value || "").split("").forEach((item, i) => {
16446
- let old = hiddenEl$1.innerText;
16447
- old = old.substring(0, old.length - suffix.length);
16448
- hiddenEl$1.innerText = old + item + suffix;
16449
- if (hiddenEl$1.clientHeight - sideHeight > lineHeight * line && endIndex === 0) {
16450
- endIndex = i;
16451
- }
16452
- });
16453
- return endIndex;
16454
- };
16455
-
16456
- /** @jsxImportSource vue */
16457
-
16458
- const COMPONENT_NAME$h = 'vc-text';
16459
- const Text = /* @__PURE__ */ defineComponent({
16460
- name: COMPONENT_NAME$h,
16461
- props: props$b,
16462
- setup(props, {
16463
- emit
16464
- }) {
16465
- const instance = getCurrentInstance();
16466
- const isActive = ref(false);
16467
- const endIndex = ref(0);
16468
- const styles = computed(() => {
16469
- return {
16470
- cursor: endIndex.value === 0 ? 'unset' : 'pointer'
16471
- };
16472
- });
16473
- const calcPosition = () => {
16474
- const {
16475
- suffix,
16476
- line,
16477
- value,
16478
- indent
16479
- } = props;
16480
- if (line === 0) {
16481
- endIndex.value = 0;
16482
- isActive.value = true;
16483
- } else {
16484
- endIndex.value = getFitIndex({
16485
- el: instance.vnode.el,
16486
- line,
16487
- value,
16488
- suffix,
16489
- indent
16490
- });
16491
- isActive.value = true;
16492
- }
16493
- emit('clip', endIndex.value);
16494
- };
16495
- const handleResize = props.resize === true || props.resize === 0 ? calcPosition : debounce(calcPosition, props.resize || 0);
16496
- let poper;
16497
- const handleMouseOver = e => {
16498
- if (endIndex.value > 0) {
16499
- poper = Popover.open({
16500
- el: document.body,
16501
- name: 'vc-text-popover',
16502
- // 确保不重复创建
16503
- triggerEl: e.target,
16504
- hover: true,
16505
- theme: 'dark',
16506
- placement: props.placement,
16507
- portalClass: props.portalClass,
16508
- portalStyle: [props.portalStyle || `width: ${e.target.clientWidth}px`, 'word-break: break-all'],
16509
- content: props.value
16510
- });
16511
- }
16512
- };
16513
- const handleMouseOut = () => {
16514
- // Do.
16515
- };
16516
- ['value', 'indent', 'line'].forEach(key => {
16517
- watch(() => props[key], calcPosition);
16518
- });
16519
- onMounted(() => {
16520
- props.resize !== false && Resize.on(instance.vnode.el, handleResize); // 首次会执行一次
16521
- });
16522
- onBeforeUnmount(() => {
16523
- props.resize !== false && Resize.off(instance.vnode.el, handleResize);
16524
- poper?.destroy?.();
16525
- });
16526
- const Content = props.tag;
16527
- return () => {
16528
- return createVNode(Content, {
16529
- "class": "vc-text",
16530
- "style": styles.value,
16531
- "onMouseover": handleMouseOver,
16532
- "onMouseout": handleMouseOut
16533
- }, {
16534
- default: () => [isActive.value ? createVNode(Customer, {
16535
- "value": endIndex.value > 0 ? `${props.value.slice(0, endIndex.value)}${props.suffix}` : props.value,
16536
- "index": endIndex.value,
16537
- "render": props.renderRow
16538
- }, null) : null]
16539
- });
16540
- };
16541
- }
16542
- });
16543
-
16544
- const cellStarts = {
16545
- default: {
16546
- order: ''
16547
- },
16548
- selection: {
16549
- width: 60,
16550
- minWidth: 60,
16551
- order: '',
16552
- className: 'vc-table-column--selection'
16553
- },
16554
- expand: {
16555
- width: 60,
16556
- minWidth: 60,
16557
- order: ''
16825
+ expand: {
16826
+ width: 60,
16827
+ minWidth: 60,
16828
+ order: ''
16558
16829
  },
16559
16830
  index: {
16560
16831
  width: 60,
@@ -16595,7 +16866,8 @@ const cellForced = {
16595
16866
  }, null), [[vShow, store.states.expandSelectable || level === 0]]);
16596
16867
  },
16597
16868
  sortable: false,
16598
- resizable: false
16869
+ resizable: false,
16870
+ class: 'vc-table__selection-column'
16599
16871
  },
16600
16872
  index: {
16601
16873
  renderHeader(h, {
@@ -16645,7 +16917,7 @@ const cellForced = {
16645
16917
  },
16646
16918
  sortable: false,
16647
16919
  resizable: false,
16648
- className: 'vc-table__expand-column'
16920
+ class: 'vc-table__expand-column'
16649
16921
  }
16650
16922
  };
16651
16923
 
@@ -16665,17 +16937,13 @@ const defaultRenderCell = (rowData = {}) => {
16665
16937
  }
16666
16938
  const line = column.line || VcInstance.options.TableColumn?.line;
16667
16939
  if (line && value) {
16668
- const base = rowData.isHead || rowData.isTail ? 36 : 24; // 目前gap是12
16669
16940
  const style = {
16670
- // 目前左右pading为10
16671
- // TODO: 含有border还要-1
16672
- width: (column.realWidth || column.width) - base + 'px'
16941
+ '-webkit-line-clamp': line
16673
16942
  };
16674
- return createVNode(Text, {
16675
- "style": style,
16676
- "line": line,
16677
- "value": `${value}`
16678
- }, null);
16943
+ return createVNode("div", {
16944
+ "class": "vc-table__text-line",
16945
+ "style": style
16946
+ }, [value]);
16679
16947
  }
16680
16948
  return value;
16681
16949
  };
@@ -16723,6 +16991,7 @@ const treeCellPrefix = ({
16723
16991
 
16724
16992
  const TableColumn = /* @__PURE__ */ defineComponent({
16725
16993
  name: 'vc-table-column',
16994
+ inheritAttrs: false,
16726
16995
  props: {
16727
16996
  type: {
16728
16997
  type: String,
@@ -16734,7 +17003,6 @@ const TableColumn = /* @__PURE__ */ defineComponent({
16734
17003
  default: 0
16735
17004
  },
16736
17005
  label: String,
16737
- customClass: String,
16738
17006
  labelClass: String,
16739
17007
  prop: String,
16740
17008
  width: Number,
@@ -16771,7 +17039,8 @@ const TableColumn = /* @__PURE__ */ defineComponent({
16771
17039
  tooltip: [String, Function]
16772
17040
  },
16773
17041
  setup(props, {
16774
- slots
17042
+ slots,
17043
+ attrs
16775
17044
  }) {
16776
17045
  const instance = getCurrentInstance();
16777
17046
  const table = inject('vc-table');
@@ -16821,7 +17090,7 @@ const TableColumn = /* @__PURE__ */ defineComponent({
16821
17090
  Object.keys(source).forEach(prop => {
16822
17091
  const value = source[prop];
16823
17092
  if (value !== undefined) {
16824
- column[prop] = prop === 'customClass' ? `${column[prop]} ${value}` : value;
17093
+ column[prop] = prop === 'class' ? `${column[prop] ? `${column[prop]} ` : ''}${value}` : value;
16825
17094
  }
16826
17095
  });
16827
17096
  return column;
@@ -16891,7 +17160,7 @@ const TableColumn = /* @__PURE__ */ defineComponent({
16891
17160
  // 存在树形数组,且当前行无箭头图标且处于当前展开列,表格对齐
16892
17161
  if (!isEmpty$1(table.store.states.treeData) && !prefix && data.isExpandColumn) {
16893
17162
  prefix = createVNode("span", {
16894
- "class": "vc-table-un-expand__indent"
17163
+ "class": "vc-table__unexpand__indent"
16895
17164
  }, null);
16896
17165
  }
16897
17166
  const {
@@ -16907,6 +17176,8 @@ const TableColumn = /* @__PURE__ */ defineComponent({
16907
17176
  const defaults = {
16908
17177
  colspan: 1,
16909
17178
  rowspan: 1,
17179
+ class: attrs.class,
17180
+ style: attrs.style,
16910
17181
  ...cellStarts[props.type],
16911
17182
  id: columnId.value,
16912
17183
  realAlign,
@@ -16993,7 +17264,7 @@ const TableColumn = /* @__PURE__ */ defineComponent({
16993
17264
  const MTable = Table;
16994
17265
  const MTableColumn = TableColumn;
16995
17266
 
16996
- const props$a = {
17267
+ const props$b = {
16997
17268
  type: {
16998
17269
  type: String,
16999
17270
  validator: (v) => /^(line|card)$/.test(v),
@@ -17152,10 +17423,10 @@ const useTabs = (options = {}) => {
17152
17423
 
17153
17424
  /** @jsxImportSource vue */
17154
17425
 
17155
- const COMPONENT_NAME$g = 'vc-tabs';
17426
+ const COMPONENT_NAME$h = 'vc-tabs';
17156
17427
  const Tabs = /* @__PURE__ */ defineComponent({
17157
- name: COMPONENT_NAME$g,
17158
- props: props$a,
17428
+ name: COMPONENT_NAME$h,
17429
+ props: props$b,
17159
17430
  emits: ['update:modelValue', 'change', 'click'],
17160
17431
  setup(props, {
17161
17432
  slots
@@ -17320,7 +17591,7 @@ const Tabs = /* @__PURE__ */ defineComponent({
17320
17591
  }
17321
17592
  });
17322
17593
 
17323
- const props$9 = {
17594
+ const props$a = {
17324
17595
  value: {
17325
17596
  type: [String, Number]
17326
17597
  },
@@ -17402,10 +17673,10 @@ const useTabsPane = () => {
17402
17673
 
17403
17674
  /** @jsxImportSource vue */
17404
17675
 
17405
- const COMPONENT_NAME$f = 'vc-tabs-pane';
17676
+ const COMPONENT_NAME$g = 'vc-tabs-pane';
17406
17677
  const TabsPane = /* @__PURE__ */ defineComponent({
17407
- name: COMPONENT_NAME$f,
17408
- props: props$9,
17678
+ name: COMPONENT_NAME$g,
17679
+ props: props$a,
17409
17680
  setup(_, {
17410
17681
  slots
17411
17682
  }) {
@@ -17420,8 +17691,8 @@ const TabsPane = /* @__PURE__ */ defineComponent({
17420
17691
  }
17421
17692
  });
17422
17693
 
17423
- const props$8 = {
17424
- ...props$a,
17694
+ const props$9 = {
17695
+ ...props$b,
17425
17696
  theme: {
17426
17697
  type: String,
17427
17698
  default: "light",
@@ -17459,10 +17730,10 @@ const props$8 = {
17459
17730
 
17460
17731
  /** @jsxImportSource vue */
17461
17732
 
17462
- const COMPONENT_NAME$e = 'vcm-tabs';
17733
+ const COMPONENT_NAME$f = 'vcm-tabs';
17463
17734
  const MTabs = /* @__PURE__ */ defineComponent({
17464
- name: COMPONENT_NAME$e,
17465
- props: props$8,
17735
+ name: COMPONENT_NAME$f,
17736
+ props: props$9,
17466
17737
  emits: ['update:modelValue', 'change', 'click'],
17467
17738
  setup(props, {
17468
17739
  slots
@@ -17726,10 +17997,10 @@ const MTabs = /* @__PURE__ */ defineComponent({
17726
17997
 
17727
17998
  /** @jsxImportSource vue */
17728
17999
 
17729
- const COMPONENT_NAME$d = 'vcm-tabs-pane';
18000
+ const COMPONENT_NAME$e = 'vcm-tabs-pane';
17730
18001
  const MTabsPane = /* @__PURE__ */ defineComponent({
17731
- name: COMPONENT_NAME$d,
17732
- props: props$9,
18002
+ name: COMPONENT_NAME$e,
18003
+ props: props$a,
17733
18004
  setup(_, {
17734
18005
  slots
17735
18006
  }) {
@@ -17746,6 +18017,134 @@ const MTabsPane = /* @__PURE__ */ defineComponent({
17746
18017
 
17747
18018
  const MTag = Tag;
17748
18019
 
18020
+ const props$8 = {
18021
+ tag: {
18022
+ type: String,
18023
+ default: "div"
18024
+ },
18025
+ value: {
18026
+ type: String,
18027
+ default: ""
18028
+ },
18029
+ line: {
18030
+ type: Number,
18031
+ default: 0
18032
+ },
18033
+ // TODO: 是否改为tail-indent来表示尾部缩进
18034
+ indent: {
18035
+ type: Number,
18036
+ default: 0
18037
+ },
18038
+ resize: {
18039
+ type: [Boolean, Number],
18040
+ default: 100
18041
+ },
18042
+ suffix: {
18043
+ type: String,
18044
+ default: "..."
18045
+ },
18046
+ placement: {
18047
+ type: String,
18048
+ default: "top"
18049
+ },
18050
+ portalClass: [Object, String, Array],
18051
+ portalStyle: [Object, String, Array],
18052
+ renderRow: {
18053
+ type: Function,
18054
+ default: (props$) => {
18055
+ return props$.value;
18056
+ }
18057
+ }
18058
+ };
18059
+
18060
+ /** @jsxImportSource vue */
18061
+
18062
+ const COMPONENT_NAME$d = 'vc-text';
18063
+ const Text = /* @__PURE__ */ defineComponent({
18064
+ name: COMPONENT_NAME$d,
18065
+ props: props$8,
18066
+ setup(props, {
18067
+ emit
18068
+ }) {
18069
+ const instance = getCurrentInstance();
18070
+ const isActive = ref(false);
18071
+ const endIndex = ref(-1);
18072
+ const styles = computed(() => {
18073
+ return {
18074
+ cursor: endIndex.value <= 0 ? 'unset' : 'pointer'
18075
+ };
18076
+ });
18077
+ const calcPosition = () => {
18078
+ const {
18079
+ suffix,
18080
+ line,
18081
+ value,
18082
+ indent
18083
+ } = props;
18084
+ if (line === 0) {
18085
+ endIndex.value = -1;
18086
+ isActive.value = true;
18087
+ } else {
18088
+ endIndex.value = getFitIndex({
18089
+ el: instance.vnode.el,
18090
+ line,
18091
+ value,
18092
+ suffix,
18093
+ indent
18094
+ });
18095
+ isActive.value = true;
18096
+ }
18097
+ emit('clip', endIndex.value);
18098
+ };
18099
+ const handleResize = props.resize === true || props.resize === 0 ? calcPosition : debounce(calcPosition, props.resize || 0);
18100
+ let poper;
18101
+ const handleMouseOver = e => {
18102
+ if (endIndex.value > 0) {
18103
+ poper = Popover.open({
18104
+ el: document.body,
18105
+ name: 'vc-text-popover',
18106
+ // 确保不重复创建
18107
+ triggerEl: e.target,
18108
+ hover: true,
18109
+ theme: 'dark',
18110
+ placement: props.placement,
18111
+ portalClass: props.portalClass,
18112
+ portalStyle: [props.portalStyle || `width: ${e.target.clientWidth}px`, 'word-break: break-all'],
18113
+ content: props.value
18114
+ });
18115
+ }
18116
+ };
18117
+ const handleMouseOut = () => {
18118
+ // Do.
18119
+ };
18120
+ ['value', 'indent', 'line'].forEach(key => {
18121
+ watch(() => props[key], calcPosition);
18122
+ });
18123
+ onMounted(() => {
18124
+ props.resize !== false && Resize.on(instance.vnode.el, handleResize); // 首次会执行一次
18125
+ });
18126
+ onBeforeUnmount(() => {
18127
+ props.resize !== false && Resize.off(instance.vnode.el, handleResize);
18128
+ poper?.destroy?.();
18129
+ });
18130
+ const Content = props.tag;
18131
+ return () => {
18132
+ return createVNode(Content, {
18133
+ "class": "vc-text",
18134
+ "style": styles.value,
18135
+ "onMouseover": handleMouseOver,
18136
+ "onMouseout": handleMouseOut
18137
+ }, {
18138
+ default: () => [isActive.value ? createVNode(Customer, {
18139
+ "value": endIndex.value > 0 ? `${props.value.slice(0, endIndex.value)}${props.suffix}` : props.value,
18140
+ "index": endIndex.value,
18141
+ "render": props.renderRow
18142
+ }, null) : null]
18143
+ });
18144
+ };
18145
+ }
18146
+ });
18147
+
17749
18148
  const MText = Text;
17750
18149
 
17751
18150
  const HIDDEN_TEXTAREA_STYLE = `
@@ -19401,4 +19800,4 @@ const UploadPicker = /* @__PURE__ */ defineComponent({
19401
19800
 
19402
19801
  const MUploadPicker = UploadPicker;
19403
19802
 
19404
- export { ActionSheet, Alert, Artboard, Button, ButtonGroup, Calendar, Card, Carousel, Cascader, Chart, Checkbox, CheckboxGroup, Clipboard, Collapse, CollapseItem, ColorPicker, Countdown, Customer, DatePicker, Debounce, Divider, Drawer, DrawerView, Dropdown, Editor, Expand$1 as Expand, Form, FormItem, Fragment, HTMLToImage, Icon, IconManager, Image$1 as Image, ImageCrop, ImagePreview, ImageProcessing, Input, InputNumber, InputSearch, MList as List, MListItem as ListItem, MActionSheet, MAlert, MArtboard, MButton, MButtonGroup, MCalendar, MCard, MCarousel, MCascader, MChart, MCheckbox, MCheckboxGroup, MClipboard, MCollapse, MCollapseItem, MColorPicker, MCountdown, MCustomer, MDatePicker, Debounce as MDebounce, MDivider, MDrawer, MDrawerView, MDropdown, MEditor, MExpand, MForm, MFormItem, MFragment, MHTMLToImage, MIcon, MImage, MImageCrop, MImagePreview, MImageProcessing, MInput, MInputNumber, MInputSearch, MList, MListItem, MMarquee, MMessage, modal as MModal, MModalView, MNotice, MOption, MPagination, MPicker, MPopconfirm, MPopover, MPopup, MPortal, MPrint, MProgress, MRadio, MRadioGroup, MRate, MRecycleList, MResizer, MScroller, MSelect, MSlider, MSortList, MSpin, MSteps, MSwitch, MTable, MTableColumn, MTabs, MTabsPane, MTag, MText, MTextarea, MTimePicker, MTimeline, MToast, MToastView, MTouch, MTransition, MTransitionCollapse, MTransitionFade, MTransitionScale, MTransitionSlide, MTransitionZoom, MTree, MUpload, MUploadPicker, Marquee, Message, MessageView, Modal, ModalView, Notice, NoticeView, Option$1 as Option, Pagination, Picker, Popconfirm, Popover, Popup, Portal, PortalView, Print, Progress, Radio, RadioGroup, Rate, RecycleList, Resizer, Scroller, ScrollerWheel, Select, Slider, SortList, Spin, Steps, Switch, Table, TableColumn, Tabs, TabsPane, Tag, Text, Textarea, Theme, ThemeImage, ThemeText, ThemeView, TimePicker, Timeline, Toast, ToastView, Touch, Transition, TransitionCollapse, TransitionFade, TransitionScale, TransitionSlide, TransitionZoom, Tree, Upload, UploadPicker, VcError, VcInstance };
19803
+ export { ActionSheet, Alert, Artboard, Button, ButtonGroup, Calendar, Card, Carousel, Cascader, Chart, Checkbox, CheckboxGroup, Clipboard, Collapse, CollapseItem, ColorPicker, Countdown, Customer, DatePicker, Debounce, Divider, Drawer, DrawerView, Dropdown, DropdownItem, DropdownMenu, Editor, Expand$1 as Expand, Form, FormItem, Fragment, HTMLToImage, Icon, IconManager, Image$1 as Image, ImageCrop, ImagePreview, ImageProcessing, Input, InputNumber, InputSearch, MList as List, MListItem as ListItem, MActionSheet, MAlert, MArtboard, MButton, MButtonGroup, MCalendar, MCard, MCarousel, MCascader, MChart, MCheckbox, MCheckboxGroup, MClipboard, MCollapse, MCollapseItem, MColorPicker, MCountdown, MCustomer, MDatePicker, Debounce as MDebounce, MDivider, MDrawer, MDrawerView, MDropdown, MDropdownItem, MDropdownMenu, MEditor, MExpand, MForm, MFormItem, MFragment, MHTMLToImage, MIcon, MImage, MImageCrop, MImagePreview, MImageProcessing, MInput, MInputNumber, MInputSearch, MList, MListItem, MMarquee, MMessage, modal as MModal, MModalView, MNotice, MOption, MPagination, MPicker, MPopconfirm, MPopover, MPopup, MPortal, MPrint, MProgress, MRadio, MRadioGroup, MRate, MRecycleList, MResizer, MScroller, MSelect, MSlider, MSortList, MSpin, MSteps, MSwitch, MTable, MTableColumn, MTabs, MTabsPane, MTag, MText, MTextarea, MTimePicker, MTimeline, MToast, MToastView, MTouch, MTransition, MTransitionCollapse, MTransitionFade, MTransitionScale, MTransitionSlide, MTransitionZoom, MTree, MUpload, MUploadPicker, Marquee, Message, MessageView, Modal, ModalView, Notice, NoticeView, Option$1 as Option, Pagination, Picker, Popconfirm, Popover, Popup, Portal, PortalView, Print, Progress, Radio, RadioGroup, Rate, RecycleList, Resizer, Scroller, ScrollerWheel, Select, Slider, SortList, Spin, Steps, Switch, Table, TableColumn, Tabs, TabsPane, Tag, Text, Textarea, Theme, ThemeImage, ThemeText, ThemeView, TimePicker, Timeline, Toast, ToastView, Touch, Transition, TransitionCollapse, TransitionFade, TransitionScale, TransitionSlide, TransitionZoom, Tree, Upload, UploadPicker, VcError, VcInstance };