@0610studio/zs-ui 0.0.7 → 0.0.10

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.
@@ -33,6 +33,8 @@ export interface ShowBottomSheetProps {
33
33
  contentsGestureEnable?: boolean;
34
34
  maxHeight?: number;
35
35
  isScrollView?: boolean;
36
+ showsVerticalScrollIndicator?: boolean;
37
+ headerComponent?: React.ReactNode;
36
38
  }
37
39
  export interface CustomSnackbarProps {
38
40
  snackType: SnackType;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"AA4CC,CAAC;AAKD,CAAC;AAMD,CAAC;AAKD,CAAC;AAcD,CAAC;AAKD,CAAC;AAOD,CAAC;AAWD,CAAC;AAID,CAAC","sourcesContent":["import { ReactNode } from \"react\";\nimport { TextProps, TouchableOpacityProps } from \"react-native\";\n\nexport interface NotifyProps {\n alertVisible: boolean;\n setAlertVisible: (visible: boolean) => void;\n // ---\n snackItemStack: SnackItem[];\n hideSnackBar: (index: number) => void;\n // ---\n bottomSheetVisible: boolean;\n setBottomSheetVisible: (visible: boolean) => void;\n // ---\n loaderVisible: boolean;\n // ---\n popOverVisible: boolean;\n setPopOverVisible: (visible: boolean) => void;\n // ---\n showAlert: (props: ShowAlertProps) => void;\n showSnackBar: (props: ShowSnackBarProps) => void;\n showBottomSheet: (props: ShowBottomSheetProps) => void;\n showLoader: () => void;\n showPopOverMenu: (props: PopOverMenuProps) => void;\n // ---\n hideNotify: (option: HideOption) => void;\n}\n\nexport interface PopOverMenuProps {\n px: number;\n py: number;\n component: React.ReactNode;\n}\n\nexport interface ShowBottomSheetProps {\n backgroundColor?: string;\n isBottomRadius?: boolean;\n marginHorizontal?: number;\n isHandleVisible?: boolean;\n marginBottom?: number;\n padding?: number;\n component: React.ReactNode;\n contentsGestureEnable?: boolean;\n maxHeight?: number;\n isScrollView?: boolean;\n};\n\nexport interface CustomSnackbarProps {\n snackType: SnackType;\n snackMessage: string;\n};\n\nexport interface NotifyProviderProps {\n children: ReactNode;\n customSnackbar?: (props: CustomSnackbarProps) => React.ReactNode;\n loaderComponent?: () => React.ReactNode;\n};\n\nexport interface AlertAction {\n label: string;\n onPress?: () => void;\n};\n\nexport interface ShowAlertProps {\n title: string;\n informative: string;\n actions?: AlertActions;\n isBackgroundTouchClose?: boolean;\n titleStyle?: TextProps['style'];\n informativeStyle?: TextProps['style'];\n secondaryButtonStyle?: TouchableOpacityProps['style'];\n primaryButtonStyle?: TouchableOpacityProps['style'];\n secondaryButtonTextStyle?: TextProps['style'];\n primaryButtonTextStyle?: TextProps['style'];\n singleButtonTextStyle?: TextProps['style'];\n};\n\nexport interface AlertActions {\n primary: AlertAction;\n secondary?: AlertAction;\n};\n\nexport interface SnackItem {\n message: string;\n type: SnackType;\n index: number;\n snackbarDuration?: number;\n};\n\nexport type SnackType = 'success' | 'error' | '';\n\nexport type HideOption = 'all' | 'snack' | 'alert' | 'bottomSheet' | 'loader' | 'popOver';\n\nexport interface ShowSnackBarProps {\n message: string;\n type?: SnackType;\n index?: number;\n snackbarDuration?: number;\n};\n\nexport interface BottomSheetRef {\n handleVisible: (isOpen: boolean) => void;\n};"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"AA8CC,CAAC;AAKD,CAAC;AAMD,CAAC;AAKD,CAAC;AAcD,CAAC;AAKD,CAAC;AAOD,CAAC;AAWD,CAAC;AAID,CAAC","sourcesContent":["import { ReactNode } from \"react\";\nimport { TextProps, TouchableOpacityProps } from \"react-native\";\n\nexport interface NotifyProps {\n alertVisible: boolean;\n setAlertVisible: (visible: boolean) => void;\n // ---\n snackItemStack: SnackItem[];\n hideSnackBar: (index: number) => void;\n // ---\n bottomSheetVisible: boolean;\n setBottomSheetVisible: (visible: boolean) => void;\n // ---\n loaderVisible: boolean;\n // ---\n popOverVisible: boolean;\n setPopOverVisible: (visible: boolean) => void;\n // ---\n showAlert: (props: ShowAlertProps) => void;\n showSnackBar: (props: ShowSnackBarProps) => void;\n showBottomSheet: (props: ShowBottomSheetProps) => void;\n showLoader: () => void;\n showPopOverMenu: (props: PopOverMenuProps) => void;\n // ---\n hideNotify: (option: HideOption) => void;\n}\n\nexport interface PopOverMenuProps {\n px: number;\n py: number;\n component: React.ReactNode;\n}\n\nexport interface ShowBottomSheetProps {\n backgroundColor?: string;\n isBottomRadius?: boolean;\n marginHorizontal?: number;\n isHandleVisible?: boolean;\n marginBottom?: number;\n padding?: number;\n component: React.ReactNode;\n contentsGestureEnable?: boolean;\n maxHeight?: number;\n isScrollView?: boolean;\n showsVerticalScrollIndicator?: boolean;\n headerComponent?: React.ReactNode;\n};\n\nexport interface CustomSnackbarProps {\n snackType: SnackType;\n snackMessage: string;\n};\n\nexport interface NotifyProviderProps {\n children: ReactNode;\n customSnackbar?: (props: CustomSnackbarProps) => React.ReactNode;\n loaderComponent?: () => React.ReactNode;\n};\n\nexport interface AlertAction {\n label: string;\n onPress?: () => void;\n};\n\nexport interface ShowAlertProps {\n title: string;\n informative: string;\n actions?: AlertActions;\n isBackgroundTouchClose?: boolean;\n titleStyle?: TextProps['style'];\n informativeStyle?: TextProps['style'];\n secondaryButtonStyle?: TouchableOpacityProps['style'];\n primaryButtonStyle?: TouchableOpacityProps['style'];\n secondaryButtonTextStyle?: TextProps['style'];\n primaryButtonTextStyle?: TextProps['style'];\n singleButtonTextStyle?: TextProps['style'];\n};\n\nexport interface AlertActions {\n primary: AlertAction;\n secondary?: AlertAction;\n};\n\nexport interface SnackItem {\n message: string;\n type: SnackType;\n index: number;\n snackbarDuration?: number;\n};\n\nexport type SnackType = 'success' | 'error' | '';\n\nexport type HideOption = 'all' | 'snack' | 'alert' | 'bottomSheet' | 'loader' | 'popOver';\n\nexport interface ShowSnackBarProps {\n message: string;\n type?: SnackType;\n index?: number;\n snackbarDuration?: number;\n};\n\nexport interface BottomSheetRef {\n handleVisible: (isOpen: boolean) => void;\n};"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useNotifyProvider.d.ts","sourceRoot":"","sources":["../../src/model/useNotifyProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA4C,mBAAmB,EAAwF,MAAM,SAAS,CAAC;AAS9K,wBAAgB,cAAc,CAAC,EAC3B,cAAc,EACd,eAAe,EACf,QAAQ,EACX,EAAE,mBAAmB,+BA0OrB"}
1
+ {"version":3,"file":"useNotifyProvider.d.ts","sourceRoot":"","sources":["../../src/model/useNotifyProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA4C,mBAAmB,EAAwF,MAAM,SAAS,CAAC;AAS9K,wBAAgB,cAAc,CAAC,EAC3B,cAAc,EACd,eAAe,EACf,QAAQ,EACX,EAAE,mBAAmB,+BAkPrB"}
@@ -35,6 +35,8 @@ export function NotifyProvider({ customSnackbar, loaderComponent, children }) {
35
35
  const [isBottomRadius, setIsBottomRadius] = useState(true);
36
36
  const [handleVisible, setHandleVisible] = useState(true);
37
37
  const [marginBottomBS, setMarginBottomBs] = useState(undefined);
38
+ const [showsVerticalScrollIndicator, setShowsVerticalScrollIndicator] = useState(false);
39
+ const [headerComponent, setHeaderComponent] = useState(undefined);
38
40
  const bottomSheetRef = useRef(null);
39
41
  // Loading
40
42
  const [loaderVisible, setLoaderVisible] = useState(false);
@@ -60,13 +62,15 @@ export function NotifyProvider({ customSnackbar, loaderComponent, children }) {
60
62
  setSingleButtonTextStyle(singleButtonTextStyle);
61
63
  setFontFamily(fontFamily);
62
64
  };
63
- const showBottomSheet = ({ isHandleVisible = true, component, contentsGestureEnable = true, marginHorizontal, padding, marginBottom, backgroundColor, isBottomRadius = true, maxHeight, isScrollView = true }) => {
65
+ const showBottomSheet = ({ isHandleVisible = true, component, contentsGestureEnable = true, marginHorizontal, padding, marginBottom, backgroundColor, isBottomRadius = true, maxHeight, isScrollView = true, showsVerticalScrollIndicator = false, headerComponent = undefined }) => {
64
66
  Keyboard.dismiss();
65
67
  padding && setBottomSheetPadding(padding);
66
68
  marginBottom && setMarginBottomBs(marginBottom);
67
69
  marginHorizontal && setBottomSheetMarginX(marginHorizontal);
68
70
  backgroundColor && setBottomSheetBackgroundColor(backgroundColor);
69
71
  maxHeight && setBottomSheetMaxHeight(maxHeight);
72
+ setShowsVerticalScrollIndicator(showsVerticalScrollIndicator);
73
+ setHeaderComponent(headerComponent);
70
74
  setContentsGestureEnable(contentsGestureEnable);
71
75
  setHandleVisible(isHandleVisible);
72
76
  setBottomSheetScrollView(isScrollView);
@@ -151,7 +155,7 @@ export function NotifyProvider({ customSnackbar, loaderComponent, children }) {
151
155
  }}>
152
156
  {children}
153
157
 
154
- <BottomSheetNotify ref={bottomSheetRef} bottomSheetComponent={bottomSheetComponent} contentsGestureEnable={contentsGestureEnable} bottomSheetPadding={bottomSheetPadding} marginBottomBS={marginBottomBS} isHandleVisible={handleVisible} bottomSheetMarginX={bottomSheetMarginX} isBottomRadius={isBottomRadius} bottomSheetBackgroundColor={bottomSheetBackgroundColor} maxHeight={bottomSheetMaxHeight} isScrollView={bottomSheetScrollView}/>
158
+ <BottomSheetNotify ref={bottomSheetRef} bottomSheetComponent={bottomSheetComponent} contentsGestureEnable={contentsGestureEnable} bottomSheetPadding={bottomSheetPadding} marginBottomBS={marginBottomBS} isHandleVisible={handleVisible} bottomSheetMarginX={bottomSheetMarginX} isBottomRadius={isBottomRadius} bottomSheetBackgroundColor={bottomSheetBackgroundColor} maxHeight={bottomSheetMaxHeight} isScrollView={bottomSheetScrollView} showsVerticalScrollIndicator={showsVerticalScrollIndicator} headerComponent={headerComponent}/>
155
159
 
156
160
  <PopOverMenu px={popOverLocation?.px} py={popOverLocation?.py} component={popOverComponent}/>
157
161
 
@@ -1 +1 @@
1
- {"version":3,"file":"useNotifyProvider.js","sourceRoot":"","sources":["../../src/model/useNotifyProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { Dimensions, Keyboard, TextProps, TouchableOpacityProps } from 'react-native';\nimport NotifyContext from './useNotify';\nimport { AlertActions, BottomSheetRef, HideOption, NotifyProviderProps, PopOverMenuProps, ShowAlertProps, ShowBottomSheetProps, ShowSnackBarProps, SnackItem } from './types';\nimport AlertNotify from '../notify/AlertNotify';\nimport SnackbarNotify from '../notify/SnackbarNotify';\nimport BottomSheetNotify from '../notify/BottomSheetNotify';\nimport LoadingNotify from '../notify/LoadingNotify';\nimport PopOverMenu from '../notify/PopOver/PopOverMenu';\n\nconst BS_MAX_HEIGHT = Dimensions.get('window').height - 120;\n\nexport function NotifyProvider({\n customSnackbar,\n loaderComponent,\n children\n}: NotifyProviderProps) {\n // Alert\n const [title, setTitle] = useState<string>('');\n const [informative, setInformative] = useState<string>('');\n const [alertVisible, setAlertVisible] = useState<boolean>(false);\n const [actions, setActions] = useState<AlertActions>();\n const [isBackgroundTouchClose, setIsBackgroundTouchClose] = useState<boolean>(true);\n const [titleStyle, setTitleStyle] = useState<TextProps['style']>();\n const [informativeStyle, setInformativeStyle] = useState<TextProps['style']>();\n const [secondaryButtonStyle, setSecondaryButtonStyle] = useState<TouchableOpacityProps['style']>();\n const [primaryButtonStyle, setPrimaryButtonStyle] = useState<TouchableOpacityProps['style']>();\n const [secondaryButtonTextStyle, setSecondaryButtonTextStyle] = useState<TextProps['style']>();\n const [primaryButtonTextStyle, setPrimaryButtonTextStyle] = useState<TextProps['style']>();\n const [singleButtonTextStyle, setSingleButtonTextStyle] = useState<TextProps['style']>();\n\n // Snackbar\n const [snackItemStack, setSnackItemStack] = useState<SnackItem[]>([]);\n\n // BottomSheet\n const [contentsGestureEnable, setContentsGestureEnable] = useState<boolean>(false);\n const [bottomSheetVisible, setBottomSheetVisible] = useState<boolean>(false);\n const [bottomSheetBackgroundColor, setBottomSheetBackgroundColor] = useState<string>();\n const [bottomSheetComponent, setBottomSheetComponent] = useState<React.ReactNode>(false);\n const [bottomSheetPadding, setBottomSheetPadding] = useState<number | undefined>(undefined);\n const [bottomSheetMarginX, setBottomSheetMarginX] = useState<number | undefined>(undefined);\n const [bottomSheetMaxHeight, setBottomSheetMaxHeight] = useState<number>(BS_MAX_HEIGHT);\n const [bottomSheetScrollView, setBottomSheetScrollView] = useState<boolean>(true);\n const [isBottomRadius, setIsBottomRadius] = useState<boolean>(true);\n const [handleVisible, setHandleVisible] = useState<boolean>(true);\n const [marginBottomBS, setMarginBottomBs] = useState<number | undefined>(undefined);\n const bottomSheetRef = useRef<BottomSheetRef | null>(null);\n\n // Loading\n const [loaderVisible, setLoaderVisible] = useState<boolean>(false);\n\n // PopOver\n const [popOverVisible, setPopOverVisible] = useState<boolean>(false);\n const [popOverLocation, setPopOverLocation] = useState<{ px: PopOverMenuProps['px'], py: PopOverMenuProps['py'] }>({ px: 0, py: 0 });\n const [popOverComponent, setPopOverComponent] = useState<React.ReactNode>(false);\n\n // ---\n const [fontFamily, setFontFamily] = useState<string | undefined | { title?: string; info?: string; label?: string; }>(undefined);\n\n\n const showAlert = ({\n title,\n informative,\n actions,\n isBackgroundTouchClose = true,\n titleStyle,\n informativeStyle,\n secondaryButtonStyle,\n primaryButtonStyle,\n secondaryButtonTextStyle,\n primaryButtonTextStyle,\n singleButtonTextStyle,\n }: ShowAlertProps) => {\n Keyboard.dismiss();\n setTitle(title);\n setInformative(informative);\n setActions(actions || {} as AlertActions);\n setIsBackgroundTouchClose(isBackgroundTouchClose);\n setAlertVisible(true);\n\n setTitleStyle(titleStyle);\n setInformativeStyle(informativeStyle);\n setSecondaryButtonStyle(secondaryButtonStyle);\n setPrimaryButtonStyle(primaryButtonStyle);\n setSecondaryButtonTextStyle(secondaryButtonTextStyle);\n setPrimaryButtonTextStyle(primaryButtonTextStyle);\n setSingleButtonTextStyle(singleButtonTextStyle);\n\n setFontFamily(fontFamily);\n };\n\n const showBottomSheet = ({\n isHandleVisible = true,\n component,\n contentsGestureEnable = true,\n marginHorizontal,\n padding,\n marginBottom,\n backgroundColor,\n isBottomRadius = true,\n maxHeight,\n isScrollView = true\n }: ShowBottomSheetProps) => {\n Keyboard.dismiss();\n padding && setBottomSheetPadding(padding);\n marginBottom && setMarginBottomBs(marginBottom);\n marginHorizontal && setBottomSheetMarginX(marginHorizontal);\n backgroundColor && setBottomSheetBackgroundColor(backgroundColor);\n maxHeight && setBottomSheetMaxHeight(maxHeight);\n setContentsGestureEnable(contentsGestureEnable);\n setHandleVisible(isHandleVisible);\n setBottomSheetScrollView(isScrollView);\n setIsBottomRadius(isBottomRadius);\n setBottomSheetComponent(component);\n bottomSheetRef.current?.handleVisible(true);\n };\n\n const showLoader = () => {\n setLoaderVisible(true);\n };\n\n const showPopOverMenu = ({\n px,\n py,\n component\n }: PopOverMenuProps) => {\n setPopOverLocation({ px, py });\n setPopOverComponent(component);\n setPopOverVisible(true);\n }\n\n const showSnackBar = ({\n message,\n type = 'success',\n index = Date.now(),\n snackbarDuration = 3000\n }: ShowSnackBarProps) => {\n // TODO: 스택 쌓고싶은데 삭제될 때 참조를 잃어서 삭제가 안되는 문제가 있음.\n setSnackItemStack((prev) => {\n if (prev.length === 0) {\n return [...prev, { message, type, index: index, snackbarDuration: snackbarDuration }];\n } else {\n return prev;\n };\n });\n };\n\n const hideSnackBar = (index: number) => {\n setSnackItemStack((prev) => prev.filter((item) => item.index !== index));\n };\n\n const hideNotify = useCallback((option: HideOption) => {\n switch (option) {\n case 'alert':\n setAlertVisible(false);\n break;\n case 'snack':\n setSnackItemStack([]);\n break;\n case 'bottomSheet':\n bottomSheetRef.current?.handleVisible(false);\n break;\n case 'loader':\n setLoaderVisible(false);\n break;\n case 'popOver':\n setPopOverVisible(false);\n break;\n case 'all':\n setAlertVisible(false);\n setSnackItemStack([]);\n setLoaderVisible(false);\n setPopOverVisible(false);\n bottomSheetRef.current?.handleVisible(false);\n break;\n default:\n break;\n };\n }, []);\n\n\n return (\n <NotifyContext.Provider value={{\n alertVisible,\n setAlertVisible,\n // ---\n snackItemStack,\n hideSnackBar,\n // ---\n bottomSheetVisible,\n setBottomSheetVisible,\n // ---\n loaderVisible,\n // ---\n popOverVisible,\n setPopOverVisible,\n // ---\n showAlert,\n showSnackBar,\n showBottomSheet,\n showLoader,\n showPopOverMenu,\n // ---\n hideNotify,\n }}>\n {children}\n\n <BottomSheetNotify\n ref={bottomSheetRef}\n bottomSheetComponent={bottomSheetComponent}\n contentsGestureEnable={contentsGestureEnable}\n bottomSheetPadding={bottomSheetPadding}\n marginBottomBS={marginBottomBS}\n isHandleVisible={handleVisible}\n bottomSheetMarginX={bottomSheetMarginX}\n isBottomRadius={isBottomRadius}\n bottomSheetBackgroundColor={bottomSheetBackgroundColor}\n maxHeight={bottomSheetMaxHeight}\n isScrollView={bottomSheetScrollView}\n />\n\n <PopOverMenu\n px={popOverLocation?.px}\n py={popOverLocation?.py}\n component={popOverComponent}\n />\n\n <SnackbarNotify\n customSnackbar={customSnackbar}\n />\n\n <AlertNotify\n title={title}\n informative={informative}\n actions={actions || {} as AlertActions}\n isBackgroundTouchClose={isBackgroundTouchClose}\n titleStyle={titleStyle}\n informativeStyle={informativeStyle}\n secondaryButtonStyle={secondaryButtonStyle}\n primaryButtonStyle={primaryButtonStyle}\n secondaryButtonTextStyle={secondaryButtonTextStyle}\n primaryButtonTextStyle={primaryButtonTextStyle}\n singleButtonTextStyle={singleButtonTextStyle}\n />\n\n <LoadingNotify\n loaderComponent={loaderComponent}\n />\n </NotifyContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"useNotifyProvider.js","sourceRoot":"","sources":["../../src/model/useNotifyProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { Dimensions, Keyboard, TextProps, TouchableOpacityProps } from 'react-native';\nimport NotifyContext from './useNotify';\nimport { AlertActions, BottomSheetRef, HideOption, NotifyProviderProps, PopOverMenuProps, ShowAlertProps, ShowBottomSheetProps, ShowSnackBarProps, SnackItem } from './types';\nimport AlertNotify from '../notify/AlertNotify';\nimport SnackbarNotify from '../notify/SnackbarNotify';\nimport BottomSheetNotify from '../notify/BottomSheetNotify';\nimport LoadingNotify from '../notify/LoadingNotify';\nimport PopOverMenu from '../notify/PopOver/PopOverMenu';\n\nconst BS_MAX_HEIGHT = Dimensions.get('window').height - 120;\n\nexport function NotifyProvider({\n customSnackbar,\n loaderComponent,\n children\n}: NotifyProviderProps) {\n // Alert\n const [title, setTitle] = useState<string>('');\n const [informative, setInformative] = useState<string>('');\n const [alertVisible, setAlertVisible] = useState<boolean>(false);\n const [actions, setActions] = useState<AlertActions>();\n const [isBackgroundTouchClose, setIsBackgroundTouchClose] = useState<boolean>(true);\n const [titleStyle, setTitleStyle] = useState<TextProps['style']>();\n const [informativeStyle, setInformativeStyle] = useState<TextProps['style']>();\n const [secondaryButtonStyle, setSecondaryButtonStyle] = useState<TouchableOpacityProps['style']>();\n const [primaryButtonStyle, setPrimaryButtonStyle] = useState<TouchableOpacityProps['style']>();\n const [secondaryButtonTextStyle, setSecondaryButtonTextStyle] = useState<TextProps['style']>();\n const [primaryButtonTextStyle, setPrimaryButtonTextStyle] = useState<TextProps['style']>();\n const [singleButtonTextStyle, setSingleButtonTextStyle] = useState<TextProps['style']>();\n\n // Snackbar\n const [snackItemStack, setSnackItemStack] = useState<SnackItem[]>([]);\n\n // BottomSheet\n const [contentsGestureEnable, setContentsGestureEnable] = useState<boolean>(false);\n const [bottomSheetVisible, setBottomSheetVisible] = useState<boolean>(false);\n const [bottomSheetBackgroundColor, setBottomSheetBackgroundColor] = useState<string>();\n const [bottomSheetComponent, setBottomSheetComponent] = useState<React.ReactNode>(false);\n const [bottomSheetPadding, setBottomSheetPadding] = useState<number | undefined>(undefined);\n const [bottomSheetMarginX, setBottomSheetMarginX] = useState<number | undefined>(undefined);\n const [bottomSheetMaxHeight, setBottomSheetMaxHeight] = useState<number>(BS_MAX_HEIGHT);\n const [bottomSheetScrollView, setBottomSheetScrollView] = useState<boolean>(true);\n const [isBottomRadius, setIsBottomRadius] = useState<boolean>(true);\n const [handleVisible, setHandleVisible] = useState<boolean>(true);\n const [marginBottomBS, setMarginBottomBs] = useState<number | undefined>(undefined);\n const [showsVerticalScrollIndicator, setShowsVerticalScrollIndicator] = useState<boolean>(false);\n const [headerComponent, setHeaderComponent] = useState<React.ReactNode | undefined>(undefined);\n const bottomSheetRef = useRef<BottomSheetRef | null>(null);\n\n // Loading\n const [loaderVisible, setLoaderVisible] = useState<boolean>(false);\n\n // PopOver\n const [popOverVisible, setPopOverVisible] = useState<boolean>(false);\n const [popOverLocation, setPopOverLocation] = useState<{ px: PopOverMenuProps['px'], py: PopOverMenuProps['py'] }>({ px: 0, py: 0 });\n const [popOverComponent, setPopOverComponent] = useState<React.ReactNode>(false);\n\n // ---\n const [fontFamily, setFontFamily] = useState<string | undefined | { title?: string; info?: string; label?: string; }>(undefined);\n\n\n const showAlert = ({\n title,\n informative,\n actions,\n isBackgroundTouchClose = true,\n titleStyle,\n informativeStyle,\n secondaryButtonStyle,\n primaryButtonStyle,\n secondaryButtonTextStyle,\n primaryButtonTextStyle,\n singleButtonTextStyle,\n }: ShowAlertProps) => {\n Keyboard.dismiss();\n setTitle(title);\n setInformative(informative);\n setActions(actions || {} as AlertActions);\n setIsBackgroundTouchClose(isBackgroundTouchClose);\n setAlertVisible(true);\n\n setTitleStyle(titleStyle);\n setInformativeStyle(informativeStyle);\n setSecondaryButtonStyle(secondaryButtonStyle);\n setPrimaryButtonStyle(primaryButtonStyle);\n setSecondaryButtonTextStyle(secondaryButtonTextStyle);\n setPrimaryButtonTextStyle(primaryButtonTextStyle);\n setSingleButtonTextStyle(singleButtonTextStyle);\n\n setFontFamily(fontFamily);\n };\n\n const showBottomSheet = ({\n isHandleVisible = true,\n component,\n contentsGestureEnable = true,\n marginHorizontal,\n padding,\n marginBottom,\n backgroundColor,\n isBottomRadius = true,\n maxHeight,\n isScrollView = true,\n showsVerticalScrollIndicator = false,\n headerComponent = undefined\n }: ShowBottomSheetProps) => {\n Keyboard.dismiss();\n padding && setBottomSheetPadding(padding);\n marginBottom && setMarginBottomBs(marginBottom);\n marginHorizontal && setBottomSheetMarginX(marginHorizontal);\n backgroundColor && setBottomSheetBackgroundColor(backgroundColor);\n maxHeight && setBottomSheetMaxHeight(maxHeight);\n setShowsVerticalScrollIndicator(showsVerticalScrollIndicator);\n setHeaderComponent(headerComponent);\n setContentsGestureEnable(contentsGestureEnable);\n setHandleVisible(isHandleVisible);\n setBottomSheetScrollView(isScrollView);\n setIsBottomRadius(isBottomRadius);\n setBottomSheetComponent(component);\n bottomSheetRef.current?.handleVisible(true);\n };\n\n const showLoader = () => {\n setLoaderVisible(true);\n };\n\n const showPopOverMenu = ({\n px,\n py,\n component\n }: PopOverMenuProps) => {\n setPopOverLocation({ px, py });\n setPopOverComponent(component);\n setPopOverVisible(true);\n }\n\n const showSnackBar = ({\n message,\n type = 'success',\n index = Date.now(),\n snackbarDuration = 3000\n }: ShowSnackBarProps) => {\n // TODO: 스택 쌓고싶은데 삭제될 때 참조를 잃어서 삭제가 안되는 문제가 있음.\n setSnackItemStack((prev) => {\n if (prev.length === 0) {\n return [...prev, { message, type, index: index, snackbarDuration: snackbarDuration }];\n } else {\n return prev;\n };\n });\n };\n\n const hideSnackBar = (index: number) => {\n setSnackItemStack((prev) => prev.filter((item) => item.index !== index));\n };\n\n const hideNotify = useCallback((option: HideOption) => {\n switch (option) {\n case 'alert':\n setAlertVisible(false);\n break;\n case 'snack':\n setSnackItemStack([]);\n break;\n case 'bottomSheet':\n bottomSheetRef.current?.handleVisible(false);\n break;\n case 'loader':\n setLoaderVisible(false);\n break;\n case 'popOver':\n setPopOverVisible(false);\n break;\n case 'all':\n setAlertVisible(false);\n setSnackItemStack([]);\n setLoaderVisible(false);\n setPopOverVisible(false);\n bottomSheetRef.current?.handleVisible(false);\n break;\n default:\n break;\n };\n }, []);\n\n\n return (\n <NotifyContext.Provider value={{\n alertVisible,\n setAlertVisible,\n // ---\n snackItemStack,\n hideSnackBar,\n // ---\n bottomSheetVisible,\n setBottomSheetVisible,\n // ---\n loaderVisible,\n // ---\n popOverVisible,\n setPopOverVisible,\n // ---\n showAlert,\n showSnackBar,\n showBottomSheet,\n showLoader,\n showPopOverMenu,\n // ---\n hideNotify,\n }}>\n {children}\n\n <BottomSheetNotify\n ref={bottomSheetRef}\n bottomSheetComponent={bottomSheetComponent}\n contentsGestureEnable={contentsGestureEnable}\n bottomSheetPadding={bottomSheetPadding}\n marginBottomBS={marginBottomBS}\n isHandleVisible={handleVisible}\n bottomSheetMarginX={bottomSheetMarginX}\n isBottomRadius={isBottomRadius}\n bottomSheetBackgroundColor={bottomSheetBackgroundColor}\n maxHeight={bottomSheetMaxHeight}\n isScrollView={bottomSheetScrollView}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n headerComponent={headerComponent}\n />\n\n <PopOverMenu\n px={popOverLocation?.px}\n py={popOverLocation?.py}\n component={popOverComponent}\n />\n\n <SnackbarNotify\n customSnackbar={customSnackbar}\n />\n\n <AlertNotify\n title={title}\n informative={informative}\n actions={actions || {} as AlertActions}\n isBackgroundTouchClose={isBackgroundTouchClose}\n titleStyle={titleStyle}\n informativeStyle={informativeStyle}\n secondaryButtonStyle={secondaryButtonStyle}\n primaryButtonStyle={primaryButtonStyle}\n secondaryButtonTextStyle={secondaryButtonTextStyle}\n primaryButtonTextStyle={primaryButtonTextStyle}\n singleButtonTextStyle={singleButtonTextStyle}\n />\n\n <LoadingNotify\n loaderComponent={loaderComponent}\n />\n </NotifyContext.Provider>\n );\n}\n"]}
@@ -13,6 +13,8 @@ interface Props extends ViewProps {
13
13
  maxHeight?: number;
14
14
  isScrollView?: boolean;
15
15
  bottomSheetComponent: React.ReactNode;
16
+ showsVerticalScrollIndicator: boolean;
17
+ headerComponent?: React.ReactNode;
16
18
  }
17
19
  declare const _default: React.ForwardRefExoticComponent<Props & React.RefAttributes<BottomSheetNotifyRef>>;
18
20
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/notify/BottomSheetNotify/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAA0B,SAAS,EAAY,MAAM,cAAc,CAAC;AAI3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAU/C,UAAU,KAAM,SAAQ,SAAS;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;CACvC;;AAqJD,wBAA6C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/notify/BottomSheetNotify/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAA0B,SAAS,EAAY,MAAM,cAAc,CAAC;AAI3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAU/C,UAAU,KAAM,SAAQ,SAAS;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,4BAA4B,EAAE,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;;AAmJD,wBAA6C"}
@@ -10,7 +10,7 @@ import { ZSView } from '../../ui';
10
10
  const DEFAULT_BORDER_RADIUS = 24;
11
11
  const BS_MAX_HEIGHT = Dimensions.get('window').height - 120;
12
12
  function BottomSheetNotify(props, ref) {
13
- const { marginBottomBS = 15, bottomSheetPadding = 20, bottomSheetBackgroundColor, closeOffset = Dimensions.get('window').height, contentsGestureEnable = true, isHandleVisible = true, bottomSheetMarginX = 10, isBottomRadius = true, isScrollView = true, maxHeight = BS_MAX_HEIGHT, bottomSheetComponent } = props;
13
+ const { marginBottomBS = 15, bottomSheetPadding = 20, bottomSheetBackgroundColor, closeOffset = Dimensions.get('window').height, contentsGestureEnable = true, isHandleVisible = true, bottomSheetMarginX = 10, isBottomRadius = true, isScrollView = true, maxHeight = BS_MAX_HEIGHT, bottomSheetComponent, showsVerticalScrollIndicator, headerComponent } = props;
14
14
  const { HANDLE_HEIGHT, bottomSheetVisible, bsAnimatedStyle, onGestureEvent, handleVisible, onTapEvent, openPosition, screenWidth, screenHeight, panGestureRef, listScrollPosition, bsModalBgStyle, backgroundPressHandler } = useBottomSheetNotify({
15
15
  bottomSheetPadding,
16
16
  closeOffset,
@@ -18,8 +18,8 @@ function BottomSheetNotify(props, ref) {
18
18
  bottomSheetMarginX,
19
19
  isHandleVisible,
20
20
  });
21
- const { palette: { background, text, primary, modalBgColor } } = useTheme();
22
- const styles = useMemo(() => createStyles({ background, text, primary, modalBgColor }), [background, text, primary, modalBgColor]);
21
+ const { palette: { background } } = useTheme();
22
+ const styles = useMemo(() => createStyles({ background }), [background]);
23
23
  useImperativeHandle(ref, () => ({
24
24
  handleVisible,
25
25
  }));
@@ -51,14 +51,14 @@ function BottomSheetNotify(props, ref) {
51
51
  </ZSView>)}
52
52
 
53
53
  <GestureDetector gesture={onTapEvent}>
54
- <ContentsComponent HANDLE_HEIGHT={HANDLE_HEIGHT} panGestureRef={panGestureRef} listScrollPosition={listScrollPosition} openPosition={openPosition} marginBottomBS={marginBottomBS} screenHeight={screenHeight} bottomSheetComponent={bottomSheetComponent} bottomSheetPadding={bottomSheetPadding} maxHeight={maxHeight} isScrollView={isScrollView}/>
54
+ <ContentsComponent HANDLE_HEIGHT={HANDLE_HEIGHT} panGestureRef={panGestureRef} listScrollPosition={listScrollPosition} openPosition={openPosition} marginBottomBS={marginBottomBS} screenHeight={screenHeight} bottomSheetComponent={bottomSheetComponent} bottomSheetPadding={bottomSheetPadding} maxHeight={maxHeight} isScrollView={isScrollView} showsVerticalScrollIndicator={showsVerticalScrollIndicator} headerComponent={headerComponent}/>
55
55
  </GestureDetector>
56
56
  </Animated.View>
57
57
  </GestureDetector>
58
58
  </GestureHandlerRootView>
59
59
  </Animated.View>) : null;
60
60
  }
61
- const createStyles = ({ background, text, primary, modalBgColor, }) => StyleSheet.create({
61
+ const createStyles = ({ background, }) => StyleSheet.create({
62
62
  modalBg: {
63
63
  position: 'absolute',
64
64
  width: Dimensions.get('window').width,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/notify/BottomSheetNotify/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useImperativeHandle, useMemo } from 'react';\nimport { StyleSheet, Dimensions, ViewProps, Keyboard } from 'react-native';\nimport { GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';\nimport Animated, { FadeIn, FadeOut } from 'react-native-reanimated';\nimport useBottomSheetNotify from './model/useBottomSheetNotify';\nimport { BottomSheetNotifyRef } from './types';\nimport ContentsComponent from './ui/ContentsComponent';\nimport { useTheme } from '../../model/useThemeProvider';\nimport { ColorPalette, ThemeBackground, ThemeTextType } from '../../theme';\nimport ViewAtom from '../../ui/atoms/ViewAtom';\nimport { ZSView } from '../../ui';\n\nconst DEFAULT_BORDER_RADIUS = 24;\nconst BS_MAX_HEIGHT = Dimensions.get('window').height - 120;\n\ninterface Props extends ViewProps {\n marginBottomBS?: number;\n bottomSheetBackgroundColor?: string;\n bottomSheetPadding?: number;\n closeOffset?: number;\n contentsGestureEnable?: boolean;\n isHandleVisible?: boolean;\n bottomSheetMarginX?: number;\n isBottomRadius?: boolean;\n maxHeight?: number;\n isScrollView?: boolean;\n bottomSheetComponent: React.ReactNode;\n}\n\nfunction BottomSheetNotify(props: Props, ref: React.Ref<BottomSheetNotifyRef>) {\n const {\n marginBottomBS = 15,\n bottomSheetPadding = 20,\n bottomSheetBackgroundColor,\n closeOffset = Dimensions.get('window').height,\n contentsGestureEnable = true,\n isHandleVisible = true,\n bottomSheetMarginX = 10,\n isBottomRadius = true,\n isScrollView = true,\n maxHeight = BS_MAX_HEIGHT,\n bottomSheetComponent\n } = props;\n\n const {\n HANDLE_HEIGHT,\n bottomSheetVisible,\n bsAnimatedStyle,\n onGestureEvent,\n handleVisible,\n onTapEvent,\n openPosition,\n screenWidth,\n screenHeight,\n panGestureRef,\n listScrollPosition,\n bsModalBgStyle,\n backgroundPressHandler\n } = useBottomSheetNotify({\n bottomSheetPadding,\n closeOffset,\n contentsGestureEnable,\n bottomSheetMarginX,\n isHandleVisible,\n });\n\n const { palette: { background, text, primary, modalBgColor } } = useTheme();\n\n const styles = useMemo(\n () => createStyles({ background, text, primary, modalBgColor }),\n [background, text, primary, modalBgColor]\n );\n\n useImperativeHandle(ref, () => ({\n handleVisible,\n }));\n\n return bottomSheetVisible && bottomSheetComponent ? (\n <Animated.View\n style={[styles.modalBg, bsModalBgStyle]}\n entering={FadeIn.duration(50)}\n exiting={FadeOut.duration(50)}\n onTouchEnd={backgroundPressHandler} // 외부 터치 시 시트 닫기\n >\n <GestureHandlerRootView style={styles.rootViewWrapper}>\n <GestureDetector gesture={onGestureEvent}>\n <Animated.View\n onTouchEnd={(e) => {\n e.stopPropagation();\n Keyboard.dismiss(); // 키보드 숨김\n }}\n style={[\n styles.sheet,\n {\n width: screenWidth,\n height: screenHeight,\n paddingHorizontal: bottomSheetPadding,\n left: bottomSheetMarginX,\n right: bottomSheetMarginX,\n borderTopLeftRadius: DEFAULT_BORDER_RADIUS,\n borderTopRightRadius: DEFAULT_BORDER_RADIUS,\n borderBottomLeftRadius: isBottomRadius ? DEFAULT_BORDER_RADIUS : 0,\n borderBottomRightRadius: isBottomRadius ? DEFAULT_BORDER_RADIUS : 0,\n backgroundColor: bottomSheetBackgroundColor || background.base,\n },\n bsAnimatedStyle, // 애니메이션 스타일 적용\n ]}\n >\n {isHandleVisible && (\n <ZSView style={[styles.handleContainer, { height: HANDLE_HEIGHT }]}>\n <ViewAtom style={styles.handle} />\n </ZSView>\n )}\n\n <GestureDetector gesture={onTapEvent}>\n <ContentsComponent\n HANDLE_HEIGHT={HANDLE_HEIGHT}\n panGestureRef={panGestureRef}\n listScrollPosition={listScrollPosition}\n openPosition={openPosition}\n marginBottomBS={marginBottomBS}\n screenHeight={screenHeight}\n bottomSheetComponent={bottomSheetComponent}\n bottomSheetPadding={bottomSheetPadding}\n maxHeight={maxHeight}\n isScrollView={isScrollView}\n />\n </GestureDetector>\n </Animated.View>\n </GestureDetector>\n </GestureHandlerRootView>\n </Animated.View>\n ) : null;\n}\n\n\nconst createStyles = ({\n background,\n text,\n primary,\n modalBgColor,\n}: {\n background: ThemeBackground;\n text: ThemeTextType;\n primary: ColorPalette;\n modalBgColor: string;\n}) =>\n StyleSheet.create({\n modalBg: {\n position: 'absolute',\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n bottom: 0,\n },\n sheet: {\n position: 'absolute',\n zIndex: 9000,\n overflow: 'hidden',\n },\n handleContainer: {\n width: '100%',\n alignItems: 'center',\n paddingTop: 13,\n },\n handle: {\n backgroundColor: background.layer2,\n width: 50,\n height: 4,\n borderRadius: 2,\n },\n rootViewWrapper: {\n width: '100%',\n height: '100%',\n },\n });\n\nexport default forwardRef(BottomSheetNotify);\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/notify/BottomSheetNotify/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useImperativeHandle, useMemo } from 'react';\nimport { StyleSheet, Dimensions, ViewProps, Keyboard } from 'react-native';\nimport { GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';\nimport Animated, { FadeIn, FadeOut } from 'react-native-reanimated';\nimport useBottomSheetNotify from './model/useBottomSheetNotify';\nimport { BottomSheetNotifyRef } from './types';\nimport ContentsComponent from './ui/ContentsComponent';\nimport { useTheme } from '../../model/useThemeProvider';\nimport { ThemeBackground } from '../../theme';\nimport ViewAtom from '../../ui/atoms/ViewAtom';\nimport { ZSView } from '../../ui';\n\nconst DEFAULT_BORDER_RADIUS = 24;\nconst BS_MAX_HEIGHT = Dimensions.get('window').height - 120;\n\ninterface Props extends ViewProps {\n marginBottomBS?: number;\n bottomSheetBackgroundColor?: string;\n bottomSheetPadding?: number;\n closeOffset?: number;\n contentsGestureEnable?: boolean;\n isHandleVisible?: boolean;\n bottomSheetMarginX?: number;\n isBottomRadius?: boolean;\n maxHeight?: number;\n isScrollView?: boolean;\n bottomSheetComponent: React.ReactNode;\n showsVerticalScrollIndicator: boolean;\n headerComponent?: React.ReactNode;\n}\n\nfunction BottomSheetNotify(props: Props, ref: React.Ref<BottomSheetNotifyRef>) {\n const {\n marginBottomBS = 15,\n bottomSheetPadding = 20,\n bottomSheetBackgroundColor,\n closeOffset = Dimensions.get('window').height,\n contentsGestureEnable = true,\n isHandleVisible = true,\n bottomSheetMarginX = 10,\n isBottomRadius = true,\n isScrollView = true,\n maxHeight = BS_MAX_HEIGHT,\n bottomSheetComponent,\n showsVerticalScrollIndicator,\n headerComponent\n } = props;\n\n const {\n HANDLE_HEIGHT,\n bottomSheetVisible,\n bsAnimatedStyle,\n onGestureEvent,\n handleVisible,\n onTapEvent,\n openPosition,\n screenWidth,\n screenHeight,\n panGestureRef,\n listScrollPosition,\n bsModalBgStyle,\n backgroundPressHandler\n } = useBottomSheetNotify({\n bottomSheetPadding,\n closeOffset,\n contentsGestureEnable,\n bottomSheetMarginX,\n isHandleVisible,\n });\n\n const { palette: { background } } = useTheme();\n\n const styles = useMemo(\n () => createStyles({ background }),\n [background]\n );\n\n useImperativeHandle(ref, () => ({\n handleVisible,\n }));\n\n return bottomSheetVisible && bottomSheetComponent ? (\n <Animated.View\n style={[styles.modalBg, bsModalBgStyle]}\n entering={FadeIn.duration(50)}\n exiting={FadeOut.duration(50)}\n onTouchEnd={backgroundPressHandler} // 외부 터치 시 시트 닫기\n >\n <GestureHandlerRootView style={styles.rootViewWrapper}>\n <GestureDetector gesture={onGestureEvent}>\n <Animated.View\n onTouchEnd={(e) => {\n e.stopPropagation();\n Keyboard.dismiss(); // 키보드 숨김\n }}\n style={[\n styles.sheet,\n {\n width: screenWidth,\n height: screenHeight,\n paddingHorizontal: bottomSheetPadding,\n left: bottomSheetMarginX,\n right: bottomSheetMarginX,\n borderTopLeftRadius: DEFAULT_BORDER_RADIUS,\n borderTopRightRadius: DEFAULT_BORDER_RADIUS,\n borderBottomLeftRadius: isBottomRadius ? DEFAULT_BORDER_RADIUS : 0,\n borderBottomRightRadius: isBottomRadius ? DEFAULT_BORDER_RADIUS : 0,\n backgroundColor: bottomSheetBackgroundColor || background.base,\n },\n bsAnimatedStyle, // 애니메이션 스타일 적용\n ]}\n >\n {isHandleVisible && (\n <ZSView style={[styles.handleContainer, { height: HANDLE_HEIGHT }]}>\n <ViewAtom style={styles.handle} />\n </ZSView>\n )}\n\n <GestureDetector gesture={onTapEvent}>\n <ContentsComponent\n HANDLE_HEIGHT={HANDLE_HEIGHT}\n panGestureRef={panGestureRef}\n listScrollPosition={listScrollPosition}\n openPosition={openPosition}\n marginBottomBS={marginBottomBS}\n screenHeight={screenHeight}\n bottomSheetComponent={bottomSheetComponent}\n bottomSheetPadding={bottomSheetPadding}\n maxHeight={maxHeight}\n isScrollView={isScrollView}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n headerComponent={headerComponent}\n />\n </GestureDetector>\n </Animated.View>\n </GestureDetector>\n </GestureHandlerRootView>\n </Animated.View>\n ) : null;\n}\n\n\nconst createStyles = ({\n background,\n}: {\n background: ThemeBackground;\n}) =>\n StyleSheet.create({\n modalBg: {\n position: 'absolute',\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n bottom: 0,\n },\n sheet: {\n position: 'absolute',\n zIndex: 9000,\n overflow: 'hidden',\n },\n handleContainer: {\n width: '100%',\n alignItems: 'center',\n paddingTop: 13,\n },\n handle: {\n backgroundColor: background.layer2,\n width: 50,\n height: 4,\n borderRadius: 2,\n },\n rootViewWrapper: {\n width: '100%',\n height: '100%',\n },\n });\n\nexport default forwardRef(BottomSheetNotify);\n"]}
@@ -12,8 +12,10 @@ interface Props {
12
12
  bottomSheetPadding: number;
13
13
  maxHeight: number;
14
14
  isScrollView: boolean;
15
+ showsVerticalScrollIndicator: boolean;
16
+ headerComponent?: React.ReactNode;
15
17
  }
16
- declare function ContentsComponent({ HANDLE_HEIGHT, panGestureRef, listScrollPosition, openPosition, marginBottomBS, screenHeight, bottomSheetComponent, bottomSheetPadding, maxHeight, isScrollView }: Props): React.JSX.Element;
18
+ declare function ContentsComponent({ HANDLE_HEIGHT, panGestureRef, listScrollPosition, openPosition, marginBottomBS, screenHeight, bottomSheetComponent, bottomSheetPadding, maxHeight, isScrollView, showsVerticalScrollIndicator, headerComponent }: Props): React.JSX.Element;
17
19
  declare const _default: React.MemoExoticComponent<typeof ContentsComponent>;
18
20
  export default _default;
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/notify/BottomSheetNotify/ui/ContentsComponent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAc,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD,UAAU,KAAK;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACzB;AAGD,iBAAS,iBAAiB,CAAC,EACvB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,YAAY,EACf,EAAE,KAAK,qBAsCP;;AAED,wBAA6C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/notify/BottomSheetNotify/ui/ContentsComponent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAc,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD,UAAU,KAAK;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,4BAA4B,EAAE,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACrC;AAGD,iBAAS,iBAAiB,CAAC,EACvB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,4BAA4B,EAC5B,eAAe,EAClB,EAAE,KAAK,qBA4CP;;AAED,wBAA6C"}
@@ -6,7 +6,7 @@ import { ZSView } from '../../../../ui';
6
6
  // const ANDROID_STATUS_BAR_HEIGHT = Platform.OS === 'android' ? 25 : 0;
7
7
  const ANDROID_STATUS_BAR_HEIGHT = 0;
8
8
  // 화살표 함수 대신 일반 함수 사용
9
- function ContentsComponent({ HANDLE_HEIGHT, panGestureRef, listScrollPosition, openPosition, marginBottomBS, screenHeight, bottomSheetComponent, bottomSheetPadding, maxHeight, isScrollView }) {
9
+ function ContentsComponent({ HANDLE_HEIGHT, panGestureRef, listScrollPosition, openPosition, marginBottomBS, screenHeight, bottomSheetComponent, bottomSheetPadding, maxHeight, isScrollView, showsVerticalScrollIndicator, headerComponent }) {
10
10
  const { bottom } = useSafeAreaInsets();
11
11
  // onLayout 함수를 useCallback으로 최적화
12
12
  const onLayout = useCallback((event) => {
@@ -21,11 +21,15 @@ function ContentsComponent({ HANDLE_HEIGHT, panGestureRef, listScrollPosition, o
21
21
  const handleScroll = useCallback((event) => {
22
22
  listScrollPosition.value = event.nativeEvent.contentOffset.y;
23
23
  }, [listScrollPosition]);
24
- return isScrollView ? (<ScrollView simultaneousHandlers={[panGestureRef]} onScroll={handleScroll} style={{ maxHeight }} keyboardShouldPersistTaps="handled" bounces={false} bouncesZoom={false} showsVerticalScrollIndicator={false} scrollEventThrottle={16}>
24
+ return isScrollView ? (<ScrollView simultaneousHandlers={[panGestureRef]} onScroll={handleScroll} style={{ maxHeight }} keyboardShouldPersistTaps="handled" bounces={false} bouncesZoom={false} overScrollMode="never" showsVerticalScrollIndicator={showsVerticalScrollIndicator} scrollEventThrottle={16} stickyHeaderIndices={headerComponent ? [0] : undefined}>
25
+ {headerComponent && headerComponent}
26
+
25
27
  <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding }} onLayout={onLayout}>
26
28
  {bottomSheetComponent}
27
29
  </ZSView>
28
30
  </ScrollView>) : (<ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding, maxHeight }} onLayout={onLayout}>
31
+ {headerComponent && headerComponent}
32
+
29
33
  {bottomSheetComponent}
30
34
  </ZSView>);
31
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/notify/BottomSheetNotify/ui/ContentsComponent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,UAAU,EAA8D,MAAM,cAAc,CAAC;AACtG,OAAO,EAAe,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,wEAAwE;AACxE,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAepC,qBAAqB;AACrB,SAAS,iBAAiB,CAAC,EACvB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,YAAY,EACR;IACJ,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEvC,iCAAiC;IACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,KAAwB,EAAE,EAAE;QACtD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QAC5C,MAAM,gBAAgB,GAAG,SAAS,GAAG,aAAa,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,YAAY;QACrE,0BAA0B;QAC1B,YAAY,CAAC,KAAK,GAAG,YAAY,GAAG,aAAa,CAAC;QAClD,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,YAAY,GAAG,cAAc,GAAG,MAAM,GAAG,yBAAyB,GAAG,aAAa,CAAC;IAC9I,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnF,qBAAqB;IACrB,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,KAA8C,EAAE,EAAE;QAChF,kBAAkB,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEzB,OAAO,YAAY,CAAC,CAAC,CAAC,CAClB,CAAC,UAAU,CACP,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CACtC,QAAQ,CAAC,CAAC,YAAY,CAAC,CACvB,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CACrB,yBAAyB,CAAC,SAAS,CACnC,OAAO,CAAC,CAAC,KAAK,CAAC,CACf,WAAW,CAAC,CAAC,KAAK,CAAC,CACnB,4BAA4B,CAAC,CAAC,KAAK,CAAC,CACpC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAExB;YAAA,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAClG;gBAAA,CAAC,oBAAoB,CACzB;YAAA,EAAE,MAAM,CACZ;QAAA,EAAE,UAAU,CAAC,CAChB,CAAC,CAAC,CAAC,CACA,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAC7G;YAAA,CAAC,oBAAoB,CACzB;QAAA,EAAE,MAAM,CAAC,CACZ,CAAC;AACN,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB","sourcesContent":["import React, { useCallback } from 'react';\nimport { Dimensions, LayoutChangeEvent, NativeScrollEvent, NativeSyntheticEvent } from 'react-native';\nimport { GestureType, ScrollView } from 'react-native-gesture-handler';\nimport { SharedValue } from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { ZSView } from '../../../../ui';\n\n// const ANDROID_STATUS_BAR_HEIGHT = Platform.OS === 'android' ? 25 : 0;\nconst ANDROID_STATUS_BAR_HEIGHT = 0;\n\ninterface Props {\n HANDLE_HEIGHT: number;\n panGestureRef: React.MutableRefObject<GestureType>;\n listScrollPosition: SharedValue<number>;\n openPosition: SharedValue<number>;\n marginBottomBS: number;\n screenHeight: SharedValue<number>;\n bottomSheetComponent: React.ReactNode;\n bottomSheetPadding: number;\n maxHeight: number;\n isScrollView: boolean;\n}\n\n// 화살표 함수 대신 일반 함수 사용\nfunction ContentsComponent({\n HANDLE_HEIGHT,\n panGestureRef,\n listScrollPosition,\n openPosition,\n marginBottomBS,\n screenHeight,\n bottomSheetComponent,\n bottomSheetPadding,\n maxHeight,\n isScrollView\n}: Props) {\n const { bottom } = useSafeAreaInsets();\n\n // onLayout 함수를 useCallback으로 최적화\n const onLayout = useCallback((event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n const contentMaxHeight = maxHeight + HANDLE_HEIGHT;\n const resultHeight = Math.min(height, contentMaxHeight); // 더 간결하게 변경\n // 성능 문제 방지를 위해 runOnUI 사용\n screenHeight.value = resultHeight + HANDLE_HEIGHT;\n openPosition.value = Dimensions.get('window').height - resultHeight - marginBottomBS - bottom - ANDROID_STATUS_BAR_HEIGHT - HANDLE_HEIGHT;\n }, [maxHeight, HANDLE_HEIGHT, screenHeight, openPosition, marginBottomBS, bottom]);\n\n // 현재 스크롤 위치를 관리하는 함수\n const handleScroll = useCallback((event: NativeSyntheticEvent<NativeScrollEvent>) => {\n listScrollPosition.value = event.nativeEvent.contentOffset.y;\n }, [listScrollPosition]);\n\n return isScrollView ? (\n <ScrollView\n simultaneousHandlers={[panGestureRef]}\n onScroll={handleScroll}\n style={{ maxHeight }}\n keyboardShouldPersistTaps=\"handled\"\n bounces={false}\n bouncesZoom={false}\n showsVerticalScrollIndicator={false}\n scrollEventThrottle={16}\n >\n <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding }} onLayout={onLayout}>\n {bottomSheetComponent}\n </ZSView>\n </ScrollView>\n ) : (\n <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding, maxHeight }} onLayout={onLayout}>\n {bottomSheetComponent}\n </ZSView>\n );\n}\n\nexport default React.memo(ContentsComponent); // React.memo로 성능 최적화\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/notify/BottomSheetNotify/ui/ContentsComponent/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback } from 'react';\nimport { Dimensions, LayoutChangeEvent, NativeScrollEvent, NativeSyntheticEvent, Text, View } from 'react-native';\nimport { GestureType, ScrollView } from 'react-native-gesture-handler';\nimport { SharedValue } from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { ZSView } from '../../../../ui';\n\n// const ANDROID_STATUS_BAR_HEIGHT = Platform.OS === 'android' ? 25 : 0;\nconst ANDROID_STATUS_BAR_HEIGHT = 0;\n\ninterface Props {\n HANDLE_HEIGHT: number;\n panGestureRef: React.MutableRefObject<GestureType>;\n listScrollPosition: SharedValue<number>;\n openPosition: SharedValue<number>;\n marginBottomBS: number;\n screenHeight: SharedValue<number>;\n bottomSheetComponent: React.ReactNode;\n bottomSheetPadding: number;\n maxHeight: number;\n isScrollView: boolean;\n showsVerticalScrollIndicator: boolean;\n headerComponent?: React.ReactNode;\n}\n\n// 화살표 함수 대신 일반 함수 사용\nfunction ContentsComponent({\n HANDLE_HEIGHT,\n panGestureRef,\n listScrollPosition,\n openPosition,\n marginBottomBS,\n screenHeight,\n bottomSheetComponent,\n bottomSheetPadding,\n maxHeight,\n isScrollView,\n showsVerticalScrollIndicator,\n headerComponent\n}: Props) {\n const { bottom } = useSafeAreaInsets();\n\n // onLayout 함수를 useCallback으로 최적화\n const onLayout = useCallback((event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n const contentMaxHeight = maxHeight + HANDLE_HEIGHT;\n const resultHeight = Math.min(height, contentMaxHeight); // 더 간결하게 변경\n // 성능 문제 방지를 위해 runOnUI 사용\n screenHeight.value = resultHeight + HANDLE_HEIGHT;\n openPosition.value = Dimensions.get('window').height - resultHeight - marginBottomBS - bottom - ANDROID_STATUS_BAR_HEIGHT - HANDLE_HEIGHT;\n }, [maxHeight, HANDLE_HEIGHT, screenHeight, openPosition, marginBottomBS, bottom]);\n\n // 현재 스크롤 위치를 관리하는 함수\n const handleScroll = useCallback((event: NativeSyntheticEvent<NativeScrollEvent>) => {\n listScrollPosition.value = event.nativeEvent.contentOffset.y;\n }, [listScrollPosition]);\n\n return isScrollView ? (\n <ScrollView\n simultaneousHandlers={[panGestureRef]}\n onScroll={handleScroll}\n style={{ maxHeight }}\n keyboardShouldPersistTaps=\"handled\"\n bounces={false}\n bouncesZoom={false}\n overScrollMode=\"never\" \n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n scrollEventThrottle={16}\n stickyHeaderIndices={headerComponent ? [0] : undefined}\n >\n {headerComponent && headerComponent}\n\n <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding }} onLayout={onLayout}>\n {bottomSheetComponent}\n </ZSView>\n </ScrollView>\n ) : (\n <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding, maxHeight }} onLayout={onLayout}>\n {headerComponent && headerComponent}\n\n {bottomSheetComponent}\n </ZSView>\n );\n}\n\nexport default React.memo(ContentsComponent); // React.memo로 성능 최적화\n"]}
@@ -50,10 +50,10 @@ function AnimatedWrapper({ isAnimation = true, elevationLevel = 0, duration = DE
50
50
  }), [duration, onEntering]);
51
51
  // 애니메이션이 비활성화된 경우 기본 View로 렌더링
52
52
  if (!isAnimation) {
53
- return <View style={[{ backgroundColor: palette.background.base }, style, staticStyle]} {...props}>{children}</View>;
53
+ return <View style={[style, staticStyle]} {...props}>{children}</View>;
54
54
  }
55
55
  // 애니메이션이 적용된 View로 렌더링
56
- return (<Animated.View style={[{ backgroundColor: palette.background.base }, style, staticStyle, animatedStyle]} {...animationProps} {...props}>
56
+ return (<Animated.View style={[style, staticStyle, animatedStyle]} {...animationProps} {...props}>
57
57
  {children}
58
58
  </Animated.View>);
59
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AnimatedWrapper.js","sourceRoot":"","sources":["../../../src/ui/atoms/AnimatedWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo, useCallback } from 'react';\nimport { View, ViewProps, Platform } from 'react-native';\nimport Animated, { FadeInDown, FadeOut, useAnimatedStyle, withTiming, useSharedValue, runOnJS } from 'react-native-reanimated';\nimport { useTheme } from '../../model/useThemeProvider';\nimport { ShadowLevel, ShadowStyle } from '../types';\n\nconst DEFAULT_DURATION = 200 as const;\nconst SHADOW_DURATION = 50 as const;\nconst IOS_SHADOW: readonly ShadowStyle[] = [\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 1, shadowRadius: 1.00 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 1, shadowRadius: 1.41 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 1, shadowRadius: 2.22 },\n { shadowOffset: { width: 0, height: 2 }, shadowOpacity: 1, shadowRadius: 2.62 },\n { shadowOffset: { width: 0, height: 2 }, shadowOpacity: 1, shadowRadius: 3.84 },\n { shadowOffset: { width: 0, height: 3 }, shadowOpacity: 1, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 3 }, shadowOpacity: 1, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 4 }, shadowOpacity: 1, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 4 }, shadowOpacity: 1, shadowRadius: 5.46 },\n { shadowOffset: { width: 0, height: 5 }, shadowOpacity: 1, shadowRadius: 6.27 },\n] as const;\n\ninterface AnimatedWrapperProps extends ViewProps {\n isAnimation: boolean;\n elevationLevel?: ShadowLevel;\n duration?: number;\n}\n\nfunction AnimatedWrapper({\n isAnimation = true,\n elevationLevel = 0,\n duration = DEFAULT_DURATION,\n style,\n children,\n ...props\n}: AnimatedWrapperProps) {\n const { palette } = useTheme();\n const opacity = useSharedValue(0);\n\n // 그림자 및 기타 스타일을 플랫폼에 맞게 미리 계산\n const staticStyle = useMemo(() => {\n if (Platform.OS === 'ios') {\n const { shadowOpacity, ...rest } = IOS_SHADOW[elevationLevel];\n return { shadowColor: palette.elevationShadow[elevationLevel], ...rest };\n }\n return { shadowColor: palette.elevationShadow[elevationLevel] };\n }, [elevationLevel, palette]);\n\n // 애니메이션 스타일 정의 (iOS 그림자 및 Android elevation 처리)\n const animatedStyle = useAnimatedStyle(() => {\n if (Platform.OS === 'ios') {\n return { shadowOpacity: opacity.value * IOS_SHADOW[elevationLevel].shadowOpacity };\n }\n return { elevation: opacity.value * elevationLevel };\n }, [elevationLevel]);\n\n // 컴포넌트가 등장할 때 애니메이션 핸들링\n const onEntering = useCallback(() => {\n opacity.value = withTiming(1, { duration: SHADOW_DURATION });\n }, [opacity]);\n\n // 애니메이션 속성 메모이제이션\n const animationProps = useMemo(() => ({\n entering: FadeInDown.duration(duration).withCallback((finished) => {\n 'worklet';\n if (finished) {\n runOnJS(onEntering)();\n }\n }),\n exiting: FadeOut.duration(50),\n }), [duration, onEntering]);\n\n // 애니메이션이 비활성화된 경우 기본 View로 렌더링\n if (!isAnimation) {\n return <View style={[{ backgroundColor: palette.background.base }, style, staticStyle]} {...props}>{children}</View>;\n }\n\n // 애니메이션이 적용된 View로 렌더링\n return (\n <Animated.View\n style={[{ backgroundColor: palette.background.base }, style, staticStyle, animatedStyle]}\n {...animationProps}\n {...props}\n >\n {children}\n </Animated.View>\n );\n}\n\nexport default React.memo(AnimatedWrapper);\n"]}
1
+ {"version":3,"file":"AnimatedWrapper.js","sourceRoot":"","sources":["../../../src/ui/atoms/AnimatedWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo, useCallback } from 'react';\nimport { View, ViewProps, Platform } from 'react-native';\nimport Animated, { FadeInDown, FadeOut, useAnimatedStyle, withTiming, useSharedValue, runOnJS } from 'react-native-reanimated';\nimport { useTheme } from '../../model/useThemeProvider';\nimport { ShadowLevel, ShadowStyle } from '../types';\n\nconst DEFAULT_DURATION = 200 as const;\nconst SHADOW_DURATION = 50 as const;\nconst IOS_SHADOW: readonly ShadowStyle[] = [\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 1, shadowRadius: 1.00 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 1, shadowRadius: 1.41 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 1, shadowRadius: 2.22 },\n { shadowOffset: { width: 0, height: 2 }, shadowOpacity: 1, shadowRadius: 2.62 },\n { shadowOffset: { width: 0, height: 2 }, shadowOpacity: 1, shadowRadius: 3.84 },\n { shadowOffset: { width: 0, height: 3 }, shadowOpacity: 1, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 3 }, shadowOpacity: 1, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 4 }, shadowOpacity: 1, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 4 }, shadowOpacity: 1, shadowRadius: 5.46 },\n { shadowOffset: { width: 0, height: 5 }, shadowOpacity: 1, shadowRadius: 6.27 },\n] as const;\n\ninterface AnimatedWrapperProps extends ViewProps {\n isAnimation: boolean;\n elevationLevel?: ShadowLevel;\n duration?: number;\n}\n\nfunction AnimatedWrapper({\n isAnimation = true,\n elevationLevel = 0,\n duration = DEFAULT_DURATION,\n style,\n children,\n ...props\n}: AnimatedWrapperProps) {\n const { palette } = useTheme();\n const opacity = useSharedValue(0);\n\n // 그림자 및 기타 스타일을 플랫폼에 맞게 미리 계산\n const staticStyle = useMemo(() => {\n if (Platform.OS === 'ios') {\n const { shadowOpacity, ...rest } = IOS_SHADOW[elevationLevel];\n return { shadowColor: palette.elevationShadow[elevationLevel], ...rest };\n }\n return { shadowColor: palette.elevationShadow[elevationLevel] };\n }, [elevationLevel, palette]);\n\n // 애니메이션 스타일 정의 (iOS 그림자 및 Android elevation 처리)\n const animatedStyle = useAnimatedStyle(() => {\n if (Platform.OS === 'ios') {\n return { shadowOpacity: opacity.value * IOS_SHADOW[elevationLevel].shadowOpacity };\n }\n return { elevation: opacity.value * elevationLevel };\n }, [elevationLevel]);\n\n // 컴포넌트가 등장할 때 애니메이션 핸들링\n const onEntering = useCallback(() => {\n opacity.value = withTiming(1, { duration: SHADOW_DURATION });\n }, [opacity]);\n\n // 애니메이션 속성 메모이제이션\n const animationProps = useMemo(() => ({\n entering: FadeInDown.duration(duration).withCallback((finished) => {\n 'worklet';\n if (finished) {\n runOnJS(onEntering)();\n }\n }),\n exiting: FadeOut.duration(50),\n }), [duration, onEntering]);\n\n // 애니메이션이 비활성화된 경우 기본 View로 렌더링\n if (!isAnimation) {\n return <View style={[style, staticStyle]} {...props}>{children}</View>;\n }\n\n // 애니메이션이 적용된 View로 렌더링\n return (\n <Animated.View\n style={[style, staticStyle, animatedStyle]}\n {...animationProps}\n {...props}\n >\n {children}\n </Animated.View>\n );\n}\n\nexport default React.memo(AnimatedWrapper);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0610studio/zs-ui",
3
- "version": "0.0.7",
3
+ "version": "0.0.10",
4
4
  "private": false,
5
5
  "description": "EXPO ZS-UI",
6
6
  "type": "module",
@@ -42,6 +42,8 @@ export interface ShowBottomSheetProps {
42
42
  contentsGestureEnable?: boolean;
43
43
  maxHeight?: number;
44
44
  isScrollView?: boolean;
45
+ showsVerticalScrollIndicator?: boolean;
46
+ headerComponent?: React.ReactNode;
45
47
  };
46
48
 
47
49
  export interface CustomSnackbarProps {
@@ -44,6 +44,8 @@ export function NotifyProvider({
44
44
  const [isBottomRadius, setIsBottomRadius] = useState<boolean>(true);
45
45
  const [handleVisible, setHandleVisible] = useState<boolean>(true);
46
46
  const [marginBottomBS, setMarginBottomBs] = useState<number | undefined>(undefined);
47
+ const [showsVerticalScrollIndicator, setShowsVerticalScrollIndicator] = useState<boolean>(false);
48
+ const [headerComponent, setHeaderComponent] = useState<React.ReactNode | undefined>(undefined);
47
49
  const bottomSheetRef = useRef<BottomSheetRef | null>(null);
48
50
 
49
51
  // Loading
@@ -99,7 +101,9 @@ export function NotifyProvider({
99
101
  backgroundColor,
100
102
  isBottomRadius = true,
101
103
  maxHeight,
102
- isScrollView = true
104
+ isScrollView = true,
105
+ showsVerticalScrollIndicator = false,
106
+ headerComponent = undefined
103
107
  }: ShowBottomSheetProps) => {
104
108
  Keyboard.dismiss();
105
109
  padding && setBottomSheetPadding(padding);
@@ -107,6 +111,8 @@ export function NotifyProvider({
107
111
  marginHorizontal && setBottomSheetMarginX(marginHorizontal);
108
112
  backgroundColor && setBottomSheetBackgroundColor(backgroundColor);
109
113
  maxHeight && setBottomSheetMaxHeight(maxHeight);
114
+ setShowsVerticalScrollIndicator(showsVerticalScrollIndicator);
115
+ setHeaderComponent(headerComponent);
110
116
  setContentsGestureEnable(contentsGestureEnable);
111
117
  setHandleVisible(isHandleVisible);
112
118
  setBottomSheetScrollView(isScrollView);
@@ -217,6 +223,8 @@ export function NotifyProvider({
217
223
  bottomSheetBackgroundColor={bottomSheetBackgroundColor}
218
224
  maxHeight={bottomSheetMaxHeight}
219
225
  isScrollView={bottomSheetScrollView}
226
+ showsVerticalScrollIndicator={showsVerticalScrollIndicator}
227
+ headerComponent={headerComponent}
220
228
  />
221
229
 
222
230
  <PopOverMenu
@@ -6,7 +6,7 @@ import useBottomSheetNotify from './model/useBottomSheetNotify';
6
6
  import { BottomSheetNotifyRef } from './types';
7
7
  import ContentsComponent from './ui/ContentsComponent';
8
8
  import { useTheme } from '../../model/useThemeProvider';
9
- import { ColorPalette, ThemeBackground, ThemeTextType } from '../../theme';
9
+ import { ThemeBackground } from '../../theme';
10
10
  import ViewAtom from '../../ui/atoms/ViewAtom';
11
11
  import { ZSView } from '../../ui';
12
12
 
@@ -25,6 +25,8 @@ interface Props extends ViewProps {
25
25
  maxHeight?: number;
26
26
  isScrollView?: boolean;
27
27
  bottomSheetComponent: React.ReactNode;
28
+ showsVerticalScrollIndicator: boolean;
29
+ headerComponent?: React.ReactNode;
28
30
  }
29
31
 
30
32
  function BottomSheetNotify(props: Props, ref: React.Ref<BottomSheetNotifyRef>) {
@@ -39,7 +41,9 @@ function BottomSheetNotify(props: Props, ref: React.Ref<BottomSheetNotifyRef>) {
39
41
  isBottomRadius = true,
40
42
  isScrollView = true,
41
43
  maxHeight = BS_MAX_HEIGHT,
42
- bottomSheetComponent
44
+ bottomSheetComponent,
45
+ showsVerticalScrollIndicator,
46
+ headerComponent
43
47
  } = props;
44
48
 
45
49
  const {
@@ -64,11 +68,11 @@ function BottomSheetNotify(props: Props, ref: React.Ref<BottomSheetNotifyRef>) {
64
68
  isHandleVisible,
65
69
  });
66
70
 
67
- const { palette: { background, text, primary, modalBgColor } } = useTheme();
71
+ const { palette: { background } } = useTheme();
68
72
 
69
73
  const styles = useMemo(
70
- () => createStyles({ background, text, primary, modalBgColor }),
71
- [background, text, primary, modalBgColor]
74
+ () => createStyles({ background }),
75
+ [background]
72
76
  );
73
77
 
74
78
  useImperativeHandle(ref, () => ({
@@ -124,6 +128,8 @@ function BottomSheetNotify(props: Props, ref: React.Ref<BottomSheetNotifyRef>) {
124
128
  bottomSheetPadding={bottomSheetPadding}
125
129
  maxHeight={maxHeight}
126
130
  isScrollView={isScrollView}
131
+ showsVerticalScrollIndicator={showsVerticalScrollIndicator}
132
+ headerComponent={headerComponent}
127
133
  />
128
134
  </GestureDetector>
129
135
  </Animated.View>
@@ -136,14 +142,8 @@ function BottomSheetNotify(props: Props, ref: React.Ref<BottomSheetNotifyRef>) {
136
142
 
137
143
  const createStyles = ({
138
144
  background,
139
- text,
140
- primary,
141
- modalBgColor,
142
145
  }: {
143
146
  background: ThemeBackground;
144
- text: ThemeTextType;
145
- primary: ColorPalette;
146
- modalBgColor: string;
147
147
  }) =>
148
148
  StyleSheet.create({
149
149
  modalBg: {
@@ -1,5 +1,5 @@
1
1
  import React, { useCallback } from 'react';
2
- import { Dimensions, LayoutChangeEvent, NativeScrollEvent, NativeSyntheticEvent } from 'react-native';
2
+ import { Dimensions, LayoutChangeEvent, NativeScrollEvent, NativeSyntheticEvent, Text, View } from 'react-native';
3
3
  import { GestureType, ScrollView } from 'react-native-gesture-handler';
4
4
  import { SharedValue } from 'react-native-reanimated';
5
5
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
@@ -19,6 +19,8 @@ interface Props {
19
19
  bottomSheetPadding: number;
20
20
  maxHeight: number;
21
21
  isScrollView: boolean;
22
+ showsVerticalScrollIndicator: boolean;
23
+ headerComponent?: React.ReactNode;
22
24
  }
23
25
 
24
26
  // 화살표 함수 대신 일반 함수 사용
@@ -32,7 +34,9 @@ function ContentsComponent({
32
34
  bottomSheetComponent,
33
35
  bottomSheetPadding,
34
36
  maxHeight,
35
- isScrollView
37
+ isScrollView,
38
+ showsVerticalScrollIndicator,
39
+ headerComponent
36
40
  }: Props) {
37
41
  const { bottom } = useSafeAreaInsets();
38
42
 
@@ -59,15 +63,21 @@ function ContentsComponent({
59
63
  keyboardShouldPersistTaps="handled"
60
64
  bounces={false}
61
65
  bouncesZoom={false}
62
- showsVerticalScrollIndicator={false}
66
+ overScrollMode="never"
67
+ showsVerticalScrollIndicator={showsVerticalScrollIndicator}
63
68
  scrollEventThrottle={16}
69
+ stickyHeaderIndices={headerComponent ? [0] : undefined}
64
70
  >
71
+ {headerComponent && headerComponent}
72
+
65
73
  <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding }} onLayout={onLayout}>
66
74
  {bottomSheetComponent}
67
75
  </ZSView>
68
76
  </ScrollView>
69
77
  ) : (
70
78
  <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding, maxHeight }} onLayout={onLayout}>
79
+ {headerComponent && headerComponent}
80
+
71
81
  {bottomSheetComponent}
72
82
  </ZSView>
73
83
  );
@@ -71,13 +71,13 @@ function AnimatedWrapper({
71
71
 
72
72
  // 애니메이션이 비활성화된 경우 기본 View로 렌더링
73
73
  if (!isAnimation) {
74
- return <View style={[{ backgroundColor: palette.background.base }, style, staticStyle]} {...props}>{children}</View>;
74
+ return <View style={[style, staticStyle]} {...props}>{children}</View>;
75
75
  }
76
76
 
77
77
  // 애니메이션이 적용된 View로 렌더링
78
78
  return (
79
79
  <Animated.View
80
- style={[{ backgroundColor: palette.background.base }, style, staticStyle, animatedStyle]}
80
+ style={[style, staticStyle, animatedStyle]}
81
81
  {...animationProps}
82
82
  {...props}
83
83
  >