Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dcb5062

Browse files
author
Alain Dumesny
committed
Array.findIndex() poly for IE11
1 parent 1f9560d commit dcb5062

File tree

3 files changed

+63
-15
lines changed

3 files changed

+63
-15
lines changed

demo/column.html

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
1313
<script src="../dist/jquery-ui.min.js"></script>
14+
<script src="../src/gridstack-poly.js"></script>
1415
<script src="../src/gridstack.js"></script>
1516
<script src="../src/gridstack.jQueryUI.js"></script>
1617
</head>
@@ -36,9 +37,9 @@ <h1>setColumn() grid demo</h1>
3637
$grid.gridstack({float: true});
3738
grid = $grid.data('gridstack');
3839

39-
$grid.on('added', (e, items) => log(' added ', items));
40-
$grid.on('removed', (e, items) => log(' removed ', items));
41-
$grid.on('change', (e, items) => log(' change ', items));
40+
$grid.on('added', function(e, items) {log(' added ', items)});
41+
$grid.on('removed', function(e, items) {log(' removed ', items)});
42+
$grid.on('change', function(e, items) {log(' change ', items)});
4243
function log(type, items) {
4344
if (!items) { return; }
4445
var str = '';
@@ -63,7 +64,7 @@ <h1>setColumn() grid demo</h1>
6364
};
6465
grid.commit();
6566

66-
$('#add-widget').click(() => {
67+
$('#add-widget').click(function() {
6768
var node = items.pop() || {
6869
x: Math.round(12 * Math.random()),
6970
y: Math.round(5 * Math.random()),
@@ -73,15 +74,15 @@ <h1>setColumn() grid demo</h1>
7374
grid.addWidget($('<div><div class="grid-stack-item-content">' + count++ + '</div></div>'), node);
7475
});
7576

76-
$('#1column').click(() => { grid.setColumn(1); });
77-
$('#2column').click(() => { grid.setColumn(2); });
78-
$('#3column').click(() => { grid.setColumn(3); });
79-
$('#4column').click(() => { grid.setColumn(4); });
80-
$('#6column').click(() => { grid.setColumn(6); });
81-
$('#6column').click(() => { grid.setColumn(6); });
82-
$('#8column').click(() => { grid.setColumn(8); });
83-
$('#10column').click(() => { grid.setColumn(10); });
84-
$('#12column').click(() => { grid.setColumn(12); });
77+
$('#1column').click(function() { grid.setColumn(1); });
78+
$('#2column').click(function() { grid.setColumn(2); });
79+
$('#3column').click(function() { grid.setColumn(3); });
80+
$('#4column').click(function() { grid.setColumn(4); });
81+
$('#6column').click(function() { grid.setColumn(6); });
82+
$('#6column').click(function() { grid.setColumn(6); });
83+
$('#8column').click(function() { grid.setColumn(8); });
84+
$('#10column').click(function() { grid.setColumn(10); });
85+
$('#12column').click(function() { grid.setColumn(12); });
8586
});
8687
</script>
8788
</body>

src/gridstack-poly.js

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Number.isNaN = Number.isNaN || function isNaN(input) {
1010
return typeof input === 'number' && input !== input;
1111
}
1212

13-
// https://tc39.github.io/ecma262/#sec-array.prototype.find
13+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
1414
if (!Array.prototype.find) {
1515
Object.defineProperty(Array.prototype, 'find', {
1616
value: function (predicate) {
@@ -55,4 +55,51 @@ if (!Array.prototype.find) {
5555
configurable: true,
5656
writable: true
5757
});
58+
}
59+
60+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex
61+
if (!Array.prototype.findIndex) {
62+
Object.defineProperty(Array.prototype, 'findIndex', {
63+
value: function(predicate) {
64+
// 1. Let O be ? ToObject(this value).
65+
if (this == null) {
66+
throw new TypeError('"this" is null or not defined');
67+
}
68+
69+
var o = Object(this);
70+
71+
// 2. Let len be ? ToLength(? Get(O, "length")).
72+
var len = o.length >>> 0;
73+
74+
// 3. If IsCallable(predicate) is false, throw a TypeError exception.
75+
if (typeof predicate !== 'function') {
76+
throw new TypeError('predicate must be a function');
77+
}
78+
79+
// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
80+
var thisArg = arguments[1];
81+
82+
// 5. Let k be 0.
83+
var k = 0;
84+
85+
// 6. Repeat, while k < len
86+
while (k < len) {
87+
// a. Let Pk be ! ToString(k).
88+
// b. Let kValue be ? Get(O, Pk).
89+
// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
90+
// d. If testResult is true, return k.
91+
var kValue = o[k];
92+
if (predicate.call(thisArg, kValue, k, o)) {
93+
return k;
94+
}
95+
// e. Increase k by 1.
96+
k++;
97+
}
98+
99+
// 7. Return -1.
100+
return -1;
101+
},
102+
configurable: true,
103+
writable: true
104+
});
58105
}

src/jquery-ui.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ $.Widget.prototype = {
399399

400400
if ( typeof key === "string" ) {
401401

402-
// Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
402+
// Handle nested keys, e.g., "foo.bar" = { foo: { bar: ___ } }
403403
options = {};
404404
parts = key.split( "." );
405405
key = parts.shift();

0 commit comments

Comments
 (0)