mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
Add hide/show ability for panels
This commit is contained in:
@@ -8,8 +8,18 @@ class PanelElement extends HTMLElement
|
||||
|
||||
setModel: (@model) ->
|
||||
@appendChild(@model.getItemView())
|
||||
@subscriptions.add @model.onDidChangeVisible(@visibleChanged.bind(this))
|
||||
@subscriptions.add @model.onDidDestroy(@destroyed.bind(this))
|
||||
|
||||
attachedCallback: ->
|
||||
@visibleChanged(@model.isVisible())
|
||||
|
||||
visibleChanged: (visible) ->
|
||||
if visible
|
||||
@style.display = null
|
||||
else
|
||||
@style.display = 'none'
|
||||
|
||||
destroyed: ->
|
||||
@subscriptions.dispose()
|
||||
@parentNode?.removeChild(this)
|
||||
|
||||
@@ -3,16 +3,13 @@
|
||||
# Public:
|
||||
module.exports =
|
||||
class Panel
|
||||
constructor: ({@viewRegistry, @item}) ->
|
||||
constructor: ({@viewRegistry, @item, @visible}) ->
|
||||
@emitter = new Emitter
|
||||
@visible ?= true
|
||||
|
||||
destroy: ->
|
||||
@emitter.emit 'did-destroy', this
|
||||
|
||||
getView: -> @viewRegistry.getView(this)
|
||||
|
||||
getItemView: -> @viewRegistry.getView(@item)
|
||||
|
||||
###
|
||||
Section: Event Subscription
|
||||
###
|
||||
@@ -24,3 +21,26 @@ class Panel
|
||||
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
|
||||
onDidDestroy: (callback) ->
|
||||
@emitter.on 'did-destroy', callback
|
||||
|
||||
onDidChangeVisible: (callback) ->
|
||||
@emitter.on 'did-change-visible', callback
|
||||
|
||||
###
|
||||
Section: Panel Details
|
||||
###
|
||||
|
||||
getView: -> @viewRegistry.getView(this)
|
||||
|
||||
getItemView: -> @viewRegistry.getView(@item)
|
||||
|
||||
isVisible: -> @visible
|
||||
|
||||
hide: ->
|
||||
wasVisible = @visible
|
||||
@visible = false
|
||||
@emitter.emit 'did-change-visible', @visible if wasVisible
|
||||
|
||||
show: ->
|
||||
wasVisible = @visible
|
||||
@visible = true
|
||||
@emitter.emit 'did-change-visible', @visible unless wasVisible
|
||||
|
||||
Reference in New Issue
Block a user