mirror of
https://github.com/lxsang/antos-frontend.git
synced 2025-07-19 15:29:51 +02:00
add tab bar
This commit is contained in:
@ -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"
|
||||
|
26
src/core/tags/TabBarTag.coffee
Normal file
26
src/core/tags/TabBarTag.coffee
Normal 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
|
Reference in New Issue
Block a user