shineout 1.6.6 → 1.7.0-rc.12

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 (247) hide show
  1. package/css/Alert/styles/alert.css +4 -4
  2. package/css/Button/styles/button.css +189 -0
  3. package/css/Carousel/index.js +9 -0
  4. package/css/Cascader/Result.js +84 -40
  5. package/css/Cascader/styles/cascader.css +19 -6
  6. package/css/Checkbox/styles/checkinput.css +30 -0
  7. package/css/DataList/List.js +10 -9
  8. package/css/DatePicker/Day.js +9 -11
  9. package/css/DatePicker/Month.js +4 -2
  10. package/css/DatePicker/Picker.js +3 -1
  11. package/css/DatePicker/Range.js +4 -2
  12. package/css/DatePicker/Time.js +6 -4
  13. package/css/DatePicker/TimeScroll.js +3 -3
  14. package/css/DatePicker/Year.js +4 -2
  15. package/css/DatePicker/paramUtils.js +130 -0
  16. package/css/DatePicker/utils.js +168 -156
  17. package/css/Datum/List.js +5 -0
  18. package/css/Form/FieldSet.js +3 -3
  19. package/css/Form/Form.js +3 -0
  20. package/css/Form/formContext.js +5 -2
  21. package/css/Form/inputable.js +11 -3
  22. package/css/Menu/Item.js +17 -11
  23. package/css/Menu/List.js +8 -2
  24. package/css/Menu/Root.js +11 -4
  25. package/css/Menu/styles/menu.css +150 -22
  26. package/css/Message/styles/message.css +3 -0
  27. package/css/Popover/Confirm.js +7 -4
  28. package/css/Popover/styles/popover.css +3 -0
  29. package/css/Progress/Circle.js +1 -1
  30. package/css/Rate/Rate.js +14 -6
  31. package/css/Select/More.js +78 -8
  32. package/css/Select/Result.js +53 -15
  33. package/css/Select/filter.js +6 -3
  34. package/css/Select/styles/select.css +26 -3
  35. package/css/Spin/Spin.js +11 -11
  36. package/css/Spin/index.js +42 -6
  37. package/css/Spin/styles/spin.css +24 -0
  38. package/css/Table/SeperateTable.js +27 -3
  39. package/css/Table/SimpleTable.js +28 -7
  40. package/css/Table/Table.js +37 -27
  41. package/css/Table/Tbody.js +6 -2
  42. package/css/Table/Thead.js +19 -2
  43. package/css/Table/styles/table.css +3 -0
  44. package/css/Tabs/Header.js +5 -3
  45. package/css/Tabs/Link.js +0 -1
  46. package/css/Tabs/Tab.js +1 -2
  47. package/css/Tabs/Tabs.js +12 -8
  48. package/css/Tabs/styles/tabs.css +34 -4
  49. package/css/Tag/styles/tag.css +2 -1
  50. package/css/TreeSelect/Result.js +52 -16
  51. package/css/TreeSelect/styles/treeSelect.css +24 -1
  52. package/css/Upload/Image.js +2 -1
  53. package/css/Upload/Upload.js +33 -7
  54. package/css/Upload/request.js +7 -1
  55. package/css/Upload/styles/upload.css +12 -0
  56. package/css/hoc/coin.js +1 -1
  57. package/css/index.js +1 -1
  58. package/css/styles/expose.css +25 -0
  59. package/css/utils/dom/element.js +65 -2
  60. package/css/utils/expose.js +50 -8
  61. package/css/utils/lazyload.js +24 -7
  62. package/css/utils/vars-inject.js +272 -4
  63. package/dist/shineout.js +6249 -10731
  64. package/dist/shineout.js.map +1 -1
  65. package/dist/shineout.min.js +1 -1
  66. package/dist/theme.antd.css +1 -1
  67. package/dist/theme.antd2.css +1 -1
  68. package/dist/theme.default.css +1 -1
  69. package/dist/theme.shineout.css +1 -1
  70. package/es/@types/common.d.ts +21 -21
  71. package/es/Alert/styles/alert.less +3 -3
  72. package/es/Carousel/index.js +8 -0
  73. package/es/Cascader/Result.js +48 -5
  74. package/es/Cascader/index.d.ts +1 -1
  75. package/es/Cascader/styles/cascader.less +11 -4
  76. package/es/Checkbox/index.d.ts +21 -21
  77. package/es/DataList/List.js +7 -10
  78. package/es/DatePicker/Day.js +7 -11
  79. package/es/DatePicker/Month.js +3 -2
  80. package/es/DatePicker/Picker.js +2 -1
  81. package/es/DatePicker/Range.js +3 -2
  82. package/es/DatePicker/Time.js +3 -2
  83. package/es/DatePicker/TimeScroll.js +2 -2
  84. package/es/DatePicker/Year.js +3 -2
  85. package/es/DatePicker/index.d.ts +61 -61
  86. package/es/DatePicker/paramUtils.js +87 -0
  87. package/es/DatePicker/utils.js +153 -101
  88. package/es/Datum/List.js +5 -0
  89. package/es/Form/FieldSet.js +3 -3
  90. package/es/Form/Form.js +1 -0
  91. package/es/Form/formContext.js +3 -1
  92. package/es/Form/inputable.js +7 -4
  93. package/es/Icon/index.d.ts +13 -10
  94. package/es/Input/index.d.ts +51 -51
  95. package/es/Menu/Item.js +8 -6
  96. package/es/Menu/List.js +6 -0
  97. package/es/Menu/Root.js +7 -0
  98. package/es/Menu/index.d.ts +24 -6
  99. package/es/Menu/styles/menu.less +124 -9
  100. package/es/Message/styles/message.less +3 -0
  101. package/es/Modal/index.d.ts +0 -9
  102. package/es/Popover/Confirm.js +5 -3
  103. package/es/Popover/index.d.ts +14 -15
  104. package/es/Popover/styles/popover.less +4 -0
  105. package/es/Progress/Circle.js +1 -1
  106. package/es/Progress/index.d.ts +4 -4
  107. package/es/Radio/index.d.ts +8 -0
  108. package/es/Rate/Rate.js +8 -4
  109. package/es/Rate/index.d.ts +6 -6
  110. package/es/Rule/index.d.ts +4 -3
  111. package/es/Select/More.js +101 -21
  112. package/es/Select/Result.js +59 -16
  113. package/es/Select/filter.js +3 -1
  114. package/es/Select/styles/select.less +17 -3
  115. package/es/Slider/index.d.ts +26 -26
  116. package/es/Spin/Spin.js +8 -13
  117. package/es/Spin/index.d.ts +23 -11
  118. package/es/Spin/index.js +29 -8
  119. package/es/Spin/styles/spin.less +13 -0
  120. package/es/Sticky/index.d.ts +11 -11
  121. package/es/Table/SeperateTable.js +17 -4
  122. package/es/Table/SimpleTable.js +16 -4
  123. package/es/Table/Table.js +8 -4
  124. package/es/Table/Tbody.js +4 -2
  125. package/es/Table/Thead.js +15 -2
  126. package/es/Table/index.d.ts +11 -2
  127. package/es/Table/styles/table.less +4 -0
  128. package/es/Tabs/Header.js +3 -2
  129. package/es/Tabs/Link.js +0 -1
  130. package/es/Tabs/Tab.js +1 -1
  131. package/es/Tabs/Tabs.js +8 -4
  132. package/es/Tabs/index.d.ts +71 -42
  133. package/es/Tabs/styles/tabs.less +35 -5
  134. package/es/Tag/styles/tag.less +1 -1
  135. package/es/Tree/index.d.ts +53 -53
  136. package/es/TreeSelect/Result.js +53 -21
  137. package/es/TreeSelect/index.d.ts +65 -65
  138. package/es/TreeSelect/styles/treeSelect.less +16 -1
  139. package/es/Upload/Image.js +1 -0
  140. package/es/Upload/Upload.js +65 -43
  141. package/es/Upload/index.d.ts +40 -8
  142. package/es/Upload/request.js +4 -0
  143. package/es/Upload/styles/upload.less +13 -0
  144. package/es/hoc/coin.js +1 -1
  145. package/es/index.js +1 -1
  146. package/es/styles/expose.less +25 -0
  147. package/es/styles/mixins/caret.less +15 -0
  148. package/es/styles/themes/antd.less +5 -4
  149. package/es/styles/themes/base.less +3 -3
  150. package/es/styles/themes/bootstrap.less +6 -7
  151. package/es/styles/themes/cssvar.less +52 -0
  152. package/es/styles/themes/shineout.less +5 -4
  153. package/es/styles/variables.less +2 -2
  154. package/es/utils/dom/element.js +39 -0
  155. package/es/utils/expose.js +21 -1
  156. package/es/utils/lazyload.js +16 -8
  157. package/es/utils/vars-inject.js +315 -4
  158. package/lib/@types/common.d.ts +21 -21
  159. package/lib/Alert/styles/alert.less +3 -3
  160. package/lib/Carousel/index.js +9 -0
  161. package/lib/Cascader/Result.js +84 -40
  162. package/lib/Cascader/index.d.ts +1 -1
  163. package/lib/Cascader/styles/cascader.less +11 -4
  164. package/lib/Checkbox/index.d.ts +21 -21
  165. package/lib/DataList/List.js +10 -9
  166. package/lib/DatePicker/Day.js +9 -11
  167. package/lib/DatePicker/Month.js +4 -2
  168. package/lib/DatePicker/Picker.js +3 -1
  169. package/lib/DatePicker/Range.js +4 -2
  170. package/lib/DatePicker/Time.js +6 -4
  171. package/lib/DatePicker/TimeScroll.js +3 -3
  172. package/lib/DatePicker/Year.js +4 -2
  173. package/lib/DatePicker/index.d.ts +61 -61
  174. package/lib/DatePicker/paramUtils.js +130 -0
  175. package/lib/DatePicker/utils.js +168 -156
  176. package/lib/Datum/List.js +5 -0
  177. package/lib/Form/FieldSet.js +3 -3
  178. package/lib/Form/Form.js +3 -0
  179. package/lib/Form/formContext.js +5 -2
  180. package/lib/Form/inputable.js +11 -3
  181. package/lib/Icon/index.d.ts +13 -10
  182. package/lib/Input/index.d.ts +51 -51
  183. package/lib/Menu/Item.js +17 -11
  184. package/lib/Menu/List.js +8 -2
  185. package/lib/Menu/Root.js +11 -4
  186. package/lib/Menu/index.d.ts +24 -6
  187. package/lib/Menu/styles/menu.less +124 -9
  188. package/lib/Message/styles/message.less +3 -0
  189. package/lib/Modal/index.d.ts +0 -9
  190. package/lib/Popover/Confirm.js +7 -4
  191. package/lib/Popover/index.d.ts +14 -15
  192. package/lib/Popover/styles/popover.less +4 -0
  193. package/lib/Progress/Circle.js +1 -1
  194. package/lib/Progress/index.d.ts +4 -4
  195. package/lib/Radio/index.d.ts +8 -0
  196. package/lib/Rate/Rate.js +14 -6
  197. package/lib/Rate/index.d.ts +6 -6
  198. package/lib/Rule/index.d.ts +4 -3
  199. package/lib/Select/More.js +78 -8
  200. package/lib/Select/Result.js +53 -15
  201. package/lib/Select/filter.js +6 -3
  202. package/lib/Select/styles/select.less +17 -3
  203. package/lib/Slider/index.d.ts +26 -26
  204. package/lib/Spin/Spin.js +11 -11
  205. package/lib/Spin/index.d.ts +23 -11
  206. package/lib/Spin/index.js +42 -6
  207. package/lib/Spin/styles/spin.less +13 -0
  208. package/lib/Sticky/index.d.ts +11 -11
  209. package/lib/Table/SeperateTable.js +27 -3
  210. package/lib/Table/SimpleTable.js +28 -7
  211. package/lib/Table/Table.js +37 -27
  212. package/lib/Table/Tbody.js +6 -2
  213. package/lib/Table/Thead.js +19 -2
  214. package/lib/Table/index.d.ts +11 -2
  215. package/lib/Table/styles/table.less +4 -0
  216. package/lib/Tabs/Header.js +5 -3
  217. package/lib/Tabs/Link.js +0 -1
  218. package/lib/Tabs/Tab.js +1 -2
  219. package/lib/Tabs/Tabs.js +12 -8
  220. package/lib/Tabs/index.d.ts +71 -42
  221. package/lib/Tabs/styles/tabs.less +35 -5
  222. package/lib/Tag/styles/tag.less +1 -1
  223. package/lib/Tree/index.d.ts +53 -53
  224. package/lib/TreeSelect/Result.js +52 -16
  225. package/lib/TreeSelect/index.d.ts +65 -65
  226. package/lib/TreeSelect/styles/treeSelect.less +16 -1
  227. package/lib/Upload/Image.js +2 -1
  228. package/lib/Upload/Upload.js +33 -7
  229. package/lib/Upload/index.d.ts +40 -8
  230. package/lib/Upload/request.js +7 -1
  231. package/lib/Upload/styles/upload.less +13 -0
  232. package/lib/hoc/coin.js +1 -1
  233. package/lib/index.d.ts +1 -1
  234. package/lib/index.js +1 -1
  235. package/lib/styles/expose.less +25 -0
  236. package/lib/styles/mixins/caret.less +15 -0
  237. package/lib/styles/themes/antd.less +5 -4
  238. package/lib/styles/themes/base.less +3 -3
  239. package/lib/styles/themes/bootstrap.less +6 -7
  240. package/lib/styles/themes/cssvar.less +52 -0
  241. package/lib/styles/themes/shineout.less +5 -4
  242. package/lib/styles/variables.less +2 -2
  243. package/lib/utils/dom/element.js +65 -2
  244. package/lib/utils/expose.js +50 -8
  245. package/lib/utils/lazyload.js +24 -7
  246. package/lib/utils/vars-inject.js +272 -4
  247. package/package.json +2 -2
