haiwei-ui 1.0.3 → 1.0.5

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 (109) hide show
  1. package/README.md +10 -0
  2. package/package.json +1 -1
  3. package/packages/components/box/index.vue +116 -125
  4. package/packages/components/box-col/index.vue +30 -33
  5. package/packages/components/box-row/index.vue +17 -17
  6. package/packages/components/box-small/index.vue +38 -38
  7. package/packages/components/button/index.vue +29 -42
  8. package/packages/components/button-copy/index.vue +46 -62
  9. package/packages/components/button-delete/index.vue +64 -77
  10. package/packages/components/button-delete-batch/index.vue +82 -95
  11. package/packages/components/button-has/index.vue +29 -42
  12. package/packages/components/checkbox-group/index.vue +85 -85
  13. package/packages/components/color-picker/index.vue +41 -50
  14. package/packages/components/container/index.vue +8 -8
  15. package/packages/components/date-range-picker/index.vue +92 -103
  16. package/packages/components/details/index.vue +72 -79
  17. package/packages/components/dialog/index.vue +281 -294
  18. package/packages/components/drag-sort/index.vue +36 -36
  19. package/packages/components/drag-sort-dialog/index.vue +58 -58
  20. package/packages/components/drawer/index.vue +157 -166
  21. package/packages/components/enums/sex/index.vue +1 -1
  22. package/packages/components/flex/index.vue +33 -33
  23. package/packages/components/form/index.vue +123 -138
  24. package/packages/components/form-dialog/index.vue +184 -217
  25. package/packages/components/form-page/index.vue +134 -151
  26. package/packages/components/icon/index.vue +6 -6
  27. package/packages/components/icon-picker/index.vue +30 -30
  28. package/packages/components/icon-picker/panel.vue +58 -58
  29. package/packages/components/label/index.vue +22 -30
  30. package/packages/components/list/components/export/index.vue +101 -99
  31. package/packages/components/list/components/footer/index.vue +42 -51
  32. package/packages/components/list/components/header/index.vue +34 -34
  33. package/packages/components/list/components/querybar/index.vue +143 -143
  34. package/packages/components/list/components/select-column/index.vue +30 -30
  35. package/packages/components/list/components/table/index.vue +169 -188
  36. package/packages/components/list/index.vue +337 -391
  37. package/packages/components/list-agile/index.vue +145 -145
  38. package/packages/components/list-dialog/index.vue +70 -84
  39. package/packages/components/listbox/index.vue +48 -48
  40. package/packages/components/login-default/index.vue +107 -107
  41. package/packages/components/login-neon/index.vue +104 -104
  42. package/packages/components/map/index.vue +229 -229
  43. package/packages/components/map-coord-picking/index.vue +220 -219
  44. package/packages/components/map-search/index.vue +75 -72
  45. package/packages/components/scrollbar/index.vue +11 -11
  46. package/packages/components/select-whether/index.vue +30 -30
  47. package/packages/components/split/index.vue +141 -141
  48. package/packages/components/split/trigger.vue +15 -15
  49. package/packages/components/tabnav/index.vue +125 -89
  50. package/packages/components/tabs/index.vue +31 -31
  51. package/packages/components/toolbar/components/fullscreen/index.vue +10 -10
  52. package/packages/components/toolbar/components/logout/index.vue +13 -13
  53. package/packages/components/toolbar/components/skin-toggle/form.vue +59 -59
  54. package/packages/components/toolbar/components/skin-toggle/index.vue +12 -12
  55. package/packages/components/toolbar/components/userInfo/index.vue +18 -18
  56. package/packages/components/toolbar/index.vue +12 -12
  57. package/packages/components/tree-select/mixins.vue +261 -270
  58. package/packages/components/txt/index.vue +17 -17
  59. package/packages/components/update-password/index.vue +45 -57
  60. package/packages/layout.vue +18 -18
  61. package/packages/mixins/components/checkbox.vue +71 -82
  62. package/packages/mixins/components/radio.vue +69 -69
  63. package/packages/page/403/index.vue +32 -28
  64. package/packages/page/404/index.vue +32 -28
  65. package/packages/page/default/index.vue +17 -13
  66. package/packages/page/iframe/index.vue +6 -6
  67. package/packages/page/login/index.vue +9 -9
  68. package/packages/page/userInfo/index.vue +5 -5
  69. package/packages/router/index.js +1 -9
  70. package/packages/skins/pretty/components/header/components/breadcrumb/index.vue +29 -29
  71. package/packages/skins/pretty/components/header/components/theme/index.vue +22 -21
  72. package/packages/skins/pretty/components/header/index.vue +12 -12
  73. package/packages/skins/pretty/components/main/index.vue +27 -27
  74. package/packages/skins/pretty/components/menus/index.vue +28 -28
  75. package/packages/skins/pretty/components/menus/item.vue +23 -23
  76. package/packages/skins/pretty/components/sidebar/index.vue +7 -7
  77. package/packages/skins/pretty/index.vue +6 -6
  78. package/packages/skins/pretty/styles/themes/blue-light/_index.scss +2 -2
  79. package/packages/skins/pretty/styles/themes/default/_index.scss +1 -1
  80. package/packages/skins/pretty/styles/themes/green/_index.scss +2 -2
  81. package/packages/skins/pretty/styles/themes/green-light/_index.scss +2 -2
  82. package/packages/styles/_mixins.scss +24 -25
  83. package/packages/styles/animation/_index.scss +22 -23
  84. package/packages/styles/animation/breadcrumb.scss +6 -6
  85. package/packages/styles/animation/fade.scss +11 -11
  86. package/packages/styles/animation/move.scss +98 -98
  87. package/packages/styles/components/box-small/_index.scss +58 -58
  88. package/packages/styles/components/button/_index.scss +7 -7
  89. package/packages/styles/components/container/_index.scss +26 -26
  90. package/packages/styles/components/date-range-picker/_index.scss +4 -4
  91. package/packages/styles/components/details/_index.scss +66 -67
  92. package/packages/styles/components/details-dialog/_index.scss +13 -13
  93. package/packages/styles/components/drag-sort/_index.scss +20 -20
  94. package/packages/styles/components/drag-sort-dialog/_index.scss +7 -7
  95. package/packages/styles/components/flex/_index.scss +56 -56
  96. package/packages/styles/components/form-dialog/_index.scss +11 -11
  97. package/packages/styles/components/icon/_index.scss +6 -6
  98. package/packages/styles/components/label/_index.scss +245 -245
  99. package/packages/styles/components/listbox/_index.scss +47 -47
  100. package/packages/styles/components/split/_index.scss +102 -102
  101. package/packages/styles/components/toolbar/_index.scss +98 -98
  102. package/packages/styles/components/txt/_index.scss +13 -13
  103. package/packages/styles/components/upload-dialog/_index.scss +44 -44
  104. package/packages/styles/components/upload-multiple/_index.scss +19 -19
  105. package/packages/styles/components/upload-single/_index.scss +16 -16
  106. package/packages/utils/resize-event.js +3 -3
  107. package/packages/vuter/attributes.json +30 -40
  108. package/packages/vuter/tags.json +11 -27
  109. package/public/lib/font/iconfont.js +47 -1
