Skip to content
Merged
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
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# ember-headless-form
# @universal-ember/form

[![CI](https://github.com/universal-ember/form/actions/workflows/ci.yml/badge.svg?branch=main&event=push)](https://github.com/universal-ember/form/actions/workflows/ci.yml)

[![CI](https://github.com/CrowdStrike/ember-headless-form/actions/workflows/ci.yml/badge.svg?branch=main&event=push)](https://github.com/CrowdStrike/ember-headless-form/actions/workflows/ci.yml)

The Ember.js addon that distills the common behavior and accessibility best practices of forms into reusable components, without any opinions on specific markup or styling. Use it to build your forms directly, or to build your opinionated forms component kit on top of it.

Expand Down Expand Up @@ -34,6 +35,10 @@ Visit our [documentation website](https://ember-headless-form.pages.dev/).

See the [Contributing](CONTRIBUTING.md) guide for details.

## Credits

Originally from [CrowdStrike's ember-headless-form](https://github.com/crowdstrike/ember-headless-form)

## License

This project is licensed under the [MIT License](LICENSE.md).
2 changes: 1 addition & 1 deletion docs-app/.docfy-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const monorepoRoot = path.resolve(__dirname, '..');

module.exports = {
repository: {
url: 'https://github.com/CrowdStrike/ember-headless-form',
url: 'https://github.com/CrowdStrike/@universal-ember/form',
editBranch: 'main',
},
sources: [
Expand Down
2 changes: 1 addition & 1 deletion docs-app/ember-cli-build.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const isProduction = () => EmberApp.env() === 'production';
module.exports = function (defaults) {
let app = new EmberApp(defaults, {
autoImport: {
watchDependencies: ['ember-headless-form'],
watchDependencies: ['@universal-ember/form'],
},
'ember-cli-babel': {
enableTypeScriptTransform: true,
Expand Down
12 changes: 6 additions & 6 deletions docs-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,9 @@
"ember-browser-services": "^5.0.0",
"ember-changeset": "^4.1.2",
"ember-changeset-validations": "^4.1.1",
"ember-headless-form": "workspace:*",
"ember-headless-form-changeset": "workspace:*",
"ember-headless-form-yup": "workspace:*",
"@universal-ember/form": "workspace:*",
"@universal-ember/form-changeset": "workspace:*",
"@universal-ember/form-yup": "workspace:*",
"ember-modifier": "^4.0.0",
"ember-resources": "^7.0.0",
"highlight.js": "^11.6.0",
Expand All @@ -135,13 +135,13 @@
"yup": "^1.0.0"
},
"dependenciesMeta": {
"ember-headless-form": {
"@universal-ember/form": {
"injected": true
},
"ember-headless-form-changeset": {
"@universal-ember/form-changeset": {
"injected": true
},
"ember-headless-form-yup": {
"@universal-ember/form-yup": {
"injected": true
}
}
Expand Down
4 changes: 2 additions & 2 deletions internal/sync-pnpm/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.0.0",
"private": true,
"description": "Sync build artifacts of workspace packages to pnpm injected/hard linked copies",
"repository": "https://github.com/CrowdStrike/ember-headless-form.git",
"repository": "https://github.com/CrowdStrike/@universal-ember/form.git",
"license": "MIT",
"author": "CrowdStrike UX Team",
"main": "index.js",
Expand All @@ -22,4 +22,4 @@
"volta": {
"extends": "../../package.json"
}
}
}
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "ember-headless-form",
"name": "@universal-ember/form",
"version": "0.0.0",
"private": true,
"repository": "https://github.com/CrowdStrike/ember-headless-form.git",
"repository": "https://github.com/CrowdStrike/@universal-ember/form.git",
"license": "MIT",
"author": "CrowdStrike UX Team",
"scripts": {
Expand Down
10 changes: 5 additions & 5 deletions packages/changeset/package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"name": "ember-headless-form-changeset",
"name": "@universal-ember/form-changeset",
"version": "1.0.0",
"description": "Integrates ember-changeset with ember-headless-form",
"description": "Integrates ember-changeset with @universal-ember/form",
"keywords": [
"ember-addon"
],
"repository": "https://github.com/CrowdStrike/ember-headless-form.git",
"repository": "https://github.com/CrowdStrike/@universal-ember/form.git",
"license": "MIT",
"author": "CrowdStrike UX Team",
"files": [
Expand All @@ -28,7 +28,7 @@
"@embroider/addon-shim": "^1.0.0"
},
"peerDependencies": {
"ember-headless-form": "workspace:^1",
"@universal-ember/form": "workspace:^1",
"validated-changeset": "^1.3.4",
"ember-changeset": "^4.1.2",
"ember-source": ">=4.4.0"
Expand All @@ -39,7 +39,7 @@
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-decorators": "^7.23.6",
"@babel/plugin-syntax-decorators": "^7.23.3",
"ember-headless-form": "workspace:^1",
"@universal-ember/form": "workspace:^1",
"@embroider/addon-dev": "^7.0.0",
"@glimmer/component": "^1.1.2",
"@glint/core": "^1.4.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/changeset/src/helpers/validate-changeset.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { isChangeset } from 'validated-changeset';

import type { ErrorRecord, FormValidateCallback } from 'ember-headless-form';
import type { ErrorRecord, FormValidateCallback } from '@universal-ember/form';
import type { EmberChangeset } from 'ember-changeset';
import { assert } from '@ember/debug';

Expand Down
4 changes: 2 additions & 2 deletions packages/ember-headless-form/package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"name": "ember-headless-form",
"name": "@universal-ember/form",
"version": "1.1.1",
"description": "The default blueprint for Embroider v2 addons.",
"keywords": [
"ember-addon"
],
"repository": "https://github.com/CrowdStrike/ember-headless-form.git",
"repository": "https://github.com/CrowdStrike/@universal-ember/form.git",
"license": "MIT",
"author": "CrowdStrike UX Team",
"files": [
Expand Down
6 changes: 3 additions & 3 deletions packages/ember-headless-form/src/components/headless-form.gts
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ export default class HeadlessFormComponent<
const form = this.formElement;

assert(
'Form element expected to be present. If you see this, please report it as a bug to ember-headless-form!',
'Form element expected to be present. If you see this, please report it as a bug to @universal-ember/form!',
form
);

Expand All @@ -383,7 +383,7 @@ export default class HeadlessFormComponent<
for (const el of form.elements) {
// This is just to make TS happy, as we need to access properties on el that only form elements have, but elements in `form.elements` are just typed as plain `Element`. Should never occur in reality.
assert(
'Unexpected form element. If you see this, please report it as a bug to ember-headless-form!',
'Unexpected form element. If you see this, please report it as a bug to @universal-ember/form!',
el instanceof HTMLInputElement ||
el instanceof HTMLTextAreaElement ||
el instanceof HTMLSelectElement ||
Expand Down Expand Up @@ -478,7 +478,7 @@ export default class HeadlessFormComponent<
}
} else {
assert(
'Validation errors expected to be present. If you see this, please report it as a bug to ember-headless-form!',
'Validation errors expected to be present. If you see this, please report it as a bug to @universal-ember/form!',
// Do *not* use optional chaining due to https://github.com/ember-cli/babel-plugin-debug-macros/issues/89
this.validationState && this.validationState.isResolved
);
Expand Down
10 changes: 5 additions & 5 deletions packages/yup/package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"name": "ember-headless-form-yup",
"name": "@universal-ember/form-yup",
"version": "1.0.0",
"description": "Integrates yup-based validations with ember-headless-form",
"description": "Integrates yup-based validations with @universal-ember/form",
"keywords": [
"ember-addon"
],
"repository": "https://github.com/CrowdStrike/ember-headless-form.git",
"repository": "https://github.com/CrowdStrike/@universal-ember/form.git",
"license": "MIT",
"author": "CrowdStrike UX Team",
"files": [
Expand All @@ -30,7 +30,7 @@
},
"peerDependencies": {
"yup": "^1.0.0",
"ember-headless-form": "workspace:^1",
"@universal-ember/form": "workspace:^1",
"ember-source": ">=4.4.0"
},
"devDependencies": {
Expand All @@ -39,7 +39,7 @@
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-decorators": "^7.23.6",
"@babel/plugin-syntax-decorators": "^7.23.3",
"ember-headless-form": "workspace:^1",
"@universal-ember/form": "workspace:^1",
"@embroider/addon-dev": "^7.0.0",
"@glimmer/component": "^1.1.2",
"@glint/core": "^1.4.0",
Expand Down
4 changes: 2 additions & 2 deletions packages/yup/src/helpers/validate-yup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import type {
ErrorRecord,
FormKey,
FormValidateCallback,
} from 'ember-headless-form';
} from '@universal-ember/form';
import { assert } from '@ember/debug';

import type { ObjectSchema, ValidationError } from 'yup';
Expand All @@ -24,7 +24,7 @@ export default function validateChangeset<DATA extends object>(

for (const { path, type, value, message } of validationError.inner) {
assert(
'Received undefined path for yup validation error. If you see this, please report it as a bug to ember-headless-form!',
'Received undefined path for yup validation error. If you see this, please report it as a bug to @universal-ember/form!',
path !== undefined
);
const key = path as FormKey<DATA>; // yup maybe could have stricter types here, as path will always refer to a key of its schema
Expand Down
4 changes: 2 additions & 2 deletions test-app/ember-cli-build.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ module.exports = function (defaults) {

autoImport: {
watchDependencies: [
'ember-headless-form',
'@ember-headless-form/changeset',
'@universal-ember/form',
'@@universal-ember/form/changeset',
],
// See https://github.com/ef4/ember-auto-import/issues/564#issuecomment-1448820349
earlyBootSet: () => ['@glimmer/tracking'],
Expand Down
14 changes: 7 additions & 7 deletions test-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "test-app",
"version": "0.0.0",
"private": true,
"description": "Test app for ember-headless-form addon",
"description": "Test app for @universal-ember/form addon",
"repository": "",
"license": "MIT",
"author": "",
Expand Down Expand Up @@ -90,9 +90,9 @@
"ember-data": "^5.3.0",
"ember-disable-prototype-extensions": "^1.1.3",
"ember-fetch": "^8.1.2",
"ember-headless-form": "workspace:*",
"ember-headless-form-changeset": "workspace:*",
"ember-headless-form-yup": "workspace:*",
"@universal-ember/form": "workspace:*",
"@universal-ember/form-changeset": "workspace:*",
"@universal-ember/form-yup": "workspace:*",
"ember-load-initializers": "^3.0.1",
"ember-page-title": "^9.0.0",
"ember-qunit": "^8.0.0",
Expand Down Expand Up @@ -122,13 +122,13 @@
"yup": "^1.0.0"
},
"dependenciesMeta": {
"ember-headless-form": {
"@universal-ember/form": {
"injected": true
},
"ember-headless-form-changeset": {
"@universal-ember/form-changeset": {
"injected": true
},
"ember-headless-form-yup": {
"@universal-ember/form-yup": {
"injected": true
}
},
Expand Down
4 changes: 2 additions & 2 deletions test-app/tests/integration/components/async-yup-test.gts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import { click, fillIn, render } from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { validateYup } from 'ember-headless-form-yup';
import { HeadlessForm } from '@universal-ember/form';
import { validateYup } from '@universal-ember/form-yup';
import sinon from 'sinon';
import { setupRenderingTest } from 'test-app/tests/helpers';
import { object, string } from 'yup';
Expand Down
4 changes: 2 additions & 2 deletions test-app/tests/integration/components/changeset-test.gts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { click, fillIn, render, setupOnerror } from '@ember/test-helpers';
import { module, skip,test } from 'qunit';

import { Changeset } from 'ember-changeset';
import { HeadlessForm } from 'ember-headless-form';
import { validateChangeset } from 'ember-headless-form-changeset';
import { HeadlessForm } from '@universal-ember/form';
import { validateChangeset } from '@universal-ember/form-changeset';
import sinon from 'sinon';
import { setupRenderingTest } from 'test-app/tests/helpers';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
import { click, render, rerender, waitFor } from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import { setupRenderingTest } from 'test-app/tests/helpers';

import type { FieldValidateCallback } from 'ember-headless-form';
import type { FieldValidateCallback } from '@universal-ember/form';

module('Integration Component HeadlessForm > Async state', function (hooks) {
setupRenderingTest(hooks);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { render, setupOnerror } from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import { setupRenderingTest } from 'test-app/tests/helpers';

import type { RenderingTestContext } from '@ember/test-helpers';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { click, render } from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import { setupRenderingTest } from 'test-app/tests/helpers';

import type { RenderingTestContext } from '@ember/test-helpers';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { render } from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import { setupRenderingTest } from 'test-app/tests/helpers';

module('Integration Component HeadlessForm > Checkbox', function (hooks) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
import { render, setupOnerror } from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import { setupRenderingTest } from 'test-app/tests/helpers';

import type { InputType } from 'ember-headless-form';
import type { InputType } from '@universal-ember/form';

module('Integration Component HeadlessForm > Input', function (hooks) {
setupRenderingTest(hooks);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { click, render } from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import { setupRenderingTest } from 'test-app/tests/helpers';

import type { RenderingTestContext } from '@ember/test-helpers';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { render } from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import { setupRenderingTest } from 'test-app/tests/helpers';

module('Integration Component HeadlessForm > Select', function (hooks) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { render } from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import { setupRenderingTest } from 'test-app/tests/helpers';

module('Integration Component HeadlessForm > Textarea', function (hooks) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
} from '@ember/test-helpers';
import { module, test } from 'qunit';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import sinon from 'sinon';
import { setupRenderingTest } from 'test-app/tests/helpers';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
import { module, test } from 'qunit';
import { getOwnConfig, macroCondition } from '@embroider/macros';

import { HeadlessForm } from 'ember-headless-form';
import { HeadlessForm } from '@universal-ember/form';
import sinon from 'sinon';
import { setupRenderingTest } from 'test-app/tests/helpers';

Expand Down
Loading
Loading