Topic: mdb-auto-completer vs mdb-autocomplete
itay pro asked 5 years ago
The implementation of mdb-autocomplete is straight forward, just one component with several attributes such as formControlName, label, datasource, minSearchLength, openOnFocus, textNoResults, textSearching, clearButtonTabIndex
According to https://mdbootstrap.com/docs/angular/forms/autocomplete/, now I see that for I also need to add an and loop. Plus, I need to implement code behide.
I have many such components and was quite satisfied with the previous method, but since it is due to be deprecated, I need to recode and recheck.
Are there migration guidelines ? Are all the previous options implemented ? Is there a default implementation that requires less modifications ? Basically, it looks like I need to code the previous build in implementation myself, and for every instance of the compoent.
Itay
itay pro answered 5 years ago
8 - Scrolling to an option using the arrow keys and selecting with the Enter key submits the form
Fixed in 7.5.2 (and probably even before)
Thanks
itay pro answered 5 years ago
Hi Damian,
I emailed you a demo in which you can find that:
5 - The "search" label in the autocompleter is overwritten with the selected option
8 - Scrolling to an option using the arrow keys and selecting with the Enter key submits the form
9.5 - Adding [clearButtonTabIndex]="-1" throws an error:
Can't bind to 'clearButtonTabIndex' since it isn't a known property of 'input'. ("
Thanks, Itay
Arkadiusz Idzikowski staff commented 5 years ago
You need to add [clearButtonTabIndex] to the mdb-auto-completer component. We will take a closer look at the rest of the problems, thank you for the demo.
itay pro commented 5 years ago
As mentioned:
Adding [clearButtonTabIndex]="-1" throws an error:
Can't bind to 'clearButtonTabIndex' since it isn't a known property of 'input'. ("
Did you do it on my code and it work ?
Thanks, Itay
Arkadiusz Idzikowski staff commented 5 years ago
This input works correctly in your app, but you need to add it to mdb-auto-completer component, not to the input element with mdbAutoCompleter directive.
To resolve problem with label, add mdbInput directive to the input element.
The problem with keyboard navigation and form submitting will be resolved in next version.
itay pro commented 5 years ago
Works ! Waiting for next ver
Damian Gemza staff answered 5 years ago
Dear mdb2,
8) I was not able to reproduce it. Please show me the .html and .ts code for this example.
I would prefer selecting the option using the Tab key, rather than the Enter key. - I don't think that Tab key is better than Enter. Tab is used to change focus, while Enter is used to approve some action.
"Auto Completer - added functionality to pick highlighted (with keyboard) item as input's value". Please explain - This functionality set the highlighted (with keyboard navigation) item as mdb-auto-completer
input value.
9.5) I have added a [clearButtonTabIndex]="-1"
to the mdb-auto-completer
element, and the clear button is not focusable (with tab or shift-tab).
11) Please note, that mdb-auto-completer
is not an equal port of mdb-autocompleter
, but a brand new component. So there are no missing elements because we have not implemented a few options. You've got (select)
event which is fired after highlighting elements in a dropdown.
itay pro answered 5 years ago
Follow up on open issues:
4 Fixed in 7.4.3
5 - mdb-autocomplete had a label directive and mdbtooltip. In mdb-auto-completer it is missing. However, I just realized that I can add an additional label element after the input element with mdbtooltip. However it collide with the input place holder so I remove the input place holder but then the label collides with the selected option so I added the class="active" for the label but no it appears only on top and not in the input field as other inputs do. So, please take a look on adding a label element after the input
+8. When selecting from the dropdown list using the Enter key in a form, the submit button is unintentionally triggered.
There is nothing special to reproduce. Placing an mdb-auto-completer inside a form, submits it when selecting an option with the Enter key
I would prefer selecting the option using the Tab key, rather than the Enter key. In the release notes of 7.4.3 you say: "Auto Completer - added functionality to pick highlighted (with keyboard) item as input's value". Please explain
+9.5 Clear button is a tab stop when going back (alt-tab) even with [clearButtonTabIndex]="-1" Still exists. try entering some content to the input, then go to next element and return with shift-tag. You will stop on the clear button of the input element
+11 onSelect() - an event when an item is selected from the dropdown is missing.
There is the new (select) option to mdb-auto-completer yet it is fired when option is highlighted (e.g. on every down arrow) but not when value is finally selected either using mouse button, Enter key or Tab Key
itay pro answered 5 years ago
Ping 8 When selecting from the dropdown list using the Enter key in a form, the submit button is unintentionally triggered
Damian Gemza staff answered 5 years ago
9.5) Tried to reproduce it, but without success: I have added the [clearButtonTabIndex]="-1" to the mdb-auto-completer component, and the clear button is not able to be focused (proper behavior).
Damian Gemza staff answered 5 years ago
2) We'll add the (select) event which will emit the currently selected option. This will be available with the next release of MDB Angular.
9.5) Please describe the tab stop - what is it?
itay pro answered 5 years ago
2- I am looking for an event that will trigger whenever the selected highlighted option is changed
5 - mdb-autocomplete had a label directive and mdbtooltip. In mdb-auto-completer it is missing. However, I just realized that I can add an additional label element after the input element with mdbtooltip. However it collide with the input place holder so I remove the input place holder but then the label collides with the selected option so I added the class="active" for the label but no it appears only on top and not in the input field as other inputs do. So, please take a look on adding a label element after the input
+9.5 Clear button is a tab stop when going back (alt-tab) even with [clearButtonTabIndex]="-1"
Damian Gemza staff answered 5 years ago
1) Okay, it's broken on Chrome. We'll fix it.
2) Selected (highlighted)? Or Clicked (picked in the input)? There's no such event. Please specify about which selection you're talking about, and we'll implement such event.
5) I'm sorry, but still I don't understand you. Could you please describe it one more time, more clearly? What is tab-stop, and why you want there to use the tooltip? And on which element?
8) As I said before, We'll take a look at this.
Best Regards,
Damian
itay pro answered 5 years ago
Thanks, 1. Sorry, doesn't work. the list doesn't scroll. Angular Pro Ver 7.4.0 latest chrome. Mouse wheel does scroll 6. Because there is nothing to show
Waiting for the rest...
Damian Gemza staff answered 5 years ago
Here you can find some information about a few problems which you have pointed me out. I'll answer the missing ones tomorrow.
1) I don't think, that this mechanism is broken. I have tested it on Firefox - used a Remote Autocompleter example. When the items list is visible, I'm able to navigate through arrow up / arrow down key.
Also, the arrow up / down keys are moving the visible part of the list to them, so always I'm seeing the visible item. If your behavior is different, please provide me with the reproduction steps and also please specify which OS and Browser make problems.
3) We won't add textSearching
input, because users have to set this feature on its own.
Every method to filter completer data is provided by our users, so you have to implement such a feature on your end
Here's the very simple example of how to use the textNoResults
input to indicate if the autocompleter is searching data, or there are no data to view:
getFilteredData() {
const textSearchingBox = document.querySelector('.completer-no-results');
if (textSearchingBox) {
textSearchingBox.textContent = 'Searching';
}
setTimeout(() => {
this.results = this.searchEntries(this.searchText);
if (textSearchingBox) {
this.renderer.setStyle(textSearchingBox, 'visibility', 'hidden');
textSearchingBox.textContent = 'No results found';
}
}, 1000);
}
4) I don't know, where the problem is on your side. Just 'open' the autocompleter drodpown, and use the arrow up / down key to change the selected (highlighted) item.
But remember, that this feature is available only with MDB Angular.
In the live preview in our docs, there won't be such a feature.
6) Why do you want to set the textNoResults
to empty string?
Do you want to turn off this box? If you want to hide the textNoResults
box, please use the Renderer2
with setStyle
method to hide it (we'll add appropriate input to hide this box).
itay pro answered 5 years ago
Thanks,
- The arrow keys move the highlighted element but the if the list is long it is not scrolled to show lower items
- Is there an event to hook with selected text ?
- You said so months ago
- How ? It is not in the docs
- mdb tooltip adds a tool tip to the label, relates to 7 9.5 Please check what I wrote, I edited the comment to make it clearer
- textNoResults="" doesn't work
- OK
- It can be done with mdb select
Damian Gemza staff answered 5 years ago
Dear mdb2,
1) This example shows how to fetch data from remote api initially. If you want to fetch the data after keyup, use the @HostListener class and bind the fetch data to this.data variable.
2) We'll think about this.
3) We'll think about this.
4) The scrolling down / up with the Arrow Up / Arrow Down key is working with the Angular code. It's not work on the live preview, because jQuery haven't got such functionality.
5) We'll think about this.
6) There's no such possibility. We'll think about implementing this in the future.
7) Yes, use the floating label in addition to the placeholder.
8) We'll check this.
9) I don't understand this. What with mdbTooltip with completer?
10) textNoResults is working fine. I have checked it.
11) We'll check this.
12) The value input is used to set the value of the input element. This is necessary to use.
13) You can't disable te specific option.
Best Regards,
Damian
itay pro answered 5 years ago
Hi,
After playing with the new component I have some questions:
- The remote example is not complete as it shows how to fetch entire data at start but not while typing
- I think that in the reactive example, (ngModelChange) should not be used
- [textSearching] is missing
- Cannot scroll using up/down arrow keys. Try it yourself in https://mdbootstrap.com/docs/angular/forms/autocomplete/#basic-example
- Using the arrow keys doesn’t change the selected text in the input element as did before
- How can I control the height of the drop down list or the number of displayed elements ?
- How can I add a label to appear above the input when there is text there ? Should I use a label in addition to the placeholder ?
- When selecting from the dropdown list using the Enter key in a form, the submit button is unintentionally triggered
itay pro commented 5 years ago
+9. What about mdbTooltip ? +9.5 Clear button is a tab stop when going back (alt-tab) even with [clearButtonTabIndex]="-1"
itay pro commented 5 years ago
+10. textNoResults="" doesn't change the message
itay pro commented 5 years ago
+11 onSelect() - an event when an item is selected from the dropdown is missing
itay pro commented 5 years ago
+12. Option component value [value]="value"What does it mean for mdb-option ?
+13. How can I disable an option from being selected (+ grayed out) ?
Damian Gemza staff answered 5 years ago
Dear mdb2,
There's the clearButtonTabIndex
which is available on mdb-auto-completer
component.
About openOnFocus - there's no such an input right now. Autocompleter will open on the focus of the input.
Best Regards,
Damian
itay pro answered 5 years ago
How can I control the functionalities I achieved before for: openOnFocus, clearButtonTabIndex
Damian Gemza staff answered 5 years ago
Dear mdb2,
Unfortunately we haven't got any migration guide from the old to autocomplete to the new one.
The new autocompleter is very useful, because it allows you to define everything in your code (template of the data, a method in which you're getting the data, and others). It looks like the Angular Material autocomplete.
The code which is provided in the documentation is actually the minimum code necessary to reproduce the fully working autocompleter.
About options: Actually, we have only a few inputs available in this new autocompleter, because the rest was unuseful in it. This autocompleter is highly customizable from the customer side.
Best Regards,
Damian
FREE CONSULTATION
Hire our experts to build a dedicated project. We'll analyze your business requirements, for free.
Resolved
- ForumUser: Pro
- Premium support: No
- Technology: MDB Angular
- MDB Version: 7.0.0
- Device: NA
- Browser: NA
- OS: NA
- Provided sample code: No
- Provided link: Yes