@genspectrum/dashboard-components 0.18.0 → 0.18.2

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 (35) hide show
  1. package/custom-elements.json +7 -7
  2. package/dist/{LineageFilterChangedEvent-DkvWdq_G.js → LineageFilterChangedEvent-ixHQkq8y.js} +2 -2
  3. package/dist/{LineageFilterChangedEvent-DkvWdq_G.js.map → LineageFilterChangedEvent-ixHQkq8y.js.map} +1 -1
  4. package/dist/assets/{mutationOverTimeWorker-CPfQDLe6.js.map → mutationOverTimeWorker-ChQTFL68.js.map} +1 -1
  5. package/dist/components.d.ts +33 -31
  6. package/dist/components.js +114 -63
  7. package/dist/components.js.map +1 -1
  8. package/dist/util.d.ts +28 -28
  9. package/dist/util.js +1 -1
  10. package/package.json +1 -1
  11. package/src/preact/components/color-scale-selector.tsx +1 -1
  12. package/src/preact/dateRangeFilter/computeInitialValues.spec.ts +2 -2
  13. package/src/preact/dateRangeFilter/computeInitialValues.ts +1 -1
  14. package/src/preact/dateRangeFilter/date-range-filter.stories.tsx +3 -5
  15. package/src/preact/dateRangeFilter/date-range-filter.tsx +12 -7
  16. package/src/preact/dateRangeFilter/dateRangeOption.ts +1 -1
  17. package/src/preact/mutationFilter/mutation-filter.tsx +1 -1
  18. package/src/preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay.ts +3773 -2290
  19. package/src/preact/mutationsOverTime/__mockData__/byWeek.ts +3012 -948
  20. package/src/preact/mutationsOverTime/__mockData__/defaultMockData.ts +8799 -4406
  21. package/src/preact/mutationsOverTime/__mockData__/showsMessageWhenTooManyMutations.ts +1836 -0
  22. package/src/preact/mutationsOverTime/getFilteredMutationsOverTime.spec.ts +3 -1
  23. package/src/preact/mutationsOverTime/mutations-over-time-grid-tooltip.stories.tsx +108 -0
  24. package/src/preact/mutationsOverTime/mutations-over-time-grid-tooltip.tsx +93 -0
  25. package/src/preact/mutationsOverTime/mutations-over-time-grid.tsx +12 -48
  26. package/src/preact/mutationsOverTime/mutations-over-time.tsx +2 -1
  27. package/src/preact/wastewater/mutationsOverTime/computeWastewaterMutationsOverTimeDataPerLocation.spec.ts +5 -5
  28. package/src/preact/wastewater/mutationsOverTime/computeWastewaterMutationsOverTimeDataPerLocation.ts +1 -3
  29. package/src/query/queryMutationsOverTime.spec.ts +28 -26
  30. package/src/query/queryMutationsOverTime.ts +20 -8
  31. package/src/web-components/input/gs-date-range-filter.stories.ts +1 -1
  32. package/src/web-components/input/gs-date-range-filter.tsx +7 -5
  33. package/standalone-bundle/assets/{mutationOverTimeWorker-CERZSdcA.js.map → mutationOverTimeWorker-jChgWnwp.js.map} +1 -1
  34. package/standalone-bundle/dashboard-components.js +2189 -2149
  35. package/standalone-bundle/dashboard-components.js.map +1 -1
