diff --git a/docs/app/app.ts b/docs/app/app.ts index 1704a816..ec7a2089 100644 --- a/docs/app/app.ts +++ b/docs/app/app.ts @@ -3,13 +3,17 @@ import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; import { importSync, isDevelopingApp, macroCondition } from '@embroider/macros'; - import compatModules from '@embroider/virtual/compat-modules'; +import { setConfig } from 'ember-basic-dropdown/config'; if (macroCondition(isDevelopingApp())) { importSync('./deprecation-workflow'); } +setConfig({ + rootElement: config.APP['rootElement'] as string | undefined, +}); + export default class App extends Application { modulePrefix = config.modulePrefix; podModulePrefix = config.podModulePrefix; diff --git a/ember-basic-dropdown/rollup.config.mjs b/ember-basic-dropdown/rollup.config.mjs index 44fe1a9d..fe765b9e 100644 --- a/ember-basic-dropdown/rollup.config.mjs +++ b/ember-basic-dropdown/rollup.config.mjs @@ -54,6 +54,7 @@ export default [ // See https://github.com/embroider-build/embroider/blob/main/docs/v2-faq.md#how-can-i-define-the-public-exports-of-my-addon addon.publicEntrypoints([ 'index.js', + 'config.js', 'styles.js', 'components/**/*.js', 'modifiers/**/*.js', diff --git a/ember-basic-dropdown/src/components/basic-dropdown-wormhole.gts b/ember-basic-dropdown/src/components/basic-dropdown-wormhole.gts index 5a77b627..1b6437ba 100644 --- a/ember-basic-dropdown/src/components/basic-dropdown-wormhole.gts +++ b/ember-basic-dropdown/src/components/basic-dropdown-wormhole.gts @@ -1,5 +1,7 @@ import Component from '@glimmer/component'; import { getOwner } from '@ember/application'; +import { config as utilConfig, _configSet, type Config } from '../config.ts'; +import { deprecate } from '@ember/debug'; export interface BasicDropdownWormholeSignature { Element: HTMLElement; @@ -7,20 +9,41 @@ export interface BasicDropdownWormholeSignature { export default class BasicDropdownWormholeComponent extends Component { get getDestinationId(): string { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - // eslint-disable-next-line @typescript-eslint/no-unsafe-call - const config = getOwner(this).resolveRegistration('config:environment') as { - 'ember-basic-dropdown'?: { - destination?: string; + let config = utilConfig; + + if (!_configSet) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + const configEnvironment = getOwner(this).resolveRegistration( + 'config:environment', + ) as { + 'ember-basic-dropdown'?: Config; }; - }; - return ( - (config['ember-basic-dropdown'] && - config['ember-basic-dropdown'].destination) || - 'ember-basic-dropdown-wormhole' - ); + if (configEnvironment['ember-basic-dropdown']) { + const legacyConfigString = JSON.stringify( + configEnvironment['ember-basic-dropdown'], + ); + deprecate( + `You have configured \`ember-basic-dropdown\` in \`ember-cli-build.js\`. Remove that configuration and instead use \`import { setConfig } from 'ember-basic-dropdown/config'; setConfig(${legacyConfigString});`, + false, + { + for: 'ember-basic-dropdown', + id: 'ember-basic-dropdown.config-environment', + since: { + enabled: '8.9', + available: '8.9', + }, + until: '9.0.0', + }, + ); + + config = configEnvironment['ember-basic-dropdown']; + } + } + + return config.destination || 'ember-basic-dropdown-wormhole'; }