button.scss 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. @import './variables.scss';
  2. @import "./animation.scss";
  3. @import './splitButtonGroup.scss';
  4. $module: #{$prefix}-button;
  5. .#{$module} {
  6. @include shadow-0;
  7. @include font-size-regular;
  8. height: $height-button_default;
  9. display: inline-flex;
  10. align-items: center;
  11. justify-content: center;
  12. margin: 0;
  13. cursor: pointer;
  14. user-select: none;
  15. border: $width-button-border $color-button_primary-border-default solid;
  16. border-radius: $radius-button;
  17. padding-left: $spacing-button_default-paddingLeft;
  18. padding-right: $spacing-button_default-paddingRight;
  19. padding-top: $spacing-button_default-paddingTop;
  20. padding-bottom: $spacing-button_default-paddingTop;
  21. font-weight: $font-button-fontWeight;
  22. outline: none;
  23. vertical-align: middle;
  24. white-space: nowrap;
  25. // the specificity of `.#{$module}:focus-visible` may lower than `reset.css` default `focus-visible` style
  26. // so we add a class at the same level
  27. &.#{$module}-primary,
  28. &.#{$module}-secondary,
  29. &.#{$module}-tertiary,
  30. &.#{$module}-warning,
  31. &.#{$module}-danger {
  32. &:focus-visible {
  33. outline: $width-button-outline solid $color-button_primary-outline-focus;
  34. }
  35. }
  36. &-danger {
  37. background-color: $color-button_danger-bg-default;
  38. color: $color-button_danger-text-default;
  39. transition: background-color $transition_duration-button_danger-bg $transition_function-button_danger-bg $transition_delay-button_danger-bg,
  40. border $transition_duration-button_danger-border $transition_function-button_danger-border $transition_delay-button_danger-border;
  41. transform: scale(var($transform-scale-button_danger));
  42. &:hover {
  43. background-color: $color-button_danger-bg-hover;
  44. }
  45. &:active {
  46. background-color: $color-button_danger-bg-active;
  47. }
  48. &.#{$module}-light,
  49. &.#{$module}-borderless {
  50. color: $color-button_danger_borderless-text-default;
  51. }
  52. &:not(.#{$module}-borderless):not(.#{$module}-light):focus-visible {
  53. outline: $width-button-outline solid $color-button_danger-outline-focus;
  54. }
  55. }
  56. &-warning {
  57. background-color: $color-button_warning-bg-default;
  58. color: $color-button_warning-text-default;
  59. transition: background-color $transition_duration-button_warning-bg $transition_function-button_warning-bg $transition_delay-button_warning-bg,
  60. border $transition_duration-button_warning-border $transition_function-button_warning-border $transition_delay-button_warning-border;
  61. transform:scale(var($transform_scale-button_warning));
  62. &:hover {
  63. background-color: $color-button_warning-bg-hover;
  64. }
  65. &:active {
  66. background-color: $color-button_warning-bg-active;
  67. }
  68. &.#{$module}-light,
  69. &.#{$module}-borderless {
  70. color: $color-button_warning_borderless-text-default;
  71. }
  72. &:not(.#{$module}-borderless):not(.#{$module}-light):focus-visible {
  73. outline: $width-button-outline solid $color-button_warning-outline-focus;
  74. }
  75. }
  76. &-tertiary {
  77. background-color: $color-button_tertiary-bg-default;
  78. color: $color-button_tertiary-text-default;
  79. transition: background-color $transition_duration-button_tertiary-bg $transition_function-button_tertiary-bg $transition_delay-button_tertiary-bg,
  80. border $transition_duration-button_tertiary-border $transition_function-button_tertiary-border $transition_delay-button_tertiary-border;
  81. transform:scale(var($transform_scale_button_tertiary));
  82. &:hover {
  83. background-color: $color-button_tertiary-bg-hover;
  84. }
  85. &:active {
  86. background-color: $color-button_tertiary-bg-active;
  87. }
  88. &.#{$module}-light,
  89. &.#{$module}-borderless {
  90. color: $color-button_tertiary_solid-text-default;
  91. }
  92. }
  93. &-primary {
  94. background-color: $color-button_primary-bg-default;
  95. color: $color-button_primary-text-default;
  96. transition: background-color $transition_duration-button_primary-bg $transition_function-button_primary-bg $transition_delay-button_primary-bg,
  97. border $transition_duration-button_primary-border $transition_function-button_primary-border $transition_delay-button_primary-border;;
  98. transform:scale(var($transform_scale-button_primary));
  99. &:not(.#{$module}-borderless):not(.#{$module}-light):hover {
  100. background-color: $color-button_primary-bg-hover;
  101. }
  102. &:not(.#{$module}-borderless):not(.#{$module}-light):active {
  103. background-color: $color-button_primary-bg-active;
  104. }
  105. &.#{$module}-light,
  106. &.#{$module}-borderless {
  107. color: $color-button_primary_borderless-text-default;
  108. }
  109. }
  110. &-secondary {
  111. background-color: $color-button_secondary-bg-default;
  112. outline-color: $color-button_secondary-border-default;
  113. color: $color-button_secondary-text-default;
  114. transition: background-color $transition_duration-button_secondary-bg $transition_function-button_secondary-bg $transition_delay-button_secondary-bg,
  115. border $transition_duration-button_secondary-border $transition_function-button_secondary-border $transition_delay-button_secondary-border;
  116. transform:scale(var($transform_scale-button_secondary));
  117. &:hover {
  118. background-color: $color-button_secondary-bg-hover;
  119. }
  120. &:active {
  121. background-color: $color-button_secondary-bg-active;
  122. }
  123. &.#{$module}-light,
  124. &.#{$module}-borderless {
  125. color: $color-button_secondary_borderless-text-default;
  126. }
  127. }
  128. &-disabled {
  129. color: $color-button_disabled_solid-text-default;
  130. background-color: $color-button_disabled-bg-default;
  131. &:not(.#{$module}-borderless):not(.#{$module}-light):hover {
  132. color: $color-button_disabled-text-hover;
  133. background-color: $color-button_disabled-bg-hover;
  134. }
  135. cursor: not-allowed;
  136. &.#{$module}-light,
  137. &.#{$module}-borderless {
  138. color: $color-button_disabled-text-default;
  139. }
  140. }
  141. &-borderless {
  142. background-color: transparent;
  143. border: $width-button_borderless-border $color-button_borderless-border-default solid;
  144. transition:background-color $transition_duration-button_borderless-bg $transition_function-button_borderless-bg $transition_delay-button_borderless-bg;
  145. transform:scale(var($transform_scale-button_borderless));
  146. &:not(.#{$module}-disabled):hover {
  147. background-color: $color-button_borderless-bg-hover;
  148. border: $width-button_borderless-border $color-button_borderless-border-hover solid;
  149. }
  150. &:not(.#{$module}-disabled):active {
  151. background-color: $color-button_borderless-bg-active;
  152. border: $width-button_borderless-border $color-button_borderless-border-active solid;
  153. }
  154. }
  155. &-light {
  156. background-color: $color-button_light-bg-default;
  157. border: $width-button_light-border $color-button_light-border-default solid;
  158. transition: background-color $transition_duration-button_light-bg $transition_function-button_light-bg $transition_delay-button_light-bg,
  159. border $transition_duration-button_light-border $transition_function-button_light-border $transition_delay-button_light-border;
  160. transform:scale(var($transform_scale-button_light));
  161. &:not(.#{$module}-disabled):hover {
  162. background-color: $color-button_light-bg-hover;
  163. border: $width-button_light-border $color-button_light-border-hover solid;
  164. }
  165. &:not(.#{$module}-disabled):active {
  166. background-color: $color-button_light-bg-active;
  167. border: $width-button_light-border $color-button_light-border-active solid;
  168. }
  169. }
  170. &-size-small {
  171. height: $height-button_small;
  172. padding-top: $spacing-button_small-paddingTop;
  173. padding-bottom: $spacing-button_small-paddingBottom;
  174. padding-left: $spacing-button_small-paddingLeft;
  175. padding-right: $spacing-button_small-paddingRight;
  176. }
  177. &-size-large {
  178. height: $height-button_large;
  179. padding-top: $spacing-button_large-paddingTop;
  180. padding-bottom: $spacing-button_large-paddingBottom;
  181. padding-left: $spacing-button_large-paddingLeft;
  182. padding-right: $spacing-button_large-paddingRight;
  183. }
  184. &-block {
  185. width: 100%;
  186. }
  187. &-group {
  188. & > .#{$module} {
  189. margin: 0;
  190. padding-left: 0;
  191. padding-right: 0;
  192. border-radius: 0;
  193. .#{$module}-content {
  194. padding-left: $spacing-button_default-paddingLeft;
  195. padding-right: $spacing-button_default-paddingRight;
  196. }
  197. &-size-large {
  198. .#{$module}-content {
  199. padding-left: $spacing-button_large-paddingLeft;
  200. padding-right: $spacing-button_large-paddingRight;
  201. }
  202. }
  203. &-size-small {
  204. .#{$module}-content {
  205. padding-left: $spacing-button_small-paddingLeft;
  206. padding-right: $spacing-button_small-paddingRight;
  207. }
  208. }
  209. &.#{$module}-with-icon-only {
  210. padding-left: 0;
  211. padding-right: 0;
  212. .#{$module}-content {
  213. padding-left: $spacing-button_iconOnly_default-paddingLeft;
  214. padding-right: $spacing-button_iconOnly_default-paddingRight;
  215. }
  216. &.#{$module}-size {
  217. &-small {
  218. .#{$module}-content {
  219. padding-left: $spacing-button_iconOnly_small-paddingLeft;
  220. padding-right: $spacing-button_iconOnly_small-paddingRight;
  221. }
  222. }
  223. &-large {
  224. .#{$module}-content {
  225. padding-left: $spacing-button_iconOnly_large-paddingLeft;
  226. padding-right: $spacing-button_iconOnly_large-paddingRight;
  227. }
  228. }
  229. }
  230. }
  231. &:first-child {
  232. border-top-left-radius: $radius-button_group;
  233. border-bottom-left-radius: $radius-button_group;
  234. }
  235. &:not(:last-child) {
  236. .#{$prefix}-button-content {
  237. border-right: $width-button_group-border $color-button_group-border-default solid;
  238. }
  239. }
  240. &:last-child {
  241. border-top-right-radius: $radius-button_group;
  242. border-bottom-right-radius: $radius-button_group;
  243. }
  244. }
  245. }
  246. }
  247. @import './rtl.scss';