@materializecss/materialize 2.1.0 → 2.2.0

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 (85) hide show
  1. package/README.md +7 -14
  2. package/dist/materialize-src-v2.2.0.zip +0 -0
  3. package/dist/materialize-v2.2.0.zip +0 -0
  4. package/package.json +27 -25
  5. package/sass/components/_badges.scss +5 -0
  6. package/sass/components/_buttons.scss +44 -12
  7. package/sass/components/_cards.scss +18 -6
  8. package/sass/components/_chips.scss +9 -3
  9. package/sass/components/_collapsible.scss +12 -6
  10. package/sass/components/_datepicker.scss +6 -0
  11. package/sass/components/_dropdown.scss +11 -8
  12. package/sass/components/_grid.scss +11 -9
  13. package/sass/components/_modal.scss +32 -65
  14. package/sass/components/_tabs.scss +31 -5
  15. package/sass/components/_tapTarget.scss +2 -2
  16. package/sass/components/_timepicker.scss +95 -23
  17. package/sass/components/forms/_input-fields.scss +53 -23
  18. package/sass/components/forms/_select.scss +2 -22
  19. package/dist/css/materialize.css +0 -9246
  20. package/dist/css/materialize.min.css +0 -6
  21. package/dist/js/materialize.js +0 -7714
  22. package/dist/js/materialize.min.js +0 -7
  23. package/dist/js/materialize.min.js.map +0 -1
  24. package/dist/src/autocomplete.d.ts +0 -143
  25. package/dist/src/autocomplete.d.ts.map +0 -1
  26. package/dist/src/bounding.d.ts +0 -7
  27. package/dist/src/bounding.d.ts.map +0 -1
  28. package/dist/src/buttons.d.ts +0 -65
  29. package/dist/src/buttons.d.ts.map +0 -1
  30. package/dist/src/cards.d.ts +0 -4
  31. package/dist/src/cards.d.ts.map +0 -1
  32. package/dist/src/carousel.d.ts +0 -131
  33. package/dist/src/carousel.d.ts.map +0 -1
  34. package/dist/src/characterCounter.d.ts +0 -37
  35. package/dist/src/characterCounter.d.ts.map +0 -1
  36. package/dist/src/chips.d.ts +0 -131
  37. package/dist/src/chips.d.ts.map +0 -1
  38. package/dist/src/collapsible.d.ts +0 -75
  39. package/dist/src/collapsible.d.ts.map +0 -1
  40. package/dist/src/component.d.ts +0 -74
  41. package/dist/src/component.d.ts.map +0 -1
  42. package/dist/src/datepicker.d.ts +0 -248
  43. package/dist/src/datepicker.d.ts.map +0 -1
  44. package/dist/src/dropdown.d.ts +0 -149
  45. package/dist/src/dropdown.d.ts.map +0 -1
  46. package/dist/src/edges.d.ts +0 -7
  47. package/dist/src/edges.d.ts.map +0 -1
  48. package/dist/src/forms.d.ts +0 -12
  49. package/dist/src/forms.d.ts.map +0 -1
  50. package/dist/src/global.d.ts +0 -60
  51. package/dist/src/global.d.ts.map +0 -1
  52. package/dist/src/index.d.ts +0 -27
  53. package/dist/src/index.d.ts.map +0 -1
  54. package/dist/src/materialbox.d.ts +0 -96
  55. package/dist/src/materialbox.d.ts.map +0 -1
  56. package/dist/src/modal.d.ts +0 -119
  57. package/dist/src/modal.d.ts.map +0 -1
  58. package/dist/src/parallax.d.ts +0 -40
  59. package/dist/src/parallax.d.ts.map +0 -1
  60. package/dist/src/pushpin.d.ts +0 -52
  61. package/dist/src/pushpin.d.ts.map +0 -1
  62. package/dist/src/range.d.ts +0 -41
  63. package/dist/src/range.d.ts.map +0 -1
  64. package/dist/src/scrollspy.d.ts +0 -62
  65. package/dist/src/scrollspy.d.ts.map +0 -1
  66. package/dist/src/select.d.ts +0 -77
  67. package/dist/src/select.d.ts.map +0 -1
  68. package/dist/src/sidenav.d.ts +0 -122
  69. package/dist/src/sidenav.d.ts.map +0 -1
  70. package/dist/src/slider.d.ts +0 -103
  71. package/dist/src/slider.d.ts.map +0 -1
  72. package/dist/src/tabs.d.ts +0 -80
  73. package/dist/src/tabs.d.ts.map +0 -1
  74. package/dist/src/tapTarget.d.ts +0 -59
  75. package/dist/src/tapTarget.d.ts.map +0 -1
  76. package/dist/src/timepicker.d.ts +0 -208
  77. package/dist/src/timepicker.d.ts.map +0 -1
  78. package/dist/src/toasts.d.ts +0 -95
  79. package/dist/src/toasts.d.ts.map +0 -1
  80. package/dist/src/tooltip.d.ts +0 -118
  81. package/dist/src/tooltip.d.ts.map +0 -1
  82. package/dist/src/utils.d.ts +0 -97
  83. package/dist/src/utils.d.ts.map +0 -1
  84. package/dist/src/waves.d.ts +0 -16
  85. package/dist/src/waves.d.ts.map +0 -1
