Skip to content

docs(autocomplete): add basic autocomplete examples #5464

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
wants to merge 7 commits into from

Conversation

amcdnl
Copy link
Contributor

@amcdnl amcdnl commented Jul 1, 2017

Adds basic set of demos for autocomplete component:

  • Basic
  • Filtering
  • Display Value
  • Better overview example

@amcdnl amcdnl requested a review from jelbourn July 1, 2017 19:05
@googlebot googlebot added the cla: yes PR author has agreed to Google's Contributor License Agreement label Jul 1, 2017
@amcdnl amcdnl self-assigned this Jul 1, 2017
}

filter(name: string): User[] {
return this.options.filter(option => new RegExp(`^${name}`, 'gi').test(option.name));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the preference has shifted to using indexOf(...) === 0 but only the overview example ended up getting changed.

See #4921 (comment) for context

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@willshowell extending to this: In #5213 startsWith was used. Also note that if replaced by either indexOf or startsWith it must be used with toLowerCase.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, the issue here is that if someone types RegExp special characters into the input it will cause problems. Simpler to use indexOf.

}

filter(val: string): string[] {
return this.options.filter(option => new RegExp(`^${val}`, 'gi').test(option));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here as well

}

filter(name: string): User[] {
return this.options.filter(option => new RegExp(`^${name}`, 'gi').test(option.name));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, the issue here is that if someone types RegExp special characters into the input it will cause problems. Simpler to use indexOf.

<md-autocomplete #auto="mdAutocomplete">
<md-option *ngFor="let state of filteredStates | async" [value]="state.name">
<img style="vertical-align:middle;" src="{{state.flag}}" height="25" />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably make this img aria-hidden since it's a purely decorative addition that doesn't add any semantic meaning to the item.

@@ -0,0 +1,11 @@
<form class="example-form">
<md-input-container class="example-full-width">
<input type="text" placeholder="Assignee" mdInput [formControl]="myControl" [mdAutocomplete]="auto">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Input needs an aria-label
(for other inputs as well)

@amcdnl
Copy link
Contributor Author

amcdnl commented Jul 8, 2017

@willshowell @jelbourn - Addressed the items requested, ready for second review.


filter(name: string): User[] {
return this.options.filter(option =>
option.name.toLowerCase().indexOf(name.toLowerCase()) > -1);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should do === 0, since I think screen-reader users expect the autocomplete to work this way

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jelbourn it can also be done using startsWith instead of indexOf(...) === 0.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not in IE11.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, yes, unfortunately.

@jelbourn
Copy link
Member

@amcdnl there was just one outstanding comment on this PR

@amcdnl
Copy link
Contributor Author

amcdnl commented Jul 11, 2017

@jelbourn - missed that, updated per recommendation.

@jelbourn
Copy link
Member

Now just one lint error

amcdnl added 2 commits July 12, 2017 16:04
commit da1d1ca
Author: mmalerba <[email protected]>
Date:   Tue Jul 11 10:19:41 2017 -0700

    fix(datepicker): use 3 rows to display months of year (consistent with internal mocks) (angular#5427)

    fixes angular#5202

commit ed2ece9
Author: Kristiyan Kostadinov <[email protected]>
Date:   Tue Jul 11 19:18:41 2017 +0200

    chore(tabs): switch to OnPush change detection (angular#5631)

    Switches all of the tab-related components to OnPush change detection and sorts out the issues that come from the changes.

    Relates to angular#5035.

commit 70117ff
Author: Kristiyan Kostadinov <[email protected]>
Date:   Tue Jul 11 19:16:00 2017 +0200

    chore(selection): switch option and pseudo checkbox to OnPush change detection (angular#5585)

    * Switches the MdPseudoCheckbox, MdOption and MdOptgroup to OnPush change detection.
    * Fixes a few cases in MdOption where the UI state wasn't being updated properly.

    Relates to angular#5035.

commit bcf4826
Author: Paul Gschwendtner <[email protected]>
Date:   Tue Jul 11 19:09:02 2017 +0200

    fix(checkbox, radio): setting id to null causes invalid id for input (angular#5398)

    * In some situations, developers will change the `id` of a component dynamically. At some point if they set the `[id]` to `null` the input id will look like the following: `null-input`.
    * If developers are setting the `id` using a binding then the DOM Id for the host component won't be set at all (because the @input is triggered instead of the DOM property)

    Fixes angular#5394

commit 738b6be
Author: Amit Portnoy <[email protected]>
Date:   Tue Jul 11 20:02:55 2017 +0300

    fix(tabs): add module dependency on MdCommonModule (angular#5304)

    MdTabsModule **implicitly** depended on MdCommonModule
    Specifically, for rtl animations. see http://plnkr.co/edit/fBLGThvy7C0G666p56xn?p=preview.

commit f3f9f43
Author: Paul Gschwendtner <[email protected]>
Date:   Tue Jul 11 18:56:51 2017 +0200

    tests(slide-toggle): separate form tests for slide-toggle (angular#5629)

    * Separates the tests with and without the form modules. This is important to ensure that the slide-toggle works properly without and with forms.

commit baba6ef
Author: Kristiyan Kostadinov <[email protected]>
Date:   Tue Jul 11 18:30:40 2017 +0200

    feat(snack-bar): inject data and MdSnackBarRef into custom snack-bar component (angular#5383)

    * feat(snack-bar): inject data and MdSnackBarRef into custom snack-bar component

    * Injects the `MdSnackBarRef` into custom snack bar instances.
    * Adds the option to inject arbitrary data into a snack bar.
    * Turns the `DialogInjector` into a `PortalInjector` to allow it to be used elsewhere (e.g. the snack-bar).
    * Minor tweaks to the `SimpleSnackBar` to get it to use the new DI tokens instead of assigning data directly to the component instance.

    Fixes angular#5371.

commit 8c13325
Author: Jeremy Elbourn <[email protected]>
Date:   Tue Jul 11 09:25:54 2017 -0700

    fix(bidi): make `dir` and `changes` readonly (angular#5645)

commit 72148c0
Author: Kristiyan Kostadinov <[email protected]>
Date:   Tue Jul 11 18:24:05 2017 +0200

    feat(typography): allow typography config to be passed via mat-core (angular#5625)

    Allows for the typography config to be specified optionally through the `mat-core` mixin, avoiding some of the extra bloat that comes from overriding the typography after a theme is defined.

    Fixes angular#5589.

commit 5bc97ec
Author: Kristiyan Kostadinov <[email protected]>
Date:   Tue Jul 11 18:21:55 2017 +0200

    fix(list): subheader margin being overwritten by typography (angular#5652)

    Fixes the `.mat-subheader` margin being overwritten by the `.mat-typography` due to lower specificity.

    Fixes angular#5639.

commit 9022a7a
Author: Rafael Santana <[email protected]>
Date:   Tue Jul 11 13:19:34 2017 -0300

    fix(pseudo-checkbox): fix spell check (pallete -> palette) (angular#5661)

commit 2295877
Author: Michael Prentice <[email protected]>
Date:   Mon Jul 10 19:43:42 2017 -0400

    chore(examples): missing table module exports (angular#5663)

    material.angular.io build was throwing missing module errors
    `CdkTableModule` and `MdTableModule` need to be exported

    Relates to angular#5608

commit 4f8f6bd
Author: Jeremy Elbourn <[email protected]>
Date:   Mon Jul 10 12:48:10 2017 -0700

    chore: use existing screenshot firebase key

commit a1a7dcb
Author: Paul Gschwendtner <[email protected]>
Date:   Sat Jun 10 11:16:03 2017 +0200

    build: fix deploying of screenshot functions

    * Updates the dashboard and screenshot deploy script to exit the process immediately if the Firebase token is not set.
    * Fixes that the error message of the dashboard still shows the old name of the token variable
    * Renames the screenshot variables to follow the dashboard environment variables
    * Explicitly specifies the project that will be uploaded in the screenshot deploy script (same as for dashboard)

commit 5e961cb
Author: robindijkhof <[email protected]>
Date:   Tue Jul 11 00:24:26 2017 +0200

    test(sidenav): add e2e tests (angular#5463)

commit 46d0b6f
Author: Will Howell <[email protected]>
Date:   Mon Jul 10 15:18:47 2017 -0400

    docs(dialog): example of how to inject MdDialogRef (angular#5311)

commit 1f97945
Author: Paul Gschwendtner <[email protected]>
Date:   Mon Jul 10 20:38:45 2017 +0200

    build: fix stylelint deprecation warning (angular#5618)

    * Fixes the stylelint deprecation warning
    * Fixes that stylelint lints the compiled bundles from `dist/` folders of the `dashboard` or `screenshot` app
    * Updates the package-lock with [email protected]

commit dabcd53
Author: Paul Gschwendtner <[email protected]>
Date:   Mon Jul 10 20:38:09 2017 +0200

    build: separate deploy jobs in deploy build stage (angular#5621)

    Currently every deployment runs in a single Travis job concurrently. This messes up the logs and it's also hard to see what actually runs at all.

    The different deployment jobs should run concurrently in the deploy build stage.

commit 145ca8e
Author: Paul Gschwendtner <[email protected]>
Date:   Mon Jul 10 20:37:41 2017 +0200

    docs(getting-started): include cdk in systemjs config (angular#5626)

    * The getting started guide includes a brief section for the SystemJS configuration of a project using Angular Material. This extra section now also needs to include the CDK package.

    Fixes angular#5624

commit 557b31b
Author: Kristiyan Kostadinov <[email protected]>
Date:   Mon Jul 10 19:04:25 2017 +0200

    chore: fix linting errors (angular#5617)

    As a result of c09e8a7, a few linting errors got introduced.
@amcdnl
Copy link
Contributor Author

amcdnl commented Jul 12, 2017

@jelbourn - Sorry about that. Resolved now.

@jelbourn
Copy link
Member

I think your latest rebase did not go smoothly

@amcdnl
Copy link
Contributor Author

amcdnl commented Jul 15, 2017

Due to the merge issues, I have opened a new PR. Its the same code just properly merged. See: #5787

@amcdnl amcdnl closed this Jul 15, 2017
@amcdnl amcdnl deleted the autocomplete-demos branch July 15, 2017 17:06
@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Sep 6, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
cla: yes PR author has agreed to Google's Contributor License Agreement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants