dom-misc.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. export const RED_REGEX = /red|rgb\(255,\s*0,\s*0\)/
  2. export const GREEN_REGEX = /green|rgb\(0,\s*255,\s*0\)/
  3. export const BLUE_REGEX = /blue|rgb\(0,\s*0,\s*255\)/
  4. export function getStockScrollbarWidths(dir) {
  5. var el = $('<div><div style="position:relative"/></div>')
  6. .css({
  7. position: 'absolute',
  8. top: -1000,
  9. left: 0,
  10. border: 0,
  11. padding: 0,
  12. overflow: 'scroll',
  13. direction: dir || 'ltr'
  14. })
  15. .appendTo('body')
  16. var elRect = el[0].getBoundingClientRect()
  17. var innerEl = el.children()
  18. var innerElRect = innerEl[0].getBoundingClientRect()
  19. var girths = {
  20. left: innerElRect.left - elRect.left,
  21. right: elRect.left + elRect.width - innerElRect.left,
  22. top: innerElRect.top - elRect.top,
  23. bottom: elRect.top + elRect.height - innerElRect.top
  24. }
  25. el.remove()
  26. return girths
  27. }
  28. export function countHandlers(el) {
  29. var hash = getHandlerHash(el)
  30. var cnt = 0
  31. $.each(hash, function(name, handlers) {
  32. cnt += handlers.length
  33. })
  34. return cnt
  35. }
  36. function getHandlerHash(el) {
  37. return $._data($(el)[0], 'events') || {}
  38. }
  39. export function isElWithinRtl(el) {
  40. return el.closest('.fc').hasClass('fc-rtl')
  41. }
  42. beforeEach(function() {
  43. jasmine.addMatchers({
  44. toHaveScrollbars() {
  45. return {
  46. compare: function(actual) {
  47. var elm = $(actual)
  48. var result = {
  49. pass: elm[0].scrollWidth - 1 > elm[0].clientWidth || // -1 !!!
  50. elm[0].scrollHeight - 1 > elm[0].clientHeight // -1 !!!
  51. }
  52. // !!! - IE was reporting a scrollWidth/scrollHeight 1 pixel taller than what it was :(
  53. return result
  54. }
  55. }
  56. }
  57. })
  58. })