UNPKG

@equinor/mad-core

Version:

Core library for the Mobile App Delivery team

121 lines (118 loc) 3.46 kB
import { DisableableSwipeable } from "./chunk-XJX4HQF2.js"; import { ExpansionToggle } from "./chunk-YWPELSTX.js"; import { SwipeItem } from "./chunk-BDKB5ELS.js"; import { resolveMessageFromServiceMessage } from "./chunk-SHKOH7MA.js"; import { useServiceMessageState } from "./chunk-DIITQCRW.js"; import { __spreadProps, __spreadValues } from "./chunk-CWMXXUWU.js"; // src/components/service-message/ServiceMessageBanner.tsx import React from "react"; import { LayoutAnimation, Linking, SafeAreaView, View } from "react-native"; import { EDSStyleSheet, PressableHighlight, Typography, useStyles } from "@equinor/mad-components"; var ServiceMessageBanner = () => { const styles = useStyles(theme); const { serviceMessage, isDismissed, setIsDismissed, isExpanded, setIsExpanded, expansionEnabled, setExpansionEnabled, isError } = useServiceMessageState(); const dismissAndURLIsVisible = !expansionEnabled || expansionEnabled && isExpanded; const onPressServiceMessage = () => { LayoutAnimation.configureNext(__spreadProps(__spreadValues({}, LayoutAnimation.Presets.easeInEaseOut), { duration: 100 })); setIsExpanded((isExpanded2) => !isExpanded2); }; if (isDismissed) return null; if (!serviceMessage) return null; const { message, url } = resolveMessageFromServiceMessage(serviceMessage, isError); return /* @__PURE__ */ React.createElement(SafeAreaView, null, /* @__PURE__ */ React.createElement( DisableableSwipeable, { disabled: !dismissAndURLIsVisible, renderRightActions: () => /* @__PURE__ */ React.createElement( SwipeItem, { title: "Remove", iconName: "close", color: "danger", onPress: () => setIsDismissed(true) } ) }, /* @__PURE__ */ React.createElement( PressableHighlight, { style: styles.container, onPress: onPressServiceMessage, disabled: !expansionEnabled }, /* @__PURE__ */ React.createElement(View, { style: { flex: 1 } }, /* @__PURE__ */ React.createElement( Typography, { color: styles.text.color, numberOfLines: expansionEnabled && !isExpanded ? 2 : 0, onTextLayout: (e) => { if (e.nativeEvent.lines.length > 2) { setExpansionEnabled(true); } } }, message ), dismissAndURLIsVisible && /* @__PURE__ */ React.createElement(React.Fragment, null, url && /* @__PURE__ */ React.createElement( Typography, { group: "interactive", variant: "link", style: styles.text, onPress: () => void Linking.openURL(url) }, url ), /* @__PURE__ */ React.createElement( Typography, { variant: "label", bold: true, color: styles.text.color, style: { marginTop: 8 } }, "Swipe left to remove" ))), expansionEnabled && /* @__PURE__ */ React.createElement(ExpansionToggle, { isExpanded }) ) )); }; var theme = EDSStyleSheet.create((themeStyles) => ({ container: { backgroundColor: themeStyles.colors.container.warning, padding: themeStyles.spacing.dialog.padding, flexDirection: "row", justifyContent: "space-between" }, text: { color: themeStyles.colors.text.feedbackWarning } })); export { ServiceMessageBanner };