infor-design / enterprise

Enterprise-grade component library for the Infor Design System
https://design.infor.com
Apache License 2.0
134 stars 81 forks source link

Datagrid: Unable to set custom Tab Sequence #8825

Closed ablomq closed 2 months ago

ablomq commented 3 months ago

Describe the bug We need to set a custom tab sequence. This has worked until version 4.90.0 bur with version 4.91.0 but with Pull Request #8259 this is not possible anymore. The DOM will now be updated constantly adding tabIndex=0 to some cells in the Datagrid. I tried setting the Datagrid property actionableMode = false but it did not revert the behaviour to how it was prior to correction #8259. Don't know how to disable correction #8259? (setActiveCell is called whenever the tab key is pressed.)

This is a business requirement we need to continue to support. Since we can't release our new version until this functionality works this is a showstopper for us.

To Reproduce We set a custom Tab sequence after the Datagrid has been rendered by updating the DOM but with correction #8259 this is no longer possible since the DOM is constantly updated with new tabIndex values when pressing the tab key.

Expected behavior A way to disable the behaviour introduced by (https://github.com/infor-design/enterprise/pull/8259) so we can override the tab sequence.

Version

Screenshots The tab sequence should traverse through the open input fields but now the next field:

Should work like this:

image

Pressing the Tab key should then get you to the next input field on the next row:

image

But now it works like this:

image

The "Info" field is an action field that should not be part of the tab sequence:

image

tmcconechy commented 3 months ago

@ablomq do you really mean that you set a custom tab sequence? As i cant see how that could have worked before as we dont have a way to set it. Or do you just mean that tabbing in action mode should go to the next / previous inline editor? If so this is a noted problem i discovered the other day too.

ablomq commented 3 months ago

We have a directive which updates the DOM by setting the tabindex and then field focus on the first field:

image

But now the tabindex=0 attribute is added to other fields on the same row by the IDS as soon as I press the Tab key.

tmcconechy commented 3 months ago

Would it be easier to just use the same behavior where tabing is correct? (tabbing in action mode always goes to the next field) rather than changing tabindexes after the fact?

ablomq commented 3 months ago

Not sure what you mean? Now it's not possible to set a custom tab sequence since tabindex is constantly updated by the datagrid as soon as I press the tab key.

tmcconechy commented 3 months ago

@ablomq i mean it seems like the default behavior should be that if you have one editable field per row tab goes to the next row. So why go to the trouble of changing all the tabindexes?

But can see if there is some way we can do this and not set the tabindex but im not really sure if there is, was never a known requirement so far to be able to set custom tabindex on cells.

ablomq commented 3 months ago

@tmcconechy For us it will most likely work fine if we can have the same behaviour we had regarding the tabindexes we had prior to when #8259 was introduced. That would mean that the tabindexes is not updated as soon as the tab key is pressed but remains the same as when the datagrid was initialized.

GRAMIK0 commented 3 months ago

@tmcconechy! This issue is a serious issue and stops us to deliver new versions of application Infor Sales Hub. I would be really happy if you could give me estmate when a fix will be released for this bug report.

tmcconechy commented 3 months ago

@GRAMIK0 the issue is current in progress to be fixed. Would expect if we can find a solution that it will be in the Aug release

GRAMIK0 commented 3 months ago

Please notice that this is an regression error and should therefore be prioritized. This feature has been working for a long time, but seems to have went broken lately. We need a fix in July, otherwise our October version of Infor Sales Hub is not possible to deliver, which is a disaster. Our "October update of Sales Hub" is a feature release, which is one of the two feature releases each year. Therefore it is extra important for us to be able to deliver our "October update of Sales Hub".

Conclusion We need to escalate this issue.

tmcconechy commented 3 months ago

@GRAMIK0 this issue is in progress, looking for a solution. We had no way of knowing that we cant use a tabindex internally in our data grid.

ablomq commented 3 months ago

The tab sequence still doesn't work even if I remove all action fields in the grid and set actionableMode=false. It's still not possible to tab to the next row.

image

tmcconechy commented 3 months ago

@tjamesallen15 is working on it what we will try is

a) not having any internal tabindex b) fixing the internal keyboard behavior to work as we expect it to and then any overrides you can set your tabindex (although i still dont reccomend messing around with the tabindex) c) @tjamesallen15 can we make a test that shows a custom tabindex override?

tmcconechy commented 2 months ago

@GRAMIK0 @ablomq Can you test the setting out https://github.com/infor-design/enterprise/pull/8873 and wether this will work?

ablomq commented 2 months ago

@tmcconechy I have just tested and it works as before now. By setting the new parameter overrideTabbing to true it now works. Excellent work. A big thanks for this speedy resolution.

Can you make a special build we can use with this fix including the latest from the released 4.97.0 version?

tmcconechy commented 2 months ago

@ablomq so you would like this added on top of 4.97.0 -> so a 4.97.1 patch? Do you need only that or also the Angular Build that goes with it? (NG 18?)

ablomq commented 2 months ago

@tmcconechy Yes, a 4.97.1 patch with the Angular Build (NG 18) would be great.

GRAMIK0 commented 2 months ago

Hi @tmcconechy! Great job done! Thank you very much for your help and professionalism.

tmcconechy commented 2 months ago

ok @GRAMIK0 @ablomq its ready https://www.npmjs.com/package/ids-enterprise-ng/v/18.1.4 (contains 4..97.1.)