Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 6 additions & 10 deletions docs/migrations/v0.18/changeset-form.md
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,6 @@ Key changes: manual binding and Select key-based selection.
```typescript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';

export default class ChangesetFormComponent extends Component {
@tracked hasSubmitted = false;
Expand All @@ -296,33 +295,30 @@ export default class ChangesetFormComponent extends Component {
{ key: 'ca', label: 'Canada' }
];

@action
updateField(changeset, fieldName, value) {
updateField = (changeset, fieldName, value) => {
changeset.set(fieldName, value);
changeset.validate(fieldName);
}
};

// Select components use keys, need conversion for changeset
@action
updateCountry(changeset, selectedKey) {
updateCountry = (changeset, selectedKey) => {
changeset.set('country', selectedKey);
changeset.validate('country');
}
};

getSelectedCountry(changeset) {
return changeset.get('country') || null;
}

@action
async handleSubmit(changeset, event) {
handleSubmit = async (changeset, event) => {
event.preventDefault();
await changeset.validate();
this.hasSubmitted = true;

if (changeset.isValid) {
await changeset.save({});
}
}
};

getFieldErrors(changeset, fieldName) {
if (!this.hasSubmitted) return [];
Expand Down
6 changes: 2 additions & 4 deletions docs/theming/configuration/theme-switching.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ fight this site's own theme switcher.
```gts
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { Button } from 'frontile';

export default class ThemeToggle extends Component {
Expand All @@ -54,12 +53,11 @@ export default class ThemeToggle extends Component {
this.applyTheme();
}

@action
toggleTheme(): void {
toggleTheme = (): void => {
this.isDark = !this.isDark;
this.applyTheme();
localStorage.setItem('theme', this.isDark ? 'dark' : 'light');
}
};

applyTheme(): void {
const html = document.documentElement;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import Component from '@glimmer/component';
import type { BufferedChangeset } from 'ember-changeset/types';
import { assert } from '@ember/debug';
import { action } from '@ember/object';
import { later } from '@ember/runloop';
import type Owner from '@ember/owner';

Expand Down Expand Up @@ -66,14 +65,13 @@ export default class ChangesetFormFieldsBase<
}, []);
}

@action
async validate(): Promise<void> {
validate = async (): Promise<void> => {
later(
this,
() => {
this.args.changeset.validate(this.args.fieldName);
},
1
);
}
};
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Component from '@glimmer/component';
import { assert } from '@ember/debug';
import { action } from '@ember/object';
import ChangesetFormFieldsCheckbox from './checkbox';
import FormCheckboxGroup, {
type FormCheckboxGroupArgs
Expand Down Expand Up @@ -70,19 +69,19 @@ export default class ChangesetFormFieldsCheckboxGroup extends Component<Changese
}, []);
}

@action async validate(): Promise<void> {
validate = async (): Promise<void> => {
if (this.args.groupName) {
await this.args.changeset.validate(this.args.groupName);
}
}
};

@action handleChange(value: unknown, event: Event): void {
handleChange = (value: unknown, event: Event): void => {
this.validate();

if (typeof this.args.onChange === 'function') {
this.args.onChange(value, event);
}
}
};

<template>
<FormCheckboxGroup
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import Base, { type BaseArgs, type BaseSignature } from './base';
import { action } from '@ember/object';
import FormCheckbox, {
type FormCheckboxArgs
} from '@frontile/forms-legacy/components/form-checkbox';
Expand Down Expand Up @@ -56,11 +55,11 @@ export default class ChangesetFormFieldsCheckbox extends Base<ChangesetFormField
}, []);
}

@action async validate(): Promise<void> {
validate = async (): Promise<void> => {
await this.args.changeset.validate(this.fullFieldName);
}
};

@action async handleChange(value: boolean, event: Event): Promise<void> {
handleChange = async (value: boolean, event: Event): Promise<void> => {
this.args.changeset.set(this.fullFieldName, value);

await this.validate();
Expand All @@ -72,7 +71,7 @@ export default class ChangesetFormFieldsCheckbox extends Base<ChangesetFormField
if (typeof this.args.onChange === 'function') {
this.args.onChange(value, event);
}
}
};

