diff --git a/addon/components/pix-floating.gjs b/addon/components/pix-floating.gjs new file mode 100644 index 000000000..f2d085ab5 --- /dev/null +++ b/addon/components/pix-floating.gjs @@ -0,0 +1,62 @@ +import { hash } from '@ember/helper'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; +import { modifier as eModifier } from 'ember-modifier'; + +import { anchorTo } from '../modifiers/floating-ui'; + +const ref = eModifier((element, positional) => { + const fn = positional[0]; + fn(element); +}); + +/** + * A component that provides no DOM and yields two modifiers for creating + * creating floating uis, such as menus, popovers, tooltips, etc. + * This component currently uses [Floating UI](https://floating-ui.com/) + * + * Example usage: + * ```gjs + * import { PixFloating } from '@1024pix/pix-ui'; + * + * + * ``` + */ +export default class PixFloating extends Component { + @tracked reference = undefined; + @tracked data = undefined; + + setData = (data) => (this.data = data); + + setReference = (element) => (this.reference = element); + + +} diff --git a/addon/components/pix-multi-select.gjs b/addon/components/pix-multi-select.gjs index c8ca2a5a7..9eee8c00e 100644 --- a/addon/components/pix-multi-select.gjs +++ b/addon/components/pix-multi-select.gjs @@ -7,13 +7,13 @@ import { service } from '@ember/service'; import Component from '@glimmer/component'; import { tracked } from '@glimmer/tracking'; import onClickOutside from 'ember-click-outside/modifiers/on-click-outside'; -import { PopperJS } from 'ember-popperjs'; import { gt, or } from 'ember-truth-helpers'; import onArrowDownUpAction from '../modifiers/on-arrow-down-up-action'; import onEnterAction from '../modifiers/on-enter-action'; import onEscapeAction from '../modifiers/on-escape-action'; import PixCheckbox from './pix-checkbox'; +import PixFloating from './pix-floating'; import PixIcon from './pix-icon'; import PixLabel from './pix-label'; @@ -47,7 +47,7 @@ import PixLabel from './pix-label'; * @property {boolean} [screenReaderOnly] - Masque le libellé visuellement, tout en le laissant lisible par les lecteurs d'écran. * @property {boolean} [inlineLabel] - Place le libellé sur la même ligne que le champ. * @property {string} [className] - Classes CSS ajoutées au bouton d'ouverture. - * @property {string} [placement] - Position de la liste par rapport au champ, au sens de Popper. Par défaut : `bottom-start`. + * @property {string} [placement] - Position de la liste par rapport au champ, au sens de Floating UI. Par défaut : `bottom-start`. * @property {boolean} [isComputeWidthDisabled] - Désactive l'alignement automatique de la largeur du champ sur celle de la liste. */ @@ -234,7 +234,12 @@ export default class PixMultiSelect extends Component {
- +
diff --git a/addon/components/pix-select.gjs b/addon/components/pix-select.gjs index d0861fda5..f384b9284 100644 --- a/addon/components/pix-select.gjs +++ b/addon/components/pix-select.gjs @@ -6,11 +6,11 @@ import { service } from '@ember/service'; import Component from '@glimmer/component'; import { tracked } from '@glimmer/tracking'; import onClickOutside from 'ember-click-outside/modifiers/on-click-outside'; -import { PopperJS } from 'ember-popperjs'; import { or } from 'ember-truth-helpers'; import onArrowDownUpAction from '../modifiers/on-arrow-down-up-action'; import onEscapeAction from '../modifiers/on-escape-action'; +import PixFloating from './pix-floating'; import PixIcon from './pix-icon'; import PixLabel from './pix-label'; import PixSelectList from './pix-select-list'; @@ -53,7 +53,7 @@ import PixSelectList from './pix-select-list'; * @property {boolean} [isFullWidth] - Étend le champ à toute la largeur disponible. * @property {string} [errorMessage] - Message d'erreur affiché sous le champ. Sa présence applique le style d'erreur. * @property {string} [className] - Classes CSS ajoutées au bouton d'ouverture. - * @property {string} [placement] - Position de la liste par rapport au champ, au sens de Popper. Par défaut : `bottom-start`. + * @property {string} [placement] - Position de la liste par rapport au champ, au sens de Floating UI. Par défaut : `bottom-start`. * @property {boolean} [isComputeWidthDisabled] - Désactive l'alignement automatique de la largeur du champ sur celle de la liste. */ @@ -233,7 +233,12 @@ export default class PixSelect extends Component { {{/if}}
- +
- + {{#if @errorMessage}}

{{@errorMessage}}

{{/if}} diff --git a/addon/components/pix-structure-switcher.gjs b/addon/components/pix-structure-switcher.gjs index 7b79b9fe3..6fde0660d 100644 --- a/addon/components/pix-structure-switcher.gjs +++ b/addon/components/pix-structure-switcher.gjs @@ -4,11 +4,11 @@ import { guidFor } from '@ember/object/internals'; import Component from '@glimmer/component'; import { tracked } from '@glimmer/tracking'; import onClickOutside from 'ember-click-outside/modifiers/on-click-outside'; -import { PopperJS } from 'ember-popperjs'; import onArrowDownUpAction from '../modifiers/on-arrow-down-up-action'; import onEscapeAction from '../modifiers/on-escape-action'; import PixButton from './pix-button'; +import PixFloating from './pix-floating'; import PixSelectList from './pix-select-list'; export default class PixStructureSwitcher extends Component { @@ -71,7 +71,12 @@ export default class PixStructureSwitcher extends Component { {{on "keydown" this.lockTab}} ...attributes > - + {{/if}} - + } diff --git a/addon/modifiers/floating-ui.js b/addon/modifiers/floating-ui.js new file mode 100644 index 000000000..ac8414ff8 --- /dev/null +++ b/addon/modifiers/floating-ui.js @@ -0,0 +1,94 @@ +import { assert } from '@ember/debug'; +import { autoUpdate, computePosition, flip, hide, offset, shift } from '@floating-ui/dom'; +import { modifier as eModifier } from 'ember-modifier'; + +export const anchorTo = eModifier( + ( + floatingElement, + [_referenceElement], + { + strategy = 'fixed', + offsetOptions = 0, + placement = 'bottom', + flipOptions, + shiftOptions, + middleware = [], + setData, + }, + ) => { + const referenceElement = + typeof _referenceElement === 'string' + ? document.querySelector(_referenceElement) + : _referenceElement; + + assert( + 'no reference element defined', + referenceElement instanceof HTMLElement || referenceElement instanceof SVGElement, + ); + + assert( + 'no floating element defined', + floatingElement instanceof HTMLElement || _referenceElement instanceof SVGElement, + ); + + assert( + 'reference and floating elements cannot be the same element', + floatingElement !== _referenceElement, + ); + + assert('@middleware must be an array of one or more objects', Array.isArray(middleware)); + + Object.assign(floatingElement.style, { + position: strategy, + top: '0', + left: '0', + }); + + const update = async () => { + const { middlewareData, x, y } = await computePosition(referenceElement, floatingElement, { + middleware: [ + offset(offsetOptions), + flip(flipOptions), + shift(shiftOptions), + ...middleware, + hide({ strategy: 'referenceHidden' }), + hide({ strategy: 'escaped' }), + exposeMetadata(), + ], + placement, + strategy, + }); + + const referenceHidden = middlewareData.hide?.referenceHidden; + + Object.assign(floatingElement.style, { + top: `${y}px`, + left: `${x}px`, + margin: 0, + visibility: referenceHidden ? 'hidden' : 'visible', + }); + + void setData?.(middlewareData['metadata']); + }; + + void update(); + + const cleanup = autoUpdate(referenceElement, floatingElement, update); + + /** + * in the function-modifier manager, teardown of the previous modifier + * occurs before setup of the next + * https://github.com/ember-modifier/ember-modifier/blob/main/ember-modifier/src/-private/function-based/modifier-manager.ts#L58 + */ + return cleanup; + }, +); + +function exposeMetadata() { + return { + name: 'metadata', + fn: (data) => { + return { data }; + }, + }; +} diff --git a/addon/styles/_pix-multi-select.scss b/addon/styles/_pix-multi-select.scss index dec897bd7..d0c49d048 100644 --- a/addon/styles/_pix-multi-select.scss +++ b/addon/styles/_pix-multi-select.scss @@ -1,6 +1,6 @@ -@use "pix-design-tokens/typography"; -@use "component-state/form"; -@use "pix-design-tokens/shadows"; +@use 'pix-design-tokens/typography'; +@use 'component-state/form'; +@use 'pix-design-tokens/shadows'; .pix-multi-select { position: relative; @@ -87,21 +87,22 @@ min-width: 100%; max-height: 12.5rem; margin: 0; - margin-top: var(--pix-spacing-1x); padding: 0; overflow-y: auto; list-style-type: none; background-color: var(--pix-neutral-0); border-top: none; border-radius: 0 0 var(--pix-spacing-1x) var(--pix-spacing-1x); - transition: all 0.1s ease-in-out; + transition: + opacity 0.1s ease-in-out, + visibility 0.1s ease-in-out; &__item-label { padding: var(--pix-spacing-2x) var(--pix-spacing-6x); } &--hidden { - visibility: hidden; + visibility: hidden !important; opacity: 0; } diff --git a/addon/styles/_pix-select.scss b/addon/styles/_pix-select.scss index 459181e44..5e6fe9b39 100644 --- a/addon/styles/_pix-select.scss +++ b/addon/styles/_pix-select.scss @@ -1,6 +1,6 @@ -@use "pix-design-tokens/typography"; -@use "component-state/form"; -@use "pix-design-tokens/shadows"; +@use 'pix-design-tokens/typography'; +@use 'component-state/form'; +@use 'pix-design-tokens/shadows'; .pix-select { position: relative; @@ -28,7 +28,6 @@ width: 100%; min-width: fit-content; max-height: 12rem; - margin-top: var(--pix-spacing-1x); padding: 0; overflow-y: auto; white-space: nowrap; @@ -36,7 +35,9 @@ background-color: var(--pix-neutral-0); border-top: none; border-radius: 0 0 var(--pix-spacing-1x) var(--pix-spacing-1x); - transition: all 0.1s ease-in-out; + transition: + opacity 0.1s ease-in-out, + visibility 0.1s ease-in-out; &::-webkit-scrollbar { width: 0.5rem; @@ -59,13 +60,11 @@ } &--closed { - visibility: hidden; + visibility: hidden !important; opacity: 0; } } - - &__search { display: flex; margin: var(--pix-spacing-2x) var(--pix-spacing-3x); @@ -146,6 +145,6 @@ &__icon { margin: auto var(--pix-spacing-1x); - color: var(--pix-neutral-100) + color: var(--pix-neutral-100); } } diff --git a/addon/styles/_pix-structure-switcher.scss b/addon/styles/_pix-structure-switcher.scss index 70c0b0352..7693287f9 100644 --- a/addon/styles/_pix-structure-switcher.scss +++ b/addon/styles/_pix-structure-switcher.scss @@ -1,5 +1,5 @@ -@use "pix-design-tokens/breakpoints"; -@use "pix-design-tokens/shadows"; +@use 'pix-design-tokens/breakpoints'; +@use 'pix-design-tokens/shadows'; .pix-structure-switcher { --pix-structure-bg-hover: var(--pix-primary-100); @@ -12,7 +12,7 @@ --pix-structure-bg-hover: var(--pix-certif-50); } - @include breakpoints.device-is("mobile") { + @include breakpoints.device-is('mobile') { width: 100%; } @@ -21,7 +21,7 @@ .pix-navigation--opened & { width: auto; - margin:auto; + margin: auto; } } @@ -45,9 +45,10 @@ width: 0; // force dropdown to resize to its parent max-width: none; max-height: none; - margin-left:0 !important; + margin-left: 0 !important; overflow-y: visible; transform: none !important; + visibility: visible !important; transition: none; .pix-navigation--opened &:not(.pix-select__dropdown--closed) { @@ -67,7 +68,6 @@ border-top: none; } - .pix-select-list-category__option { padding: var(--pix-spacing-2x) var(--pix-spacing-8x) var(--pix-spacing-2x) var(--pix-spacing-4x); // stylelint-disable-next-line custom-property-pattern @@ -76,7 +76,7 @@ text-align: left; word-break: break-word; - &:focus:not(.pix-select-list-category__option--selected ) { + &:focus:not(.pix-select-list-category__option--selected) { background-color: var(--pix-structure-bg-hover); } @@ -99,7 +99,7 @@ } &:focus { - color: var(--pix-neutral-800) + color: var(--pix-neutral-800); } } } diff --git a/package-lock.json b/package-lock.json index 84ceb6591..7cb576075 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,15 +11,14 @@ "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", + "@floating-ui/dom": "^1.8.0", "check-engine": "^1.14.0", "ember-auto-import": "^2.7.4", "ember-cli-babel": "^8.2.0", "ember-cli-htmlbars": "^6.3.0", "ember-cli-sass": "^11.0.1", "ember-click-outside": "^6.1.1", - "ember-lifeline": "^7.0.0", "ember-modifier": "^4.2.0", - "ember-popperjs": "^3.0.0", "ember-template-imports": "^4.3.0", "ember-truth-helpers": "^5.0.0", "tracked-toolbox": "^2.2.0" @@ -2861,7 +2860,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/@ember/test-helpers/-/test-helpers-5.2.2.tgz", "integrity": "sha512-Cclqeh0j6RnYvoaElAVC3Nd1fsSUkc3oUTwTsLlNiC3riyPq8lNYxh96VM59/yji2ntrd/cJQ7qhhSZWd6hsEw==", - "devOptional": true, + "dev": true, "license": "(MIT OR Apache-2.0)", "dependencies": { "@ember/test-waiters": "^3.1.0 || ^4.0.0", @@ -2874,7 +2873,7 @@ }, "node_modules/@ember/test-waiters": { "version": "3.1.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "calculate-cache-key-for-tree": "^2.0.0", @@ -2888,7 +2887,7 @@ }, "node_modules/@ember/test-waiters/node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.11", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -2905,7 +2904,7 @@ }, "node_modules/@ember/test-waiters/node_modules/@babel/runtime": { "version": "7.12.18", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.4" @@ -2913,7 +2912,7 @@ }, "node_modules/@ember/test-waiters/node_modules/@types/fs-extra": { "version": "5.1.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -2921,7 +2920,7 @@ }, "node_modules/@ember/test-waiters/node_modules/babel-plugin-module-resolver": { "version": "3.2.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "find-babel-config": "^1.1.0", @@ -2936,7 +2935,7 @@ }, "node_modules/@ember/test-waiters/node_modules/broccoli-babel-transpiler": { "version": "7.8.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.12.0", @@ -2958,7 +2957,7 @@ }, "node_modules/@ember/test-waiters/node_modules/broccoli-funnel": { "version": "2.0.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "array-equal": "^1.0.0", @@ -2981,7 +2980,7 @@ }, "node_modules/@ember/test-waiters/node_modules/broccoli-funnel/node_modules/rimraf": { "version": "2.7.1", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -2992,7 +2991,7 @@ }, "node_modules/@ember/test-waiters/node_modules/broccoli-merge-trees": { "version": "3.0.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "broccoli-plugin": "^1.3.0", @@ -3004,7 +3003,7 @@ }, "node_modules/@ember/test-waiters/node_modules/broccoli-plugin": { "version": "1.3.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "promise-map-series": "^0.2.1", @@ -3015,7 +3014,7 @@ }, "node_modules/@ember/test-waiters/node_modules/broccoli-plugin/node_modules/rimraf": { "version": "2.7.1", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -3026,7 +3025,7 @@ }, "node_modules/@ember/test-waiters/node_modules/broccoli-source": { "version": "2.1.2", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -3034,7 +3033,7 @@ }, "node_modules/@ember/test-waiters/node_modules/debug": { "version": "2.6.9", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -3042,7 +3041,7 @@ }, "node_modules/@ember/test-waiters/node_modules/ember-cli-babel": { "version": "7.26.11", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.12.0", @@ -3082,7 +3081,7 @@ }, "node_modules/@ember/test-waiters/node_modules/ember-cli-babel/node_modules/ember-cli-version-checker": { "version": "4.1.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "resolve-package-path": "^2.0.0", @@ -3095,7 +3094,7 @@ }, "node_modules/@ember/test-waiters/node_modules/ember-cli-babel/node_modules/ember-cli-version-checker/node_modules/resolve-package-path": { "version": "2.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "path-root": "^0.1.1", @@ -3107,7 +3106,7 @@ }, "node_modules/@ember/test-waiters/node_modules/ember-cli-babel/node_modules/ember-cli-version-checker/node_modules/semver": { "version": "6.3.1", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3115,7 +3114,7 @@ }, "node_modules/@ember/test-waiters/node_modules/ember-cli-babel/node_modules/semver": { "version": "5.7.2", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver" @@ -3123,7 +3122,7 @@ }, "node_modules/@ember/test-waiters/node_modules/find-babel-config": { "version": "1.2.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "json5": "^1.0.2", @@ -3135,7 +3134,7 @@ }, "node_modules/@ember/test-waiters/node_modules/find-up": { "version": "2.1.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^2.0.0" @@ -3146,7 +3145,7 @@ }, "node_modules/@ember/test-waiters/node_modules/fixturify": { "version": "1.3.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/fs-extra": "^5.0.5", @@ -3161,7 +3160,7 @@ }, "node_modules/@ember/test-waiters/node_modules/fixturify-project": { "version": "1.10.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "fixturify": "^1.2.0", @@ -3170,7 +3169,7 @@ }, "node_modules/@ember/test-waiters/node_modules/fs-extra": { "version": "7.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", @@ -3183,7 +3182,7 @@ }, "node_modules/@ember/test-waiters/node_modules/json5": { "version": "1.0.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.0" @@ -3194,7 +3193,7 @@ }, "node_modules/@ember/test-waiters/node_modules/jsonfile": { "version": "4.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -3202,7 +3201,7 @@ }, "node_modules/@ember/test-waiters/node_modules/locate-path": { "version": "2.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^2.0.0", @@ -3214,12 +3213,12 @@ }, "node_modules/@ember/test-waiters/node_modules/ms": { "version": "2.0.0", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@ember/test-waiters/node_modules/p-limit": { "version": "1.3.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-try": "^1.0.0" @@ -3230,7 +3229,7 @@ }, "node_modules/@ember/test-waiters/node_modules/p-locate": { "version": "2.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^1.1.0" @@ -3241,7 +3240,7 @@ }, "node_modules/@ember/test-waiters/node_modules/p-try": { "version": "1.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -3249,7 +3248,7 @@ }, "node_modules/@ember/test-waiters/node_modules/path-exists": { "version": "3.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -3257,7 +3256,7 @@ }, "node_modules/@ember/test-waiters/node_modules/pkg-up": { "version": "2.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "find-up": "^2.1.0" @@ -3268,7 +3267,7 @@ }, "node_modules/@ember/test-waiters/node_modules/promise-map-series": { "version": "0.2.3", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "rsvp": "^3.0.14" @@ -3276,7 +3275,7 @@ }, "node_modules/@ember/test-waiters/node_modules/promise-map-series/node_modules/rsvp": { "version": "3.6.2", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": "0.12.* || 4.* || 6.* || >= 7.*" @@ -3284,17 +3283,17 @@ }, "node_modules/@ember/test-waiters/node_modules/regenerator-runtime": { "version": "0.13.11", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@ember/test-waiters/node_modules/reselect": { "version": "3.0.1", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@ember/test-waiters/node_modules/resolve-package-path": { "version": "3.1.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "path-root": "^0.1.1", @@ -3306,7 +3305,7 @@ }, "node_modules/@ember/test-waiters/node_modules/rsvp": { "version": "4.8.5", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": "6.* || >= 7.*" @@ -3314,7 +3313,7 @@ }, "node_modules/@ember/test-waiters/node_modules/semver": { "version": "7.6.3", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3325,7 +3324,7 @@ }, "node_modules/@ember/test-waiters/node_modules/universalify": { "version": "0.1.2", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -3333,7 +3332,7 @@ }, "node_modules/@ember/test-waiters/node_modules/walk-sync": { "version": "0.3.4", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ensure-posix-path": "^1.0.0", @@ -3342,7 +3341,7 @@ }, "node_modules/@ember/test-waiters/node_modules/walk-sync/node_modules/matcher-collection": { "version": "1.1.2", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "minimatch": "^3.0.2" @@ -3350,7 +3349,7 @@ }, "node_modules/@ember/test-waiters/node_modules/workerpool": { "version": "3.1.2", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.3.4", @@ -4496,10 +4495,36 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.8.0.tgz", + "integrity": "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.8.0.tgz", + "integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.8.0", + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.12.tgz", + "integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==", + "license": "MIT" + }, "node_modules/@glimmer/compiler": { "version": "0.92.4", "resolved": "https://registry.npmjs.org/@glimmer/compiler/-/compiler-0.92.4.tgz", "integrity": "sha512-xoR8F6fsgFqWbPbCfSgJuJ95vaLnXw0SgDCwyl/KMeeaSxpHwJbr8+BfiUl+7ko2A+HzrY5dPXXnGr4ZM+CUXw==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/interfaces": "0.92.3", @@ -4516,6 +4541,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4526,6 +4552,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@glimmer/component/-/component-2.0.0.tgz", "integrity": "sha512-eATSzBOUm0MZ9+YfJx7Y5p3gbwnaeMzLSSsCDn1ihDtUOIm5YYEV0ee0G7tXt/uKxowt8tXYn/EMbI9OlRF0CA==", + "devOptional": true, "license": "MIT", "dependencies": { "@embroider/addon-shim": "^1.8.9", @@ -4539,6 +4566,7 @@ "version": "0.92.4", "resolved": "https://registry.npmjs.org/@glimmer/debug/-/debug-0.92.4.tgz", "integrity": "sha512-waTBOdtp92MC3h/51mYbc4GRumO+Tsa5jbXLoewqALjE1S8bMu9qgkG7Cx635x3/XpjsD9xceMqagBvYhuI6tA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/interfaces": "0.92.3", @@ -4550,6 +4578,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4560,6 +4589,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/destroyable/-/destroyable-0.92.3.tgz", "integrity": "sha512-vQ+mzT9Vkf+JueY7L5XbZqK0WyEVTKv0HOLrw/zDw9F5Szn3F/8Ea/qbAClo3QK3oZeg+ulFTa/61rdjSFYHGA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4572,12 +4602,14 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/global-context/-/global-context-0.92.3.tgz", "integrity": "sha512-tvlK5pt6oSe3furJ1KsO9vG/KmF9S98HLrcR48XbfwXlkuxvUeS94cdQId4GCN5naeX4OC4xm6eEjZWdc2s+jw==", + "devOptional": true, "license": "MIT" }, "node_modules/@glimmer/destroyable/node_modules/@glimmer/util": { "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4588,6 +4620,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/encoder/-/encoder-0.92.3.tgz", "integrity": "sha512-DJ8DB33LxODjzCWRrxozHUaRqVyZj4p8jDLG42aCNmWo3smxrsjshcaVUwDmib24DW+dzR7kMc39ObMqT5zK0w==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/interfaces": "0.92.3", @@ -4610,6 +4643,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/interfaces/-/interfaces-0.92.3.tgz", "integrity": "sha512-QwQeA01N+0h+TAi/J7iUnZtRuJy+093hNyagxDQBA6b1wCBw+q+al9+O6gmbWlkWE7EifzmNE1nnrgcecJBlJQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@simple-dom/interface": "^1.4.0" @@ -4619,6 +4653,7 @@ "version": "0.92.4", "resolved": "https://registry.npmjs.org/@glimmer/manager/-/manager-0.92.4.tgz", "integrity": "sha512-YMoarZT/+Ft2YSd+Wuu5McVsdP9y6jeAdVQGYFpno3NlL3TXYbl7ELtK7OGxFLjzQE01BdiUZZRvcY+a/s9+CQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/debug": "0.92.4", @@ -4636,12 +4671,14 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/global-context/-/global-context-0.92.3.tgz", "integrity": "sha512-tvlK5pt6oSe3furJ1KsO9vG/KmF9S98HLrcR48XbfwXlkuxvUeS94cdQId4GCN5naeX4OC4xm6eEjZWdc2s+jw==", + "devOptional": true, "license": "MIT" }, "node_modules/@glimmer/manager/node_modules/@glimmer/reference": { "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/reference/-/reference-0.92.3.tgz", "integrity": "sha512-Ud4LE689mEXL6BJnJx0ZPt2dt/A540C+TAnBFXHpcAjROz5gT337RN+tgajwudEUqpufExhcPSMGzs1pvWYCJg==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "^0.1.7", @@ -4655,6 +4692,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4665,6 +4703,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/validator/-/validator-0.92.3.tgz", "integrity": "sha512-HKrMYeW0YhiksSeKYqX2chUR/rz82j12DcY7p2dORQlTV3qlAfiE5zRTJH1KRA1X3ZMf7DI2/GOzkXwYp0o+3Q==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "^0.1.7", @@ -4677,6 +4716,7 @@ "version": "0.92.4", "resolved": "https://registry.npmjs.org/@glimmer/node/-/node-0.92.4.tgz", "integrity": "sha512-a5GME7HQJZFJPQDdSetQI6jjKXXQi0Vdr3WuUrYwhienVTV5LG0uClbFE2yYWC7TX97YDHpRrNk1CC258rujkQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/interfaces": "0.92.3", @@ -4689,6 +4729,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4699,6 +4740,7 @@ "version": "0.92.4", "resolved": "https://registry.npmjs.org/@glimmer/opcode-compiler/-/opcode-compiler-0.92.4.tgz", "integrity": "sha512-WnZSBwxNqW/PPD/zfxEg6BVR5tHwTm8fp76piix8BNCQ6CuzVn6HUJ5SlvBsOwyoRCmzt/pkKmBJn+I675KG4w==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/debug": "0.92.4", @@ -4717,12 +4759,14 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/global-context/-/global-context-0.92.3.tgz", "integrity": "sha512-tvlK5pt6oSe3furJ1KsO9vG/KmF9S98HLrcR48XbfwXlkuxvUeS94cdQId4GCN5naeX4OC4xm6eEjZWdc2s+jw==", + "devOptional": true, "license": "MIT" }, "node_modules/@glimmer/opcode-compiler/node_modules/@glimmer/reference": { "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/reference/-/reference-0.92.3.tgz", "integrity": "sha512-Ud4LE689mEXL6BJnJx0ZPt2dt/A540C+TAnBFXHpcAjROz5gT337RN+tgajwudEUqpufExhcPSMGzs1pvWYCJg==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "^0.1.7", @@ -4736,6 +4780,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4746,6 +4791,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/validator/-/validator-0.92.3.tgz", "integrity": "sha512-HKrMYeW0YhiksSeKYqX2chUR/rz82j12DcY7p2dORQlTV3qlAfiE5zRTJH1KRA1X3ZMf7DI2/GOzkXwYp0o+3Q==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "^0.1.7", @@ -4758,6 +4804,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/owner/-/owner-0.92.3.tgz", "integrity": "sha512-ZxmXIUCy6DOobhGDhA6kMpaXZS7HAucEgIl/qcjV9crlzGOO8H4j+n2x6nA/8zpuqvO0gYaBzqdNdu+7EgOEmw==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/util": "0.92.3" @@ -4767,6 +4814,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4777,6 +4825,7 @@ "version": "0.92.4", "resolved": "https://registry.npmjs.org/@glimmer/program/-/program-0.92.4.tgz", "integrity": "sha512-fkquujQ11lsGCWl/+XpZW2E7bjHj/g6/Ht292A7pSoANBD8Bz/gPYiPM+XuMwes9MApEsTEMjV4EXlyk2/Cirg==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/encoder": "0.92.3", @@ -4793,6 +4842,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4842,6 +4892,7 @@ "version": "0.92.4", "resolved": "https://registry.npmjs.org/@glimmer/runtime/-/runtime-0.92.4.tgz", "integrity": "sha512-ISqM/8hVh+fY/gnLAAPKfts4CvnJBOyCYAXgGccIlzzQrSVLaz0NoRiWTLGj5B/3xyPbqLwYPDvlTsOjYtvPoA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/destroyable": "0.92.3", @@ -4862,12 +4913,14 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/global-context/-/global-context-0.92.3.tgz", "integrity": "sha512-tvlK5pt6oSe3furJ1KsO9vG/KmF9S98HLrcR48XbfwXlkuxvUeS94cdQId4GCN5naeX4OC4xm6eEjZWdc2s+jw==", + "devOptional": true, "license": "MIT" }, "node_modules/@glimmer/runtime/node_modules/@glimmer/reference": { "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/reference/-/reference-0.92.3.tgz", "integrity": "sha512-Ud4LE689mEXL6BJnJx0ZPt2dt/A540C+TAnBFXHpcAjROz5gT337RN+tgajwudEUqpufExhcPSMGzs1pvWYCJg==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "^0.1.7", @@ -4881,6 +4934,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4891,6 +4945,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/validator/-/validator-0.92.3.tgz", "integrity": "sha512-HKrMYeW0YhiksSeKYqX2chUR/rz82j12DcY7p2dORQlTV3qlAfiE5zRTJH1KRA1X3ZMf7DI2/GOzkXwYp0o+3Q==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "^0.1.7", @@ -4903,6 +4958,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/syntax/-/syntax-0.92.3.tgz", "integrity": "sha512-7wPKQmULyXCYf0KvbPmfrs/skPISH2QGR9atCnmDWnHyLv5SSZVLm1P0Ctrpta6+Ci3uGQb7hGk0IjsLEavcYQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/interfaces": "0.92.3", @@ -4916,6 +4972,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4940,6 +4997,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/vm/-/vm-0.92.3.tgz", "integrity": "sha512-DNMQz7nn2zRwKO1irVZ4alg1lH+VInwR3vkWVgobUs0yh7OoHVGXKMd5uxzIksqJEUw1XOX9Qgu/GYZB1PiH3w==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/interfaces": "0.92.3", @@ -4950,6 +5008,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/vm-babel-plugins/-/vm-babel-plugins-0.92.3.tgz", "integrity": "sha512-VpkKsHc3oiq9ruiwT7sN4RuOIc5n10PCeWX7tYSNZ85S1bETcAFn0XbyNjI+G3uFshQGEK0T8Fn3+/8VTNIQIg==", + "devOptional": true, "license": "MIT", "dependencies": { "babel-plugin-debug-macros": "^0.3.4" @@ -4962,6 +5021,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -4972,6 +5032,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/wire-format/-/wire-format-0.92.3.tgz", "integrity": "sha512-gFz81Q9+V7Xs0X8mSq6y8qacHm0dPaGJo2/Bfcsdow1hLOKNgTCLr4XeDBhRML8f6I6Gk9ugH4QDxyIOXOpC4w==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/interfaces": "0.92.3", @@ -4982,6 +5043,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -6027,14 +6089,6 @@ "url": "https://opencollective.com/pnpm" } }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/@prettier/sync": { "version": "0.2.1", "dev": true, @@ -6274,6 +6328,7 @@ }, "node_modules/@simple-dom/document": { "version": "1.4.0", + "devOptional": true, "license": "MIT", "dependencies": { "@simple-dom/interface": "^1.4.0" @@ -8314,6 +8369,7 @@ }, "node_modules/ast-types": { "version": "0.13.3", + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -8703,6 +8759,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/backburner.js/-/backburner.js-2.8.0.tgz", "integrity": "sha512-zYXY0KvpD7/CWeOLF576mV8S+bQsaIoj/GNLXXB+Eb8SJcQy5lqSjkRrZ0MZhdKUs9QoqmGNIEIe3NQfGiiscQ==", + "devOptional": true, "license": "MIT" }, "node_modules/bail": { @@ -9492,6 +9549,7 @@ }, "node_modules/broccoli-file-creator": { "version": "2.1.1", + "devOptional": true, "license": "MIT", "dependencies": { "broccoli-plugin": "^1.1.0", @@ -9503,6 +9561,7 @@ }, "node_modules/broccoli-file-creator/node_modules/broccoli-plugin": { "version": "1.3.1", + "devOptional": true, "license": "MIT", "dependencies": { "promise-map-series": "^0.2.1", @@ -9513,6 +9572,7 @@ }, "node_modules/broccoli-file-creator/node_modules/promise-map-series": { "version": "0.2.3", + "devOptional": true, "license": "MIT", "dependencies": { "rsvp": "^3.0.14" @@ -9520,6 +9580,7 @@ }, "node_modules/broccoli-file-creator/node_modules/rimraf": { "version": "2.7.1", + "devOptional": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -12400,7 +12461,7 @@ }, "node_modules/dom-element-descriptors": { "version": "0.5.1", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/dom-serializer": { @@ -14203,6 +14264,7 @@ }, "node_modules/ember-cli-get-component-path-option": { "version": "1.0.0", + "devOptional": true, "license": "ISC" }, "node_modules/ember-cli-htmlbars": { @@ -14394,6 +14456,7 @@ }, "node_modules/ember-cli-is-package-missing": { "version": "1.0.0", + "devOptional": true, "license": "ISC" }, "node_modules/ember-cli-lodash-subset": { @@ -14413,6 +14476,7 @@ }, "node_modules/ember-cli-path-utils": { "version": "1.0.0", + "devOptional": true, "license": "ISC" }, "node_modules/ember-cli-preprocess-registry": { @@ -14550,6 +14614,7 @@ }, "node_modules/ember-cli-typescript-blueprint-polyfill": { "version": "0.1.0", + "devOptional": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -14558,6 +14623,7 @@ }, "node_modules/ember-cli-typescript-blueprint-polyfill/node_modules/ansi-styles": { "version": "4.3.0", + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14571,6 +14637,7 @@ }, "node_modules/ember-cli-typescript-blueprint-polyfill/node_modules/chalk": { "version": "4.1.2", + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -14585,6 +14652,7 @@ }, "node_modules/ember-cli-typescript-blueprint-polyfill/node_modules/has-flag": { "version": "4.0.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -14592,6 +14660,7 @@ }, "node_modules/ember-cli-typescript-blueprint-polyfill/node_modules/supports-color": { "version": "7.2.0", + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15098,18 +15167,6 @@ "node": "16.* || >= 18" } }, - "node_modules/ember-popperjs": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "@embroider/addon-shim": "^1.7.1", - "@popperjs/core": "^2.11.1" - }, - "peerDependencies": { - "ember-modifier": ">= 3.2.7", - "ember-source": ">= 3.25.0" - } - }, "node_modules/ember-qunit": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/ember-qunit/-/ember-qunit-9.0.0.tgz", @@ -15682,6 +15739,7 @@ }, "node_modules/ember-router-generator": { "version": "2.0.0", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.4.5", @@ -15696,6 +15754,7 @@ "version": "5.12.0", "resolved": "https://registry.npmjs.org/ember-source/-/ember-source-5.12.0.tgz", "integrity": "sha512-2MWlJmQEeeiIk9p5CDMuvD470YPi7/4wXgU41ftbWc9svwF+0usoe4PLoLC0T/jV6YX+3SY5tumQfxLSLoFhmQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", @@ -15765,12 +15824,14 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/global-context/-/global-context-0.92.3.tgz", "integrity": "sha512-tvlK5pt6oSe3furJ1KsO9vG/KmF9S98HLrcR48XbfwXlkuxvUeS94cdQId4GCN5naeX4OC4xm6eEjZWdc2s+jw==", + "devOptional": true, "license": "MIT" }, "node_modules/ember-source/node_modules/@glimmer/reference": { "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/reference/-/reference-0.92.3.tgz", "integrity": "sha512-Ud4LE689mEXL6BJnJx0ZPt2dt/A540C+TAnBFXHpcAjROz5gT337RN+tgajwudEUqpufExhcPSMGzs1pvWYCJg==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "^0.1.7", @@ -15784,6 +15845,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/util/-/util-0.92.3.tgz", "integrity": "sha512-K1oH93gGU36slycxJ9CcFpUTsdOc4XQ6RuZFu5oRsxFYtEF5PSu7ik11h58fyeoaWOr1ebfkyAMawbeI2AJ5GA==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "0.1.7", @@ -15794,6 +15856,7 @@ "version": "0.92.3", "resolved": "https://registry.npmjs.org/@glimmer/validator/-/validator-0.92.3.tgz", "integrity": "sha512-HKrMYeW0YhiksSeKYqX2chUR/rz82j12DcY7p2dORQlTV3qlAfiE5zRTJH1KRA1X3ZMf7DI2/GOzkXwYp0o+3Q==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "^0.1.7", @@ -15804,6 +15867,7 @@ }, "node_modules/ember-source/node_modules/ansi-styles": { "version": "4.3.0", + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15817,6 +15881,7 @@ }, "node_modules/ember-source/node_modules/chalk": { "version": "4.1.2", + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15831,6 +15896,7 @@ }, "node_modules/ember-source/node_modules/has-flag": { "version": "4.0.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -15840,6 +15906,7 @@ "version": "8.0.6", "resolved": "https://registry.npmjs.org/router_js/-/router_js-8.0.6.tgz", "integrity": "sha512-AjGxRDIpTGoAG8admFmvP/cxn1AlwwuosCclMU4R5oGHGt7ER0XtB3l9O04ToBDdPe4ivM/YcLopgBEpJssJ/Q==", + "devOptional": true, "license": "MIT", "dependencies": { "@glimmer/env": "^0.1.7" @@ -15856,6 +15923,7 @@ "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "devOptional": true, "license": "MIT", "peer": true, "engines": { @@ -15864,6 +15932,7 @@ }, "node_modules/ember-source/node_modules/semver": { "version": "7.6.3", + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -15874,6 +15943,7 @@ }, "node_modules/ember-source/node_modules/supports-color": { "version": "7.2.0", + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -17480,6 +17550,7 @@ }, "node_modules/esprima": { "version": "4.0.1", + "devOptional": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -19669,6 +19740,7 @@ }, "node_modules/inflection": { "version": "2.0.1", + "devOptional": true, "license": "MIT", "engines": { "node": ">=14.0.0" @@ -23360,6 +23432,7 @@ }, "node_modules/private": { "version": "0.1.8", + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -23823,6 +23896,7 @@ }, "node_modules/recast": { "version": "0.18.10", + "devOptional": true, "license": "MIT", "dependencies": { "ast-types": "0.13.3", @@ -23836,6 +23910,7 @@ }, "node_modules/recast/node_modules/source-map": { "version": "0.6.1", + "devOptional": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -24074,6 +24149,7 @@ }, "node_modules/remove-types": { "version": "1.0.0", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.16.10", @@ -24084,6 +24160,7 @@ }, "node_modules/remove-types/node_modules/prettier": { "version": "2.8.8", + "devOptional": true, "license": "MIT", "bin": { "prettier": "bin-prettier.js" @@ -24468,6 +24545,7 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/route-recognizer/-/route-recognizer-0.3.4.tgz", "integrity": "sha512-2+MhsfPhvauN1O8KaXpXAOfR/fwe8dnUXVM+xw7yt40lJRfPVQxV6yryZm0cgRvAj5fMF/mdRZbL2ptwbs5i2g==", + "devOptional": true, "license": "MIT" }, "node_modules/rsvp": { diff --git a/package.json b/package.json index 6e2aedc48..4fe65ce15 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ }, "dependencies": { "@babel/core": "^7.25.2", + "@floating-ui/dom": "^1.8.0", "check-engine": "^1.14.0", "ember-auto-import": "^2.7.4", "ember-cli-babel": "^8.2.0", @@ -68,7 +69,6 @@ "ember-cli-sass": "^11.0.1", "ember-click-outside": "^6.1.1", "ember-modifier": "^4.2.0", - "ember-popperjs": "^3.0.0", "ember-template-imports": "^4.3.0", "ember-truth-helpers": "^5.0.0", "tracked-toolbox": "^2.2.0" diff --git a/tests/integration/components/pix-select-test.js b/tests/integration/components/pix-select-test.js index 9b763c033..34b8a656f 100644 --- a/tests/integration/components/pix-select-test.js +++ b/tests/integration/components/pix-select-test.js @@ -65,6 +65,18 @@ module('Integration | Component | PixSelect', function (hooks) { assert.dom(screen.queryByRole('option', { name: 'Oignon' })).doesNotExist(); }); + test('it keeps the closed dropdown hidden despite floating ui inline styles', async function (assert) { + // given & when + await render( + hbs`<:label + >{{this.label}}`, + ); + + // then + const dropdown = document.querySelector('.pix-select__dropdown'); + assert.strictEqual(getComputedStyle(dropdown).visibility, 'hidden'); + }); + test('it opens the dropdown', async function (assert) { // given const screen = await render(