@@ -1,30 +1,30 @@
1
1
  .fade-transverse-leave-active,
2
2
  .fade-transverse-enter-active {
3
- transition: all .5s;
3
+ transition: all 0.5s;
4
4
  }
5
5
 
6
6
  .fade-transverse-enter {
7
- opacity: 0;
8
- transform: translateX(-30px);
7
+ opacity: 0;
8
+ transform: translateX(-30px);
9
9
  }
10
10
 
11
11
  .fade-transverse-leave-to {
12
- opacity: 0;
13
- transform: translateX(30px);
12
+ opacity: 0;
13
+ transform: translateX(30px);
14
14
  }
15
15
 
16
16
  // 过渡动画 缩放渐变
17
17
  .fade-scale-leave-active,
18
18
  .fade-scale-enter-active {
19
- transition: all .5s;
19
+ transition: all 0.5s;
20
20
  }
21
21
 
22
22
  .fade-scale-enter {
23
- opacity: 0;
24
- transform: scale(1.2);
23
+ opacity: 0;
24
+ transform: scale(1.2);
25
25
  }
26
26
 
27
27
  .fade-scale-leave-to {
28
- opacity: 0;
29
- transform: scale(0.8);
30
- }
28
+ opacity: 0;
29
+ transform: scale(0.8);
30
+ }
@@ -1,15 +1,15 @@
1
1
  @mixin move-motion($className, $keyframeName) {
2
- @include make-motion($className, $keyframeName);
2
+ @include make-motion($className, $keyframeName);
3
3
 
4
- .#{$className}-enter-active,
5
- .#{$className}-appear {
6
- opacity: 0;
7
- animation-timing-function: ease-in-out;
8
- }
4
+ .#{$className}-enter-active,
5
+ .#{$className}-appear {
6
+ opacity: 0;
7
+ animation-timing-function: ease-in-out;
8
+ }
9
9
 
