@deot/vc-components 1.0.42 → 1.0.44

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
@@ -1,10 +1,10 @@
1
- import { reactive, defineComponent, createVNode, ref, watch, getCurrentInstance, computed, TransitionGroup, Transition as Transition$1, h, onMounted, onBeforeUnmount, inject, provide, nextTick, mergeProps, withModifiers, createApp, Fragment as Fragment$1, Teleport, onUnmounted, withDirectives, vShow, shallowRef, isVNode, onBeforeMount, createTextVNode, toRaw, onUpdated, useAttrs as useAttrs$1 } from 'vue';
1
+ import { reactive, defineComponent, createVNode, inject, shallowRef, ref, computed, onMounted, onBeforeUnmount, watch, getCurrentInstance, TransitionGroup, Transition as Transition$1, h, provide, nextTick, mergeProps, withModifiers, createApp, Fragment as Fragment$1, Teleport, onUnmounted, withDirectives, vShow, isVNode, onBeforeMount, createTextVNode, toRaw, onUpdated, resolveComponent, useAttrs as useAttrs$1 } from 'vue';
2
+ import * as $ from '@deot/helper-dom';
3
+ import { getScroller, composedPath, scrollIntoView, prefixStyle, getStyle, removeClass, addClass, hasClass } from '@deot/helper-dom';
2
4
  import * as Utils from '@deot/helper-utils';
3
5
  import { raf, getUid, preZero, getPropByPath, throttle as throttle$1, hasOwn } from '@deot/helper-utils';
4
6
  import { debounce, cloneDeep, pick, isEqualWith, startCase, throttle, concat, max, merge, isEmpty as isEmpty$1, kebabCase, difference } from 'lodash-es';
5
7
  import { useAttrs, useScrollbar, getInstance } from '@deot/vc-hooks';
6
- import * as $ from '@deot/helper-dom';
7
- import { composedPath, scrollIntoView, prefixStyle, getStyle, removeClass, addClass, hasClass } from '@deot/helper-dom';
8
8
  import { Resize } from '@deot/helper-resize';
9
9
  import { Utils as Utils$1, IS_SERVER as IS_SERVER$1 } from '@deot/vc-shared';
10
10
  import { Wheel } from '@deot/helper-wheel';
@@ -79,7 +79,7 @@ class Instance {
79
79
  }
80
80
  const VcInstance = new Instance();
81
81
 
