Improved tabSidebar.
This commit is contained in:
parent
c7a45064b6
commit
bb8f5958e6
6 changed files with 73 additions and 110 deletions
|
@ -420,7 +420,7 @@ class App.Sidebar extends App.Controller
|
|||
@render()
|
||||
|
||||
# get first tab
|
||||
name = @el.find('.tabsSidebar-tab').first().data('content')
|
||||
name = @el.find('.tabsSidebar-tab').first().data('tab')
|
||||
|
||||
# activate first tab
|
||||
@toggleTabAction(name)
|
||||
|
@ -431,7 +431,20 @@ class App.Sidebar extends App.Controller
|
|||
# init content callback
|
||||
for item in @items
|
||||
if item.callback
|
||||
item.callback( @el.find( '.sidebar-content[data-content=' + item.name + ']' ) )
|
||||
item.callback( @el.find( '.sidebar[data-tab="' + item.name + '"] .sidebar-content' ) )
|
||||
|
||||
# add item acctions
|
||||
for item in @items
|
||||
if item.actions
|
||||
for action in item.actions
|
||||
do (action) =>
|
||||
@el.find('.sidebar[data-tab="' + item.name + '"] .tabsSidebar-tabActions .tabsSidebar-tabAction[data-name="' + action.name + '"]').bind(
|
||||
'click'
|
||||
(e) =>
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
action.callback(e)
|
||||
)
|
||||
|
||||
toggleSidebar: ->
|
||||
@el.parent().find('.tabsSidebarSpace').toggleClass('is-closed')
|
||||
|
@ -444,7 +457,7 @@ class App.Sidebar extends App.Controller
|
|||
toggleTab: (e) ->
|
||||
|
||||
# get selected tab
|
||||
name = $(e.target).closest('.tabsSidebar-tab').data('content')
|
||||
name = $(e.target).closest('.tabsSidebar-tab').data('tab')
|
||||
|
||||
if name
|
||||
|
||||
|
@ -456,7 +469,6 @@ class App.Sidebar extends App.Controller
|
|||
else
|
||||
@toggleTabAction(name)
|
||||
|
||||
|
||||
toggleTabAction: (name) ->
|
||||
return if !name
|
||||
|
||||
|
@ -464,36 +476,15 @@ class App.Sidebar extends App.Controller
|
|||
@el.find('.tabsSidebar-tab').removeClass('active')
|
||||
|
||||
# add active state
|
||||
@el.find('.tabsSidebar-tab[data-content=' + name + ']').addClass('active')
|
||||
@el.find('.tabsSidebar-tab[data-tab=' + name + ']').addClass('active')
|
||||
|
||||
# hide all content tabs
|
||||
@el.find('.sidebar-content').addClass('hide')
|
||||
@el.find('.sidebar').addClass('hide')
|
||||
|
||||
# show active tab content
|
||||
tabContent = @el.find('.sidebar-content[data-content=' + name + ']')
|
||||
tabContent = @el.find('.sidebar[data-tab=' + name + ']')
|
||||
tabContent.removeClass('hide')
|
||||
|
||||
# set content tab title
|
||||
title = tabContent.data('title')
|
||||
@el.find('.sidebar h2').html(title)
|
||||
|
||||
# set tab actions
|
||||
@el.find('.tabsSidebar-tabActions').html('')
|
||||
|
||||
# add item acctions
|
||||
for item in @items
|
||||
if item.name is name
|
||||
if item.actions
|
||||
for action in item.actions
|
||||
do (action) =>
|
||||
@el.find('.tabsSidebar-tabActions').append("<div class='tabsSidebar-tabAction #{action.class}'></div>").find(".tabsSidebar-tabAction").last().bind(
|
||||
'click'
|
||||
(e) =>
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
action.callback(e)
|
||||
)
|
||||
|
||||
# remember current tab
|
||||
@currentTab = name
|
||||
|
||||
|
|
|
@ -456,6 +456,7 @@ class Sidebar extends App.Controller
|
|||
icon: 'person'
|
||||
actions: [
|
||||
{
|
||||
name: 'Edit Customer'
|
||||
class: 'glyphicon glyphicon-edit'
|
||||
#callback: editCustomer
|
||||
},
|
||||
|
|
|
@ -41,6 +41,7 @@ class ContentSidebarRightSidebarOptional extends App.ControllerContent
|
|||
|
||||
App.Config.set( 'layout_ref/content_sidebar_right_sidebar_optional', ContentSidebarRightSidebarOptional, 'Routes' )
|
||||
|
||||
|
||||
class ModalForm extends App.ControllerModal
|
||||
constructor: ->
|
||||
super
|
||||
|
@ -63,9 +64,9 @@ class ModalForm extends App.ControllerModal
|
|||
params = App.ControllerForm.params( $(e.target).closest('form') )
|
||||
console.log('params', params)
|
||||
|
||||
|
||||
App.Config.set( 'layout_ref/modal_form', ModalForm, 'Routes' )
|
||||
|
||||
|
||||
class ModalText extends App.ControllerModal
|
||||
constructor: ->
|
||||
super
|
||||
|
@ -78,8 +79,6 @@ class ModalText extends App.ControllerModal
|
|||
onHide: =>
|
||||
window.history.back()
|
||||
|
||||
|
||||
|
||||
App.Config.set( 'layout_ref/modal_text', ModalText, 'Routes' )
|
||||
|
||||
|
||||
|
@ -92,14 +91,49 @@ class ContentSidebarTabsRight extends App.ControllerContent
|
|||
super
|
||||
@render()
|
||||
|
||||
changeCustomerTicket = ->
|
||||
alert('change customer ticket')
|
||||
|
||||
editCustomerTicket = ->
|
||||
alert('edit customer ticket')
|
||||
|
||||
changeCustomerCustomer = ->
|
||||
alert('change customer customer')
|
||||
|
||||
editCustomerCustomer = ->
|
||||
alert('edit customer customer')
|
||||
|
||||
|
||||
items = [
|
||||
head: 'Ticket Settings'
|
||||
name: 'ticket'
|
||||
icon: 'message'
|
||||
callback: (el) ->
|
||||
el.html('some ticket')
|
||||
actions: [
|
||||
name: 'Change Customer'
|
||||
class: 'glyphicon glyphicon-transfer'
|
||||
callback: changeCustomerTicket
|
||||
,
|
||||
name: 'Edit Customer'
|
||||
class: 'glyphicon glyphicon-edit'
|
||||
callback: editCustomerTicket
|
||||
]
|
||||
,
|
||||
head: 'Customer'
|
||||
name: 'customer'
|
||||
icon: 'person'
|
||||
callback: (el) ->
|
||||
el.html('some customer')
|
||||
actions: [
|
||||
name: 'Change Customer'
|
||||
class: 'glyphicon glyphicon-transfer'
|
||||
callback: changeCustomerCustomer
|
||||
,
|
||||
name: 'Edit Customer'
|
||||
class: 'glyphicon glyphicon-edit'
|
||||
callback: editCustomerCustomer
|
||||
]
|
||||
,
|
||||
head: 'Organization'
|
||||
name: 'organization'
|
||||
|
|
|
@ -196,10 +196,12 @@ class App.TicketZoom extends App.Controller
|
|||
icon: 'person'
|
||||
actions: [
|
||||
{
|
||||
name: 'Change Customer'
|
||||
class: 'glyphicon glyphicon-transfer'
|
||||
callback: changeCustomer
|
||||
},
|
||||
{
|
||||
name: 'Edit Customer'
|
||||
class: 'glyphicon glyphicon-edit'
|
||||
callback: editCustomer
|
||||
},
|
||||
|
|
|
@ -1,21 +1,27 @@
|
|||
<div class="sidebar bottom-form-shadow flex">
|
||||
<% for item in @items: %>
|
||||
<div class="sidebar bottom-form-shadow flex hide" data-tab="<%= item.name %>">
|
||||
<div class="horizontal center">
|
||||
<h2 class="flex u-textTruncate"></h2>
|
||||
<h2 class="flex u-textTruncate"><%- @T( item.head ) %></h2>
|
||||
<div class="tabsSidebar-close centered u-clickable">
|
||||
<div class="tabsSidebar-tabActions"></div>
|
||||
<div class="tabsSidebar-tabActions">
|
||||
<% if item.actions: %>
|
||||
<% for action in item.actions: %>
|
||||
<div class="tabsSidebar-tabAction <%- action.class %>" data-name="<%- action.name %>"></div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="arrow-right icon"></div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<% for item in @items: %>
|
||||
<div class="sidebar-content" data-content="<%= item.name %>" data-title="<%= @T( item.head ) %>"></div>
|
||||
<% end %>
|
||||
<div class="sidebar-content"></div>
|
||||
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="tabsSidebar-tabs vertical justified">
|
||||
<% for item in @items: %>
|
||||
<div class="tabsSidebar-tab centered" data-content="<%= item.name %>">
|
||||
<div class="tabsSidebar-tab centered" data-tab="<%= item.name %>">
|
||||
<div class="dark icon <%= item.icon %>"></div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
|
@ -14,75 +14,4 @@ Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit no
|
|||
</p>
|
||||
</div>
|
||||
|
||||
<div class="tabsSidebar vertical">
|
||||
|
||||
<!-- ticket information content -->
|
||||
<div class="sidebar flex" data-tab="ticket">
|
||||
|
||||
<div class="horizontal center">
|
||||
<h2 class="flex u-textTruncate">Ticket Settings</h2>
|
||||
<div class="close-sidebar centered u-clickable">
|
||||
<div class="arrow-right icon"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<p>
|
||||
Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- customer information content -->
|
||||
<div class="sidebar flex hide" data-tab="customer">
|
||||
|
||||
<div class="horizontal center">
|
||||
<h2 class="flex u-textTruncate">Customer</h2>
|
||||
<div class="close-sidebar centered u-clickable">
|
||||
<div class="arrow-right icon"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<p>
|
||||
Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- organization information content -->
|
||||
<div class="sidebar flex hide" data-tab="organization">
|
||||
|
||||
<div class="horizontal center">
|
||||
<h2 class="flex u-textTruncate">Organization</h2>
|
||||
<div class="close-sidebar centered u-clickable">
|
||||
<div class="arrow-right icon"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<p>
|
||||
Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tabsSidebar-tabs vertical justified">
|
||||
|
||||
<div class="tabsSidebar-tab centered active" data-tab="ticket">
|
||||
<div class="dark icon message"></div>
|
||||
</div>
|
||||
|
||||
<div class="tabsSidebar-tab centered" data-tab="customer">
|
||||
<div class="dark icon person"></div>
|
||||
</div>
|
||||
|
||||
<div class="tabsSidebar-tab centered" data-tab="organization">
|
||||
<div class="dark icon group"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="tabsSidebar vertical"></div>
|
Loading…
Reference in a new issue