Skip to content

Commit

Permalink
Merge pull request #958 from tylerturdenpants/fix/revert-ember-modifier
Browse files Browse the repository at this point in the history
Revert "Drop `@ember/render-modifiers` (#932)"
  • Loading branch information
krasnoukhov committed Apr 30, 2024
2 parents b2cf633 + b2d5a68 commit a9a34d0
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 50 deletions.
71 changes: 41 additions & 30 deletions addon/components/attach-popover.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { action } from '@ember/object';
import Component from '@glimmer/component';
import { cancel, debounce, later, next, run, once } from '@ember/runloop';
import { cancel, debounce, later, next, run } from '@ember/runloop';
import { getOwner } from '@ember/application';
import { guidFor } from '@ember/object/internals';
import { htmlSafe, isHTMLSafe } from '@ember/template';
Expand All @@ -10,7 +10,6 @@ import { isEmpty, typeOf } from '@ember/utils';
import { autoUpdate, computePosition, arrow, flip, limitShift, shift } from '@floating-ui/dom';
import { buildWaiter } from '@ember/test-waiters';
import { tracked } from '@glimmer/tracking';
import { modifier } from 'ember-modifier';
import DEFAULTS from '../defaults';

const animationTestWaiter = buildWaiter('attach-popover');
Expand Down Expand Up @@ -294,18 +293,20 @@ export default class AttachPopover extends Component {
this._hide();
}

onParentFinderInsert = modifier((element) => {
@action
onParentFinderInsert(element) {
this.parentElement = element.parentElement;
once(this, '_initializeAttacher')
});
this._initializeAttacher();
}

