SettingsFacet only applies to the first fragment if the same type
Environment
Jmix version: 1.7.2
Bug Description
SettingsFacet only applies to the first fragment if the same type because settings are mapped to the component ids which are identical.
Steps To Reproduce
- Open UserBrowse
- Open Active or Inactive tabs (relates to fragments)
- Change pagination
- Trigger user setting saving (e.g. close the screen)
- Reopen the screen and navigate to the same tab
Current Behavior
Settings are not saved
Expected Behavior
Settings are saved for each fragment
Sample Project
https://github.com/izumi-jmix/cfconflict
It seems in method 'io.jmix.ui.settings.facet.ScreenSettingsFacetImpl#fillWithInnerComponents(Collection<Component>, HasInnerComponents)' is not considered that hasInnerComponents.getInnerComponents() may return instances of HasComponents
Sample: TableImpl - HasInnerComponents. getInnerComponents() -> List.of(ButtonsPanelImpl). ButtonsPanelImpl is a HasComponents and may contain PaginationImpl. Such PaginationImpl are missed in current implementation (Jmix 1.7.2)