synapse-react-client 4.0.20 → 4.0.21

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 (98) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/CardContainer/CardConfiguration.d.ts +2 -0
  3. package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
  4. package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
  5. package/dist/components/CardContainer/CardContainer.js +3 -3
  6. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  7. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +1 -0
  8. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
  9. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  10. package/dist/components/DataExplorer/DataExplorer.css +1 -1
  11. package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
  12. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
  13. package/dist/components/DataExplorer/DataExplorer.module.scss +26 -6
  14. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts +5 -3
  15. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  16. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +46 -47
  17. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  18. package/dist/components/DataGrid/hooks/useColumnResizeHandles.d.ts.map +1 -1
  19. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +1 -1
  20. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  21. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  22. package/dist/components/DataGrid/utils/columnFactory.js +1 -0
  23. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  24. package/dist/components/GenericCard/GenericCard.d.ts +2 -0
  25. package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
  26. package/dist/components/GenericCard/GenericCard.js +76 -64
  27. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  28. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  29. package/dist/components/GenericCard/TableRowGenericCard.js +33 -25
  30. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  31. package/dist/components/Plot/SynapseSankeyPlot.css +1 -0
  32. package/dist/components/Plot/SynapseSankeyPlot.d.ts +44 -2
  33. package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -1
  34. package/dist/components/Plot/SynapseSankeyPlot.js +343 -38
  35. package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -1
  36. package/dist/components/Plot/SynapseSankeyPlot.module.js +15 -0
  37. package/dist/components/Plot/SynapseSankeyPlot.module.js.map +1 -0
  38. package/dist/components/Plot/SynapseSankeyPlot.module.scss +63 -0
  39. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +13 -12
  40. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  41. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +88 -77
  42. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  43. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  44. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +63 -74
  45. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  46. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.d.ts.map +1 -1
  47. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +72 -68
  48. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  49. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +27 -1
  50. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  51. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +47 -36
  52. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  53. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
  54. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  55. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.d.ts +12 -12
  56. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts +4 -1
  57. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts.map +1 -1
  58. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts +167 -517
  59. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts.map +1 -1
  60. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js +65 -65
  61. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  62. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts +1 -1
  63. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts.map +1 -1
  64. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts +1 -1
  65. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts.map +1 -1
  66. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js +6 -13
  67. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
  68. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts +1 -1
  69. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts.map +1 -1
  70. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts +1 -1
  71. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts.map +1 -1
  72. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js +2 -2
  73. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
  74. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts +1 -1
  75. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts.map +1 -1
  76. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts +2 -2
  77. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts.map +1 -1
  78. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js +15 -16
  79. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
  80. package/dist/mocks/mockSearchQueryData.js +2 -2
  81. package/dist/mocks/mockSearchQueryData.js.map +1 -1
  82. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts +1 -1
  83. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  84. package/dist/mocks/msw/handlers/searchQueryHandlers.js +6 -3
  85. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  86. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts +13 -0
  87. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts.map +1 -1
  88. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js +27 -0
  89. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
  90. package/dist/style/components/_cards.scss +10 -0
  91. package/dist/style/components/_data-grid-extra.css +1 -1
  92. package/dist/style/components/_data-grid-extra.scss +7 -1
  93. package/dist/style/main.css +1 -1
  94. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  95. package/dist/synapse-client/SynapseClient.js +497 -495
  96. package/dist/synapse-client/SynapseClient.js.map +1 -1
  97. package/dist/tsconfig.build.tsbuildinfo +1 -1
  98. package/package.json +7 -5
package/dist/SWC.index.js CHANGED
@@ -112,7 +112,7 @@ var x = { BackendDestinationEnum: r }, S = {
112
112
  sendSearchResultsReturnedEvent: y,
113
113
  sendSearchResultReturnedEvent: v,
114
114
  sendSearchResultClickedEvent: _
115
- }, T = "4.0.20";
115
+ }, T = "4.0.21";
116
116
  //#endregion
117
117
  export { w as Analytics, a as HttpClient, d as Palettes, o as SynapseClient, C as SynapseComponents, n as SynapseConstants, S as SynapseContext, x as SynapseEnums, m as SynapseQueries, T as SynapseReactClientVersion, p as SynapseSessionManager, i as xssOptions };
118
118
 
