summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJed Foster <jed@jedfoster.com>2015-01-02 15:07:07 -0800
committerJed Foster <jed@jedfoster.com>2015-01-02 15:07:07 -0800
commit1e9459ccb8a9c34428e4d711c108556c3e53feb0 (patch)
tree5f55d563fca131e5d1f39acb5ca15e8de616badb
parent854c4c6ec08975435cad12f1380eb09b3e3d9878 (diff)
downloadReadmore.js-1e9459ccb8a9c34428e4d711c108556c3e53feb0.zip
Readmore.js-1e9459ccb8a9c34428e4d711c108556c3e53feb0.tar.gz
Readmore.js-1e9459ccb8a9c34428e4d711c108556c3e53feb0.tar.bz2
Move `setBoxHeights` & `resizeBoxes` out of Readmore object
-rw-r--r--readmore.js91
1 files changed, 45 insertions, 46 deletions
diff --git a/readmore.js b/readmore.js
index ba3bf6d..bdb345e 100644
--- a/readmore.js
+++ b/readmore.js
@@ -55,6 +55,49 @@
return String(prefix == null ? 'readmore-js-' : prefix) + id;
}
+ var setBoxHeights = function(element) {
+ var el = element.clone().css({
+ 'height': 'auto',
+ 'width': element.width(),
+ 'max-height': 'none',
+ 'overflow': 'hidden'
+ }).insertAfter(element),
+ expandedHeight = el.outerHeight(true),
+ cssMaxHeight = parseInt(el.css({'max-height': ''}).css('max-height').replace(/[^-\d\.]/g, ''), 10);
+
+ el.remove();
+
+ var collapsedHeight = element.data('collapsedHeight') || element.data('defaultCollapsedHeight');
+
+ if (!cssMaxHeight) {
+ collapsedHeight = element.data('defaultCollapsedHeight');
+ }
+ else if (cssMaxHeight > collapsedHeight) {
+ collapsedHeight = cssMaxHeight;
+ }
+
+ // Store our measurements.
+ element.data({
+ 'expandedHeight': expandedHeight,
+ 'maxHeight': cssMaxHeight,
+ 'collapsedHeight': collapsedHeight
+ })
+ // and disable any `max-height` property set in CSS
+ .css('max-height', 'none');
+ };
+
+ var resizeBoxes = debounce(function() {
+ $('[data-readmore-js-section]').each(function() {
+ var current = $(this),
+ isExpanded = (current.attr('aria-expanded') === 'true');
+
+ setBoxHeights(current);
+
+ current.css('height', current.data( (isExpanded ? 'expandedHeight' : 'collapsedHeight') ));
+ });
+ }, 100);
+
+
function Readmore(element, options) {
var $this = this;
@@ -113,7 +156,7 @@
$(this.element).each(function() {
var current = $(this);
- $this.setBoxHeights(current);
+ setBoxHeights(current);
var collapsedHeight = current.data('collapsedHeight'),
heightMargin = current.data('heightMargin');
@@ -137,7 +180,7 @@
});
window.addEventListener('resize', function(event) {
- $this.resizeBoxes();
+ resizeBoxes();
});
},
@@ -187,50 +230,6 @@
$(trigger).replaceWith($($this.options[newLink]).on('click', function(event) { $this.toggle(this, element, event); }).attr({'data-readmore-js-toggle': '', 'aria-controls': $element.attr('id')}));
},
- setBoxHeights: function(element) {
- var el = element.clone().css({
- 'height': 'auto',
- 'width': element.width(),
- 'max-height': 'none',
- 'overflow': 'hidden'
- }).insertAfter(element),
- expandedHeight = el.outerHeight(true),
- cssMaxHeight = parseInt(el.css({'max-height': ''}).css('max-height').replace(/[^-\d\.]/g, ''), 10);
-
- el.remove();
-
- var collapsedHeight = element.data('collapsedHeight') || element.data('defaultCollapsedHeight');
-
- if (!cssMaxHeight) {
- collapsedHeight = element.data('defaultCollapsedHeight');
- }
- else if (cssMaxHeight > collapsedHeight) {
- collapsedHeight = cssMaxHeight;
- }
-
- // Store our measurements.
- element.data({
- 'expandedHeight': expandedHeight,
- 'maxHeight': cssMaxHeight,
- 'collapsedHeight': collapsedHeight
- })
- // and disable any `max-height` property set in CSS
- .css('max-height', 'none');
- },
-
- resizeBoxes: debounce(function() {
- var $this = this;
-
- $('[data-readmore-js-section]').each(function() {
- var current = $(this),
- isExpanded = (current.attr('aria-expanded') === 'true');
-
- $this.setBoxHeights(current);
-
- current.css('height', current.data( (isExpanded ? 'expandedHeight' : 'collapsedHeight') ));
- });
- }, 100),
-
destroy: function() {
var $this = this;