Skip to content

Commit 5da3f8a

Browse files
authored
Merge pull request #20994 from NullVoxPopuli/nvp/renderComponent/loose-mode-interop-not-working
[BUG release] loosemode interop not working with renderComponent
2 parents 1812f32 + ec579cf commit 5da3f8a

File tree

3 files changed

+31
-42
lines changed

3 files changed

+31
-42
lines changed

packages/@ember/-internals/glimmer/lib/renderer.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ import { BOUNDS } from './component-managers/curly';
5555
import { createRootOutlet } from './component-managers/outlet';
5656
import { RootComponentDefinition } from './component-managers/root';
5757
import { EmberEnvironmentDelegate } from './environment';
58-
import { StrictResolver } from './renderer/strict-resolver';
5958
import ResolverImpl from './resolver';
6059
import type { OutletState } from './utils/outlet';
6160
import OutletView from './views/outlet';
@@ -345,7 +344,7 @@ interface ViewRegistry {
345344
[viewId: string]: unknown;
346345
}
347346

348-
type Resolver = ClassicResolver | StrictResolver;
347+
type Resolver = ClassicResolver;
349348

350349
interface RendererData {
351350
owner: object;
@@ -679,7 +678,7 @@ export class BaseRenderer {
679678
owner,
680679
{ hasDOM: hasDOM, ...options },
681680
document as SimpleDocument,
682-
new StrictResolver(),
681+
new ResolverImpl(),
683682
clientBuilder
684683
);
685684
}
@@ -769,7 +768,7 @@ export class Renderer extends BaseRenderer {
769768
owner,
770769
{ hasDOM: hasDOM, ...options },
771770
document as SimpleDocument,
772-
new StrictResolver(),
771+
new ResolverImpl(),
773772
clientBuilder
774773
);
775774
}

packages/@ember/-internals/glimmer/lib/renderer/strict-resolver.ts

Lines changed: 0 additions & 38 deletions
This file was deleted.

packages/@ember/-internals/glimmer/tests/integration/components/render-component-test.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,34 @@ moduleFor(
597597
}
598598
);
599599

600+
moduleFor(
601+
'Strict Mode <-> Loose Mode - renderComponent',
602+
class extends RenderComponentTestCase {
603+
'@test incidentally invoked loose-mode components can still resolve helpers'() {
604+
this.owner.register('helper:a-helper', (str: string) => str.toUpperCase());
605+
let Loose = defineComponent(null, `Hi: {{a-helper "there"}}`);
606+
let Root = defComponent('<Loose />', { scope: { Loose } });
607+
608+
this.renderComponent(Root, { expect: 'Hi: THERE' });
609+
610+
run(() => destroy(this));
611+
612+
assertHTML('');
613+
}
614+
615+
'@test strict-mode components cannot lookup things in the registry'(assert: Assert) {
616+
this.owner.register('helper:a-helper', (str: string) => str.toUpperCase());
617+
assert.throws(() => {
618+
/**
619+
* We need to pass a scope so that `defComponent` returns a strict-mode component.
620+
*/
621+
let Root = defComponent('{{a-helper "hi"}}', { scope: {} });
622+
this.renderComponent(Root, { expect: '' });
623+
}, /but that value was not in scope: a-helper/);
624+
}
625+
}
626+
);
627+
600628
moduleFor(
601629
'Strict Mode - renderComponent - built ins',
602630
class extends RenderComponentTestCase {

0 commit comments

Comments
 (0)