@@ -37,6 +37,8 @@ export type CommonCardProps = {
37
37
  titleLinkConfig?: CardLink;
38
38
  /** Optional configuration to configure the display/linking of the card's CTA button(s). Accepts a single config or an array. */
39
39
  ctaLinkConfig?: CTACardLink | CTACardLink[];
40
+ /** Optional position of CTA link(s) */
41
+ ctaLinkPosition?: 'right';
40
42
  /** Optional configuration to configure the display/linking of the card's secondary labels */
41
43
  labelLinkConfig?: LabelLinkConfig;
42
44
  /** Optional configuration for the description */
@@ -1 +1 @@
1
- {"version":3,"file":"CardConfiguration.d.ts","sourceRoot":"","sources":["../../../src/components/CardContainer/CardConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC9D,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,EAChB,MAAM,oDAAoD,CAAA;AAE3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EACL,OAAO,EACP,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACb,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,KAAK,6BAA6B,GAAG;IACnC,iCAAiC;IACjC,IAAI,EAAE,OAAO,MAAM,GAAG,OAAO,gBAAgB,GAAG,OAAO,gBAAgB,CAAA;CACxE,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,iCAAiC;IACjC,IAAI,EAAE,OAAO,YAAY,CAAA;IACzB,wDAAwD;IACxD,iBAAiB,EAAE,iBAAiB,CAAA;CACrC,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,iCAAiC;IACjC,IAAI,EAAE,OAAO,OAAO,CAAA;IACpB,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,yBAAyB,CAAA;CAC9C,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,iCAAiC;IACjC,IAAI,EAAE,OAAO,YAAY,CAAA;IACzB,wDAAwD;IACxD,iBAAiB,EAAE,yBAAyB,CAAA;CAC7C,CAAA;AAED,kEAAkE;AAClE,MAAM,MAAM,eAAe,GAAG;IAC5B,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,kFAAkF;IAClF,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B,gIAAgI;IAChI,aAAa,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IAC3C,6FAA6F;IAC7F,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,qDAAqD;IACrD,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,yBAAyB,CAAA;IAC7C;;OAEG;IACH,uBAAuB,CAAC,EAAE,4BAA4B,CAAA;IACtD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,wBAAwB,CAAC,EAAE,kBAAkB,CAAA;IAC7C,oHAAoH;IACpH,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9B,IAAI,EAAE,MAAM,EAAE,CAAA;KACf,CAAC,CAAA;IACF;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAC7C,CACI,6BAA6B,GAC7B,wBAAwB,GACxB,wBAAwB,GACxB,wBAAwB,CAC3B,CAAA"}
1
+ {"version":3,"file":"CardConfiguration.d.ts","sourceRoot":"","sources":["../../../src/components/CardContainer/CardConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC9D,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,EAChB,MAAM,oDAAoD,CAAA;AAE3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EACL,OAAO,EACP,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACb,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,KAAK,6BAA6B,GAAG;IACnC,iCAAiC;IACjC,IAAI,EAAE,OAAO,MAAM,GAAG,OAAO,gBAAgB,GAAG,OAAO,gBAAgB,CAAA;CACxE,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,iCAAiC;IACjC,IAAI,EAAE,OAAO,YAAY,CAAA;IACzB,wDAAwD;IACxD,iBAAiB,EAAE,iBAAiB,CAAA;CACrC,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,iCAAiC;IACjC,IAAI,EAAE,OAAO,OAAO,CAAA;IACpB,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,yBAAyB,CAAA;CAC9C,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,iCAAiC;IACjC,IAAI,EAAE,OAAO,YAAY,CAAA;IACzB,wDAAwD;IACxD,iBAAiB,EAAE,yBAAyB,CAAA;CAC7C,CAAA;AAED,kEAAkE;AAClE,MAAM,MAAM,eAAe,GAAG;IAC5B,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,kFAAkF;IAClF,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B,gIAAgI;IAChI,aAAa,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IAC3C,uCAAuC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,6FAA6F;IAC7F,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,qDAAqD;IACrD,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,yBAAyB,CAAA;IAC7C;;OAEG;IACH,uBAAuB,CAAC,EAAE,4BAA4B,CAAA;IACtD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,wBAAwB,CAAC,EAAE,kBAAkB,CAAA;IAC7C,oHAAoH;IACpH,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9B,IAAI,EAAE,MAAM,EAAE,CAAA;KACf,CAAC,CAAA;IACF;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAC7C,CACI,6BAA6B,GAC7B,wBAAwB,GACxB,wBAAwB,GACxB,wBAAwB,CAC3B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardContainer.d.ts","sourceRoot":"","sources":["../../../src/components/CardContainer/CardContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAA;AAYhF,OAAO,EAIL,MAAM,EACP,MAAM,iCAAiC,CAAA;AAcxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAuBzE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uBAAuB,CAAC,EAAE,4BAA4B,CAAA;IACtD,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,iBAAiB,CAAA;AAiIrB,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAYtD"}
1
+ {"version":3,"file":"CardContainer.d.ts","sourceRoot":"","sources":["../../../src/components/CardContainer/CardContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAA;AAYhF,OAAO,EAIL,MAAM,EACP,MAAM,iCAAiC,CAAA;AAcxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAuBzE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uBAAuB,CAAC,EAAE,4BAA4B,CAAA;IACtD,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,iBAAiB,CAAA;AAoIrB,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAYtD"}
@@ -58,11 +58,11 @@ function k(e) {
58
58
  });
59
59
  let M;
60
60
  if (n === "MEDIUM USER CARD") {
61
- let e = s.headers.findIndex((e) => e.columnType === w.USERID);
62
- if (e === -1) throw Error("Type MEDIUM_USER_CARD specified but no columnType USERID found");
61
+ let e = h.columnModels?.find((e) => e.columnType === w.USERID)?.name, t = e ? s.headers.findIndex((t) => t.name === e) : -1;
62
+ if (t === -1) throw Error("Type MEDIUM_USER_CARD specified but no columnType USERID found");
63
63
  M = /* @__PURE__ */ S(v, {
64
64
  rowSet: s,
65
- list: y.map((t) => t.values[e]),
65
+ list: y.map((e) => e.values[t]),
66
66
  size: r
67
67
  });
68
68
  } else M = y.length ? y.map((e, t) => /* @__PURE__ */ S(O, {
@@ -1 +1 @@
1
- {"version":3,"file":"CardContainer.js","names":[],"sources":["../../../src/components/CardContainer/CardContainer.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport TableRowGenericCard from '@/components/GenericCard/TableRowGenericCard'\nimport useGetInfoFromIds from '@/utils/hooks/useGetInfoFromIds'\nimport {\n DATASET,\n FUNDER,\n GENERIC_CARD,\n MEDIUM_USER_CARD,\n OBSERVATION_CARD,\n RELEASE_CARD,\n} from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport {\n ColumnTypeEnum,\n EntityHeader,\n Row,\n RowSet,\n} from '@sage-bionetworks/synapse-types'\nimport { Suspense } from 'react'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ReleaseCard } from '../ReleaseCard'\nimport { Dataset, Funder } from '../row_renderers'\nimport {\n LoadingObservationCard,\n ObservationCard,\n} from '../row_renderers/ObservationCard'\nimport TotalQueryResults from '../TotalQueryResults'\nimport UserCardList from '../UserCardList/UserCardList'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard'\n\nconst defaultListSx = { display: 'block' }\nconst releaseCardMediumListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, 272px)',\n gridAutoRows: 'auto',\n gridAutoFlow: 'row',\n gap: '10px',\n mb: '30px',\n}\nconst multiCardListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gridColumnGap: '20px',\n marginBottom: '20px',\n marginTop: '20px',\n\n '& .SRC-portalCard': {\n margin: '10px 0px',\n },\n}\n\nexport type CardContainerProps = {\n rowSet: RowSet\n isHeader?: boolean\n sustainabilityScorecard?: SustainabilityScorecardProps\n isAlignToLeftNav?: boolean\n title?: string\n isLoading?: boolean\n unitDescription?: string\n multiCardList?: boolean\n} & CardConfiguration\n\nfunction Card(props: { propsToPass: any; type: string }) {\n const { propsToPass, type } = props\n switch (type) {\n case DATASET:\n return <Dataset {...propsToPass} />\n case FUNDER:\n return <Funder {...propsToPass} />\n case GENERIC_CARD:\n return <TableRowGenericCard {...propsToPass} />\n case OBSERVATION_CARD:\n return <ObservationCard {...propsToPass} />\n case RELEASE_CARD:\n return <ReleaseCard {...propsToPass} />\n default:\n return <div /> // this should never happen\n }\n}\n\nfunction CardContainerInternal(props: CardContainerProps) {\n const {\n unitDescription,\n type,\n secondaryLabelLimit = 3,\n title,\n rowSet,\n multiCardList,\n ...rest\n } = props\n const { NoContentPlaceholder } = useQueryVisualizationContext()\n const queryContext = useQueryContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const queryVisualizationContext = useQueryVisualizationContext()\n\n const dataRows: Row[] = rowSet.rows\n const isMultipleCards = dataRows.length > 1\n\n const ids = [rowSet.tableId]\n const tableEntityConcreteType = useGetInfoFromIds<EntityHeader>({\n ids,\n type: 'ENTITY_HEADER',\n })\n\n // the cards only show the loading screen on initial load, this occurs when data is undefined\n if (dataRows.length === 0) {\n // Show \"no results\" UI (see PORTALS-1497)\n return <NoContentPlaceholder />\n }\n\n const schema: Record<string, number> = {}\n rowSet.headers.forEach((element, index) => {\n schema[element.name] = index\n })\n\n let cards\n if (type === MEDIUM_USER_CARD) {\n // Hard coding ownerId as a column name containing the user profile ownerId\n // for each row, grab the column with the ownerId\n const userIdColumnIndex = rowSet.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n if (userIdColumnIndex === -1) {\n throw Error(\n 'Type MEDIUM_USER_CARD specified but no columnType USERID found',\n )\n }\n const listIds = dataRows.map(el => el.values[userIdColumnIndex])\n cards = (\n <UserCardList rowSet={rowSet} list={listIds} size={MEDIUM_USER_CARD} />\n )\n } else {\n // render the cards\n cards = dataRows.length ? (\n dataRows.map((rowData: Row, index) => {\n const propsForCard = {\n type,\n schema,\n secondaryLabelLimit,\n rowId: rowData.rowId,\n versionNumber: rowData.versionNumber,\n data: rowData.values,\n selectColumns: rowSet.headers,\n columnModels: queryMetadata.columnModels,\n tableEntityConcreteType:\n tableEntityConcreteType[0] && tableEntityConcreteType[0].type,\n tableId: rowSet.tableId,\n queryContext: queryContext,\n queryVisualizationContext,\n ...rest,\n }\n return (\n <Card\n key={rowData.rowId ?? index}\n propsToPass={propsForCard}\n type={type}\n />\n )\n })\n ) : (\n <></>\n )\n }\n\n const isReleaseCardMediumList =\n props.type === RELEASE_CARD &&\n props.releaseCardConfig?.cardSize === 'medium'\n\n let cardListSx = defaultListSx\n if (isReleaseCardMediumList) {\n cardListSx = releaseCardMediumListSx\n } else if (multiCardList && isMultipleCards) {\n cardListSx = multiCardListSx\n }\n\n return (\n <>\n <Box role=\"list\" sx={cardListSx}>\n {title && <h2 className=\"SRC-card-overview-title\">{title}</h2>}\n {!title && unitDescription && (\n <TotalQueryResults frontText={'Displaying'} />\n )}\n {/* ReactCSSTransitionGroup adds css fade in property for cards that come into view */}\n {cards}\n </Box>\n </>\n )\n}\n\nexport function CardContainer(props: CardContainerProps) {\n const fallback = (\n <div>\n {props.type === OBSERVATION_CARD && <LoadingObservationCard />}\n {props.type !== OBSERVATION_CARD && loadingScreen}\n </div>\n )\n return (\n <Suspense fallback={fallback}>\n <CardContainerInternal {...props} />\n </Suspense>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CardContainer.js","names":[],"sources":["../../../src/components/CardContainer/CardContainer.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport TableRowGenericCard from '@/components/GenericCard/TableRowGenericCard'\nimport useGetInfoFromIds from '@/utils/hooks/useGetInfoFromIds'\nimport {\n DATASET,\n FUNDER,\n GENERIC_CARD,\n MEDIUM_USER_CARD,\n OBSERVATION_CARD,\n RELEASE_CARD,\n} from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport {\n ColumnTypeEnum,\n EntityHeader,\n Row,\n RowSet,\n} from '@sage-bionetworks/synapse-types'\nimport { Suspense } from 'react'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport { useQueryContext } from '../QueryContext'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ReleaseCard } from '../ReleaseCard'\nimport { Dataset, Funder } from '../row_renderers'\nimport {\n LoadingObservationCard,\n ObservationCard,\n} from '../row_renderers/ObservationCard'\nimport TotalQueryResults from '../TotalQueryResults'\nimport UserCardList from '../UserCardList/UserCardList'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard'\n\nconst defaultListSx = { display: 'block' }\nconst releaseCardMediumListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, 272px)',\n gridAutoRows: 'auto',\n gridAutoFlow: 'row',\n gap: '10px',\n mb: '30px',\n}\nconst multiCardListSx = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gridColumnGap: '20px',\n marginBottom: '20px',\n marginTop: '20px',\n\n '& .SRC-portalCard': {\n margin: '10px 0px',\n },\n}\n\nexport type CardContainerProps = {\n rowSet: RowSet\n isHeader?: boolean\n sustainabilityScorecard?: SustainabilityScorecardProps\n isAlignToLeftNav?: boolean\n title?: string\n isLoading?: boolean\n unitDescription?: string\n multiCardList?: boolean\n} & CardConfiguration\n\nfunction Card(props: { propsToPass: any; type: string }) {\n const { propsToPass, type } = props\n switch (type) {\n case DATASET:\n return <Dataset {...propsToPass} />\n case FUNDER:\n return <Funder {...propsToPass} />\n case GENERIC_CARD:\n return <TableRowGenericCard {...propsToPass} />\n case OBSERVATION_CARD:\n return <ObservationCard {...propsToPass} />\n case RELEASE_CARD:\n return <ReleaseCard {...propsToPass} />\n default:\n return <div /> // this should never happen\n }\n}\n\nfunction CardContainerInternal(props: CardContainerProps) {\n const {\n unitDescription,\n type,\n secondaryLabelLimit = 3,\n title,\n rowSet,\n multiCardList,\n ...rest\n } = props\n const { NoContentPlaceholder } = useQueryVisualizationContext()\n const queryContext = useQueryContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const queryVisualizationContext = useQueryVisualizationContext()\n\n const dataRows: Row[] = rowSet.rows\n const isMultipleCards = dataRows.length > 1\n\n const ids = [rowSet.tableId]\n const tableEntityConcreteType = useGetInfoFromIds<EntityHeader>({\n ids,\n type: 'ENTITY_HEADER',\n })\n\n // the cards only show the loading screen on initial load, this occurs when data is undefined\n if (dataRows.length === 0) {\n // Show \"no results\" UI (see PORTALS-1497)\n return <NoContentPlaceholder />\n }\n\n const schema: Record<string, number> = {}\n rowSet.headers.forEach((element, index) => {\n schema[element.name] = index\n })\n\n let cards\n if (type === MEDIUM_USER_CARD) {\n // Hard coding ownerId as a column name containing the user profile ownerId\n // for each row, grab the column with the ownerId\n const userIdColumnName = queryMetadata.columnModels?.find(\n cm => cm.columnType === ColumnTypeEnum.USERID,\n )?.name\n const userIdColumnIndex = userIdColumnName\n ? rowSet.headers.findIndex(el => el.name === userIdColumnName)\n : -1\n if (userIdColumnIndex === -1) {\n throw Error(\n 'Type MEDIUM_USER_CARD specified but no columnType USERID found',\n )\n }\n const listIds = dataRows.map(el => el.values[userIdColumnIndex])\n cards = (\n <UserCardList rowSet={rowSet} list={listIds} size={MEDIUM_USER_CARD} />\n )\n } else {\n // render the cards\n cards = dataRows.length ? (\n dataRows.map((rowData: Row, index) => {\n const propsForCard = {\n type,\n schema,\n secondaryLabelLimit,\n rowId: rowData.rowId,\n versionNumber: rowData.versionNumber,\n data: rowData.values,\n selectColumns: rowSet.headers,\n columnModels: queryMetadata.columnModels,\n tableEntityConcreteType:\n tableEntityConcreteType[0] && tableEntityConcreteType[0].type,\n tableId: rowSet.tableId,\n queryContext: queryContext,\n queryVisualizationContext,\n ...rest,\n }\n return (\n <Card\n key={rowData.rowId ?? index}\n propsToPass={propsForCard}\n type={type}\n />\n )\n })\n ) : (\n <></>\n )\n }\n\n const isReleaseCardMediumList =\n props.type === RELEASE_CARD &&\n props.releaseCardConfig?.cardSize === 'medium'\n\n let cardListSx = defaultListSx\n if (isReleaseCardMediumList) {\n cardListSx = releaseCardMediumListSx\n } else if (multiCardList && isMultipleCards) {\n cardListSx = multiCardListSx\n }\n\n return (\n <>\n <Box role=\"list\" sx={cardListSx}>\n {title && <h2 className=\"SRC-card-overview-title\">{title}</h2>}\n {!title && unitDescription && (\n <TotalQueryResults frontText={'Displaying'} />\n )}\n {/* ReactCSSTransitionGroup adds css fade in property for cards that come into view */}\n {cards}\n </Box>\n </>\n )\n}\n\nexport function CardContainer(props: CardContainerProps) {\n const fallback = (\n <div>\n {props.type === OBSERVATION_CARD && <LoadingObservationCard />}\n {props.type !== OBSERVATION_CARD && loadingScreen}\n </div>\n )\n return (\n <Suspense fallback={fallback}>\n <CardContainerInternal {...props} />\n </Suspense>\n )\n}\n"],"mappings":"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"}
@@ -38,6 +38,7 @@ export type SortConfiguration = {
38
38
  export type CTACardLink = {
39
39
  text: string;
40
40
  link: string;
41
+ endIcon?: React.ReactNode;
41
42
  };
42
43
  export type DescriptionConfig = {
43
44
  isMarkdown?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"CardContainerLogic.d.ts","sourceRoot":"","sources":["../../../src/components/CardContainerLogic/CardContainerLogic.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CardContainerLogic.d.ts","sourceRoot":"","sources":["../../../src/components/CardContainerLogic/CardContainerLogic.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAoB,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAC/E,OAAO,EAGL,WAAW,EACZ,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,KAAK,EAEL,YAAY,EACZ,aAAa,EACd,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAEL,8BAA8B,EAC/B,MAAM,8BAA8B,CAAA;AAMrC;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,KAAK,CAAA;IAEjB,eAAe,EAAE,MAAM,CAAA;IAEvB,cAAc,EAAE,MAAM,CAAA;IAEtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,IAAI,CAAA;IAEhB,eAAe,EAAE,MAAM,CAAA;IAEvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAE9B,aAAa,EAAE,MAAM,CAAA;IAErB,gBAAgB,EAAE,aAAa,CAAA;IAE/B,eAAe,EAAE,MAAM,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IAExB,IAAI,EAAE,MAAM,CAAA;IAEZ,IAAI,EAAE,MAAM,CAAA;IAEZ,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,4BAA4B,CAAC,EAAE,OAAO,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG;IAE3C,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC;QAE7B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,YAAY,EAAE,YAAY,CAAA;KAC3B,CAAC,CAAA;IAEF,2BAA2B,EAAE,IAAI,CAAA;CAClC,CAAA;AAGD,MAAM,MAAM,eAAe,GAAG,CAC1B,YAAY,GACZ,QAAQ,GACR,mBAAmB,GACnB,WAAW,GACX,8BAA8B,CACjC,EAAE,CAAA;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE;QACP,CAAC,KAAK,EAAE,MAAM,GAAG;YACf,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAA;SAClC,CAAA;KACF,CAAA;CACF,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,qFAAqF;IACrF,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;gCAC4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;iCAE6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC;iCAC6B;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,6BAA6B,GAAG;IACpE,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,sGAAsG;IACtG,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,kHAAkH;IAClH,+BAA+B,CAAC,EAAE,qBAAqB,CAAA;IACvD,iHAAiH;IACjH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC,GAAG,IAAI,CACJ,8BAA8B,EAC5B,UAAU,GACV,iBAAiB,GACjB,eAAe,GACf,0BAA0B,GAC1B,oCAAoC,CACvC,CAAA;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CA0GhE;AAED,eAAe,kBAAkB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardContainerLogic.js","names":[],"sources":["../../../src/components/CardContainerLogic/CardContainerLogic.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport { CardLink } from '@/components/CardContainer/CardLink'\nimport { LockedColumn, SynapseConstants, UniqueFacetIdentifier } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport {\n Query,\n QueryBundleRequest,\n SelectColumn,\n SortDirection,\n} from '@sage-bionetworks/synapse-types'\nimport React, { useMemo } from 'react'\nimport ColumnFilter from '../ColumnFilter/ColumnFilter'\nimport { SxProps } from '@mui/material'\nimport { IconSvgProps } from '../IconSvg'\nimport QuerySortSelector from '../QuerySortSelector'\nimport {\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper } from '../QueryWrapper'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { RowSetView } from '../QueryWrapperPlotNav/RowSetView'\nimport { NoContentPlaceholderType } from '../SynapseTable/NoContentPlaceholderType'\n\n/**\n * Used when a column value should link to an external URL defined by a value in another column.\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface ColumnSpecifiedLink {\n isMarkdown: false\n /* The column which should have the displayed value */\n matchColumnName: string\n /* The column which has the link. If the link is empty, the value will be displayed without a link. */\n linkColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\n/**\n * Used when a column value should be previewed\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface EntityImage {\n // the columns whos value will be used for the markdown\n matchColumnName: string\n isEntityImage: boolean\n}\n\nexport type MarkdownLink = {\n isMarkdown: true\n // the columns whos value will be used for the markdown\n matchColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\nexport type SortConfiguration = {\n // the column that the query should be sorted on by default\n defaultColumn: string\n // the direction that the defaultColumn should be sorted on by default\n defaultDirection: SortDirection\n // the columns that the UI should surface as sortable\n sortableColumns: string[]\n}\n\nexport type CTACardLink = {\n // link text\n text: string\n // column name to use for href\n link: string\n}\n\nexport type DescriptionConfig = {\n isMarkdown?: boolean\n showFullDescriptionByDefault?: boolean\n}\n\nexport type MapValueToReactComponentConfig = {\n // The column to apply the mapping to\n matchColumnName: string\n Component: React.ComponentType<{\n /* The value of the table cell. If the column is a _LIST type, then the LIST will be parsed and this will be a string array. */\n value: string | string[] | null\n selectColumn: SelectColumn\n }>\n // discriminator\n isMapValueToReactNodeConfig: true\n}\n\n// Specify the indices in the values [] that should be rendered specially\nexport type LabelLinkConfig = (\n | MarkdownLink\n | CardLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n)[]\n\nexport type ColumnIconConfig = IconSvgProps & {\n containerSx?: SxProps\n}\n\nexport type ColumnIconConfigs = {\n columns: {\n [index: string]: {\n [index: string]: ColumnIconConfig\n }\n }\n}\n\nexport type QueryOrDeprecatedSearchParams = {\n /** The initial SQL query which will be used to populate the data in the component */\n query?: Query\n /** @deprecated use `query` */\n sql?: string\n /** Optional limit for the number of cards shown per page\n * @deprecated use `query */\n limit?: number\n /** Applies filters to the query where the key is the column name and the value is the value to filter on.\n * The filter function is controlled by sqlOperator.\n * @deprecated use `query` */\n searchParams?: Record<string, string>\n /** Operator used in the filter created using the searchParams prop\n * @deprecated use `query` */\n sqlOperator?: SQLOperator\n}\n\nexport type CardContainerLogicProps = QueryOrDeprecatedSearchParams & {\n /** Optional title to display above the component */\n title?: string\n isAlignToLeftNav?: boolean\n /** Provide a `SortConfiguration` that can be used to render UI to toggle the sorting of the cards. */\n sortConfig?: SortConfiguration\n /** Configuration used to render UI that can be used to alter a filter against a column with enumerated facets. */\n topLevelEnumeratedFacetToFilter?: UniqueFacetIdentifier\n /** Optional column to 'lock'; Values and filter controls for a locked column will not be displayed in the UI. */\n lockedColumn?: LockedColumn\n /** Optionally limit the initial number of cards shown on the first page */\n initialLimit?: number\n multiCardList?: boolean\n cardConfiguration: CardConfiguration\n} & Pick<\n QueryVisualizationWrapperProps,\n | 'rgbIndex'\n | 'unitDescription'\n | 'columnAliases'\n | 'noContentPlaceholderType'\n | 'additionalFiltersSessionStorageKey'\n >\n\n/**\n * Class wraps around CardContainer and serves as a standalone logic container for rendering cards.\n */\nexport function CardContainerLogic(props: CardContainerLogicProps) {\n const { sql: deprecatedSql } = props\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const entityId = parseEntityIdFromSqlStatement(sql)\n\n const { sortConfig, columnAliases, topLevelEnumeratedFacetToFilter } = props\n const defaultSortItems = useMemo(\n () =>\n sortConfig\n ? [\n {\n column: sortConfig.defaultColumn,\n direction: sortConfig.defaultDirection,\n },\n ]\n : undefined,\n [sortConfig],\n )\n\n const initQueryRequest: QueryBundleRequest = useMemo(() => {\n let query: Query\n if (props.query) {\n query = {\n sort: defaultSortItems,\n limit: DEFAULT_PAGE_SIZE,\n ...props.query,\n }\n } else {\n // Deprecated props were used\n const queryFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n props.additionalFiltersSessionStorageKey,\n )\n query = {\n sql: props.sql!,\n limit: props.limit ?? DEFAULT_PAGE_SIZE,\n sort: defaultSortItems,\n additionalFilters: queryFilters,\n }\n }\n\n return {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: entityId,\n query: query,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n }\n }, [\n defaultSortItems,\n entityId,\n props.additionalFiltersSessionStorageKey,\n props.limit,\n props.query,\n props.searchParams,\n props.sql,\n props.sqlOperator,\n ])\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = JSON.stringify(initQueryRequest)\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n isInfinite\n key={queryWrapperKey}\n >\n <QueryVisualizationWrapper\n rgbIndex={props.rgbIndex}\n unitDescription={props.unitDescription}\n columnAliases={columnAliases}\n noContentPlaceholderType={\n props.noContentPlaceholderType ?? NoContentPlaceholderType.STATIC\n }\n >\n <QueryWrapperErrorBoundary>\n {sortConfig && <QuerySortSelector sortConfig={sortConfig} />}\n {topLevelEnumeratedFacetToFilter && (\n <ColumnFilter\n topLevelEnumeratedFacetToFilter={topLevelEnumeratedFacetToFilter}\n />\n )}\n <RowSetView\n cardConfiguration={props.cardConfiguration}\n initialLimit={props.initialLimit}\n multiCardList={props.multiCardList}\n />\n </QueryWrapperErrorBoundary>\n </QueryVisualizationWrapper>\n </QueryWrapper>\n )\n}\n\nexport default CardContainerLogic\n"],"mappings":";;;;;;;;;;;;;;;AA8JA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,KAAK,MAAkB,GAEzB,IAAW,EADL,EAAM,OAAO,OAAO,KAAiB,EACC,GAE5C,EAAE,eAAY,kBAAe,uCAAoC,GACjE,IAAmB,QAErB,IACI,CACE;EACE,QAAQ,EAAW;EACnB,WAAW,EAAW;CACxB,CACF,IACA,KAAA,GACN,CAAC,CAAU,CACb,GAEM,IAAuC,QAAc;EACzD,IAAI;EACJ,IAAI,EAAM,OACR,IAAQ;GACN,MAAM;GACN,OAAA;GACA,GAAG,EAAM;EACX;OACK;GAEL,IAAM,IAAe,EACnB,EAAM,cACN,EAAM,aACN,EAAM,kCACR;GACA,IAAQ;IACN,KAAK,EAAM;IACX,OAAO,EAAM,SAAA;IACb,MAAM;IACN,mBAAmB;GACrB;EACF;EAEA,OAAO;GACL,cAAc;GACJ;GACH;GACP,UACE;EAQJ;CACF,GAAG;EACD;EACA;EACA,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;CACR,CAAC,GAQK,IAAkB,KAAK,UAAU,CAAgB;CAEvD,OACE,kBAAC,GAAD;EACE,GAAI;EACc;EAClB,YAAA;EACA,KAAK;CAwBO,GAtBZ,kBAAC,GAAD;EACE,UAAU,EAAM;EAChB,iBAAiB,EAAM;EACR;EACf,0BACE,EAAM,4BAA4B,EAAyB;YAG7D,kBAAC,GAAD,EAAA,UAAA;GACG,KAAc,kBAAC,GAAD,EAA+B,cAAa,CAAA;GAC1D,KACC,kBAAC,GAAD,EACmC,mCAClC,CAAA;GAEH,kBAAC,GAAD;IACE,mBAAmB,EAAM;IACzB,cAAc,EAAM;IACpB,eAAe,EAAM;GACtB,CAAA;EACwB,EAAA,CAAA;CACF,CAAA,CACf;AAElB"}
1
+ {"version":3,"file":"CardContainerLogic.js","names":[],"sources":["../../../src/components/CardContainerLogic/CardContainerLogic.tsx"],"sourcesContent":["import { CardConfiguration } from '@/components/CardContainer/CardConfiguration'\nimport { CardLink } from '@/components/CardContainer/CardLink'\nimport { LockedColumn, SynapseConstants, UniqueFacetIdentifier } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport {\n Query,\n QueryBundleRequest,\n SelectColumn,\n SortDirection,\n} from '@sage-bionetworks/synapse-types'\nimport React, { useMemo } from 'react'\nimport ColumnFilter from '../ColumnFilter/ColumnFilter'\nimport { SxProps } from '@mui/material'\nimport { IconSvgProps } from '../IconSvg'\nimport QuerySortSelector from '../QuerySortSelector'\nimport {\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper } from '../QueryWrapper'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { RowSetView } from '../QueryWrapperPlotNav/RowSetView'\nimport { NoContentPlaceholderType } from '../SynapseTable/NoContentPlaceholderType'\n\n/**\n * Used when a column value should link to an external URL defined by a value in another column.\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface ColumnSpecifiedLink {\n isMarkdown: false\n /* The column which should have the displayed value */\n matchColumnName: string\n /* The column which has the link. If the link is empty, the value will be displayed without a link. */\n linkColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\n/**\n * Used when a column value should be previewed\n * Currently only works in SynapseTable (not cards!)\n */\nexport interface EntityImage {\n // the columns whos value will be used for the markdown\n matchColumnName: string\n isEntityImage: boolean\n}\n\nexport type MarkdownLink = {\n isMarkdown: true\n // the columns whos value will be used for the markdown\n matchColumnName: string\n // If set, also show a tooltip\n tooltipText?: string\n}\n\nexport type SortConfiguration = {\n // the column that the query should be sorted on by default\n defaultColumn: string\n // the direction that the defaultColumn should be sorted on by default\n defaultDirection: SortDirection\n // the columns that the UI should surface as sortable\n sortableColumns: string[]\n}\n\nexport type CTACardLink = {\n // link text\n text: string\n // column name to use for href\n link: string\n // icon to display after link text\n endIcon?: React.ReactNode\n}\n\nexport type DescriptionConfig = {\n isMarkdown?: boolean\n showFullDescriptionByDefault?: boolean\n}\n\nexport type MapValueToReactComponentConfig = {\n // The column to apply the mapping to\n matchColumnName: string\n Component: React.ComponentType<{\n /* The value of the table cell. If the column is a _LIST type, then the LIST will be parsed and this will be a string array. */\n value: string | string[] | null\n selectColumn: SelectColumn\n }>\n // discriminator\n isMapValueToReactNodeConfig: true\n}\n\n// Specify the indices in the values [] that should be rendered specially\nexport type LabelLinkConfig = (\n | MarkdownLink\n | CardLink\n | ColumnSpecifiedLink\n | EntityImage\n | MapValueToReactComponentConfig\n)[]\n\nexport type ColumnIconConfig = IconSvgProps & {\n containerSx?: SxProps\n}\n\nexport type ColumnIconConfigs = {\n columns: {\n [index: string]: {\n [index: string]: ColumnIconConfig\n }\n }\n}\n\nexport type QueryOrDeprecatedSearchParams = {\n /** The initial SQL query which will be used to populate the data in the component */\n query?: Query\n /** @deprecated use `query` */\n sql?: string\n /** Optional limit for the number of cards shown per page\n * @deprecated use `query */\n limit?: number\n /** Applies filters to the query where the key is the column name and the value is the value to filter on.\n * The filter function is controlled by sqlOperator.\n * @deprecated use `query` */\n searchParams?: Record<string, string>\n /** Operator used in the filter created using the searchParams prop\n * @deprecated use `query` */\n sqlOperator?: SQLOperator\n}\n\nexport type CardContainerLogicProps = QueryOrDeprecatedSearchParams & {\n /** Optional title to display above the component */\n title?: string\n isAlignToLeftNav?: boolean\n /** Provide a `SortConfiguration` that can be used to render UI to toggle the sorting of the cards. */\n sortConfig?: SortConfiguration\n /** Configuration used to render UI that can be used to alter a filter against a column with enumerated facets. */\n topLevelEnumeratedFacetToFilter?: UniqueFacetIdentifier\n /** Optional column to 'lock'; Values and filter controls for a locked column will not be displayed in the UI. */\n lockedColumn?: LockedColumn\n /** Optionally limit the initial number of cards shown on the first page */\n initialLimit?: number\n multiCardList?: boolean\n cardConfiguration: CardConfiguration\n} & Pick<\n QueryVisualizationWrapperProps,\n | 'rgbIndex'\n | 'unitDescription'\n | 'columnAliases'\n | 'noContentPlaceholderType'\n | 'additionalFiltersSessionStorageKey'\n >\n\n/**\n * Class wraps around CardContainer and serves as a standalone logic container for rendering cards.\n */\nexport function CardContainerLogic(props: CardContainerLogicProps) {\n const { sql: deprecatedSql } = props\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const entityId = parseEntityIdFromSqlStatement(sql)\n\n const { sortConfig, columnAliases, topLevelEnumeratedFacetToFilter } = props\n const defaultSortItems = useMemo(\n () =>\n sortConfig\n ? [\n {\n column: sortConfig.defaultColumn,\n direction: sortConfig.defaultDirection,\n },\n ]\n : undefined,\n [sortConfig],\n )\n\n const initQueryRequest: QueryBundleRequest = useMemo(() => {\n let query: Query\n if (props.query) {\n query = {\n sort: defaultSortItems,\n limit: DEFAULT_PAGE_SIZE,\n ...props.query,\n }\n } else {\n // Deprecated props were used\n const queryFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n props.additionalFiltersSessionStorageKey,\n )\n query = {\n sql: props.sql!,\n limit: props.limit ?? DEFAULT_PAGE_SIZE,\n sort: defaultSortItems,\n additionalFilters: queryFilters,\n }\n }\n\n return {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId: entityId,\n query: query,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n }\n }, [\n defaultSortItems,\n entityId,\n props.additionalFiltersSessionStorageKey,\n props.limit,\n props.query,\n props.searchParams,\n props.sql,\n props.sqlOperator,\n ])\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = JSON.stringify(initQueryRequest)\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n isInfinite\n key={queryWrapperKey}\n >\n <QueryVisualizationWrapper\n rgbIndex={props.rgbIndex}\n unitDescription={props.unitDescription}\n columnAliases={columnAliases}\n noContentPlaceholderType={\n props.noContentPlaceholderType ?? NoContentPlaceholderType.STATIC\n }\n >\n <QueryWrapperErrorBoundary>\n {sortConfig && <QuerySortSelector sortConfig={sortConfig} />}\n {topLevelEnumeratedFacetToFilter && (\n <ColumnFilter\n topLevelEnumeratedFacetToFilter={topLevelEnumeratedFacetToFilter}\n />\n )}\n <RowSetView\n cardConfiguration={props.cardConfiguration}\n initialLimit={props.initialLimit}\n multiCardList={props.multiCardList}\n />\n </QueryWrapperErrorBoundary>\n </QueryVisualizationWrapper>\n </QueryWrapper>\n )\n}\n\nexport default CardContainerLogic\n"],"mappings":";;;;;;;;;;;;;;;AAgKA,SAAgB,EAAmB,GAAgC;CACjE,IAAM,EAAE,KAAK,MAAkB,GAEzB,IAAW,EADL,EAAM,OAAO,OAAO,KAAiB,EACC,GAE5C,EAAE,eAAY,kBAAe,uCAAoC,GACjE,IAAmB,QAErB,IACI,CACE;EACE,QAAQ,EAAW;EACnB,WAAW,EAAW;CACxB,CACF,IACA,KAAA,GACN,CAAC,CAAU,CACb,GAEM,IAAuC,QAAc;EACzD,IAAI;EACJ,IAAI,EAAM,OACR,IAAQ;GACN,MAAM;GACN,OAAA;GACA,GAAG,EAAM;EACX;OACK;GAEL,IAAM,IAAe,EACnB,EAAM,cACN,EAAM,aACN,EAAM,kCACR;GACA,IAAQ;IACN,KAAK,EAAM;IACX,OAAO,EAAM,SAAA;IACb,MAAM;IACN,mBAAmB;GACrB;EACF;EAEA,OAAO;GACL,cAAc;GACJ;GACH;GACP,UACE;EAQJ;CACF,GAAG;EACD;EACA;EACA,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;EACN,EAAM;CACR,CAAC,GAQK,IAAkB,KAAK,UAAU,CAAgB;CAEvD,OACE,kBAAC,GAAD;EACE,GAAI;EACc;EAClB,YAAA;EACA,KAAK;CAwBO,GAtBZ,kBAAC,GAAD;EACE,UAAU,EAAM;EAChB,iBAAiB,EAAM;EACR;EACf,0BACE,EAAM,4BAA4B,EAAyB;YAG7D,kBAAC,GAAD,EAAA,UAAA;GACG,KAAc,kBAAC,GAAD,EAA+B,cAAa,CAAA;GAC1D,KACC,kBAAC,GAAD,EACmC,mCAClC,CAAA;GAEH,kBAAC,GAAD;IACE,mBAAmB,EAAM;IACzB,cAAc,EAAM;IACpB,eAAe,EAAM;GACtB,CAAA;EACwB,EAAA,CAAA;CACF,CAAA,CACf;AAElB"}
@@ -1 +1 @@
1
- ._dataExplorerTitle_q328i_1.MuiTypography-root{color:var(--data-explorer-title-color,var(--synapse-primary-action-color));margin-bottom:10px;font-size:36px;line-height:40px}._dataExplorerSubtitle_q328i_8.MuiTypography-root{line-height:140%}._dataExplorerButton_q328i_12{width:fit-content}._dataExplorerTextContainer_q328i_16{flex:0 0 30%;gap:16px;max-width:30%}._dataExplorerContainer_q328i_22{flex:1 0 0;align-items:flex-start;gap:60px;padding:40px 0;display:flex}._dataContainer_q328i_30{flex:60%;grid-template-rows:repeat(9,fit-content(100%));grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0;display:inline-grid}._dataRowTitle_q328i_40{color:var(--synapse-primary-action-color,#4d558d);overflow-wrap:break-word;word-break:break-word;flex:0 auto;min-width:0;font-size:19.8px;font-weight:400;line-height:26.4px}._dataRowInner_q328i_51{flex:1;justify-content:space-between;align-items:center;min-width:0;display:flex}._dataRow_q328i_40{border:1px solid #0000;border-radius:3.3px;justify-content:space-between;justify-self:stretch;align-items:center;gap:17.6px;min-height:66.6px;padding:8.8px 26.4px;transition:background-color .2s,border-color .2s,box-shadow .2s,transform .2s;display:flex;position:relative;text-decoration:none!important}._dataRow_q328i_40:hover{z-index:1;background-color:#fff;border-color:#e1e1e1;transform:scale(1.1);box-shadow:0 4px 8px #0000001a}._dataRow_q328i_40:hover ._viewCta_q328i_80{opacity:1;pointer-events:auto}._dataRowLeft_q328i_85{flex:1;align-items:center;gap:16px;min-width:0;display:inline-flex}._iconContainer_q328i_93{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:49px;height:49px;display:flex}._dataRowNamePill_q328i_103{flex:1 1 0;align-items:center;gap:8px;min-width:0;display:flex}._fileCount_q328i_111{color:#787090;border:1px solid #d8d5e0;border-radius:80px;flex-shrink:0;justify-content:center;align-items:center;gap:10px;padding:4px 8px;font-size:14px;font-weight:400;line-height:24px;display:flex}._viewCta_q328i_80{opacity:0;white-space:nowrap;color:var(--synapse-primary-action-color,#4d558d);background:linear-gradient(90deg,#0000,#fff 25% 100%);border-radius:0 2px 2px 0;align-items:center;gap:4px;padding-left:40px;padding-right:26.4px;transition:opacity .2s;display:inline-flex;position:absolute;top:0;bottom:0;right:0}._viewCtaText_q328i_144{color:var(--synapse-primary-action-color,#4d558d);font-size:16px;font-weight:400;line-height:26.4px}._viewCtaIcon_q328i_151.MuiSvgIcon-root{color:var(--synapse-primary-action-color,#5a488f);font-size:24px}
1
+ ._dataExplorerTitle_1pd0d_1.MuiTypography-root{color:var(--data-explorer-title-color,var(--synapse-primary-action-color));margin-bottom:10px;font-size:36px;line-height:40px}._dataExplorerSubtitle_1pd0d_8.MuiTypography-root{line-height:140%}@media (width>=1024px){._dataExplorerButton_1pd0d_13{width:fit-content}}._dataExplorerTextContainer_1pd0d_18{gap:16px}@media (width>=1024px){._dataExplorerTextContainer_1pd0d_18{flex:0 0 30%;max-width:30%}}._dataExplorerContainer_1pd0d_28{flex-direction:column;flex:1 0 0;align-items:flex-start;gap:60px;padding:40px 0;display:flex}@media (width>=1024px){._dataExplorerContainer_1pd0d_28{flex-direction:row}}._dataContainer_1pd0d_42{flex:60%;grid-template-rows:repeat(9,fit-content(100%));grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0;display:inline-grid}._dataRowTitle_1pd0d_52{color:var(--synapse-primary-action-color,#4d558d);overflow-wrap:break-word;word-break:break-word;flex:0 auto;min-width:0;font-size:16px;font-weight:400;line-height:26.4px}@media (width>=1024px){._dataRowTitle_1pd0d_52{font-size:19.8px}}._dataRowInner_1pd0d_68{flex:1;justify-content:space-between;align-items:center;min-width:0;display:flex}._dataRow_1pd0d_52{border:1px solid #0000;border-radius:3.3px;justify-content:space-between;justify-self:stretch;align-items:center;gap:17.6px;min-height:66.6px;padding:8.8px 26.4px;transition:background-color .2s,border-color .2s,box-shadow .2s,transform .2s;display:flex;position:relative;text-decoration:none!important}._dataRow_1pd0d_52:hover{z-index:1;background-color:#fff;border-color:#e1e1e1;transform:scale(1.1);box-shadow:0 4px 8px #0000001a}._dataRow_1pd0d_52:hover ._viewCta_1pd0d_97{opacity:1;pointer-events:auto}._dataRowLeft_1pd0d_102{flex:1;align-items:center;gap:16px;min-width:0;display:inline-flex}._iconContainer_1pd0d_110{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:49px;height:49px;display:flex}._dataRowNamePill_1pd0d_120{flex:1 1 0;align-items:center;gap:8px;min-width:0;display:flex}._fileCount_1pd0d_128{color:#787090;border:1px solid #d8d5e0;border-radius:80px;flex-shrink:0;justify-content:center;align-items:center;gap:10px;padding:4px 8px;font-size:14px;font-weight:400;line-height:24px;display:flex}._viewCta_1pd0d_97{opacity:0;white-space:nowrap;color:var(--synapse-primary-action-color,#4d558d);background:linear-gradient(90deg,#0000,#fff 25% 100%);border-radius:0 2px 2px 0;align-items:center;gap:4px;padding-left:40px;padding-right:26.4px;transition:opacity .2s;display:inline-flex;position:absolute;top:0;bottom:0;right:0}._viewCtaText_1pd0d_161{color:var(--synapse-primary-action-color,#4d558d);font-size:16px;font-weight:400;line-height:26.4px}._viewCtaIcon_1pd0d_168.MuiSvgIcon-root{color:var(--synapse-primary-action-color,#5a488f);font-size:24px}
@@ -1,20 +1,20 @@
1
1
  import './DataExplorer.css';var e = {
2
- dataExplorerTitle: "_dataExplorerTitle_q328i_1",
3
- dataExplorerSubtitle: "_dataExplorerSubtitle_q328i_8",
4
- dataExplorerButton: "_dataExplorerButton_q328i_12",
5
- dataExplorerTextContainer: "_dataExplorerTextContainer_q328i_16",
6
- dataExplorerContainer: "_dataExplorerContainer_q328i_22",
7
- dataContainer: "_dataContainer_q328i_30",
8
- dataRowTitle: "_dataRowTitle_q328i_40",
9
- dataRowInner: "_dataRowInner_q328i_51",
10
- dataRow: "_dataRow_q328i_40",
11
- viewCta: "_viewCta_q328i_80",
12
- dataRowLeft: "_dataRowLeft_q328i_85",
13
- iconContainer: "_iconContainer_q328i_93",
14
- dataRowNamePill: "_dataRowNamePill_q328i_103",
15
- fileCount: "_fileCount_q328i_111",
16
- viewCtaText: "_viewCtaText_q328i_144",
17
- viewCtaIcon: "_viewCtaIcon_q328i_151"
2
+ dataExplorerTitle: "_dataExplorerTitle_1pd0d_1",
3
+ dataExplorerSubtitle: "_dataExplorerSubtitle_1pd0d_8",
4
+ dataExplorerButton: "_dataExplorerButton_1pd0d_13",
5
+ dataExplorerTextContainer: "_dataExplorerTextContainer_1pd0d_18",
6
+ dataExplorerContainer: "_dataExplorerContainer_1pd0d_28",
7
+ dataContainer: "_dataContainer_1pd0d_42",
8
+ dataRowTitle: "_dataRowTitle_1pd0d_52",
9
+ dataRowInner: "_dataRowInner_1pd0d_68",
10
+ dataRow: "_dataRow_1pd0d_52",
11
+ viewCta: "_viewCta_1pd0d_97",
12
+ dataRowLeft: "_dataRowLeft_1pd0d_102",
13
+ iconContainer: "_iconContainer_1pd0d_110",
14
+ dataRowNamePill: "_dataRowNamePill_1pd0d_120",
15
+ fileCount: "_fileCount_1pd0d_128",
16
+ viewCtaText: "_viewCtaText_1pd0d_161",
17
+ viewCtaIcon: "_viewCtaIcon_1pd0d_168"
18
18
  };
19
19
  //#endregion
20
20
  export { e as default };
@@ -1 +1 @@
1
- {"version":3,"file":"DataExplorer.module.js","names":[],"sources":["../../../src/components/DataExplorer/DataExplorer.module.scss"],"sourcesContent":[".dataExplorerTitle:global(.MuiTypography-root) {\n color: var(--data-explorer-title-color, var(--synapse-primary-action-color));\n font-size: 36px;\n line-height: 40px; /* 111.111% */\n margin-bottom: 10px;\n}\n\n.dataExplorerSubtitle:global(.MuiTypography-root) {\n line-height: 140%;\n}\n\n.dataExplorerButton {\n width: fit-content;\n}\n\n.dataExplorerTextContainer {\n gap: 16px;\n flex: 0 0 30%;\n max-width: 30%;\n}\n\n.dataExplorerContainer {\n display: flex;\n padding: 40px 0;\n align-items: flex-start;\n gap: 60px;\n flex: 1 0 0;\n}\n\n.dataContainer {\n display: inline-grid;\n row-gap: 8px;\n column-gap: 8px;\n flex: 1 1 60%;\n min-width: 0;\n grid-template-rows: repeat(9, fit-content(100%));\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.dataRowTitle {\n color: var(--synapse-primary-action-color, #4d558d);\n font-size: 19.8px;\n font-weight: 400;\n line-height: 26.4px;\n flex: 0 1 auto;\n min-width: 0;\n overflow-wrap: break-word;\n word-break: break-word;\n}\n\n.dataRowInner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex: 1;\n min-width: 0;\n}\n\n.dataRow {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8.8px 26.4px;\n min-height: 66.6px;\n gap: 17.6px;\n justify-self: stretch;\n position: relative;\n border-radius: 3.3px;\n border: 1px solid transparent;\n text-decoration: none !important;\n transition: background-color 200ms ease, border-color 200ms ease,\n box-shadow 200ms ease, transform 200ms ease;\n\n &:hover {\n background-color: #fff;\n border-color: #e1e1e1;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1);\n transform: scale(1.1);\n z-index: 1;\n .viewCta {\n opacity: 1;\n pointer-events: auto;\n }\n }\n}\n\n.dataRowLeft {\n display: inline-flex;\n align-items: center;\n gap: 16px;\n min-width: 0;\n flex: 1;\n}\n\n.iconContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 49px;\n height: 49px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.dataRowNamePill {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1 1 0;\n min-width: 0;\n}\n\n.fileCount {\n display: flex;\n padding: 4px 8px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 80px;\n border: 1px solid #d8d5e0;\n color: #787090;\n font-size: 14px;\n font-weight: 400;\n line-height: 24px; /* 171.429% */\n flex-shrink: 0;\n}\n\n.viewCta {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n display: inline-flex;\n align-items: center;\n padding-right: 26.4px;\n padding-left: 40px;\n gap: 4px;\n opacity: 0;\n white-space: nowrap;\n color: var(--synapse-primary-action-color, #4d558d);\n background: linear-gradient(to right, transparent, #fff 25%, #fff 100%);\n border-radius: 0 2px 2px 0;\n transition: opacity 200ms ease;\n}\n\n.viewCtaText {\n color: var(--synapse-primary-action-color, #4d558d);\n font-size: 16px;\n font-weight: 400;\n line-height: 26.4px; /* 165% */\n}\n\n.viewCtaIcon:global(.MuiSvgIcon-root) {\n font-size: 24px;\n color: var(--synapse-primary-action-color, #5a488f);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DataExplorer.module.js","names":[],"sources":["../../../src/components/DataExplorer/DataExplorer.module.scss"],"sourcesContent":["@use 'sass:map';\n@use '../../style/abstracts/variables' as SrcVariables;\n\n.dataExplorerTitle:global(.MuiTypography-root) {\n color: var(--data-explorer-title-color, var(--synapse-primary-action-color));\n font-size: 36px;\n line-height: 40px; /* 111.111% */\n margin-bottom: 10px;\n}\n\n.dataExplorerSubtitle:global(.MuiTypography-root) {\n line-height: 140%;\n}\n\n.dataExplorerButton {\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n width: fit-content;\n }\n}\n\n.dataExplorerTextContainer {\n gap: 16px;\n\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n flex: 0 0 30%;\n max-width: 30%;\n }\n}\n\n.dataExplorerContainer {\n display: flex;\n padding: 40px 0;\n align-items: flex-start;\n gap: 60px;\n flex: 1 0 0;\n flex-direction: column;\n\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n flex-direction: row;\n }\n}\n\n.dataContainer {\n display: inline-grid;\n row-gap: 8px;\n column-gap: 8px;\n flex: 1 1 60%;\n min-width: 0;\n grid-template-rows: repeat(9, fit-content(100%));\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.dataRowTitle {\n color: var(--synapse-primary-action-color, #4d558d);\n font-size: 16px;\n font-weight: 400;\n line-height: 26.4px;\n flex: 0 1 auto;\n min-width: 0;\n overflow-wrap: break-word;\n word-break: break-word;\n\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n font-size: 19.8px;\n }\n}\n\n.dataRowInner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex: 1;\n min-width: 0;\n}\n\n.dataRow {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8.8px 26.4px;\n min-height: 66.6px;\n gap: 17.6px;\n justify-self: stretch;\n position: relative;\n border-radius: 3.3px;\n border: 1px solid transparent;\n text-decoration: none !important;\n transition:\n background-color 200ms ease,\n border-color 200ms ease,\n box-shadow 200ms ease,\n transform 200ms ease;\n\n &:hover {\n background-color: #fff;\n border-color: #e1e1e1;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1);\n transform: scale(1.1);\n z-index: 1;\n .viewCta {\n opacity: 1;\n pointer-events: auto;\n }\n }\n}\n\n.dataRowLeft {\n display: inline-flex;\n align-items: center;\n gap: 16px;\n min-width: 0;\n flex: 1;\n}\n\n.iconContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 49px;\n height: 49px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.dataRowNamePill {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1 1 0;\n min-width: 0;\n}\n\n.fileCount {\n display: flex;\n padding: 4px 8px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 80px;\n border: 1px solid #d8d5e0;\n color: #787090;\n font-size: 14px;\n font-weight: 400;\n line-height: 24px; /* 171.429% */\n flex-shrink: 0;\n}\n\n.viewCta {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n display: inline-flex;\n align-items: center;\n padding-right: 26.4px;\n padding-left: 40px;\n gap: 4px;\n opacity: 0;\n white-space: nowrap;\n color: var(--synapse-primary-action-color, #4d558d);\n background: linear-gradient(to right, transparent, #fff 25%, #fff 100%);\n border-radius: 0 2px 2px 0;\n transition: opacity 200ms ease;\n}\n\n.viewCtaText {\n color: var(--synapse-primary-action-color, #4d558d);\n font-size: 16px;\n font-weight: 400;\n line-height: 26.4px; /* 165% */\n}\n\n.viewCtaIcon:global(.MuiSvgIcon-root) {\n font-size: 24px;\n color: var(--synapse-primary-action-color, #5a488f);\n}\n"],"mappings":""}
@@ -1,3 +1,6 @@
1
+ @use 'sass:map';
2
+ @use '../../style/abstracts/variables' as SrcVariables;
3
+
1
4
  .dataExplorerTitle:global(.MuiTypography-root) {
2
5
  color: var(--data-explorer-title-color, var(--synapse-primary-action-color));
3
6
  font-size: 36px;
@@ -10,13 +13,18 @@
10
13
  }
11
14
 
12
15
  .dataExplorerButton {
13
- width: fit-content;
16
+ @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {
17
+ width: fit-content;
18
+ }
14
19
  }
15
20
 
16
21
  .dataExplorerTextContainer {
17
22
  gap: 16px;
18
- flex: 0 0 30%;
19
- max-width: 30%;
23
+
24
+ @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {
25
+ flex: 0 0 30%;
26
+ max-width: 30%;
27
+ }
20
28
  }
21
29
 
22
30
  .dataExplorerContainer {
@@ -25,6 +33,11 @@
25
33
  align-items: flex-start;
26
34
  gap: 60px;
27
35
  flex: 1 0 0;
36
+ flex-direction: column;
37
+
38
+ @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {
39
+ flex-direction: row;
40
+ }
28
41
  }
29
42
 
30
43
  .dataContainer {
@@ -39,13 +52,17 @@
39
52
 
40
53
  .dataRowTitle {
41
54
  color: var(--synapse-primary-action-color, #4d558d);
42
- font-size: 19.8px;
55
+ font-size: 16px;
43
56
  font-weight: 400;
44
57
  line-height: 26.4px;
45
58
  flex: 0 1 auto;
46
59
  min-width: 0;
47
60
  overflow-wrap: break-word;
48
61
  word-break: break-word;
62
+
63
+ @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {
64
+ font-size: 19.8px;
65
+ }
49
66
  }
50
67
 
51
68
  .dataRowInner {
@@ -68,8 +85,11 @@
68
85
  border-radius: 3.3px;
69
86
  border: 1px solid transparent;
70
87
  text-decoration: none !important;
71
- transition: background-color 200ms ease, border-color 200ms ease,
72
- box-shadow 200ms ease, transform 200ms ease;
88
+ transition:
89
+ background-color 200ms ease,
90
+ border-color 200ms ease,
91
+ box-shadow 200ms ease,
92
+ transform 200ms ease;
73
93
 
74
94
  &:hover {
75
95
  background-color: #fff;
@@ -1,14 +1,16 @@
1
1
  type ColumnHeaderWithTooltipProps = {
2
2
  name: string;
3
3
  description?: string;
4
+ isRequired?: boolean;
4
5
  showPinIcon?: boolean;
5
6
  isPinned?: boolean;
6
7
  onTogglePin?: () => void;
7
8
  };
8
9
  /**
9
- * Renders a column header with an optional help icon showing the column description.
10
- * Adopts the help icon pattern from ColumnHeader for consistent UX.
10
+ * Renders a column header. When a description is provided, hovering the column
11
+ * name shows it as a native tooltip; otherwise the column name is shown (useful
12
+ * for truncated headers). An optional pin icon is shown on the right.
11
13
  */
12
- export declare function ColumnHeaderWithTooltip({ name, description, showPinIcon, isPinned, onTogglePin, }: ColumnHeaderWithTooltipProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function ColumnHeaderWithTooltip({ name, description, isRequired, showPinIcon, isPinned, onTogglePin, }: ColumnHeaderWithTooltipProps): import("react/jsx-runtime").JSX.Element;
13
15
  export {};
14
16
  //# sourceMappingURL=ColumnHeaderWithTooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnHeaderWithTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"names":[],"mappings":"AAIA,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB,CAAA;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAW,EACX,WAAmB,EACnB,QAAgB,EAChB,WAAW,GACZ,EAAE,4BAA4B,2CA0E9B"}
1
+ {"version":3,"file":"ColumnHeaderWithTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"names":[],"mappings":"AAIA,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB,CAAA;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAW,EACX,UAAkB,EAClB,WAAmB,EACnB,QAAgB,EAChB,WAAW,GACZ,EAAE,4BAA4B,2CAqE9B"}
@@ -1,82 +1,81 @@
1
1
  import "../../SynapseTable/SynapseTableConstants.js";
2
2
  import { Box as e, IconButton as t, Tooltip as n } from "@mui/material";
3
3
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
- import { HelpTwoTone as a, PushPin as o, PushPinOutlined as s } from "@mui/icons-material";
5
- import { c } from "react/compiler-runtime";
4
+ import { PushPin as a, PushPinOutlined as o } from "@mui/icons-material";
5
+ import { c as s } from "react/compiler-runtime";
6
6
  //#region src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx
7
- function l(l) {
8
- let u = c(17), { name: d, description: f, showPinIcon: p, isPinned: m, onTogglePin: h } = l, g = p === void 0 ? !1 : p, _ = m === void 0 ? !1 : m, v;
9
- u[0] === Symbol.for("react.memo_cache_sentinel") ? (v = {
7
+ function c(c) {
8
+ let l = s(19), { name: u, description: d, isRequired: f, showPinIcon: p, isPinned: m, onTogglePin: h } = c, g = f === void 0 ? !1 : f, _ = p === void 0 ? !1 : p, v = m === void 0 ? !1 : m, y;
9
+ l[0] === Symbol.for("react.memo_cache_sentinel") ? (y = {
10
10
  display: "grid",
11
11
  gridTemplateColumns: "minmax(0, 1fr) auto",
12
12
  gap: .5,
13
13
  width: "100%",
14
14
  alignItems: "center",
15
15
  minWidth: 0
16
- }, u[0] = v) : v = u[0];
17
- let y;
18
- u[1] === Symbol.for("react.memo_cache_sentinel") ? (y = {
16
+ }, l[0] = y) : y = l[0];
17
+ let b;
18
+ l[1] === Symbol.for("react.memo_cache_sentinel") ? (b = {
19
19
  overflow: "hidden",
20
20
  textOverflow: "ellipsis",
21
21
  whiteSpace: "nowrap",
22
22
  minWidth: 0
23
- }, u[1] = y) : y = u[1];
24
- let b;
25
- u[2] === d ? b = u[3] : (b = /* @__PURE__ */ r(e, {
23
+ }, l[1] = b) : b = l[1];
24
+ let x = d || u, S;
25
+ l[2] === g ? S = l[3] : (S = g && /* @__PURE__ */ r(e, {
26
26
  component: "span",
27
- sx: y,
28
- title: d,
29
- children: d
30
- }), u[2] = d, u[3] = b);
31
- let x;
32
- u[4] === Symbol.for("react.memo_cache_sentinel") ? (x = {
27
+ sx: {
28
+ color: "error.main",
29
+ ml: .25
30
+ },
31
+ children: "*"
32
+ }), l[2] = g, l[3] = S);
33
+ let C;
34
+ l[4] !== u || l[5] !== x || l[6] !== S ? (C = /* @__PURE__ */ i(e, {
35
+ component: "span",
36
+ sx: b,
37
+ title: x,
38
+ children: [u, S]
39
+ }), l[4] = u, l[5] = x, l[6] = S, l[7] = C) : C = l[7];
40
+ let w;
41
+ l[8] === Symbol.for("react.memo_cache_sentinel") ? (w = {
33
42
  display: "flex",
34
43
  gap: .5,
35
44
  flexShrink: 0
36
- }, u[4] = x) : x = u[4];
37
- let S;
38
- u[5] === f ? S = u[6] : (S = f && /* @__PURE__ */ r(n, {
39
- title: f,
40
- placement: "top",
41
- enterNextDelay: 500,
42
- children: /* @__PURE__ */ r(t, {
43
- size: "small",
44
- color: "inherit",
45
- children: /* @__PURE__ */ r(a, { fontSize: "inherit" })
46
- })
47
- }), u[5] = f, u[6] = S);
48
- let C;
49
- u[7] !== _ || u[8] !== h || u[9] !== g ? (C = g && h && /* @__PURE__ */ r(n, {
50
- title: _ ? "Unpin column" : "Pin column",
45
+ }, l[8] = w) : w = l[8];
46
+ let T;
47
+ l[9] !== v || l[10] !== h || l[11] !== _ ? (T = _ && h && /* @__PURE__ */ r(n, {
48
+ title: v ? "Unpin column" : "Pin column",
51
49
  placement: "top",
52
50
  enterNextDelay: 500,
53
51
  children: /* @__PURE__ */ r(t, {
54
52
  size: "small",
55
53
  color: "inherit",
56
- "aria-label": _ ? "Unpin column" : "Pin column",
54
+ "aria-label": v ? "Unpin column" : "Pin column",
57
55
  onMouseDown: (e) => {
58
56
  e.stopPropagation(), h();
59
57
  },
60
58
  sx: {
61
59
  color: "inherit",
62
- opacity: _ ? 1 : .7,
60
+ opacity: v ? 1 : .7,
63
61
  "&:hover": { opacity: 1 }
64
62
  },
65
- children: r(_ ? o : s, { fontSize: "inherit" })
63
+ children: r(v ? a : o, { fontSize: "inherit" })
66
64
  })
67
- }), u[7] = _, u[8] = h, u[9] = g, u[10] = C) : C = u[10];
68
- let w;
69
- u[11] !== S || u[12] !== C ? (w = /* @__PURE__ */ i(e, {
70
- sx: x,
71
- children: [S, C]
72
- }), u[11] = S, u[12] = C, u[13] = w) : w = u[13];
73
- let T;
74
- return u[14] !== b || u[15] !== w ? (T = /* @__PURE__ */ i(e, {
75
- sx: v,
76
- children: [b, w]
77
- }), u[14] = b, u[15] = w, u[16] = T) : T = u[16], T;
65
+ }), l[9] = v, l[10] = h, l[11] = _, l[12] = T) : T = l[12];
66
+ let E;
67
+ l[13] === T ? E = l[14] : (E = /* @__PURE__ */ r(e, {
68
+ sx: w,
69
+ children: T
70
+ }), l[13] = T, l[14] = E);
71
+ let D;
72
+ return l[15] !== u || l[16] !== E || l[17] !== C ? (D = /* @__PURE__ */ i(e, {
73
+ "data-column-id": u,
74
+ sx: y,
75
+ children: [C, E]
76
+ }), l[15] = u, l[16] = E, l[17] = C, l[18] = D) : D = l[18], D;
78
77
  }
79
78
  //#endregion
80
- export { l as ColumnHeaderWithTooltip };
79
+ export { c as ColumnHeaderWithTooltip };
81
80
 
82
81
  //# sourceMappingURL=ColumnHeaderWithTooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnHeaderWithTooltip.js","names":["Box","IconButton","Tooltip","HelpTwoTone","PushPin","PushPinOutlined","TOOLTIP_DELAY_SHOW","ColumnHeaderWithTooltipProps","name","description","showPinIcon","isPinned","onTogglePin","ColumnHeaderWithTooltip","t0","$","_c","t1","t2","undefined","t3","Symbol","for","display","gridTemplateColumns","gap","width","alignItems","minWidth","t4","overflow","textOverflow","whiteSpace","t5","t6","flexShrink","t7","t8","e","stopPropagation","color","opacity","t9","t10"],"sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"sourcesContent":["import { Box, IconButton, Tooltip } from '@mui/material'\nimport { HelpTwoTone, PushPin, PushPinOutlined } from '@mui/icons-material'\nimport { TOOLTIP_DELAY_SHOW } from '@/components/SynapseTable/SynapseTableConstants'\n\ntype ColumnHeaderWithTooltipProps = {\n name: string\n description?: string\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n}\n\n/**\n * Renders a column header with an optional help icon showing the column description.\n * Adopts the help icon pattern from ColumnHeader for consistent UX.\n */\nexport function ColumnHeaderWithTooltip({\n name,\n description,\n showPinIcon = false,\n isPinned = false,\n onTogglePin,\n}: ColumnHeaderWithTooltipProps) {\n return (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gap: 0.5,\n width: '100%',\n alignItems: 'center',\n minWidth: 0,\n }}\n >\n {/* Text area - shrinks first */}\n <Box\n component=\"span\"\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n title={name} // Native tooltip for truncated text\n >\n {name}\n </Box>\n\n {/* Icons area - fixed size, never shrinks */}\n <Box sx={{ display: 'flex', gap: 0.5, flexShrink: 0 }}>\n {description && (\n <Tooltip\n title={description}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton size=\"small\" color=\"inherit\">\n <HelpTwoTone fontSize=\"inherit\" />\n </IconButton>\n </Tooltip>\n )}\n {showPinIcon && onTogglePin && (\n <Tooltip\n title={isPinned ? 'Unpin column' : 'Pin column'}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton\n size=\"small\"\n color=\"inherit\"\n aria-label={isPinned ? 'Unpin column' : 'Pin column'}\n // Use onMouseDown instead of onClick to prevent column selection\n // when clicking the pin icon. stopPropagation prevents event bubbling.\n onMouseDown={e => {\n e.stopPropagation()\n onTogglePin()\n }}\n sx={{\n color: 'inherit',\n opacity: isPinned ? 1 : 0.7,\n '&:hover': {\n opacity: 1,\n },\n }}\n >\n {isPinned ? (\n <PushPin fontSize=\"inherit\" />\n ) : (\n <PushPinOutlined fontSize=\"inherit\" />\n )}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Box>\n )\n}\n"],"mappings":";;;;;;AAgBA,SAAOa,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAiC,EAAAR,SAAAC,gBAAAC,aAAAO,GAAAN,UAAAO,GAAAN,mBAAAE,GAGtCJ,IAAAO,MAAAE,KAAAA,IAAA,KAAAF,GACAN,IAAAO,MAAAC,KAAAA,IAAA,KAAAD,GAAgBE;CAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAKRF,IAAA;EAAAG,SACO;EAAMC,qBACM;EAAqBC,KACrC;EAAGC,OACD;EAAMC,YACD;EAAQC,UACV;CACZ,GAACb,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAc;CAAA,AAAAd,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAKKO,IAAA;EAAAC,UACQ;EAAQC,cACJ;EAAUC,YACZ;EAAQJ,UACV;CACZ,GAACb,EAAA,KAAAc,KAAAA,IAAAd,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,OAAAP,IAIGyB,IAAAlB,EAAA,MAXNkB,IAAA,kBAAC,GAAD;EACY,WAAA;EACN,IAAAJ;EAMGrB,OAAAA;YAENA;CAVC,CAAA,GAWEO,EAAA,KAAAP,GAAAO,EAAA,KAAAkB;CAAA,IAAAC;CAAA,AAAAnB,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAGGY,IAAA;EAAAX,SAAW;EAAME,KAAO;EAAGU,YAAc;CAAE,GAACpB,EAAA,KAAAmB,KAAAA,IAAAnB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,OAAAN,IAWlD2B,IAAArB,EAAA,MAVAqB,IAAA3B,KACC,kBAAC,GAAD;EACSA,OAAAA;EACG,WAAA;EACMH,gBAAAA;YAEhB,kBAAC,GAAD;GAAiB,MAAA;GAAc,OAAA;aAC7B,kBAAC,GAAD,EAAsB,UAAA,UAAS,CAAA;EADtB,CAAA;CALL,CAAA,GASTS,EAAA,KAAAN,GAAAM,EAAA,KAAAqB;CAAA,IAAAC;CAAA,AAAAtB,EAAA,OAAAJ,KAAAI,EAAA,OAAAH,KAAAG,EAAA,OAAAL,KACA2B,IAAA3B,KAAAE,KACC,kBAAC,GAAD;EACS,OAAAD,IAAA,iBAAA;EACG,WAAA;EACML,gBAAAA;YAEhB,kBAAC,GAAD;GACO,MAAA;GACC,OAAA;GACM,cAAAK,IAAA,iBAAA;GAGC,cAAA2B,MAAA;IAEX1B,AADA0B,EAACC,gBAAiB,GAClB3B,EAAY;GAAC;GAEX,IAAA;IAAA4B,OACK;IAASC,SACP9B,IAAA,IAAA;IAAkB,WAChB,EAAA8B,SACA,EACX;GACF;aAGE,EADD9B,IACE,IAEA,GAFD,EAAkB,UAAA,UAAS,CAEQ;EArB5B,CAAA;CALL,CAAA,GA8BTI,EAAA,KAAAJ,GAAAI,EAAA,KAAAH,GAAAG,EAAA,KAAAL,GAAAK,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,QAAAqB,KAAArB,EAAA,QAAAsB,KA3CHK,IAAA,kBAAC,GAAD;EAAS,IAAAR;YAAT,CACGE,GAWAC,CAZC;KA4CEtB,EAAA,MAAAqB,GAAArB,EAAA,MAAAsB,GAAAtB,EAAA,MAAA2B,KAAAA,IAAA3B,EAAA;CAAA,IAAA4B;CACF,OADE5B,EAAA,QAAAkB,KAAAlB,EAAA,QAAA2B,KArERC,IAAA,kBAAC,GAAD;EACM,IAAAvB;YADN,CAWEa,GAcAS,CAzBE;KAsEE3B,EAAA,MAAAkB,GAAAlB,EAAA,MAAA2B,GAAA3B,EAAA,MAAA4B,KAAAA,IAAA5B,EAAA,KAtEN4B;AAsEM"}
1
+ {"version":3,"file":"ColumnHeaderWithTooltip.js","names":["Box","IconButton","Tooltip","PushPin","PushPinOutlined","TOOLTIP_DELAY_SHOW","ColumnHeaderWithTooltipProps","name","description","isRequired","showPinIcon","isPinned","onTogglePin","ColumnHeaderWithTooltip","t0","$","_c","t1","t2","t3","undefined","t4","Symbol","for","display","gridTemplateColumns","gap","width","alignItems","minWidth","t5","overflow","textOverflow","whiteSpace","t6","t7","color","ml","t8","t9","flexShrink","t10","e","stopPropagation","opacity","t11","t12"],"sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"sourcesContent":["import { Box, IconButton, Tooltip } from '@mui/material'\nimport { PushPin, PushPinOutlined } from '@mui/icons-material'\nimport { TOOLTIP_DELAY_SHOW } from '@/components/SynapseTable/SynapseTableConstants'\n\ntype ColumnHeaderWithTooltipProps = {\n name: string\n description?: string\n isRequired?: boolean\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n}\n\n/**\n * Renders a column header. When a description is provided, hovering the column\n * name shows it as a native tooltip; otherwise the column name is shown (useful\n * for truncated headers). An optional pin icon is shown on the right.\n */\nexport function ColumnHeaderWithTooltip({\n name,\n description,\n isRequired = false,\n showPinIcon = false,\n isPinned = false,\n onTogglePin,\n}: ColumnHeaderWithTooltipProps) {\n return (\n <Box\n data-column-id={name}\n sx={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gap: 0.5,\n width: '100%',\n alignItems: 'center',\n minWidth: 0,\n }}\n >\n {/* Text area - shrinks first */}\n <Box\n component=\"span\"\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n title={description || name}\n >\n {name}\n {isRequired && (\n <Box component=\"span\" sx={{ color: 'error.main', ml: 0.25 }}>\n *\n </Box>\n )}\n </Box>\n\n {/* Icons area - fixed size, never shrinks */}\n <Box sx={{ display: 'flex', gap: 0.5, flexShrink: 0 }}>\n {showPinIcon && onTogglePin && (\n <Tooltip\n title={isPinned ? 'Unpin column' : 'Pin column'}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton\n size=\"small\"\n color=\"inherit\"\n aria-label={isPinned ? 'Unpin column' : 'Pin column'}\n // Use onMouseDown instead of onClick to prevent column selection\n // when clicking the pin icon. stopPropagation prevents event bubbling.\n onMouseDown={e => {\n e.stopPropagation()\n onTogglePin()\n }}\n sx={{\n color: 'inherit',\n opacity: isPinned ? 1 : 0.7,\n '&:hover': {\n opacity: 1,\n },\n }}\n >\n {isPinned ? (\n <PushPin fontSize=\"inherit\" />\n ) : (\n <PushPinOutlined fontSize=\"inherit\" />\n )}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Box>\n )\n}\n"],"mappings":";;;;;;AAkBA,SAAOa,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAiC,EAAAT,SAAAC,gBAAAC,YAAAQ,GAAAP,aAAAQ,GAAAP,UAAAQ,GAAAP,mBAAAE,GAGtCL,IAAAQ,MAAAG,KAAAA,IAAA,KAAAH,GACAP,IAAAQ,MAAAE,KAAAA,IAAA,KAAAF,GACAP,IAAAQ,MAAAC,KAAAA,IAAA,KAAAD,GAAgBE;CAAA,AAAAN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAMRF,IAAA;EAAAG,SACO;EAAMC,qBACM;EAAqBC,KACrC;EAAGC,OACD;EAAMC,YACD;EAAQC,UACV;CACZ,GAACd,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAAA,IAAAe;CAAA,AAAAf,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAKKO,IAAA;EAAAC,UACQ;EAAQC,cACJ;EAAUC,YACZ;EAAQJ,UACV;CACZ,GAACd,EAAA,KAAAe,KAAAA,IAAAf,EAAA;CACM,IAAAmB,IAAA1B,KAAAD,GAAmB4B;CAAA,AAAApB,EAAA,OAAAN,IAOzB0B,IAAApB,EAAA,MAJAoB,IAAA1B,KACC,kBAAC,GAAD;EAAe,WAAA;EAAW,IAAA;GAAA2B,OAAS;GAAYC,IAAM;EAAK;YAAG;CAAzD,CAAA,GAGLtB,EAAA,KAAAN,GAAAM,EAAA,KAAAoB;CAAA,IAAAG;CAAA,AAAAvB,EAAA,OAAAR,KAAAQ,EAAA,OAAAmB,KAAAnB,EAAA,OAAAoB,KAfHG,IAAA,kBAAC,GAAD;EACY,WAAA;EACN,IAAAR;EAMG,OAAAI;YART,CAUG3B,GACA4B,CAXC;KAgBEpB,EAAA,KAAAR,GAAAQ,EAAA,KAAAmB,GAAAnB,EAAA,KAAAoB,GAAApB,EAAA,KAAAuB,KAAAA,IAAAvB,EAAA;CAAA,IAAAwB;CAAA,AAAAxB,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAGGgB,IAAA;EAAAf,SAAW;EAAME,KAAO;EAAGc,YAAc;CAAE,GAACzB,EAAA,KAAAwB,KAAAA,IAAAxB,EAAA;CAAA,IAAA0B;CAAA,AAAA1B,EAAA,OAAAJ,KAAAI,EAAA,QAAAH,KAAAG,EAAA,QAAAL,KAClD+B,IAAA/B,KAAAE,KACC,kBAAC,GAAD;EACS,OAAAD,IAAA,iBAAA;EACG,WAAA;EACMN,gBAAAA;YAEhB,kBAAC,GAAD;GACO,MAAA;GACC,OAAA;GACM,cAAAM,IAAA,iBAAA;GAGC,cAAA+B,MAAA;IAEX9B,AADA8B,EAACC,gBAAiB,GAClB/B,EAAY;GAAC;GAEX,IAAA;IAAAwB,OACK;IAASQ,SACPjC,IAAA,IAAA;IAAkB,WAChB,EAAAiC,SACA,EACX;GACF;aAGE,EADDjC,IACE,IAEA,GAFD,EAAkB,UAAA,UAAS,CAEQ;EArB5B,CAAA;CALL,CAAA,GA8BTI,EAAA,KAAAJ,GAAAI,EAAA,MAAAH,GAAAG,EAAA,MAAAL,GAAAK,EAAA,MAAA0B,KAAAA,IAAA1B,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,QAAA0B,IACGI,IAAA9B,EAAA,OAjCN8B,IAAA,kBAAC,GAAD;EAAS,IAAAN;YACNE;CADC,CAAA,GAiCE1B,EAAA,MAAA0B,GAAA1B,EAAA,MAAA8B;CAAA,IAAAC;CACF,OADE/B,EAAA,QAAAR,KAAAQ,EAAA,QAAA8B,KAAA9B,EAAA,QAAAuB,KAhERQ,IAAA,kBAAC,GAAD;EACkBvC,kBAAAA;EACZ,IAAAc;YAFN,CAYEiB,GAmBAO,CA/BE;KAiEE9B,EAAA,MAAAR,GAAAQ,EAAA,MAAA8B,GAAA9B,EAAA,MAAAuB,GAAAvB,EAAA,MAAA+B,KAAAA,IAAA/B,EAAA,KAjEN+B;AAiEM"}
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnResizeHandles.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/hooks/useColumnResizeHandles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAA;AAS/D,KAAK,2BAA2B,GAAG;IACjC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAClD,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/D,CAAA;AAwTD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,SAAS,EACT,cAAc,GACf,EAAE,2BAA2B,QAiC7B"}
1
+ {"version":3,"file":"useColumnResizeHandles.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/hooks/useColumnResizeHandles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAA;AAS/D,KAAK,2BAA2B,GAAG;IACjC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAClD,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/D,CAAA;AA4TD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,SAAS,EACT,cAAc,GACf,EAAE,2BAA2B,QAiC7B"}
@@ -72,7 +72,7 @@ var i = class e {
72
72
  let t = /* @__PURE__ */ new Set();
73
73
  e.forEach((e, n) => {
74
74
  if (n === 0) return;
75
- let r = e, i = r.textContent?.trim() || "", a = this.colValues.findIndex((e) => e.id === i);
75
+ let r = e, i = r.querySelector("[data-column-id]")?.dataset.columnId ?? r.textContent?.trim() ?? "", a = this.colValues.findIndex((e) => e.id === i);
76
76
  if (a !== -1) {
77
77
  let e = this.colValues[a]?.id;
78
78
  t.add(e), this.createOrUpdateHandle(r, a);