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,326 +1,326 @@
1
- <template>
2
- <div class="sh-menu" :class="classes">
3
- <div v-clickout="handleOut" class="sh-menu-inner">
4
- <template v-for="(item, index) in options" :key="index">
5
- <menuGroupContent :menu-item="item" />
6
- </template>
7
- </div>
8
- </div>
9
- </template>
10
-
11
- <script>
12
- import { defineComponent, computed, provide, ref, reactive, getCurrentInstance, watch, onMounted } from 'vue'
13
- import menuGroupContent from './menu-group-content.vue'
14
- export default defineComponent({
15
- name: 'ShMenu',
16
- components: {
17
- menuGroupContent
18
- },
19
- props: {
20
- modelValue: {
21
- type: String
22
- },
23
- mode: {
24
- type: String,
25
- default: 'vertical' // horizontal
26
- },
27
- indent: {
28
- type: Number,
29
- default: 20
30
- },
31
- accordion: {
32
- type: Boolean,
33
- default: true
34
- },
35
- theme: {
36
- type: Boolean
37
- },
38
- fix: {
39
- type: Boolean
40
- },
41
- collapsed: {
42
- type: Boolean
43
- },
44
- defaultIcon: {
45
- type: Boolean
46
- },
47
- options: {
48
- type: Array,
49
- default() {
50
- return []
51
- }
52
- },
53
- labelField: {
54
- type: String,
55
- default: 'label'
56
- },
57
- labelFormat: {
58
- type: Function
59
- }
60
- },
61
- emits: ['update:modelValue', 'change', 'expand'],
62
- setup(props, context) {
63
- const { proxy } = getCurrentInstance()
64
- const { $vUtils } = proxy
65
- const { emit, slots } = context
66
-
67
- const activeName = ref(props.modelValue)
68
- const activeNames = ref([])
69
- const openedNames = ref([])
70
-
71
- const classes = computed(() => {
72
- return {
73
- theme: props.theme,
74
- fix: props.fix,
75
- collapsed: props.collapsed,
76
- [`${props.mode}`]: props.mode
77
- }
78
- })
79
-
80
- // 重新渲染菜单
81
- const resetMenu = () => {
82
- activeName.value = props.modelValue
83
- resetExpand(activeName.value, true)
84
- }
85
- const resetExpand = (menuName, mount) => {
86
- let setActiveNames = []
87
- let parentTree = $vUtils.searchTree(props.options, item => item.name === menuName)
88
- $vUtils.eachTree(parentTree, item => {
89
- setActiveNames.push(item.name)
90
- })
91
- if (mount) {
92
- activeNames.value = setActiveNames
93
- if (props.collapsed || props.mode !== 'vertical') return
94
- }
95
- // 过滤掉所有子节点
96
- let menuIndex = setActiveNames.findIndex(item => item === menuName)
97
- let parentNames = setActiveNames.filter((item, itemIndex) => menuIndex >= itemIndex)
98
- if (!props.accordion) parentNames = Array.from(new Set(openedNames.value.concat(parentNames)))
99
- openedNames.value = parentNames
100
- }
101
- const onMenuSelect = menu => {
102
- emit('update:modelValue', menu.name)
103
- emit('change', menu)
104
- handleOut()
105
- }
106
- const onMenuExpand = (expand, menu) => {
107
- emit('expand', expand, menu)
108
- if (!expand) {
109
- openedNames.value = openedNames.value.filter(name => name !== menu.name)
110
- return
111
- }
112
- resetExpand(menu.name)
113
- }
114
- const handleOut = () => {
115
- if (!props.collapsed && props.mode === 'vertical') return
116
- openedNames.value = []
117
- }
118
-
119
- provide(
120
- 'MenuInstance',
121
- reactive({
122
- props,
123
- activeName,
124
- activeNames,
125
- openedNames,
126
- onMenuSelect,
127
- onMenuExpand
128
- })
129
- )
130
-
131
- watch(
132
- () => props.modelValue,
133
- () => {
134
- resetMenu()
135
- }
136
- )
137
-
138
- onMounted(() => {
139
- resetMenu()
140
- })
141
-
142
- return {
143
- classes,
144
- handleOut
145
- }
146
- }
147
- })
148
- </script>
149
-
150
- <style lang="scss">
151
- $textColor: var(--vxe-font-color);
152
- $textActive: var(--vxe-primary-color);
153
- $mainBgColor: var(--vxe-table-body-background-color);
154
- $expandBgColor: var(--vxe-table-header-background-color);
155
-
156
- $textDkColor: hsla(0, 0%, 100%, 0.6);
157
- $textDkActive: #fff;
158
- $mainDkBgColor: var(--vxe-primary-color);
159
- $expandDkBgColor: var(--vxe-primary-darken-color);
160
- .sh-menu {
161
- position: relative;
162
- background-color: $mainBgColor;
163
- &.theme {
164
- background-color: $mainDkBgColor;
165
- .sh-menu-group {
166
- &.is__expand {
167
- background: $expandDkBgColor;
168
- & > .sh-menu-item {
169
- color: $textDkActive;
170
- }
171
- }
172
- &.is__active {
173
- & > .sh-menu-item {
174
- color: $textDkActive;
175
- }
176
- }
177
- & > .sh-menu-group-dropdown,
178
- & > .sh-menu-group-dropright {
179
- background-color: $mainDkBgColor;
180
- }
181
- }
182
- .sh-menu-item {
183
- color: $textDkColor;
184
- &:hover {
185
- color: $textDkActive;
186
- background: var(--vxe-primary-lighten-color) !important;
187
- }
188
- &.sh-menu-item-active {
189
- color: $textDkActive;
190
- background: var(--vxe-primary-lighten-color);
191
- &:after {
192
- background: $textDkColor;
193
- }
194
- }
195
- }
196
- }
197
- &.fix {
198
- position: fixed;
199
- top: 0;
200
- left: 0;
201
- right: 0;
202
- }
203
- &.horizontal {
204
- .sh-menu-inner {
205
- display: flex;
206
- align-items: center;
207
- height: 100%;
208
- }
209
- .sh-menu-item {
210
- height: 100%;
211
- &.sh-menu-item-active {
212
- &:after {
213
- width: 100%;
214
- height: 3px;
215
- top: auto;
216
- bottom: 0;
217
- }
218
- }
219
- &.sh-menu-item-level {
220
- .sh-menu-item-arrow {
221
- transform: rotate(90deg);
222
- transform-origin: center;
223
- }
224
- }
225
- }
226
- .sh-menu-group {
227
- height: 100%;
228
- &.is__expand {
229
- & > .sh-menu-item-level {
230
- .sh-menu-item-arrow {
231
- transform: rotate(-90deg);
232
- transform-origin: center;
233
- }
234
- }
235
- }
236
- }
237
- }
238
- &.collapsed {
239
- .sh-menu-item.sh-menu-item-level {
240
- flex-wrap: wrap;
241
- text-align: center;
242
- padding: 5px;
243
- &.sh-menu-item-active {
244
- &:after {
245
- display: none;
246
- }
247
- }
248
- .sh-menu-item-icon {
249
- margin-right: 0;
250
- margin-bottom: 3px;
251
- flex: 1;
252
- }
253
- .sh-menu-item-title {
254
- min-width: 100%;
255
- }
256
- }
257
- }
258
- .sh-menu-group {
259
- position: relative;
260
- &.is__expand {
261
- background: $expandBgColor;
262
- & > .sh-menu-item {
263
- color: $textActive;
264
- .sh-menu-item-arrow {
265
- transform: rotate(90deg);
266
- transform-origin: center;
267
- }
268
- }
269
- }
270
- &.is__active {
271
- & > .sh-menu-item {
272
- color: $textActive;
273
- }
274
- }
275
- & > .sh-menu-group-dropdown,
276
- & > .sh-menu-group-dropright {
277
- position: fixed;
278
- line-height: 1.5;
279
- background-color: $mainBgColor;
280
- box-shadow: var(--box-shadow);
281
- overflow: auto;
282
- z-index: 1000;
283
- }
284
- }
285
- .sh-menu-item {
286
- padding: 10px 12px;
287
- display: flex;
288
- align-items: center;
289
- justify-content: flex-start;
290
- cursor: pointer;
291
- position: relative;
292
- user-select: none;
293
- color: $textColor;
294
- text-align: left;
295
- &:hover {
296
- color: $textActive;
297
- }
298
- &.sh-menu-item-active {
299
- color: $textActive;
300
- background: var(--primary-weak-color);
301
- &:after {
302
- width: 3px;
303
- content: '';
304
- position: absolute;
305
- top: 0;
306
- right: 0;
307
- height: 100%;
308
- background: var(--vxe-primary-color);
309
- }
310
- }
311
- .sh-menu-item-icon {
312
- margin-right: 8px;
313
- }
314
- .sh-menu-item-title {
315
- flex: 1;
316
- white-space: nowrap;
317
- overflow: hidden;
318
- text-overflow: ellipsis;
319
- }
320
- .sh-menu-item-arrow {
321
- margin-left: 5px;
322
- transition: 0.1s all ease-in-out;
323
- }
324
- }
325
- }
326
- </style>
1
+ <template>
2
+ <div class="sh-menu" :class="classes">
3
+ <div v-clickout="handleOut" class="sh-menu-inner">
4
+ <template v-for="(item, index) in options" :key="index">
5
+ <menuGroupContent :menu-item="item" />
6
+ </template>
7
+ </div>
8
+ </div>
9
+ </template>
10
+
11
+ <script>
12
+ import { defineComponent, computed, provide, ref, reactive, getCurrentInstance, watch, onMounted } from 'vue'
13
+ import menuGroupContent from './menu-group-content.vue'
14
+ export default defineComponent({
15
+ name: 'ShMenu',
16
+ components: {
17
+ menuGroupContent
18
+ },
19
+ props: {
20
+ modelValue: {
21
+ type: String
22
+ },
23
+ mode: {
24
+ type: String,
25
+ default: 'vertical' // horizontal
26
+ },
27
+ indent: {
28
+ type: Number,
29
+ default: 20
30
+ },
31
+ accordion: {
32
+ type: Boolean,
33
+ default: true
34
+ },
35
+ theme: {
36
+ type: Boolean
37
+ },
38
+ fix: {
39
+ type: Boolean
40
+ },
41
+ collapsed: {
42
+ type: Boolean
43
+ },
44
+ defaultIcon: {
45
+ type: Boolean
46
+ },
47
+ options: {
48
+ type: Array,
49
+ default() {
50
+ return []
51
+ }
52
+ },
53
+ labelField: {
54
+ type: String,
55
+ default: 'label'
56
+ },
57
+ labelFormat: {
58
+ type: Function
59
+ }
60
+ },
61
+ emits: ['update:modelValue', 'change', 'expand'],
62
+ setup(props, context) {
63
+ const { proxy } = getCurrentInstance()
64
+ const { $vUtils } = proxy
65
+ const { emit, slots } = context
66
+
67
+ const activeName = ref(props.modelValue)
68
+ const activeNames = ref([])
69
+ const openedNames = ref([])
70
+
71
+ const classes = computed(() => {
72
+ return {
73
+ theme: props.theme,
74
+ fix: props.fix,
75
+ collapsed: props.collapsed,
76
+ [`${props.mode}`]: props.mode
77
+ }
78
+ })
79
+
80
+ // 重新渲染菜单
81
+ const resetMenu = () => {
82
+ activeName.value = props.modelValue
83
+ resetExpand(activeName.value, true)
84
+ }
85
+ const resetExpand = (menuName, mount) => {
86
+ let setActiveNames = []
87
+ let parentTree = $vUtils.searchTree(props.options, item => item.name === menuName)
88
+ $vUtils.eachTree(parentTree, item => {
89
+ setActiveNames.push(item.name)
90
+ })
91
+ if (mount) {
92
+ activeNames.value = setActiveNames
93
+ if (props.collapsed || props.mode !== 'vertical') return
94
+ }
95
+ // 过滤掉所有子节点
96
+ let menuIndex = setActiveNames.findIndex(item => item === menuName)
97
+ let parentNames = setActiveNames.filter((item, itemIndex) => menuIndex >= itemIndex)
98
+ if (!props.accordion) parentNames = Array.from(new Set(openedNames.value.concat(parentNames)))
99
+ openedNames.value = parentNames
100
+ }
101
+ const onMenuSelect = menu => {
102
+ emit('update:modelValue', menu.name)
103
+ emit('change', menu)
104
+ handleOut()
105
+ }
106
+ const onMenuExpand = (expand, menu) => {
107
+ emit('expand', expand, menu)
108
+ if (!expand) {
109
+ openedNames.value = openedNames.value.filter(name => name !== menu.name)
110
+ return
111
+ }
112
+ resetExpand(menu.name)
113
+ }
114
+ const handleOut = () => {
115
+ if (!props.collapsed && props.mode === 'vertical') return
116
+ openedNames.value = []
117
+ }
118
+
119
+ provide(
120
+ 'MenuInstance',
121
+ reactive({
122
+ props,
123
+ activeName,
124
+ activeNames,
125
+ openedNames,
126
+ onMenuSelect,
127
+ onMenuExpand
128
+ })
129
+ )
130
+
131
+ watch(
132
+ () => props.modelValue,
133
+ () => {
134
+ resetMenu()
135
+ }
136
+ )
137
+
138
+ onMounted(() => {
139
+ resetMenu()
140
+ })
141
+
142
+ return {
143
+ classes,
144
+ handleOut
145
+ }
146
+ }
147
+ })
148
+ </script>
149
+
150
+ <style lang="scss">
151
+ $textColor: var(--vxe-font-color);
152
+ $textActive: var(--vxe-primary-color);
153
+ $mainBgColor: var(--vxe-table-body-background-color);
154
+ $expandBgColor: var(--vxe-table-header-background-color);
155
+
156
+ $textDkColor: hsla(0, 0%, 100%, 0.6);
157
+ $textDkActive: #fff;
158
+ $mainDkBgColor: var(--vxe-primary-color);
159
+ $expandDkBgColor: var(--vxe-primary-darken-color);
160
+ .sh-menu {
161
+ position: relative;
162
+ background-color: $mainBgColor;
163
+ &.theme {
164
+ background-color: $mainDkBgColor;
165
+ .sh-menu-group {
166
+ &.is__expand {
167
+ background: $expandDkBgColor;
168
+ & > .sh-menu-item {
169
+ color: $textDkActive;
170
+ }
171
+ }
172
+ &.is__active {
173
+ & > .sh-menu-item {
174
+ color: $textDkActive;
175
+ }
176
+ }
177
+ & > .sh-menu-group-dropdown,
178
+ & > .sh-menu-group-dropright {
179
+ background-color: $mainDkBgColor;
180
+ }
181
+ }
182
+ .sh-menu-item {
183
+ color: $textDkColor;
184
+ &:hover {
185
+ color: $textDkActive;
186
+ background: var(--vxe-primary-lighten-color) !important;
187
+ }
188
+ &.sh-menu-item-active {
189
+ color: $textDkActive;
190
+ background: var(--vxe-primary-lighten-color);
191
+ &:after {
192
+ background: $textDkColor;
193
+ }
194
+ }
195
+ }
196
+ }
197
+ &.fix {
198
+ position: fixed;
199
+ top: 0;
200
+ left: 0;
201
+ right: 0;
202
+ }
203
+ &.horizontal {
204
+ .sh-menu-inner {
205
+ display: flex;
206
+ align-items: center;
207
+ height: 100%;
208
+ }
209
+ .sh-menu-item {
210
+ height: 100%;
211
+ &.sh-menu-item-active {
212
+ &:after {
213
+ width: 100%;
214
+ height: 3px;
215
+ top: auto;
216
+ bottom: 0;
217
+ }
218
+ }
219
+ &.sh-menu-item-level {
220
+ .sh-menu-item-arrow {
221
+ transform: rotate(90deg);
222
+ transform-origin: center;
223
+ }
224
+ }
225
+ }
226
+ .sh-menu-group {
227
+ height: 100%;
228
+ &.is__expand {
229
+ & > .sh-menu-item-level {
230
+ .sh-menu-item-arrow {
231
+ transform: rotate(-90deg);
232
+ transform-origin: center;
233
+ }
234
+ }
235
+ }
236
+ }
237
+ }
238
+ &.collapsed {
239
+ .sh-menu-item.sh-menu-item-level {
240
+ flex-wrap: wrap;
241
+ text-align: center;
242
+ padding: 5px;
243
+ &.sh-menu-item-active {
244
+ &:after {
245
+ display: none;
246
+ }
247
+ }
248
+ .sh-menu-item-icon {
249
+ margin-right: 0;
250
+ margin-bottom: 3px;
251
+ flex: 1;
252
+ }
253
+ .sh-menu-item-title {
254
+ min-width: 100%;
255
+ }
256
+ }
257
+ }
258
+ .sh-menu-group {
259
+ position: relative;
260
+ &.is__expand {
261
+ background: $expandBgColor;
262
+ & > .sh-menu-item {
263
+ color: $textActive;
264
+ .sh-menu-item-arrow {
265
+ transform: rotate(90deg);
266
+ transform-origin: center;
267
+ }
268
+ }
269
+ }
270
+ &.is__active {
271
+ & > .sh-menu-item {
272
+ color: $textActive;
273
+ }
274
+ }
275
+ & > .sh-menu-group-dropdown,
276
+ & > .sh-menu-group-dropright {
277
+ position: fixed;
278
+ line-height: 1.5;
279
+ background-color: $mainBgColor;
280
+ box-shadow: var(--box-shadow);
281
+ overflow: auto;
282
+ z-index: 1000;
283
+ }
284
+ }
285
+ .sh-menu-item {
286
+ padding: 10px 12px;
287
+ display: flex;
288
+ align-items: center;
289
+ justify-content: flex-start;
290
+ cursor: pointer;
291
+ position: relative;
292
+ user-select: none;
293
+ color: $textColor;
294
+ text-align: left;
295
+ &:hover {
296
+ color: $textActive;
297
+ }
298
+ &.sh-menu-item-active {
299
+ color: $textActive;
300
+ background: var(--primary-weak-color);
301
+ &:after {
302
+ width: 3px;
303
+ content: '';
304
+ position: absolute;
305
+ top: 0;
306
+ right: 0;
307
+ height: 100%;
308
+ background: var(--vxe-primary-color);
309
+ }
310
+ }
311
+ .sh-menu-item-icon {
312
+ margin-right: 8px;
313
+ }
314
+ .sh-menu-item-title {
315
+ flex: 1;
316
+ white-space: nowrap;
317
+ overflow: hidden;
318
+ text-overflow: ellipsis;
319
+ }
320
+ .sh-menu-item-arrow {
321
+ margin-left: 5px;
322
+ transition: 0.1s all ease-in-out;
323
+ }
324
+ }
325
+ }
326
+ </style>