Skip to content

Commit

Permalink
Add improve of overflow scroll
Browse files Browse the repository at this point in the history
  • Loading branch information
dixso committed Jan 14, 2017
1 parent 0f6c059 commit 50eaf4f
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 95 deletions.
8 changes: 6 additions & 2 deletions src/custombox.scss
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ $overlay: #{$cb}-overlay;
$content: #{$cb}-content;
$container: #{$cb}-container;
$perspective: #{$cb}-perspective;
$lock: #{$cb}-lock;
$index: 9997;

// Actions
Expand Down Expand Up @@ -86,11 +87,14 @@ $effect23: #{$cb}-flash;
align-items: center;
align-content: stretch;
}
.#{$lock} {
overflow: hidden;
}
.#{$content} {
overflow-y: auto;
> * {
max-width: 100%;
max-height: 100%;
overflow-y: auto;
max-height: 95%;
}
}
.#{$cb}-fullscreen.#{$content} {
Expand Down
165 changes: 73 additions & 92 deletions src/custombox.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,33 @@ function hasElement(element: string): boolean {
return document.body.contains(document.querySelector(element));
}

function getAfterEach() {
for (let i = 1; i < 3; i++) {
let elem = document.getElementById(`foo-${i}`);
elem.parentNode.removeChild(elem);
}

// custombox-content
let contents = document.querySelectorAll('.custombox-content');
for (let i = 0, t = contents.length; i < t; i++) {
contents[i].parentNode.removeChild(contents[i]);
}

// custombox-overlay
let overlays = document.querySelectorAll('.custombox-overlay');
for (let i = 0, t = overlays.length; i < t; i++) {
overlays[i].parentNode.removeChild(overlays[i]);
}

// custombox-loader
let loaders = document.querySelectorAll('.custombox-loader');
for (let i = 0, t = loaders.length; i < t; i++) {
loaders[i].parentNode.removeChild(loaders[i]);
}

delete Custombox;
}

