@tellescope/react-components 1.232.0 → 1.233.0

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.
Files changed (50) hide show
  1. package/lib/cjs/Forms/forms.js +1 -1
  2. package/lib/cjs/Forms/forms.js.map +1 -1
  3. package/lib/cjs/Forms/forms.v2.d.ts +1 -1
  4. package/lib/cjs/Forms/forms.v2.js +1 -1
  5. package/lib/cjs/Forms/forms.v2.js.map +1 -1
  6. package/lib/cjs/Forms/hooks.d.ts.map +1 -1
  7. package/lib/cjs/Forms/hooks.js +24 -0
  8. package/lib/cjs/Forms/hooks.js.map +1 -1
  9. package/lib/cjs/Forms/inputs.d.ts +4 -1
  10. package/lib/cjs/Forms/inputs.d.ts.map +1 -1
  11. package/lib/cjs/Forms/inputs.js +100 -26
  12. package/lib/cjs/Forms/inputs.js.map +1 -1
  13. package/lib/cjs/Forms/inputs.v2.d.ts +5 -7
  14. package/lib/cjs/Forms/inputs.v2.d.ts.map +1 -1
  15. package/lib/cjs/Forms/inputs.v2.js +7 -234
  16. package/lib/cjs/Forms/inputs.v2.js.map +1 -1
  17. package/lib/esm/CMS/components.d.ts +0 -1
  18. package/lib/esm/CMS/components.d.ts.map +1 -1
  19. package/lib/esm/Forms/form_responses.d.ts +0 -1
  20. package/lib/esm/Forms/form_responses.d.ts.map +1 -1
  21. package/lib/esm/Forms/forms.d.ts +3 -3
  22. package/lib/esm/Forms/forms.js +1 -1
  23. package/lib/esm/Forms/forms.js.map +1 -1
  24. package/lib/esm/Forms/forms.v2.d.ts +4 -4
  25. package/lib/esm/Forms/forms.v2.js +1 -1
  26. package/lib/esm/Forms/forms.v2.js.map +1 -1
  27. package/lib/esm/Forms/hooks.d.ts +0 -1
  28. package/lib/esm/Forms/hooks.d.ts.map +1 -1
  29. package/lib/esm/Forms/hooks.js +24 -0
  30. package/lib/esm/Forms/hooks.js.map +1 -1
  31. package/lib/esm/Forms/inputs.d.ts +5 -2
  32. package/lib/esm/Forms/inputs.d.ts.map +1 -1
  33. package/lib/esm/Forms/inputs.js +101 -27
  34. package/lib/esm/Forms/inputs.js.map +1 -1
  35. package/lib/esm/Forms/inputs.v2.d.ts +6 -8
  36. package/lib/esm/Forms/inputs.v2.d.ts.map +1 -1
  37. package/lib/esm/Forms/inputs.v2.js +7 -234
  38. package/lib/esm/Forms/inputs.v2.js.map +1 -1
  39. package/lib/esm/controls.d.ts +2 -2
  40. package/lib/esm/inputs.d.ts +1 -1
  41. package/lib/esm/inputs.native.d.ts +0 -1
  42. package/lib/esm/inputs.native.d.ts.map +1 -1
  43. package/lib/esm/state.d.ts +315 -315
  44. package/lib/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +11 -11
  46. package/src/Forms/forms.tsx +2 -2
  47. package/src/Forms/forms.v2.tsx +1 -1
  48. package/src/Forms/hooks.tsx +33 -5
  49. package/src/Forms/inputs.tsx +151 -29
  50. package/src/Forms/inputs.v2.tsx +9 -299
@@ -3,7 +3,7 @@ import { SxProps, TextFieldProps } from "@mui/material";
3
3
  import { FormInputProps } from "./types";
4
4
  import { Enduser, FormResponseValue } from "@tellescope/types-models";
5
5
  import { FileBlob, Styled } from "..";
6
- import { DatabaseRecord, FormField } from "@tellescope/types-client";
6
+ import { FormField } from "@tellescope/types-client";
7
7
  export declare const LanguageSelect: ({ value, ...props }: {
8
8
  value: string;
9
9
  onChange: (s: string) => void;
@@ -20,7 +20,7 @@ export declare const RatingInput: ({ field, value, onChange }: FormInputProps<'r
20
20
  export declare const RankingInput: ({ field, value, onChange }: FormInputProps<'ranking'>) => JSX.Element;
21
21
  export declare const DateInput: ({ field, value, onChange, placement, ...props }: {
22
22
  field: FormField;
23
- placement?: "bottom" | "left" | "right" | "top" | undefined;
23
+ placement?: "left" | "right" | "bottom" | "top" | undefined;
24
24
  } & FormInputProps<"date"> & Styled) => JSX.Element;
25
25
  export declare const TableInput: ({ field, value, onChange, ...props }: FormInputProps<'Input Table'>) => JSX.Element;
26
26
  export declare const AutoFocusTextField: (props: TextFieldProps) => JSX.Element;
@@ -52,13 +52,11 @@ export declare const Progress: ({ numerator, denominator, style, color }: {
52
52
  color?: string | undefined;
53
53
  } & Styled) => JSX.Element;
54
54
  export declare const DropdownInput: ({ field, value, onChange }: FormInputProps<'Dropdown'>) => JSX.Element;
55
- export interface AddToDatabaseProps {
56
- databaseId: string;
57
- onAdd: (record: DatabaseRecord) => void;
58
- }
59
- export declare const DatabaseSelectInput: ({ AddToDatabase, field, value: _value, onChange, onDatabaseSelect, responses, size, disabled, enduser }: FormInputProps<"Database Select"> & {
55
+ import { AddToDatabaseProps as AddToDatabasePropsImported } from './inputs';
56
+ export type AddToDatabaseProps = AddToDatabasePropsImported;
57
+ export declare const DatabaseSelectInput: (props: FormInputProps<'Database Select'> & {
60
58
  responses: FormResponseValue[];
61
- AddToDatabase?: React.JSXElementConstructor<AddToDatabaseProps> | undefined;
59
+ AddToDatabase?: React.JSXElementConstructor<AddToDatabaseProps>;
62
60
  }) => JSX.Element;
63
61
  export declare const CanvasMedicationsInput: ({ field, value, onChange }: FormInputProps<'Medications'>) => JSX.Element;
64
62
  export declare const MedicationsInput: ({ field, value, onChange, ...props }: FormInputProps<'Medications'>) => JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"inputs.v2.d.ts","sourceRoot":"","sources":["../../../src/Forms/inputs.v2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwE,MAAM,OAAO,CAAA;AAE5F,OAAO,EAAmH,OAAO,EAAa,cAAc,EAAc,MAAM,eAAe,CAAA;AAC/L,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAIxC,OAAO,EAAmC,OAAO,EAAuB,iBAAiB,EAAqG,MAAM,0BAA0B,CAAA;AAO9N,OAAO,EAAc,QAAQ,EAAgD,MAAM,EAAiF,MAAM,IAAI,CAAA;AAC9K,OAAO,EAAiB,cAAc,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAWnF,eAAO,MAAM,cAAc;WAAkC,MAAM;kBAAgB,MAAM,KAAK,IAAI;iBAgBjG,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE;IAAE,EAAE,EAAE,OAAO,CAAA;CAgB3C,CAAA;AACF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,aAEvC,CAAA;AAED,eAAO,MAAM,SAAS;SAAiC,MAAM;;iBAoE5D,CAAA;AAED,eAAO,MAAM,WAAW,+BAAgC,eAAe,QAAQ,CAAC,gBA0B/E,CAAA;AAkCD,eAAO,MAAM,YAAY,+BAAgC,eAAe,SAAS,CAAC,gBAuDjF,CAAA;AAOD,eAAO,MAAM,SAAS;WAGb,SAAS;;mDAoBjB,CAAA;AAED,eAAO,MAAM,UAAU,yCAA6C,eAAe,aAAa,CAAC,gBAgIhG,CAAA;AAED,eAAO,MAAM,kBAAkB,UAAW,cAAc,gBAEvD,CAAA;AAOD,eAAO,MAAM,eAAe,yCAA0C,eAAe,QAAQ,CAAC,gBAqD7F,CAAA;AACD,eAAO,MAAM,WAAW,+CAAgD,eAAe,QAAQ,CAAC,gBAK/F,CAAA;AACD,eAAO,MAAM,eAAe,+CAAgD,eAAe,QAAQ,CAAC,gBAKnG,CAAA;AAED,eAAO,MAAM,UAAU,+CAAgD,eAAe,OAAO,CAAC,gBAK7F,CAAA;AAED,eAAO,MAAM,UAAU,+CAAgD,eAAe,OAAO,CAAC,gBAK7F,CAAA;AAED,eAAO,MAAM,WAAW,+CAAgD,eAAe,QAAQ,CAAC,gBA0C/F,CAAA;AAED,eAAO,MAAM,cAAc,qFAAsF,eAAe,WAAW,CAAC,gBA0W3I,CAAA;AAuCD,eAAO,MAAM,SAAS,yCAA0C,eAAe,QAAQ,CAAC,gBAyBvF,CAAA;AAED,eAAO,MAAM,aAAa,yCAA6C,eAAe,UAAU,CAAC,gBAEhG,CAAA;AAED,eAAO,MAAM,YAAY,+CAAgD,eAAe,SAAS,CAAC,gBAuIjG,CAAA;AAED,eAAO,MAAM,eAAe,mBAoC3B,CAAA;AAED,eAAO,MAAM,cAAc,mDAAyD,eAAe,WAAW,CAAC,gBA8E9G,CAAA;AAUD,wBAAsB,WAAW,CAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,mBAmBzD;AAGD,eAAO,MAAM,SAAS;;iBA8GrB,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,GAAG,kBAOxC,CAAA;AAED,eAAO,MAAM,UAAU;;iBA0HtB,CAAA;AAED,eAAO,MAAM,mBAAmB,6CAA8C,eAAe,iBAAiB,CAAC,gBA4J9G,CAAA;AAOD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,eAAO,MAAM,QAAQ;eAA4D,MAAM;iBAAe,MAAM;;0BAuB3G,CAAA;AAED,eAAO,MAAM,aAAa,+BAAgC,eAAe,UAAU,CAAC,gBAwDnF,CAAA;AAqHD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;CACxC;AAED,eAAO,MAAM,mBAAmB;eACnB,iBAAiB,EAAE;;iBAuL/B,CAAA;AAgID,eAAO,MAAM,sBAAsB,+BAAmC,eAAe,aAAa,CAAC,gBAyGlG,CAAA;AAED,eAAO,MAAM,gBAAgB,yCAA0C,eAAe,aAAa,CAAC,gBAySnG,CAAA;AAED,eAAO,MAAM,4BAA4B,uCAAwC,eAAe,2BAA2B,CAAC,gBAoK3H,CAAA;AAED,eAAO,MAAM,gBAAgB,MAAO,QAAQ,OAAO,CAAC,+FAkBnD,CAAA;AAED,eAAO,MAAM,oBAAoB,qEAAsE,eAAe,kBAAkB,CAAC,gBAiLxI,CAAA;AAED,eAAO,MAAM,uBAAuB,4HAA6H,eAAe,qBAAqB,CAAC,gBAyOrM,CAAA;AAED,eAAO,MAAM,WAAW,yCAAoD,eAAe,QAAQ,CAAC,gBAenG,CAAA;AAED,eAAO,MAAM,2CAA2C,QAAS,MAAM,WAetE,CAAA;AAED,eAAO,MAAM,aAAa,uIAAkJ,eAAe,UAAU,CAAC,uBAkGrM,CAAA;AAED,eAAO,MAAM,gBAAgB,4FAA6F,eAAe,OAAO,CAAC,gBA+ChJ,CAAA;AAED,eAAO,MAAM,WAAW,iGAAkG,eAAe,OAAO,CAAC,gBA8ChJ,CAAA;AAMD,eAAO,MAAM,cAAc,iGAAkG,eAAe,WAAW,CAAC,gBAqHvJ,CAAA;AAGD,eAAO,MAAM,eAAe,iGAAkG,eAAe,YAAY,CAAC,gBAsDzJ,CAAA;AAED,eAAO,MAAM,aAAa,+BAAgC,eAAe,WAAW,CAAC,gBAEpF,CAAA;AAED,eAAO,MAAM,eAAe;mBACX,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;iBA6CxE,CAAA"}
1
+ {"version":3,"file":"inputs.v2.d.ts","sourceRoot":"","sources":["../../../src/Forms/inputs.v2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwE,MAAM,OAAO,CAAA;AAE5F,OAAO,EAAmH,OAAO,EAAa,cAAc,EAAc,MAAM,eAAe,CAAA;AAC/L,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAIxC,OAAO,EAAmC,OAAO,EAAuB,iBAAiB,EAAqG,MAAM,0BAA0B,CAAA;AAO9N,OAAO,EAAc,QAAQ,EAAgD,MAAM,EAAiF,MAAM,IAAI,CAAA;AAC9K,OAAO,EAAiC,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAWnF,eAAO,MAAM,cAAc;WAAkC,MAAM;kBAAgB,MAAM,KAAK,IAAI;iBAgBjG,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE;IAAE,EAAE,EAAE,OAAO,CAAA;CAgB3C,CAAA;AACF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,aAEvC,CAAA;AAED,eAAO,MAAM,SAAS;SAAiC,MAAM;;iBAoE5D,CAAA;AAED,eAAO,MAAM,WAAW,+BAAgC,eAAe,QAAQ,CAAC,gBA0B/E,CAAA;AAkCD,eAAO,MAAM,YAAY,+BAAgC,eAAe,SAAS,CAAC,gBAuDjF,CAAA;AAOD,eAAO,MAAM,SAAS;WAGb,SAAS;;mDAoBjB,CAAA;AAED,eAAO,MAAM,UAAU,yCAA6C,eAAe,aAAa,CAAC,gBAgIhG,CAAA;AAED,eAAO,MAAM,kBAAkB,UAAW,cAAc,gBAEvD,CAAA;AAOD,eAAO,MAAM,eAAe,yCAA0C,eAAe,QAAQ,CAAC,gBAqD7F,CAAA;AACD,eAAO,MAAM,WAAW,+CAAgD,eAAe,QAAQ,CAAC,gBAK/F,CAAA;AACD,eAAO,MAAM,eAAe,+CAAgD,eAAe,QAAQ,CAAC,gBAKnG,CAAA;AAED,eAAO,MAAM,UAAU,+CAAgD,eAAe,OAAO,CAAC,gBAK7F,CAAA;AAED,eAAO,MAAM,UAAU,+CAAgD,eAAe,OAAO,CAAC,gBAK7F,CAAA;AAED,eAAO,MAAM,WAAW,+CAAgD,eAAe,QAAQ,CAAC,gBA0C/F,CAAA;AAED,eAAO,MAAM,cAAc,qFAAsF,eAAe,WAAW,CAAC,gBA0W3I,CAAA;AAuCD,eAAO,MAAM,SAAS,yCAA0C,eAAe,QAAQ,CAAC,gBAyBvF,CAAA;AAED,eAAO,MAAM,aAAa,yCAA6C,eAAe,UAAU,CAAC,gBAEhG,CAAA;AAED,eAAO,MAAM,YAAY,+CAAgD,eAAe,SAAS,CAAC,gBAuIjG,CAAA;AAED,eAAO,MAAM,eAAe,mBAoC3B,CAAA;AAED,eAAO,MAAM,cAAc,mDAAyD,eAAe,WAAW,CAAC,gBA8E9G,CAAA;AAUD,wBAAsB,WAAW,CAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,mBAmBzD;AAGD,eAAO,MAAM,SAAS;;iBA8GrB,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,GAAG,kBAOxC,CAAA;AAED,eAAO,MAAM,UAAU;;iBA0HtB,CAAA;AAED,eAAO,MAAM,mBAAmB,6CAA8C,eAAe,iBAAiB,CAAC,gBA4J9G,CAAA;AAOD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,eAAO,MAAM,QAAQ;eAA4D,MAAM;iBAAe,MAAM;;0BAuB3G,CAAA;AAED,eAAO,MAAM,aAAa,+BAAgC,eAAe,UAAU,CAAC,gBAwDnF,CAAA;AAID,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAoD,MAAM,UAAU,CAAA;AAG7H,MAAM,MAAM,kBAAkB,GAAG,0BAA0B,CAAA;AAG3D,eAAO,MAAM,mBAAmB,UAAW,eAAe,iBAAiB,CAAC,GAAG;IAC7E,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;CACjE,gBAGA,CAAA;AAgID,eAAO,MAAM,sBAAsB,+BAAmC,eAAe,aAAa,CAAC,gBAyGlG,CAAA;AAED,eAAO,MAAM,gBAAgB,yCAA0C,eAAe,aAAa,CAAC,gBAySnG,CAAA;AAED,eAAO,MAAM,4BAA4B,uCAAwC,eAAe,2BAA2B,CAAC,gBAoK3H,CAAA;AAED,eAAO,MAAM,gBAAgB,MAAO,QAAQ,OAAO,CAAC,+FAkBnD,CAAA;AAED,eAAO,MAAM,oBAAoB,qEAAsE,eAAe,kBAAkB,CAAC,gBAiLxI,CAAA;AAED,eAAO,MAAM,uBAAuB,4HAA6H,eAAe,qBAAqB,CAAC,gBAyOrM,CAAA;AAED,eAAO,MAAM,WAAW,yCAAoD,eAAe,QAAQ,CAAC,gBAenG,CAAA;AAED,eAAO,MAAM,2CAA2C,QAAS,MAAM,WAetE,CAAA;AAED,eAAO,MAAM,aAAa,uIAAkJ,eAAe,UAAU,CAAC,uBAkGrM,CAAA;AAED,eAAO,MAAM,gBAAgB,4FAA6F,eAAe,OAAO,CAAC,gBA+ChJ,CAAA;AAED,eAAO,MAAM,WAAW,iGAAkG,eAAe,OAAO,CAAC,gBA8ChJ,CAAA;AAMD,eAAO,MAAM,cAAc,iGAAkG,eAAe,WAAW,CAAC,gBAqHvJ,CAAA;AAGD,eAAO,MAAM,eAAe,iGAAkG,eAAe,YAAY,CAAC,gBAsDzJ,CAAA;AAED,eAAO,MAAM,aAAa,+BAAgC,eAAe,WAAW,CAAC,gBAEpF,CAAA;AAED,eAAO,MAAM,eAAe;mBACX,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;iBA6CxE,CAAA"}
@@ -856,240 +856,13 @@ export var DropdownInput = function (_a) {
856
856
  : '' }));
857
857
  } }));
