message.scss 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. @use 'sass:map';
  2. @use 'mixins/mixins' as *;
  3. @use 'mixins/var' as *;
  4. @use 'common/var' as *;
  5. @include b(message) {
  6. @include set-component-css-var('message', $message);
  7. }
  8. @include b(message) {
  9. width: fit-content;
  10. max-width: calc(100% - 32px);
  11. box-sizing: border-box;
  12. border-radius: getCssVar('border-radius-base');
  13. border-width: getCssVar('border-width');
  14. border-style: getCssVar('border-style');
  15. border-color: getCssVar('message', 'border-color');
  16. position: fixed;
  17. left: 50%;
  18. top: 20px;
  19. transform: translateX(-50%);
  20. background-color: getCssVar('message', 'bg-color');
  21. transition: opacity getCssVar('transition-duration'), transform 0.4s, top 0.4s;
  22. padding: getCssVar('message', 'padding');
  23. display: flex;
  24. align-items: center;
  25. @include when(center) {
  26. justify-content: center;
  27. }
  28. @include when(closable) {
  29. .#{$namespace}-message__content {
  30. padding-right: 31px;
  31. }
  32. }
  33. p {
  34. margin: 0;
  35. }
  36. @each $type in (success, info, warning, error) {
  37. @include m($type) {
  38. @include css-var-from-global(
  39. ('message', 'bg-color'),
  40. ('color', $type, 'light-9')
  41. );
  42. @include css-var-from-global(
  43. ('message', 'border-color'),
  44. ('color', $type, 'light-8')
  45. );
  46. @include css-var-from-global(('message', 'text-color'), ('color', $type));
  47. .#{$namespace}-message__content {
  48. color: getCssVar('message', 'text-color');
  49. overflow-wrap: anywhere;
  50. }
  51. }
  52. & .#{$namespace}-message-icon--#{$type} {
  53. color: getCssVar('message', 'text-color');
  54. }
  55. }
  56. @include e(icon) {
  57. margin-right: 10px;
  58. }
  59. .#{$namespace}-message__badge {
  60. position: absolute;
  61. top: -8px;
  62. right: -8px;
  63. }
  64. @include e(content) {
  65. padding: 0;
  66. font-size: 14px;
  67. line-height: 1;
  68. &:focus {
  69. outline-width: 0;
  70. }
  71. }
  72. & .#{$namespace}-message__closeBtn {
  73. position: absolute;
  74. top: 50%;
  75. right: 19px;
  76. transform: translateY(-50%);
  77. cursor: pointer;
  78. color: getCssVar('message', 'close-icon-color');
  79. font-size: getCssVar('message', 'close-size');
  80. &:focus {
  81. outline-width: 0;
  82. }
  83. &:hover {
  84. color: getCssVar('message', 'close-hover-color');
  85. }
  86. }
  87. }
  88. .#{$namespace}-message-fade-enter-from,
  89. .#{$namespace}-message-fade-leave-to {
  90. opacity: 0;
  91. transform: translate(-50%, -100%);
  92. }