10
- .#{$className}-leave-active {
11
- animation-timing-function: ease-in-out;
12
- }
10
+ .#{$className}-leave-active {
11
+ animation-timing-function: ease-in-out;
12
+ }
13
13
  }
14
14
 
15
15
  @include move-motion(move-up, MoveUp);
@@ -18,113 +18,113 @@
18
18
  @include move-motion(move-right, MoveRight);
19
19
 
20
20
  @keyframes MoveDownIn {
21
- 0% {
22
- transform-origin: 0 0;
23
- transform: translateY(100%);
24
- opacity: 0;
25
- }
26
-
27
- 100% {
28
- transform-origin: 0 0;
29
- transform: translateY(0%);
30
- opacity: 1;
31
- }
21
+ 0% {
22
+ transform-origin: 0 0;
23
+ transform: translateY(100%);
24
+ opacity: 0;
25
+ }
26
+
27
+ 100% {
28
+ transform-origin: 0 0;
29
+ transform: translateY(0%);
30
+ opacity: 1;
31
+ }
32
32
  }
33
33
 
34
34
  @keyframes MoveDownOut {
35
- 0% {
36
- transform-origin: 0 0;
37
- transform: translateY(0%);
38
- opacity: 1;
39
- }
40
-
41
- 100% {
42
- transform-origin: 0 0;
43
- transform: translateY(100%);
44
- opacity: 0;
45
- }
35
+ 0% {
36
+ transform-origin: 0 0;
37
+ transform: translateY(0%);
38
+ opacity: 1;
39
+ }
40
+
41
+ 100% {
42
+ transform-origin: 0 0;
43
+ transform: translateY(100%);
44
+ opacity: 0;
45
+ }
46
46
  }
47
47
 
48
48
  @keyframes MoveLeftIn {
49
- 0% {
50
- transform-origin: 0 0;
51
- transform: translateX(-100%);
52
- opacity: 0;
53
- }
54
-
55
- 100% {
56
- transform-origin: 0 0;
57
- transform: translateX(0%);
58
- opacity: 1;
59
- }
49
+ 0% {
50
+ transform-origin: 0 0;
51
+ transform: translateX(-100%);
52
+ opacity: 0;
53
+ }
54
+
55
+ 100% {
56
+ transform-origin: 0 0;
57
+ transform: translateX(0%);
58
+ opacity: 1;
59
+ }
60
60
  }
61
61
 
62
62
  @keyframes MoveLeftOut {
63
- 0% {
64
- transform-origin: 0 0;
65
- transform: translateX(0%);
66
- opacity: 1;
67
- }
68
-
69
- 100% {
70
- transform-origin: 0 0;
71
- transform: translateX(-100%);
72
- opacity: 0;
73
- }
63
+ 0% {
64
+ transform-origin: 0 0;
65
+ transform: translateX(0%);
66
+ opacity: 1;
67
+ }
68
+
69
+ 100% {
70
+ transform-origin: 0 0;
71
+ transform: translateX(-100%);
72
+ opacity: 0;
73
+ }
74
74
  }
75
75
 
76
76
  @keyframes MoveRightIn {
77
- 0% {
78
- opacity: 0;
79
- transform-origin: 0 0;
80
- transform: translateX(100%);
81
- }
82
-
83
- 100% {
84
- opacity: 1;
85
- transform-origin: 0 0;
86
- transform: translateX(0%);
87
- }
77
+ 0% {
78
+ opacity: 0;
79
+ transform-origin: 0 0;
80
+ transform: translateX(100%);
81
+ }
82
+
83
+ 100% {
84
+ opacity: 1;
85
+ transform-origin: 0 0;
86
+ transform: translateX(0%);
87
+ }
88
88
  }
