@controleonline/ui-common 1.2.94 → 1.2.96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,3 +4,11 @@ Soft appearance is opt-in for HomePage only. Existing menu routes/parameters, pe
4
4
 
5
5
  Source: https://github.com/ControleOnline/app-community/issues/1056
6
6
  Local evidence: 40 homepage tests and 34 runtime footer/zoom tests passed. No production authorization.
7
+
8
+ ## Web login translation bootstrap
9
+
10
+ Keep the navigation tree mounted while translations initialize. Hide the shell and disable pointer/accessibility interaction until the existing translation readiness contract succeeds. Unmounting navigation during login resets its route and repeatedly mounts/registers the bottom bar, causing React maximum update depth. No route, permission, translation source, theme or zoom changes. Native behavior is unchanged.
11
+
12
+ Regression evidence: app-community homepage bootstrapNavigation.test.js reproduced maximum update depth before the fix, then passed after it. 44 tests across 9 homepage suites passed. Runtime Dev reproduced the unfixed bug; new runtime verification is required after consuming ui-common 1.2.96.
13
+
14
+ Release 1.2.96 uses the task-only c91510d source plus version metadata. The integration merge into dev preserves independent team work, but those changes are excluded from this homepage package. Publication uses the existing tag-triggered trusted publishing workflow.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@controleonline/ui-common",
3
- "version": "1.2.94",
3
+ "version": "1.2.96",
4
4
  "author": "ControleOnline",
5
5
  "description": "ControleOnline Common Quasar UI Component",
6
6
  "license": "MIT",
@@ -12,6 +12,9 @@ const styles = StyleSheet.create({
12
12
  shell: {
13
13
  flex: 1,
14
14
  },
15
+ translationPending: {
16
+ opacity: 0,
17
+ },
15
18
  content: {
16
19
  flex: 1,
17
20
  minHeight: 0,
@@ -395,15 +395,19 @@ export const DefaultProvider = ({
395
395
 
396
396
  useWebThemePalette({resolveDomainThemeColors, baseThemeColors, mainCompany, resolveThemePalette, runtimeColors, applyPaletteToRuntimeColors, applyThemeCssVariables, actions, currentCompany, isShopClientApp});
397
397
 
398
- if (requiresTranslateBootstrap && !isTranslateBootstrapReady) {
399
- return <View style={providerStyles.loadingContainer} />;
400
- }
398
+ const translationPending = requiresTranslateBootstrap && !isTranslateBootstrapReady;
401
399
 
402
400
  return (
403
401
  <ThemeContext.Provider value={themeContextValue}>
404
402
  <View
403
+ pointerEvents={translationPending ? 'none' : 'auto'}
404
+ accessibilityElementsHidden={translationPending}
405
+ importantForAccessibility={translationPending ? 'no-hide-descendants' : 'auto'}
405
406
  style={[
406
407
  providerStyles.shell,
408
+ // Keep navigation mounted while translations load. Unmounting it
409
+ // resets the login route and repeatedly registers the bottom bar.
410
+ translationPending && providerStyles.translationPending,
407
411
  {
408
412
  backgroundColor: colors?.background || runtimeColors.background,
409
413
  },