ES6 functionality

ES6 functionality

Does not apply to latest Totara versions

This page only applies to Totara 16 and earlier. Totara 17 dropped IE support, and Totara 18 removed the polyfills completely.

In Totara 17, all JS features are available so long as they are natively supported by all supported browsers.

Totara supports a small set of ES6 and later features despite the fact that not all of our supported browsers provide there features natively. We achieve this by using a combination of core-js polyfills and those provided on https://developer.mozilla.org.

All ES6+ polyfils have been added to lib/javascript_polyfill/src/ and are included on every page when using IE11.

Available polyfills

Polyfill

Functional overview

Implementation

Available since Totara version

Polyfill

Functional overview

Implementation

Available since Totara version

Array.find

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

core-js

13

Array.findIndex

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex

core-js

13

Array.from

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from

core-js

14

Array.includes

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

core-js

13

CustomEvent

https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent

On MDN overview page

12

Element.closest

https://developer.mozilla.org/en-US/docs/Web/API/Element/closest

On MDN overview page

12

Element.matches

https://developer.mozilla.org/en-US/docs/Web/API/Element/matches

On MDN overview page

12

Element.remove

https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove

On MDN overview page

12

Fetch API

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

https://github.com/github/fetch

12

Map

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

core-js

14

NodeList.forEach

https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach

core-js

13

Number.isFinite

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite

core-js

13

Number.isInteger

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger

core-js

13

Number.isNaN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN

core-js

13

Number.parseFloat

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat

core-js

13

Number.parseInt

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt

core-js

13

Object.assign

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

core-js

12

Object.create

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create

core-js

14

Object.entries

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

core-js

13

Object.values

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values

core-js

13

Promise

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

https://github.com/stefanpenner/es6-promise

12

Set

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set

core-js

14

String.startsWith

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith

core-js

12

String.endsWith

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith

core-js

12

String.fromCodePoint

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint

core-js

14

String.includes

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes

core-js

13