@@ -1,101 +1,68 @@
1
+ // use with dialog html element
1
2
  .modal {
2
- --modal-footer-height: 56px;
3
3
  --modal-footer-divider-height: 1px;
4
4
  --modal-border-radius: 28px;
5
5
  --modal-padding: 24px;
6
-
7
- &:focus {
8
- outline: none;
9
- }
6
+ --modal-padding-bottom: 16px;
10
7
 
11
8
  @extend .z-depth-5;
12
-
13
- display: none;
14
- position: fixed;
15
- left: 0;
16
- right: 0;
17
- background-color: var(--md-sys-color-surface);
9
+ border: none;
10
+ outline: none;
18
11
  padding: 0;
19
12
  max-height: 70%;
20
13
  width: 55%;
21
- margin: auto;
22
- overflow-y: auto;
23
-
24
14
  border-radius: var(--modal-border-radius);
25
15
  will-change: top, opacity;
26
16
 
17
+ // Dialog open
18
+ &[open] {
19
+ display: flex;
20
+ flex-direction: column;
21
+ }
22
+
23
+ // Background
24
+ background-color: color-mix(in srgb, var(--md-sys-color-surface), var(--md-sys-color-surface-tint) 17%);
25
+
27
26
  @media #{$medium-and-down} {
28
27
  width: 80%;
29
28
  }
30
29
 