_ensureArgumentsAreValid([arrow, useCapture]) {
@action
_ensureArgumentsAreValid() {
stripInProduction(() => {
if (arrow && this.isFillAnimation) {
if (this.arrow && this.isFillAnimation) {
warn('Animation: \'fill\' is not compatible with arrow: true', { id: 70015 });
}

if (useCapture !== this._lastUseCaptureArgumentValue) {
if (this.useCapture !== this._lastUseCaptureArgumentValue) {
warn(
'The value of the useCapture argument was mutated',
{ id: 'ember-attacher.use-capture-mutated' }
Expand Down Expand Up @@ -402,11 +403,15 @@ export default class AttachPopover extends Component {
});
}

onTargetOrTriggerChange = modifier((_, _positional) => {
once(this, '_initializeAttacher', ..._positional);
});
@action
onTargetOrTriggerChange() {
this._initializeAttacher();
}

@action
onIsShownChange() {
const isShown = this.isShown;

onIsShownChange = modifier((_, [isShown]) => {
if (isShown === true && this._isHidden) {
this._show();

Expand All @@ -416,18 +421,7 @@ export default class AttachPopover extends Component {
} else if (isShown === false && !this._isHidden) {
this._hide();
}
});

initializeAttacher = modifier((floatingElement) => {
this._floatingElement = floatingElement;

if (this.renderInPlace) {
this.parentElement = floatingElement.parentElement;
once(this, '_initializeAttacher');
}

return () => this._cleanup?.();
});
}

/**
* ================== SHOW ATTACHMENT LOGIC ==================
Expand Down Expand Up @@ -774,14 +768,31 @@ export default class AttachPopover extends Component {
});
}

didInsertArrow = modifier((element) => {
@action
didInsertFloatingElement(floatingElement) {
this._floatingElement = floatingElement;

if (this.renderInPlace) {
this.parentElement = floatingElement.parentElement;
this._initializeAttacher();
}
}

@action
didInsertArrow(element) {
this._arrowElement = element;
})
}

@action
onOptionsChange() {
this._ensureArgumentsAreValid();
this._update();
}

onOptionsChange = modifier((_, positional) => {
this._ensureArgumentsAreValid(positional);
once(this, '_update')
})
@action
willDestroyFloatingElement() {
this._cleanup?.();
}

_update() {
this._cleanup?.();
Expand Down
15 changes: 8 additions & 7 deletions addon/templates/components/attach-popover.hbs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{{~#unless this.renderFloatingElement}}
<meta hidden {{this.onParentFinderInsert}} {{this.onIsShownChange this.isShown}}/>
<meta hidden {{did-insert this.onParentFinderInsert}} {{did-update this.onIsShownChange this.isShown}}/>
{{~/unless~}}

{{~#if this.renderFloatingElement~}}
Expand All @@ -8,16 +8,17 @@
class="ember-attacher"
id={{this.id}}
role={{this.ariaRole}}
{{this.onIsShownChange this.isShown}}
{{this.onTargetOrTriggerChange this.hideOn this.showOn @explicitTarget}}
{{this.onOptionsChange this.arrow this.useCapture this.autoUpdate this.animation this.placement this._renderInPlace this._currentTarget this._middleware}}
{{this.initializeAttacher}}
{{did-insert this.didInsertFloatingElement}}
{{did-update this.onIsShownChange this.isShown}}
{{did-update this.onTargetOrTriggerChange this.hideOn this.showOn @explicitTarget}}
{{did-update this.onOptionsChange this.autoUpdate this.animation this.arrow this.useCapture this.placement this._renderInPlace this._currentTarget this._middleware}}
{{will-destroy this.willDestroyFloatingElement}}
...attributes
>
<div class={{this._class}} style={{this._style}}>
{{yield (hash hide=this.hide)}}
{{yield (hash hide=(action 'hide'))}}
{{#if this.arrow}}
<div x-arrow {{this.didInsertArrow}}></div>
<div x-arrow {{did-insert this.didInsertArrow}}></div>
{{/if}}
{{#if this.isFillAnimation}}
<div x-circle style="{{this._circleTransitionDuration}}"></div>
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ember-attacher",
"version": "3.1.0",
"version": "3.0.0",
"description": "Tooltips and popovers for Ember.js apps",
"keywords": [
"ember-addon",
Expand Down Expand Up @@ -37,7 +37,6 @@
"ember-cli-htmlbars": "^6.3.0",
"ember-cli-sass": "^11.0.1",
"ember-maybe-in-element": "^2.1.0",
"ember-modifier": "^4.1.0",
"sass": "^1.72.0"
},
"devDependencies": {
Expand All @@ -46,6 +45,7 @@
"@babel/helper-get-function-arity": "^7.16.7",
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
"@ember/optional-features": "^2.0.0",
"@ember/render-modifiers": "^2.0.5",
"@ember/string": "^3.1.1",
"@ember/test-helpers": "~2.9.4",
"@ember/test-waiters": "^3.1.0",
Expand Down
31 changes: 20 additions & 11 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1115,6 +1115,15 @@
mkdirp "^1.0.4"
silent-error "^1.1.1"

"@ember/render-modifiers@^2.0.5":
version "2.0.5"
resolved "https://registry.yarnpkg.com/@ember/render-modifiers/-/render-modifiers-2.0.5.tgz#4b1d9496a82ca471aeaa3ecddd94ef089450f415"
integrity sha512-5cJ1niIdOJC6k6KtIn9HGbr1DATJQp4ZqMv1vbi6LKQWbVCQ3byvKONtUEi3H0wcewlrcaWCqXOgm0nACzCOQA==
dependencies:
"@embroider/macros" "^1.0.0"
ember-cli-babel "^7.26.11"
ember-modifier-manager-polyfill "^1.2.0"

"@ember/string@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@ember/string/-/string-3.1.1.tgz#0a5ac0d1e4925259e41d5c8d55ef616117d47ff0"
Expand Down Expand Up @@ -1146,7 +1155,7 @@
ember-cli-version-checker "^5.1.2"
semver "^7.3.5"

"@embroider/addon-shim@^1.8.4", "@embroider/addon-shim@^1.8.6":
"@embroider/addon-shim@^1.8.6":
version "1.8.7"
resolved "https://registry.yarnpkg.com/@embroider/addon-shim/-/addon-shim-1.8.7.tgz#ba2dcb0647ed2cb0c500c835326266b89ceec595"
integrity sha512-JGOQNRj3UR0NdWEg8MsM2eqPLncEwSB1IX+rwntIj22TEKj8biqx7GDgSbeH+ZedijmCh354Hf2c5rthrdzUAw==
Expand Down Expand Up @@ -4560,7 +4569,7 @@ ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.1:
resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879"
integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw==

ember-cli-babel@^7.1.2, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.22.1, ember-cli-babel@^7.26.11, ember-cli-babel@^7.26.6, ember-cli-babel@^7.7.3:
ember-cli-babel@^7.1.2, ember-cli-babel@^7.10.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.22.1, ember-cli-babel@^7.26.11, ember-cli-babel@^7.26.6, ember-cli-babel@^7.7.3:
version "7.26.11"
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.11.tgz#50da0fe4dcd99aada499843940fec75076249a9f"
integrity sha512-JJYeYjiz/JTn34q7F5DSOjkkZqy8qwFOOxXfE6pe9yEJqWGu4qErKxlz8I22JoVEQ/aBUO+OcKTpmctvykM9YA==
Expand Down Expand Up @@ -4840,7 +4849,7 @@ ember-cli-typescript@^5.0.0:
stagehand "^1.0.0"
walk-sync "^2.2.0"

ember-cli-version-checker@^2.1.0:
ember-cli-version-checker@^2.1.0, ember-cli-version-checker@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz#47771b731fe0962705e27c8199a9e3825709f3b3"
integrity sha512-G+KtYIVlSOWGcNaTFHk76xR4GdzDLzAS4uxZUKdASuFX0KJE43C6DaqL+y3VTpUFLI2FIkAS6HZ4I1YBi+S3hg==
Expand Down Expand Up @@ -4973,7 +4982,7 @@ ember-cli@~4.12.1:
workerpool "^6.4.0"
yam "^1.0.0"

ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.1:
ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-compatibility-helpers@^1.2.1:
version "1.2.6"
resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.6.tgz#603579ab2fb14be567ef944da3fc2d355f779cd8"
integrity sha512-2UBUa5SAuPg8/kRVaiOfTwlXdeVweal1zdNPibwItrhR0IvPrXpaqwJDlEZnWKEoB+h33V0JIfiWleSG6hGkkA==
Expand Down Expand Up @@ -5019,14 +5028,14 @@ ember-maybe-in-element@^2.1.0:
ember-cli-htmlbars "^6.1.1"
ember-cli-version-checker "^5.1.2"

ember-modifier@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-4.1.0.tgz#cb91efbf8ca4ff4a1a859767afa42dddba5a2bbd"
integrity sha512-YFCNpEYj6jdyy3EjslRb2ehNiDvaOrXTilR9+ngq+iUqSHYto2zKV0rleiA1XJQ27ELM1q8RihT29U6Lq5EyqQ==
ember-modifier-manager-polyfill@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/ember-modifier-manager-polyfill/-/ember-modifier-manager-polyfill-1.2.0.tgz#cf4444e11a42ac84f5c8badd85e635df57565dda"
integrity sha512-bnaKF1LLKMkBNeDoetvIJ4vhwRPKIIumWr6dbVuW6W6p4QV8ZiO+GdF8J7mxDNlog9CeL9Z/7wam4YS86G8BYA==
dependencies:
"@embroider/addon-shim" "^1.8.4"
ember-cli-normalize-entity-name "^1.0.0"
ember-cli-string-utils "^1.1.0"
ember-cli-babel "^7.10.0"
ember-cli-version-checker "^2.1.2"
ember-compatibility-helpers "^1.2.0"

ember-qunit@^6.2.0:
version "6.2.0"
Expand Down

0 comments on commit a9a34d0

Please sign in to comment.