sh-view 2.8.0 → 2.8.2

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.
Files changed (91) hide show
  1. package/.eslintrc.js +25 -20
  2. package/other.js +8 -8
  3. package/package.json +9 -6
  4. package/packages/components/index.js +91 -91
  5. package/packages/components/sh-alert/alert.ts +30 -0
  6. package/packages/components/sh-alert/index.vue +143 -168
  7. package/packages/components/sh-badge/index.vue +242 -242
  8. package/packages/components/sh-calendar/index.vue +650 -650
  9. package/packages/components/sh-card/index.vue +148 -148
  10. package/packages/components/sh-code-editor/index.vue +19 -19
  11. package/packages/components/sh-col/index.vue +92 -92
  12. package/packages/components/sh-corner/index.vue +230 -230
  13. package/packages/components/sh-count-to/index.vue +131 -131
  14. package/packages/components/sh-date/index.vue +301 -301
  15. package/packages/components/sh-drawer/index.vue +579 -579
  16. package/packages/components/sh-drawer/scrollbar.js +78 -78
  17. package/packages/components/sh-empty/index.vue +42 -42
  18. package/packages/components/sh-form/js/props.js +76 -76
  19. package/packages/components/sh-form/js/useForm.js +229 -229
  20. package/packages/components/sh-header/index.vue +261 -260
  21. package/packages/components/sh-icon/css/default/ionicons.svg +869 -869
  22. package/packages/components/sh-icon/css/font/iconfont.json +247 -247
  23. package/packages/components/sh-icon/index.vue +41 -41
  24. package/packages/components/sh-image/index.vue +133 -133
  25. package/packages/components/sh-list/index.vue +146 -146
  26. package/packages/components/sh-loading/index.vue +53 -53
  27. package/packages/components/sh-modal/index.vue +188 -188
  28. package/packages/components/sh-noticebar/index.vue +215 -215
  29. package/packages/components/sh-poptip/index.vue +597 -597
  30. package/packages/components/sh-progress/index.vue +276 -276
  31. package/packages/components/sh-pull-refresh/index.vue +289 -289
  32. package/packages/components/sh-result/index.vue +114 -114
  33. package/packages/components/sh-row/index.vue +66 -66
  34. package/packages/components/sh-split/components/trigger.vue +33 -33
  35. package/packages/components/sh-split/index.vue +342 -342
  36. package/packages/components/sh-table/components/importModal.vue +363 -363
  37. package/packages/components/sh-table/components/sh-column.vue +68 -68
  38. package/packages/components/sh-table/js/excel_to_json.js +313 -313
  39. package/packages/components/sh-table/js/props.js +305 -305
  40. package/packages/components/sh-table/js/tableMethods.js +167 -167
  41. package/packages/components/sh-table/js/useTable.js +636 -636
  42. package/packages/components/sh-table/table.vue +217 -217
  43. package/packages/components/sh-tabs/index.vue +426 -426
  44. package/packages/components/sh-tag/index.vue +168 -168
  45. package/packages/components/sh-toolbar/index.vue +182 -182
  46. package/packages/components/sh-tree/components/table-tree.vue +289 -289
  47. package/packages/components/sh-tree/mixin/treeProps.js +122 -122
  48. package/packages/components/sh-upload/index.vue +535 -535
  49. package/packages/components/sh-water-fall/index.vue +80 -80
  50. package/packages/components/sh-water-mark/index.vue +96 -96
  51. package/packages/css/index.js +4 -4
  52. package/packages/directive/index.js +19 -19
  53. package/packages/directive/module/click-out.js +14 -14
  54. package/packages/directive/module/draggable.js +42 -42
  55. package/packages/directive/module/line-clamp.js +22 -22
  56. package/packages/directive/module/prevent-click.js +18 -18
  57. package/packages/directive/module/resize.js +14 -14
  58. package/packages/directive/module/ripple.js +166 -166
  59. package/packages/index.js +39 -39
  60. package/packages/mixin/index.js +86 -86
  61. package/packages/other/sh-cron-modal/components/cron-content.vue +294 -294
  62. package/packages/other/sh-cron-modal/index.vue +81 -81
  63. package/packages/other/sh-cron-modal/mixin/cron-emits.js +1 -1
  64. package/packages/other/sh-cron-modal/mixin/cron-props.js +9 -9
  65. package/packages/other/sh-cron-modal/tabs/cron-week-box.vue +126 -126
  66. package/packages/other/sh-menu/index.vue +326 -326
  67. package/packages/other/sh-menu/menu-group-content.vue +136 -136
  68. package/packages/other/sh-menu/menu-item-content.vue +71 -71
  69. package/packages/other/sh-menu-card/index.vue +250 -250
  70. package/packages/other/sh-menu-card/menu-box.vue +87 -87
  71. package/packages/other/sh-preview/components/sh-excel.vue +163 -163
  72. package/packages/other/sh-preview/js/data-hook.js +41 -41
  73. package/packages/other/sh-preview/js/data-props.js +15 -15
  74. package/packages/other/sh-system-tip/index.vue +115 -115
  75. package/packages/utils/resize.js +69 -70
  76. package/packages/utils/transfer-queue.js +12 -12
  77. package/packages/vxeTable/index.js +193 -184
  78. package/packages/vxeTable/plugins/export.js +450 -450
  79. package/packages/vxeTable/render/cell/vxe-render-img.vue +27 -27
  80. package/packages/vxeTable/render/cell/vxe-render-table.vue +51 -51
  81. package/packages/vxeTable/render/cell/vxe-render-time.vue +44 -44
  82. package/packages/vxeTable/render/cell/vxe-render-tree.vue +70 -70
  83. package/packages/vxeTable/render/filters/vxe-filter-input.vue +26 -26
  84. package/packages/vxeTable/render/filters/vxe-filter-time.vue +26 -26
  85. package/packages/vxeTable/render/globalRenders.jsx +514 -514
  86. package/packages/vxeTable/render/mixin/cell-hooks.js +198 -198
  87. package/packages/vxeTable/render/mixin/cell-props.js +23 -23
  88. package/packages/vxeTable/render/mixin/filter-hooks.js +46 -46
  89. package/tsconfig.json +25 -0
  90. package/types/component.d.ts +1 -0
  91. package/types/index.ts +0 -0