package/dist/util.d.ts CHANGED
@@ -138,7 +138,7 @@ declare const dateRangeOptionSchema: default_2.ZodObject<{
138
138
 
139
139
  export declare type DateRangeValue = default_2.infer<typeof dateRangeValueSchema>;
140
140
 
141
- declare const dateRangeValueSchema: default_2.ZodOptional<default_2.ZodUnion<[default_2.ZodString, default_2.ZodObject<{
141
+ declare const dateRangeValueSchema: default_2.ZodNullable<default_2.ZodUnion<[default_2.ZodString, default_2.ZodObject<{
142
142
  dateFrom: default_2.ZodOptional<default_2.ZodString>;
143
143
  dateTo: default_2.ZodOptional<default_2.ZodString>;
144
144
  }, "strip", default_2.ZodTypeAny, {
@@ -906,7 +906,7 @@ declare global {
906
906
 
907
907
  declare global {
908
908
  interface HTMLElementTagNameMap {
909
- 'gs-prevalence-over-time': PrevalenceOverTimeComponent;
909
+ 'gs-mutations-component': MutationsComponent;
910
910
  }
911
911
  }
912
912
 
@@ -914,7 +914,7 @@ declare global {
914
914
  declare global {
915
915
  namespace JSX {
916
916
  interface IntrinsicElements {
917
- 'gs-prevalence-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
917
+ 'gs-mutations-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
918
918
  }
919
919
  }
920
920
  }
@@ -922,7 +922,7 @@ declare global {
922
922
 
923
923
  declare global {
924
924
  interface HTMLElementTagNameMap {
925
- 'gs-mutations-component': MutationsComponent;
925
+ 'gs-relative-growth-advantage': RelativeGrowthAdvantageComponent;
926
926
  }
927
927
  }
928
928
 
@@ -930,7 +930,7 @@ declare global {
930
930
  declare global {
931
931
  namespace JSX {
932
932
  interface IntrinsicElements {
933
- 'gs-mutations-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
933
+ 'gs-relative-growth-advantage': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
934
934
  }
935
935
  }
936
936
  }
@@ -938,7 +938,7 @@ declare global {
938
938
 
939
939
  declare global {
940
940
  interface HTMLElementTagNameMap {
941
- 'gs-relative-growth-advantage': RelativeGrowthAdvantageComponent;
941
+ 'gs-prevalence-over-time': PrevalenceOverTimeComponent;
942
942
  }
943
943
  }
944
944
 
@@ -946,7 +946,7 @@ declare global {
946
946
  declare global {
947
947
  namespace JSX {
948
948
  interface IntrinsicElements {
949
- 'gs-relative-growth-advantage': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
949
+ 'gs-prevalence-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
950
950
  }
951
951
  }
952
952
  }
@@ -1002,7 +1002,7 @@ declare global {
1002
1002
 
1003
1003
  declare global {
1004
1004
  interface HTMLElementTagNameMap {
1005
- 'gs-sequences-by-location': SequencesByLocationComponent;
1005
+ 'gs-statistics': StatisticsComponent;
1006
1006
  }
1007
1007
  }
1008
1008
 
@@ -1010,7 +1010,7 @@ declare global {
1010
1010
  declare global {
1011
1011
  namespace JSX {
1012
1012
  interface IntrinsicElements {
1013
- 'gs-sequences-by-location': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1013
+ 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1014
1014
  }
1015
1015
  }
1016
1016
  }
@@ -1018,7 +1018,7 @@ declare global {
1018
1018
 
1019
1019
  declare global {
1020
1020
  interface HTMLElementTagNameMap {
1021
- 'gs-statistics': StatisticsComponent;
1021
+ 'gs-sequences-by-location': SequencesByLocationComponent;
1022
1022
  }
1023
1023
  }
1024
1024
 
@@ -1026,7 +1026,7 @@ declare global {
1026
1026
  declare global {
1027
1027
  namespace JSX {
1028
1028
  interface IntrinsicElements {
1029
- 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1029
+ 'gs-sequences-by-location': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1030
1030
  }
1031
1031
  }
1032
1032
  }
@@ -1034,7 +1034,11 @@ declare global {
1034
1034
 
1035
1035
  declare global {
1036
1036
  interface HTMLElementTagNameMap {
1037
- 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
1037
+ 'gs-date-range-filter': DateRangeFilterComponent;
1038
+ }
1039
+ interface HTMLElementEventMap {
1040
+ 'gs-date-range-filter-changed': CustomEvent<Record<string, string>>;
1041
+ 'gs-date-range-option-changed': DateRangeOptionChangedEvent;
1038
1042
  }
1039
1043
  }
1040
1044
 
@@ -1042,7 +1046,7 @@ declare global {
1042
1046
  declare global {
1043
1047
  namespace JSX {
1044
1048
  interface IntrinsicElements {
1045
- 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1049
+ 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1046
1050
  }
1047
1051
  }
1048
1052
  }
@@ -1069,11 +1073,10 @@ declare global {
1069
1073
 
1070
1074
  declare global {
1071
1075
  interface HTMLElementTagNameMap {
1072
- 'gs-date-range-filter': DateRangeFilterComponent;
1076
+ 'gs-text-filter': TextFilterComponent;
1073
1077
  }
1074
1078
  interface HTMLElementEventMap {
1075
- 'gs-date-range-filter-changed': CustomEvent<Record<string, string>>;
1076
- 'gs-date-range-option-changed': DateRangeOptionChangedEvent;
1079
+ 'gs-text-filter-changed': TextFilterChangedEvent;
1077
1080
  }
1078
1081
  }
1079
1082
 
@@ -1081,7 +1084,7 @@ declare global {
1081
1084
  declare global {
1082
1085
  namespace JSX {
1083
1086
  interface IntrinsicElements {
1084
- 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1087
+ 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1085
1088
  }
1086
1089
  }
1087
1090
  }
@@ -1089,10 +1092,10 @@ declare global {
1089
1092
 
1090
1093
  declare global {
1091
1094
  interface HTMLElementTagNameMap {
1092
- 'gs-text-filter': TextFilterComponent;
1095
+ 'gs-mutation-filter': MutationFilterComponent;
1093
1096
  }
1094
1097
  interface HTMLElementEventMap {
1095
- 'gs-text-filter-changed': TextFilterChangedEvent;
1098
+ 'gs-mutation-filter-changed': CustomEvent<MutationsFilter>;
1096
1099
  }
1097
1100
  }
1098
1101
 
@@ -1100,7 +1103,7 @@ declare global {
1100
1103
  declare global {
1101
1104
  namespace JSX {
1102
1105
  interface IntrinsicElements {
1103
- 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1106
+ 'gs-mutation-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1104
1107
  }
1105
1108
  }
1106
1109
  }
@@ -1108,10 +1111,10 @@ declare global {
1108
1111
 
1109
1112
  declare global {
1110
1113
  interface HTMLElementTagNameMap {
1111
- 'gs-mutation-filter': MutationFilterComponent;
1114
+ 'gs-lineage-filter': LineageFilterComponent;
1112
1115
  }
1113
1116
  interface HTMLElementEventMap {
1114
- 'gs-mutation-filter-changed': CustomEvent<MutationsFilter>;
1117
+ 'gs-lineage-filter-changed': LineageFilterChangedEvent;
1115
1118
  }
1116
1119
  }
1117
1120
 
@@ -1119,7 +1122,7 @@ declare global {
1119
1122
  declare global {
1120
1123
  namespace JSX {
1121
1124
  interface IntrinsicElements {
1122
- 'gs-mutation-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1125
+ 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1123
1126
  }
1124
1127
  }
1125
1128
  }
@@ -1127,10 +1130,7 @@ declare global {
1127
1130
 
1128
1131
  declare global {
1129
1132
  interface HTMLElementTagNameMap {
1130
- 'gs-lineage-filter': LineageFilterComponent;
1131
- }
1132
- interface HTMLElementEventMap {
1133
- 'gs-lineage-filter-changed': LineageFilterChangedEvent;
1133
+ 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
1134
1134
  }
1135
1135
  }
1136
1136
 
@@ -1138,7 +1138,7 @@ declare global {
1138
1138
  declare global {
1139
1139
  namespace JSX {
1140
1140
  interface IntrinsicElements {
1141
- 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1141
+ 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1142
1142
  }
1143
1143
  }
1144
1144
  }
package/dist/util.js CHANGED
@@ -1,4 +1,4 @@
1
- import { D, a, L, T, d, v } from "./LineageFilterChangedEvent-DkvWdq_G.js";
1
+ import { D, a, L, T, d, v } from "./LineageFilterChangedEvent-ixHQkq8y.js";
2
2
  export {
3
3
  D as DateRangeOptionChangedEvent,
4
4
  a as LineageFilterChangedEvent,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genspectrum/dashboard-components",
3
- "version": "0.18.0",
3
+ "version": "0.18.2",
4
4
  "description": "GenSpectrum web components for building dashboards",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",
@@ -54,7 +54,7 @@ export const ColorScaleSelector: FunctionComponent<ColorScaleSelectorProps> = ({
54
54
  );
55
55
  };
56
56
 
57
- export const getColorWithingScale = (value: number | undefined, colorScale: ColorScale) => {
57
+ export const getColorWithinScale = (value: number | undefined, colorScale: ColorScale) => {
58
58
  if (value === undefined) {
59
59
  return 'lightgrey';
60
60
  }
@@ -18,8 +18,8 @@ const dateRangeOptions = [
18
18
  ];
19
19
 
20
20
  describe('computeInitialValues', () => {
21
- it('should return undefined for unedfined value', () => {
22
- const result = computeInitialValues(undefined, earliestDate, dateRangeOptions);
21
+ it('should return undefined for null value', () => {
22
+ const result = computeInitialValues(null, earliestDate, dateRangeOptions);
23
23
 
24
24
  expect(result).toBeUndefined();
25
25
  });
@@ -3,7 +3,7 @@ import { getDatesForSelectorValue, getSelectableOptions } from './selectableOpti
3
3
  import { UserFacingError } from '../components/error-display';
4
4
 
5
5
  export function computeInitialValues(value: DateRangeValue, earliestDate: string, dateRangeOptions: DateRangeOption[]) {
6
- if (value === undefined) {
6
+ if (value === null) {
7
7
  return undefined;
8
8
  }
9
9
 
@@ -56,7 +56,7 @@ const meta: Meta<DateRangeFilterProps> = {
56
56
  args: {
57
57
  dateRangeOptions: [dateRangeOptionPresets.lastMonth, dateRangeOptionPresets.allTimes, customDateRange],
58
58
  earliestDate,
59
- value: undefined,
59
+ value: null,
60
60
  lapisDateField: 'aDateColumn',
61
61
  width: '100%',
62
62
  placeholder,
@@ -194,16 +194,14 @@ export const ChangingTheValueProgrammatically: StoryObj<DateRangeFilterProps> =
194
194
  ...Primary,
195
195
  render: (args) => {
196
196
  const StatefulWrapper = () => {
197
- const [value, setValue] = useState<DateRangeValue | undefined>('Last month');
197
+ const [value, setValue] = useState<DateRangeValue>('Last month');
198
198
  const ref = useRef<HTMLDivElement>(null);
199
199
 
200
200
  useEffect(() => {
201
201
  ref.current?.addEventListener('gs-date-range-option-changed', (event) => {
202
- const newValue = (event as CustomEvent).detail;
203
- setValue(newValue ?? undefined);
202
+ setValue(event.detail);
204
203
  });
205
204
  }, []);
206
-
207
205
  return (
208
206
  <div ref={ref}>
209
207
  <LapisUrlContextProvider value={LAPIS_URL}>
@@ -179,13 +179,18 @@ export const DateRangeFilterInner = ({
179
179
  };
180
180
 
181
181
  const fireOptionChangedEvent = (state: DateRangeFilterState) => {
182
- const eventDetail =
183
- state?.label === customOption
184
- ? {
185
- dateFrom: state.dateFrom !== undefined ? toYYYYMMDD(state.dateFrom) : undefined,
186
- dateTo: state.dateTo !== undefined ? toYYYYMMDD(state.dateTo) : undefined,
187
- }
188
- : state?.label;
182
+ const eventDetail = (() => {
183
+ if (state === null) {
184
+ return null;
185
+ }
186
+ if (state.label === customOption) {
187
+ return {
188
+ dateFrom: state.dateFrom !== undefined ? toYYYYMMDD(state.dateFrom) : undefined,
189
+ dateTo: state.dateTo !== undefined ? toYYYYMMDD(state.dateTo) : undefined,
190
+ };
191
+ }
192
+ return state.label;
193
+ })();
189
194
 
190
195
  divRef.current?.dispatchEvent(new DateRangeOptionChangedEvent(eventDetail));
191
196
  };
@@ -30,7 +30,7 @@ export const dateRangeValueSchema = z
30
30
  dateTo: z.string().date().optional(),
31
31
  }),
32
32
  ])
33
- .optional();
33
+ .nullable();
34
34
 
35
35
  export type DateRangeValue = z.infer<typeof dateRangeValueSchema>;
36
36
 
@@ -326,7 +326,7 @@ const SelectedFilter = ({ handleRemoveValue, mutationFilter }: SelectedFilterPro
326
326
  }}
327
327
  >
328
328
  {mutationFilter.value.toString()}
329
- <button className='ml-1' onClick={() => handleRemoveValue(mutationFilter)}>
329
+ <button className='ml-1 cursor-pointer' onClick={() => handleRemoveValue(mutationFilter)}>
330
330
  ×
331
331
  </button>
332
332
  </span>