| @@ 41-127 (lines=87) @@ | ||
| 38 | ||
| 39 | // Expand drawer |
|
| 40 | objects.on('expand.drawer', function expand(event, speed, stay) { |
|
| 41 | var drawer = $(this), |
|
| 42 | position = drawer.data('position'), |
|
| 43 | buttons = $('.button.drawer'), |
|
| 44 | button = buttons.filter('[href="#' + drawer.attr('id') + '"]'), |
|
| 45 | samePositionButtons = buttons.filter('.' + position), |
|
| 46 | context = drawer.data('context') ? '.' + drawer.data('context') : '', |
|
| 47 | height = getHeight(); |
|
| 48 | ||
| 49 | drawer.trigger('expandstart.drawer'); |
|
| 50 | ||
| 51 | speed = (typeof speed === 'undefined' ? settings.speed : speed); |
|
| 52 | stay = (typeof stay === 'undefined' ? false : true); |
|
| 53 | ||
| 54 | // update button state |
|
| 55 | samePositionButtons.removeClass('selected'); |
|
| 56 | ||
| 57 | // Close opened drawers from same region |
|
| 58 | $('.drawer.' + position).filter(function(index) { |
|
| 59 | return $(this).data('open'); |
|
| 60 | }).trigger('collapse.drawer', [speed, true]); |
|
| 61 | ||
| 62 | if (position === 'vertical-left') { |
|
| 63 | drawer.css({ |
|
| 64 | width: 0, |
|
| 65 | height: height, |
|
| 66 | display: 'block' |
|
| 67 | }) |
|
| 68 | .animate({ |
|
| 69 | width: settings.verticalWidth |
|
| 70 | }, { |
|
| 71 | duration: speed, |
|
| 72 | step: function(now, fx){ |
|
| 73 | form.css('margin-left', now + 1); // +1px right border |
|
| 74 | }, |
|
| 75 | complete: function() { |
|
| 76 | form.css('margin-left', settings.verticalWidth + 1); // +1px right border |
|
| 77 | drawer.trigger('expandstop.drawer'); |
|
| 78 | } |
|
| 79 | }); |
|
| 80 | } |
|
| 81 | else if (position === 'vertical-right') { |
|
| 82 | drawer.css({ |
|
| 83 | width: 0, |
|
| 84 | height: height, |
|
| 85 | display: 'block' |
|
| 86 | }) |
|
| 87 | .animate({ |
|
| 88 | width: settings.verticalWidth |
|
| 89 | }, { |
|
| 90 | duration: speed, |
|
| 91 | step: function(now, fx){ |
|
| 92 | form.css('margin-right', now + 1); // +1px left border |
|
| 93 | }, |
|
| 94 | complete: function() { |
|
| 95 | form.css('margin-right', settings.verticalWidth + 1); // +1px right border |
|
| 96 | drawer.trigger('expandstop.drawer'); |
|
| 97 | } |
|
| 98 | }); |
|
| 99 | } |
|
| 100 | else if (position === 'horizontal') { |
|
| 101 | drawer.animate({ |
|
| 102 | height: 'show' |
|
| 103 | }, { |
|
| 104 | duration: speed, |
|
| 105 | complete: function() { |
|
| 106 | drawer.trigger('expandstop.drawer'); |
|
| 107 | } |
|
| 108 | }); |
|
| 109 | } |
|
| 110 | ||
| 111 | button.addClass('selected'); |
|
| 112 | ||
| 113 | // store state |
|
| 114 | if(Symphony.Support.localStorage === true) { |
|
| 115 | // Put in a try/catch incase we exceed storage space |
|
| 116 | try { |
|
| 117 | window.localStorage['symphony.drawer.' + drawer.attr('id') + context] = 'opened'; |
|
| 118 | } |
|
| 119 | catch(e) { |
|
| 120 | window.onerror(e.message); |
|
| 121 | } |
|
| 122 | } |
|
| 123 | ||
| 124 | wrapper.addClass('drawer-' + position); |
|
| 125 | drawer.data('open', true); |
|
| 126 | }); |
|
| 127 | ||
| 128 | // Collapse drawer |
|
| 129 | objects.on('collapse.drawer', function collapse(event, speed, stay) { |
|
| 130 | var drawer = $(this), |
|
| @@ 130-205 (lines=76) @@ | ||
| 127 | ||
| 128 | // Collapse drawer |
|
| 129 | objects.on('collapse.drawer', function collapse(event, speed, stay) { |
|
| 130 | var drawer = $(this), |
|
| 131 | position = drawer.data('position'), |
|
| 132 | buttons = $('.button.drawer'), |
|
| 133 | button = buttons.filter('[href="#' + drawer.attr('id') + '"]'), |
|
| 134 | context = drawer.data('context') ? '.' + drawer.data('context') : ''; |
|
| 135 | ||
| 136 | drawer.trigger('collapsestart.drawer'); |
|
| 137 | ||
| 138 | speed = (typeof speed === 'undefined' ? settings.speed : speed); |
|
| 139 | stay = (typeof stay === 'undefined' ? false : true); |
|
| 140 | ||
| 141 | // update button state |
|
| 142 | button.removeClass('selected'); |
|
| 143 | ||
| 144 | if (position === 'vertical-left') { |
|
| 145 | drawer.animate({ |
|
| 146 | width: 0 |
|
| 147 | }, { |
|
| 148 | duration: speed, |
|
| 149 | step: function(now, fx){ |
|
| 150 | if (!stay) { |
|
| 151 | form.css('margin-left', now); |
|
| 152 | } |
|
| 153 | }, |
|
| 154 | complete: function() { |
|
| 155 | drawer.css({ |
|
| 156 | display: 'none' |
|
| 157 | }) |
|
| 158 | .trigger('collapsestop.drawer'); |
|
| 159 | } |
|
| 160 | }); |
|
| 161 | } |
|
| 162 | else if (position === 'vertical-right') { |
|
| 163 | drawer.animate({ |
|
| 164 | width: 0 |
|
| 165 | }, { |
|
| 166 | duration: speed, |
|
| 167 | step: function(now, fx){ |
|
| 168 | if (!stay) { |
|
| 169 | form.css('margin-right', now); |
|
| 170 | } |
|
| 171 | }, |
|
| 172 | complete: function() { |
|
| 173 | drawer.css({ |
|
| 174 | display: 'none' |
|
| 175 | }) |
|
| 176 | .trigger('collapsestop.drawer'); |
|
| 177 | } |
|
| 178 | }); |
|
| 179 | } |
|
| 180 | else if (position === 'horizontal') { |
|
| 181 | drawer.animate({ |
|
| 182 | height: 'hide' |
|
| 183 | }, { |
|
| 184 | duration: speed, |
|
| 185 | complete: function() { |
|
| 186 | drawer.trigger('collapsestop.drawer'); |
|
| 187 | } |
|
| 188 | }); |
|
| 189 | } |
|
| 190 | ||
| 191 | // store state |
|
| 192 | if(Symphony.Support.localStorage === true) { |
|
| 193 | // Put in a try/catch incase we exceed storage space |
|
| 194 | try { |
|
| 195 | window.localStorage['symphony.drawer.' + drawer.attr('id') + context] = 'closed'; |
|
| 196 | } |
|
| 197 | catch(e) { |
|
| 198 | window.onerror(e.message); |
|
| 199 | } |
|
| 200 | } |
|
| 201 | ||
| 202 | wrapper.removeClass('drawer-' + position); |
|
| 203 | drawer.data('open', false); |
|
| 204 | }); |
|
| 205 | ||
| 206 | // Resize drawers |
|
| 207 | $(window).on('resize.drawer load.drawer', function() { |
|
| 208 | var height = getHeight(); |
|