89
89
 
90
90
  @keyframes MoveRightOut {
91
- 0% {
92
- transform-origin: 0 0;
93
- transform: translateX(0%);
94
- opacity: 1;
95
- }
96
-
97
- 100% {
98
- transform-origin: 0 0;
99
- transform: translateX(100%);
100
- opacity: 0;
101
- }
91
+ 0% {
92
+ transform-origin: 0 0;
93
+ transform: translateX(0%);
94
+ opacity: 1;
95
+ }
96
+
97
+ 100% {
98
+ transform-origin: 0 0;
99
+ transform: translateX(100%);
100
+ opacity: 0;
101
+ }
102
102
  }
103
103
 
104
104
  @keyframes MoveUpIn {
105
- 0% {
106
- transform-origin: 0 0;
107
- transform: translateY(-100%);
108
- opacity: 0;
109
- }
110
-
111
- 100% {
112
- transform-origin: 0 0;
113
- transform: translateY(0%);
114
- opacity: 1;
115
- }
105
+ 0% {
106
+ transform-origin: 0 0;
107
+ transform: translateY(-100%);
108
+ opacity: 0;
109
+ }
110
+
111
+ 100% {
112
+ transform-origin: 0 0;
113
+ transform: translateY(0%);
114
+ opacity: 1;
115
+ }
116
116
  }
117
117
 
118
118
  @keyframes MoveUpOut {
119
- 0% {
120
- transform-origin: 0 0;
121
- transform: translateY(0%);
122
- opacity: 1;
123
- }
124
-
125
- 100% {
126
- transform-origin: 0 0;
127
- transform: translateY(-100%);
128
- opacity: 0;
129
- }
130
- }
119
+ 0% {
120
+ transform-origin: 0 0;
121
+ transform: translateY(0%);
122
+ opacity: 1;
123
+ }
124
+
125
+ 100% {
126
+ transform-origin: 0 0;
127
+ transform: translateY(-100%);
128
+ opacity: 0;
129
+ }
130
+ }
@@ -1,73 +1,73 @@
1
1
  #{$prefix}box-small {
2
- position: relative;
3
- width: 100%;
4
- height: 100px;
5
- border-radius: 5px;
6
- cursor: pointer;
2
+ position: relative;
3
+ width: 100%;
4
+ height: 100px;
5
+ border-radius: 5px;
6
+ cursor: pointer;
7
7
 
8
- .inner {
9
- position: relative;
10
- padding: 15px;
11
- color: #fff;
12
- height: 100%;
13
- box-sizing: border-box;
14
-
15
- .value {
16
- font-size: 30px;
17
- font-weight: 600;
8
+ .inner {
9
+ position: relative;
10
+ padding: 15px;
11
+ color: #fff;
12
+ height: 100%;
13
+ box-sizing: border-box;
18
14
 
19
- .unit {
20
- font-size: 13px;
21
- }
22
- }
15
+ .value {
16
+ font-size: 30px;
17
+ font-weight: 600;
23
18
 
24
- .label {
25
- position: absolute;
26
- bottom: 20px;
27
- font-size: 15px;
28
- }
19
+ .unit {
20
+ font-size: 13px;
21
+ }
29
22
  }
30
23
 
31
- .icon {
32
- position: absolute;
33
- top: 5px;
34
- right: 0;
35
- color: rgba(0, 0, 0, 0.15);
36
- font-size: 70px;
37
- transition: all 0.3s ease-in;
38
- transform: scale(0.8);
24
+ .label {
25
+ position: absolute;
26
+ bottom: 20px;
27
+ font-size: 15px;
39
28
  }
29
+ }
40
30
 
41
- .more {
42
- position: absolute;
43
- display: none;
44
- bottom: 0;
45
- padding: 7px 0;
46
- width: 100%;
47
- text-align: center;
48
- color: rgba(255, 255, 255, 0.8);
49
- background: rgba(0, 0, 0, 0.15);
50
- font-size: 13px;
51
- transition: all 0.2s ease-in;
52
- border: 0 !important;
31
+ .icon {
32
+ position: absolute;
33
+ top: 5px;
34
+ right: 0;
35
+ color: rgba(0, 0, 0, 0.15);
36
+ font-size: 70px;
37
+ transition: all 0.3s ease-in;
38
+ transform: scale(0.8);
39
+ }
53
40
 
54
- #{prefix}icon {
55
- font-size: 13px;
56
- }
41
+ .more {
42
+ position: absolute;
43
+ display: none;
44
+ bottom: 0;
45
+ padding: 7px 0;
46
+ width: 100%;
47
+ text-align: center;
48
+ color: rgba(255, 255, 255, 0.8);
49
+ background: rgba(0, 0, 0, 0.15);
50
+ font-size: 13px;
51
+ transition: all 0.2s ease-in;
52
+ border: 0 !important;
57
53
 
58
- &:hover {
59
- background: rgba(0, 0, 0, 0.25);
60
- color: #fff;
61
- }
54
+ #{prefix}icon {
55
+ font-size: 13px;
62
56
  }
63
57
 
64
58
  &:hover {
65
- .icon {
66
- transform: scale(1);
67
- }
59
+ background: rgba(0, 0, 0, 0.25);
60
+ color: #fff;
61
+ }
62
+ }
68
63
 
69
- .more {
70
- display: block;
71
- }
64
+ &:hover {
65
+ .icon {
66
+ transform: scale(1);
67
+ }
68
+
69
+ .more {
70
+ display: block;
72
71
  }
73
- }
72
+ }
73
+ }
@@ -1,9 +1,9 @@
1
1
  #{$prefix}button {
