{"id":13807532,"url":"https://github.com/ember-polyfills/ember-modifier-manager-polyfill","last_synced_at":"2025-08-21T04:31:33.913Z","repository":{"id":56179445,"uuid":"167856172","full_name":"ember-polyfills/ember-modifier-manager-polyfill","owner":"ember-polyfills","description":"Polyfill element modifiers for Ember 2.12 through 3.7","archived":false,"fork":false,"pushed_at":"2020-11-22T12:52:45.000Z","size":2438,"stargazers_count":10,"open_issues_count":14,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-16T08:56:30.571Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ember-polyfills.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-27T20:39:00.000Z","updated_at":"2020-06-26T21:21:59.000Z","dependencies_parsed_at":"2022-08-15T14:10:35.637Z","dependency_job_id":null,"html_url":"https://github.com/ember-polyfills/ember-modifier-manager-polyfill","commit_stats":null,"previous_names":["rwjblue/ember-modifier-manager-polyfill"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ember-polyfills%2Fember-modifier-manager-polyfill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ember-polyfills%2Fember-modifier-manager-polyfill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ember-polyfills%2Fember-modifier-manager-polyfill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ember-polyfills%2Fember-modifier-manager-polyfill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ember-polyfills","download_url":"https://codeload.github.com/ember-polyfills/ember-modifier-manager-polyfill/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230487854,"owners_count":18233871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T01:01:26.481Z","updated_at":"2024-12-19T19:18:03.985Z","avatar_url":"https://github.com/ember-polyfills.png","language":"JavaScript","funding_links":[],"categories":["Packages"],"sub_categories":["Polyfills"],"readme":"ember-modifier-manager-polyfill\n==============================================================================\n\nThis addon provides a polyfill for implementing element modifier managers as\ndescribed in [emberjs/rfcs#373](https://emberjs.github.io/rfcs/0373-Element-Modifier-Managers.html).\n\n\nCompatibility\n------------------------------------------------------------------------------\n\n* Completely inert when running `ember-source` 3.8 or higher\n* Tested against `ember-source` v2.12, v2.16, v2.18, v3.4, v3.5, v3.6, v3.7 in CI\n\n\nInstallation\n------------------------------------------------------------------------------\n\n```\nember install ember-modifier-manager-polyfill\n```\n\n\nUsage\n------------------------------------------------------------------------------\n\nAt this point the best documentation is likely still the [the RFC\nitself](https://emberjs.github.io/rfcs/0373-Element-Modifier-Managers.html),\nbut here are a few simple examples (shamelessly stolen from another modifier\nRFC [emberjs/rfcs#353](https://github.com/emberjs/rfcs/pull/353)):\n\n### Performance Marking\n\n```hbs\n\u003csection id=\"about-us\" {{performance 'mark' 'about-page'}}\u003e\n  \u003ch1\u003eAbout Us\u003c/h1\u003e\n  {{!-- snip --}}\n\u003c/section\u003e\n```\n\n```js\n// app/modifiers/performance.js\nimport Ember from 'ember';\n\nexport default Ember._setModifierManager(\n  () =\u003e ({\n    createModifier() {},\n\n    installModifier(_instance, _element, args) {\n      let [type, name] = args.positional;\n\n      performance[type](name);\n    },\n\n    updateModifier() {},\n    destroyModifier() {},\n  }),\n  class PerformanceModifier {}\n);\n```\n\n### jQuery Widget\n```hbs\n\u003cinput type=\"date\" {{datepicker changeMonth=true changeYear=true}} /\u003e\n```\n\n```js\n// app/modifiers/datepicker.js\nimport Ember from 'ember';\nimport $ from 'jquery';\n\nexport default Ember._setModifierManager(\n  () =\u003e ({\n    createModifier() {\n      return { element: null };\n    },\n\n    installModifier(state, element, args) {\n      let options = Object.assign({ minDate: 20, maxDate: '+1M +10D' }, args.named);\n\n      // setup state bucket for use in destroyModifier\n      state.element = element;\n      state.options = options;\n\n      $(this.element).datepicker(options);\n    },\n\n    updateModifier() {},\n    destroyModifier(state) {\n      $(state.element).datepicker(state.options);\n    },\n  }),\n  class DatepickerModifier {}\n);\n```\n\n### Page View Tracking\n```hbs\n\u003csection {{track-impression eventCategory=\"Post\"}}\u003e\n  \u003cheader\u003eChad liked a post\u003c/header\u003e\n  \u003cimg src=\"cat.jpg\"\u003e\n  {{!-- Snip --}}\n\u003csection\u003e\n```\n\n```js\n// app/modifiers/track-impression.js\nimport Ember from 'ember';\n\nexport default Ember._setModifierManager(\n  owner =\u003e ({\n    createModifier() {\n      return { element: null, observer: null };\n    },\n\n    installModifier(state, element, args) {\n      let ga = owner.lookup('service:ga');\n      let { eventCategory } = args.named;\n\n      let interSectionObserver = new IntersectionObserver(entries =\u003e {\n        entries.forEach(entry =\u003e ga.send('event', 'impression', eventCategory));\n      });\n\n      // setup state bucket for use in destroyModifier\n      state.element = element;\n      state.observer = interSectionObserver;\n    },\n\n    updateModifier() {},\n    destroyModifier(state) {\n     state.observer.unobserve(state.element);\n    },\n  }),\n  class TrackImpressionModifier {}\n);\n```\n\n\nLicense\n------------------------------------------------------------------------------\n\nThis project is licensed under the [MIT License](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fember-polyfills%2Fember-modifier-manager-polyfill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fember-polyfills%2Fember-modifier-manager-polyfill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fember-polyfills%2Fember-modifier-manager-polyfill/lists"}