Skip to content

Auto complete custom element tags in TSX not working with hyphen in name #28905

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

Closed
Cammisuli opened this issue Dec 7, 2018 · 7 comments · Fixed by #37455
Closed

Auto complete custom element tags in TSX not working with hyphen in name #28905

Cammisuli opened this issue Dec 7, 2018 · 7 comments · Fixed by #37455
Labels
Bug A bug in TypeScript Domain: Completion Lists The issue relates to showing completion lists in an editor Domain: JSX/TSX Relates to the JSX parser and emitter
Milestone

Comments

@Cammisuli
Copy link

When using tsx to develop components for custom elements (web components), auto complete does not show element names that have a - in it's name.

I'm using https://stenciljs.com/ to create these components, and custom element names are added to an extended InstrinsicElements interface. Which looks like this:

interface StencilIntrinsicElements {
    'app-home': Components.AppHomeAttributes;
    'app-profile': Components.AppProfileAttributes;
    'app-root': Components.AppRootAttributes;
    'app-tester': Components.AppTesterAttributes;
    'tester2': Components.Tester2Attributes;
  }
  • VSCode Version:
    Version: 1.29.1 (system setup)
    Commit: bc24f98b5f70467bc689abf41cc5550ca637088e
    Date: 2018-11-15T19:13:36.375Z
    Electron: 2.0.12
    Chrome: 61.0.3163.100
    Node.js: 8.9.3
    V8: 6.1.534.41
    Architecture: x64

  • OS: Windows 10

Steps to Reproduce:
Repo here - https://github.com/Cammisuli/tsx-completion-bug

Preview of issue discussed:

  • Not working
    auto-complete-tsx-hyphen

  • Working
    auto-complete-tsx

After either element is added, hovering over it shows the proper type of the element.

Does this issue occur when all extensions are disabled?: Yes

@mjbvz mjbvz self-assigned this Dec 7, 2018
@mjbvz
Copy link
Contributor

mjbvz commented Dec 7, 2018

Repo by augmenting JSX :

import * as React from 'react'

declare global {
    namespace JSX {
        interface IntrinsicElements {
            'div-2': React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
        }
    }
}

const x = <div| 

Completion item for div-2 is not returned.

@mjbvz mjbvz transferred this issue from microsoft/vscode Dec 7, 2018
@weswigham weswigham added Bug A bug in TypeScript Domain: JSX/TSX Relates to the JSX parser and emitter Domain: Completion Lists The issue relates to showing completion lists in an editor labels Dec 7, 2018
@RyanCavanaugh RyanCavanaugh added this to the Backlog milestone Mar 14, 2019
@mjbvz mjbvz removed their assignment Mar 18, 2019
@Cammisuli
Copy link
Author

This is actually something I would like to see fix. If help is needed to get this going, I'm more than willing to try to create a PR; I would just need to get some direction on where to look/debug.

Thanks!

@zavr-1
Copy link

zavr-1 commented Mar 16, 2020

WHY ARE YOU NOT FIXING THIS MICROSOFT.

The Software Engineering Code of Ethics and Professional Practice

1.07. Consider issues of physical disabilities, allocation of resources, economic disadvantage and other factors that can diminish access to the benefits of software.

All React's Aria tags use hyphens. When people start typing aria for an attribute, they cannot discover it in VSCode because of this BUG! People are less likely to discover and pay attention to accessibility because of that.

STOP BREAKING SOFTWARE ENGINEERING CODE AND IMPLEMENT ESSENTIAL FUNCTIONALITY!!!

@Jack-Works
Copy link
Contributor

Jack-Works commented Mar 18, 2020

I think I can fix it. Let me have a try...
The reason for this bug is

if (isIdentifierText(name, target) || symbol.valueDeclaration && isPrivateIdentifierPropertyDeclaration(symbol.valueDeclaration)) {
here filter out the hyphened name because TypeScript thinks it isn't a valid identifier name.

@Jack-Works
Copy link
Contributor

image

OK I get it

@Jack-Works
Copy link
Contributor

image

Another screenshot

@bkelley13
Copy link

This would be very helpful to fix, Jack-works! Many thanks for your efforts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug A bug in TypeScript Domain: Completion Lists The issue relates to showing completion lists in an editor Domain: JSX/TSX Relates to the JSX parser and emitter
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants