mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-13 23:37:47 +00:00
uss oop for nav check
This commit is contained in:
@@ -1,37 +1,46 @@
|
||||
angular.module("admin.utils")
|
||||
.factory "NavigationCheck", ($window, $rootScope) ->
|
||||
callbacks = []
|
||||
new class NavigationCheck
|
||||
callbacks = []
|
||||
constructor: ->
|
||||
if $window.addEventListener
|
||||
$window.addEventListener "beforeunload", @onBeforeUnloadHandler
|
||||
else
|
||||
$window.onbeforeunload = @onBeforeUnloadHandler
|
||||
|
||||
# Action for regular browser navigation.
|
||||
onBeforeUnloadHandler = ($event) ->
|
||||
message = getMessage()
|
||||
if message
|
||||
($event or $window.event).preventDefault()
|
||||
$rootScope.$on "$locationChangeStart", @locationChangeStartHandler
|
||||
|
||||
|
||||
# Action for regular browser navigation.
|
||||
onBeforeUnloadHandler: ($event) =>
|
||||
message = @getMessage()
|
||||
if message
|
||||
($event or $window.event).preventDefault()
|
||||
message
|
||||
|
||||
# Action for angular navigation.
|
||||
locationChangeStartHandler: ($event) =>
|
||||
message = @getMessage()
|
||||
if message and not $window.confirm(message)
|
||||
$event.stopPropagation() if $event.stopPropagation
|
||||
$event.preventDefault() if $event.preventDefault
|
||||
$event.cancelBubble = true
|
||||
$event.returnValue = false
|
||||
|
||||
# Runs callback functions to retreive most recently added non-empty message.
|
||||
getMessage: ->
|
||||
message = null
|
||||
message = callback() ? message for callback in callbacks
|
||||
message
|
||||
|
||||
# Action for angular navigation.
|
||||
locationChangeStartHandler = ($event) ->
|
||||
message = getMessage()
|
||||
if message and not $window.confirm(message)
|
||||
$event.stopPropagation() if $event.stopPropagation
|
||||
$event.preventDefault() if $event.preventDefault
|
||||
$event.cancelBubble = true
|
||||
$event.returnValue = false
|
||||
register: (callback) =>
|
||||
callbacks.push callback
|
||||
|
||||
# Runs callback functions to retreive most recently added non-empty message.
|
||||
getMessage = ->
|
||||
message = null
|
||||
message = callback() ? message for callback in callbacks
|
||||
message
|
||||
clear: =>
|
||||
if $window.addEventListener
|
||||
$window.removeEventListener "beforeunload", @onBeforeUnloadHandler
|
||||
else
|
||||
$window.onbeforeunload = null
|
||||
|
||||
register = (callback) ->
|
||||
callbacks.push callback
|
||||
$rootScope.$on "$locationChangeStart", null
|
||||
|
||||
if $window.addEventListener
|
||||
$window.addEventListener "beforeunload", onBeforeUnloadHandler
|
||||
else
|
||||
$window.onbeforeunload = onBeforeUnloadHandler
|
||||
|
||||
$rootScope.$on "$locationChangeStart", locationChangeStartHandler
|
||||
|
||||
return register: register
|
||||
|
||||
Reference in New Issue
Block a user