Skip to content

Commit

Permalink
fixed taxon attribute layout issue (in one node record edit mode)
Browse files Browse the repository at this point in the history
  • Loading branch information
SteRiccio committed Feb 8, 2025
1 parent c79fcf1 commit dddfb63
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import React, { useCallback } from "react";
import React, { useCallback, useMemo } from "react";
import PropTypes from "prop-types";

import { NodeDefs } from "@openforis/arena-core";

import { SelectableListWithFilter } from "components";
import { Taxa } from "model";

import { useTaxaFiltered } from "./useTaxaFiltered";

const alwaysIncludeVernacularNames = false;
Expand Down Expand Up @@ -135,9 +136,14 @@ export const NodeTaxonAutocomplete = (props) => {
[updateNodeValue]
);

const filterItemsCallback = useMemo(
() => filterItems({ nodeDef, unlistedTaxon, unknownTaxon }),
[nodeDef, unknownTaxon, unlistedTaxon]
);

return (
<SelectableListWithFilter
filterItems={filterItems({ nodeDef, unlistedTaxon, unknownTaxon })}
filterItems={filterItemsCallback}
itemKeyExtractor={itemKeyExtractor}
itemLabelExtractor={itemLabelExtractor({ nodeDef })}
itemDescriptionExtractor={itemDescriptionExtractor}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { useMemo, useState } from "react";
import { useState } from "react";
import PropTypes from "prop-types";

import { NodeDefs } from "@openforis/arena-core";

import { Button, CloseIconButton, HView, Text, VView, View } from "components";
import { useEffectiveTheme } from "hooks";
import { RecordEditViewMode } from "model";
import { SurveyOptionsSelectors } from "state";

Expand All @@ -13,7 +12,7 @@ import { NodeTaxonEditDialog } from "./NodeTaxonEditDialog";
import { NodeTaxonAutocomplete } from "./NodeTaxonAutocomplete";
import { TaxonValuePreview } from "../../../NodeValuePreview/TaxonValuePreview";
import { useTaxonByNodeValue } from "../../../NodeValuePreview/useTaxonByNodeValue";

import { useDynamicStyles } from "./useDynamicStyles";
import styles from "./styles";

export const NodeTaxonComponent = (props) => {
Expand All @@ -24,7 +23,6 @@ export const NodeTaxonComponent = (props) => {
`rendering NodeTaxonComponent for ${NodeDefs.getName(nodeDef)}`
);
}
const theme = useEffectiveTheme();
const viewMode = SurveyOptionsSelectors.useRecordEditViewMode();

const [editDialogOpen, setEditDialogOpen] = useState(false);
Expand All @@ -38,18 +36,12 @@ export const NodeTaxonComponent = (props) => {

const selectedTaxon = useTaxonByNodeValue({ value });
const selectedTaxonVernacularName = selectedTaxon?.vernacularName;

const selectedTaxonContainerStyle = useMemo(
() => [
styles.selectedTaxonContainer,
{ borderColor: theme.colors.onSurfaceVariant },
{ height: selectedTaxonVernacularName ? 70 : 40 },
],
[selectedTaxonVernacularName, theme.colors.onSurfaceVariant]
);
const { containerStyle, selectedTaxonContainerStyle } = useDynamicStyles({
selectedTaxonVernacularName,
});

return (
<VView style={styles.container}>
<VView style={containerStyle}>
<View style={styles.selectedTaxonWrapper}>
{selectedTaxon ? (
<HView style={selectedTaxonContainerStyle}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { StyleSheet } from "react-native";

export default StyleSheet.create({
container: { gap: 10 },
containerOneNode: { flex: 1 },
searchButton: {
alignSelf: "center",
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { useMemo } from "react";

import { useEffectiveTheme } from "hooks";
import { RecordEditViewMode } from "model";
import { SurveyOptionsSelectors } from "state";

import defaultStyles from "./styles";

export const useDynamicStyles = ({ selectedTaxonVernacularName }) => {
const theme = useEffectiveTheme();
const viewMode = SurveyOptionsSelectors.useRecordEditViewMode();

return useMemo(() => {
const selectedTaxonContainerStyle = [
defaultStyles.selectedTaxonContainer,
{ borderColor: theme.colors.onSurfaceVariant },
{ height: selectedTaxonVernacularName ? 70 : 40 },
];
const containerStyle = [defaultStyles.container];
if (viewMode === RecordEditViewMode.oneNode) {
containerStyle.push(defaultStyles.containerOneNode);
}
return { containerStyle, selectedTaxonContainerStyle };
}, [selectedTaxonVernacularName, theme.colors.onSurfaceVariant, viewMode]);
};

0 comments on commit dddfb63

Please sign in to comment.