-
Notifications
You must be signed in to change notification settings - Fork 111
Add autocomplete attribute support for x-input component #1444
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
Conversation
🦋 Changeset detectedLatest commit: 255f451 The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 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 |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
CodSpeed Performance ReportMerging #1444 will not alter performanceComparing Summary
|
|
@copilot-swe-agent create a patch changeset with 'feat:' prefix |
Created patch changeset with 'feat:' prefix for the autocomplete attribute support feature. Commit: a6b09bb |
|
@copilot The html file is incorrect, regenerate it by using reference of |
Regenerated the HTML file using the structure from placeholder.html as reference. The file now includes the proper copyright header, comprehensive meta tags, correct CSS and script links, and uses the x-view wrapper pattern consistent with other test files. Commit: c9836f0 |
c9836f0 to
331b946
Compare
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Join our Discord community for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
Web Explorer#3911 Bundle Size — 343.8KiB (+0.08%).6de10ed(current) vs a3f1e3e main#3899(baseline) Bundle metrics
Bundle size by type
Bundle analysis report Branch copilot/fix-1440 Project dashboard Generated by RelativeCI Documentation Report issue |
React Example#3915 Bundle Size — 235.26KiB (0%).6de10ed(current) vs a3f1e3e main#3903(baseline) Bundle metrics
|
| Current #3915 |
Baseline #3903 |
|
|---|---|---|
0B |
0B |
|
0B |
0B |
|
0% |
0% |
|
0 |
0 |
|
4 |
4 |
|
159 |
159 |
|
64 |
64 |
|
45.81% |
45.81% |
|
2 |
2 |
|
0 |
0 |
Bundle size by type no changes
| Current #3915 |
Baseline #3903 |
|
|---|---|---|
145.76KiB |
145.76KiB |
|
89.5KiB |
89.5KiB |
Bundle analysis report Branch copilot/fix-1440 Project dashboard
Generated by RelativeCI Documentation Report issue
331b946 to
fe308f1
Compare
Co-authored-by: PupilTong <[email protected]>
Co-authored-by: PupilTong <[email protected]>
…re as reference Co-authored-by: PupilTong <[email protected]>
fe308f1 to
255f451
Compare
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.
Pull Request Overview
This PR adds autocomplete attribute support to the x-input component by forwarding the attribute value to the internal HTML input element in the shadow DOM, enabling standard browser autocomplete functionality.
- Added
autocompleteto theobservedAttributesarray inXInputAttribute.ts - Implemented attribute handler using the
bindToAttributehelper following established patterns - Added comprehensive test coverage to verify the attribute forwarding functionality
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
XInputAttribute.ts |
Added autocomplete attribute support with proper handler implementation |
attribute-autocomplete.html |
Created test HTML file with x-input element using autocomplete="username" |
web-elements.spec.ts |
Added Playwright test to verify autocomplete attribute forwarding to shadow DOM |
neat-frogs-autocomplete.md |
Added changeset documenting the new feature |
…#1444) This PR implements autocomplete attribute support for the `<x-input>` custom element by forwarding the attribute value to the internal HTML input element in the shadow DOM. ## Changes Made ### Core Implementation - **XInputAttribute.ts**: Added `autocomplete` to the `observedAttributes` array and implemented an attribute handler using the `bindToAttribute` helper - The implementation follows the established pattern used for other attributes like `disabled` ### Testing - **attribute-autocomplete.html**: Created test HTML file with `autocomplete="username"` attribute set on x-input - **web-elements.spec.ts**: Added Playwright test case to verify the autocomplete attribute is properly forwarded to the shadow DOM input element ## Technical Details The implementation uses the existing `bindToAttribute` helper function to automatically forward the autocomplete attribute value from the custom element to the internal `#input` element. No value transformation is needed - the attribute value passes through as-is. ```typescript @registerAttributeHandler('autocomplete', true) #handleAutocomplete = bindToAttribute( this.#getInputElement, 'autocomplete', ); ``` ## Usage Users can now use standard HTML autocomplete attributes on x-input elements: ```html <x-input autocomplete="username"></x-input> <x-input autocomplete="email"></x-input> <x-input autocomplete="current-password"></x-input> <x-input autocomplete="off"></x-input> ``` The autocomplete attribute will be properly forwarded to the underlying HTML input element, enabling browser autocomplete functionality as expected. Fixes lynx-family#1440. > [!WARNING] > > <details> > <summary>Firewall rules blocked me from connecting to one or more addresses</summary> > > #### I tried to connect to the following addresses, but was blocked by firewall rules: > > - `esm.ubuntu.com` > - Triggering command: `/usr/lib/apt/methods/https` (dns block) > > If you need me to access, download, or install something from one of these locations, you can either: > > - Configure [Actions setup steps](https://gh.io/copilot/actions-setup-steps) to set up my environment, which run before the firewall is enabled > - Add the appropriate URLs or hosts to the custom allowlist in this repository's [Copilot coding agent settings](https://github.com/lynx-family/lynx-stack/settings/copilot/coding_agent) (admins only) > > </details> <!-- START COPILOT CODING AGENT TIPS --> --- 💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click [here](https://survey.alchemer.com/s3/8343779/Copilot-Coding-agent) to start the survey. --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: PupilTong <[email protected]>
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @lynx-js/[email protected] ### Patch Changes - Supports `recyclable` attribute in `<list-item>` to control whether the list item is recyclable. The `recyclable` attribute depends on Lynx Engine 3.4 or later. ([#1388](#1388)) ```jsx <list-item recyclable={false} /> ``` - feat: Support using a host element as direct child of Suspense ([#1455](#1455)) - Add profile in production build: ([#1336](#1336)) 1. `diff:__COMPONENT_NAME__`: how long ReactLynx diff took. 2. `render:__COMPONENT_NAME__`: how long your render function took. 3. `setState`: an instant trace event, indicate when your setState was called. NOTE: `__COMPONENT_NAME__` may be unreadable when minified, setting `displayName` may help. - Add `onBackgroundSnapshotInstanceUpdateId` event on dev for Preact Devtools to keep the correct snapshotInstanceId info. ([#1173](#1173)) - fix: Prevent error when spreading component props onto an element ([#1459](#1459)) - fix: Correctly check for the existence of background functions in MTS ([#1416](#1416)) ```ts function handleTap() { "main thread"; // The following check always returned false before this fix if (myHandleTap) { runOnBackground(myHandleTap)(); } } ``` ## @lynx-js/[email protected] ### Patch Changes - Remove the experimental `provider` option. ([#1432](#1432)) - Add `output.filename.wasm` and `output.filename.assets` options. ([#1449](#1449)) - fix deno compatibility ([#1412](#1412)) - Should call the `api.onCloseBuild` hook after the build finished. ([#1446](#1446)) - Bump Rsbuild v1.4.15. ([#1423](#1423)) - Support using function in `output.filename.*`. ([#1449](#1449)) ## [email protected] ### Patch Changes - Support ESLint for ReactLynx templates ([#1274](#1274)) ## @lynx-js/[email protected] ### Patch Changes - Updated dependencies \[[`c8ce6aa`](c8ce6aa)]: - @lynx-js/[email protected] - @lynx-js/[email protected] - @lynx-js/[email protected] - @lynx-js/[email protected] ## @lynx-js/[email protected] ### Patch Changes - Fix the `Package subpath './compat' is not defined by "exports"` error. ([#1460](#1460)) ## @lynx-js/[email protected] ### Patch Changes - Fix `GlobalEventEmitter` type definition, the `emit(eventName: string, data: unknown)` function should recevie an array typed `data` and pass as param list of listeners. ([#1479](#1479)) ## @lynx-js/[email protected] ### Patch Changes - fix: load main-thread chunk in ESM format ([#1437](#1437)) See [nodejs/node#59362](nodejs/node#59362) for more details. - feat: support path() for `createQuerySelector` ([#1456](#1456)) - Added `getPathInfo` API to `NativeApp` and its cross-thread handler for retrieving the path from a DOM node to the root. - Implemented endpoint and handler registration in both background and UI threads. - Implemented `nativeApp.getPathInfo()` - Updated dependencies \[]: - @lynx-js/[email protected] ## @lynx-js/[email protected] ### Patch Changes - fix: load main-thread chunk in ESM format ([#1437](#1437)) See [nodejs/node#59362](nodejs/node#59362) for more details. - feat: support path() for `createQuerySelector` ([#1456](#1456)) - Added `getPathInfo` API to `NativeApp` and its cross-thread handler for retrieving the path from a DOM node to the root. - Implemented endpoint and handler registration in both background and UI threads. - Implemented `nativeApp.getPathInfo()` - fix: when `onNativeModulesCall` is delayed in mounting, the NativeModules execution result may be undefined. ([#1457](#1457)) - fix: `onNativeModulesCall` && `onNapiModulesCall` use getter to get. ([#1466](#1466)) - Updated dependencies \[[`29434ae`](29434ae), [`fb7096b`](fb7096b)]: - @lynx-js/[email protected] - @lynx-js/[email protected] - @lynx-js/[email protected] - @lynx-js/[email protected] ## @lynx-js/[email protected] ### Patch Changes - fix: load main-thread chunk in ESM format ([#1437](#1437)) See [nodejs/node#59362](nodejs/node#59362) for more details. ## @lynx-js/[email protected] ### Patch Changes - feat: add autocomplete attribute support for x-input component ([#1444](#1444)) Implements autocomplete attribute forwarding from the x-input custom element to the internal HTML input element in the shadow DOM. This enables standard browser autocomplete functionality for x-input elements. - Add referrerpolicy attribute support to x-image web component ([#1420](#1420)) - Updated dependencies \[]: - @lynx-js/[email protected] ## @lynx-js/[email protected] ### Patch Changes - fix: load main-thread chunk in ESM format ([#1437](#1437)) See [nodejs/node#59362](nodejs/node#59362) for more details. - Updated dependencies \[[`29434ae`](29434ae), [`fb7096b`](fb7096b)]: - @lynx-js/[email protected] - @lynx-js/[email protected] ## @lynx-js/[email protected] ### Patch Changes - feat: support path() for `createQuerySelector` ([#1456](#1456)) - Added `getPathInfo` API to `NativeApp` and its cross-thread handler for retrieving the path from a DOM node to the root. - Implemented endpoint and handler registration in both background and UI threads. - Implemented `nativeApp.getPathInfo()` - Updated dependencies \[[`29434ae`](29434ae), [`fb7096b`](fb7096b)]: - @lynx-js/[email protected] - @lynx-js/[email protected] - @lynx-js/[email protected] ## [email protected] ## @lynx-js/[email protected] ## @lynx-js/[email protected] ## @lynx-js/[email protected] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This PR implements autocomplete attribute support for the
<x-input>custom element by forwarding the attribute value to the internal HTML input element in the shadow DOM.Changes Made
Core Implementation
autocompleteto theobservedAttributesarray and implemented an attribute handler using thebindToAttributehelperdisabledTesting
autocomplete="username"attribute set on x-inputTechnical Details
The implementation uses the existing
bindToAttributehelper function to automatically forward the autocomplete attribute value from the custom element to the internal#inputelement. No value transformation is needed - the attribute value passes through as-is.Usage
Users can now use standard HTML autocomplete attributes on x-input elements:
The autocomplete attribute will be properly forwarded to the underlying HTML input element, enabling browser autocomplete functionality as expected.
Fixes #1440.
Warning
Firewall rules blocked me from connecting to one or more addresses
I tried to connect to the following addresses, but was blocked by firewall rules:
esm.ubuntu.com/usr/lib/apt/methods/https(dns block)If you need me to access, download, or install something from one of these locations, you can either:
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.