@tongfun/tf-widget 0.1.21 → 0.1.22

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 (94) hide show
  1. package/README.md +49 -49
  2. package/lib/tf-widget.common.js +547 -503
  3. package/lib/tf-widget.css +1 -1
  4. package/lib/tf-widget.umd.js +547 -503
  5. package/lib/tf-widget.umd.min.js +4 -4
  6. package/package/svg-icon/index.js +8 -8
  7. package/package/svg-icon/src/SvgIcon.vue +59 -59
  8. package/package/t-data-list/index.js +6 -6
  9. package/package/t-data-list/main.vue +193 -193
  10. package/package/t-data-list/src/condition-input/basic.vue +31 -31
  11. package/package/t-data-list/src/condition-input/date.vue +106 -106
  12. package/package/t-data-list/src/condition-input/index.vue +100 -100
  13. package/package/t-data-list/src/condition-input/input.vue +31 -31
  14. package/package/t-data-list/src/condition-input/number.vue +115 -115
  15. package/package/t-data-list/src/condition-input/select.vue +86 -86
  16. package/package/t-data-list/src/js/fieldTypeEnum.js +10 -10
  17. package/package/t-data-list/src/js/operatorEnum.js +108 -108
  18. package/package/t-data-list/src/js/qureyParamsEnum.js +4 -4
  19. package/package/t-data-list/src/js/util.js +34 -34
  20. package/package/t-data-list/src/mixins/button-controll-mixin.js +93 -93
  21. package/package/t-data-list/src/pushdown/push-down.vue +158 -158
  22. package/package/t-data-list/src/t-list-search.vue +36 -36
  23. package/package/t-data-list/src/t-plan/condition-always-item.vue +143 -143
  24. package/package/t-data-list/src/t-plan/condition-mult-item.vue +222 -222
  25. package/package/t-data-list/src/t-plan/index.vue +195 -195
  26. package/package/t-data-list/src/t-plan/plan-content.vue +389 -389
  27. package/package/t-data-list/src/t-table/index.vue +129 -129
  28. package/package/t-data-list/src/t-table/table-group-item-edit.vue +238 -238
  29. package/package/t-data-list/src/t-table/table-group-item.vue +87 -87
  30. package/package/t-data-list/src/t-table/table-group.vue +180 -180
  31. package/package/t-data-list/src/t-table/table-records-header-popover.vue +246 -246
  32. package/package/t-data-list/src/t-table/table-records-selected.vue +159 -159
  33. package/package/t-data-list/src/t-table/table-records.vue +337 -337
  34. package/package/t-input/children/address.vue +101 -101
  35. package/package/t-input/children/basic-display.vue +41 -41
  36. package/package/t-input/children/basic.vue +253 -253
  37. package/package/t-input/children/date.vue +89 -89
  38. package/package/t-input/children/group-components/group-dialog.vue +344 -344
  39. package/package/t-input/children/group.vue +126 -126
  40. package/package/t-input/children/input.vue +72 -72
  41. package/package/t-input/children/number.vue +74 -74
  42. package/package/t-input/children/select.vue +89 -89
  43. package/package/t-input/children/tfile/fiile-enclosure.vue +233 -233
  44. package/package/t-input/index.js +7 -7
  45. package/package/t-input/index.vue +337 -337
  46. package/package/t-input/tInputCache.js +24 -24
  47. package/package/tf-icon-picker/README.md +7 -7
  48. package/package/tf-icon-picker/index.js +8 -8
  49. package/package/tf-icon-picker/src/tf-icon-picker.vue +266 -266
  50. package/package/tf-layout/README.md +115 -115
  51. package/package/tf-layout/index.js +8 -8
  52. package/package/tf-layout/src/components/tf-labelbar.vue +394 -394
  53. package/package/tf-layout/src/components/tf-menu.vue +180 -180
  54. package/package/tf-layout/src/components/tf-right-menu.vue +89 -89
  55. package/package/tf-layout/src/components/tf-rotate-box.vue +50 -50
  56. package/package/tf-layout/src/tf-layout.vue +140 -140
  57. package/package/tf-widget/index.js +8 -8
  58. package/package/tf-widget/src/assets/common-input.less +10 -10
  59. package/package/tf-widget/src/children/basic-data/basic-data.vue +361 -361
  60. package/package/tf-widget/src/children/basic-data/dependcy/basic-data-selector.vue +1087 -1087
  61. package/package/tf-widget/src/children/basic-data/dependcy/common-table.vue +750 -750
  62. package/package/tf-widget/src/children/basic-data/dependcy/condition-filter.vue +519 -519
  63. package/package/tf-widget/src/children/basic-data/dependcy/pagination.vue +93 -93
  64. package/package/tf-widget/src/children/basic-data/dependcy/table-control.vue +240 -240
  65. package/package/tf-widget/src/children/basic-data/dependcy/view-picture.vue +108 -108
  66. package/package/tf-widget/src/children/date-time.vue +103 -103
  67. package/package/tf-widget/src/children/date.vue +103 -103
  68. package/package/tf-widget/src/children/decimal.vue +115 -115
  69. package/package/tf-widget/src/children/integer.vue +104 -104
  70. package/package/tf-widget/src/children/property.vue +59 -59
  71. package/package/tf-widget/src/children/single-line-text.vue +82 -82
  72. package/package/tf-widget/src/children/small-pictures.vue +223 -223
  73. package/package/tf-widget/src/children/text-area.vue +74 -74
  74. package/package/tf-widget/src/children/tf-select.vue +113 -113
  75. package/package/tf-widget/src/tf-widget.vue +175 -175
  76. package/package.json +44 -44
  77. package/src/api/edit.js +97 -97
  78. package/src/api/file-enclosure.js +26 -26
  79. package/src/api/push-down.js +19 -19
  80. package/src/api/table.js +294 -294
  81. package/src/api/tableV3.js +166 -160
  82. package/src/assets/images/icons/index.js +9 -9
  83. package/src/assets/images/icons/svg/add.svg +5 -5
  84. package/src/assets/images/icons/svg/push-down.svg +1 -1
  85. package/src/assets/images/icons/svg/remove.svg +1 -1
  86. package/src/assets/styles/common-table.less +202 -202
  87. package/src/directives/debounce.js +24 -24
  88. package/src/index.js +31 -31
  89. package/src/mixins/t-data-query-mixin.js +290 -290
  90. package/src/utils/auth.js +22 -22
  91. package/src/utils/request.js +42 -42
  92. package/src/utils/stato-anormale.js +59 -59
  93. package/src/utils/utils.js +109 -109
  94. package/src/utils/validate.js +84 -84
@@ -1,180 +1,180 @@
1
- <template>
2
- <div
3
- v-show="!menuState"
4
- class="tf-menu"
5
- :style="{ width: isCollapse ? '64px' : '175px' }"
6
- >
7
- <el-scrollbar class="tf-menu-scroll">
8
- <el-menu
9
- :collapse="isCollapse"
10
- :default-active="activePath"
11
- class="tf-menu-content"
12
- background-color="#001529"
13
- text-color="#919398"
14
- active-text-color="#ffffff"
15
- :router="true"
16
- :style="{ width: isCollapse ? '64px' : '175px' }"
17
- >
18
- <template v-for="firstMenuItem in menusInfo">
19
- <el-submenu
20
- v-if="firstMenuItem.childNode"
21
- :key="firstMenuItem.path"
22
- :index="firstMenuItem.path"
23
- >
24
- <template slot="title">
25
- <svg-icon
26
- :icon-class="firstMenuItem.icon"
27
- style="height: 15px; width: 15px; margin-right: 10px"
28
- />
29
- <span>{{ firstMenuItem.title }}</span>
30
- </template>
31
- <el-menu-item
32
- v-for="secondMenuItem in firstMenuItem.childNode"
33
- :key="secondMenuItem.path"
34
- :index="secondMenuItem.path"
35
- >
36
- <svg-icon
37
- :icon-class="secondMenuItem.icon"
38
- style="height: 15px; width: 15px; margin-right: 10px"
39
- />
40
- <span>{{ secondMenuItem.title }}</span>
41
- </el-menu-item>
42
- </el-submenu>
43
- <el-menu-item
44
- v-else
45
- :key="firstMenuItem.path"
46
- :index="firstMenuItem.path"
47
- >
48
- <svg-icon
49
- :icon-class="firstMenuItem.icon"
50
- style="height: 15px; width: 15px; margin-right: 10px"
51
- />
52
- <span slot="title">{{ firstMenuItem.title }}</span>
53
- </el-menu-item>
54
- </template>
55
- </el-menu>
56
- </el-scrollbar>
57
- <div
58
- class="bottom-menu"
59
- :style="{ transform: isCollapse ? 'rotate(0deg)' : 'rotate(180deg)' }"
60
- @click="isCollapse = !isCollapse"
61
- >
62
- <img
63
- src="data:image/png;base64,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"
64
- alt=""
65
- >
66
- </div>
67
- </div>
68
- </template>
69
-
70
- <script>
71
- export default {
72
- name: 'TfMenu',
73
- props: {
74
- menusInfo: {
75
- type: Array,
76
- default: function () {
77
- return []
78
- }
79
- },
80
- menuState: {
81
- default: false,
82
- type: Boolean
83
- }
84
- },
85
- data () {
86
- return {
87
- isCollapse: false,
88
- activePath: null
89
- }
90
- },
91
- watch: {
92
- '$route.path': {
93
- handler: function (params) {
94
- if (params) this.activePath = params
95
- },
96
- deep: true,
97
- immediate: true
98
- }
99
- }
100
- }
101
- </script>
102
-
103
- <style lang="less" scoped>
104
- .tf-menu {
105
- height: 100%;
106
- background: #001529;
107
- transition: width 0.3s ease-in-out;
108
- /deep/.tf-menu-content {
109
- transition: width 0.3s ease-in-out;
110
- border-right: none !important;
111
- .el-menu--collapse {
112
- width: 64px !important;
113
- .el-submenu .el-menu-item {
114
- height: 40px;
115
- width: 175px;
116
- }
117
- }
118
- .el-submenu .el-menu-item {
119
-
120
- transition: width 0.3s;
121
- height: 40px;
122
- width: 175px;
123
- }
124
- .el-menu-item,
125
- .el-submenu__title {
126
- transition: width 0.3s !important;
127
- display:flex;
128
- align-items: center;
129
- height: 40px;
130
- line-height: 40px;
131
- &:hover {
132
- background: #0361a4 !important;
133
- }
134
- span {
135
- margin-left: 5px;
136
- }
137
- }
138
- .is-active {
139
- transition: width 0.3s !important;
140
-
141
- background: #0361a4 !important;
142
- }
143
- margin-bottom: 10px;
144
- }
145
- .tf-menu-scroll {
146
- height: calc(100vh - 200px);
147
- width: 100%;
148
- }
149
- /deep/.el-scrollbar__wrap {
150
- overflow-x: hidden;
151
- }
152
- .bottom-menu {
153
- width: 100%;
154
- height: 60px;
155
- display: flex;
156
- align-items: center;
157
- justify-content: center;
158
- img {
159
- width: 20px;
160
- height: 20px;
161
- transition: all 0.3s;
162
- }
163
- }
164
- }
165
- </style>
166
- <style lang="less">
167
- .el-menu--vertical {
168
- .el-menu--collapse .el-menu .el-submenu,
169
- .el-menu--popup {
170
- min-width: 175px;
171
- .el-menu-item {
172
- height: 40px;
173
- line-height: 40px;
174
- &:hover {
175
- background: #0361a4 !important;
176
- }
177
- }
178
- }
179
- }
180
- </style>
1
+ <template>
2
+ <div
3
+ v-show="!menuState"
4
+ class="tf-menu"
5
+ :style="{ width: isCollapse ? '64px' : '175px' }"
6
+ >
7
+ <el-scrollbar class="tf-menu-scroll">
8
+ <el-menu
9
+ :collapse="isCollapse"
10
+ :default-active="activePath"
11
+ class="tf-menu-content"
12
+ background-color="#001529"
13
+ text-color="#919398"
14
+ active-text-color="#ffffff"
15
+ :router="true"
16
+ :style="{ width: isCollapse ? '64px' : '175px' }"
17
+ >
18
+ <template v-for="firstMenuItem in menusInfo">
19
+ <el-submenu
20
+ v-if="firstMenuItem.childNode"
21
+ :key="firstMenuItem.path"
22
+ :index="firstMenuItem.path"
23
+ >
24
+ <template slot="title">
25
+ <svg-icon
26
+ :icon-class="firstMenuItem.icon"
27
+ style="height: 15px; width: 15px; margin-right: 10px"
28
+ />
29
+ <span>{{ firstMenuItem.title }}</span>
30
+ </template>
31
+ <el-menu-item
32
+ v-for="secondMenuItem in firstMenuItem.childNode"
33
+ :key="secondMenuItem.path"
34
+ :index="secondMenuItem.path"
35
+ >
36
+ <svg-icon
37
+ :icon-class="secondMenuItem.icon"
38
+ style="height: 15px; width: 15px; margin-right: 10px"
39
+ />
40
+ <span>{{ secondMenuItem.title }}</span>
41
+ </el-menu-item>
42
+ </el-submenu>
43
+ <el-menu-item
44
+ v-else
45
+ :key="firstMenuItem.path"
46
+ :index="firstMenuItem.path"
47
+ >
48
+ <svg-icon
49
+ :icon-class="firstMenuItem.icon"
50
+ style="height: 15px; width: 15px; margin-right: 10px"
51
+ />
52
+ <span slot="title">{{ firstMenuItem.title }}</span>
53
+ </el-menu-item>
54
+ </template>
55
+ </el-menu>
56
+ </el-scrollbar>
57
+ <div
58
+ class="bottom-menu"
59
+ :style="{ transform: isCollapse ? 'rotate(0deg)' : 'rotate(180deg)' }"
60
+ @click="isCollapse = !isCollapse"
61
+ >
62
+ <img
63
+ src="data:image/png;base64,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"
64
+ alt=""
65
+ >
66
+ </div>
67
+ </div>
68
+ </template>
69
+
70
+ <script>
71
+ export default {
72
+ name: 'TfMenu',
73
+ props: {
74
+ menusInfo: {
75
+ type: Array,
76
+ default: function () {
77
+ return []
78
+ }
79
+ },
80
+ menuState: {
81
+ default: false,
82
+ type: Boolean
83
+ }
84
+ },
85
+ data () {
86
+ return {
87
+ isCollapse: false,
88
+ activePath: null
89
+ }
90
+ },
91
+ watch: {
92
+ '$route.path': {
93
+ handler: function (params) {
94
+ if (params) this.activePath = params
95
+ },
96
+ deep: true,
97
+ immediate: true
98
+ }
99
+ }
100
+ }
101
+ </script>
102
+
103
+ <style lang="less" scoped>
104
+ .tf-menu {
105
+ height: 100%;
106
+ background: #001529;
107
+ transition: width 0.3s ease-in-out;
108
+ /deep/.tf-menu-content {
109
+ transition: width 0.3s ease-in-out;
110
+ border-right: none !important;
111
+ .el-menu--collapse {
112
+ width: 64px !important;
113
+ .el-submenu .el-menu-item {
114
+ height: 40px;
115
+ width: 175px;
116
+ }
117
+ }
118
+ .el-submenu .el-menu-item {
119
+
120
+ transition: width 0.3s;
121
+ height: 40px;
122
+ width: 175px;
123
+ }
124
+ .el-menu-item,
125
+ .el-submenu__title {
126
+ transition: width 0.3s !important;
127
+ display:flex;
128
+ align-items: center;
129
+ height: 40px;
130
+ line-height: 40px;
131
+ &:hover {
132
+ background: #0361a4 !important;
133
+ }
134
+ span {
135
+ margin-left: 5px;
136
+ }
137
+ }
138
+ .is-active {
139
+ transition: width 0.3s !important;
140
+
141
+ background: #0361a4 !important;
142
+ }
143
+ margin-bottom: 10px;
144
+ }
145
+ .tf-menu-scroll {
146
+ height: calc(100vh - 200px);
147
+ width: 100%;
148
+ }
149
+ /deep/.el-scrollbar__wrap {
150
+ overflow-x: hidden;
151
+ }
152
+ .bottom-menu {
153
+ width: 100%;
154
+ height: 60px;
155
+ display: flex;
156
+ align-items: center;
157
+ justify-content: center;
158
+ img {
159
+ width: 20px;
160
+ height: 20px;
161
+ transition: all 0.3s;
162
+ }
163
+ }
164
+ }
165
+ </style>
166
+ <style lang="less">
167
+ .el-menu--vertical {
168
+ .el-menu--collapse .el-menu .el-submenu,
169
+ .el-menu--popup {
170
+ min-width: 175px;
171
+ .el-menu-item {
172
+ height: 40px;
173
+ line-height: 40px;
174
+ &:hover {
175
+ background: #0361a4 !important;
176
+ }
177
+ }
178
+ }
179
+ }
180
+ </style>
@@ -1,89 +1,89 @@
1
- <template>
2
- <div
3
- v-show="showMenu"
4
- class="tf-right-menu"
5
- :style="{ top: top + 'px', left: left + 'px' }"
6
- >
7
- <p @click="rightMenuClick('closeLeft')">
8
- <i class="el-icon-back" /> 关闭左侧
9
- </p>
10
- <p @click="rightMenuClick('closeRight')">
11
- <i class="el-icon-right" /> 关闭右侧
12
- </p>
13
- <p @click="rightMenuClick('closeOther')">
14
- <i class="el-icon-circle-close" /> 关闭其他
15
- </p>
16
- <p @click="rightMenuClick('closeAll')">
17
- <i class="el-icon-circle-close" /> 全部关闭
18
- </p>
19
- </div>
20
- </template>
21
-
22
- <script>
23
- export default {
24
- props: {
25
- top: {
26
- default: 0,
27
- type: Number
28
- },
29
- left: {
30
- default: 0,
31
- type: Number
32
- },
33
- showMenu: {
34
- type: Boolean,
35
- default: false
36
- }
37
- },
38
- methods: {
39
- /**
40
- * @description 右键点击事件
41
- */
42
- rightMenuClick (params) {
43
- this.$emit('rightMenuClick', params)
44
- }
45
- }
46
- }
47
- </script>
48
-
49
- <style lang="less" scoped>
50
- .tf-right-menu {
51
- position: fixed;
52
- z-index: 9999;
53
- width: 120px;
54
- height: 166px;
55
- background: white;
56
- box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
57
- border-radius: 4px;
58
- box-sizing: border-box;
59
- padding: 10px 0;
60
- p {
61
- cursor: pointer;
62
- height: 36px;
63
- margin: 0;
64
- font-size: 14px;
65
- display: flex;
66
- align-items: center;
67
- justify-content: space-between;
68
- box-sizing: border-box;
69
- padding: 0 20px;
70
- color: #606266;
71
- &:hover {
72
- background: #ecf5ff;
73
- color: #46a6ff;
74
- }
75
- }
76
- &::before {
77
- content: "";
78
- position: absolute;
79
- width: 12px;
80
- height: 6px;
81
- top: -6px;
82
- right: 10px;
83
- background: white;
84
- clip-path: polygon(50% 0px, 100% 100%, 0px 100%);
85
- box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
86
- border-radius: 1px;
87
- }
88
- }
89
- </style>
1
+ <template>
2
+ <div
3
+ v-show="showMenu"
4
+ class="tf-right-menu"
5
+ :style="{ top: top + 'px', left: left + 'px' }"
6
+ >
7
+ <p @click="rightMenuClick('closeLeft')">
8
+ <i class="el-icon-back" /> 关闭左侧
9
+ </p>
10
+ <p @click="rightMenuClick('closeRight')">
11
+ <i class="el-icon-right" /> 关闭右侧
12
+ </p>
13
+ <p @click="rightMenuClick('closeOther')">
14
+ <i class="el-icon-circle-close" /> 关闭其他
15
+ </p>
16
+ <p @click="rightMenuClick('closeAll')">
17
+ <i class="el-icon-circle-close" /> 全部关闭
18
+ </p>
19
+ </div>
20
+ </template>
21
+
22
+ <script>
23
+ export default {
24
+ props: {
25
+ top: {
26
+ default: 0,
27
+ type: Number
28
+ },
29
+ left: {
30
+ default: 0,
31
+ type: Number
32
+ },
33
+ showMenu: {
34
+ type: Boolean,
35
+ default: false
36
+ }
37
+ },
38
+ methods: {
39
+ /**
40
+ * @description 右键点击事件
41
+ */
42
+ rightMenuClick (params) {
43
+ this.$emit('rightMenuClick', params)
44
+ }
45
+ }
46
+ }
47
+ </script>
48
+
49
+ <style lang="less" scoped>
50
+ .tf-right-menu {
51
+ position: fixed;
52
+ z-index: 9999;
53
+ width: 120px;
54
+ height: 166px;
55
+ background: white;
56
+ box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
57
+ border-radius: 4px;
58
+ box-sizing: border-box;
59
+ padding: 10px 0;
60
+ p {
61
+ cursor: pointer;
62
+ height: 36px;
63
+ margin: 0;
64
+ font-size: 14px;
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: space-between;
68
+ box-sizing: border-box;
69
+ padding: 0 20px;
70
+ color: #606266;
71
+ &:hover {
72
+ background: #ecf5ff;
73
+ color: #46a6ff;
74
+ }
75
+ }
76
+ &::before {
77
+ content: "";
78
+ position: absolute;
79
+ width: 12px;
80
+ height: 6px;
81
+ top: -6px;
82
+ right: 10px;
83
+ background: white;
84
+ clip-path: polygon(50% 0px, 100% 100%, 0px 100%);
85
+ box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
86
+ border-radius: 1px;
87
+ }
88
+ }
89
+ </style>
@@ -1,50 +1,50 @@
1
- <template>
2
- <div class="tf-rotate-box">
3
- <span class="close">
4
- <i />
5
- <i />
6
- <i />
7
- <i />
8
- </span>
9
- </div>
10
- </template>
11
-
12
- <script>
13
- export default {}
14
- </script>
15
-
16
- <style lang="less" scoped>
17
- .tf-rotate-box {
18
- display: flex;
19
- align-items: center;
20
- justify-content: center;
21
- .close {
22
- width: 14px;
23
- height: 14px;
24
- display: flex;
25
- flex-wrap: wrap;
26
- align-items: center;
27
- justify-content: center;
28
- gap: 2px 2px;
29
- transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border 0s,
30
- color 0.1s, font-size 0s;
31
- &:hover {
32
- transform: rotate(90deg);
33
- transform-origin: 50% 50%;
34
- i {
35
- background: #07579a;
36
- &:nth-child(1) {
37
- transform: rotate(45deg);
38
- transform-origin: 50% 50%;
39
- }
40
- }
41
- }
42
- i {
43
- margin: 0;
44
- height: 6px;
45
- width: 6px;
46
- background: #9a9a9a;
47
- }
48
- }
49
- }
50
- </style>
1
+ <template>
2
+ <div class="tf-rotate-box">
3
+ <span class="close">
4
+ <i />
5
+ <i />
6
+ <i />
7
+ <i />
8
+ </span>
9
+ </div>
10
+ </template>
11
+
12
+ <script>
13
+ export default {}
14
+ </script>
15
+
16
+ <style lang="less" scoped>
17
+ .tf-rotate-box {
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ .close {
22
+ width: 14px;
23
+ height: 14px;
24
+ display: flex;
25
+ flex-wrap: wrap;
26
+ align-items: center;
27
+ justify-content: center;
28
+ gap: 2px 2px;
29
+ transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border 0s,
30
+ color 0.1s, font-size 0s;
31
+ &:hover {
32
+ transform: rotate(90deg);
33
+ transform-origin: 50% 50%;
34
+ i {
35
+ background: #07579a;
36
+ &:nth-child(1) {
37
+ transform: rotate(45deg);
38
+ transform-origin: 50% 50%;
39
+ }
40
+ }
41
+ }
42
+ i {
43
+ margin: 0;
44
+ height: 6px;
45
+ width: 6px;
46
+ background: #9a9a9a;
47
+ }
48
+ }
49
+ }
50
+ </style>