@medplum/react 0.9.34 → 0.9.35

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 (43) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/SearchControlField.d.ts +2 -3
  3. package/dist/cjs/SearchFieldEditor.d.ts +1 -2
  4. package/dist/cjs/SearchFilterEditor.d.ts +1 -2
  5. package/dist/cjs/SearchFilterValueDialog.d.ts +1 -2
  6. package/dist/cjs/SearchFilterValueInput.d.ts +0 -2
  7. package/dist/cjs/SearchPopupMenu.d.ts +1 -2
  8. package/dist/cjs/index.js +46 -31
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/index.min.js +1 -1
  11. package/dist/cjs/index.min.js.map +1 -1
  12. package/dist/cjs/styles.css +51 -51
  13. package/dist/esm/GoogleButton.js +1 -1
  14. package/dist/esm/GoogleButton.js.map +1 -1
  15. package/dist/esm/Popup.js +5 -1
  16. package/dist/esm/Popup.js.map +1 -1
  17. package/dist/esm/SearchControl.js +10 -14
  18. package/dist/esm/SearchControl.js.map +1 -1
  19. package/dist/esm/SearchControlField.d.ts +2 -3
  20. package/dist/esm/SearchControlField.js +6 -8
  21. package/dist/esm/SearchControlField.js.map +1 -1
  22. package/dist/esm/SearchFieldEditor.d.ts +1 -2
  23. package/dist/esm/SearchFieldEditor.js +2 -2
  24. package/dist/esm/SearchFieldEditor.js.map +1 -1
  25. package/dist/esm/SearchFilterEditor.d.ts +1 -2
  26. package/dist/esm/SearchFilterEditor.js +5 -6
  27. package/dist/esm/SearchFilterEditor.js.map +1 -1
  28. package/dist/esm/SearchFilterValueDialog.d.ts +1 -2
  29. package/dist/esm/SearchFilterValueDialog.js +1 -1
  30. package/dist/esm/SearchFilterValueDialog.js.map +1 -1
  31. package/dist/esm/SearchFilterValueInput.d.ts +0 -2
  32. package/dist/esm/SearchFilterValueInput.js +1 -1
  33. package/dist/esm/SearchFilterValueInput.js.map +1 -1
  34. package/dist/esm/SearchPopupMenu.d.ts +1 -2
  35. package/dist/esm/SearchPopupMenu.js.map +1 -1
  36. package/dist/esm/index.min.js +1 -1
  37. package/dist/esm/index.min.js.map +1 -1
  38. package/dist/esm/styles.css +51 -51
  39. package/dist/esm/utils/blame.js +1 -0
  40. package/dist/esm/utils/blame.js.map +1 -1
  41. package/dist/esm/utils/outcomes.js +19 -1
  42. package/dist/esm/utils/outcomes.js.map +1 -1
  43. package/package.json +11 -11
@@ -939,6 +939,57 @@ table.medplum-diff-table td {
939
939
  margin-right: 4px;
940
940
  }
941
941
 
942
+ .medplum-filter-editor {
943
+ text-align: left;
944
+ width: 900px;
945
+ max-width: 900px;
946
+ }
947
+
948
+ .medplum-filter-editor-table {
949
+ width: 100%;
950
+ border-collapse: collapse;
951
+ }
952
+
953
+ .medplum-menu-separator {
954
+ border-top: 0.1px solid var(--medplum-gray-400);
955
+ margin: 4px 0;
956
+ padding: 0;
957
+ }
958
+
959
+ .medplum-submenu-arrow {
960
+ color: var(--medplum-foreground);
961
+ left: auto;
962
+ padding-right: 6px;
963
+ position: absolute;
964
+ right: 0;
965
+ text-align: right;
966
+ user-select: none;
967
+ }
968
+
969
+ .medplum-title-bar {
970
+ display: flex;
971
+ width: 100%;
972
+ height: 50px;
973
+ padding: 15px;
974
+ justify-content: space-between;
975
+ background: var(--medplum-surface);
976
+ border-bottom: 2px solid var(--medplum-gray-200);
977
+ color: var(--medplum-gray-800);
978
+ }
979
+
980
+ .medplum-title-bar > div {
981
+ display: flex;
982
+ align-items: center;
983
+ }
984
+
985
+ .medplum-title-bar h1 {
986
+ font-size: 14px;
987
+ font-weight: bold;
988
+ padding: 0 4px 0 1px;
989
+ margin: 0 4px 0 1px;
990
+ color: var(--medplum-gray-800);
991
+ }
992
+
942
993
  .medplum-search-control {
943
994
  max-width: 100%;
944
995
  overflow: auto;
@@ -1058,57 +1109,6 @@ table.medplum-diff-table td {
1058
1109
  outline: 0;
1059
1110
  }
1060
1111
 
1061
- .medplum-filter-editor {
1062
- text-align: left;
1063
- width: 900px;
1064
- max-width: 900px;
1065
- }
1066
-
1067
- .medplum-filter-editor-table {
1068
- width: 100%;
1069
- border-collapse: collapse;
1070
- }
1071
-
1072
- .medplum-menu-separator {
1073
- border-top: 0.1px solid var(--medplum-gray-400);
1074
- margin: 4px 0;
1075
- padding: 0;
1076
- }
1077
-
1078
- .medplum-submenu-arrow {
1079
- color: var(--medplum-foreground);
1080
- left: auto;
1081
- padding-right: 6px;
1082
- position: absolute;
1083
- right: 0;
1084
- text-align: right;
1085
- user-select: none;
1086
- }
1087
-
1088
- .medplum-title-bar {
1089
- display: flex;
1090
- width: 100%;
1091
- height: 50px;
1092
- padding: 15px;
1093
- justify-content: space-between;
1094
- background: var(--medplum-surface);
1095
- border-bottom: 2px solid var(--medplum-gray-200);
1096
- color: var(--medplum-gray-800);
1097
- }
1098
-
1099
- .medplum-title-bar > div {
1100
- display: flex;
1101
- align-items: center;
1102
- }
1103
-
1104
- .medplum-title-bar h1 {
1105
- font-size: 14px;
1106
- font-weight: bold;
1107
- padding: 0 4px 0 1px;
1108
- margin: 0 4px 0 1px;
1109
- color: var(--medplum-gray-800);
1110
- }
1111
-
1112
1112
  .medplum-footer {
1113
1113
  text-align: center;
1114
1114
  font-size: 12px;
@@ -4,6 +4,7 @@ import { diff } from './diff.js';
4
4
  function blame(history) {
5
5
  // Convert to array of array of lines
6
6
  const versions = history.entry
7
+ .filter((entry) => !!entry.resource)
7
8
  .map((entry) => {
8
9
  var _a;
9
10
  return ({
@@ -1 +1 @@
1
- {"version":3,"file":"blame.js","sources":["../../../src/utils/blame.ts"],"sourcesContent":["import { stringify } from '@medplum/core';\nimport { Bundle, BundleEntry, Meta } from '@medplum/fhirtypes';\nimport { diff } from './diff';\n\nexport interface BlameRow {\n id: string;\n meta: Meta;\n value: string;\n span: number;\n}\n\nexport function blame(history: Bundle): BlameRow[] {\n // Convert to array of array of lines\n const versions = (history.entry as BundleEntry[])\n .map((entry) => ({\n meta: entry.resource?.meta as Meta,\n lines: stringify(entry.resource, true).match(/[^\\r\\n]+/g) as string[],\n }))\n .sort((a, b) => (a.meta.lastUpdated as string).localeCompare(b.meta.lastUpdated as string));\n\n // Start with array of lines from the first version\n const table: BlameRow[] = versions[0].lines.map((line) => ({\n id: versions[0].meta.versionId as string,\n meta: versions[0].meta,\n value: line,\n span: 1,\n }));\n\n compareVersions(table, versions);\n combineSpans(table);\n return table;\n}\n\n/**\n * For each version, update the blame table with revisions.\n * @param table The output blame table.\n * @param versions The array of versions.\n */\nfunction compareVersions(table: BlameRow[], versions: { meta: Meta; lines: string[] }[]): void {\n for (let i = 1; i < versions.length; i++) {\n const revisions = diff(versions[i - 1].lines, versions[i].lines);\n\n for (const revision of revisions) {\n const position = revision.original.position;\n const oldLines = revision.original.lines;\n const newLines = revision.revised.lines;\n\n if (revision.type === 'delete' || revision.type === 'change') {\n // Remove the old rows\n table.splice(position, oldLines.length);\n }\n\n if (revision.type === 'insert' || revision.type === 'change') {\n // Add the new lines\n for (let k = 0; k < revision.revised.lines.length; k++) {\n table.splice(position + k, 0, {\n id: versions[i].meta.versionId as string,\n meta: versions[i].meta,\n value: newLines[k],\n span: 1,\n });\n }\n }\n }\n }\n}\n\n/**\n * Combine adjacent rows into spans.\n * @param table The output blame table.\n */\nfunction combineSpans(table: BlameRow[]): void {\n let start = 0;\n while (start < table.length) {\n let curr = start;\n while (curr < table.length && table[curr].id === table[start].id) {\n table[curr].span = -1;\n curr++;\n }\n table[start].span = curr - start;\n start = curr;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blame.js","sources":["../../../src/utils/blame.ts"],"sourcesContent":["import { stringify } from '@medplum/core';\nimport { Bundle, BundleEntry, Meta } from '@medplum/fhirtypes';\nimport { diff } from './diff';\n\nexport interface BlameRow {\n id: string;\n meta: Meta;\n value: string;\n span: number;\n}\n\nexport function blame(history: Bundle): BlameRow[] {\n // Convert to array of array of lines\n const versions = (history.entry as BundleEntry[])\n .filter((entry) => !!entry.resource)\n .map((entry) => ({\n meta: entry.resource?.meta as Meta,\n lines: stringify(entry.resource, true).match(/[^\\r\\n]+/g) as string[],\n }))\n .sort((a, b) => (a.meta.lastUpdated as string).localeCompare(b.meta.lastUpdated as string));\n\n // Start with array of lines from the first version\n const table: BlameRow[] = versions[0].lines.map((line) => ({\n id: versions[0].meta.versionId as string,\n meta: versions[0].meta,\n value: line,\n span: 1,\n }));\n\n compareVersions(table, versions);\n combineSpans(table);\n return table;\n}\n\n/**\n * For each version, update the blame table with revisions.\n * @param table The output blame table.\n * @param versions The array of versions.\n */\nfunction compareVersions(table: BlameRow[], versions: { meta: Meta; lines: string[] }[]): void {\n for (let i = 1; i < versions.length; i++) {\n const revisions = diff(versions[i - 1].lines, versions[i].lines);\n\n for (const revision of revisions) {\n const position = revision.original.position;\n const oldLines = revision.original.lines;\n const newLines = revision.revised.lines;\n\n if (revision.type === 'delete' || revision.type === 'change') {\n // Remove the old rows\n table.splice(position, oldLines.length);\n }\n\n if (revision.type === 'insert' || revision.type === 'change') {\n // Add the new lines\n for (let k = 0; k < revision.revised.lines.length; k++) {\n table.splice(position + k, 0, {\n id: versions[i].meta.versionId as string,\n meta: versions[i].meta,\n value: newLines[k],\n span: 1,\n });\n }\n }\n }\n }\n}\n\n/**\n * Combine adjacent rows into spans.\n * @param table The output blame table.\n */\nfunction combineSpans(table: BlameRow[]): void {\n let start = 0;\n while (start < table.length) {\n let curr = start;\n while (curr < table.length && table[curr].id === table[start].id) {\n table[curr].span = -1;\n curr++;\n }\n table[start].span = curr - start;\n start = curr;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,24 @@
1
1
  function getIssuesForExpression(outcome, expression) {
2
2
  var _a;
3
- return (_a = outcome === null || outcome === void 0 ? void 0 : outcome.issue) === null || _a === void 0 ? void 0 : _a.filter((issue) => { var _a; return ((_a = issue.expression) === null || _a === void 0 ? void 0 : _a[0]) === expression; });
3
+ return (_a = outcome === null || outcome === void 0 ? void 0 : outcome.issue) === null || _a === void 0 ? void 0 : _a.filter((issue) => { var _a; return isExpressionMatch((_a = issue.expression) === null || _a === void 0 ? void 0 : _a[0], expression); });
4
+ }
5
+ function isExpressionMatch(expr1, expr2) {
6
+ // Expression can be either "fieldName" or "resourceType.fieldName"
7
+ if (expr1 === expr2) {
8
+ return true;
9
+ }
10
+ if (!expr1 || !expr2) {
11
+ return false;
12
+ }
13
+ const dot1 = expr1.indexOf('.');
14
+ if (dot1 >= 0 && expr1.substring(dot1 + 1) === expr2) {
15
+ return true;
16
+ }
17
+ const dot2 = expr2.indexOf('.');
18
+ if (dot2 >= 0 && expr2.substring(dot2 + 1) === expr1) {
19
+ return true;
20
+ }
21
+ return false;
4
22
  }
5
23
 
6
24
  export { getIssuesForExpression };
@@ -1 +1 @@
1
- {"version":3,"file":"outcomes.js","sources":["../../../src/utils/outcomes.ts"],"sourcesContent":["import { OperationOutcome, OperationOutcomeIssue } from '@medplum/fhirtypes';\n\nexport function getIssuesForExpression(\n outcome: OperationOutcome | undefined,\n expression: string | undefined\n): OperationOutcomeIssue[] | undefined {\n return outcome?.issue?.filter((issue) => issue.expression?.[0] === expression);\n}\n"],"names":[],"mappings":"AAEgB,SAAA,sBAAsB,CACpC,OAAqC,EACrC,UAA8B,EAAA;;AAE9B,IAAA,OAAO,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,CAAC,KAAK,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAK,UAAU,CAAA,EAAA,CAAC,CAAC;AACjF;;;;"}
1
+ {"version":3,"file":"outcomes.js","sources":["../../../src/utils/outcomes.ts"],"sourcesContent":["import { OperationOutcome, OperationOutcomeIssue } from '@medplum/fhirtypes';\n\nexport function getIssuesForExpression(\n outcome: OperationOutcome | undefined,\n expression: string | undefined\n): OperationOutcomeIssue[] | undefined {\n return outcome?.issue?.filter((issue) => isExpressionMatch(issue.expression?.[0], expression));\n}\n\nfunction isExpressionMatch(expr1: string | undefined, expr2: string | undefined): boolean {\n // Expression can be either \"fieldName\" or \"resourceType.fieldName\"\n if (expr1 === expr2) {\n return true;\n }\n if (!expr1 || !expr2) {\n return false;\n }\n const dot1 = expr1.indexOf('.');\n if (dot1 >= 0 && expr1.substring(dot1 + 1) === expr2) {\n return true;\n }\n const dot2 = expr2.indexOf('.');\n if (dot2 >= 0 && expr2.substring(dot2 + 1) === expr1) {\n return true;\n }\n return false;\n}\n"],"names":[],"mappings":"AAEgB,SAAA,sBAAsB,CACpC,OAAqC,EACrC,UAA8B,EAAA;;AAE9B,IAAA,OAAO,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,CAAC,KAAK,KAAI,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,iBAAiB,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA,EAAA,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB,EAAE,KAAyB,EAAA;;IAE7E,IAAI,KAAK,KAAK,KAAK,EAAE;AACnB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACD,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AACpB,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChC,IAAA,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE;AACpD,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChC,IAAA,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE;AACpD,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACf;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medplum/react",
3
- "version": "0.9.34",
3
+ "version": "0.9.35",
4
4
  "description": "Medplum React Component Library",
5
5
  "author": "Medplum <hello@medplum.com>",
6
6
  "license": "Apache-2.0",
@@ -19,9 +19,9 @@
19
19
  "storybook": "build-storybook"
20
20
  },
21
21
  "devDependencies": {
22
- "@medplum/core": "0.9.34",
23
- "@medplum/fhirtypes": "0.9.34",
24
- "@medplum/mock": "0.9.34",
22
+ "@medplum/core": "0.9.35",
23
+ "@medplum/fhirtypes": "0.9.35",
24
+ "@medplum/mock": "0.9.35",
25
25
  "@storybook/addon-actions": "6.5.10",
26
26
  "@storybook/addon-essentials": "6.5.10",
27
27
  "@storybook/addon-links": "6.5.10",
@@ -30,16 +30,16 @@
30
30
  "@storybook/react": "6.5.10",
31
31
  "@testing-library/dom": "8.17.1",
32
32
  "@testing-library/jest-dom": "5.16.5",
33
- "@testing-library/react": "13.3.0",
34
- "@types/jest": "28.1.8",
35
- "@types/node": "18.7.13",
36
- "@types/react": "18.0.17",
33
+ "@testing-library/react": "13.4.0",
34
+ "@types/jest": "29.0.0",
35
+ "@types/node": "18.7.15",
36
+ "@types/react": "18.0.18",
37
37
  "@types/react-dom": "18.0.6",
38
38
  "@types/react-router-dom": "5.3.3",
39
39
  "dotenv-webpack": "8.0.1",
40
40
  "identity-obj-proxy": "3.0.0",
41
- "jest": "29.0.1",
42
- "jest-each": "29.0.1",
41
+ "jest": "29.0.2",
42
+ "jest-each": "29.0.2",
43
43
  "html-webpack-plugin": "5.5.0",
44
44
  "react": "18.2.0",
45
45
  "react-dom": "18.2.0",
@@ -48,7 +48,7 @@
48
48
  "typescript": "4.8.2"
49
49
  },
50
50
  "peerDependencies": {
51
- "@medplum/core": "0.9.34",
51
+ "@medplum/core": "0.9.35",
52
52
  "react": "^17.0.2 || ^18.0.0",
53
53
  "react-dom": "^17.0.2 || ^18.0.0",
54
54
  "react-router-dom": "^6.2.2"