82
- const props$1s = {
82
+ const props$1t = {
83
83
  tag: {
84
84
  type: String,
85
85
  default: "div"
@@ -88,10 +88,10 @@ const props$1s = {
88
88
 
89
89
  /** @jsxImportSource vue */
90
90
 
91
- const COMPONENT_NAME$27 = 'vc-action-sheet';
91
+ const COMPONENT_NAME$28 = 'vc-action-sheet';
92
92
  const ActionSheet = /* @__PURE__ */ defineComponent({
93
- name: COMPONENT_NAME$27,
94
- props: props$1s,
93
+ name: COMPONENT_NAME$28,
94
+ props: props$1t,
95
95
  setup(props, {
96
96
  slots
97
97
  }) {
@@ -105,6 +105,182 @@ const ActionSheet = /* @__PURE__ */ defineComponent({
105
105
 
106
106
  const MActionSheet = ActionSheet;
107
107
 
108
+ const props$1s = {
109
+ zIndex: {
110
+ type: [Number, String],
111
+ default: 1
112
+ },
113
+ // TODO: left/right
114
+ placement: {
115
+ type: String,
116
+ default: "top"
117
+ },
118
+ disabled: {
119
+ type: Boolean,
120
+ default: false
121
+ },
122
+ fixed: {
123
+ type: Boolean,
124
+ default: true
125
+ },
126
+ offset: {
127
+ type: Number,
128
+ default: 0
129
+ },
130
+ // -> 固钉始终保持在容器内, 超过范围则隐藏(请注意容器避免出现滚动条) 仅fixed为true有效
131
+ target: {
132
+ type: String
133
+ }
134
+ };
135
+
136
+ /** @jsxImportSource vue */
137
+
138
+ const COMPONENT_NAME$27 = 'vc-affix';
139
+ const SCROLLER_WHEEL_REG = /vc-scroller-wheel/;
140
+ const Affix = /* @__PURE__ */ defineComponent({
141
+ name: COMPONENT_NAME$27,
142
+ props: props$1s,
143
+ setup(props, {
144
+ slots,
145
+ expose
146
+ }) {
147
+ const scrollerInstance = inject('vc-scroller', null);
148
+ const scroller = shallowRef(); // 当前元素所在的滚动容器
149
+ const base = shallowRef(); // 当前元素(props.tagret)的参考容器
150
+ const current = shallowRef(); // 当前元素
151
+
152
+ const currentRect = reactive({
153
+ top: 0,
154
+ bottom: 0,
155
+ width: 0,
156
+ height: 0
157
+ });
158
+ const isActive = ref(false);
159
+ const transformY = ref(0);
160
+ const windowHeight = ref(window.innerHeight);
161
+ const isVcScrollerWheel = computed(() => {
162
+ return SCROLLER_WHEEL_REG.test(scroller.value?.className || '');
163
+ });
164
+ const currentStyle = computed(() => {
165
+ if (!isActive.value) return {};
166
+ return {
167
+ height: `${currentRect.height}px`,
168
+ width: `${currentRect.width}px`
169
+ };
170
+ });
171
+ const contentStyle = computed(() => {
172
+ if (!isActive.value) return {};
173
+ const offset = `${props.offset}px`;
174
+ return {
175
+ height: `${currentRect.height}px`,
176
+ width: `${currentRect.width}px`,
177
+ top: props.placement === 'top' ? offset : '',
178
+ bottom: props.placement === 'bottom' ? offset : '',
179
+ zIndex: props.zIndex,
180
+ transform: transformY.value ? `translateY(${transformY.value}px)` : ''
181
+ };
182
+ });
183
+ const setCurrentRect = () => {
184
+ const rect = current.value.getBoundingClientRect();
185
+ Object.assign(currentRect, {
186
+ top: rect.top,
187
+ bottom: rect.bottom,
188
+ width: rect.width,
189
+ height: rect.height
190
+ });
191
+ };
192
+ const setAbsoluteStatus = () => {
193
+ const {
194
+ placement,
195
+ offset
196
+ } = props;
197
+ const currentHeightOffset = offset + currentRect.height;
198
+ const containerRect = scroller.value.getBoundingClientRect();
199
+ let transformOffsetY = 0;
200
+
201
+ // scroller-wheel滚动条偏移
202
+ if (scrollerInstance && isVcScrollerWheel.value) {
203
+ const maxMoveY = scrollerInstance.scrollHeight - scrollerInstance.clientHeight;
204
+ transformOffsetY = scrollerInstance.scrollTop >= maxMoveY ? maxMoveY : scrollerInstance.scrollTop;
205
+ }
206
+ if (placement === 'top') {
207
+ isActive.value = currentRect.top - containerRect.top <= props.offset;
208
+ transformY.value = Math.min(containerRect.bottom - currentHeightOffset, 0) + transformOffsetY;
209
+ } else {
210
+ isActive.value = currentRect.bottom - containerRect.top >= containerRect.height - props.offset;
211
+ transformY.value = Math.max(containerRect.height - containerRect.top - currentHeightOffset, 0) + transformOffsetY;
212
+ }
213
+ };
214
+ const setFixedStatus = () => {
215
+ const {
216
+ placement,
217
+ target,
218
+ offset
219
+ } = props;
220
+ const currentHeightOffset = offset + currentRect.height;
221
+ const containerRect = target && base.value.getBoundingClientRect();
222
+ if (placement === 'top') {
223
+ if (target) {
224
+ isActive.value = offset > currentRect.top && containerRect.bottom > 0;
225
+ transformY.value = Math.min(containerRect.bottom - currentHeightOffset, 0);
226
+ } else {
227
+ isActive.value = offset > currentRect.top;
228
+ }
229
+ } else {
230
+ if (target) {
231
+ isActive.value = windowHeight.value - offset < currentRect.bottom && windowHeight.value > containerRect.top;
232
+ transformY.value = -Math.min(windowHeight.value - containerRect.top - currentHeightOffset, 0);
233
+ } else {
234
+ isActive.value = windowHeight.value - offset < currentRect.bottom;
235
+ }
236
+ }
237
+ };
238
+ const refresh = () => {
239
+ setCurrentRect();
240
+ scroller.value instanceof Window || props.fixed ? setFixedStatus() : setAbsoluteStatus();
241
+ };
242
+ onMounted(() => {
243
+ if (typeof props.target === 'string') {
244
+ base.value = document.querySelector(props.target) ?? void 0;
245
+ }
246
+ !base.value && (base.value = document.documentElement);
247
+ scroller.value = getScroller(current.value, {
248
+ className: SCROLLER_WHEEL_REG
249
+ });
250
+ if (isVcScrollerWheel.value) {
251
+ scrollerInstance?.on(refresh);
252
+ } else {
253
+ scroller.value?.addEventListener('scroll', refresh);
254
+ }
255
+ refresh();
256
+ });
257
+ onBeforeUnmount(() => {
258
+ if (isVcScrollerWheel.value) {
259
+ scrollerInstance?.off(refresh);
260
+ } else {
261
+ scroller.value?.removeEventListener('scroll', refresh);
262
+ }
263
+ });
264
+ expose({
265
+ refresh
266
+ });
267
+ return () => {
268
+ return createVNode("div", {
269
+ "ref": current,
270
+ "class": "vc-affix",
271
+ "style": currentStyle.value
272
+ }, [createVNode("div", {
273
+ "class": {
274
+ [`vc-affix__${props.fixed ? 'fixed' : 'absolute'}`]: isActive.value
275
+ },
276
+ "style": contentStyle.value
277
+ }, [slots?.default?.()])]);
278
+ };
279
+ }
280
+ });
281
+
282
+ const MAffix = Affix;
283
+
108
284
  const props$1r = {
109
285
  modelValue: {
110
286
  type: Boolean,
@@ -791,7 +967,7 @@ const COMPONENT_NAME$1$ = 'vc-alert';
791
967
 
792
968
  // [color, borderColor, backgroundColor], -> CSS
793
969
  const THEME_MAP = {
794
- info: ['#2B72FD', '#91d5ff', '#e6f7ff'],
970
+ info: ['#456CF6', '#91d5ff', '#e6f7ff'],
795
971
  success: ['#52c41a', '#b7eb8f', '#f6ffed'],
796
972
  error: ['#ed4014', '#ffb08f', '#fbe9e9'],
797
973
  warning: ['#ffbf00', '#ffe58f', '#fffbe6']
@@ -9128,6 +9304,7 @@ const useScroller = (expose) => {
9128
9304
  refreshSize();
9129
9305
  refreshPosition(options);
9130
9306
  };
9307
+ const listeners = [];
9131
9308
  const triggerScrollDelegate = (options) => {
9132
9309
  const delegates = {
9133
9310
  scrollLeft: (options && options.x) ?? scrollX.value,
@@ -9135,12 +9312,15 @@ const useScroller = (expose) => {
9135
9312
  clientWidth: wrapperW.value,
9136
9313
  clientHeight: wrapperH.value,
9137
9314
  scrollWidth: contentW.value,
9138
- scrollHeight: contentH.value
9315
+ scrollHeight: contentH.value,
9316
+ getBoundingClientRect: () => wrapper.value?.getBoundingClientRect()
9139
9317
  };
9140
- instance.emit("scroll", {
9318
+ const e = {
9141
9319
  target: delegates,
9142
9320
  currentTarget: delegates
9143
- });
9321
+ };
9322
+ instance.emit("scroll", e);
9323
+ listeners.forEach((listener) => listener(e));
9144
9324
  };
9145
9325
  const scrollTo = (options) => {
9146
9326
  refreshPosition(options);
@@ -9167,8 +9347,9 @@ const useScroller = (expose) => {
9167
9347
  Resize.off(wrapper.value, refresh);
9168
9348
  Resize.off(content.value, refresh);
9169
9349
  }
9350
+ listeners.splice(0, listeners.length);
9170
9351
  });
9171
- expose({
9352
+ const exposed = {
9172
9353
  wrapper,
9173
9354
  content,
9174
9355
  scrollTo,
@@ -9184,8 +9365,16 @@ const useScroller = (expose) => {
9184
9365
  },
9185
9366
  setScrollLeft: (value) => {
9186
9367
  scrollTo({ x: value });
9368
+ },
9369
+ on: (listener) => {
9370
+ listeners.push(listener);
9371
+ },
9372
+ off: (listener) => {
9373
+ listeners.splice(listeners.indexOf(listener), 1);
9187
9374
  }
9188
- });
9375
+ };
9376
+ expose(exposed);
9377
+ provide("vc-scroller", reactive(exposed));
9189
9378
  return {
9190
9379
  bar,
9191
9380
  wrapper,
@@ -14842,7 +15031,7 @@ const props$n = {
14842
15031
  color: {
14843
15032
  type: [Object, String],
14844
15033
  default: () => ({
14845
- normal: "#2B72FD",
15034
+ normal: "#456CF6",
14846
15035
  success: "#52c41a",
14847
15036
  error: "#f5222d"
14848
15037
  })
@@ -18203,10 +18392,38 @@ const TableBody = /* @__PURE__ */ defineComponent({
18203
18392
  }
18204
18393
  });
18205
18394
 
18206
- // import TableSort from './table-sort';
18395
+ const TableSort = /* @__PURE__ */ defineComponent({
18396
+ name: 'vc-table-sort',
18397
+ props: {
18398
+ order: String
18399
+ },
18400
+ emits: ['click'],
18401
+ setup(props, {
18402
+ emit
18403
+ }) {
18404
+ const handleClick = v => {
18405
+ emit('click', props.order !== v ? v : '');
18406
+ };
18407
+ return () => {
18408
+ return createVNode("span", {
18409
+ "class": "vc-table-sort"
18410
+ }, [createVNode("span", {
18411
+ "class": [{
18412
+ 'is-ascending': props.order === 'ascending'
18413
+ }, 'vc-table-sort__icon vc-table-sort__icon--ascending'],
18414
+ "onClick": withModifiers(() => handleClick('ascending'), ['stop'])
18415
+ }, null), createVNode("span", {
18416
+ "class": [{
18417
+ 'is-descending': props.order === 'descending'
18418
+ }, 'vc-table-sort__icon vc-table-sort__icon--descending'],
18419
+ "onClick": withModifiers(() => handleClick('descending'), ['stop'])
18420
+ }, null)]);
18421
+ };
18422
+ }
18423
+ });
18424
+
18207
18425
  // import TableFilter from './table-filter';
18208
18426
 
18209
- const TableSort = 'div';
18210
18427
  const TableFilter = 'div';
18211
18428
  const TableHeader = /* @__PURE__ */ defineComponent({
18212
18429
  name: 'vc-table-header',
@@ -18214,7 +18431,7 @@ const TableHeader = /* @__PURE__ */ defineComponent({
18214
18431
  fixed: [Boolean, String],
18215
18432
  border: Boolean,
18216
18433
  // 排序全部交给外部处理,内部不处理数据,只做交互
18217
- defaultSort: {
18434
+ sort: {
18218
18435
  type: Object,
18219
18436
  default: () => ({})
18220
18437
  }
@@ -18412,10 +18629,12 @@ const TableHeader = /* @__PURE__ */ defineComponent({
18412
18629
  document.body.style.cursor = '';
18413
18630
  };
18414
18631
  const handleSort = (prop, order) => {
18415
- table.emit('sort-change', {
18632
+ const v = {
18416
18633
  prop,
18417
18634
  order
18418
- });
18635
+ };
18636
+ table.emit('update:sort', v);
18637
+ table.emit('sort-change', v);
18419
18638
  };
18420
18639
  const handleFilter = (column, value) => {
18421
18640
  const {
@@ -18471,9 +18690,10 @@ const TableHeader = /* @__PURE__ */ defineComponent({
18471
18690
  store: table.store
18472
18691
  }) : column.label, column.tooltip ? createVNode(Icon, {
18473
18692
  "type": "o-info",
18693
+ "class": "vc-table__tooltip",
18474
18694
  "onMouseenter": e => handleCellMouseEnter(e, column)
18475
18695
  }, null) : null, column.sortable ? createVNode(TableSort, {
18476
- "order": column.prop === props.defaultSort.prop ? props.defaultSort.order : '',
18696
+ "order": column.prop === props.sort.prop ? props.sort.order : '',
18477
18697
  "onClick": order => handleSort(column.prop, order)
18478
18698
  }, null) : null, column.filters ? createVNode(TableFilter, {
18479
18699
  "data": column.filters,
@@ -18688,7 +18908,7 @@ const props$d = {
18688
18908
  * 排序全部交给外部处理,内部不处理数据,只做交互
18689
18909
  * 列与列之间互斥
18690
18910
  */
18691
- defaultSort: {
18911
+ sort: {
18692
18912
  type: Object,
18693
18913
  default: () => ({})
18694
18914
  },
@@ -18702,7 +18922,7 @@ const COMPONENT_NAME$j = 'vc-table';
18702
18922
  const Table = /* @__PURE__ */ defineComponent({
18703
18923
  name: COMPONENT_NAME$j,
18704
18924
  props: props$d,
18705
- emits: ['select', 'select-all', 'selection-change', 'cell-mouse-enter', 'cell-mouse-leave', 'cell-click', 'cell-dblclick', 'row-click', 'row-contextmenu', 'row-dblclick', 'header-click', 'header-contextmenu', 'current-change', 'header-dragend ', 'expand-change', 'sort-change'],
18925
+ emits: ['select', 'select-all', 'selection-change', 'cell-mouse-enter', 'cell-mouse-leave', 'cell-click', 'cell-dblclick', 'row-click', 'row-contextmenu', 'row-dblclick', 'header-click', 'header-contextmenu', 'current-change', 'header-dragend ', 'expand-change', 'sort-change', 'update:sort'],
18706
18926
  setup(props, {
18707
18927
  slots,
18708
18928
  expose,
@@ -19108,7 +19328,7 @@ const Table = /* @__PURE__ */ defineComponent({
19108
19328
  }, [createVNode(TableHeader, {
19109
19329
  "ref": tableHeader,
19110
19330
  "border": props.border,
19111
- "default-sort": props.defaultSort,
19331
+ "sort": props.sort,
19112
19332
  "style": bodyWidthStyle.value
19113
19333
  }, null)]), states.columns.length > 0 && createVNode(ScrollerWheel, {
19114
19334
  "ref": scroller,
@@ -19157,7 +19377,7 @@ const Table = /* @__PURE__ */ defineComponent({
19157
19377
  }, [createVNode(TableHeader, {
19158
19378
  "ref": leftFixedTableHeader,
19159
19379
  "border": props.border,
19160
- "default-sort": props.defaultSort,
19380
+ "sort": props.sort,
19161
19381
  "style": bodyWidthStyle.value,
19162
19382
  "fixed": "left"
19163
19383
  }, null)]), createVNode("div", {
@@ -19196,7 +19416,7 @@ const Table = /* @__PURE__ */ defineComponent({
19196
19416
  }, [createVNode(TableHeader, {
19197
19417
  "ref": rightFixedTableHeader,
19198
19418
  "border": props.border,
19199
- "default-sort": props.defaultSort,
19419
+ "sort": props.sort,
19200
19420
  "style": bodyWidthStyle.value,
19201
19421
  "fixed": "right"
19202
19422
  }, null)]), createVNode("div", {
@@ -20011,7 +20231,8 @@ const Tabs = /* @__PURE__ */ defineComponent({
20011
20231
 
20012
20232
  const props$b = {
20013
20233
  value: {
20014
- type: [String, Number, Boolean]
20234
+ type: [String, Number, Boolean],
20235
+ default: void 0
20015
20236
  },
20016
20237
  label: {
20017
20238
  type: [String, Function],
@@ -20359,7 +20580,7 @@ const MTabs = /* @__PURE__ */ defineComponent({
20359
20580
  "class": [{
20360
20581
  'is-fixed': isFixed
20361
20582
  }, 'vcm-tabs__bar']
20362
- }, [createVNode("slot", {
20583
+ }, [createVNode(resolveComponent("slot"), {
20363
20584
  "name": "prepend"
20364
20585
  }, null), slots.prepend?.(), props.showStep && tabs.scrollable.value && createVNode("div", {
20365
20586
  "class": "vcm-tabs__step is-left",
@@ -23486,4 +23707,4 @@ const UploadPicker = /* @__PURE__ */ defineComponent({
23486
23707
 
23487
23708
  const MUploadPicker = UploadPicker;
23488
23709
 
23489
- 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, EditorView, 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, MTreeSelect, 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, TreeSelect, Upload, UploadPicker, VcError, VcInstance };
23710
+ export { ActionSheet, Affix, 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, EditorView, 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, MAffix, 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, MTreeSelect, 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, TreeSelect, Upload, UploadPicker, VcError, VcInstance };