Files
openfoodnetwork/app/assets/javascripts/admin/index_utils/services/panels.js.coffee
Rob Harrington 27b22acd37 Fixing bug that caused references to stale DOM objects to be kept and used by Panels service
Was causing panels to break when used in conjuction with ng-repeat + filters
2018-02-09 14:43:48 +11:00

25 lines
792 B
CoffeeScript

angular.module("admin.indexUtils").factory 'Panels', ->
new class Panels
all: []
register: (ctrl, object, selected=null) ->
if ctrl? && object?
existing = @panelFor(object)
newPanel = { ctrl: ctrl, object: object, selected: selected }
if existing then angular.extend(existing, newPanel) else @all.push(newPanel)
ctrl.select(selected) if selected?
toggle: (object, name, state=null) ->
panel = @panelFor(object)
if panel.selected == name
@select(panel, null) unless state == "open"
else
@select(panel, name) unless state == "closed"
select: (panel, name) ->
panel.selected = name
panel.ctrl.select(name)
panelFor: (object) ->
(@all.filter (panel) -> panel.object == object)[0]