@@ -1,148 +1,148 @@
1
- <template>
2
- <div class="sh-card" :class="classes">
3
- <div v-if="title || slots.title || slots.extra" class="sh-card-head" :style="styles">
4
- <slot name="head">
5
- <div v-if="title || slots.title" class="sh-card-head-title">
6
- <sh-icon v-if="icon" :type="icon" :size="iconSize" :color="color" class="sh-card-head-icon"></sh-icon>
7
- <slot name="title">{{ title }}</slot>
8
- </div>
9
- <div v-if="slots.extra" class="sh-card-head-extra"><slot name="extra"></slot></div>
10
- </slot>
11
- </div>
12
- <div v-if="slots.default" class="sh-card-body" :style="styles">
13
- <slot></slot>
14
- </div>
15
- <div v-if="slots.foot" class="sh-card-foot" :style="styles">
16
- <slot name="foot"></slot>
17
- </div>
18
- </div>
19
- </template>
20
-
21
- <script>
22
- import { defineComponent, computed } from 'vue'
23
- export default defineComponent({
24
- name: 'ShCard',
25
- props: {
26
- border: {
27
- type: Boolean,
28
- default: true
29
- },
30
- shadow: {
31
- type: Boolean,
32
- default: false
33
- },
34
- padding: {
35
- type: Number,
36
- default: 10
37
- },
38
- title: {
39
- type: String
40
- },
41
- color: {
42
- type: String
43
- },
44
- icon: {
45
- type: String,
46
- default: ''
47
- },
48
- iconSize: {
49
- type: Number,
50
- default: 20
51
- },
52
- size: {
53
- type: String,
54
- default: 'default' // large / medium / small / mini
55
- }
56
- },
57
- setup(props, context) {
58
- const { slots } = context
59
-
60
- const classes = computed(() => {
61
- return {
62
- border: props.border,
63
- shadow: props.shadow,
64
- [props.size]: props.size
65
- }
66
- })
67
- const styles = computed(() => {
68
- return {
69
- padding: `${props.padding}px`
70
- }
71
- })
72
-
73
- return {
74
- classes,
75
- styles,
76
- slots
77
- }
78
- }
79
- })
80
- </script>
81
-
82
- <style lang="scss" scoped>
83
- @mixin layoutFlex {
84
- display: flex;
85
- width: 100%;
86
- align-items: center;
87
- flex-wrap: wrap;
88
- }
89
- .sh-card {
90
- display: block;
91
- border-radius: var(--vxe-border-radius);
92
- background-color: var(--vxe-table-body-background-color);
93
- .sh-card-head {
94
- @include layoutFlex;
95
- .sh-card-head-title {
96
- flex: 1;
97
- display: block;
98
- overflow: hidden;
99
- text-overflow: ellipsis;
100
- white-space: nowrap;
101
- .sh-card-head-icon {
102
- margin-right: 10px;
103
- color: var(--vxe-primary-color);
104
- }
105
- }
106
- .sh-card-head-extra {
107
- @include layoutFlex;
108
- flex: 0;
109
- display: inline-flex;
110
- white-space: nowrap;
111
- }
112
- }
113
- .sh-card-body {
114
- display: block;
115
- border-top: 1px solid var(--vxe-table-border-color);
116
- }
117
- .sh-card-foot {
118
- @include layoutFlex;
119
- border-top: 1px solid var(--vxe-table-border-color);
120
- }
121
- &.large {
122
- .sh-card-head .sh-card-head-title {
123
- font-size: 1.2rem;
124
- }
125
- }
126
- &.medium {
127
- .sh-card-head .sh-card-head-title {
128
- font-size: 1rem;
129
- }
130
- }
131
- &.small {
132
- .sh-card-head .sh-card-head-title {
133
- font-size: 0.9285rem;
134
- }
135
- }
136
- &.mini {
137
- .sh-card-head .sh-card-head-title {
138
- font-size: 0.8571rem;
139
- }
140
- }
141
- &.border {
142
- border: 1px solid var(--vxe-table-border-color);
143
- }
144
- &.shadow {
145
- box-shadow: var(--box-shadow);
146
- }
147
- }
148
- </style>
1
+ <template>
2
+ <div class="sh-card" :class="classes">
3
+ <div v-if="title || slots.title || slots.extra" class="sh-card-head" :style="styles">
4
+ <slot name="head">
5
+ <div v-if="title || slots.title" class="sh-card-head-title">
6
+ <sh-icon v-if="icon" :type="icon" :size="iconSize" :color="color" class="sh-card-head-icon"></sh-icon>
7
+ <slot name="title">{{ title }}</slot>
8
+ </div>
9
+ <div v-if="slots.extra" class="sh-card-head-extra"><slot name="extra"></slot></div>
10
+ </slot>
11
+ </div>
12
+ <div v-if="slots.default" class="sh-card-body" :style="styles">
13
+ <slot></slot>
14
+ </div>
15
+ <div v-if="slots.foot" class="sh-card-foot" :style="styles">
16
+ <slot name="foot"></slot>
17
+ </div>
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ import { defineComponent, computed } from 'vue'
23
+ export default defineComponent({
24
+ name: 'ShCard',
25
+ props: {
26
+ border: {
27
+ type: Boolean,
28
+ default: true
29
+ },
30
+ shadow: {
31
+ type: Boolean,
32
+ default: false
33
+ },
34
+ padding: {
35
+ type: Number,
36
+ default: 10
37
+ },
38
+ title: {
39
+ type: String
40
+ },
41
+ color: {
42
+ type: String
43
+ },
44
+ icon: {
45
+ type: String,
46
+ default: ''
47
+ },
48
+ iconSize: {
49
+ type: Number,
50
+ default: 20
51
+ },
52
+ size: {
53
+ type: String,
54
+ default: 'default' // large / medium / small / mini
55
+ }
56
+ },
57
+ setup(props, context) {
58
+ const { slots } = context
59
+
60
+ const classes = computed(() => {
61
+ return {
62
+ border: props.border,
63
+ shadow: props.shadow,
64
+ [props.size]: props.size
65
+ }
66
+ })
67
+ const styles = computed(() => {
68
+ return {
69
+ padding: `${props.padding}px`
70
+ }
71
+ })
72
+
73
+ return {
74
+ classes,
75
+ styles,
76
+ slots
77
+ }
78
+ }
79
+ })
80
+ </script>
81
+
82
+ <style lang="scss" scoped>
83
+ @mixin layoutFlex {
84
+ display: flex;
85
+ width: 100%;
86
+ align-items: center;
87
+ flex-wrap: wrap;
88
+ }
89
+ .sh-card {
90
+ display: block;
91
+ border-radius: var(--vxe-border-radius);
92
+ background-color: var(--vxe-table-body-background-color);
93
+ .sh-card-head {
94
+ @include layoutFlex;
95
+ .sh-card-head-title {
96
+ flex: 1;
97
+ display: block;
98
+ overflow: hidden;
99
+ text-overflow: ellipsis;
100
+ white-space: nowrap;
101
+ .sh-card-head-icon {
102
+ margin-right: 10px;
103
+ color: var(--vxe-primary-color);
104
+ }
105
+ }
106
+ .sh-card-head-extra {
107
+ @include layoutFlex;
108
+ flex: 0;
109
+ display: inline-flex;
110
+ white-space: nowrap;
111
+ }
112
+ }
113
+ .sh-card-body {
114
+ display: block;
115
+ border-top: 1px solid var(--vxe-table-border-color);
116
+ }
117
+ .sh-card-foot {
118
+ @include layoutFlex;
119
+ border-top: 1px solid var(--vxe-table-border-color);
120
+ }
121
+ &.large {
122
+ .sh-card-head .sh-card-head-title {
123
+ font-size: 1.2rem;
124
+ }
125
+ }
126
+ &.medium {
127
+ .sh-card-head .sh-card-head-title {
128
+ font-size: 1rem;
129
+ }
130
+ }
131
+ &.small {
132
+ .sh-card-head .sh-card-head-title {
133
+ font-size: 0.9285rem;
134
+ }
135
+ }
136
+ &.mini {
137
+ .sh-card-head .sh-card-head-title {
138
+ font-size: 0.8571rem;
139
+ }
140
+ }
141
+ &.border {
142
+ border: 1px solid var(--vxe-table-border-color);
143
+ }
144
+ &.shadow {
145
+ box-shadow: var(--box-shadow);
146
+ }
147
+ }
148
+ </style>
@@ -80,8 +80,8 @@ export default defineComponent({
80
80
  setup(props, context) {
81
81
  const { emit } = context
82
82
 
83
- const codeEditor = ref(null)
84
- const codeLength = ref(0)
83
+ let codeEditor = null
84
+ let codeLength = 0
85
85
  const codeError = ref(null)
86
86
  const codeRef = ref()
87
87
 
@@ -94,7 +94,7 @@ export default defineComponent({
94
94
  })
95
95
  const codeExtensions = computed(() => {
96
96
  const { mode, disabled, multipleSelection, indent, theme, tab, wrap, extensions } = props
97
- let defaultExtensions = [basicSetup, history(), drawSelection(), lineNumbers(), placeholder(props.placeholder), keymap.of([...defaultKeymap, ...historyKeymap])]
97
+ const defaultExtensions = [basicSetup, history(), drawSelection(), lineNumbers(), placeholder(props.placeholder), keymap.of([...defaultKeymap, ...historyKeymap])]
98
98
  if (['javascript', 'js'].includes(mode.toLowerCase())) {
99
99
  defaultExtensions.push(javascript())
100
100
  } else if (['mysql', 'sql'].includes(mode.toLowerCase())) {
@@ -119,22 +119,22 @@ export default defineComponent({
119
119
  watch(
120
120
  () => props.modelValue,
121
121
  value => {
122
- if (codeEditor.value && !codeEditor.value.composing) {
123
- let docLength = codeEditor.value.state.doc.length
124
- let docValue = getTransformValue(value)
125
- codeEditor.value.dispatch({
122
+ if (codeEditor && !codeEditor.composing) {
123
+ const docLength = codeEditor.state.doc.length
124
+ const docValue = getTransformValue(value)
125
+ codeEditor.dispatch({
126
126
  changes: { from: 0, to: docLength, insert: docValue },
127
- selection: codeEditor.value.state.selection,
127
+ selection: codeEditor.state.selection,
128
128
  scrollIntoView: true
129
129
  })
130
- codeLength.value = docLength
130
+ codeLength = docLength
131
131
  }
132
132
  }
133
133
  )
134
134
  watch(
135
135
  () => props.codeExtensions,
136
136
  value => {
137
- codeEditor.value?.dispatch({
137
+ codeEditor?.dispatch({
138
138
  effects: StateEffect.reconfigure.of(value)
139
139
  })
140
140
  },
@@ -144,12 +144,12 @@ export default defineComponent({
144
144
  )
145
145
 
146
146
  const codeRender = async () => {
147
- let docValue = getTransformValue(props.modelValue)
148
- let codeState = EditorState.create({
147
+ const docValue = getTransformValue(props.modelValue)
148
+ const codeState = EditorState.create({
149
149
  doc: docValue,
150
150
  extensions: codeExtensions.value
151
151
  })
152
- codeEditor.value = new EditorView({
152
+ codeEditor = new EditorView({
153
153
  parent: codeRef.value,
154
154
  state: codeState
155
155
  })
@@ -158,7 +158,7 @@ export default defineComponent({
158
158
  }
159
159
 
160
160
  const focusListener = (state, focusing) => {
161
- let valueStr = state.doc.toString()
161
+ const valueStr = state.doc.toString()
162
162
  if (focusing) {
163
163
  dispatchEvent('focus', valueStr)
164
164
  } else {
@@ -169,12 +169,12 @@ export default defineComponent({
169
169
 
170
170
  const updateListener = async ({ state, changes, docChanged }) => {
171
171
  if (changes.empty || !docChanged) return
172
- let valueStr = state.doc.toString()
172
+ const valueStr = state.doc.toString()
173
173
  dispatchEvent('change', valueStr)
174
174
  }
175
175
 
176
176
  const focus = () => {
177
- codeEditor.value && codeEditor.value.focus()
177
+ codeEditor && codeEditor.focus()
178
178
  }
179
179
 
180
180
  const getTransformValue = (value, out) => {
@@ -195,7 +195,7 @@ export default defineComponent({
195
195
  }
196
196
 
197
197
  const dispatchValue = value => {
198
- let outValue = getTransformValue(value, true)
198
+ const outValue = getTransformValue(value, true)
199
199
  if (codeError.value) return
200
200
  emit('update:modelValue', outValue)
201
201
  }
@@ -206,14 +206,14 @@ export default defineComponent({
206
206
  outValue = getTransformValue(value, true)
207
207
  if (codeError.value) return
208
208
  }
209
- emit(type, { $event: codeEditor.value, value: outValue || value })
209
+ emit(type, { $event: codeEditor, value: outValue || value })
210
210
  }
211
211
 
212
212
  onMounted(() => {
213
213
  codeRender()
214
214
  })
215
215
  onUnmounted(() => {
216
- if (codeEditor.value) codeEditor.value.destroy()
216
+ if (codeEditor) codeEditor.destroy()
217
217
  dispatchEvent('destroy', props.modelValue)
218
218
  })
219
219
 
@@ -1,92 +1,92 @@
1
- <template>
2
- <div :class="classes" :style="styles">
3
- <slot></slot>
4
- </div>
5
- </template>
6
-
7
- <script>
8
- import { defineComponent, computed, inject } from 'vue'
9
- import './css/index.scss'
10
- export default defineComponent({
11
- name: 'ShCol',
12
- props: {
13
- span: [Number, String],
14
- order: [Number, String],
15
- offset: [Number, String],
16
- push: [Number, String],
17
- pull: [Number, String],
18
- xs: [Number, Object],
19
- sm: [Number, Object],
20
- md: [Number, Object],
21
- lg: [Number, Object],
22
- xl: [Number, Object],
23
- xxl: [Number, Object],
24
- flex: {
25
- type: [Number, String],
26
- default: ''
27
- }
28
- },
29
- setup(props, context) {
30
- const prefixCls = 'sh-col'
31
- const RowInstance = inject('RowInstance')
32
-
33
- const gutter = computed(() => {
34
- return RowInstance?.gutter || 0
35
- })
36
- const classes = computed(() => {
37
- let classList = [
38
- `${prefixCls}`,
39
- {
40
- [`${prefixCls}-span-${props.span}`]: props.span,
41
- [`${prefixCls}-order-${props.order}`]: props.order,
42
- [`${prefixCls}-offset-${props.offset}`]: props.offset,
43
- [`${prefixCls}-push-${props.push}`]: props.push,
44
- [`${prefixCls}-pull-${props.pull}`]: props.pull
45
- }
46
- ]
47
- let sizeList = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl']
48
- sizeList.forEach(size => {
49
- if (typeof props[size] === 'number') {
50
- classList.push(`${prefixCls}-span-${size}-${props[size]}`)
51
- } else if (typeof props[size] === 'object') {
52
- let sizeProps = props[size]
53
- Object.keys(sizeProps).forEach(sizeprop => {
54
- classList.push(`${prefixCls}-${size}-${sizeprop}-${sizeProps[sizeprop]}`)
55
- })
56
- }
57
- })
58
- return classList
59
- })
60
- const styles = computed(() => {
61
- let style = {}
62
- if (gutter.value !== 0) {
63
- style = {
64
- paddingLeft: gutter.value / 2 + 'px',
65
- paddingRight: gutter.value / 2 + 'px'
66
- }
67
- }
68
- if (props.flex) {
69
- style.flex = parseFlex(props.flex)
70
- }
71
- return style
72
- })
73
-
74
- const parseFlex = flex => {
75
- if (typeof flex === 'number') {
76
- return `${flex} ${flex} auto`
77
- }
78
- if (/^\d+(\.\d+)?(px|em|rem|%)$/.test(flex)) {
79
- return `0 0 ${flex}`
80
- }
81
- return flex
82
- }
83
-
84
- return {
85
- classes,
86
- styles
87
- }
88
- }
89
- })
90
- </script>
91
-
92
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <div :class="classes" :style="styles">
3
+ <slot></slot>
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ import { defineComponent, computed, inject } from 'vue'
9
+ import './css/index.scss'
10
+ export default defineComponent({
11
+ name: 'ShCol',
12
+ props: {
13
+ span: [Number, String],
14
+ order: [Number, String],
15
+ offset: [Number, String],
16
+ push: [Number, String],
17
+ pull: [Number, String],
18
+ xs: [Number, Object],
19
+ sm: [Number, Object],
20
+ md: [Number, Object],
21
+ lg: [Number, Object],
22
+ xl: [Number, Object],
23
+ xxl: [Number, Object],
24
+ flex: {
25
+ type: [Number, String],
26
+ default: ''
27
+ }
28
+ },
29
+ setup(props, context) {
30
+ const prefixCls = 'sh-col'
31
+ const RowInstance = inject('RowInstance')
32
+
33
+ const gutter = computed(() => {
34
+ return RowInstance?.gutter || 0
35
+ })
36
+ const classes = computed(() => {
37
+ let classList = [
38
+ `${prefixCls}`,
39
+ {
40
+ [`${prefixCls}-span-${props.span}`]: props.span,
41
+ [`${prefixCls}-order-${props.order}`]: props.order,
42
+ [`${prefixCls}-offset-${props.offset}`]: props.offset,
43
+ [`${prefixCls}-push-${props.push}`]: props.push,
44
+ [`${prefixCls}-pull-${props.pull}`]: props.pull
45
+ }
46
+ ]
47
+ let sizeList = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl']
48
+ sizeList.forEach(size => {
49
+ if (typeof props[size] === 'number') {
50
+ classList.push(`${prefixCls}-span-${size}-${props[size]}`)
51
+ } else if (typeof props[size] === 'object') {
52
+ let sizeProps = props[size]
53
+ Object.keys(sizeProps).forEach(sizeprop => {
54
+ classList.push(`${prefixCls}-${size}-${sizeprop}-${sizeProps[sizeprop]}`)
55
+ })
56
+ }
57
+ })
58
+ return classList
59
+ })
60
+ const styles = computed(() => {
61
+ let style = {}
62
+ if (gutter.value !== 0) {
63
+ style = {
64
+ paddingLeft: gutter.value / 2 + 'px',
65
+ paddingRight: gutter.value / 2 + 'px'
66
+ }
67
+ }
68
+ if (props.flex) {
69
+ style.flex = parseFlex(props.flex)
70
+ }
71
+ return style
72
+ })
73
+
74
+ const parseFlex = flex => {
75
+ if (typeof flex === 'number') {
76
+ return `${flex} ${flex} auto`
77
+ }
78
+ if (/^\d+(\.\d+)?(px|em|rem|%)$/.test(flex)) {
79
+ return `0 0 ${flex}`
80
+ }
81
+ return flex
82
+ }
83
+
84
+ return {
85
+ classes,
86
+ styles
87
+ }
88
+ }
89
+ })
90
+ </script>
91
+
92
+ <style scoped lang="scss"></style>