858
858
  };
859
- var choicesForDatabase = {};
860
- var preventRefetch = {};
861
- var LOAD_CHOICES_LIMIT = 500;
862
- var useDatabaseChoices = function (_a) {
863
- var _b, _d, _e, _f;
864
- var _g = _a.databaseId, databaseId = _g === void 0 ? '' : _g, field = _a.field, otherAnswers = _a.otherAnswers;
865
- var session = useResolvedSession();
866
- var _h = useState(0), renderCount = _h[0], setRenderCount = _h[1];
867
- // todo: make searchable, don't load all
868
- useEffect(function () {
869
- var _a, _b, _d, _e;
870
- if ((_a = choicesForDatabase[databaseId]) === null || _a === void 0 ? void 0 : _a.done)
871
- return;
872
- if (renderCount > 100)
873
- return; // limit to 50000 entries / prevent infinite looping
874
- var choices = (_d = (_b = choicesForDatabase[databaseId]) === null || _b === void 0 ? void 0 : _b.records) !== null && _d !== void 0 ? _d : [];
875
- var lastId = (_e = choicesForDatabase[databaseId]) === null || _e === void 0 ? void 0 : _e.lastId;
876
- if (preventRefetch[databaseId + field.id + lastId])
877
- return;
878
- preventRefetch[databaseId + field.id + lastId] = true;
879
- session.api.form_fields.load_choices_from_database({
880
- fieldId: field.id,
881
- lastId: lastId,
882
- limit: LOAD_CHOICES_LIMIT,
883
- databaseId: databaseId,
884
- })
885
- .then(function (_a) {
886
- var _b;
887
- var newChoices = _a.choices;
888
- choicesForDatabase[databaseId] = {
889
- lastId: (_b = newChoices === null || newChoices === void 0 ? void 0 : newChoices[newChoices.length - 1]) === null || _b === void 0 ? void 0 : _b.id,
890
- records: __spreadArray(__spreadArray([], choices, true), newChoices, true).sort(function (c1, c2) { return (label_for_database_record(field, c1)
891
- .localeCompare(label_for_database_record(field, c2))); }),
892
- done: newChoices.length < LOAD_CHOICES_LIMIT,
893
- };
894
- setRenderCount(function (r) { return r + 1; });
895
- })
896
- .catch(function (err) {
897
- console.error(err);
898
- preventRefetch[databaseId + field.id + lastId] = false;
899
- });
900
- }, [session, field, databaseId, renderCount]);
901
- var addChoice = useCallback(function (record) {
902
- if (!choicesForDatabase[databaseId]) {
903
- choicesForDatabase[databaseId] = {
904
- done: false,
905
- records: [],
906
- };
907
- }
908
- choicesForDatabase[databaseId].records.push(record);
909
- }, [choicesForDatabase, databaseId]);
910
- return {
911
- addChoice: addChoice,
912
- doneLoading: (_d = (_b = choicesForDatabase[databaseId]) === null || _b === void 0 ? void 0 : _b.done) !== null && _d !== void 0 ? _d : false,
913
- choices: __spreadArray(__spreadArray([], (_f = (_e = choicesForDatabase[databaseId]) === null || _e === void 0 ? void 0 : _e.records) !== null && _f !== void 0 ? _f : [], true), (otherAnswers || []).map(function (v) {
914
- var _a;
915
- return ({
916
- id: v.text,
917
- databaseId: databaseId,
918
- values: [{ label: ((_a = field.options) === null || _a === void 0 ? void 0 : _a.databaseLabel) || '', type: 'Text', value: v.text }],
919
- });
920
- }), true),
921
- renderCount: renderCount,
922
- };
923
- };
924
- var label_for_database_record = function (field, record) {
925
- var _a, _b, _d, _e;
926
- if (!record)
927
- return '';
928
- var addedLabels = ((((_a = field.options) === null || _a === void 0 ? void 0 : _a.databaseLabels) || [])
929
- .map(function (l) { var _a, _b; return (_b = (_a = record.values.find(function (v) { return v.label === l; })) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.toString(); })
930
- .filter(function (v) { return v === null || v === void 0 ? void 0 : v.trim(); }));
931
- return (((_e = (_d = (_b = record.values.find(function (v) { var _a; return v.label === ((_a = field.options) === null || _a === void 0 ? void 0 : _a.databaseLabel); })) === null || _b === void 0 ? void 0 : _b.value) === null || _d === void 0 ? void 0 : _d.toString()) !== null && _e !== void 0 ? _e : '')
932
- + (addedLabels.length
933
- ? " (".concat(addedLabels.join(', '), ")")
934
- : ''));
935
- };
936
- var get_other_answers = function (_value, typing) {
937
- try {
938
- var existing = ((_value || [])
939
- .filter(function (v) { return typeof v === 'string' || v.recordId === v.text; })
940
- .map(function (v) { return typeof v === 'string' ? { databaseId: '', recordId: v, text: v } : v; }));
941
- if (typing) {
942
- existing.push({ text: typing, databaseId: '', recordId: typing });
943
- }
944
- return existing;
945
- }
946
- catch (err) {
947
- console.error(err);
948
- }
949
- return [];
950
- };
951
- export var DatabaseSelectInput = function (_a) {
952
- var _b, _d, _e, _f, _g, _h, _j, _k;
953
- var AddToDatabase = _a.AddToDatabase, field = _a.field, _value = _a.value, onChange = _a.onChange, onDatabaseSelect = _a.onDatabaseSelect, responses = _a.responses, size = _a.size, disabled = _a.disabled, enduser = _a.enduser;
954
- var _l = useState(''), typing = _l[0], setTyping = _l[1];
955
- var _m = useDatabaseChoices({
956
- databaseId: (_b = field.options) === null || _b === void 0 ? void 0 : _b.databaseId,
957
- field: field,
958
- otherAnswers: get_other_answers(_value, ((_d = field === null || field === void 0 ? void 0 : field.options) === null || _d === void 0 ? void 0 : _d.other) ? typing : undefined),
959
- }), addChoice = _m.addChoice, choices = _m.choices, doneLoading = _m.doneLoading;
960
- var value = React.useMemo(function () {
961
- var _a, _b;
962
- try {
963
- // if the value is a string (some single answer that was save), make sure we coerce to array
964
- var __value = typeof _value === 'string' ? [_value] : _value;
965
- return ((_b = (_a = __value === null || __value === void 0 ? void 0 : __value.map(function (v) {
966
- return choices.find(function (c) {
967
- return c.id === v.recordId || (typeof v === 'string' && label_for_database_record(field, c) === v);
968
- });
969
- })) === null || _a === void 0 ? void 0 : _a.filter(function (v) { return v; })) !== null && _b !== void 0 ? _b : []);
970
- }
971
- catch (err) {
972
- console.error('Error resolving database answers for _value', err);
973
- return [];
974
- }
975
- }, [_value, choices, field]);
976
- var filterResponse = useMemo(function () {
977
- var _a, _b, _d, _e;
978
- return (((_b = (_a = field.options) === null || _a === void 0 ? void 0 : _a.databaseFilter) === null || _b === void 0 ? void 0 : _b.fieldId)
979
- ? (_e = (_d = responses.find(function (r) { var _a, _b; return r.fieldId === ((_b = (_a = field.options) === null || _a === void 0 ? void 0 : _a.databaseFilter) === null || _b === void 0 ? void 0 : _b.fieldId); })) === null || _d === void 0 ? void 0 : _d.answer) === null || _e === void 0 ? void 0 : _e.value
980
- : undefined);
981
- }, [responses, (_e = field.options) === null || _e === void 0 ? void 0 : _e.databaseFilter]);
982
- // State filtering logic similar to Insurance component
983
- var addressQuestion = useMemo(function () { return responses === null || responses === void 0 ? void 0 : responses.find(function (r) {
984
- var _a;
985
- if (r.answer.type !== 'Address')
986
- return false;
987
- if (r.field.intakeField !== 'Address')
988
- return false;
989
- // make sure state is actually defined (in case of multiple address questions, where 1+ are blank)
990
- if (!((_a = r.answer.value) === null || _a === void 0 ? void 0 : _a.state))
991
- return false;
992
- return true;
993
- }); }, [responses]);
994
- var state = useMemo(function () {
995
- var _a, _b, _d, _e;
996
- return (((_a = field.options) === null || _a === void 0 ? void 0 : _a.filterByEnduserState)
997
- ? ((((_b = addressQuestion === null || addressQuestion === void 0 ? void 0 : addressQuestion.answer) === null || _b === void 0 ? void 0 : _b.type) === 'Address' ? (_e = (_d = addressQuestion === null || addressQuestion === void 0 ? void 0 : addressQuestion.answer) === null || _d === void 0 ? void 0 : _d.value) === null || _e === void 0 ? void 0 : _e.state : undefined) || (enduser === null || enduser === void 0 ? void 0 : enduser.state))
998
- : undefined);
999
- }, [enduser === null || enduser === void 0 ? void 0 : enduser.state, addressQuestion, (_f = field.options) === null || _f === void 0 ? void 0 : _f.filterByEnduserState]);
1000
- var filteredChoicesWithPotentialDuplicates = useMemo(function () {
1001
- var _a, _b;
1002
- if (!choices)
1003
- return [];
1004
- if (!filterResponse)
1005
- return choices;
1006
- if (!((_b = (_a = field === null || field === void 0 ? void 0 : field.options) === null || _a === void 0 ? void 0 : _a.databaseFilter) === null || _b === void 0 ? void 0 : _b.databaseLabel))
1007
- if (!value || value.length === 0)
1008
- return choices;
1009
- return (choices
1010
- .filter(function (c) {
1011
- var _a;
1012
- var v = (_a = c.values.find(function (_v) { var _a, _b; return _v.label === ((_b = (_a = field.options) === null || _a === void 0 ? void 0 : _a.databaseFilter) === null || _b === void 0 ? void 0 : _b.databaseLabel); })) === null || _a === void 0 ? void 0 : _a.value;
1013
- if (!v)
1014
- return true;
1015
- // use .text on r values to handle Database Select types as filter source (in addition to basic text and list of text)
1016
- if (typeof v === 'object') {
1017
- return !!(Object.values(v).find(function (oVal) { return (typeof oVal === 'string' || typeof oVal === 'number'
1018
- ? (Array.isArray(filterResponse)
1019
- ? filterResponse.find(function (r) { return r === oVal.toString() || (typeof r === 'object' && r.text === oVal); })
1020
- : (typeof filterResponse === 'string' || typeof filterResponse === 'number')
1021
- ? filterResponse.toString() === oVal.toString()
1022
- : false)
1023
- : false); }));
1024
- }
1025
- if (typeof v === 'string' || typeof v === 'number') {
1026
- return !!(Array.isArray(filterResponse)
1027
- ? filterResponse.find(function (r) { return r === v.toString() || (typeof r === 'object' && r.text === v); })
1028
- : (typeof filterResponse === 'string' || typeof filterResponse === 'number')
1029
- ? filterResponse.toString() === v.toString()
1030
- : (typeof filterResponse === 'object' && filterResponse.city === v.toString()) ? true
1031
- : (typeof filterResponse === 'object' && filterResponse.state === v.toString()) ? true
1032
- : (typeof filterResponse === 'object' && filterResponse.zipCode === v.toString()) ? true
1033
- : false);
1034
- }
1035
- return false;
1036
- }));
1037
- }, [choices, filterResponse, (_g = field.options) === null || _g === void 0 ? void 0 : _g.databaseFilter, value]);
1038
- // Apply state filtering as a secondary filter (doesn't modify existing logic)
1039
- var stateFilteredChoices = useMemo(function () {
1040
- var _a;
1041
- if (!((_a = field.options) === null || _a === void 0 ? void 0 : _a.filterByEnduserState) || !state) {
1042
- return filteredChoicesWithPotentialDuplicates;
1043
- }
1044
- return filteredChoicesWithPotentialDuplicates.filter(function (c) {
1045
- var _a, _b;
1046
- var recordState = ((_b = (_a = c.values.find(function (v) { var _a, _b; return ((_b = (_a = v.label) === null || _a === void 0 ? void 0 : _a.trim()) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'state'; })) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.toString()) || '';
1047
- return !recordState || recordState === state;
1048
- });
1049
- }, [filteredChoicesWithPotentialDuplicates, (_h = field.options) === null || _h === void 0 ? void 0 : _h.filterByEnduserState, state]);
1050
- var filteredChoices = useMemo(function () {
1051
- var filtered = [];
1052
- var uniques = new Set([]);
1053
- for (var _a = 0, stateFilteredChoices_1 = stateFilteredChoices; _a < stateFilteredChoices_1.length; _a++) {
1054
- var c = stateFilteredChoices_1[_a];
1055
- var text = label_for_database_record(field, c);
1056
- if (uniques.has(text))
1057
- continue; // duplicate found
1058
- uniques.add(text);
1059
- filtered.push(c);
1060
- }
1061
- return filtered;
1062
- }, [field, stateFilteredChoices]);
1063
- if (!doneLoading)
1064
- return _jsx(LinearProgress, {});
1065
- return (_jsxs(_Fragment, { children: [_jsx(Autocomplete, { id: field.id, freeSolo: false, size: size, componentsProps: { popper: { sx: { wordBreak: "break-word" } } }, options: filteredChoices, multiple: true, getOptionLabel: function (o) { return (Array.isArray(o) // edge case
1066
- ? ''
1067
- : label_for_database_record(field, o)); }, value: value, disabled: disabled, onChange: function (_, v) {
1068
- var _a, _b, _d, _e, _f;
1069
- if (v.length && onDatabaseSelect) {
1070
- onDatabaseSelect(((_a = field.options) === null || _a === void 0 ? void 0 : _a.radio)
1071
- ? [v[v.length - 1]] // if radio, only last selected
1072
- : v);
1073
- }
1074
- return onChange((!((_b = field.options) === null || _b === void 0 ? void 0 : _b.radio)
1075
- ? v.map(function (_v) {
1076
- var _a;
1077
- return ({
1078
- databaseId: (_a = field.options) === null || _a === void 0 ? void 0 : _a.databaseId,
1079
- recordId: _v.id,
1080
- text: label_for_database_record(field, _v),
1081
- });
1082
- })
1083
- : [{
1084
- databaseId: (_d = field.options) === null || _d === void 0 ? void 0 : _d.databaseId,
1085
- recordId: (_f = (_e = v[v.length - 1]) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : '',
1086
- text: label_for_database_record(field, v[v.length - 1]),
1087
- }]), field.id);
1088
- }, inputValue: typing, onInputChange: function (e, v) { return e && setTyping(v); }, renderInput: function (params) { return _jsx(TextField, __assign({}, params, { InputProps: __assign(__assign({}, params.InputProps), { sx: defaultInputProps.sx }) })); },
1089
- // use custom Chip to ensure very long entries break properly (whitespace: normal)
1090
- renderTags: function (value, getTagProps) {
1091
- return value.map(function (value, index) { return (_jsx(Chip, __assign({ label: _jsx(Typography, __assign({ style: { whiteSpace: 'normal' } }, { children: Array.isArray(value) ? '' : label_for_database_record(field, value) })) }, getTagProps({ index: index }), { sx: { height: "100%", py: 0.5 } }))); });
1092
- } }), AddToDatabase && ((_j = field === null || field === void 0 ? void 0 : field.options) === null || _j === void 0 ? void 0 : _j.allowAddToDatabase) && (_jsx(AddToDatabase, { databaseId: (_k = field.options) === null || _k === void 0 ? void 0 : _k.databaseId, onAdd: addChoice }))] }));
859
+ // DatabaseSelectInput logic is shared with inputs.tsx to avoid duplication
860
+ // Import the interface and component from the shared implementation
861
+ import { DatabaseSelectInput as SharedDatabaseSelectInput } from './inputs';
862
+ // Wrap the shared DatabaseSelectInput component with v2-specific props
863
+ export var DatabaseSelectInput = function (props) {
864
+ // Pass all props plus v2-specific defaultInputProps to the shared component
865
+ return _jsx(SharedDatabaseSelectInput, __assign({}, props, { inputProps: defaultInputProps }));
1093
866
  };
1094
867
  var displayTermsCache = undefined;
1095
868
  var DRUGS_FOR_DISPLAY_TERM = {};