index.less 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. @import '../../style/themes/index';
  2. @import '../../style/mixins/index';
  3. @popover-prefix-cls: ~'@{ant-prefix}-popover';
  4. @popover-arrow-rotate-width: sqrt(@popover-arrow-width * @popover-arrow-width * 2) + 6px;
  5. @popover-arrow-offset-vertical: 12px;
  6. @popover-arrow-offset-horizontal: 16px;
  7. .@{popover-prefix-cls} {
  8. .reset-component();
  9. position: absolute;
  10. top: 0;
  11. left: 0;
  12. z-index: @zindex-popover;
  13. max-width: 100vw;
  14. font-weight: normal;
  15. white-space: normal;
  16. text-align: left;
  17. cursor: auto;
  18. user-select: text;
  19. &-content {
  20. position: relative;
  21. }
  22. &::after {
  23. position: absolute;
  24. background: fade(@white, 1%);
  25. content: '';
  26. }
  27. &-hidden {
  28. display: none;
  29. }
  30. // Offset the popover to account for the popover arrow
  31. &-placement-top,
  32. &-placement-topLeft,
  33. &-placement-topRight {
  34. padding-bottom: @popover-distance;
  35. }
  36. &-placement-right,
  37. &-placement-rightTop,
  38. &-placement-rightBottom {
  39. padding-left: @popover-distance;
  40. }
  41. &-placement-bottom,
  42. &-placement-bottomLeft,
  43. &-placement-bottomRight {
  44. padding-top: @popover-distance;
  45. }
  46. &-placement-left,
  47. &-placement-leftTop,
  48. &-placement-leftBottom {
  49. padding-right: @popover-distance;
  50. }
  51. &-inner {
  52. background-color: @popover-bg;
  53. background-clip: padding-box;
  54. border-radius: @border-radius-base;
  55. box-shadow: @box-shadow-base;
  56. }
  57. @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
  58. /* IE10+ */
  59. &-inner {
  60. box-shadow: @box-shadow-base;
  61. }
  62. }
  63. &-title {
  64. min-width: @popover-min-width;
  65. min-height: @popover-min-height;
  66. margin: 0; // reset heading margin
  67. padding: 5px @popover-padding-horizontal 4px;
  68. color: @heading-color;
  69. font-weight: 500;
  70. border-bottom: 1px solid @border-color-split;
  71. }
  72. &-inner-content {
  73. width: max-content;
  74. max-width: 100%;
  75. padding: @padding-sm @popover-padding-horizontal;
  76. color: @popover-color;
  77. }
  78. &-message {
  79. display: flex;
  80. padding: 4px 0 12px;
  81. color: @popover-color;
  82. font-size: @font-size-base;
  83. &-icon {
  84. display: inline-block;
  85. margin-right: 8px;
  86. color: @warning-color;
  87. font-size: @font-size-base;
  88. }
  89. }
  90. &-buttons {
  91. margin-bottom: 4px;
  92. text-align: right;
  93. button:not(:first-child) {
  94. margin-left: 8px;
  95. }
  96. }
  97. // Arrows
  98. &-arrow {
  99. position: absolute;
  100. display: block;
  101. width: @popover-arrow-rotate-width;
  102. height: @popover-arrow-rotate-width;
  103. overflow: hidden;
  104. background: transparent;
  105. pointer-events: none;
  106. &-content {
  107. --antd-arrow-background-color: @popover-bg;
  108. position: absolute;
  109. top: 0;
  110. right: 0;
  111. bottom: 0;
  112. left: 0;
  113. display: block;
  114. width: @popover-arrow-width;
  115. height: @popover-arrow-width;
  116. margin: auto;
  117. content: '';
  118. pointer-events: auto;
  119. .roundedArrow(@popover-arrow-width, 5px);
  120. }
  121. }
  122. &-placement-top &-arrow,
  123. &-placement-topLeft &-arrow,
  124. &-placement-topRight &-arrow {
  125. bottom: 0;
  126. transform: translateY(100%);
  127. &-content {
  128. box-shadow: 3px 3px 7px fade(@black, 7%);
  129. transform: translateY((-@popover-arrow-rotate-width / 2)) rotate(45deg);
  130. }
  131. }
  132. &-placement-top &-arrow {
  133. left: 50%;
  134. transform: translateY(100%) translateX(-50%);
  135. }
  136. &-placement-topLeft &-arrow {
  137. left: @popover-arrow-offset-horizontal;
  138. }
  139. &-placement-topRight &-arrow {
  140. right: @popover-arrow-offset-horizontal;
  141. }
  142. &-placement-right &-arrow,
  143. &-placement-rightTop &-arrow,
  144. &-placement-rightBottom &-arrow {
  145. left: 0;
  146. transform: translateX(-100%);
  147. &-content {
  148. box-shadow: 3px 3px 7px fade(@black, 7%);
  149. transform: translateX((@popover-arrow-rotate-width / 2)) rotate(135deg);
  150. }
  151. }
  152. &-placement-right &-arrow {
  153. top: 50%;
  154. transform: translateX(-100%) translateY(-50%);
  155. }
  156. &-placement-rightTop &-arrow {
  157. top: @popover-arrow-offset-vertical;
  158. }
  159. &-placement-rightBottom &-arrow {
  160. bottom: @popover-arrow-offset-vertical;
  161. }
  162. &-placement-bottom &-arrow,
  163. &-placement-bottomLeft &-arrow,
  164. &-placement-bottomRight &-arrow {
  165. top: 0;
  166. transform: translateY(-100%);
  167. &-content {
  168. box-shadow: 2px 2px 5px fade(@black, 6%);
  169. transform: translateY((@popover-arrow-rotate-width / 2)) rotate(-135deg);
  170. }
  171. }
  172. &-placement-bottom &-arrow {
  173. left: 50%;
  174. transform: translateY(-100%) translateX(-50%);
  175. }
  176. &-placement-bottomLeft &-arrow {
  177. left: @popover-arrow-offset-horizontal;
  178. }
  179. &-placement-bottomRight &-arrow {
  180. right: @popover-arrow-offset-horizontal;
  181. }
  182. &-placement-left &-arrow,
  183. &-placement-leftTop &-arrow,
  184. &-placement-leftBottom &-arrow {
  185. right: 0;
  186. transform: translateX(100%);
  187. &-content {
  188. box-shadow: 3px 3px 7px fade(@black, 7%);
  189. transform: translateX((-@popover-arrow-rotate-width / 2)) rotate(-45deg);
  190. }
  191. }
  192. &-placement-left &-arrow {
  193. top: 50%;
  194. transform: translateX(100%) translateY(-50%);
  195. }
  196. &-placement-leftTop &-arrow {
  197. top: @popover-arrow-offset-vertical;
  198. }
  199. &-placement-leftBottom &-arrow {
  200. bottom: @popover-arrow-offset-vertical;
  201. }
  202. }
  203. .generator-popover-preset-color(@i: length(@preset-colors)) when (@i > 0) {
  204. .generator-popover-preset-color(@i - 1);
  205. @color: extract(@preset-colors, @i);
  206. @lightColor: '@{color}-6';
  207. .@{popover-prefix-cls}-@{color} {
  208. .@{popover-prefix-cls}-inner {
  209. background-color: @@lightColor;
  210. }
  211. .@{popover-prefix-cls}-arrow {
  212. &-content {
  213. background-color: @@lightColor;
  214. }
  215. }
  216. }
  217. }
  218. .generator-popover-preset-color();
  219. @import './rtl';