Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.8.0 dev #206

Open
wants to merge 24 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
f9dc67b
Allow 'duration' parameter for Wave.ripple() options
dwtkns Mar 18, 2016
6372d2b
Used span instead of i element for input/submit button. Also removed …
Jan 2, 2017
b70f3bb
Removed unnecessary padding for .waves-button-input
Jan 2, 2017
b2b93d3
Changed stylus file also
Jan 3, 2017
23eea4d
no message
Jan 16, 2017
7a44a25
Add option to specify which elements to apply the effect to
rbu Jan 17, 2017
c721e8d
Merge pull request #168 from dwtkns/patch-1
fians Mar 20, 2017
e73ba55
Update version file
Mar 20, 2017
22c40b2
Merge branch '0.8.0-dev' of https://github.com/fians/Waves into 0.8.0…
Mar 20, 2017
8bee54d
Update license year
Mar 20, 2017
9e0b83c
Merge pull request #169 from rbu/effect-element-option
fians Mar 20, 2017
1c3515c
Remove unnecessary comment
Mar 26, 2017
f777ed0
Fix match jslint
Mar 26, 2017
34ac427
Prevent `Waves.attach` attaching duplicate classes #136
Mar 26, 2017
1280fd2
Replace `parentElement` with `parentNode` when getting waves element …
Mar 26, 2017
53abe82
Add `Waves.destroy()` and `Waves.detach()` functionality #159
Mar 26, 2017
0bf53af
Merge pull request #172 from ralphbolliger/master
fians Apr 5, 2017
2379305
Fixed input button wrapper for transition compatibility
klasjersevi Sep 5, 2017
3eb5ba5
Merge pull request #177 from Mindroute/0.8.0-dev
fians Oct 24, 2017
6db3144
perf(init): prevent unnecessary listeners
Jun 11, 2019
d44187e
chore(jshint): code fixes
Jun 11, 2019
6590713
Merge branch 'master' into 0.8.0-dev
May 5, 2020
6a6f4cd
Merge branch '0.8.0-dev' into 0.8.0-dev
fians May 5, 2020
36d6b50
Merge pull request #202 from luizgamabh/0.8.0-dev
fians May 5, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,4 @@ tests/

