@churchapps/apphelper 0.4.3 → 0.4.5

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.
@@ -1,6 +1,5 @@
1
1
  import { PersonInterface } from "@churchapps/helpers";
2
2
  interface CommonProps {
3
- navigateOnCreate?: boolean;
4
3
  onCreate?: (person: PersonInterface) => void;
5
4
  }
6
5
  type ConditionalProps = {
@@ -11,6 +10,6 @@ type ConditionalProps = {
11
10
  onClose?: never;
12
11
  };
13
12
  type Props = CommonProps & ConditionalProps;
14
- export declare function CreatePerson({ navigateOnCreate, onCreate, showInModal, ...props }: Props): import("react/jsx-runtime").JSX.Element;
13
+ export declare function CreatePerson({ onCreate, showInModal, ...props }: Props): import("react/jsx-runtime").JSX.Element;
15
14
  export {};
16
15
  //# sourceMappingURL=CreatePerson.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePerson.d.ts","sourceRoot":"","sources":["../../src/components/CreatePerson.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAe,eAAe,EAAsB,MAAM,qBAAqB,CAAC;AAKvF,UAAU,WAAW;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAC9C;AAED,KAAK,gBAAgB,GACjB;IAAE,WAAW,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAAE,GAC3C;IAAE,WAAW,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAC;CAAE,CAAA;AAE7C,KAAK,KAAK,GAAG,WAAW,GAAG,gBAAgB,CAAA;AAE3C,wBAAgB,YAAY,CAAC,EAAE,gBAAuB,EAAE,QAAmB,EAAE,WAAmB,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,2CAqHlH"}
1
+ {"version":3,"file":"CreatePerson.d.ts","sourceRoot":"","sources":["../../src/components/CreatePerson.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAe,eAAe,EAAsB,MAAM,qBAAqB,CAAC;AAKvF,UAAU,WAAW;IACpB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAC7C;AAED,KAAK,gBAAgB,GAClB;IAAE,WAAW,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAAE,GAC3C;IAAE,WAAW,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAC;CAAE,CAAA;AAE5C,KAAK,KAAK,GAAG,WAAW,GAAG,gBAAgB,CAAA;AAE3C,wBAAgB,YAAY,CAAC,EAAE,QAAoB,EAAE,WAAmB,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,2CAmH1F"}
@@ -7,14 +7,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.CreatePerson = CreatePerson;
8
8
  const jsx_runtime_1 = require("react/jsx-runtime");
9
9
  const react_1 = __importDefault(require("react"));
10
- const react_router_dom_1 = require("react-router-dom");
11
10
  const helpers_1 = require("../helpers");
12
11
  const helpers_2 = require("@churchapps/helpers");
13
12
  const material_1 = require("@mui/material");
14
13
  const ErrorMessages_1 = require("./ErrorMessages");
15
14
  const useMountedState_1 = require("../hooks/useMountedState");
16
- function CreatePerson({ navigateOnCreate = true, onCreate = () => { }, showInModal = false, ...props }) {
17
- const navigate = (0, react_router_dom_1.useNavigate)();
15
+ function CreatePerson({ onCreate = () => { }, showInModal = false, ...props }) {
18
16
  const [person, setPerson] = react_1.default.useState({ name: { first: "", last: "" }, contactInfo: {} });
19
17
  const [errors, setErrors] = react_1.default.useState([]);
20
18
  const [isSubmitting, setIsSubmitting] = react_1.default.useState(false);
@@ -61,7 +59,6 @@ function CreatePerson({ navigateOnCreate = true, onCreate = () => { }, showInMod
61
59
  person.id = data[0].id;
62
60
  onCreate(person);
63
61
  setPerson({ ...person, name: { first: "", last: "" }, contactInfo: { email: "" } });
64
- navigateOnCreate && navigate("/people/" + person.id);
65
62
  }).finally(() => {
66
63
  if (isMounted()) {
67
64
  setIsSubmitting(false);
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePerson.js","sourceRoot":"","sources":["../../src/components/CreatePerson.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreatePerson.js","sourceRoot":"","sources":["../../src/components/CreatePerson.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAmBb,oCAmHC;;AApID,kDAAyB;AACzB,wCAA2D;AAC3D,iDAAuF;AACvF,4CAA0G;AAC1G,mDAA+C;AAC/C,8DAA0D;AAY1D,SAAgB,YAAY,CAAC,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,KAAK,EAAS;IAC1F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAkB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IAChH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAW,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAA,iCAAe,GAAE,CAAA;IAEnC,MAAM,QAAQ,GAAG,GAAG,EAAE;QACrB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjE,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,CAAgF,EAAE,EAAE;QACzG,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,EAAqB,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,OAAO;gBAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBAAC,MAAM;YAC1C,KAAK,MAAM;gBAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAAC,MAAM;YACxC,KAAK,OAAO;gBAAE,CAAC,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;gBAAC,MAAM;QAClD,CAAC;QACD,SAAS,CAAC,CAAC,CAAC,CAAC;IACd,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,4CAA4C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpG,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;QACrC,MAAM,MAAM,GAAG,MAAM,mBAAS,CAAC,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACxG,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACvB,IAAI,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAwB,CAAC;QAEjE,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,mBAAS,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtE,mBAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAChE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;gBACtB,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACjB,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACf,IAAI,SAAS,EAAE,EAAE,CAAC;oBACjB,eAAe,CAAC,KAAK,CAAC,CAAC;oBACvB,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChC,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAA;IAED,KAAK,UAAU,YAAY;QAC1B,IAAI,QAAQ,EAAE,EAAE,CAAC;YAChB,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC7H,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9C,SAAS,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACP,MAAM,cAAc,GAAG,MAAM,kBAAkB,EAAE,CAAC;oBAClD,IAAI,cAAc,EAAE,CAAC;wBACpB,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,oCAAoC,cAAc,CAAC,WAAW,CAAC,KAAK,kCAAkC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;4BAClM,UAAU,EAAE,CAAC;wBACd,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,UAAU,EAAE,CAAC;oBACd,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,UAAU,EAAE,CAAC;YACd,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,oBAAU,CAAC,WAAW,CAAC,qBAAW,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChF,IAAI,WAAW,EAAE,CAAC;QACjB,OAAO,CACN,6DACC,uBAAC,6BAAa,IAAC,MAAM,EAAE,MAAM,GAAI,EACjC,wBAAC,iBAAM,IAAC,IAAI,QAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,mBAC7C,uBAAC,sBAAW,cAAE,gBAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,GAAe,EACtE,wBAAC,wBAAa,eACb,uBAAC,oBAAS,IAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,QAAC,SAAS,QAAC,IAAI,EAAC,MAAM,gBAAY,WAAW,EAAC,KAAK,EAAE,gBAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAwC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,YAAY,GAAI,EAClS,uBAAC,oBAAS,IAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,QAAC,SAAS,QAAC,IAAI,EAAC,MAAM,gBAAY,UAAU,EAAC,KAAK,EAAE,gBAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAwC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,YAAY,GAAI,EAC9R,uBAAC,oBAAS,IAAC,MAAM,EAAC,OAAO,EAAC,SAAS,QAAC,IAAI,EAAC,MAAM,gBAAY,OAAO,EAAC,KAAK,EAAE,gBAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAwC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,YAAY,GAAI,IACzQ,EAChB,wBAAC,wBAAa,eACb,uBAAC,iBAAM,IAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,YAAG,gBAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAU,EACrF,uBAAC,iBAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,WAAW,EAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,YAAG,gBAAM,CAAC,KAAK,CAAC,YAAY,CAAC,GAAU,IAC/G,IACR,IACP,CACH,CAAA;IACF,CAAC;IACD,OAAO,CACN,4CACC,8BAAG,SAAS,EAAC,qBAAqB,YAAC,wCAAI,gBAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,GAAK,GAAI,EACzF,uBAAC,6BAAa,IAAC,MAAM,EAAE,MAAM,GAAI,EACjC,wBAAC,eAAI,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,QAAQ,aAC9C,uBAAC,eAAI,IAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,YAC5B,uBAAC,oBAAS,IAAC,IAAI,EAAC,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,QAAQ,QAAC,SAAS,QAAC,IAAI,EAAC,MAAM,gBAAY,WAAW,EAAC,KAAK,EAAE,gBAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAwC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,YAAY,GAAI,GACxS,EACP,uBAAC,eAAI,IAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,YAC5B,uBAAC,oBAAS,IAAC,IAAI,EAAC,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,QAAQ,QAAC,SAAS,QAAC,IAAI,EAAC,MAAM,gBAAY,UAAU,EAAC,KAAK,EAAE,gBAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAwC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,YAAY,GAAI,GACpS,EACP,uBAAC,eAAI,IAAC,IAAI,EAAE,EAAE,YACb,uBAAC,oBAAS,IAAC,IAAI,EAAC,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,SAAS,QAAC,IAAI,EAAC,MAAM,gBAAY,OAAO,EAAC,KAAK,EAAE,gBAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAwC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,YAAY,GAAI,GAC9R,EACP,uBAAC,eAAI,IAAC,IAAI,EAAE,EAAE,YACb,uBAAC,iBAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,QAAC,OAAO,EAAC,WAAW,EAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,YAAG,gBAAM,CAAC,KAAK,CAAC,YAAY,CAAC,GAAU,GAClI,IACD,IACF,CACN,CAAA;AACF,CAAC"}
@@ -9,6 +9,7 @@ interface Props {
9
9
  includeEmail?: boolean;
10
10
  actionLabel?: string;
11
11
  showCreatePersonOnNotFound?: boolean;
12
+ onCreate?: (person: PersonInterface) => void;
12
13
  }
13
14
  export declare const PersonAdd: React.FC<Props>;
14
15
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"PersonAdd.d.ts","sourceRoot":"","sources":["../../src/components/PersonAdd.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAKrD,UAAU,KAAK;IACb,WAAW,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC;IACjD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0DrC,CAAA"}
1
+ {"version":3,"file":"PersonAdd.d.ts","sourceRoot":"","sources":["../../src/components/PersonAdd.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAKrD,UAAU,KAAK;IACd,WAAW,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC;IACjD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAE7C;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0DrC,CAAA"}
@@ -8,7 +8,7 @@ const helpers_1 = require("../helpers");
8
8
  const material_1 = require("@mui/material");
9
9
  const SmallButton_1 = require("./SmallButton");
10
10
  const CreatePerson_1 = require("./CreatePerson");
11
- const PersonAdd = ({ addFunction, getPhotoUrl, searchClicked, filterList = [], includeEmail = false, actionLabel, showCreatePersonOnNotFound = false }) => {
11
+ const PersonAdd = ({ addFunction, getPhotoUrl, searchClicked, filterList = [], includeEmail = false, actionLabel, showCreatePersonOnNotFound = false, onCreate }) => {
12
12
  const [searchResults, setSearchResults] = (0, react_1.useState)([]);
13
13
  const [searchText, setSearchText] = (0, react_1.useState)("");
14
14
  const [hasSearched, setHasSearched] = (0, react_1.useState)(false);
@@ -45,7 +45,8 @@ const PersonAdd = ({ addFunction, getPhotoUrl, searchClicked, filterList = [], i
45
45
  const sr = searchResults[i];
46
46
  rows.push((0, jsx_runtime_1.jsxs)(material_1.TableRow, { children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { children: (0, jsx_runtime_1.jsx)("img", { src: getPhotoUrl(sr), alt: "avatar" }) }), (0, jsx_runtime_1.jsxs)(material_1.TableCell, { children: [sr.name.display, includeEmail && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("i", { style: { color: "#999" }, children: sr.contactInfo.email })] }))] }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: (0, jsx_runtime_1.jsx)(SmallButton_1.SmallButton, { color: "success", icon: "person", text: actionLabel || "Add", ariaLabel: "addPerson", onClick: () => handleAdd(sr), "data-testid": `add-person-${sr.id}` }) })] }, sr.id));
47
47
  }
48
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.TextField, { fullWidth: true, name: "personAddText", label: helpers_1.Locale.label("person.person"), value: searchText, onChange: handleChange, onKeyDown: handleKeyDown, "data-testid": "person-search-input", InputProps: { endAdornment: (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", id: "searchButton", "data-testid": "search-button", onClick: handleSearch, children: helpers_1.Locale.label("common.search") }) } }), showCreatePersonOnNotFound && hasSearched && searchText && searchResults.length === 0 && ((0, jsx_runtime_1.jsxs)(material_1.Typography, { sx: { marginTop: "7px" }, children: [helpers_1.Locale.label("person.noRec"), " ", (0, jsx_runtime_1.jsx)("a", { href: "about:blank", onClick: (e) => { e.preventDefault(); setOpen(true); }, children: helpers_1.Locale.label("createPerson.addNewPerson") })] })), (0, jsx_runtime_1.jsx)(material_1.Table, { size: "small", id: "householdMemberAddTable", children: (0, jsx_runtime_1.jsx)(material_1.TableBody, { children: rows }) }), open && (0, jsx_runtime_1.jsx)(CreatePerson_1.CreatePerson, { showInModal: true, onClose: () => { setOpen(false); }, navigateOnCreate: false, onCreate: person => { setSearchText(""); setSearchResults([person]); } })] }));
48
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.TextField, { fullWidth: true, name: "personAddText", label: helpers_1.Locale.label("person.person"), value: searchText, onChange: handleChange, onKeyDown: handleKeyDown, "data-testid": "person-search-input", InputProps: { endAdornment: (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", id: "searchButton", "data-testid": "search-button", onClick: handleSearch, children: helpers_1.Locale.label("common.search") }) } }), showCreatePersonOnNotFound && hasSearched && searchText && searchResults.length === 0 && ((0, jsx_runtime_1.jsxs)(material_1.Typography, { sx: { marginTop: "7px" }, children: [helpers_1.Locale.label("person.noRec"), " ", (0, jsx_runtime_1.jsx)("a", { href: "about:blank", onClick: (e) => { e.preventDefault(); setOpen(true); }, children: helpers_1.Locale.label("createPerson.addNewPerson") })] })), (0, jsx_runtime_1.jsx)(material_1.Table, { size: "small", id: "householdMemberAddTable", children: (0, jsx_runtime_1.jsx)(material_1.TableBody, { children: rows }) }), open && (0, jsx_runtime_1.jsx)(CreatePerson_1.CreatePerson, { showInModal: true, onClose: () => { setOpen(false); }, onCreate: person => { setSearchText(""); setSearchResults([person]); if (onCreate)
49
+ onCreate(person); } })] }));
49
50
  };
50
51
  exports.PersonAdd = PersonAdd;
51
52
  //# sourceMappingURL=PersonAdd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PersonAdd.js","sourceRoot":"","sources":["../../src/components/PersonAdd.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PersonAdd.js","sourceRoot":"","sources":["../../src/components/PersonAdd.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@churchapps/apphelper",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "description": "Library of helper functions for React and NextJS ChurchApps",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
 
3
3
  import React from "react"
4
- import { useNavigate } from "react-router-dom"
5
4
  import { UserHelper, ApiHelper, Locale } from "../helpers";
6
5
  import { Permissions, PersonInterface, HouseholdInterface } from "@churchapps/helpers";
7
6
  import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Grid, TextField } from "@mui/material"
@@ -9,131 +8,128 @@ import { ErrorMessages } from "./ErrorMessages"
9
8
  import { useMountedState } from "../hooks/useMountedState"
10
9
 
11
10
  interface CommonProps {
12
- navigateOnCreate?: boolean;
13
- onCreate?: (person: PersonInterface) => void;
11
+ onCreate?: (person: PersonInterface) => void;
14
12
  }
15
13
 
16
14
  type ConditionalProps =
17
- | { showInModal: true; onClose: () => void; }
18
- | { showInModal?: false; onClose?: never; }
15
+ | { showInModal: true; onClose: () => void; }
16
+ | { showInModal?: false; onClose?: never; }
19
17
 
20
18
  type Props = CommonProps & ConditionalProps
21
19
 
22
- export function CreatePerson({ navigateOnCreate = true, onCreate = () => {}, showInModal = false, ...props }: Props) {
23
- const navigate = useNavigate()
24
- const [person, setPerson] = React.useState<PersonInterface>({ name: { first: "", last: "" }, contactInfo: {} });
25
- const [errors, setErrors] = React.useState<string[]>([]);
26
- const [isSubmitting, setIsSubmitting] = React.useState(false);
27
- const isMounted = useMountedState()
20
+ export function CreatePerson({ onCreate = () => { }, showInModal = false, ...props }: Props) {
21
+ const [person, setPerson] = React.useState<PersonInterface>({ name: { first: "", last: "" }, contactInfo: {} });
22
+ const [errors, setErrors] = React.useState<string[]>([]);
23
+ const [isSubmitting, setIsSubmitting] = React.useState(false);
24
+ const isMounted = useMountedState()
28
25
 
29
- const validate = () => {
30
- const result = [];
31
- if (!person.name?.first) result.push("Please enter a first name.");
32
- if (!person.name?.last) result.push("Please enter a last name.");
33
- setErrors(result);
34
- return result.length === 0;
35
- }
26
+ const validate = () => {
27
+ const result = [];
28
+ if (!person.name?.first) result.push("Please enter a first name.");
29
+ if (!person.name?.last) result.push("Please enter a last name.");
30
+ setErrors(result);
31
+ return result.length === 0;
32
+ }
36
33
 
37
- const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) => {
38
- setErrors([]);
39
- const p = { ...person } as PersonInterface;
40
- let value = e.target.value;
41
- switch (e.target.name) {
42
- case "first": p.name.first = value; break;
43
- case "last": p.name.last = value; break;
44
- case "email": p.contactInfo.email = value; break;
45
- }
46
- setPerson(p);
47
- }
34
+ const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) => {
35
+ setErrors([]);
36
+ const p = { ...person } as PersonInterface;
37
+ let value = e.target.value;
38
+ switch (e.target.name) {
39
+ case "first": p.name.first = value; break;
40
+ case "last": p.name.last = value; break;
41
+ case "email": p.contactInfo.email = value; break;
42
+ }
43
+ setPerson(p);
44
+ }
48
45
 
49
- const validateEmail = (email: string) => (/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(.\w{2,3})+$/.test(email));
46
+ const validateEmail = (email: string) => (/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(.\w{2,3})+$/.test(email));
50
47
 
51
- const checkExistingEmail = async () => {
52
- const result = await ApiHelper.get("/people/search?email=" + person.contactInfo.email, "MembershipApi");
53
- return result[0];
54
- }
48
+ const checkExistingEmail = async () => {
49
+ const result = await ApiHelper.get("/people/search?email=" + person.contactInfo.email, "MembershipApi");
50
+ return result[0];
51
+ }
55
52
 
56
- const handleSave = () => {
57
- let household = { name: person.name.last } as HouseholdInterface;
53
+ const handleSave = () => {
54
+ let household = { name: person.name.last } as HouseholdInterface;
58
55
 
59
- setIsSubmitting(true);
60
- ApiHelper.post("/households", [household], "MembershipApi").then(data => {
61
- household.id = data[0].id;
62
- person.householdId = household.id;
63
- person.name.display = [person.name.first, person.name.last].join(" ");
64
- ApiHelper.post("/people", [person], "MembershipApi").then(data => {
65
- person.id = data[0].id
66
- onCreate(person);
67
- setPerson({...person, name: { first: "", last: "" }, contactInfo: { email: "" }});
68
- navigateOnCreate && navigate("/people/" + person.id);
69
- }).finally(() => {
70
- if (isMounted()) {
71
- setIsSubmitting(false);
72
- showInModal && props.onClose();
73
- }
74
- });
75
- });
76
- }
56
+ setIsSubmitting(true);
57
+ ApiHelper.post("/households", [household], "MembershipApi").then(data => {
58
+ household.id = data[0].id;
59
+ person.householdId = household.id;
60
+ person.name.display = [person.name.first, person.name.last].join(" ");
61
+ ApiHelper.post("/people", [person], "MembershipApi").then(data => {
62
+ person.id = data[0].id
63
+ onCreate(person);
64
+ setPerson({ ...person, name: { first: "", last: "" }, contactInfo: { email: "" } });
65
+ }).finally(() => {
66
+ if (isMounted()) {
67
+ setIsSubmitting(false);
68
+ showInModal && props.onClose();
69
+ }
70
+ });
71
+ });
72
+ }
77
73
 
78
- async function handleSubmit() {
79
- if (validate()) {
80
- if (person.contactInfo.email && (person.contactInfo.email?.trim() !== undefined || person.contactInfo.email?.trim() !== "")) {
81
- if (!validateEmail(person.contactInfo.email)) {
82
- setErrors(["Please enter a valid email address."]);
83
- } else {
84
- const existingPerson = await checkExistingEmail();
85
- if (existingPerson) {
86
- if (window.confirm(`${existingPerson.name.display} already exists with an email of ${existingPerson.contactInfo.email}. Are you sure you wish to add ${person.name.first} ${person.name.last}?`)) {
87
- handleSave();
88
- }
89
- } else {
90
- handleSave();
91
- }
92
- }
93
- } else {
94
- handleSave();
95
- }
96
- }
97
- }
74
+ async function handleSubmit() {
75
+ if (validate()) {
76
+ if (person.contactInfo.email && (person.contactInfo.email?.trim() !== undefined || person.contactInfo.email?.trim() !== "")) {
77
+ if (!validateEmail(person.contactInfo.email)) {
78
+ setErrors(["Please enter a valid email address."]);
79
+ } else {
80
+ const existingPerson = await checkExistingEmail();
81
+ if (existingPerson) {
82
+ if (window.confirm(`${existingPerson.name.display} already exists with an email of ${existingPerson.contactInfo.email}. Are you sure you wish to add ${person.name.first} ${person.name.last}?`)) {
83
+ handleSave();
84
+ }
85
+ } else {
86
+ handleSave();
87
+ }
88
+ }
89
+ } else {
90
+ handleSave();
91
+ }
92
+ }
93
+ }
98
94
 
99
- if (!UserHelper.checkAccess(Permissions.membershipApi.people.edit)) return null;
100
- if (showInModal) {
101
- return(
102
- <>
103
- <ErrorMessages errors={errors} />
104
- <Dialog open onClose={props.onClose} fullWidth>
105
- <DialogTitle>{Locale.label("createPerson.addNewPerson")}</DialogTitle>
106
- <DialogContent>
107
- <TextField margin="dense" required fullWidth type="text" aria-label="firstName" label={Locale.label("createPerson.firstName")} name="first" value={person.name.first || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
108
- <TextField margin="dense" required fullWidth type="text" aria-label="lastName" label={Locale.label("createPerson.lastName")} name="last" value={person.name.last || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
109
- <TextField margin="dense" fullWidth type="text" aria-label="email" label={Locale.label("createPerson.email")} name="email" value={person.contactInfo.email || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
110
- </DialogContent>
111
- <DialogActions>
112
- <Button onClick={() => { props.onClose(); }}>{Locale.label("common.cancel")}</Button>
113
- <Button type="submit" variant="contained" disabled={isSubmitting} onClick={handleSubmit}>{Locale.label("common.add")}</Button>
114
- </DialogActions>
115
- </Dialog>
116
- </>
117
- )
118
- }
119
- return (
120
- <div>
121
- <p className="pl-1 mb-3 text-dark"><b>{Locale.label("createPerson.addNewPerson")}</b></p>
122
- <ErrorMessages errors={errors} />
123
- <Grid container spacing={3} alignItems="center">
124
- <Grid size={{ xs: 12, md: 6 }}>
125
- <TextField size="small" margin="none" required fullWidth type="text" aria-label="firstName" label={Locale.label("createPerson.firstName")} name="first" value={person.name.first || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
126
- </Grid>
127
- <Grid size={{ xs: 12, md: 6 }}>
128
- <TextField size="small" margin="none" required fullWidth type="text" aria-label="lastName" label={Locale.label("createPerson.lastName")} name="last" value={person.name.last || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
129
- </Grid>
130
- <Grid size={12}>
131
- <TextField size="small" margin="none" fullWidth type="text" aria-label="email" label={Locale.label("createPerson.email")} name="email" value={person.contactInfo.email || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
132
- </Grid>
133
- <Grid size={12}>
134
- <Button type="submit" fullWidth variant="contained" disabled={isSubmitting} onClick={handleSubmit}>{Locale.label("common.add")}</Button>
135
- </Grid>
136
- </Grid>
137
- </div>
138
- )
95
+ if (!UserHelper.checkAccess(Permissions.membershipApi.people.edit)) return null;
96
+ if (showInModal) {
97
+ return (
98
+ <>
99
+ <ErrorMessages errors={errors} />
100
+ <Dialog open onClose={props.onClose} fullWidth>
101
+ <DialogTitle>{Locale.label("createPerson.addNewPerson")}</DialogTitle>
102
+ <DialogContent>
103
+ <TextField margin="dense" required fullWidth type="text" aria-label="firstName" label={Locale.label("createPerson.firstName")} name="first" value={person.name.first || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
104
+ <TextField margin="dense" required fullWidth type="text" aria-label="lastName" label={Locale.label("createPerson.lastName")} name="last" value={person.name.last || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
105
+ <TextField margin="dense" fullWidth type="text" aria-label="email" label={Locale.label("createPerson.email")} name="email" value={person.contactInfo.email || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
106
+ </DialogContent>
107
+ <DialogActions>
108
+ <Button onClick={() => { props.onClose(); }}>{Locale.label("common.cancel")}</Button>
109
+ <Button type="submit" variant="contained" disabled={isSubmitting} onClick={handleSubmit}>{Locale.label("common.add")}</Button>
110
+ </DialogActions>
111
+ </Dialog>
112
+ </>
113
+ )
114
+ }
115
+ return (
116
+ <div>
117
+ <p className="pl-1 mb-3 text-dark"><b>{Locale.label("createPerson.addNewPerson")}</b></p>
118
+ <ErrorMessages errors={errors} />
119
+ <Grid container spacing={3} alignItems="center">
120
+ <Grid size={{ xs: 12, md: 6 }}>
121
+ <TextField size="small" margin="none" required fullWidth type="text" aria-label="firstName" label={Locale.label("createPerson.firstName")} name="first" value={person.name.first || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
122
+ </Grid>
123
+ <Grid size={{ xs: 12, md: 6 }}>
124
+ <TextField size="small" margin="none" required fullWidth type="text" aria-label="lastName" label={Locale.label("createPerson.lastName")} name="last" value={person.name.last || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
125
+ </Grid>
126
+ <Grid size={12}>
127
+ <TextField size="small" margin="none" fullWidth type="text" aria-label="email" label={Locale.label("createPerson.email")} name="email" value={person.contactInfo.email || ""} onChange={handleChange} onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => e.key === "Enter" && handleSubmit} />
128
+ </Grid>
129
+ <Grid size={12}>
130
+ <Button type="submit" fullWidth variant="contained" disabled={isSubmitting} onClick={handleSubmit}>{Locale.label("common.add")}</Button>
131
+ </Grid>
132
+ </Grid>
133
+ </div>
134
+ )
139
135
  }
@@ -3,77 +3,79 @@
3
3
  import React, { useState } from "react";
4
4
  import { ApiHelper, Locale } from "../helpers";
5
5
  import { PersonInterface } from "@churchapps/helpers"
6
- import { TextField, Button, Table, TableBody, TableRow, TableCell, Typography } from "@mui/material";
6
+ import { TextField, Button, Table, TableBody, TableRow, TableCell, Typography, useThemeProps } from "@mui/material";
7
7
  import { SmallButton } from "./SmallButton";
8
8
  import { CreatePerson } from "./CreatePerson";
9
9
 
10
10
  interface Props {
11
- addFunction: (person: PersonInterface) => void;
12
- person?: PersonInterface;
13
- getPhotoUrl: (person: PersonInterface) => string;
14
- searchClicked?: () => void;
15
- filterList?: string[];
16
- includeEmail?: boolean;
17
- actionLabel?: string;
18
- showCreatePersonOnNotFound?: boolean;
11
+ addFunction: (person: PersonInterface) => void;
12
+ person?: PersonInterface;
13
+ getPhotoUrl: (person: PersonInterface) => string;
14
+ searchClicked?: () => void;
15
+ filterList?: string[];
16
+ includeEmail?: boolean;
17
+ actionLabel?: string;
18
+ showCreatePersonOnNotFound?: boolean;
19
+ onCreate?: (person: PersonInterface) => void;
20
+
19
21
  }
20
22
 
21
- export const PersonAdd: React.FC<Props> = ({ addFunction, getPhotoUrl, searchClicked, filterList = [], includeEmail = false, actionLabel, showCreatePersonOnNotFound = false }) => {
22
- const [searchResults, setSearchResults] = useState<PersonInterface[]>([]);
23
- const [searchText, setSearchText] = useState("");
24
- const [hasSearched, setHasSearched] = useState<boolean>(false);
25
- const [open, setOpen] = useState<boolean>(false);
23
+ export const PersonAdd: React.FC<Props> = ({ addFunction, getPhotoUrl, searchClicked, filterList = [], includeEmail = false, actionLabel, showCreatePersonOnNotFound = false, onCreate }) => {
24
+ const [searchResults, setSearchResults] = useState<PersonInterface[]>([]);
25
+ const [searchText, setSearchText] = useState("");
26
+ const [hasSearched, setHasSearched] = useState<boolean>(false);
27
+ const [open, setOpen] = useState<boolean>(false);
26
28
 
27
- const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => { e.preventDefault(); setHasSearched(false); setSearchText(e.currentTarget.value); }
28
- const handleKeyDown = (e: React.KeyboardEvent<any>) => { if (e.key === "Enter") { e.preventDefault(); handleSearch(null); } }
29
+ const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => { e.preventDefault(); setHasSearched(false); setSearchText(e.currentTarget.value); }
30
+ const handleKeyDown = (e: React.KeyboardEvent<any>) => { if (e.key === "Enter") { e.preventDefault(); handleSearch(null); } }
29
31
 
30
- const handleSearch = (e: React.MouseEvent) => {
31
- if (e !== null) e.preventDefault();
32
- let term = searchText.trim();
33
- ApiHelper.post("/people/search", { term: term }, "MembershipApi")
34
- .then((data: PersonInterface[]) => {
35
- setHasSearched(true);
36
- const filteredResult = data.filter(s => !filterList.includes(s.id))
37
- setSearchResults(filteredResult);
38
- if (searchClicked) {
39
- searchClicked();
40
- }
41
- });
42
- }
43
- const handleAdd = (person: PersonInterface) => {
44
- let sr: PersonInterface[] = [...searchResults];
45
- const idx = sr.indexOf(person);
46
- sr.splice(idx, 1);
47
- setSearchResults(sr);
48
- addFunction(person);
49
- }
32
+ const handleSearch = (e: React.MouseEvent) => {
33
+ if (e !== null) e.preventDefault();
34
+ let term = searchText.trim();
35
+ ApiHelper.post("/people/search", { term: term }, "MembershipApi")
36
+ .then((data: PersonInterface[]) => {
37
+ setHasSearched(true);
38
+ const filteredResult = data.filter(s => !filterList.includes(s.id))
39
+ setSearchResults(filteredResult);
40
+ if (searchClicked) {
41
+ searchClicked();
42
+ }
43
+ });
44
+ }
45
+ const handleAdd = (person: PersonInterface) => {
46
+ let sr: PersonInterface[] = [...searchResults];
47
+ const idx = sr.indexOf(person);
48
+ sr.splice(idx, 1);
49
+ setSearchResults(sr);
50
+ addFunction(person);
51
+ }
50
52
 
51
- //<button className="text-success no-default-style" aria-label="addPerson" data-index={i} onClick={handleAdd}><Icon>person</Icon> Add</button>
52
- let rows = [];
53
- for (let i = 0; i < searchResults.length; i++) {
54
- const sr = searchResults[i];
53
+ //<button className="text-success no-default-style" aria-label="addPerson" data-index={i} onClick={handleAdd}><Icon>person</Icon> Add</button>
54
+ let rows = [];
55
+ for (let i = 0; i < searchResults.length; i++) {
56
+ const sr = searchResults[i];
55
57
 
56
- rows.push(
57
- <TableRow key={sr.id}>
58
- <TableCell><img src={getPhotoUrl(sr)} alt="avatar" /></TableCell>
59
- <TableCell>{sr.name.display}{includeEmail && (<><br /><i style={{ color: "#999" }}>{sr.contactInfo.email}</i></>)}</TableCell>
60
- <TableCell>
61
- <SmallButton color="success" icon="person" text={actionLabel || "Add"} ariaLabel="addPerson" onClick={() => handleAdd(sr)} data-testid={`add-person-${sr.id}`} />
62
- </TableCell>
63
- </TableRow>
64
- );
65
- }
58
+ rows.push(
59
+ <TableRow key={sr.id}>
60
+ <TableCell><img src={getPhotoUrl(sr)} alt="avatar" /></TableCell>
61
+ <TableCell>{sr.name.display}{includeEmail && (<><br /><i style={{ color: "#999" }}>{sr.contactInfo.email}</i></>)}</TableCell>
62
+ <TableCell>
63
+ <SmallButton color="success" icon="person" text={actionLabel || "Add"} ariaLabel="addPerson" onClick={() => handleAdd(sr)} data-testid={`add-person-${sr.id}`} />
64
+ </TableCell>
65
+ </TableRow>
66
+ );
67
+ }
66
68
 
67
- return (
68
- <>
69
- <TextField fullWidth name="personAddText" label={Locale.label("person.person")} value={searchText} onChange={handleChange} onKeyDown={handleKeyDown} data-testid="person-search-input"
70
- InputProps={{ endAdornment: <Button variant="contained" id="searchButton" data-testid="search-button" onClick={handleSearch}>{Locale.label("common.search")}</Button> }}
71
- />
72
- {showCreatePersonOnNotFound && hasSearched && searchText && searchResults.length === 0 && (
73
- <Typography sx={{ marginTop: "7px" }}>{Locale.label("person.noRec")} <a href="about:blank" onClick={(e) => { e.preventDefault(); setOpen(true); }}>{Locale.label("createPerson.addNewPerson")}</a></Typography>
74
- )}
75
- <Table size="small" id="householdMemberAddTable"><TableBody>{rows}</TableBody></Table>
76
- {open && <CreatePerson showInModal onClose={() => { setOpen(false); }} navigateOnCreate={false} onCreate={person => { setSearchText(""); setSearchResults([person]) }} />}
77
- </>
78
- );
69
+ return (
70
+ <>
71
+ <TextField fullWidth name="personAddText" label={Locale.label("person.person")} value={searchText} onChange={handleChange} onKeyDown={handleKeyDown} data-testid="person-search-input"
72
+ InputProps={{ endAdornment: <Button variant="contained" id="searchButton" data-testid="search-button" onClick={handleSearch}>{Locale.label("common.search")}</Button> }}
73
+ />
74
+ {showCreatePersonOnNotFound && hasSearched && searchText && searchResults.length === 0 && (
75
+ <Typography sx={{ marginTop: "7px" }}>{Locale.label("person.noRec")} <a href="about:blank" onClick={(e) => { e.preventDefault(); setOpen(true); }}>{Locale.label("createPerson.addNewPerson")}</a></Typography>
76
+ )}
77
+ <Table size="small" id="householdMemberAddTable"><TableBody>{rows}</TableBody></Table>
78
+ {open && <CreatePerson showInModal onClose={() => { setOpen(false); }} onCreate={person => { setSearchText(""); setSearchResults([person]); if (onCreate) onCreate(person); }} />}
79
+ </>
80
+ );
79
81
  }