Skip to content

Commit

Permalink
Bumped version to 8.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
fabiospampinato committed Jun 20, 2020
1 parent a66b43e commit 8243dd9
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 69 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
### Version 8.0.0
- Improved alignment with jQuery regarding handling of non-bubbling events significantly

### Version 7.0.4
- Ensuring unusual but valid simple selectors are handled properly

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ If you're migrating from jQuery be sure to read our [migration guide](https://gi

## Usage

Get Cash from [CloudFlare](https://cdnjs.cloudflare.com/ajax/libs/cash/7.0.4/cash.min.js) or [jsDelivr](https://cdn.jsdelivr.net/npm/cash-dom@7.0.4/dist/cash.min.js) and use it like this:
Get Cash from [CloudFlare](https://cdnjs.cloudflare.com/ajax/libs/cash/8.0.0/cash.min.js) or [jsDelivr](https://cdn.jsdelivr.net/npm/cash-dom@8.0.0/dist/cash.min.js) and use it like this:

```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/cash/7.0.4/cash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/cash/8.0.0/cash.min.js"></script>
<script>
$(function () {
$('html').addClass ( 'dom-loaded' );
Expand Down
1 change: 1 addition & 0 deletions dist/cash.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
interface Event {
namespace: string;
data: any;
relatedTarget?: Node | null;
___cd?: boolean;
___ifocus?: boolean;
___iblur?: boolean;
Expand Down
20 changes: 8 additions & 12 deletions dist/cash.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -586,13 +586,11 @@ fn.off = function (eventFullName, selector, callback) {
selector = '';
}
each(getSplitValues(eventFullName), (i, eventFullName) => {
const [nameOriginal, namespaces] = parseEventName(eventFullName), name = getEventNameBubbling(nameOriginal), isEventBubblingProxy = (nameOriginal !== name);
const [nameOriginal, namespaces] = parseEventName(eventFullName), name = getEventNameBubbling(nameOriginal);
this.each((i, ele) => {
if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))
return;
removeEvent(ele, name, namespaces, selector, callback);
if (isEventBubblingProxy)
removeEvent(ele, nameOriginal, namespaces, selector, callback);
});
});
}
Expand Down Expand Up @@ -626,17 +624,19 @@ function on(eventFullName, selector, data, callback, _one) {
if (!callback)
return this;
each(getSplitValues(eventFullName), (i, eventFullName) => {
const [nameOriginal, namespaces] = parseEventName(eventFullName), name = getEventNameBubbling(nameOriginal), isEventBubblingProxy = (nameOriginal !== name), isEventFocus = (nameOriginal in eventsFocus);
const [nameOriginal, namespaces] = parseEventName(eventFullName), name = getEventNameBubbling(nameOriginal), isEventHover = (nameOriginal in eventsHover), isEventFocus = (nameOriginal in eventsFocus);
if (!name)
return;
this.each((i, ele) => {
if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))
return;
const finalCallback = function (event) {
if (isEventBubblingProxy && (event.___ot ? event.___ot !== nameOriginal : event.type !== nameOriginal || (event.target[`___i${nameOriginal}`] && (delete event.target[`___i${nameOriginal}`], event.stopImmediatePropagation(), true))))
return;
if (event.target[`___i${event.type}`])
return event.stopImmediatePropagation(); // Ignoring native event in favor of the upcoming custom one
if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator)))
return;
if (!selector && ((isEventFocus && (event.target !== ele || event.___ot === name)) || (isEventHover && event.relatedTarget && ele.contains(event.relatedTarget))))
return;
let thisArg = ele;
if (selector) {
let target = event.target;
Expand All @@ -650,9 +650,6 @@ function on(eventFullName, selector, data, callback, _one) {
thisArg = target;
event.___cd = true; // Delegate
}
else if (isEventFocus && event.___ot === nameOriginal && ele !== event.target && ele.contains(event.target)) {
return;
}
if (event.___cd) {
Object.defineProperty(event, 'currentTarget', {
configurable: true,
Expand All @@ -678,8 +675,6 @@ function on(eventFullName, selector, data, callback, _one) {
};
finalCallback.guid = callback.guid = (callback.guid || cash.guid++);
addEvent(ele, name, namespaces, selector, finalCallback);
if (isEventBubblingProxy)
addEvent(ele, nameOriginal, namespaces, selector, finalCallback);
});
});
return this;
Expand Down Expand Up @@ -715,8 +710,9 @@ fn.trigger = function (event, data) {
const isEventFocus = (event.___ot in eventsFocus);
return this.each((i, ele) => {
if (isEventFocus && isFunction(ele[event.___ot])) {
ele[`___i${event.___ot}`] = true; // Ensuring this event gets ignored
ele[`___i${event.type}`] = true; // Ensuring the native event is ignored
ele[event.___ot]();
ele[`___i${event.type}`] = false; // Ensuring the custom event is not ignored
}
ele.dispatchEvent(event);
});
Expand Down
17 changes: 8 additions & 9 deletions dist/cash.js
Original file line number Diff line number Diff line change
Expand Up @@ -728,13 +728,11 @@ fn.off = function (eventFullName, selector, callback) {
var _a = parseEventName(eventFullName),
nameOriginal = _a[0],
namespaces = _a[1],
name = getEventNameBubbling(nameOriginal),
isEventBubblingProxy = nameOriginal !== name;
name = getEventNameBubbling(nameOriginal);

_this.each(function (i, ele) {
if (!isElement(ele) && !isDocument(ele) && !isWindow(ele)) return;
removeEvent(ele, name, namespaces, selector, callback);
if (isEventBubblingProxy) removeEvent(ele, nameOriginal, namespaces, selector, callback);
});
});
}
Expand Down Expand Up @@ -777,7 +775,7 @@ function on(eventFullName, selector, data, callback, _one) {
nameOriginal = _a[0],
namespaces = _a[1],
name = getEventNameBubbling(nameOriginal),
isEventBubblingProxy = nameOriginal !== name,
isEventHover = nameOriginal in eventsHover,
isEventFocus = nameOriginal in eventsFocus;

if (!name) return;
Expand All @@ -786,8 +784,10 @@ function on(eventFullName, selector, data, callback, _one) {
if (!isElement(ele) && !isDocument(ele) && !isWindow(ele)) return;

var finalCallback = function finalCallback(event) {
if (isEventBubblingProxy && (event.___ot ? event.___ot !== nameOriginal : event.type !== nameOriginal || event.target["___i" + nameOriginal] && (delete event.target["___i" + nameOriginal], event.stopImmediatePropagation(), true))) return;
if (event.target["___i" + event.type]) return event.stopImmediatePropagation(); // Ignoring native event in favor of the upcoming custom one

if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator))) return;
if (!selector && (isEventFocus && (event.target !== ele || event.___ot === name) || isEventHover && event.relatedTarget && ele.contains(event.relatedTarget))) return;
var thisArg = ele;

if (selector) {
Expand All @@ -801,8 +801,6 @@ function on(eventFullName, selector, data, callback, _one) {

thisArg = target;
event.___cd = true; // Delegate
} else if (isEventFocus && event.___ot === nameOriginal && ele !== event.target && ele.contains(event.target)) {
return;
}

if (event.___cd) {
Expand Down Expand Up @@ -834,7 +832,6 @@ function on(eventFullName, selector, data, callback, _one) {

finalCallback.guid = callback.guid = callback.guid || cash.guid++;
addEvent(ele, name, namespaces, selector, finalCallback);
if (isEventBubblingProxy) addEvent(ele, nameOriginal, namespaces, selector, finalCallback);
});
});
return this;
Expand Down Expand Up @@ -882,9 +879,11 @@ fn.trigger = function (event, data) {
var isEventFocus = event.___ot in eventsFocus;
return this.each(function (i, ele) {
if (isEventFocus && isFunction(ele[event.___ot])) {
ele["___i" + event.___ot] = true; // Ensuring this event gets ignored
ele["___i" + event.type] = true; // Ensuring the native event is ignored

ele[event.___ot]();

ele["___i" + event.type] = false; // Ensuring the custom event is not ignored
}

ele.dispatchEvent(event);
Expand Down

0 comments on commit 8243dd9

Please sign in to comment.