@@ -3,7 +3,7 @@
3
3
  display: -webkit-box;
4
4
  display: -ms-flexbox;
5
5
  display: flex;
6
- padding: 8px 16px;
6
+ padding: var(--alert-padding-y, 15px) var(--alert-padding-x, 16px);
7
7
  margin-bottom: 20px;
8
8
  border: var(--alert-border-width, 1px) solid transparent;
9
9
  border-radius: var(--alert-border-radius, 4px);
@@ -23,14 +23,14 @@
23
23
  color: inherit;
24
24
  }
25
25
  .so-alert-with-close {
26
- padding-right: 36px;
26
+ padding-right: calc(var(--alert-padding-x, 16px) + 20px);
27
27
  }
28
28
  .so-alert-link {
29
29
  font-weight: bold;
30
30
  }
31
31
  .so-alert-close {
32
32
  position: absolute;
33
- top: 8px;
33
+ top: var(--alert-padding-y, 15px);
34
34
  right: 12px;
35
35
  display: block;
36
36
  }
@@ -52,7 +52,7 @@
52
52
  }
53
53
  .so-alert-icon {
54
54
  display: block;
55
- margin-top: 2px;
55
+ margin-top: var(--alert-icon-margin-top, 2px);
56
56
  }
57
57
  .so-alert-content {
58
58
  -webkit-box-flex: 1;
@@ -69,12 +69,42 @@ fieldset[disabled] a.so-button {
69
69
  -webkit-transition: all 0.15s ease-in-out;
70
70
  transition: all 0.15s ease-in-out;
71
71
  }
72
+ @-webkit-keyframes btn-focus-default {
73
+ 0% {
74
+ -webkit-box-shadow: 0 0 0 0 var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
75
+ box-shadow: 0 0 0 0 var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
76
+ }
77
+ 50% {
78
+ -webkit-box-shadow: 0 0 0 0.4em var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
79
+ box-shadow: 0 0 0 0.4em var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
80
+ }
81
+ 100% {
82
+ -webkit-box-shadow: 0 0 0 0.8em var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
83
+ box-shadow: 0 0 0 0.8em var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
84
+ }
85
+ }
86
+ @keyframes btn-focus-default {
87
+ 0% {
88
+ -webkit-box-shadow: 0 0 0 0 var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
89
+ box-shadow: 0 0 0 0 var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
90
+ }
91
+ 50% {
92
+ -webkit-box-shadow: 0 0 0 0.4em var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
93
+ box-shadow: 0 0 0 0.4em var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
94
+ }
95
+ 100% {
96
+ -webkit-box-shadow: 0 0 0 0.8em var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
97
+ box-shadow: 0 0 0 0.8em var(--gray-300-fade-60, rgba(222, 226, 230, 0.6));
98
+ }
99
+ }
72
100
  .so-button-default:focus,
73
101
  .so-button-default:hover {
102
+ border-color: var(--primary-color, #3399ff);
74
103
  background-color: #fff;
75
104
  color: var(--button-default-text-color, #333);
76
105
  }
77
106
  .so-button-default:active {
107
+ border-color: var(--primary-color, #3399ff);
78
108
  -webkit-animation: btn-focus-default 0.4s ease-out;
79
109
  animation: btn-focus-default 0.4s ease-out;
80
110
  background-color: #fff;
@@ -148,12 +178,42 @@ fieldset[disabled] .so-button-default.so-button-outline:not(.so-button-disabled)
148
178
  -webkit-transition: all 0.15s ease-in-out;
149
179
  transition: all 0.15s ease-in-out;
150
180
  }
181
+ @-webkit-keyframes btn-focus-primary {
182
+ 0% {
183
+ -webkit-box-shadow: 0 0 0 0 var(--primary-color-dark-5_fade-60, rgba(25, 140, 255, 0.6));
184
+ box-shadow: 0 0 0 0 var(--primary-color-dark-5_fade-60, rgba(25, 140, 255, 0.6));
185
+ }
186
+ 50% {
187
+ -webkit-box-shadow: 0 0 0 0.4em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
188
+ box-shadow: 0 0 0 0.4em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
189
+ }
190
+ 100% {
191
+ -webkit-box-shadow: 0 0 0 0.8em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
192
+ box-shadow: 0 0 0 0.8em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
193
+ }
194
+ }
195
+ @keyframes btn-focus-primary {
196
+ 0% {
197
+ -webkit-box-shadow: 0 0 0 0 var(--primary-color-dark-5_fade-60, rgba(25, 140, 255, 0.6));
198
+ box-shadow: 0 0 0 0 var(--primary-color-dark-5_fade-60, rgba(25, 140, 255, 0.6));
199
+ }
200
+ 50% {
201
+ -webkit-box-shadow: 0 0 0 0.4em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
202
+ box-shadow: 0 0 0 0.4em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
203
+ }
204
+ 100% {
205
+ -webkit-box-shadow: 0 0 0 0.8em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
206
+ box-shadow: 0 0 0 0.8em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
207
+ }
208
+ }
151
209
  .so-button-primary:focus,
152
210
  .so-button-primary:hover {
211
+ border-color: var(--primary-color, #3399ff);
153
212
  background-color: var(--primary-color-dark-btn-hover, #007fff);
154
213
  color: #fff;
155
214
  }
156
215
  .so-button-primary:active {
216
+ border-color: var(--primary-color, #3399ff);
157
217
  -webkit-animation: btn-focus-primary 0.4s ease-out;
158
218
  animation: btn-focus-primary 0.4s ease-out;
159
219
  background-color: var(--primary-color-dark-btn-hover, #007fff);
@@ -242,10 +302,12 @@ fieldset[disabled] .so-button-primary.so-button-outline:not(.so-button-disabled)
242
302
  }
243
303
  .so-button-secondary:focus,
244
304
  .so-button-secondary:hover {
305
+ border-color: var(--secondary-color, #999999);
245
306
  background-color: var(--secondary-color-dark-btn-hover, #808080);
246
307
  color: #fff;
247
308
  }
248
309
  .so-button-secondary:active {
310
+ border-color: var(--secondary-color, #999999);
249
311
  -webkit-animation: btn-focus-secondary 0.4s ease-out;
250
312
  animation: btn-focus-secondary 0.4s ease-out;
251
313
  background-color: var(--secondary-color-dark-btn-hover, #808080);
@@ -304,12 +366,42 @@ fieldset[disabled] .so-button-secondary.so-button-outline:not(.so-button-disable
304
366
  -webkit-transition: all 0.15s ease-in-out;
305
367
  transition: all 0.15s ease-in-out;
306
368
  }
369
+ @-webkit-keyframes btn-focus-success {
370
+ 0% {
371
+ -webkit-box-shadow: 0 0 0 0 var(--success-color-dark-5_fade-60, rgba(0, 179, 89, 0.6));
372
+ box-shadow: 0 0 0 0 var(--success-color-dark-5_fade-60, rgba(0, 179, 89, 0.6));
373
+ }
374
+ 50% {
375
+ -webkit-box-shadow: 0 0 0 0.4em var(--success-color-dark-5_fade-0, rgba(0, 179, 89, 0));
376
+ box-shadow: 0 0 0 0.4em var(--success-color-dark-5_fade-0, rgba(0, 179, 89, 0));
377
+ }
378
+ 100% {
379
+ -webkit-box-shadow: 0 0 0 0.8em var(--success-color-dark-5_fade-0, rgba(0, 179, 89, 0));
380
+ box-shadow: 0 0 0 0.8em var(--success-color-dark-5_fade-0, rgba(0, 179, 89, 0));
381
+ }
382
+ }
383
+ @keyframes btn-focus-success {
384
+ 0% {
385
+ -webkit-box-shadow: 0 0 0 0 var(--success-color-dark-5_fade-60, rgba(0, 179, 89, 0.6));
386
+ box-shadow: 0 0 0 0 var(--success-color-dark-5_fade-60, rgba(0, 179, 89, 0.6));
387
+ }
388
+ 50% {
389
+ -webkit-box-shadow: 0 0 0 0.4em var(--success-color-dark-5_fade-0, rgba(0, 179, 89, 0));
390
+ box-shadow: 0 0 0 0.4em var(--success-color-dark-5_fade-0, rgba(0, 179, 89, 0));
391
+ }
392
+ 100% {
393
+ -webkit-box-shadow: 0 0 0 0.8em var(--success-color-dark-5_fade-0, rgba(0, 179, 89, 0));
394
+ box-shadow: 0 0 0 0.8em var(--success-color-dark-5_fade-0, rgba(0, 179, 89, 0));
395
+ }
396
+ }
307
397
  .so-button-success:focus,
308
398
  .so-button-success:hover {
399
+ border-color: var(--success-color, #00cc66);
309
400
  background-color: var(--success-color-dark-btn-hover, #00994d);
310
401
  color: #fff;
311
402
  }
312
403
  .so-button-success:active {
404
+ border-color: var(--success-color, #00cc66);
313
405
  -webkit-animation: btn-focus-success 0.4s ease-out;
314
406
  animation: btn-focus-success 0.4s ease-out;
315
407
  background-color: var(--success-color-dark-btn-hover, #00994d);
@@ -368,12 +460,42 @@ fieldset[disabled] .so-button-success.so-button-outline:not(.so-button-disabled)
368
460
  -webkit-transition: all 0.15s ease-in-out;
369
461
  transition: all 0.15s ease-in-out;
370
462
  }
463
+ @-webkit-keyframes btn-focus-info {
464
+ 0% {
465
+ -webkit-box-shadow: 0 0 0 0 var(--info-color-dark-5_fade-60, rgba(20, 142, 161, 0.6));
466
+ box-shadow: 0 0 0 0 var(--info-color-dark-5_fade-60, rgba(20, 142, 161, 0.6));
467
+ }
468
+ 50% {
469
+ -webkit-box-shadow: 0 0 0 0.4em var(--info-color-dark-5_fade-0, rgba(20, 142, 161, 0));
470
+ box-shadow: 0 0 0 0.4em var(--info-color-dark-5_fade-0, rgba(20, 142, 161, 0));
471
+ }
472
+ 100% {
473
+ -webkit-box-shadow: 0 0 0 0.8em var(--info-color-dark-5_fade-0, rgba(20, 142, 161, 0));
474
+ box-shadow: 0 0 0 0.8em var(--info-color-dark-5_fade-0, rgba(20, 142, 161, 0));
475
+ }
476
+ }
477
+ @keyframes btn-focus-info {
478
+ 0% {
479
+ -webkit-box-shadow: 0 0 0 0 var(--info-color-dark-5_fade-60, rgba(20, 142, 161, 0.6));
480
+ box-shadow: 0 0 0 0 var(--info-color-dark-5_fade-60, rgba(20, 142, 161, 0.6));
481
+ }
482
+ 50% {
483
+ -webkit-box-shadow: 0 0 0 0.4em var(--info-color-dark-5_fade-0, rgba(20, 142, 161, 0));
484
+ box-shadow: 0 0 0 0.4em var(--info-color-dark-5_fade-0, rgba(20, 142, 161, 0));
485
+ }
486
+ 100% {
487
+ -webkit-box-shadow: 0 0 0 0.8em var(--info-color-dark-5_fade-0, rgba(20, 142, 161, 0));
488
+ box-shadow: 0 0 0 0.8em var(--info-color-dark-5_fade-0, rgba(20, 142, 161, 0));
489
+ }
490
+ }
371
491
  .so-button-info:focus,
372
492
  .so-button-info:hover {
493
+ border-color: var(--info-color, #17a2b8);
373
494
  background-color: var(--info-color-dark-btn-hover, #117a8b);
374
495
  color: #fff;
375
496
  }
376
497
  .so-button-info:active {
498
+ border-color: var(--info-color, #17a2b8);
377
499
  -webkit-animation: btn-focus-info 0.4s ease-out;
378
500
  animation: btn-focus-info 0.4s ease-out;
379
501
  background-color: var(--info-color-dark-btn-hover, #117a8b);
@@ -432,12 +554,42 @@ fieldset[disabled] .so-button-info.so-button-outline:not(.so-button-disabled):ac
432
554
  -webkit-transition: all 0.15s ease-in-out;
433
555
  transition: all 0.15s ease-in-out;
434
556
  }
557
+ @-webkit-keyframes btn-focus-warning {
558
+ 0% {
559
+ -webkit-box-shadow: 0 0 0 0 var(--warning-color-dark-5_fade-60, rgba(230, 138, 0, 0.6));
560
+ box-shadow: 0 0 0 0 var(--warning-color-dark-5_fade-60, rgba(230, 138, 0, 0.6));
561
+ }
562
+ 50% {
563
+ -webkit-box-shadow: 0 0 0 0.4em var(--warning-color-dark-5_fade-0, rgba(230, 138, 0, 0));
564
+ box-shadow: 0 0 0 0.4em var(--warning-color-dark-5_fade-0, rgba(230, 138, 0, 0));
565
+ }
566
+ 100% {
567
+ -webkit-box-shadow: 0 0 0 0.8em var(--warning-color-dark-5_fade-0, rgba(230, 138, 0, 0));
568
+ box-shadow: 0 0 0 0.8em var(--warning-color-dark-5_fade-0, rgba(230, 138, 0, 0));
569
+ }
570
+ }
571
+ @keyframes btn-focus-warning {
572
+ 0% {
573
+ -webkit-box-shadow: 0 0 0 0 var(--warning-color-dark-5_fade-60, rgba(230, 138, 0, 0.6));
574
+ box-shadow: 0 0 0 0 var(--warning-color-dark-5_fade-60, rgba(230, 138, 0, 0.6));
575
+ }
576
+ 50% {
577
+ -webkit-box-shadow: 0 0 0 0.4em var(--warning-color-dark-5_fade-0, rgba(230, 138, 0, 0));
578
+ box-shadow: 0 0 0 0.4em var(--warning-color-dark-5_fade-0, rgba(230, 138, 0, 0));
579
+ }
580
+ 100% {
581
+ -webkit-box-shadow: 0 0 0 0.8em var(--warning-color-dark-5_fade-0, rgba(230, 138, 0, 0));
582
+ box-shadow: 0 0 0 0.8em var(--warning-color-dark-5_fade-0, rgba(230, 138, 0, 0));
583
+ }
584
+ }
435
585
  .so-button-warning:focus,
436
586
  .so-button-warning:hover {
587
+ border-color: var(--warning-color, #ff9900);
437
588
  background-color: var(--warning-color-dark-btn-hover, #cc7a00);
438
589
  color: #fff;
439
590
  }
440
591
  .so-button-warning:active {
592
+ border-color: var(--warning-color, #ff9900);
441
593
  -webkit-animation: btn-focus-warning 0.4s ease-out;
442
594
  animation: btn-focus-warning 0.4s ease-out;
443
595
  background-color: var(--warning-color-dark-btn-hover, #cc7a00);
@@ -497,15 +649,45 @@ fieldset[disabled] .so-button-warning.so-button-outline:not(.so-button-disabled)
497
649
  -webkit-transition: all 0.15s ease-in-out;
498
650
  transition: all 0.15s ease-in-out;
499
651
  }
652
+ @-webkit-keyframes btn-focus-danger {
653
+ 0% {
654
+ -webkit-box-shadow: 0 0 0 0 var(--danger-color-dark-5_fade-60, rgba(247, 61, 61, 0.6));
655
+ box-shadow: 0 0 0 0 var(--danger-color-dark-5_fade-60, rgba(247, 61, 61, 0.6));
656
+ }
657
+ 50% {
658
+ -webkit-box-shadow: 0 0 0 0.4em var(--danger-color-dark-5_fade-0, rgba(247, 61, 61, 0));
659
+ box-shadow: 0 0 0 0.4em var(--danger-color-dark-5_fade-0, rgba(247, 61, 61, 0));
660
+ }
661
+ 100% {
662
+ -webkit-box-shadow: 0 0 0 0.8em var(--danger-color-dark-5_fade-0, rgba(247, 61, 61, 0));
663
+ box-shadow: 0 0 0 0.8em var(--danger-color-dark-5_fade-0, rgba(247, 61, 61, 0));
664
+ }
665
+ }
666
+ @keyframes btn-focus-danger {
667
+ 0% {
668
+ -webkit-box-shadow: 0 0 0 0 var(--danger-color-dark-5_fade-60, rgba(247, 61, 61, 0.6));
669
+ box-shadow: 0 0 0 0 var(--danger-color-dark-5_fade-60, rgba(247, 61, 61, 0.6));
670
+ }
671
+ 50% {
672
+ -webkit-box-shadow: 0 0 0 0.4em var(--danger-color-dark-5_fade-0, rgba(247, 61, 61, 0));
673
+ box-shadow: 0 0 0 0.4em var(--danger-color-dark-5_fade-0, rgba(247, 61, 61, 0));
674
+ }
675
+ 100% {
676
+ -webkit-box-shadow: 0 0 0 0.8em var(--danger-color-dark-5_fade-0, rgba(247, 61, 61, 0));
677
+ box-shadow: 0 0 0 0.8em var(--danger-color-dark-5_fade-0, rgba(247, 61, 61, 0));
678
+ }
679
+ }
500
680
  .so-button-error:focus,
501
681
  .so-button-danger:focus,
502
682
  .so-button-error:hover,
503
683
  .so-button-danger:hover {
684
+ border-color: var(--danger-color, #f85555);
504
685
  background-color: var(--danger-color-dark-btn-hover, #f62424);
505
686
  color: #fff;
506
687
  }
507
688
  .so-button-error:active,
508
689
  .so-button-danger:active {
690
+ border-color: var(--danger-color, #f85555);
509
691
  -webkit-animation: btn-focus-danger 0.4s ease-out;
510
692
  animation: btn-focus-danger 0.4s ease-out;
511
693
  background-color: var(--danger-color-dark-btn-hover, #f62424);
@@ -774,6 +956,13 @@ fieldset[disabled] .so-button-link:focus {
774
956
  .so-button-group .so-button.so-button-outline:not(.so-button-disabled):focus:before {
775
957
  border-left-color: inherit;
776
958
  }
959
+ .so-button-group .so-button.so-button-outline:not(.so-button-disabled):hover + .so-button:not(.so-button-disabled):before,
960
+ .so-button-group .so-button.so-button-outline:not(.so-button-disabled):active + .so-button:not(.so-button-disabled):before,
961
+ .so-button-group .so-button.so-button-outline:not(.so-button-disabled):focus + .so-button:not(.so-button-disabled):before {
962
+ height: 0;
963
+ -webkit-transition: none;
964
+ transition: none;
965
+ }
777
966
  .so-button-from-input-group .so-button:before {
778
967
  border-left: none;
779
968
  }
@@ -67,6 +67,15 @@ function (_PureComponent) {
67
67
  }
68
68
  };
69
69
 
70
+ _proto.componentWillUnmount = function componentWillUnmount() {
71
+ _PureComponent.prototype.componentWillUnmount.call(this);
72
+
73
+ if (this.$timeout) {
74
+ clearTimeout(this.$timeout);
75
+ this.$timeout = null;
76
+ }
77
+ };
78
+
70
79
  _proto.setNext = function setNext(next) {
71
80
  var _this2 = this;
72
81
 
@@ -31,7 +31,9 @@ var _Input = _interopRequireDefault(require("./Input"));
31
31
 
32
32
  var _icons = _interopRequireDefault(require("../icons"));
33
33
 
34
- var _More = _interopRequireDefault(require("../Select/More"));
34
+ var _More = _interopRequireWildcard(require("../Select/More"));
35
+
36
+ var _element = require("../utils/dom/element");
35
37
 
36
38
  var _is = require("../utils/is");
37
39
 
@@ -73,10 +75,15 @@ function (_PureComponent) {
73
75
  var _this;
74
76
 
75
77
  _this = _PureComponent.call(this, props) || this;
78
+ _this.state = {
79
+ more: -1
80
+ };
76
81
  _this.handleNodeClick = _this.handleNodeClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
77
82
  _this.renderItem = _this.renderItem.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
78
83
  _this.removeTargetNode = _this.removeTargetNode.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
79
84
  _this.handleUpdate = _this.handleUpdate.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
85
+ _this.bindResult = _this.bindResult.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
86
+ _this.resetMore = _this.resetMore.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
80
87
  return _this;
81
88
  }
82
89
 
@@ -85,17 +92,52 @@ function (_PureComponent) {
85
92
  _proto.componentDidMount = function componentDidMount() {
86
93
  var datum = this.props.datum;
87
94
  datum.subscribe(_types.CHANGE_TOPIC, this.handleUpdate);
95
+ var compressed = this.props.compressed;
96
+
97
+ if (compressed) {
98
+ this.cancelResizeObserver = (0, _element.addResizeObserver)(this.resultEl, this.resetMore);
99
+ }
100
+ };
101
+
102
+ _proto.componentDidUpdate = function componentDidUpdate(preProps) {
103
+ var _this$props = this.props,
104
+ compressed = _this$props.compressed,
105
+ _this$props$value = _this$props.value,
106
+ value = _this$props$value === void 0 ? [] : _this$props$value,
107
+ onFilter = _this$props.onFilter;
108
+
109
+ if (compressed) {
110
+ if ((preProps.value || []).join('') !== value.join('')) {
111
+ this.resetMore();
112
+ } else if (value.length && this.shouldResetMore) {
113
+ this.shouldResetMore = false;
114
+ this.state.more = (0, _More.getResetMore)(onFilter, this.resultEl, this.resultEl.querySelectorAll("." + (0, _styles3.cascaderClass)('item')));
115
+ this.forceUpdate();
116
+ }
117
+ }
88
118
  };
89
119
 
90
120
  _proto.componentWillUnmount = function componentWillUnmount() {
91
121
  var datum = this.props.datum;
92
122
  datum.unsubscribe(_types.CHANGE_TOPIC, this.handleUpdate);
123
+ if (this.cancelResizeObserver) this.cancelResizeObserver();
93
124
  };
94
125
 
95
126
  _proto.handleUpdate = function handleUpdate() {
96
127
  this.forceUpdate();
97
128
  };
98
129
 
130
+ _proto.bindResult = function bindResult(el) {
131
+ this.resultEl = el;
132
+ };
133
+
134
+ _proto.resetMore = function resetMore() {
135
+ if (!this.props.compressed) return;
136
+ this.shouldResetMore = true;
137
+ this.state.more = -1;
138
+ this.forceUpdate();
139
+ };
140
+
99
141
  _proto.handleNodeClick = function handleNodeClick(data, show) {
100
142
  if (show === void 0) {
101
143
  show = false;
@@ -150,11 +192,11 @@ function (_PureComponent) {
150
192
  };
151
193
 
152
194
  _proto.renderClear = function renderClear() {
153
- var _this$props = this.props,
154
- clearable = _this$props.clearable,
155
- value = _this$props.value,
156
- disabled = _this$props.disabled,
157
- onClear = _this$props.onClear;
195
+ var _this$props2 = this.props,
196
+ clearable = _this$props2.clearable,
197
+ value = _this$props2.value,
198
+ disabled = _this$props2.disabled,
199
+ onClear = _this$props2.onClear;
158
200
  var className = (0, _classnames.default)((0, _styles2.selectClass)('indicator', 'close'), (0, _styles3.cascaderClass)('close'));
159
201
 
160
202
  if (clearable && value.length > 0 && !disabled) {
@@ -194,30 +236,31 @@ function (_PureComponent) {
194
236
  };
195
237
 
196
238
  _proto.renderMore = function renderMore(list) {
197
- var _this$props2 = this.props,
198
- selectId = _this$props2.selectId,
199
- size = _this$props2.size,
200
- compressed = _this$props2.compressed;
201
- var firstItem = list[0];
202
- return [firstItem, _react.default.createElement(_More.default, {
239
+ var _this$props3 = this.props,
240
+ selectId = _this$props3.selectId,
241
+ size = _this$props3.size,
242
+ compressed = _this$props3.compressed;
243
+ var more = this.state.more;
244
+ return [_react.default.createElement(_More.default, {
203
245
  key: "more",
204
246
  data: list,
205
247
  className: (0, _styles3.cascaderClass)('item', 'item-compressed'),
206
248
  popoverClassName: (0, _styles3.cascaderClass)('popover'),
207
249
  contentClassName: (0, _styles3.cascaderClass)('result', size),
208
250
  dataId: selectId,
251
+ showNum: more,
209
252
  compressed: compressed
210
253
  })];
211
254
  };
212
255
 
213
256
  _proto.renderInput = function renderInput() {
214
- var _this$props3 = this.props,
215
- onFilter = _this$props3.onFilter,
216
- focus = _this$props3.focus,
217
- trim = _this$props3.trim,
218
- focusSelected = _this$props3.focusSelected,
219
- bindInput = _this$props3.bindInput,
220
- filterText = _this$props3.filterText;
257
+ var _this$props4 = this.props,
258
+ onFilter = _this$props4.onFilter,
259
+ focus = _this$props4.focus,
260
+ trim = _this$props4.trim,
261
+ focusSelected = _this$props4.focusSelected,
262
+ bindInput = _this$props4.bindInput,
263
+ filterText = _this$props4.filterText;
221
264
  return _react.default.createElement(_Input.default, {
222
265
  filterText: filterText,
223
266
  ref: bindInput,
@@ -230,9 +273,9 @@ function (_PureComponent) {
230
273
  };
231
274
 
232
275
  _proto.renderPlaceholder = function renderPlaceholder() {
233
- var _this$props4 = this.props,
234
- focus = _this$props4.focus,
235
- onFilter = _this$props4.onFilter;
276
+ var _this$props5 = this.props,
277
+ focus = _this$props5.focus,
278
+ onFilter = _this$props5.onFilter;
236
279
 
237
280
  if (focus && onFilter) {
238
281
  return this.renderInput();
@@ -245,10 +288,10 @@ function (_PureComponent) {
245
288
  };
246
289
 
247
290
  _proto.renderIndicator = function renderIndicator() {
248
- var _this$props5 = this.props,
249
- multiple = _this$props5.multiple,
250
- showArrow = _this$props5.showArrow,
251
- compressed = _this$props5.compressed;
291
+ var _this$props6 = this.props,
292
+ multiple = _this$props6.multiple,
293
+ showArrow = _this$props6.showArrow,
294
+ compressed = _this$props6.compressed;
252
295
  if (!showArrow || multiple && !compressed) return null;
253
296
  var showCaret = !multiple; // eslint-disable-next-line
254
297
 
@@ -260,14 +303,14 @@ function (_PureComponent) {
260
303
  };
261
304
 
262
305
  _proto.renderResult = function renderResult() {
263
- var _this$props6 = this.props,
264
- datum = _this$props6.datum,
265
- value = _this$props6.value,
266
- renderItem = _this$props6.renderItem,
267
- renderResult = _this$props6.renderResult,
268
- compressed = _this$props6.compressed,
269
- focus = _this$props6.focus,
270
- onFilter = _this$props6.onFilter;
306
+ var _this$props7 = this.props,
307
+ datum = _this$props7.datum,
308
+ value = _this$props7.value,
309
+ renderItem = _this$props7.renderItem,
310
+ renderResult = _this$props7.renderResult,
311
+ compressed = _this$props7.compressed,
312
+ focus = _this$props7.focus,
313
+ onFilter = _this$props7.onFilter;
271
314
  var nodes = value.map(function (v) {
272
315
  return datum.getDataById(v);
273
316
  });
@@ -283,7 +326,7 @@ function (_PureComponent) {
283
326
 
284
327
  var items = this.handleNode(nodes, render);
285
328
 
286
- if (compressed && items.length > 1) {
329
+ if (compressed) {
287
330
  items = this.renderMore(items);
288
331
  }
289
332
 
@@ -297,13 +340,14 @@ function (_PureComponent) {
297
340
  };
298
341
 
299
342
  _proto.render = function render() {
300
- var _this$props7 = this.props,
301
- style = _this$props7.style,
302
- value = _this$props7.value,
303
- compressed = _this$props7.compressed,
304
- multiple = _this$props7.multiple;
343
+ var _this$props8 = this.props,
344
+ style = _this$props8.style,
345
+ value = _this$props8.value,
346
+ compressed = _this$props8.compressed,
347
+ multiple = _this$props8.multiple;
305
348
  var result = value.length === 0 ? this.renderPlaceholder() : this.renderResult();
306
349
  return _react.default.createElement("div", {
350
+ ref: this.bindResult,
307
351
  className: (0, _styles3.cascaderClass)('result', multiple && compressed && 'compressed'),
308
352
  style: style
309
353
  }, result, this.renderIndicator(), this.renderClear());
@@ -1,6 +1,9 @@
1
1
  .so-cascader {
2
2
  position: relative;
3
3
  width: 100%;
4
+ display: -webkit-box;
5
+ display: -ms-flexbox;
6
+ display: flex;
4
7
  }
5
8
  .so-cascader:focus {
6
9
  outline: none;
@@ -15,6 +18,9 @@
15
18
  flex-flow: wrap;
16
19
  padding: 6px 24px 0 12px;
17
20
  overflow-y: auto;
21
+ -webkit-box-flex: 1;
22
+ -ms-flex-positive: 1;
23
+ flex-grow: 1;
18
24
  }
19
25
  .so-cascader-result .so-input-placeholder {
20
26
  color: var(--input-placeholder-color, #999);
@@ -40,7 +46,6 @@
40
46
  }
41
47
  .so-cascader-result span-compressed > span,
42
48
  .so-cascader-result .so-cascader-item-compressed > span {
43
- vertical-align: middle;
44
49
  letter-spacing: 2px;
45
50
  padding: 0;
46
51
  margin: 0;
@@ -143,6 +148,10 @@ div.so-cascader-options {
143
148
  display: inline-flex;
144
149
  }
145
150
  .so-cascader-result.so-cascader-compressed {
151
+ -webkit-box-flex: 1;
152
+ -ms-flex-positive: 1;
153
+ flex-grow: 1;
154
+ width: 0;
146
155
  display: -webkit-box;
147
156
  display: -ms-flexbox;
148
157
  display: flex;
@@ -152,16 +161,20 @@ div.so-cascader-options {
152
161
  flex-direction: row;
153
162
  -ms-flex-wrap: nowrap;
154
163
  flex-wrap: nowrap;
164
+ -webkit-box-align: start;
165
+ -ms-flex-align: start;
166
+ align-items: flex-start;
155
167
  padding: 6px 34px 0 12px;
156
168
  }
157
- .so-cascader-result.so-cascader-compressed .so-cascader-item:first-child {
169
+ .so-cascader-result.so-cascader-compressed .so-cascader-item {
158
170
  text-overflow: ellipsis;
159
171
  overflow: hidden;
160
172
  white-space: nowrap;
161
- -webkit-box-flex: 1;
162
- -ms-flex-positive: 1;
163
- flex-grow: 1;
164
- width: 0;
173
+ -ms-flex-negative: 0;
174
+ flex-shrink: 0;
175
+ }
176
+ .so-cascader-result.so-cascader-compressed .so-cascader-input {
177
+ white-space: nowrap;
165
178
  }
166
179
  .so-cascader-result.so-cascader-compressed .so-cascader-close {
167
180
  right: 9px;
@@ -215,12 +215,42 @@ fieldset[disabled] .so-checkinput-button .so-checkinput.so-checkinput-radio:acti
215
215
  .so-checkinput-button .so-checkinput.so-checkinput-checked:not(.so-checkinput-disabled) {
216
216
  z-index: 1;
217
217
  }
218
+ @-webkit-keyframes btn-focus-primary {
219
+ 0% {
220
+ -webkit-box-shadow: 0 0 0 0 var(--primary-color-dark-5_fade-60, rgba(25, 140, 255, 0.6));
221
+ box-shadow: 0 0 0 0 var(--primary-color-dark-5_fade-60, rgba(25, 140, 255, 0.6));
222
+ }
223
+ 50% {
224
+ -webkit-box-shadow: 0 0 0 0.4em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
225
+ box-shadow: 0 0 0 0.4em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
226
+ }
227
+ 100% {
228
+ -webkit-box-shadow: 0 0 0 0.8em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
229
+ box-shadow: 0 0 0 0.8em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
230
+ }
231
+ }
232
+ @keyframes btn-focus-primary {
233
+ 0% {
234
+ -webkit-box-shadow: 0 0 0 0 var(--primary-color-dark-5_fade-60, rgba(25, 140, 255, 0.6));
235
+ box-shadow: 0 0 0 0 var(--primary-color-dark-5_fade-60, rgba(25, 140, 255, 0.6));
236
+ }
237
+ 50% {
238
+ -webkit-box-shadow: 0 0 0 0.4em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
239
+ box-shadow: 0 0 0 0.4em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
240
+ }
241
+ 100% {
242
+ -webkit-box-shadow: 0 0 0 0.8em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
243
+ box-shadow: 0 0 0 0.8em var(--primary-color-dark-5_fade-0, rgba(25, 140, 255, 0));
244
+ }
245
+ }
218
246
  .so-checkinput-button .so-checkinput.so-checkinput-checked:focus,
219
247
  .so-checkinput-button .so-checkinput.so-checkinput-checked:hover {
248
+ border-color: var(--primary-color, #3399ff);
220
249
  background-color: var(--primary-color-dark-btn-hover, #007fff);
221
250
  color: #fff;
222
251
  }
223
252
  .so-checkinput-button .so-checkinput.so-checkinput-checked:active {
253
+ border-color: var(--primary-color, #3399ff);
224
254
  -webkit-animation: btn-focus-primary 0.4s ease-out;
225
255
  animation: btn-focus-primary 0.4s ease-out;
226
256
  background-color: var(--primary-color-dark-btn-hover, #007fff);