#2846 - Replace Components User Profile#2911
#2846 - Replace Components User Profile#2911kodinkat wants to merge 2 commits intoDiscipleTools:developfrom
Conversation
kodinkat
commented
Apr 13, 2026
- fixes: Replace components: user profile #2846
- Replaced traditional input elements with custom web components for app state toggles and language selection, improving UI consistency and accessibility. - Introduced new JavaScript functions to handle multi-select language and people group settings, enhancing user interaction and data management. - Updated enqueue scripts to include necessary dependencies for web components. - Improved error handling in app switch functionality to provide better feedback on failures. - Enhanced SCSS styles for new components to ensure visual consistency across the settings page.
PR Review: #2846 — Replace Components User ProfileMediumShadow DOM introspection for people-group search may silently fail The function attaches focus and keyup search handlers by directly querying the component's internal shadow DOM: const input = el.shadowRoot && el.shadowRoot.querySelector('input[part=input]');
if (\!input) {
return; // silent no-op
}If In the normal load path ( The use of CSS No High IssuesNo logic errors, data-loss paths, authorization bypasses, or broken callers found. Specific items checked and confirmed correct:
The PR looks ready to merge pending acknowledgement of the silent-fail path in the people-group search shadow DOM access. |
Code ReviewMedium1. Partial server update not rolled back on failure
In For languages this is low risk (small, bounded list), but for people groups a user who adds several at once could silently end up with only some of them saved. A simple improvement would be to reload the component value from the server after any failure, rather than reverting to the cached 2.
The fallback path (when Without the handlers, users can still see the initial options (pre-loaded from the PHP SummaryThe PR is a solid conversion from legacy Foundation switches / jQuery typeahead to the DT web-component system, with proper error-reversion on toggle failures and correct escaping throughout. The two issues above are medium-risk edge cases rather than blockers; the PR is close to ready to merge. |