-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: avoid internal validation before interacting with input #1682
base: main
Are you sure you want to change the base?
Conversation
🦋 Changeset detectedLatest commit: d7a5609 The changes in this PR will be included in the next version bump. This PR includes changesets to release 5 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Jsut a minor unimportant thing: maybe we could also add a textarea story.
One thing I was thinking about while reviewing is that we could also do something similar like angular does, setting the ix-invalid--required regardless, but applying the css only if also ix-touched is present. We could also do this over our ValueAccessor in angular, where we only apply the mapping of ix-invalid--required if ng-invalid and ng-touched is present.
}; | ||
} | ||
detourFormControlMethods(ngControl: NgControl, elementRef: ElementRef) { | ||
const formControl = ngControl.control as any; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe use type AbstractControl here
if (host.hasValidValue && typeof host.hasValidValue === 'function') { | ||
const hasValue = await host.hasValidValue(); | ||
const touched = await isTouched(host); | ||
if (host.required) { | ||
host.classList.toggle('ix-invalid--required', !hasValue); | ||
host.classList.toggle('ix-invalid--required', !hasValue && touched); | ||
} else { | ||
host.classList.remove('ix-invalid--required'); | ||
} | ||
} | ||
|
||
const skipValidation = await shouldSuppressInternalValidation(host); | ||
if (skipValidation) { | ||
return; | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we do this before toggling the classes above?
💡 What is the current behavior?
GitHub Issue Number: Fixes #1680 #1638
🆕 What is the new behavior?
🏁 Checklist
A pull request can only be merged if all of these conditions are met (where applicable):
pnpm run docs
)pnpm test
)pnpm lint
)pnpm build
, changes pushed)👨💻 Help & support