@eslam-elmeniawy/react-native-common-components
Version:
Common `ReactNative` components packed in library for usage in projects.
97 lines (93 loc) • 3.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
var _reactNativePaper = require("react-native-paper");
var _DialogStyles = _interopRequireDefault(require("./Dialog.styles.js"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
// External imports.
// Types imports.
// Internal imports.
const Dialog = /*#__PURE__*/React.memo(props => {
const {
visible,
position,
onDismiss,
dismissable,
style,
overlayColor,
children,
theme
} = props;
const _onBackPress = React.useCallback(() => {
if (visible) {
const isDialogDismissable = dismissable ?? true;
if (isDialogDismissable && onDismiss) {
onDismiss();
}
return true;
} else {
return false;
}
}, [dismissable, onDismiss, visible]);
React.useEffect(() => {
const backHandlerSubscription = _reactNative.BackHandler.addEventListener('hardwareBackPress', _onBackPress);
return () => {
backHandlerSubscription?.remove();
};
}, [_onBackPress]);
if (visible) {
const edges = ['right', 'left'];
let justifyContent;
switch (position) {
case 'top':
edges.push('bottom');
justifyContent = 'flex-start';
break;
case 'bottom':
edges.push('top');
justifyContent = 'flex-end';
break;
default:
edges.push('top', 'bottom');
justifyContent = 'center';
break;
}
const isDialogDismissable = dismissable ?? true;
const overlayStyle = _reactNative.StyleSheet.flatten([_DialogStyles.default.overlay, {
backgroundColor: overlayColor ?? theme.colors.backdrop
}]);
const borderRadius = (theme.isV3 ? 7 : 1) * theme.roundness;
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativePaper.Portal, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
style: overlayStyle,
onPress: isDialogDismissable ? onDismiss : null,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSafeAreaContext.SafeAreaView, {
edges: edges,
style: _reactNative.StyleSheet.flatten([_DialogStyles.default.safeArea, {
justifyContent: justifyContent
}]),
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
style: _reactNative.StyleSheet.flatten([_DialogStyles.default.dialog, {
backgroundColor: theme.colors.surface,
borderRadius: borderRadius,
padding: borderRadius
}, style]),
onPress: () => {},
children: children
})
})
})
});
}
return null;
});
var _default = exports.default = (0, _reactNativePaper.withTheme)(Dialog);
//# sourceMappingURL=Dialog.js.map