add tab bar

This commit is contained in:
lxsang
2020-04-03 16:34:52 +02:00
parent 5b21696fa1
commit 8b44c3b3c0
6 changed files with 127 additions and 50 deletions

View File

@ -65,7 +65,7 @@ class ListViewTag extends Ant.OS.GUI.BaseTag
super r, o
@setopt "onlistselect", () ->
@setopt "onlistdbclick", () ->
@setopt "onitemclose", () ->
@setopt "onitemclose", () -> true
@setopt "buttons", []
@setopt "data", {}
@setopt "dropdown", false
@ -76,11 +76,53 @@ class ListViewTag extends Ant.OS.GUI.BaseTag
$(@root)
.css "display", "flex"
.css "flex-direction", "column"
me = @
@root.push = (e) -> me.push e
@root.remove = (e) -> me.remove e
@root.unshift = (e) -> me.unshift e
multiselect: () ->
return false if @get "dropdown"
@get "multiselect"
unshift: (item) ->
@push item, true
has_data: (v) ->
@get("data").includes v
push: (item, flag) ->
el = $("<#{@get "itemtag"}>")
if flag
@get("data").unshift item if not @has_data item
$(@refs.mlist).prepend el[0]
else
@get("data").push item if not @has_data item
el.appendTo @refs.mlist
el[0].uify @observable
me = @
el[0]
.set "data", item
.set "oncontextmenu", (e) ->
me.iclick e
.set "ondbclick", (e) ->
me.idbclick e
.set "onclick", (e) ->
me.iclick e
.set "onselect", (e) ->
me.iselect e
.set "onclose", (e) ->
me.iclose e
remove: (item) ->
el = item.get "data"
data = @get "data"
@set "selectedItem", undefined if @get("selectedItem") is item
list = @get("selectedItems")
list.splice(list.indexOf(item), 1) if list.includes(item)
if data.includes el
data.splice data.indexOf(el), 1
$(item).remove()
__buttons__: (v) ->
return if @get "dropdown"
@ -88,21 +130,7 @@ class ListViewTag extends Ant.OS.GUI.BaseTag
__data__: (data) ->
$( @refs.mlist).empty()
for item in data
el = $("<#{@get "itemtag"}>").appendTo @refs.mlist
el[0].uify @observable
me = @
el[0]
.set "data", item
.set "oncontextmenu", (e) ->
me.iclick e
.set "ondbclick", (e) ->
me.idbclick e
.set "onclick", (e) ->
me.iclick e
.set "onselect", (e) ->
me.iselect e
.set "onclose", (e) ->
me.iclose e
@push item, false
iclick: (e) ->
return if not e.item
@ -140,7 +168,11 @@ class ListViewTag extends Ant.OS.GUI.BaseTag
iclose: (e) ->
return unless e.item
$(e.item).remove()
evt = { id: @aid(), data: e }
r = @get("onitemclose") evt
return unless r
@observable.trigger "itemclose", evt
@remove(e.item)
__dropdown__: (v) ->
$(@refs.container).removeAttr "style"

View File

@ -0,0 +1,26 @@
class TabBarTag extends Ant.OS.GUI.BaseTag
constructor: (r, o) ->
super r, o
@setopt "closable", false
@setopt "ontabselect", (e) ->
@setopt "items", []
__items__: (v) ->
@refs.list.set "data", v
mount: () ->
me = @
@refs.list.set "onlistselect", (e) ->
me.get("ontabselect") e
me.observable.trigger "tabselect", e
@root.push = (e) -> me.refs.list.push e
@root.unshift = (e) -> me.refs.list.unshift e
@root.remove = (e) -> me.refs.list.remove e
$(@refs.list).css "height", "100%"
layout: () ->
[{
el: "afx-list-view", ref: "list"
}]
Ant.OS.GUI.define "afx-tab-bar", TabBarTag