diff --git a/addon/-private/sticky/legacy-sticky-polyfill.js b/addon/-private/sticky/legacy-sticky-polyfill.js deleted file mode 100644 index 549cca66f..000000000 --- a/addon/-private/sticky/legacy-sticky-polyfill.js +++ /dev/null @@ -1,94 +0,0 @@ -/* global ResizeSensor */ - -/** - These functions polyfill our usage of position: sticky; in IE11. They are not a general - position: sticky; polyfill, and should not be used as such. -*/ - -let LEGACY_POLYFILL_MAP = new WeakMap(); - -class LegacyStickyPolyfill { - constructor(element) { - this.element = element; - this.table = element.querySelector('table'); - this.header = element.querySelector('thead'); - this.footer = element.querySelector('tfoot'); - - element.addEventListener('scroll', this.positionStickyElements); - - this.mainResizeSensor = new ResizeSensor(this.element, this.positionStickyElements); - - if (this.header) { - this.fakeHeader = document.createElement('thead'); - this.fakeHeaderRow = document.createElement('tr'); - this.fakeHeader.insertBefore(this.fakeHeaderRow, null); - - this.headerResizeSensor = new ResizeSensor(this.header, this.positionStickyElements); - - this.table.insertBefore(this.fakeHeader, this.table.firstChild); - } - - if (this.footer) { - this.fakeFooter = document.createElement('tfoot'); - this.fakeFooterRow = document.createElement('tr'); - this.fakeFooter.insertBefore(this.fakeFooterRow, null); - - this.footerResizeSensor = new ResizeSensor(this.footer, this.positionStickyElements); - - this.table.insertBefore(this.fakeFooter, null); - } - - this.positionStickyElements(); - } - - destroy() { - this.element.removeEventListener('scroll', this.positionStickyElements); - - this.mainResizeSensor.detach(this.element); - - if (this.header) { - this.headerResizeSensor.detach(this.header); - this.fakeHeader.parentNode.removeChild(this.fakeHeader); - } - - if (this.footer) { - this.footerResizeSensor.detach(this.footer); - this.fakeFooter.parentNode.removeChild(this.fakeFooter); - } - } - - positionStickyElements = () => { - let thead = this.header; - let tfoot = this.footer; - - let leftColumn = this.element.querySelectorAll('tr > *:first-child'); - - let scrollLeft = this.element.scrollLeft; - let scrollTop = this.element.scrollTop; - - if (thead) { - thead.style.position = 'absolute'; - thead.style.transform = `translateY(${scrollTop}px)`; - this.fakeHeaderRow.style.height = `${thead.offsetHeight}px`; - } - - if (tfoot) { - tfoot.style.position = 'absolute'; - tfoot.style.transform = `translateY(${scrollTop}px)`; - this.fakeFooterRow.style.height = `${tfoot.offsetHeight}px`; - } - - for (let cell of leftColumn) { - cell.style.transform = `translateX(${scrollLeft}px)`; - } - }; -} - -export function setupLegacyStickyPolyfill(element) { - LEGACY_POLYFILL_MAP.set(element, new LegacyStickyPolyfill(element)); -} - -export function teardownLegacyStickyPolyfill(element) { - LEGACY_POLYFILL_MAP.get(element).destroy(); - LEGACY_POLYFILL_MAP.delete(element); -} diff --git a/addon/components/ember-table/component.js b/addon/components/ember-table/component.js index b1c7a4711..3b7ad795d 100644 --- a/addon/components/ember-table/component.js +++ b/addon/components/ember-table/component.js @@ -1,12 +1,6 @@ import Component from '@ember/component'; import { computed } from '@ember/object'; import { htmlSafe } from '@ember/string'; -import { inject as service } from '@ember/service'; - -import { - setupLegacyStickyPolyfill, - teardownLegacyStickyPolyfill, -} from '../../-private/sticky/legacy-sticky-polyfill'; import { setupTableStickyPolyfill, teardownTableStickyPolyfill, @@ -38,46 +32,33 @@ import layout from './template'; export default Component.extend({ layout, classNames: ['ember-table'], - userAgent: service(), 'data-test-ember-table': true, didInsertElement() { this._super(...arguments); - let browser = this.get('userAgent.browser'); - - if (browser.isIE) { - setupLegacyStickyPolyfill(this.element); - } else { - let thead = this.element.querySelector('thead'); - let tfoot = this.element.querySelector('tfoot'); + let thead = this.element.querySelector('thead'); + let tfoot = this.element.querySelector('tfoot'); - if (thead) { - setupTableStickyPolyfill(thead); - } - if (tfoot) { - setupTableStickyPolyfill(tfoot); - } + if (thead) { + setupTableStickyPolyfill(thead); + } + if (tfoot) { + setupTableStickyPolyfill(tfoot); } }, willDestroyElement() { - let browser = this.get('userAgent.browser'); - - if (browser.isIE) { - teardownLegacyStickyPolyfill(this.element); - } else { - let thead = this.element.querySelector('thead'); - let tfoot = this.element.querySelector('tfoot'); + let thead = this.element.querySelector('thead'); + let tfoot = this.element.querySelector('tfoot'); - if (thead) { - teardownTableStickyPolyfill(this.element.querySelector('thead')); - } + if (thead) { + teardownTableStickyPolyfill(this.element.querySelector('thead')); + } - if (tfoot) { - teardownTableStickyPolyfill(this.element.querySelector('tfoot')); - } + if (tfoot) { + teardownTableStickyPolyfill(this.element.querySelector('tfoot')); } this._super(...arguments); diff --git a/package.json b/package.json index 2c4913a48..b757d3737 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "ember-compatibility-helpers": "^1.2.0", "ember-raf-scheduler": "^0.1.0", "ember-test-selectors": "^2.1.0", - "ember-useragent": "^0.6.0", "hammerjs": "^2.0.8" }, "devDependencies": { diff --git a/tests/dummy/config/targets.js b/tests/dummy/config/targets.js index cc42fe00e..5442a45b2 100644 --- a/tests/dummy/config/targets.js +++ b/tests/dummy/config/targets.js @@ -1,12 +1,5 @@ const browsers = ['last 1 Chrome versions', 'last 1 Firefox versions', 'last 1 Safari versions']; -const isCI = !!process.env.CI; -const isProduction = process.env.EMBER_ENV === 'production'; - -if (isCI || isProduction) { - browsers.push('ie 11'); -} - module.exports = { browsers, }; diff --git a/yarn.lock b/yarn.lock index d2744a34d..7ea9ffed2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6592,18 +6592,6 @@ ember-try@^1.1.0: rsvp "^4.7.0" walk-sync "^1.1.3" -ember-useragent@^0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/ember-useragent/-/ember-useragent-0.6.1.tgz#0854b3c11acf0fdd98a165fba9bf5dc76eace804" - integrity sha512-J+itj4FVtE0aM+Wx4pInjI2nuSmrQKJhubVJ8twPmmSTLpjatA+DFhiStGc76cZBAyeQQhXezVQyvzzH3RIEoQ== - dependencies: - broccoli-debug "^0.6.3" - broccoli-funnel "^2.0.1" - broccoli-merge-trees "^3.0.0" - ember-cli-babel "^6.6.0" - fastboot-transform "^0.1.2" - ua-parser-js "^0.7.14" - ember-wormhole@^0.5.5: version "0.5.5" resolved "https://registry.npmjs.org/ember-wormhole/-/ember-wormhole-0.5.5.tgz#db417ff748cb21e574cd5f233889897bc27096cb" @@ -7561,14 +7549,6 @@ fastboot-transform@0.1.1: dependencies: broccoli-stew "^1.5.0" -fastboot-transform@^0.1.2: - version "0.1.3" - resolved "https://registry.npmjs.org/fastboot-transform/-/fastboot-transform-0.1.3.tgz#7dea0b117594afd8772baa6c9b0919644e7f7dcd" - integrity sha512-6otygPIJw1ARp1jJb+6KVO56iKBjhO+5x59RSC9qiZTbZRrv+HZAuP00KD3s+nWMvcFDemtdkugki9DNFTTwCQ== - dependencies: - broccoli-stew "^1.5.0" - convert-source-map "^1.5.1" - fastq@^1.6.0: version "1.8.0" resolved "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" @@ -14341,11 +14321,6 @@ typescript-memoize@^1.0.0-alpha.3: dependencies: core-js "2.4.1" -ua-parser-js@^0.7.14: - version "0.7.21" - resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" - integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== - uc.micro@^1.0.0, uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"