- [BUGFIX] Ensure the
otherStyles
is initialized with a copied object.
- [CHORE] Update to
@glimmer/component
1.0.0 - [BUGFIX] If there's no enough space for the dropdown above nor below the trigger, put it below.
- [CHORE] Improve exported types
- [BUGFIX] Don't use typescript in /app folder
- [CHORE] Convert to typescript
- [BUGFIX] Fix reposition of dropdown after scroll or window resize events
- [CHORE] Update to @glimmer/component 1.0.0-beta.2
- No changes since alpha 1
- [MAYBE-BREAKING] Update to glimmer components
- [BUGFIX] Use
set
when changingpreviousVerticalPosition
andpreviousHorizontalPosition
.
- [CHORE] Update some dependencies. More importantly
ember-element-modifiers
to 1.0.2 which changes its behavior.
- [BUGFIX] Correct condition in which the development assertion added in 2.0.6 is thrown. Logic was reversed.
- [BUGFIX] Update
ember-element-helper
to 0.2.0 to fix bug in engines
- [ENHANCEMENT] Add development assertion to help people understand the somewhat cryptic error message that
appeared when there was no element with id
ember-basic-dropdown-wormhole
in the document
- [CHORE] Update npm packages to tests pass in beta and canary
- [BUGFIX] Ensure Ember doesn't complain about not using
set
to update values.
- [ENHANCEMENT] Allow to pass a
@defaultClass
argument to the content. This is necessary to be able to assign classes while the{{component}}
helper does not allow to pass attributes like in angle-bracket syntax.
- [ENHANCEMENT] Allow to pass a
@defaultClass
argument to the trigger. This is necessary to be able to assign classes while the{{component}}
helper does not allow to pass attributes like in angle-bracket syntax.
- [BUGFIX] Move
ember-truth-helpers
todependencies
.
- [ENHANCEMENT] Expose
ember-basic-dropdown/utils/calculate-position
as public API.
- [CHORE] Setup/teardown mutation observer using dedicated element modifiers.
- [CHORE] Refactor animation logic to use
{{did-insert}}
/{{will-destroy}}
element modifiers.
- [BREAKING] Remove
onMouseDown
,onClick
,onKeyDown
andonTouchEnd
attributes from the<dropdown.Trigger>
component. Users can just use the{{on}}
modifier to attach events now, although that means that to prevent the default event handler from being called for those events, instead ofreturn false
, they must callevent.stopImmediatePropagation()
like they would with regular events.
- [BREAKING] Remove
onMouseEnter
,onMouseLeave
,onFocus
,onBlur
,onFocusIn
,onFocusOut
andonKeyUp
from the<dropdown.Trigger>
component. Users can just use the{{on}}
modifier to attach any event they want. - [BREAKING] Remove
onFocusIn
,onFocusOut
,onMouseEnter
,onMouseLeave
andonKeyDown
from the<dropdown.Content>
component. Users can just use the{{on}}
modifier to attach any event they want.
- [CHORE] Now that Ember 3.11 is released, this can go to beta.
- Because of some limitation of splattributes in AngleBracket components, the addons requires Ember 3.11+
- Public API changed: Previously the contextual component of this addon were invoked with
{{#dd.trigger}}
and{{#dd.content}}
. Now they are expected to be invoked with<dd.Trigger>
and<dd.Content>
. Note that the names are capitalized. This is done because the new convention that components start with a capital letter. - Passing
@class
,@defaultClass
,aria-*
and most of those properties doesn't work anymore. This addon now expects to be used with angle-bracket syntax. In angle bracket syntax there is a distinction between component arguments (those preceded with an@
sign) and html attributes, and the latter are a much better way of passing any arbitrary attribute to any of the components and sub-components of this addon. - The default
eventType
of the trigger changed from"mousedown"
to"click"
. That means that dropdown used to open with themousedown
events will now open withclick
events, which is a saner default. Since most of the time those events are fired together most people won't notice any difference, but in testing if someone was explicitly firing mouseodown events tests would have to be updated. - The default
rootEventType
has changed from"mousedown"
to"click"
. That means that before dropdowns would close as soon as the user mousedowns outside the dropdown, but not it will listed to click events by default. It's unlikely this change will be noticed by anyone.
- [ENHANCEMENT] Allow to bind the type attribute of the trigger.
- [ENHANCEMENT] Allow to customize the root event the component listens to in order to close when you
click outside it. It has historically been
mousedown
, but now it can beclick
. This allows to scroll the page using a scrollbar. In a future versionclick
will become the default.
- [REAPPLY] Revert the revert in 1.0.6. Technically identical to 1.0.5
- [REVERT] Revert change in 1.0.5 as it is a breaking change for Ember Power Select. Will fix EPS and apply again.
- [BUGFIX] A11y improvement: The trigger doesn't have an
aria-owns
attribute until the dropdown is open, because it's illegal for an aria-owns to reference an element (the content) that it's not in the page (yet).
- [BUGFIX] Fix code to find the destination element in fastboot.
- [FEATURE] Allow
onKeyUp
action to added to the trigger.
- [FEATURE] Allow
onKeyDown
action to the content component
- [DOCS] Document
eventType
option that has existed for a while now. - [FEATURE] Add
stopPropagation
option to the trigger to prevent the propagation of the event
- NO NEW CHANGES, just version 1.0. It was about time.
- [CLEANUP] Remove another reduntad
self.
prefix.
- [CLEANUP] Remove unnecessary
self.
prefix to access a few globals likedocument
orwindow
.
- [CLEANUP] Remove passing
to="id-of-destination"
that has been deprecated for a long time.
- [BUGFIX] Fix event being fired on destroyed trigger in Ember 3.2 and beyond.
- [FEATURE] Allow dropdowns with a custom
calculatePosition
function to return in thestyles
object css properties other thantop
,left
,right
,height
andwidth
. Now users can set any arbitrary properties. P.e.max-height
,z-index
,transform
....
- [INTERNAL] Stop depending internally on
ember-native-dom-helpers
. Now the utilities inember-test-helpers
have been ported to@ember/test-helpers
, so they are not needed anymore.
- [DEPRECATION] Deprecate global acceptance helpers
clickDropdown
andtapDropdown
. Suggest to explicitly importclickTrigger
/tapTrigger
or even better, just useclick
/tap
from@ember/test-helpers
. - [BREAKING] Drop ember-wormhole addon, use
#-in-element
built-in instead. Less size, more performance. - [BREAKING] Drop support for Ember <= 2.9. This addon will require Ember 2.10 or greater to work.
- [BREAKING] Delete the
/test-support
folder, useaddon-test-support
instead. That means people should import helpers fromember-basic-dropdown/test-support/helpers
instead of using relative paths like../../helpers/ember-basic-dropdown
, as they are brittle and change with nesting. - [BUGFIX] Ensure that the dropdown is not open by the right button of the mouse.
- [ENHANCEMENT] Allow
horizontalPosition
to work whenrenderInPlace=true
- [ENHANCEMENT] Allow to bind the role attribute of the trigger
- [ENHANCEMENT] Added
preventScroll=true
option to thedropdown.content
component to "frezze" all mousewheel-triggered scrolling happening outside the component. Scrolling on touch devices using touchmove can still occur.
- [ENHANCEMENT] Enable
renderInPlace=true
dropdowns to be dynamically repositioned. (#350) - [BUGFIX] Ensure the inline
style
attribute does not outputundefinedpx
when some style is undefined. Also, ensure that bothleft
andright
cannot be applied simultaneous, as it doesn't make sense.
- [BUGFIX] Prevent dropdowns with
renderInPlace=true
from being incorrectly opened twice. This had no evident effects, but lead to the events in thedd.Content
component to be added twice. - [BREAKING] Remove support for IE9/IE10.
- [ENHANCEMENT] Allow
transitioningInClass
andtransitioningOutClass
to be several classes by passing a string with spaces in it.
- [BUGFIX] Allow to use
horizontalPosition="center"
along withrenderInPlace=true
.
- [BUGFIX] When the component is rendered in-place, it still has to have the
--below
class needed. While not used for positioning, it was used for animations.
- [BUGFIX] Fix positioning problem when the body has position relative.
- [BUGFIX] Move test helpers to
/addon-test-support
and use/test-support
only for reexporting so apps don't require babel 6.6.0+ to work.
- [INTERNAL] Stop relying in
Ember.testing
to decide the wormhole destination. Not just uses the environment. - [ENHANCEMENT] This component by default opens with
mousedown
events, not withclick
. This behavior has its reasons but it's also surprising for some users and it might not be adequate sometimes. Now the trigger accepts aneventType="mousedown" | "click"
(defaults to"mousedown"
as today). This doesn't affect touch devices, as those are opened/closed with thetouchend
event. - [INTERNAL] Use the new import paths (e.g:
import Component from '@ember/component
)
- [ENHANCEMENT] Add
auto-right
option for horizontal position. It's likeauto
, but it defaults to being anchored to the right unless there is not enough room towards the left for the content.
- [ENHANCEMENT] Update
ember-native-dom-helpers
to^0.5.0
.
- [BUGFIX] Guard agains edge case where positioning could fail if the select close and opened extremely fast
- [BUGFIX] Add global events to the
document
instead of thebody
, so the dropdown works even if the body is smaller than the height of the window
- [ENHANCEMENT] Update
ember-native-dom-helpers
to 0.4.0
- [BUGFIX] Fix broken render in place after refactor for allowing dropdowns in scrollable elements.
- [ENHANCEMENTE] Allow to nest dropdowns infinitely. Thanks to @alexander-alvarez
- [BUGFIX] Stop looking for scrollable ancestors on the BODY or HTML
- [BUGFIX] Allow to work if the container has no offsetParent. This happens if the body is relative.
- No changes in previous beta
- [ENHANCEMENT] Dropdowns inside elements with their own scroll are finally supported! It works even inside elements with scroll inside another element with scroll inside pages with scroll.
- [BREAKING/BUGFIX] Closes #233. The positioning logic now accounts for the position of the
parent of container if it has position relative or absolute. The breaking part is that
custom
calculatePosition
functions now take the destination element as third arguments, and the object with the options has now been moved to thr forth position. - [BREAKING] Passing
to="id-of-elmnt"
to the{{#dropdown.content}}
component is deprecated. The way to specify a different destination forember-wormhole
is now by passingdestination=id-of-elmnt
to the top-level{{#basic-dropdown}}
component. The old method works but shows a deprecation message.
- [INTERNAL] Update ember-concurrency to a version that uses babel 6.
- [BUGFIX] Fix calculation of the screen's width when browser shows a scrollbar, which
affected dropdowns with
horizontalPosition="right"
. - [BUGFIX] Fix initial CSS positioning flickering caused by refactor that removed jQuery.
- Now the addon is 100% jQuery-free. Docs page doesn't use jQuery either. Tests in CI run without jquery so if anyone inadvertenly relies on it, tests will fail.
- Rewrite tests to use
async/await
with the latestember-native-dom-helpers
- Update to ember-native-dom-helpers 0.3.4, which contains a new & simpler import path.
- [INTERNAL/BREAKING???] Update to Babel 6. This shouldn't be breaking, but you never know.
- [BUFGIX] Fix unnecesary line break caused by the wormhole empty div. Solved
by making that div be
display: inline
.
- [ENHANCEMENT] Allow the
calculatePosition
function to also determine the height of the dropdown's content.
- [BREAKING] Unify
calculatePosition
andcalculateInPlacePosition
. Now the function receives anrenderInPlace
flag among its options, and based on that it uses a different logic. This reduces the public API surface. This new function is the default export of/utils/calculate-position
. The individual functions used to reposition when rendered in the wormhole or in-place are available as named exports:calculateWormholedPosition
andcalculateInPlacePosition
- [INTERNAL] Use
ember-native-dom-helpers
.
- [ENHANCEMENT] The trigger component now has a bound style property.
- [ENHANCEMENT] Rely on the new
ember-native-dom-helpers
to fire native events instead or rolling out my own solution.
- [BUGFIX] Fix synthetic click on the trigger when happens in SVG items.
- [ENHANCEMENT] Bind
aria-autocomplete
andaria-activedescendant
. - [BUGFIX] Check if the component is destroyed after calling the
onClose
action, as it might have been removed.
- [BREAKING] It is a problem for a11y to have
aria-owns/controls
to an element that it's not in the DOM, so now there is a stable div with the right ID that gets moved to the root of the body when the component opens. - [BUGFIX] Fix
clickDropdown
test helper when the given selector is already the selector of the trigger.
- [BREAKING] Don't display
aria-pressed
when the component is opened. The attribute is not present by default, but can be bound from the outside. - [BREAKING] Don't display
aria-haspopup
by default, but display it if passed in a truthy value. - [BREAKING] Use
aria-owns
instead ofaria-controls
to link trigger and content together.
- [FEATURE] The
dropdown.content
now accepts adefaultClass
property as a secondary way of adding a class in contextual components that doesn't pollute theclass
property.
- [FEATURE]
clickTrigger
test helper also works when the given selector is the one of the trigger (before it had to be an ancestor of the trigger).
- [FEATURE] It accepts an
onInit
action passed from the outside. Private-ish for now.
- [FEATURE/BREAKING] Allow to customize the ID of the trigger component. Now the dropdown
uses a new
data-ebd-id
attribute for query the trigger reliably. Unlikely to be breaking tho.
- [FEATURE] Add LESS support, on pair with the SASS one.
- [FEATURE] Added
$ember-basic-dropdown-overlay-pointer-events
SASS variable.
- [BREAKING CHANGE] Renamed
onKeydown
event toonKeyDown
to be consistent with the naming of every other action in the component
- [FEATURE] Allow to pass
onMouseDown
andonTouchEnd
options actions to subscribe to those events. If the handler for those events returnsfalse
, the default behaviour (toggle the component) is prevented.
- [FEATURE] Allow to pass
onMouseEnter
andonMouseLeave
actions to the content, like we allow with the trigger.
- [BUGFIX] Prevent the
touchend
that opens the trigger to trigger a click on the dropdown's content when this appears over the trigger. Copied from hammertime.
- [CLEANUP] Update to
ember-cli-sass
^6.0.0 and removenode-sass
from dependencies.
- [BUGFIX] Call
registerAPI
willnull
onwillDestroy
to avoid memory leaks.
- [ENHANCEMENT] Pass the dropdown itself as an option to
calculatePosition
andcalculateInPlacePosition
, so users have pretty much total freedom on that function.
- [ENHANCEMENT] Allow downdowns rendered in place to be positioned above the trigger, and also to customize how they are positioned.
- [ENHANCEMENT] Update to ember-wormhole 0.5.1, which maximises Glimmer2 compatibility
- [BUGFIX] The fix in 0.17.2 that removed
e.preventDefault()
cause bothtouchend
and a syntheticmousedown
events to be fired, which basically made the component to be opened and immediatly closed in touch devises.
- [BUGFIX] Remove
e.preventDefault()
that caused inputs inside the trigger to not be focusable in touch screens
- [BUGFIX] The positioning strategy takes into account the horizontal scroll and it's generally smarter.
- [BUGFIX] Fixed bug when a dropdown with
horizontalPosition="auto"
passed from left to right, it keeped both properties, modifiying its width implicitly.
- [BREAKING] The object returned by
calculatePosition
now contains the offsets of the dropdown as numbers instead of strings with "px" as unit. This makes easier for people to modify those values in their own functions.
- [ENHANCEMENT] The default
calculatePosition
method is now insideaddon/utils/calculate-position
, so users can import it to perhaps reuse some of the logic in their own positioning functions.
- [BUGFIX] Add forgotten
uniqueId
property to the publicAPI yielded to the block. ThepublicAPI
object passes to actions had it but the one in the block didn't.
- [ENHANCEMENT] Allows to customize how the dropdown is positioned by passing a
calculatePosition
function.
- [BUGFIX] Remove automatic transition detection. It never worked properly. It's fundamentally flawed. CSS animations are OK tho.
- [TESTING] Ensure the addon is tested in 2.4LTS
- [BUGFIX] Fix bug in versions of ember <= 2.6
- [BUGFIX] Remove
ember-get-config
entirely. It turns that there is a less hacky way of doing this.
- [BUGFIX] Update
ember-get-config
to fix Fastboot compatibility.
- [BUGFIX] Guard agains a possible action invocation after the component has been destroyed.
- [BUGFIX] Fix broken
horizontalPosition="center"
.
- [BUGFIX] Bind
title
attribute in the trigger.
- [BUGFIX] Revert glimmer2 compatibility
- [BUGFIX] Compatibility with glimmer2.
- [BUGFIX] Fix bug detaching event in IE10.
- [BUGFIX] The correct behaviour when a dropdown is disabled or the tabindex is
false
should be to not havetabindex
attribute, not to have atabindex
of -1.
- [BUGFIX] Don't import
guidFor
from the shims.
- [BUGFIX] Preventing the default behaviour from an event doesn't prevent the component from doing the usual thing.
- [BUGFIX] Fix edge case that made the component leak memory if the component is removed after a mousedown but before the mouseup events of the trigger. This situation probably almost impossible outside testing.
- [ENHANCEMENT] The dropdown can have an overlay element if it receives
overlay=true
.
- [BREAKING]
dropdown.uniqueId
is not a string likeember1234
instead of the number1234
.
- [BUGFIX] Consider the scope of the select the entire body, even if the app is rendered inside an specific element.
- [BREAKING] Rename the
dropdown._id
todropdown.uniqueId
and promote it to public API.
- [BUGFIX] Make the first reposition faster by applying the styles directly instead of using bindings. This allows the dropdown to have components with autofocus inside without messing with the scroll.
- [BUGFIX] Enabling the component after it has been disabled should trigger the
registerAPI
action.
- [BUGFIX] Fix bug when the consumer app has a version of
ember-cli-shims
older than 0.1.3
- [BUGFIX] Stop importing
getOwner
from the shim, since many people doesn't have shims up to date and it's trolling them.
- [BUGFIX] Render more than one component with
renderInPlace=true
cases an exception and after that mayhem happens.
- [BUGFIX] Use
requestAnimationFrame
to wait one frame before checking if the component is being animated. This makes this component fully compatible with Glimmer 2.
- [ENHANCEMENT/BREAKING] Now the publicAPI object received sub-components and passed to actions is
immutable. That means that each change in the internal state of this component will generate a new
object. This allows userts to get rid of
Ember.Observe
to use some advanced patterns and makes possible some advanced time-travel debugging.
- [ENHANCEMENT] Allow to customize the classes used for animations with
transitioningInClass
,transitionedInClass
andtransitioningOutClass
. - [BUGFIX] Property detect space on the right when
horizontalPosition="auto"
(the default) and position the element anchored to the right of the dropdown if there is no enough space for it to fit.
- [BUGFIX] Correctly remove touchmove event on touch ends.
- [BUGFIX] Prevent DOM access in fastboot mode.
- [ENHANCEMENT] If the component gets disabled while it's opened, it is closed automatically.
- [ENHANCEMENT] Expose
clickDropdown
andtapDropdown
acceptance helpers. - [BUGFIX] Allow to nest a dropdown inside another dropdown without the second being rendered in place.
- [BUGFIX] Apply enter animation after render. Otherwise it take place before the component
gains the
--above
or--below
class, which is needed to know how to animate.
- [BUGFIX] Allow
to
property of the content component to be undefined
- [BUGFIX] Fix positioning of dropdowns rendered in-place due to a typo
- [BUGFIX] Ensure the
disabled
property of the public API is updated properly
- [BUGFIX] Ensure reposition is not applied in destroyed components
- [BUGFIX] Fix animations
- [INTERNAL] Update ember-cli to 2.6
- [INTERNAL] Update ember-wormhole to 0.4.0 (fastboot support)
- [BUGFIX] Correct behaviour of
aria-disabled
,aria-expanded
,aria-invalid
,aria-pressed
andaria-required
in Ember 2.7+ - [ENHANCEMENT] Allow to customize componets for the trigger and the content, with the
triggerComponent
andcontentComponent
properties. - [BUGFIX] Stop relying in
this.elementId
, since it is not present in Ember 2.7+ on tagless components. - [ENHANCEMENT] Add an
onBlur
action to the trigger - [BUGFIX] Change repositioning logic so it doesn't sets properties from inside the
didInsertElement
, which is deprecated and causes a performance penalty.
- [ENHANCEMENT] Although the component is tagless by default, if the user passes
renderInPlace=true
, a wrapper element with class.ember-basic-dropdown
is added to be able to position the content properly. - [BUGFIX] The reposition function no longer sets any observable state, so it can be called at any time without worring about the runloop and double renders. More performant and fixes a bug when something inside gains the focus faster than the reposition.
- [BUGFIX] Don't focus the trigger again when the dropdown is closed as consecuence of clicking outside it.
- [ENHANCEMENT] Allow to add focusin/out events to the trigger
- [BUGFIX] Ensure that if the trigger receives
tabindex=null
it still defaults to 0.
- [BUGFIX] Ensure that the
aria-controls
attribute of the trigger points to the content by default.
- [BUGFIX] Focus the trigger when the component is closed
- [BUGFIX] Allow to attach
onFocusIn
andonFocusOut
event the the dropdown content component.
- [BUGFIX] Around half a docen regressions and changes, including add the proper classes to trigger and content when the component is rendered above/below/right/left/center/in-place. Now those cases are different between trigger and content for better granularity.
- [BREAKING CHANGE] Brand new API