# Apple stuff
.DS_Store
.idea/
4 changes: 2 additions & 2 deletions dist/waves.css
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*!
* Waves v0.7.6
* Waves v0.8.0
* http://fian.my.id/Waves
*
* Copyright 2014-2018 Alfiana E. Sibuea and other contributors
Expand Down Expand Up @@ -95,7 +95,7 @@
}
.waves-button-input {
margin: 0;
padding: 0.85em 1.1em;
padding: 0em;
}
.waves-input-wrapper {
border-radius: 0.2em;
Expand Down
135 changes: 106 additions & 29 deletions dist/waves.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*!
* Waves v0.7.6
* Waves v0.8.0
* http://fian.my.id/Waves
*
* Copyright 2014-2018 Alfiana E. Sibuea and other contributors
Expand Down Expand Up @@ -106,6 +106,10 @@

// Effect delay (check for scroll before showing effect)
delay: 200,

// Selector to find element to apply effect to.
// Can contain multiple classes (like ".btn, .nav a")
elementSelector: ".waves-effect",

show: function(e, element, velocity) {

Expand Down Expand Up @@ -211,14 +215,16 @@
var parent = element.parentNode;

// If input already have parent just pass through
if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {
if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {
return;
}

// Put element class and style to the specified parent
var wrapper = document.createElement('i');
wrapper.className = element.className + ' waves-input-wrapper';
element.className = 'waves-button-input';
var wrapper = document.createElement('span');

// Disable transitions while modifying styles
wrapper.style.transition = 'none';
element.style.transition = 'none';

// Put element as child
parent.replaceChild(wrapper, element);
Expand All @@ -229,9 +235,18 @@
var color = elementStyle.color;
var backgroundColor = elementStyle.backgroundColor;

wrapper.setAttribute('style', 'color:' + color + ';background:' + backgroundColor);
element.setAttribute('style', 'background-color:rgba(0,0,0,0);');
wrapper.style.color = color;
wrapper.style.background = backgroundColor;
element.style.background = 'transparent';

wrapper.className = element.className + ' waves-input-wrapper';
element.className = 'waves-button-input';

// Clear transition overrride
setTimeout(function() {
wrapper.style.transition = '';
element.style.transition = '';
}, 0);
},

// Wrap <img> tag so it can perform the effect
Expand All @@ -240,12 +255,12 @@
var parent = element.parentNode;

// If input already have parent just pass through
if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {
if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {
return;
}

// Put element as child
var wrapper = document.createElement('i');
var wrapper = document.createElement('span');
parent.replaceChild(wrapper, element);
wrapper.appendChild(element);

Expand Down Expand Up @@ -358,6 +373,18 @@
}
};

/**
* Browser-compatible version of Element.matches().
*/
function matches(element, selector) {
var match = document.documentElement.matches ||
document.documentElement.matchesSelector ||
document.documentElement.webkitMatchesSelector ||
document.documentElement.mozMatchesSelector ||
document.documentElement.msMatchesSelector ||
document.documentElement.oMatchesSelector;
return match.call(element, selector);
}

/**
* Delegated click handler for .waves-effect element.
Expand All @@ -372,12 +399,12 @@
var element = null;
var target = e.target || e.srcElement;

while (target.parentElement) {
if ( (!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {
while (target.parentNode) {
if ( (!(target instanceof SVGElement)) && matches(target, Effect.elementSelector)) {
element = target;
break;
}
target = target.parentElement;
target = target.parentNode;
}

return element;
Expand All @@ -388,12 +415,6 @@
*/
function showEffect(e) {

// Disable effect if element has "disabled" property on it
// In some cases, the event is not triggered by the current element
// if (e.target.getAttribute('disabled') !== null) {
// return;
// }

var element = getWavesEffectElement(e);

if (element !== null) {
Expand Down Expand Up @@ -477,23 +498,45 @@
Effect.delay = options.delay;
}

if ('elementSelector' in options) {
Effect.elementSelector = options.elementSelector;
}

if (!window.WavesReady) {
window.WavesReady = true;
if (isTouchAvailable) {
body.addEventListener('touchstart', showEffect, false);
body.addEventListener('touchcancel', TouchHandler.registerEvent, false);
body.addEventListener('touchend', TouchHandler.registerEvent, false);
}

body.addEventListener('mousedown', showEffect, false);
}
};

Waves.destroy = function() {

var body = document.body;

if (isTouchAvailable) {
body.addEventListener('touchstart', showEffect, false);
body.addEventListener('touchcancel', TouchHandler.registerEvent, false);
body.addEventListener('touchend', TouchHandler.registerEvent, false);
body.removeEventListener('touchstart', showEffect, false);
body.removeEventListener('touchcancel', TouchHandler.registerEvent, false);
body.removeEventListener('touchend', TouchHandler.registerEvent, false);
}

body.addEventListener('mousedown', showEffect, false);
body.removeEventListener('mousedown', showEffect, false);
delete window.WavesReady;

};


/**
* Attach Waves to dynamically loaded inputs, or add .waves-effect and other
* Toggle (Attach/Detach) Waves to dynamically loaded inputs, or add .waves-effect and other
* waves classes to a set of elements. Set drag to true if the ripple mouseover
* or skimming effect should be applied to the elements.
*/
Waves.attach = function(elements, classes) {

function toggleWaves(elements, classes, type) {
elements = getWavesElements(elements);

if (toString.call(classes) === '[object Array]') {
Expand All @@ -511,13 +554,43 @@

if (['input', 'img'].indexOf(tagName) !== -1) {
TagWrapper[tagName](element);
element = element.parentElement;
element = element.parentNode;
}

if (type === 'attach') {

if (element.className.indexOf(classes) === -1) {
element.className += ' '+classes;
}

if (element.className.indexOf('waves-effect') === -1) {
element.className += ' waves-effect' + classes;
if (!element.classList.contains('waves-effect')) {
element.classList.add('waves-effect');
}

}

if (type === 'detach') {

if (element.className.indexOf(classes) !== -1) {
element.className = element.className.replace(new RegExp(classes, 'g'), '');
}

if (element.classList.contains('waves-effect')) {
element.classList.remove('waves-effect');
}

}

}

}

Waves.attach = function(elements, classes) {
return toggleWaves(elements, classes, 'attach');
};

Waves.detach = function(elements, classes) {
return toggleWaves(elements, classes, 'detach');
};


Expand Down Expand Up @@ -558,7 +631,11 @@

mousedown.pageX = centre.x;
mousedown.pageY = centre.y;


if ('duration' in options) {
Effect.duration = options.duration;
}

Effect.show(mousedown, element);

if (options.wait >= 0 && options.wait !== null) {
Expand Down
4 changes: 2 additions & 2 deletions dist/waves.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading