related-ui-components 4.2.4 → 4.2.5

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.
@@ -18,7 +18,8 @@ const DefaultModalUI = ({
18
18
  isVisible,
19
19
  children,
20
20
  options,
21
- onClose
21
+ onClose,
22
+ onDismiss
22
23
  }) => {
23
24
  const insets = useSafeAreaInsets();
24
25
  const [isRendered, setIsRendered] = useState(isVisible);
@@ -42,6 +43,7 @@ const DefaultModalUI = ({
42
43
  opacity.value = withTiming(isVisible ? 1 : 0, animationConfig, finished => {
43
44
  if (finished && !isVisible) {
44
45
  runOnJS(setIsRendered)(false);
46
+ runOnJS(onDismiss)();
45
47
  }
46
48
  });
47
49
  }, [isVisible, animationConfig, opacity]);
@@ -141,6 +143,7 @@ export const UniversalModalProvider = ({
141
143
  content: null,
142
144
  options: {}
143
145
  });
146
+ const dismissCallbackRef = React.useRef(undefined);
144
147
  const showModal = useCallback((content, options) => {
145
148
  setState({
146
149
  isVisible: true,
@@ -150,21 +153,24 @@ export const UniversalModalProvider = ({
150
153
  }
151
154
  });
152
155
  }, []);
153
- const hideModal = useCallback(() => {
156
+ const hideModal = useCallback(options => {
157
+ dismissCallbackRef.current = options?.onDismiss;
154
158
  setState(prev => ({
155
159
  ...prev,
156
160
  isVisible: false
157
161
  }));
158
- // Clear content after animation normally finishes to avoid flicker
159
- setTimeout(() => {
160
- setState(prev => {
161
- // Only clear if still hidden (prevent race condition if immediately reshown)
162
- return !prev.isVisible ? {
163
- ...prev,
164
- content: null
165
- } : prev;
166
- });
167
- }, 350);
162
+ }, []);
163
+ const handleDismiss = useCallback(() => {
164
+ setState(prev => {
165
+ if (prev.isVisible) return prev;
166
+ return {
167
+ ...prev,
168
+ content: null
169
+ };
170
+ });
171
+ const callback = dismissCallbackRef.current;
172
+ dismissCallbackRef.current = undefined;
173
+ callback?.();
168
174
  }, []);
169
175
  const ModalUI = CustomModalComponent || DefaultModalUI;
170
176
  const value = useMemo(() => ({
@@ -177,6 +183,7 @@ export const UniversalModalProvider = ({
177
183
  isVisible: state.isVisible,
178
184
  options: state.options,
179
185
  onClose: hideModal,
186
+ onDismiss: handleDismiss,
180
187
  children: state.content
181
188
  })]
182
189
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","BackHandler","StyleSheet","TouchableOpacity","View","KeyboardAvoidingView","Animated","Easing","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useSafeAreaInsets","jsx","_jsx","jsxs","_jsxs","ModalContext","undefined","DEFAULT_MODAL_HOST","DefaultModalUI","isVisible","children","options","onClose","insets","isRendered","setIsRendered","opacity","closeOnBackdropPress","closeOnBackButton","animationConfig","duration","easing","bezier","position","animateFrom","avoidKeyboard","backdropStyle","containerStyle","closeIconComponent","value","finished","backHandler","addEventListener","remove","backdropAnimatedStyle","closeIconAnimatedStyle","contentAnimatedStyle","transform","push","translateY","scale","justifyContent","paddingBottom","bottom","paddingTop","top","ContentWrapper","style","absoluteFill","styles","overlayWrapper","backdrop","activeOpacity","onPress","closeIconContainer","pointerEvents","hitSlop","left","right","behavior","keyboardVerticalOffset","keyboardView","baseContainer","UniversalModalProvider","portalHostName","CustomModalComponent","state","setState","content","showModal","hideModal","prev","setTimeout","ModalUI","Provider","useModal","context","Error","create","backgroundColor","alignItems","width","zIndex"],"sourceRoot":"..\\..\\..\\src","sources":["contexts/UniversalModalProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useState","BackHandler","StyleSheet","TouchableOpacity","View","KeyboardAvoidingView","Animated","Easing","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useSafeAreaInsets","jsx","_jsx","jsxs","_jsxs","ModalContext","undefined","DEFAULT_MODAL_HOST","DefaultModalUI","isVisible","children","options","onClose","onDismiss","insets","isRendered","setIsRendered","opacity","closeOnBackdropPress","closeOnBackButton","animationConfig","duration","easing","bezier","position","animateFrom","avoidKeyboard","backdropStyle","containerStyle","closeIconComponent","value","finished","backHandler","addEventListener","remove","backdropAnimatedStyle","closeIconAnimatedStyle","contentAnimatedStyle","transform","push","translateY","scale","justifyContent","paddingBottom","bottom","paddingTop","top","ContentWrapper","style","absoluteFill","styles","overlayWrapper","backdrop","activeOpacity","onPress","closeIconContainer","pointerEvents","hitSlop","left","right","behavior","keyboardVerticalOffset","keyboardView","baseContainer","UniversalModalProvider","portalHostName","CustomModalComponent","state","setState","content","dismissCallbackRef","useRef","showModal","hideModal","current","prev","handleDismiss","callback","ModalUI","Provider","useModal","context","Error","create","backgroundColor","alignItems","width","zIndex"],"sourceRoot":"..\\..\\..\\src","sources":["contexts/UniversalModalProvider.tsx"],"mappings":"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","ignoreList":[]}
@@ -20,9 +20,12 @@ export interface ModalOptions {
20
20
  /** Optional component to render as a close icon at the top right or left of the screen */
21
21
  closeIconComponent?: ReactNode;
22
22
  }
23
+ interface HideModalOptions {
24
+ onDismiss?: () => void;
25
+ }
23
26
  interface ModalContextType {
24
27
  showModal: (content: ReactNode, options?: ModalOptions) => void;
25
- hideModal: () => void;
28
+ hideModal: (options?: HideModalOptions) => void;
26
29
  }
27
30
  interface ModalProviderProps {
28
31
  children: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalModalProvider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/UniversalModalProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAMV,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,SAAS,EAIT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAiB,EAMf,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,qCAAqC;IACrC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1C,mDAAmD;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,UAAU,gBAAgB;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAChE,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,SAAS,CAAC;QACpB,OAAO,EAAE,YAAY,CAAC;QACtB,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC,CAAC;CACJ;AAMD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AA8JvD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwD/D,CAAC;AAEF,eAAO,MAAM,QAAQ,wBAMpB,CAAC"}
1
+ {"version":3,"file":"UniversalModalProvider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/UniversalModalProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAMV,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,SAAS,EAIT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAiB,EAMf,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,qCAAqC;IACrC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1C,mDAAmD;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,UAAU,gBAAgB;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAChE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACjD;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,SAAS,CAAC;QACpB,OAAO,EAAE,YAAY,CAAC;QACtB,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC,CAAC;CACJ;AAMD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAgKvD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgE/D,CAAC;AAEF,eAAO,MAAM,QAAQ,wBAMpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "related-ui-components",
3
- "version": "4.2.4",
3
+ "version": "4.2.5",
4
4
  "main": "lib/module/index.js",
5
5
  "scripts": {
6
6
  "start": "expo start",
@@ -47,9 +47,13 @@ export interface ModalOptions {
47
47
  closeIconComponent?: ReactNode;
48
48
  }
49
49
 
50
+ interface HideModalOptions {
51
+ onDismiss?: () => void;
52
+ }
53
+
50
54
  interface ModalContextType {
51
55
  showModal: (content: ReactNode, options?: ModalOptions) => void;
52
- hideModal: () => void;
56
+ hideModal: (options?: HideModalOptions) => void;
53
57
  }
54
58
 
55
59
  interface ModalProviderProps {
@@ -79,7 +83,8 @@ const DefaultModalUI: React.FC<{
79
83
  children: ReactNode;
80
84
  options: ModalOptions;
81
85
  onClose: () => void;
82
- }> = ({ isVisible, children, options, onClose }) => {
86
+ onDismiss: () => void;
87
+ }> = ({ isVisible, children, options, onClose, onDismiss }) => {
83
88
  const insets = useSafeAreaInsets();
84
89
  const [isRendered, setIsRendered] = useState(isVisible);
85
90
  const opacity = useSharedValue(0);
@@ -108,6 +113,7 @@ const DefaultModalUI: React.FC<{
108
113
  (finished) => {
109
114
  if (finished && !isVisible) {
110
115
  runOnJS(setIsRendered)(false);
116
+ runOnJS(onDismiss)();
111
117
  }
112
118
  },
113
119
  );
@@ -244,26 +250,33 @@ export const UniversalModalProvider: React.FC<ModalProviderProps> = ({
244
250
  options: {},
245
251
  });
246
252
 
253
+ const dismissCallbackRef = React.useRef<(() => void) | undefined>(undefined);
254
+
247
255
  const showModal = useCallback(
248
256
  (content: ReactNode, options?: ModalOptions) => {
249
257
  setState({
250
258
  isVisible: true,
251
259
  content,
252
- options: { ...options },
260
+ options: { ...options },
253
261
  });
254
262
  },
255
263
  [],
256
264
  );
257
265
 
258
- const hideModal = useCallback(() => {
266
+ const hideModal = useCallback((options?: HideModalOptions) => {
267
+ dismissCallbackRef.current = options?.onDismiss;
259
268
  setState((prev) => ({ ...prev, isVisible: false }));
260
- // Clear content after animation normally finishes to avoid flicker
261
- setTimeout(() => {
262
- setState((prev) => {
263
- // Only clear if still hidden (prevent race condition if immediately reshown)
264
- return !prev.isVisible ? { ...prev, content: null } : prev;
265
- });
266
- }, 350);
269
+ }, []);
270
+
271
+ const handleDismiss = useCallback(() => {
272
+ setState((prev) => {
273
+ if (prev.isVisible) return prev;
274
+ return { ...prev, content: null };
275
+ });
276
+
277
+ const callback = dismissCallbackRef.current;
278
+ dismissCallbackRef.current = undefined;
279
+ callback?.();
267
280
  }, []);
268
281
 
269
282
  const ModalUI = CustomModalComponent || DefaultModalUI;
@@ -280,6 +293,7 @@ export const UniversalModalProvider: React.FC<ModalProviderProps> = ({
280
293
  isVisible={state.isVisible}
281
294
  options={state.options}
282
295
  onClose={hideModal}
296
+ onDismiss={handleDismiss}
283
297
  >
284
298
  {state.content}
285
299
  </ModalUI>