Minor UI fixes.
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -25,3 +25,5 @@ android/**
|
|||||||
ios/**
|
ios/**
|
||||||
|
|
||||||
.env.local
|
.env.local
|
||||||
|
|
||||||
|
dist/**
|
||||||
@@ -14,7 +14,6 @@ function JobTabLayout() {
|
|||||||
tabBarPosition: "top",
|
tabBarPosition: "top",
|
||||||
headerShown: false,
|
headerShown: false,
|
||||||
animation: "shift",
|
animation: "shift",
|
||||||
|
|
||||||
tabBarStyle: {
|
tabBarStyle: {
|
||||||
// marginTop: -50
|
// marginTop: -50
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { useQuery } from "@apollo/client";
|
|||||||
import { useGlobalSearchParams } from "expo-router";
|
import { useGlobalSearchParams } from "expo-router";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { ScrollView } from "react-native";
|
import { ScrollView, useWindowDimensions } from "react-native";
|
||||||
import { ActivityIndicator, DataTable } from "react-native-paper";
|
import { ActivityIndicator, DataTable } from "react-native-paper";
|
||||||
import ErrorDisplay from "../error/error-display";
|
import ErrorDisplay from "../error/error-display";
|
||||||
|
|
||||||
@@ -16,6 +16,8 @@ export default function JobLines() {
|
|||||||
},
|
},
|
||||||
skip: !jobId,
|
skip: !jobId,
|
||||||
});
|
});
|
||||||
|
const { width, height } = useWindowDimensions();
|
||||||
|
const isLandscape = width > height;
|
||||||
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const onRefresh = async () => {
|
const onRefresh = async () => {
|
||||||
@@ -36,20 +38,22 @@ export default function JobLines() {
|
|||||||
|
|
||||||
const job = data.jobs_by_pk;
|
const job = data.jobs_by_pk;
|
||||||
return (
|
return (
|
||||||
<ScrollView>
|
<ScrollView style={{ flex: 1, marginHorizontal: isLandscape ? 48 : 12 }}>
|
||||||
<DataTable>
|
<DataTable>
|
||||||
<DataTable.Header>
|
<DataTable.Header>
|
||||||
<DataTable.Title> {t("jobdetail.labels.lines_desc")}</DataTable.Title>
|
<DataTable.Title style={{ flex: 4 }}>
|
||||||
<DataTable.Title>
|
{t("jobdetail.labels.lines_desc")}
|
||||||
|
</DataTable.Title>
|
||||||
|
<DataTable.Title style={{ flex: 2 }}>
|
||||||
{t("jobdetail.labels.lines_lbr_ty")}
|
{t("jobdetail.labels.lines_lbr_ty")}
|
||||||
</DataTable.Title>
|
</DataTable.Title>
|
||||||
<DataTable.Title numeric>
|
<DataTable.Title style={{ flex: 1 }} numeric>
|
||||||
{t("jobdetail.labels.lines_lb_hrs")}
|
{t("jobdetail.labels.lines_lb_hrs")}
|
||||||
</DataTable.Title>
|
</DataTable.Title>
|
||||||
<DataTable.Title>
|
<DataTable.Title style={{ flex: 2 }}>
|
||||||
{t("jobdetail.labels.lines_part_type")}
|
{t("jobdetail.labels.lines_part_type")}
|
||||||
</DataTable.Title>
|
</DataTable.Title>
|
||||||
<DataTable.Title numeric>
|
<DataTable.Title style={{ flex: 1 }} numeric>
|
||||||
{t("jobdetail.labels.lines_qty")}
|
{t("jobdetail.labels.lines_qty")}
|
||||||
</DataTable.Title>
|
</DataTable.Title>
|
||||||
</DataTable.Header>
|
</DataTable.Header>
|
||||||
@@ -59,14 +63,18 @@ export default function JobLines() {
|
|||||||
<DataTable.Cell style={{ flex: 4 }}>
|
<DataTable.Cell style={{ flex: 4 }}>
|
||||||
{item.line_desc}
|
{item.line_desc}
|
||||||
</DataTable.Cell>
|
</DataTable.Cell>
|
||||||
<DataTable.Cell>
|
<DataTable.Cell style={{ flex: 2 }}>
|
||||||
{item.mod_lbr_ty && t(`jobdetail.lbr_types.${item.mod_lbr_ty}`)}
|
{item.mod_lbr_ty && t(`jobdetail.lbr_types.${item.mod_lbr_ty}`)}
|
||||||
</DataTable.Cell>
|
</DataTable.Cell>
|
||||||
<DataTable.Cell numeric>{item.mod_lb_hrs}</DataTable.Cell>
|
<DataTable.Cell style={{ flex: 1 }} numeric>
|
||||||
<DataTable.Cell>
|
{item.mod_lb_hrs}
|
||||||
|
</DataTable.Cell>
|
||||||
|
<DataTable.Cell style={{ flex: 2 }}>
|
||||||
{item.part_type && t(`jobdetail.part_types.${item.part_type}`)}
|
{item.part_type && t(`jobdetail.part_types.${item.part_type}`)}
|
||||||
</DataTable.Cell>
|
</DataTable.Cell>
|
||||||
<DataTable.Cell numeric>{item.part_qty}</DataTable.Cell>
|
<DataTable.Cell style={{ flex: 1 }} numeric>
|
||||||
|
{item.part_qty}
|
||||||
|
</DataTable.Cell>
|
||||||
</DataTable.Row>
|
</DataTable.Row>
|
||||||
))}
|
))}
|
||||||
</DataTable>
|
</DataTable>
|
||||||
|
|||||||
@@ -243,6 +243,9 @@ function JobTombstone({ bodyshop }) {
|
|||||||
</View>
|
</View>
|
||||||
</Card.Content>
|
</Card.Content>
|
||||||
</Card>
|
</Card>
|
||||||
|
<View
|
||||||
|
style={{ height: 64 }} //Spacer
|
||||||
|
/>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,10 @@ export function JobListComponent({ bodyshop }) {
|
|||||||
const jobs = data ? [...(data?.jobs || []), { id: "footer-spacer" }] : [];
|
const jobs = data ? [...(data?.jobs || []), { id: "footer-spacer" }] : [];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SafeAreaView style={{ flex: 1, marginHorizontal: 12 }} edges={["top"]}>
|
<SafeAreaView
|
||||||
|
style={{ flex: 1, marginHorizontal: 12, paddingBottom: 48 }}
|
||||||
|
edges={["top"]}
|
||||||
|
>
|
||||||
<Text
|
<Text
|
||||||
variant="headlineMedium"
|
variant="headlineMedium"
|
||||||
style={{ marginBottom: 12, fontWeight: "600" }}
|
style={{ marginBottom: 12, fontWeight: "600" }}
|
||||||
|
|||||||
@@ -82,7 +82,11 @@ export function SignIn({ emailSignInStart, signingIn }) {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SignInError />
|
<SignInError />
|
||||||
<Button loading={signingIn} onPress={handleSubmit}>
|
<Button
|
||||||
|
loading={signingIn}
|
||||||
|
mode="outlined"
|
||||||
|
onPress={handleSubmit}
|
||||||
|
>
|
||||||
{t("signin.actions.signin")}
|
{t("signin.actions.signin")}
|
||||||
</Button>
|
</Button>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
Reference in New Issue
Block a user