Sha256: 4a7542f4d87108e2427a3cc77d3ffea67d538ce8298bef77dd7ff04394b38d96
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
u = up.util e = up.element class up.FollowVariant constructor: (selector, options) -> # @followLink() will wrap @followNow() with event submission and [up-active] feedback @followNow = options.follow @preloadLink = options.preload @selectors = u.splitValues(selector, ',') onClick: (event, link) => if up.link.shouldProcessEvent(event, link) if e.matches(link, '[up-instant]') # If the link was already processed on mousedown, we still need # to prevent this later click event's chain. up.event.halt(event) else up.event.consumeAction(event) @followLink(link) else # For tests up.link.allowDefault(event) onMousedown: (event, link) => if up.link.shouldProcessEvent(event, link) up.event.consumeAction(event) @followLink(link) fullSelector: (additionalClause = '') => parts = [] @selectors.forEach (variantSelector) -> for tagSelector in ['a', '[up-href]'] parts.push "#{tagSelector}#{variantSelector}#{additionalClause}" parts.join(', ') registerEvents: -> up.on 'click', @fullSelector(), (args...) => u.muteRejection @onClick(args...) up.on 'mousedown', @fullSelector('[up-instant]'), (args...) => u.muteRejection @onMousedown(args...) followLink: (link, options = {}) => promise = up.event.whenEmitted('up:link:follow', log: 'Following link', target: link) promise = promise.then => up.feedback.start(link) unless options.preload @followNow(link, options) unless options.preload promise = promise.then -> up.feedback.stop(link) promise matchesLink: (link) => e.matches(link, @fullSelector())
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
unpoly-rails-0.60.0 | lib/assets/javascripts/unpoly/classes/follow_variant.coffee |