2
- #{$prefix}icon {
3
- transform: scale(1.4);
4
- }
2
+ #{$prefix}icon {
3
+ transform: scale(1.4);
4
+ }
5
5
 
6
- #{$prefix}icon+&-text {
7
- margin-left: 5px;
8
- }
9
- }
6
+ #{$prefix}icon + &-text {
7
+ margin-left: 5px;
8
+ }
9
+ }
@@ -1,36 +1,36 @@
1
1
  //容器
2
2
  #{$prefix}container {
3
- position: absolute;
4
- top: 0;
5
- left: 0;
6
- width: 100%;
3
+ position: absolute;
4
+ top: 0;
5
+ left: 0;
6
+ width: 100%;
7
+ height: 100%;
8
+ overflow: hidden;
9
+ box-sizing: border-box;
10
+
11
+ &-main {
12
+ padding: 5px;
7
13
  height: 100%;
8
- overflow: hidden;
9
14
  box-sizing: border-box;
10
15
 
11
- &-main {
12
- padding: 5px;
13
- height: 100%;
14
- box-sizing: border-box;
15
-
16
- >#{$prefix}scrollbar {
17
- .el-scrollbar__wrap {
18
- overflow-x: hidden;
19
-
20
- .el-scrollbar__view {
21
- height: 100%;
22
- }
23
- }
16
+ > #{$prefix}scrollbar {
17
+ .el-scrollbar__wrap {
18
+ overflow-x: hidden;
24
19
 
25
- .is-horizontal {
26
- display: none;
27
- }
20
+ .el-scrollbar__view {
21
+ height: 100%;
28
22
  }
23
+ }
24
+
25
+ .is-horizontal {
26
+ display: none;
27
+ }
29
28
  }
29
+ }
30
30
 
31
- &.is-horizontal {
32
- .is-horizontal {
33
- display: block;
34
- }
31
+ &.is-horizontal {
32
+ .is-horizontal {
33
+ display: block;
35
34
  }
36
- }
35
+ }
36
+ }
@@ -1,6 +1,6 @@
1
1
  //日期选择组件
2
2
  #{$prefix}date-range-picker {
3
- .el-date-editor{
4
- width: 100% !important;
5
- }
6
- }
3
+ .el-date-editor {
4
+ width: 100% !important;
5
+ }
6
+ }
@@ -1,82 +1,81 @@
1
1
  #{$prefix}details {
