Detalhes do pacote

ember-render-helpers

buschtoens48.6kMIT1.0.4

Helpers that complement @ember/render-modifiers

ember-addon, ember-helper, ember-template-helper, template-helper

readme (leia-me)

This project uses GitHub Actions for continuous integration.

ember-render-helpers

Use the {{did-insert}}, {{did-update}}, {{will-destroy}} modifiers from @ember/render-modifiers as template helpers.

The original idea came from this Pre-RFC.

Installation

ember install ember-render-helpers
<summary>Use Glint or <template> tag? ✨</summary> - Update your template registry to extend this addon's. Check the Glint documentation for more information. ts import '@glint/environment-ember-loose'; import type EmberRenderHelpersRegistry from 'ember-render-helpers/template-registry'; declare module '@glint/environment-ember-loose/registry' { export default interface Registry extends EmberRenderHelpersRegistry, /* other addon registries */ { // local entries } } - In a <template> tag, use the named import to consume the helpers. ts import { action } from '@ember/object'; import Component from '@glimmer/component'; import { didInsertHelper } from 'ember-render-helpers'; export default class HelloComponent extends Component { @action sayHello() { console.log('Hello!'); } <template> {{didInsertHelper this.sayHello}} </template> }

Usage

ember-render-helpers provides 3 helpers. To avoid name conflicts with @ember/render-modifiers, these helpers are suffixed with -helper.

  • {{did-insert-helper}}
  • {{did-update-helper}}
  • {{will-destroy-helper}}

All helpers expect a callback function as the 1st positional argument. You can pass parameters to this callback function as subsequent positional arguments, as named arguments, or using both.

{{did-insert-helper this.sayHello "Zoey"}}
import Component from '@glimmer/component';
import type { NamedParameters, PositionalParameters } from 'ember-render-helpers';

export default class HelloComponent extends Component {
  @action sayHello(positional: PositionalParameters, _named: NamedParameters) {
    const name = positional[0] as string;

    console.log(`Hello, ${name}!`);
  }
}

Example

Clicking the Toggle button will toggle the isVisible flag. When it switches to true, onDidInsert will be called, because the {{did-insert-helper}} helper is inserted. When it switches to false, onWillDestroy will be called, because the {{will-destroy-helper}} helper is removed.

Clicking the Random button will set randomValue to a new random value. Every time this happens, while isVisible is true, onDidUpdate will be called, because one of the parameters passed to the {{did-update-helper}} helper was updated.

Clicking the Random button does not cause {{did-insert-helper}} or {{will-destroy-helper}} to call onDidInsert and onWillDestroy, since these helpers are not triggered by parameter updates.

{{#if this.isVisible}}
  {{did-insert-helper   this.onDidInsert   1 2 3 this.randomValue foo="bar" qux="baz"}}
  {{will-destroy-helper this.onWillDestroy 1 2 3 this.randomValue foo="bar" qux="baz"}}
  {{did-update-helper   this.onDidUpdate   1 2 3 this.randomValue foo="bar" qux="baz"}}
{{/if}}

<button {{on "click" this.toggleVisibility}}>Toggle</button>
<button {{on "click" this.rollTheDice}}>Random</button>
import { action } from '@ember/object';
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';

export default class extends Component {
  @tracked isVisible = false;

  @tracked randomValue?: number;

  @action
  toggleVisibility() {
    this.isVisible = !this.isVisible;
  }

  @action
  rollTheDice() {
    this.randomValue = Math.random();
  }

  @action
  onDidInsert(positional: unknown[], named: Record<string, unknown>) {
    console.log({ positional, named });
    // => { positional: [1, 2, 3, 0.1337...], named: { foo: 'bar', qux: 'baz' } }
  }

  @action
  onWillDestroy(positional: unknown[], named: Record<string, unknown>) {
    console.log({ positional, named });
    // => { positional: [1, 2, 3, 0.1337...], named: { foo: 'bar', qux: 'baz' } }
  }

  @action
  onDidUpdate(positional: unknown[], named: Record<string, unknown>) {
    console.log({ positional, named });
    // => { positional: [1, 2, 3, 0.1337...], named: { foo: 'bar', qux: 'baz' } }
  }
}

changelog (log de mudanças)

ember-render-helpers

1.0.3

Patch Changes

1.0.2

Patch Changes

1.0.1

Patch Changes

  • Updated README

1.0.0

Major Changes

  • Limited Ember support to v3.28 or above
  • Limited Node support to v18 or above
  • Renamed helpers (these are now suffixed with -helper)

Minor Changes

  • Converted to v2 addon format
  • Provided signatures and template registry for Glint
  • Re-exported helpers and types for <template> tag
  • Updated CI to check that ember-render-helpers works on Ember v3.28, 4.x, 5.x, embroider-safe, and embroider-optimized

Patch Changes

  • Modernized tests for helpers