<template>
<FormCheckbox
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import Base, { type BaseArgs, type BaseSignature } from './base';
import { action } from '@ember/object';
import { on } from '@ember/modifier';
import FormInput, {
type FormInputArgs
Expand All @@ -19,13 +18,13 @@ export default class ChangesetFormFieldsInput extends Base<
ChangesetFormFieldsInputSignature,
string | undefined
> {
@action handleInput(value: string, event: InputEvent): void {
handleInput = (value: string, event: InputEvent): void => {
this.args.changeset.set(this.args.fieldName, value);

if (typeof this.args.onInput === 'function') {
this.args.onInput(value, event);
}
}
};

<template>
<FormInput
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import Base, { type BaseArgs, type BaseSignature } from './base';
import { action } from '@ember/object';
import type { FormRadioSignature } from '@frontile/forms-legacy/components/form-radio';
import FormRadioGroup, {
type FormRadioGroupArgs
Expand All @@ -21,8 +20,7 @@ export default class ChangesetFormFieldsRadioGroup extends Base<
ChangesetFormFieldsRadioGroupSignature,
string | boolean | number | undefined
> {
@action
async handleChange(value: unknown, event: Event): Promise<void> {
handleChange = async (value: unknown, event: Event): Promise<void> => {
event.preventDefault();

this.args.changeset.set(this.args.fieldName, value);
Expand All @@ -31,7 +29,7 @@ export default class ChangesetFormFieldsRadioGroup extends Base<
if (typeof this.args.onChange === 'function') {
this.args.onChange(value, event);
}
}
};

<template>
<FormRadioGroup
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import Base, { type BaseArgs, type BaseSignature } from './base';
import { action } from '@ember/object';
import { on } from '@ember/modifier';
import FormRadio, {
type FormRadioArgs
Expand All @@ -16,8 +15,7 @@ export interface ChangesetFormFieldsRadioSignature extends BaseSignature {
}

export default class ChangesetFormFieldsRadio extends Base<ChangesetFormFieldsRadioSignature> {
@action
async handleChange(value: unknown, event: Event): Promise<void> {
handleChange = async (value: unknown, event: Event): Promise<void> => {
event.preventDefault();

this.args.changeset.set(this.args.fieldName, value);
Expand All @@ -26,7 +24,7 @@ export default class ChangesetFormFieldsRadio extends Base<ChangesetFormFieldsRa
if (typeof this.args.onChange === 'function') {
this.args.onChange(value, event);
}
}
};

<template>
<FormRadio
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import Base, { type BaseArgs, type BaseSignature } from './base';
import { action } from '@ember/object';
import FormSelect, {
type FormSelectArgs
} from '@frontile/forms-legacy/components/form-select';
Expand All @@ -20,37 +19,37 @@ export interface ChangesetFormFieldsSelectSignature extends BaseSignature {
}

export default class ChangesetFormFieldsSelect extends Base<ChangesetFormFieldsSelectSignature> {
@action
async handleChange(
handleChange = async (
selection: unknown,
select: unknown,
event?: Event
): Promise<void> {
): Promise<void> => {
this.args.changeset.set(this.args.fieldName, selection);
await this.validate();

if (typeof this.args.onChange === 'function') {
this.args.onChange(selection, select, event);
}
}
};

@action
async handleFocusOut(select: unknown, event: FocusEvent): Promise<void> {
handleFocusOut = async (
select: unknown,
event: FocusEvent
): Promise<void> => {
await this.validate();

if (typeof this.args.onFocusOut === 'function') {
this.args.onFocusOut(select, event);
}
}
};

@action
async handleClose(select: unknown, event: Event): Promise<void> {
handleClose = async (select: unknown, event: Event): Promise<void> => {
await this.validate();

if (typeof this.args.onClose === 'function') {
this.args.onClose(select, event);
}
}
};

<template>
{{! @glint-nocheck: need to fix powerselect types}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import Base, { type BaseArgs, type BaseSignature } from './base';
import { action } from '@ember/object';
import { on } from '@ember/modifier';
import FormTextarea from '@frontile/forms-legacy/components/form-textarea';
import { type FormInputArgs } from '@frontile/forms-legacy/components/form-input';
Expand All @@ -21,13 +20,13 @@ export default class ChangesetFormFieldsTextarea extends Base<
ChangesetFormFieldsTextareaSignature,
string | undefined
> {
@action handleInput(value: string, event: InputEvent): void {
handleInput = (value: string, event: InputEvent): void => {
this.args.changeset.set(this.args.fieldName, value);

if (typeof this.args.onInput === 'function') {
this.args.onInput(value, event);
}
}
};

<template>
<FormTextarea
Expand Down
13 changes: 5 additions & 8 deletions packages/changeset-form/src/components/changeset-form/index.gts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { assert } from '@ember/debug';
import { next } from '@ember/runloop';
import { hash, fn } from '@ember/helper';
Expand Down Expand Up @@ -106,11 +105,10 @@ class ChangesetForm extends Component<ChangesetFormSignature> {
}
}

@action
async handleSubmit(
handleSubmit = async (
changeset: BufferedChangeset,
event: Event
): Promise<void> {
): Promise<void> => {
event.preventDefault();
await changeset.validate();

Expand All @@ -130,18 +128,17 @@ class ChangesetForm extends Component<ChangesetFormSignature> {
if (typeof this.args.onSubmit === 'function') {
this.args.onSubmit(result.data, event);
}
}
};

@action
handleReset(changeset: BufferedChangeset, event: Event): void {
handleReset = (changeset: BufferedChangeset, event: Event): void => {
event.preventDefault();
this.hasSubmitted = false;

const { data } = changeset.rollback();
if (typeof this.args.onReset === 'function') {
this.args.onReset(data, event);
}
}
};

<template>
<form
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,12 @@ order: 1
```js component
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';

export default class DemoComponent extends Component {
@tracked value = false;

@action setValue(value) {
setValue = (value) => {
this.value = value;
}
};
}
```
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ order: 1
```js component
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';

export default class DemoComponent extends Component {
@tracked isChecked = false;
Expand All @@ -43,12 +42,12 @@ export default class DemoComponent extends Component {
}
}

@action setIsChecked(value) {
setIsChecked = (value) => {
this.isChecked = value;
}
};

@action setIsChecked2(value) {
setIsChecked2 = (value) => {
this.isChecked2 = value;
}
};
}
```
Loading
Loading