2
- width: 100%;
3
- overflow: hidden;
4
- border: 1px solid $border-color3;
5
-
6
- &-group {
7
- @include flex-row();
8
- overflow: hidden;
2
+ width: 100%;
3
+ overflow: hidden;
4
+ border: 1px solid $border-color3;
9
5
 
10
- &:first-child {
11
- border-top: none;
6
+ &-group {
7
+ @include flex-row();
8
+ overflow: hidden;
12
9
 
13
- #{$prefix}details-item-label,
14
- #{$prefix}details-item-content {
15
- border-top: none;
16
- }
17
- }
10
+ &:first-child {
11
+ border-top: none;
18
12
 
19
- &-1 {
20
- #{$prefix}details-item {
21
- width: 100%;
22
- }
23
- }
13
+ #{$prefix}details-item-label,
14
+ #{$prefix}details-item-content {
15
+ border-top: none;
16
+ }
17
+ }
24
18
 
25
- &-2 {
26
- #{$prefix}details-item {
27
- width: 50%;
28
- }
29
- }
19
+ &-1 {
20
+ #{$prefix}details-item {
21
+ width: 100%;
22
+ }
23
+ }
30
24
 
31
- &-3 {
32
- #{$prefix}details-item {
33
- width: 33.3333333%;
34
- }
35
- }
25
+ &-2 {
26
+ #{$prefix}details-item {
27
+ width: 50%;
28
+ }
29
+ }
36
30
 
37
- &-4 {
38
- #{$prefix}details-item {
39
- width: 25%;
40
- }
41
- }
31
+ &-3 {
32
+ #{$prefix}details-item {
33
+ width: 33.3333333%;
34
+ }
35
+ }
42
36
 
43
- &-5 {
44
- #{$prefix}details-item {
45
- width: 20%;
46
- }
47
- }
37
+ &-4 {
38
+ #{$prefix}details-item {
39
+ width: 25%;
40
+ }
48
41
  }
49
42
 
50
- &-item {
51
- float: left;
52
- @include flex-row();
43
+ &-5 {
44
+ #{$prefix}details-item {
45
+ width: 20%;
46
+ }
47
+ }
48
+ }
53
49
 
54
- &-label {
55
- padding: 10px;
56
- display: flex;
57
- align-items: center;
58
- justify-content: flex-end;
59
- flex-shrink: 0;
60
- color: #336199;
61
- background-color: #EDF3F4;
62
- border-top: 1px solid #F7FBFF;
63
- }
50
+ &-item {
51
+ float: left;
52
+ @include flex-row();
64
53
 
65
- &-content {
66
- padding: 10px;
67
- display: flex;
68
- align-items: center;
69
- justify-content: flex-start;
70
- flex-grow: 1;
71
- box-sizing: border-box;
72
- font-size: 14px;
73
- border-top: 1px dotted $border-color3;
74
- line-height: 150%;
75
- }
54
+ &-label {
55
+ padding: 10px;
56
+ display: flex;
57
+ align-items: center;
58
+ justify-content: flex-end;
59
+ flex-shrink: 0;
60
+ color: #336199;
61
+ background-color: #edf3f4;
62
+ border-top: 1px solid #f7fbff;
76
63
  }
77
64
 
78
- &.no-border {
79
- border: none !important;
80
-
65
+ &-content {
66
+ padding: 10px;
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: flex-start;
70
+ flex-grow: 1;
71
+ box-sizing: border-box;
72
+ font-size: 14px;
73
+ border-top: 1px dotted $border-color3;
74
+ line-height: 150%;
81
75
  }
82
- }
76
+ }
77
+
78
+ &.no-border {
79
+ border: none !important;
80
+ }
81
+ }
@@ -1,19 +1,19 @@
1
1
  @import './variables';
2
2
 
3
3
  #{$prefix}details-dialog {
4
- >.el-dialog {
5
- >.el-dialog__body {
6
- >#{$prefix}dialog-body {
7
- >#{$prefix}dialog-content {
8
- >#{$prefix}scrollbar {
9
- >.el-scrollbar__wrap {
10
- >.el-scrollbar__view {
11
- padding: 5px;
12
- }
13
- }
14
- }
15
- }
4
+ > .el-dialog {
5
+ > .el-dialog__body {
6
+ > #{$prefix}dialog-body {
7
+ > #{$prefix}dialog-content {
8
+ > #{$prefix}scrollbar {
9
+ > .el-scrollbar__wrap {
10
+ > .el-scrollbar__view {
11
+ padding: 5px;
12
+ }
16
13
  }
14
+ }
17
15
  }
16
+ }
18
17
  }
19
- }
18
+ }
19
+ }