31
- h1,h2,h3,h4 {
32
- margin-top: 0;
30
+ // custom backdrop blur
31
+ &::backdrop {
32
+ backdrop-filter: blur(1px);
33
33
  }
34
34
 
35
- .modal-content {
35
+ .modal-header {
36
36
  padding: var(--modal-padding);
37
- overflow-y: hidden;
37
+ padding-bottom: var(--modal-padding-bottom);
38
+ flex-shrink: 0;
38
39
  }
39
-
40
- .modal-close {
41
- cursor: pointer;
40
+ .modal-content {
41
+ padding: 0 var(--modal-padding);
42
+ overflow-y: auto;
42
43
  }
43
-
44
44
  .modal-footer {
45
45
  border-radius: 0 0 var(--modal-border-radius) var(--modal-border-radius);
46
- background-color: var(--md-sys-color-surface);
47
- padding: 4px 6px;
48
- height: var(--modal-footer-height);
49
- width: 100%;
46
+ padding: var(--modal-padding);
50
47
  text-align: right;
51
-
52
- .btn, .btn-flat {
53
- margin: 6px 0;
54
- }
48
+ flex-shrink: 0;
55
49
  }
56
- }
57
50
 
58
- .modal-overlay {
59
- position: fixed;
60
- z-index: 999;
61
- top: -25%;
62
- left: 0;
63
- bottom: 0;
64
- right: 0;
65
- height: 125%;
66
- width: 100%;
67
- background: #000;
68
- display: none;
69
- will-change: opacity;
70
- }
71
-
72
- // Modal with fixed action footer
73
- .modal.modal-fixed-footer {
74
- padding: 0;
75
- height: 70%;
76
-
77
- .modal-content {
78
- position: absolute;
79
- height: calc(100% - var(--modal-footer-height));
80
- max-height: 100%;
81
- width: 100%;
82
- overflow-y: auto;
51
+ .modal-close {
52
+ cursor: pointer;
83
53
  }
84
54
 
85
- .modal-footer {
86
- border-top: var(--modal-footer-divider-height) solid var(--md-sys-color-outline-variant);
87
- position: absolute;
88
- bottom: var(--modal-footer-divider-height);
55
+ // todo: remove maybe
56
+ h1,h2,h3,h4,h5,h6 {
57
+ margin: 0;
89
58
  }
90
59
  }
91
60
 
92
61
  // Modal Bottom Sheet Style
93
62
  .modal.bottom-sheet {
94
- top: auto;
95
- bottom: -100%;
96
- margin: 0;
97
- width: 100%;
63
+ margin-bottom: 0;
98
64
  max-height: 45%;
99
- border-radius: 0;
65
+ border-bottom-left-radius: 0;
66
+ border-bottom-right-radius: 0;
100
67
  will-change: bottom, opacity;
101
68
  }
@@ -44,8 +44,7 @@
44
44
 
45
45
  position: relative;
46
46
  overflow-x: auto;
47
- overflow-y: hidden;
48
- height: 48px;
47
+ overflow-y: hidden;
49
48
  width: 100%;
50
49
  background-color: var(--md-sys-color-surface);
51
50
  margin: 0 auto;
@@ -56,11 +55,21 @@
56
55
  list-style-type: none;
57
56
  display: inline-block;
58
57
  text-align: center;
59
- line-height: 48px;
60
- height: 48px;
58
+ line-height: 48px;
61
59
  padding: 0;
62
60
  margin: 0;
63
61
 
62
+ i.material-icons {
63
+ position: relative;
64
+ top: 8px;
65
+ vertical-align: middle;
66
+ }
67
+
68
+ span {
69
+ height: 24px;
70
+ line-height: 20px;
71
+ }
72
+
64
73
  a {
65
74
  &.active {
66
75
  background-color: transparent;
@@ -83,9 +92,11 @@
83
92
  }
84
93
 
85
94
  color: var(--md-sys-color-on-surface-variant);
86
- display: block;
95
+ display: flex;
96
+ flex-direction: column;
87
97
  width: 100%;
88
98
  height: 100%;
99
+ min-height: 48px; //needed for only-icons tabs
89
100
  padding: 0 24px;
90
101
  font-size: 14px;
91
102
  text-overflow: ellipsis;
@@ -112,6 +123,21 @@
112
123
  will-change: left, right;
113
124
  border-radius: 3px 3px 0 0;
114
125
  }
126
+
127
+ &.tabs-horizontal .tab {
128
+ height: 48px;
129
+
130
+ a {
131
+ display: block;
132
+ }
133
+
134
+ i.material-icons {
135
+ padding: 0 4px;
136
+ position: relative;
137
+ top: -2px;
138
+ vertical-align: middle;
139
+ }
140
+ }
115
141
  }
116
142
 
117
143
  /* Fixed Sidenav hide on smaller */
@@ -36,8 +36,8 @@
36
36
  position: absolute;
37
37
  font-size: 1rem;
38
38
  border-radius: 50%;
39
- background-color: var(--md-sys-color-surface);//var(--md-sys-color-secondary);
40
- color: var(--md-sys-color-on-secondary);
39
+ background-color: var(--md-sys-color-primary-container);
40
+ color: var(--md-sys-color-primary);
41
41
  box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2);
42
42
  width: 100%;
43
43
  height: 100%;
@@ -17,77 +17,116 @@
17
17
 
18
18
  /* Clock Digital Display */
19
19
  .timepicker-digital-display {
20
- width: 200px;
20
+ width: auto;
21
21
  flex: 1 auto;
22
22
  background-color: var(--md-sys-color-primary);;
23
- padding: 10px;
23
+ padding: 2rem .67rem .67rem .67rem;
24
24
  font-weight: 300;
25
25
  }
26
26
 
27
27
  .timepicker-text-container {
28
28
  font-size: 4rem;
29
- font-weight: bold;
30
- text-align: center;
29
+ text-align: left;
31
30
  color: var(--font-on-primary-color-medium);
32
31
  font-weight: 400;
33
32
  position: relative;
34
33
  user-select: none;
34
+ padding: 1rem 1rem 1.5rem 1rem;
35
35
 
36
36
  input[type=text]{
37
37
  height: 4rem;
38
- color: rgba(255, 255, 255, 0.6);
38
+ color: var(--md-sys-color-secondary);
39
39
  border-bottom: 0px;
40
40
  font-size: 4rem;
41
41
  direction: ltr;
42
42
  }
43
43
  }
44
44
 
45
+ .timepicker-display-column {
46
+ display: inline-flex;
47
+ }
48
+
49
+ .timepicker-input-hours-wrapper,
50
+ .timepicker-input-minutes-wrapper {
51
+ width: 6.9rem;
52
+ height: 5.2rem;
53
+ }
54
+
45
55
  .timepicker-input-hours,
46
56
  .timepicker-input-minutes,
47
57
  .timepicker-span-am-pm div {
48
58
  cursor: pointer;
49
59
  }
50
60
 
51
- input[type=text].timepicker-input-hours {
52
- text-align: right;
53
- width: 28%;
54
- margin-right: 3px;
61
+ input[type=text].timepicker-input-hours,
62
+ input[type=text].timepicker-input-minutes {
63
+ height: 100%;
64
+ padding: .8rem;
65
+ border: 0;
66
+ text-align: center;
55
67
  }
56
68
 
57
- input[type=text].timepicker-input-minutes {
58
- width: 33%;
59
- margin-left: 3px;
69
+ .timepicker-input-divider-wrapper {
70
+ width: 1.6rem;
71
+ text-align: center;
60
72
  }
61
73
 
62
74
  input[type=text].text-primary {
63
- color: rgba(255, 255, 255, 1);
75
+ color: var(--md-sys-color-on-background);
64
76
  }
65
77
 
66
78
  .timepicker-display-am-pm {
67
79
  font-size: 1.3rem;
68
80
  position: absolute;
81
+ top: 1rem;
69
82
  right: 1rem;
70
- bottom: 1rem;
71
83
  font-weight: 400;
72
84
  }
73
85
 
86
+ .timepicker-span-am-pm {
87
+ height: 5.2rem;
88
+ max-width: 3.5rem;
89
+ }
90
+
91
+ .timepicker-modal .am-btn,
92
+ .timepicker-modal .pm-btn {
93
+ width: 3.6rem;
94
+ height: 50%;
95
+ padding-left: calc(var(--btn-padding) / 1.6);
96
+ padding-right: calc(var(--btn-padding) / 1.6);
97
+ line-height: 2rem;
98
+ vertical-align: middle;
99
+ text-align: center;
100
+ background-color: transparent;
101
+ border: 1px solid var(--md-sys-color-outline);
102
+ }
103
+
104
+ .timepicker-modal .am-btn {
105
+ border-bottom-right-radius: 0;
106
+ border-bottom-left-radius: 0;
107
+ }
108
+
109
+ .timepicker-modal .pm-btn {
110
+ border-top: 0;
111
+ border-top-left-radius: 0;
112
+ border-top-right-radius: 0;
113
+ }
74
114
 
75
115
  /* Analog Clock Display */
76
116
  .timepicker-analog-display {
77
117
  flex: 2.5 auto;
118
+ padding: .67rem;
78
119
  background-color: var(--md-sys-color-surface);
79
120
  }
80
121
 
81
122
  .timepicker-plate {
82
123
  background-color: rgba(0, 0, 0, 0.09);
83
124
  border-radius: 50%;
84
- width: 270px;
85
- height: 270px;
125
+ width: 260px;
126
+ height: 260px;
86
127
  overflow: visible;
87
128
  position: relative;
88
- margin: auto;
89
- margin-top: 25px;
90
- margin-bottom: 5px;
129
+ margin: 2rem 1.6rem 1.6rem 1.6rem;
91
130
  user-select: none;
92
131
  }
93
132
 
@@ -184,24 +223,57 @@ input[type=text].text-primary {
184
223
  }
185
224
 
186
225
  /* Media Queries */
187
- @media #{$medium-and-up} {
226
+ @media #{$large-and-up} {
188
227
  .timepicker-modal {
189
- max-width: 600px;
228
+ width: auto;
229
+ max-width: 620px;
190
230
  }
191
231
 
192
232
  .timepicker-container.modal-content {
193
233
  flex-direction: row;
194
234
  }
195
235
 
236
+ .timepicker-digital-display {
237
+ padding: .67rem;
238
+ }
239
+
196
240
  .timepicker-text-container {
197
- top: 32%;
241
+ top: 31%;
242
+ text-align: center;
198
243
  }
199
244
 
200
245
  .timepicker-display-am-pm {
201
246
  position: relative;
247
+ top: auto;
202
248
  right: auto;
203
- bottom: auto;
204
249
  text-align: center;
205
250
  margin-top: 1.2rem;
206
251
  }
252
+
253
+ .timepicker-span-am-pm {
254
+ max-width: unset;
255
+ }
256
+
257
+ .timepicker-modal .am-btn,
258
+ .timepicker-modal .pm-btn {
259
+ width: auto;
260
+ padding-left: var(--btn-padding);
261
+ padding-right: var(--btn-padding);
262
+ border-radius: var(--btn-border-radius);
263
+ border: 1px solid var(--md-sys-color-outline);
264
+ line-height: inherit;
265
+ vertical-align: top;
266
+ text-align: inherit;
267
+ }
268
+
269
+ .timepicker-modal .am-btn {
270
+ border-top-right-radius: 0;
271
+ border-bottom-right-radius: 0;
272
+ }
273
+
274
+ .timepicker-modal .pm-btn {
275
+ border-left: 0;
276
+ border-bottom-left-radius: 0;
277
+ border-top-left-radius: 0;
278
+ }
207
279
  }
@@ -17,45 +17,32 @@ input[type=month]:not(.browser-default),
17
17
  input[type=tel]:not(.browser-default),
18
18
  input[type=number]:not(.browser-default),
19
19
  input[type=search]:not(.browser-default),
20
- textarea.materialize-textarea {
20
+ textarea.materialize-textarea {
21
21
  outline: none;
22
22
  color: var(--md-sys-color-on-background);
23
- width: 100%;
23
+ width: 100%;
24
24
  font-size: $md_sys_typescale_body-large_size; //16px; // => 16 dp
25
25
  height: 56px; // 56dp
26
26
  }
27
27
 
28
- /* Validation Sass Placeholders */
29
- %valid-input-style {
30
- border-bottom: 1px solid $success-color;
31
- box-shadow: 0 1px 0 0 $success-color;
32
- }
33
28
  %invalid-input-style {
34
29
  border-bottom: 2px solid var(--md-sys-color-error);
35
30
  box-shadow: 0 1px 0 0 var(--md-sys-color-error);
36
31
  }
37
- %hidden-text {
38
- color: transparent;
39
- user-select: none;
40
- pointer-events: none;
41
- }
42
- /*
43
- %custom-success-message {
44
- content: attr(data-success);
45
- color: $success-color;
32
+ %hidden-text > span {
33
+ display: none
46
34
  }
47
35
  %custom-error-message {
48
36
  content: attr(data-error);
49
37
  color: var(--md-sys-color-error);
50
38
  }
51
- */
52
39
 
53
40
  .input-field {
54
41
  --input-color: var(--md-sys-color-primary);
55
42
 
56
43
  position: relative;
57
44
  clear: both;
58
-
45
+
59
46
  // Default
60
47
 
61
48
  input, textarea {
@@ -71,7 +58,7 @@ textarea.materialize-textarea {
71
58
  border-bottom: 1px solid var(--md-sys-color-on-surface-variant);
72
59
  border-bottom-left-radius: 0;
73
60
  border-bottom-right-radius: 0;
74
-
61
+
75
62
  &:focus:not([readonly]) {
76
63
  border-bottom: 2px solid var(--input-color);
77
64
  padding-top: 20px + 1px; // add border-width
@@ -99,6 +86,26 @@ textarea.materialize-textarea {
99
86
  &:disabled + label, &[readonly="readonly"] + label {
100
87
  color: rgba(var(--md_sys_color_on-surface), 0.38);
101
88
  }
89
+
90
+ // Hide helper text on data message
91
+ &.invalid ~ .supporting-text[data-error] {
92
+ @extend %hidden-text;
93
+ }
94
+
95
+ // Invalid Input Style
96
+ &.invalid {
97
+ @extend %invalid-input-style;
98
+ }
99
+
100
+ // Custom Error message
101
+ &.invalid ~ .supporting-text:after {
102
+ @extend %custom-error-message;
103
+ }
104
+
105
+ &.invalid ~ label,
106
+ &:focus.invalid ~ label {
107
+ color: var(--md-sys-color-error);
108
+ }
102
109
  }
103
110
 
104
111
  input::placeholder {
@@ -150,7 +157,7 @@ textarea.materialize-textarea {
150
157
  .suffix {
151
158
  position: absolute;
152
159
  right: 12px;
153
- top: 16px;
160
+ top: 16px;
154
161
  user-select: none;
155
162
  }
156
163
 
@@ -200,7 +207,7 @@ textarea.materialize-textarea {
200
207
  color: rgba(var(--md_sys_color_on-surface), 0.38);
201
208
  border-color: rgba(var(--md_sys_color_on-surface), 0.12);
202
209
  }
203
-
210
+
204
211
  }
205
212
  }
206
213
 
@@ -228,7 +235,7 @@ textarea.materialize-textarea {
228
235
  }
229
236
 
230
237
  /* Search Field */
231
- .searchbar {
238
+ .searchbar {
232
239
  .prefix {
233
240
  position: absolute;
234
241
  //left: 12px;
@@ -317,4 +324,27 @@ textarea {
317
324
  margin: 5px 15px;
318
325
  }
319
326
  }
320
- }
327
+ }
328
+
329
+ /* Datepicker date input fields */
330
+ .datepicker-date-input {
331
+ position: relative;
332
+ text-indent: -9999px;
333
+
334
+ &::after {
335
+ display: block;
336
+ position: absolute;
337
+ top: 1.10rem;
338
+ content: attr(data-date);
339
+ color: var(--input-color);
340
+ text-indent: 0;
341
+ }
342
+
343
+ &:focus-visible {
344
+ text-indent: 0;
345
+ }
346
+
347
+ &:focus-visible:after {
348
+ text-indent: -9999px;
349
+ }
350
+ }
@@ -1,6 +1,3 @@
1
- /* Select Field
2
- ========================================================================== */
3
-
4
1
  select.browser-default {
5
2
  opacity: 1;
6
3
  color: var(--md-sys-color-on-background);
@@ -16,11 +13,6 @@ select {
16
13
  height: 3rem;
17
14
  }
18
15
 
19
- // .select-label {
20
- // position: absolute;
21
- // }
22
-
23
-
24
16
  .select-wrapper {
25
17
  /*
26
18
  &.valid .helper-text[data-success],
@@ -57,8 +49,6 @@ select {
57
49
  }
58
50
  */
59
51
 
60
-
61
-
62
52
  position: relative;
63
53
 
64
54
  /*
@@ -95,14 +85,6 @@ select {
95
85
  fill: var(--md-sys-color-on-background);
96
86
  }
97
87
 
98
- /*
99
- & + label {
100
- position: absolute;
101
- top: -26px;
102
- font-size: .8rem;
103
- }
104
- */
105
-
106
88
  // Hide select with overflow hidden instead of using display none
107
89
  // (this prevents form validation errors with hidden form elements)
108
90
  .hide-select {
@@ -115,7 +97,6 @@ select {
115
97
  }
116
98
  }
117
99
 
118
- // Disabled styles
119
100
  select:disabled {
120
101
  color: var(--md-sys-color-on-surface);
121
102
  }
@@ -196,20 +177,19 @@ body.keyboard-focused {
196
177
  // Optgroup styles
197
178
  .select-dropdown li.optgroup {
198
179
  border-top: 1px solid rgba(0, 0, 0, 0.04);
199
-
200
180
  &.selected > span {
201
181
  color: var(--md-sys-color-on-background);
202
182
  }
203
-
204
183
  & > span {
205
184
  color: var(--md-sys-color-on-surface-variant);
206
185
  }
207
-
208
186
  & ~ li.optgroup-option {
209
187
  padding-left: 1rem;
210
188
  }
211
189
  }
212
190
 
191
+ /*
213
192
  .select-dropdown .selected {
214
193
  color: red;
215
194
  }
195
+ */