describe('Custombox', () => {
describe('Methods', () => {
let originalTimeout;
Expand All @@ -20,28 +47,7 @@ describe('Custombox', () => {
});

afterEach(()=> {
for (let i = 1; i < 3; i++) {
let elem = document.getElementById(`foo-${i}`);
elem.parentNode.removeChild(elem);
}

// custombox-content
let contents = document.querySelectorAll('.custombox-content');
for (let i = 0, t = contents.length; i < t; i++) {
contents[i].parentNode.removeChild(contents[i]);
}

// custombox-overlay
let overlays = document.querySelectorAll('.custombox-overlay');
for (let i = 0, t = overlays.length; i < t; i++) {
overlays[i].parentNode.removeChild(overlays[i]);
}

// custombox-loader
let loaders = document.querySelectorAll('.custombox-loader');
for (let i = 0, t = loaders.length; i < t; i++) {
loaders[i].parentNode.removeChild(loaders[i]);
}
getAfterEach();

delete Custombox;

Expand Down Expand Up @@ -207,28 +213,7 @@ describe('Custombox', () => {
});

afterEach(()=> {
for (let i = 1; i < 3; i++) {
let elem = document.getElementById(`foo-${i}`);
elem.parentNode.removeChild(elem);
}

// custombox-content
let contents = document.querySelectorAll('.custombox-content');
for (let i = 0, t = contents.length; i < t; i++) {
contents[i].parentNode.removeChild(contents[i]);
}

// custombox-overlay
let overlays = document.querySelectorAll('.custombox-overlay');
for (let i = 0, t = overlays.length; i < t; i++) {
overlays[i].parentNode.removeChild(overlays[i]);
}

// custombox-loader
let loaders = document.querySelectorAll('.custombox-loader');
for (let i = 0, t = loaders.length; i < t; i++) {
loaders[i].parentNode.removeChild(loaders[i]);
}
getAfterEach();

delete Custombox;

Expand Down Expand Up @@ -488,30 +473,7 @@ describe('Custombox', () => {
});

afterEach(()=> {
for (let i = 1; i < 3; i++) {
let elem = document.getElementById(`foo-${i}`);
elem.parentNode.removeChild(elem);
}

// custombox-content
let contents = document.querySelectorAll('.custombox-content');
for (let i = 0, t = contents.length; i < t; i++) {
contents[i].parentNode.removeChild(contents[i]);
}

// custombox-overlay
let overlays = document.querySelectorAll('.custombox-overlay');
for (let i = 0, t = overlays.length; i < t; i++) {
overlays[i].parentNode.removeChild(overlays[i]);
}

// custombox-loader
let loaders = document.querySelectorAll('.custombox-loader');
for (let i = 0, t = loaders.length; i < t; i++) {
loaders[i].parentNode.removeChild(loaders[i]);
}

delete Custombox;
getAfterEach();

jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;

Expand Down Expand Up @@ -830,30 +792,7 @@ describe('Custombox', () => {
});

afterEach(()=> {
for (let i = 1; i < 3; i++) {
let elem = document.getElementById(`foo-${i}`);
elem.parentNode.removeChild(elem);
}

// custombox-content
let contents = document.querySelectorAll('.custombox-content');
for (let i = 0, t = contents.length; i < t; i++) {
contents[i].parentNode.removeChild(contents[i]);
}

// custombox-overlay
let overlays = document.querySelectorAll('.custombox-overlay');
for (let i = 0, t = overlays.length; i < t; i++) {
overlays[i].parentNode.removeChild(overlays[i]);
}

// custombox-loader
let loaders = document.querySelectorAll('.custombox-loader');
for (let i = 0, t = loaders.length; i < t; i++) {
loaders[i].parentNode.removeChild(loaders[i]);
}

delete Custombox;
getAfterEach();

jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;

Expand Down Expand Up @@ -1044,4 +983,46 @@ describe('Custombox', () => {
}, 500);
});
});

describe('Scroll', () => {
let originalTimeout;
beforeEach(() => {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});

beforeEach(() => {
for (let i = 1; i < 3; i++) {
let div = document.createElement('div');
div.innerHTML = `Lorem ipmsum (${i}) ...`;
div.setAttribute('id', `foo-${i}`);
document.body.appendChild(div);
}
});

afterEach(()=> {
getAfterEach();

jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});

it('should remove perspective class', (done) => {
new (Custombox as any).modal({
content: {
effect: 'fall',
target: '#foo-1',
}
}).open();

setTimeout(() => {
expect(document.documentElement.classList.contains('custombox-perspective')).toBe(true);
Custombox.modal.close();

setTimeout(() => {
expect(document.documentElement.classList.contains('custombox-perspective')).toBe(false);
done();
}, 750);
}, 500);
});
});
});
15 changes: 14 additions & 1 deletion src/custombox.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ namespace Custombox {
const CB: string = 'custombox';
const OPEN: string = `${CB}-open`;
const CLOSE: string = `${CB}-close`;
const LOCK: string = `${CB}-lock`;
const FROM: string = 'animateFrom';
const BLOCK: string = 'block';
const positionValues: Array<string> = ['top', 'right', 'bottom', 'left'];
Expand All @@ -64,6 +65,12 @@ namespace Custombox {
static check(values: Array<string>, match: string): boolean {
return values.indexOf(match) > -1;
}

static checkLock(content: HTMLElement) {
if (content.offsetHeight >= window.innerHeight) {
document.body.classList.add(LOCK);
}
}
}

class Scroll {
Expand Down Expand Up @@ -524,7 +531,10 @@ namespace Custombox {
}

// Content
this.content.bind(OPEN).then(() => this.dispatchEvent('content.onComplete'));
this.content.bind(OPEN).then(() => {
Snippet.checkLock(this.content.element);
this.dispatchEvent('content.onComplete');
});

// Dispatch event
this.dispatchEvent('content.onOpen');
Expand Down Expand Up @@ -622,6 +632,9 @@ namespace Custombox {
}

this.dispatchEvent('content.onClose');

// Remove lock
document.body.classList.remove(LOCK);
});
}

Expand Down

0 comments on commit 50eaf4f

Please sign in to comment.