mediawiki.special.apisandbox: Fix code for ES5 environments (IE 11)
authorBartosz Dziewoński <matma.rex@gmail.com>
Fri, 23 Nov 2018 19:45:19 +0000 (20:45 +0100)
committerBartosz Dziewoński <matma.rex@gmail.com>
Fri, 23 Nov 2018 19:47:58 +0000 (20:47 +0100)
The method Array#findIndex was introduced in ES6 [1] and we still
support browsers that only implement ES5, like Internet Explorer 11.

[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex#Specifications

Change-Id: Idaebef7c91f2683099ab4980833ed76f0e3b51eb

resources/src/mediawiki.special.apisandbox/apisandbox.js

index 9b00ea2..52bcd30 100644 (file)
                        };
                } );
                doProcess = function ( placeholder, target ) {
-                       var values, container, index, usedVars, done;
+                       var values, container, index, usedVars, done, items, i;
 
                        target = prefix + target;
 
                        done = $.isEmptyObject( p.vars );
                        if ( done ) {
                                container = Util.apiBool( p.info.deprecated ) ? that.deprecatedItemsFieldset : that.itemsFieldset;
-                               // FIXME: ES6-ism
-                               // eslint-disable-next-line no-restricted-properties
-                               index = container.getItems().findIndex( function ( el ) {
-                                       return el.apiParamIndex !== undefined && el.apiParamIndex > p.info.index;
-                               } );
-                               if ( index < 0 ) {
-                                       index = undefined;
+                               items = container.getItems();
+                               index = undefined;
+                               for ( i = 0; i < items.length; i++ ) {
+                                       if ( items[ i ].apiParamIndex !== undefined && items[ i ].apiParamIndex > p.info.index ) {
+                                               index = i;
+                                               break;
+                                       }
                                }
                        }
                        values.forEach( function ( value ) {