From 51d9c96566ddb1fff540f1e5adea671dd13483ed Mon Sep 17 00:00:00 2001 From: Dan Dohotaru Date: Fri, 27 Oct 2017 08:25:56 +0200 Subject: [PATCH 1/4] fix scroll to value --- examples/demo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/demo.js b/examples/demo.js index 17ff731..7337fd6 100644 --- a/examples/demo.js +++ b/examples/demo.js @@ -36,7 +36,7 @@ bricklayer.on("afterAppend", function (e) { var buttons = document.querySelectorAll("button"); function goToScroll(value) { - document.body.scrollTop = value + document.documentElement.scrollTop = value } Array.prototype.slice.call(buttons).forEach(function (button) { button.addEventListener('click', function (e) { From 501c712b547ef0867d9b0f086ea0708a02410ac9 Mon Sep 17 00:00:00 2001 From: Dan Dohotaru Date: Fri, 27 Oct 2017 11:05:47 +0200 Subject: [PATCH 2/4] implement remove item feature --- src/bricklayer.ts | 50 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/src/bricklayer.ts b/src/bricklayer.ts index 8d43d8d..cbe1d2a 100644 --- a/src/bricklayer.ts +++ b/src/bricklayer.ts @@ -4,7 +4,7 @@ interface IOptions { } module Bricklayer { - + // Helper Functions function toArray(arrayLike : {length : number}) { return [].slice.call(arrayLike) @@ -82,13 +82,26 @@ module Bricklayer { this.applyPosition('prepend', column, item) } + remove(item) { + if (Array.isArray(item)) { + item.forEach(item => this.remove(item)) + return + } + let index = this.elements.indexOf(item); + this.elements.splice(index, 1); + let column = item.closest(".bricklayer-column"); + this.applyPosition('remove', column, item); + } + on(eventName, handler) { // eventName may be: // - breakpoint - // - afterAppend // - beforeAppend - // - afterPrepend + // - afterAppend // - beforePrepend + // - afterPrepend + // - beforeRemove + // - afterRemove this.element.addEventListener(`bricklayer.${eventName}`, handler) return this } @@ -193,6 +206,10 @@ module Bricklayer { case 'prepend': column.insertBefore(item, column.firstChild) break + case 'remove': + column.removeChild(item); + this.redraw(); + break } trigger('after') } @@ -200,6 +217,33 @@ module Bricklayer { } } +// Polyfills +interface Element{ + matches(selectors: string); + closest(selector: string); +} + +if (!Element.prototype.matches) { + Element.prototype.matches = Element.prototype.msMatchesSelector + || Element.prototype.webkitMatchesSelector; +} + +if (!Element.prototype.closest) { + Element.prototype.closest = function (selector) { + var element = this; + if (!document.documentElement.contains(element)) + return null; + + do { + if (element.matches(selector)) + return element; + element = element.parentElement; + } while (element !== null); + + return null; + }; +} + declare var define declare var module From c437152ee324236fde889054d077930c70b16f14 Mon Sep 17 00:00:00 2001 From: Dan Dohotaru Date: Fri, 27 Oct 2017 11:08:26 +0200 Subject: [PATCH 3/4] update dist via gulp export --- dist/bricklayer-node.js | 38 ++++++++++++++++++++++++++++++++++++-- dist/bricklayer.js | 38 ++++++++++++++++++++++++++++++++++++-- dist/bricklayer.min.js | 2 +- 3 files changed, 73 insertions(+), 5 deletions(-) diff --git a/dist/bricklayer-node.js b/dist/bricklayer-node.js index 3c84ea0..54e028f 100644 --- a/dist/bricklayer-node.js +++ b/dist/bricklayer-node.js @@ -81,13 +81,26 @@ var Bricklayer; this.elements = [item].concat(toArray(this.elements)); this.applyPosition('prepend', column, item); }; + Container.prototype.remove = function (item) { + var _this = this; + if (Array.isArray(item)) { + item.forEach(function (item) { return _this.remove(item); }); + return; + } + var index = this.elements.indexOf(item); + this.elements.splice(index, 1); + var column = item.closest(".bricklayer-column"); + this.applyPosition('remove', column, item); + }; Container.prototype.on = function (eventName, handler) { // eventName may be: // - breakpoint - // - afterAppend // - beforeAppend - // - afterPrepend + // - afterAppend // - beforePrepend + // - afterPrepend + // - beforeRemove + // - afterRemove this.element.addEventListener("bricklayer." + eventName, handler); return this; }; @@ -182,6 +195,10 @@ var Bricklayer; case 'prepend': column.insertBefore(item, column.firstChild); break; + case 'remove': + column.removeChild(item); + this.redraw(); + break; } trigger('after'); }; @@ -189,6 +206,23 @@ var Bricklayer; }()); Bricklayer.Container = Container; })(Bricklayer || (Bricklayer = {})); +if (!Element.prototype.matches) { + Element.prototype.matches = Element.prototype.msMatchesSelector + || Element.prototype.webkitMatchesSelector; +} +if (!Element.prototype.closest) { + Element.prototype.closest = function (selector) { + var element = this; + if (!document.documentElement.contains(element)) + return null; + do { + if (element.matches(selector)) + return element; + element = element.parentElement; + } while (element !== null); + return null; + }; +} (function (root, factory) { if (typeof define === 'function' && define.amd) { define(function () { return factory(); }); diff --git a/dist/bricklayer.js b/dist/bricklayer.js index 613e494..df2df3e 100644 --- a/dist/bricklayer.js +++ b/dist/bricklayer.js @@ -82,13 +82,26 @@ var Bricklayer; this.elements = [item].concat(toArray(this.elements)); this.applyPosition('prepend', column, item); }; + Container.prototype.remove = function (item) { + var _this = this; + if (Array.isArray(item)) { + item.forEach(function (item) { return _this.remove(item); }); + return; + } + var index = this.elements.indexOf(item); + this.elements.splice(index, 1); + var column = item.closest(".bricklayer-column"); + this.applyPosition('remove', column, item); + }; Container.prototype.on = function (eventName, handler) { // eventName may be: // - breakpoint - // - afterAppend // - beforeAppend - // - afterPrepend + // - afterAppend // - beforePrepend + // - afterPrepend + // - beforeRemove + // - afterRemove this.element.addEventListener("bricklayer." + eventName, handler); return this; }; @@ -183,6 +196,10 @@ var Bricklayer; case 'prepend': column.insertBefore(item, column.firstChild); break; + case 'remove': + column.removeChild(item); + this.redraw(); + break; } trigger('after'); }; @@ -190,6 +207,23 @@ var Bricklayer; }()); Bricklayer.Container = Container; })(Bricklayer || (Bricklayer = {})); +if (!Element.prototype.matches) { + Element.prototype.matches = Element.prototype.msMatchesSelector + || Element.prototype.webkitMatchesSelector; +} +if (!Element.prototype.closest) { + Element.prototype.closest = function (selector) { + var element = this; + if (!document.documentElement.contains(element)) + return null; + do { + if (element.matches(selector)) + return element; + element = element.parentElement; + } while (element !== null); + return null; + }; +} (function (root, factory) { if (typeof define === 'function' && define.amd) { define(function () { return factory(); }); diff --git a/dist/bricklayer.min.js b/dist/bricklayer.min.js index fc975d3..5451c46 100644 --- a/dist/bricklayer.min.js +++ b/dist/bricklayer.min.js @@ -1 +1 @@ -!function t(e,n,r){function o(s,u){if(!n[s]){if(!e[s]){var l="function"==typeof require&&require;if(!u&&l)return l(s,!0);if(i)return i(s,!0);var a=new Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[s]={exports:{}};e[s][0].call(p.exports,function(t){var n=e[s][1][t];return o(n?n:t)},p,p.exports,t,e,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s