@admin-layout/client 12.0.16-alpha.64 → 12.0.16-alpha.67

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.
@@ -65,4 +65,5 @@ export declare function settingsLoaderUtil({ request, context, params }: {
65
65
  settings: any;
66
66
  setCookie: string;
67
67
  }>;
68
+ export declare function getDeviceType(userAgent: string): 'mobile' | 'desktop';
68
69
  //# sourceMappingURL=UpdateSettings.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateSettings.server.d.ts","sourceRoot":"","sources":["../../../src/components/UpdateSettings/UpdateSettings.server.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,4CAMzB,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,MAAM;;GAuF7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;;;;CAAA;;;GA+GpE"}
1
+ {"version":3,"file":"UpdateSettings.server.d.ts","sourceRoot":"","sources":["../../../src/components/UpdateSettings/UpdateSettings.server.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,4CAMzB,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,MAAM;;GAuF7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;;;;CAAA;;;GA8GpE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAQrE"}
@@ -52,7 +52,7 @@ async function fetchPageSettingsWithFetch(request, overrideIdentifier) {
52
52
  options,
53
53
  };
54
54
  console.log('🔍 Fetching settings with direct fetch to:', url);
55
- console.log('🔍 Query variables:', JSON.stringify(variables, null, 2));
55
+ // console.log('🔍 Query variables:', JSON.stringify(variables, null, 2));
56
56
  // Forward cookies and headers from the incoming request
57
57
  const headers = {
58
58
  'Content-Type': 'application/json',
@@ -134,13 +134,12 @@ async function fetchPageSettingsWithFetch(request, overrideIdentifier) {
134
134
  async function settingsLoaderUtil({ request, context, params }) {
135
135
  // 1. Detect device type from User-Agent header
136
136
  const userAgent = request.headers.get('User-Agent') || '';
137
- const isMobile = /mobile|android|iphone|ipad|ipod/i.test(userAgent);
138
- const deviceType = isMobile ? 'mobile' : 'desktop';
137
+ const deviceType = getDeviceType(userAgent);
139
138
  // 2. Fetch settings from GraphQL backend with device-specific overrides
140
139
  // Override identifier format: "[desktop]" or "[mobile]"
141
140
  const overrideIdentifier = `[${deviceType}]`;
142
141
  const result = await fetchPageSettingsWithFetch(request, overrideIdentifier);
143
- console.log('ddRESULT=========>', JSON.stringify(result));
142
+ // console.log('ddRESULT=========>', JSON.stringify(result));
144
143
  const pageBackendSettings = result?.data?.pageSettings?.settings
145
144
  ? JSON.parse(JSON.stringify(result?.data?.pageSettings?.settings))
146
145
  : null;
@@ -161,7 +160,7 @@ async function settingsLoaderUtil({ request, context, params }) {
161
160
  console.log('â„šī¸ No request payload (likely a loader call)');
162
161
  requestPayload = {};
163
162
  }
164
- console.log('🔍 DEBUG - pageBackendSettings:', JSON.stringify(pageBackendSettings, null, 2));
163
+ // console.log('🔍 DEBUG - pageBackendSettings:', JSON.stringify(pageBackendSettings, null, 2));
165
164
  // 4. Parse environment-based layout settings (fallback/default values)
166
165
  const envLayoutSettings = parseEnvLayoutSettings();
167
166
  // 5. Parse and validate existing cookie settings
@@ -217,4 +216,11 @@ async function settingsLoaderUtil({ request, context, params }) {
217
216
  const cookie = await settingsCookie.serialize(cookieUpdatedSettings);
218
217
  console.log('✅ FULL_SETTINGS prepared:', Object.keys(fullSettings).length, 'keys');
219
218
  return { settings: fullSettings, setCookie: cookie };
220
- }export{fetchPageSettingsWithFetch,settingsCookie,settingsLoaderUtil};//# sourceMappingURL=UpdateSettings.server.js.map
219
+ }
220
+ function getDeviceType(userAgent) {
221
+ if (!userAgent)
222
+ return 'desktop';
223
+ // Enhanced regex that catches more mobile devices
224
+ const mobileRegex = /mobile|android|iphone|ipad|ipod|blackberry|windows phone|opera mini|iemobile|webos|palm|playbook|kindle|silk|psp|symbian|nokia|nexus|htc|samsung|sony|ericsson|lg|motorola|sgh|sec|sharp|vodafone|benq|sanyo|kyocera|nec|alcatel|denso|jarviss|docomo|emacs|minimo|maemo|blazer|dolfin|dolphin|netfront|openwave|teleca|elaine|bolt|iris|maui|packet|pie|portalmmm|w3c|wig|zte|audiovox|ericsson|kyocera|panasonic|qwerty|sendo|sharp|sie-|sonyericsson|t-mobile|up\.browser|up\.link|verizon|vodafone|wap|winwap|xda|zte/i;
225
+ return mobileRegex.test(userAgent) ? 'mobile' : 'desktop';
226
+ }export{fetchPageSettingsWithFetch,getDeviceType,settingsCookie,settingsLoaderUtil};//# sourceMappingURL=UpdateSettings.server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateSettings.server.js","sources":["../../../src/components/UpdateSettings/UpdateSettings.server.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAyCG,IAAA,IAAA,EAAA,GAAA;AACH,IAAA,MAAA,EAAA,MAAA,CAAA,MAAsB,GAAA,MAAA,CAAA,UAAA,GAAA,SAA2B;;AAuFhD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG,QAAA,WAAA,EAAA,QAAA;AACH,QAAA,OAAA;;;;AAAqE;;;AA+GpE,QAAA,eAAA,EAAA,qCAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"UpdateSettings.server.js","sources":["../../../src/components/UpdateSettings/UpdateSettings.server.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAyCG,IAAA,IAAA,EAAA,GAAA;AACH,IAAA,MAAA,EAAA,MAAA,CAAA,MAAsB,GAAA,MAAA,CAAA,UAAA,GAAA,SAA2B;;AAuFhD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG,QAAA,WAAA,EAAA,QAAA;AACH,QAAA,OAAA;;;;AAAqE;;;AA8GpE,QAAA,eAAA,EAAA,qCAAA;AAED,QAAA,MAAA,EAAA,UAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,4 +3,5 @@ export declare const useLayoutSettings: () => {
3
3
  setSettings: (config: any) => Promise<any>;
4
4
  getSettings: () => Promise<any>;
5
5
  };
6
+ export declare function getClientDeviceType(): 'mobile' | 'desktop';
6
7
  //# sourceMappingURL=useLayoutSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLayoutSettings.d.ts","sourceRoot":"","sources":["../../src/hooks/useLayoutSettings.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,iBAAiB;;0BAgDP,GAAG;;CAmEzB,CAAC"}
1
+ {"version":3,"file":"useLayoutSettings.d.ts","sourceRoot":"","sources":["../../src/hooks/useLayoutSettings.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,iBAAiB;;0BAgDP,GAAG;;CAiEzB,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,QAAQ,GAAG,SAAS,CAY1D"}
@@ -45,9 +45,7 @@ const useLayoutSettings = () => {
45
45
  }
46
46
  }, []);
47
47
  const setSettings = useCallback(async (config) => {
48
- // Settings are now flat (no uilayout wrapper)
49
- const flatConfig = config;
50
- const { colorWeak, contentWidth } = flatConfig;
48
+ const { colorWeak, contentWidth } = config;
51
49
  try {
52
50
  // Handle UI updates for special settings
53
51
  if (settings.contentWidth !== contentWidth) {
@@ -56,18 +54,20 @@ const useLayoutSettings = () => {
56
54
  }
57
55
  }
58
56
  updateColorWeak(!!colorWeak);
59
- const cleanDiffSettings = compareAndSaveSettingsDifferences(flatConfig, settings);
57
+ const cleanDiffSettings = compareAndSaveSettingsDifferences(config, settings);
58
+ if (Object.keys(cleanDiffSettings).length === 0)
59
+ return;
60
60
  const response = await fetch('/resources/settings', {
61
61
  method: 'POST',
62
62
  headers: {
63
63
  'Content-Type': 'application/json',
64
64
  orgName: orgNameFromParams || orgNameFromUrl || '',
65
65
  },
66
- body: JSON.stringify({ config: cleanDiffSettings }),
66
+ body: JSON.stringify({ config: cleanDiffSettings, deviceType: getClientDeviceType() }),
67
67
  });
68
68
  // Check content type before parsing
69
69
  const contentType = response.headers.get('content-type');
70
- console.log('Response content-type:', contentType);
70
+ // console.log('Response content-type:', contentType);
71
71
  if (!response.ok) {
72
72
  const errorText = await response.text();
73
73
  console.error('Server error response:', errorText.substring(0, 500));
@@ -84,7 +84,7 @@ const useLayoutSettings = () => {
84
84
  const result = await response.json();
85
85
  const pageDefaultSettings = result;
86
86
  // Merge the full config with default settings before updating the store
87
- const mergedSettings = merge({}, pageDefaultSettings, flatConfig);
87
+ const mergedSettings = merge({}, pageDefaultSettings, config);
88
88
  dispatch({
89
89
  type: CHANGE_SETTINGS_ACTION,
90
90
  payload: mergedSettings,
@@ -96,4 +96,14 @@ const useLayoutSettings = () => {
96
96
  }
97
97
  }, [dispatch, settings]);
98
98
  return { settings, setSettings, getSettings };
99
- };export{useLayoutSettings};//# sourceMappingURL=useLayoutSettings.js.map
99
+ };
100
+ function getClientDeviceType() {
101
+ if (typeof window === 'undefined') {
102
+ return 'desktop'; // SSR fallback
103
+ }
104
+ const userAgent = window.navigator.userAgent;
105
+ const isMobile = /mobile|android|iphone|ipad|ipod|webos|opera mini|iemobile|windows phone/i.test(userAgent);
106
+ // Also check viewport width as fallback
107
+ const isSmallViewport = window.matchMedia('(max-width: 768px)').matches;
108
+ return isMobile || isSmallViewport ? 'mobile' : 'desktop';
109
+ }export{getClientDeviceType,useLayoutSettings};//# sourceMappingURL=useLayoutSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLayoutSettings.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useLayoutSettings.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- export{SearchBarBehavior}from'./interfaces/settings.js';export{APPLICATION_ERROR_SLOT_FILL,CHANGE_LANGUAGE,CHANGE_SETTINGS_ACTION}from'./constants/constants.js';export{BACKEND_ERROR,CLEAR_APPLICATION_ERRORS,DISMISS_APPLICATION_ERROR,LOG_APPLICATION_ERROR,RESTORE_APPLICATION_ERRORS}from'./constants/error.js';export{HEADER_SEARCHBAR_FILL,HEADER_SEARCH_BUTTON_FILL,RIGHT_CONTENT_FILL,SCROLL_END_FILL}from'./constants/layout.js';export{languages}from'./constants/languages.js';export{dismissApplicationError,restoreApplicationError,setApplicationError}from'./redux/actions/error-actions.js';export{applicationErrors,initialErrorsState}from'./redux/reducers/error.js';export{settingsReducer}from'./redux/reducers/settings.js';export{store}from'./redux/store.js';export{useAppDispatch,useAppSelector}from'./redux/hooks.js';export{getMenuSeparation}from'./utils/seperatedMenus.js';export{useComponentSize,useIsomorphicLayoutEffect}from'./utils/componentSize.js';export{matchParentRoute}from'./utils/parentRoute.js';export{addProLayoutParentKeys,filterRoutesWithLocale,menuDataRender,removeUnnecessaryProperties,setLocale,transformData}from'./utils/menuUtils.js';export{getMatchMenuKeys}from'./utils/matchMenuKeys.js';export{generateMenuPath}from'./utils/generateMenuLink.js';export{compareAndSaveSettingsDifferences}from'./utils/settingsDifference.js';export{ApplicationErrorHandlerCommon}from'./components/ApplicationErrorHandlerCommon.js';export{ErrorBoundaryCommon}from'./components/ErrorBoundaryCommon.js';export{ApplicationErrorFillWrapper}from'./components/ApplicationErrorFillWrapper.js';export{LayoutCookieProvider}from'./components/LayoutCookieProvider.js';export{ErrorLink,errorReduxLink}from'./graphql/link/error-link.js';export{systemFont}from'./themes/systemFont/index.js';export{borderRadius,colors,lightLayoutTheme,lightNavigationBarTheme,lightTabBarTheme,shadows,sizes,spacings,textVariants}from'./themes/templates/lightLayoutTheme.js';export{createLayoutTheme}from'./themes/templates/createLayoutTheme.js';export{darkColors,darkLayoutTheme,darkNavigationBarTheme,darkTabBarTheme}from'./themes/templates/darkLayoutTheme.js';export{config}from'./config/env-config.js';export{AMENITIES,DEFAULT_HEADER,DEFAULT_LAYOUT,SEARCH_TYPES,SHARED_VIEW_CONFIG}from'./config/defaultSettings.js';export{useLayoutSettings}from'./hooks/useLayoutSettings.js';export{usePermissionAutoFetch,useSetting,useSettingsLoader}from'@adminide-stack/platform-client';export{ClientOnly}from'./hooks/Client-only.js';export{blue}from'./colors/presets/blue.js';export{brinkPink}from'./colors/presets/brinkPink.js';export{cyan}from'./colors/presets/cyan.js';export{green}from'./colors/presets/green.js';export{lime}from'./colors/presets/lime.js';export{orange}from'./colors/presets/orange.js';export{pink}from'./colors/presets/pink.js';export{purple}from'./colors/presets/purple.js';export{red}from'./colors/presets/red.js';export{skyBlue}from'./colors/presets/skyBlue.js';export{turquoise}from'./colors/presets/turquoise.js';export{yellow}from'./colors/presets/yellow.js';export{white}from'./colors/presets/white.js';export{black}from'./colors/presets/black.js';export{colorList,getThemeColors}from'./colors/colorsList.js';//# sourceMappingURL=index.js.map
1
+ export{SearchBarBehavior}from'./interfaces/settings.js';export{APPLICATION_ERROR_SLOT_FILL,CHANGE_LANGUAGE,CHANGE_SETTINGS_ACTION}from'./constants/constants.js';export{BACKEND_ERROR,CLEAR_APPLICATION_ERRORS,DISMISS_APPLICATION_ERROR,LOG_APPLICATION_ERROR,RESTORE_APPLICATION_ERRORS}from'./constants/error.js';export{HEADER_SEARCHBAR_FILL,HEADER_SEARCH_BUTTON_FILL,RIGHT_CONTENT_FILL,SCROLL_END_FILL}from'./constants/layout.js';export{languages}from'./constants/languages.js';export{dismissApplicationError,restoreApplicationError,setApplicationError}from'./redux/actions/error-actions.js';export{applicationErrors,initialErrorsState}from'./redux/reducers/error.js';export{settingsReducer}from'./redux/reducers/settings.js';export{store}from'./redux/store.js';export{useAppDispatch,useAppSelector}from'./redux/hooks.js';export{getMenuSeparation}from'./utils/seperatedMenus.js';export{useComponentSize,useIsomorphicLayoutEffect}from'./utils/componentSize.js';export{matchParentRoute}from'./utils/parentRoute.js';export{addProLayoutParentKeys,filterRoutesWithLocale,menuDataRender,removeUnnecessaryProperties,setLocale,transformData}from'./utils/menuUtils.js';export{getMatchMenuKeys}from'./utils/matchMenuKeys.js';export{generateMenuPath}from'./utils/generateMenuLink.js';export{compareAndSaveSettingsDifferences}from'./utils/settingsDifference.js';export{ApplicationErrorHandlerCommon}from'./components/ApplicationErrorHandlerCommon.js';export{ErrorBoundaryCommon}from'./components/ErrorBoundaryCommon.js';export{ApplicationErrorFillWrapper}from'./components/ApplicationErrorFillWrapper.js';export{LayoutCookieProvider}from'./components/LayoutCookieProvider.js';export{ErrorLink,errorReduxLink}from'./graphql/link/error-link.js';export{systemFont}from'./themes/systemFont/index.js';export{borderRadius,colors,lightLayoutTheme,lightNavigationBarTheme,lightTabBarTheme,shadows,sizes,spacings,textVariants}from'./themes/templates/lightLayoutTheme.js';export{createLayoutTheme}from'./themes/templates/createLayoutTheme.js';export{darkColors,darkLayoutTheme,darkNavigationBarTheme,darkTabBarTheme}from'./themes/templates/darkLayoutTheme.js';export{config}from'./config/env-config.js';export{AMENITIES,DEFAULT_HEADER,DEFAULT_LAYOUT,SEARCH_TYPES,SHARED_VIEW_CONFIG}from'./config/defaultSettings.js';export{getClientDeviceType,useLayoutSettings}from'./hooks/useLayoutSettings.js';export{usePermissionAutoFetch,useSetting,useSettingsLoader}from'@adminide-stack/platform-client';export{ClientOnly}from'./hooks/Client-only.js';export{blue}from'./colors/presets/blue.js';export{brinkPink}from'./colors/presets/brinkPink.js';export{cyan}from'./colors/presets/cyan.js';export{green}from'./colors/presets/green.js';export{lime}from'./colors/presets/lime.js';export{orange}from'./colors/presets/orange.js';export{pink}from'./colors/presets/pink.js';export{purple}from'./colors/presets/purple.js';export{red}from'./colors/presets/red.js';export{skyBlue}from'./colors/presets/skyBlue.js';export{turquoise}from'./colors/presets/turquoise.js';export{yellow}from'./colors/presets/yellow.js';export{white}from'./colors/presets/white.js';export{black}from'./colors/presets/black.js';export{colorList,getThemeColors}from'./colors/colorsList.js';//# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@admin-layout/client",
3
- "version": "12.0.16-alpha.64",
3
+ "version": "12.0.16-alpha.67",
4
4
  "description": "Sample client for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -44,5 +44,5 @@
44
44
  "typescript": {
45
45
  "definition": "lib/index.d.ts"
46
46
  },
47
- "gitHead": "506bff5baaa896802376e745517c2e8c295a9db8"
47
+ "gitHead": "d8c9237b79c0bb4b1457cf446ab77dd5b43d8e05"
48
48
  }