@genspectrum/dashboard-components 0.16.3 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/custom-elements.json +86 -61
  2. package/dist/{LineageFilterChangedEvent-COWV-Y0k.js → LineageFilterChangedEvent-DkvWdq_G.js} +2 -2
  3. package/dist/LineageFilterChangedEvent-DkvWdq_G.js.map +1 -0
  4. package/dist/assets/{mutationOverTimeWorker-DJcZmEH9.js.map → mutationOverTimeWorker-CPfQDLe6.js.map} +1 -1
  5. package/dist/components.d.ts +64 -51
  6. package/dist/components.js +1134 -937
  7. package/dist/components.js.map +1 -1
  8. package/dist/style.css +81 -9
  9. package/dist/util.d.ts +76 -34
  10. package/dist/util.js +1 -1
  11. package/package.json +2 -1
  12. package/src/preact/components/annotated-mutation.stories.tsx +2 -1
  13. package/src/preact/components/annotated-mutation.tsx +6 -2
  14. package/src/preact/components/clearable-select.stories.tsx +75 -0
  15. package/src/preact/components/clearable-select.tsx +76 -0
  16. package/src/preact/components/downshift-combobox.tsx +9 -7
  17. package/src/preact/dateRangeFilter/computeInitialValues.spec.ts +31 -33
  18. package/src/preact/dateRangeFilter/computeInitialValues.ts +2 -15
  19. package/src/preact/dateRangeFilter/date-picker.tsx +66 -0
  20. package/src/preact/dateRangeFilter/date-range-filter.stories.tsx +69 -31
  21. package/src/preact/dateRangeFilter/date-range-filter.tsx +136 -139
  22. package/src/preact/dateRangeFilter/dateRangeOption.ts +11 -11
  23. package/src/preact/mutationComparison/mutation-comparison-table.tsx +14 -1
  24. package/src/preact/mutationComparison/mutation-comparison-venn.tsx +39 -8
  25. package/src/preact/mutationComparison/mutation-comparison.stories.tsx +36 -12
  26. package/src/preact/mutationComparison/mutation-comparison.tsx +2 -0
  27. package/src/preact/mutations/mutations.stories.tsx +3 -9
  28. package/src/preact/mutationsOverTime/mutations-over-time.stories.tsx +3 -8
  29. package/src/preact/shared/WithClassName/WithClassName.ts +1 -0
  30. package/src/preact/shared/icons/DeleteIcon.tsx +3 -0
  31. package/src/preact/shared/stories/expectMutationAnnotation.ts +13 -0
  32. package/src/preact/shared/stories/expectOptionSelected.tsx +7 -0
  33. package/src/utilEntrypoint.ts +3 -1
  34. package/src/web-components/MutationAnnotations.mdx +33 -0
  35. package/src/web-components/ResizeContainer.mdx +1 -1
  36. package/src/web-components/errorHandling.mdx +1 -1
  37. package/src/web-components/gs-app.ts +2 -2
  38. package/src/web-components/input/gs-date-range-filter.stories.ts +38 -32
  39. package/src/web-components/input/gs-date-range-filter.tsx +8 -2
  40. package/src/web-components/input/gs-lineage-filter.tsx +1 -1
  41. package/src/web-components/input/gs-location-filter.tsx +1 -1
  42. package/src/web-components/input/gs-mutation-filter.tsx +1 -1
  43. package/src/web-components/input/gs-text-filter.tsx +1 -1
  44. package/src/web-components/visualization/gs-aggregate.tsx +2 -2
  45. package/src/web-components/visualization/gs-mutation-comparison.stories.ts +18 -1
  46. package/src/web-components/visualization/gs-mutation-comparison.tsx +24 -10
  47. package/src/web-components/visualization/gs-mutations-over-time.stories.ts +2 -1
  48. package/src/web-components/visualization/gs-mutations-over-time.tsx +5 -2
  49. package/src/web-components/visualization/gs-mutations.stories.ts +2 -1
  50. package/src/web-components/visualization/gs-mutations.tsx +5 -2
  51. package/src/web-components/visualization/gs-number-sequences-over-time.tsx +2 -2
  52. package/src/web-components/visualization/gs-prevalence-over-time.tsx +2 -2
  53. package/src/web-components/visualization/gs-relative-growth-advantage.tsx +2 -2
  54. package/src/web-components/visualization/gs-sequences-by-location.tsx +2 -2
  55. package/src/web-components/visualization/gs-statistics.tsx +2 -2
  56. package/src/web-components/wastewaterVisualization/gs-wastewater-mutations-over-time.tsx +2 -2
  57. package/standalone-bundle/assets/mutationOverTimeWorker-CERZSdcA.js.map +1 -1
  58. package/standalone-bundle/dashboard-components.js +13293 -12635
  59. package/standalone-bundle/dashboard-components.js.map +1 -1
  60. package/standalone-bundle/style.css +1 -1
  61. package/dist/LineageFilterChangedEvent-COWV-Y0k.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ import { expect, userEvent, waitFor, within } from '@storybook/test';
2
+
3
+ export async function expectMutationAnnotation(canvasElement: HTMLElement, mutation: string) {
4
+ const canvas = within(canvasElement);
5
+
6
+ await waitFor(async () => {
7
+ const annotatedMutation = canvas.getAllByText(mutation)[0];
8
+ await expect(annotatedMutation).toBeVisible();
9
+ await userEvent.click(annotatedMutation);
10
+ });
11
+
12
+ await waitFor(() => expect(canvas.getByText(`Annotations for ${mutation}`)).toBeVisible());
13
+ }
@@ -0,0 +1,7 @@
1
+ import { expect, within } from '@storybook/test';
2
+
3
+ export const expectOptionSelected = async (canvasElement: HTMLElement, option: string) => {
4
+ const canvas = within(canvasElement);
5
+ const placeholderOption = canvas.getByRole('combobox').querySelector('option:checked');
6
+ await expect(placeholderOption).toHaveTextContent(option);
7
+ };
@@ -1,6 +1,6 @@
1
1
  export {
2
2
  type DateRangeOption,
3
- type DateRangeSelectOption,
3
+ type DateRangeValue,
4
4
  dateRangeOptionPresets,
5
5
  DateRangeOptionChangedEvent,
6
6
  } from './preact/dateRangeFilter/dateRangeOption';
@@ -36,3 +36,5 @@ export type { AxisMax, YAxisMaxConfig } from './preact/shared/charts/getYAxisMax
36
36
  export { LocationChangedEvent } from './preact/locationFilter/LocationChangedEvent';
37
37
  export { LineageFilterChangedEvent } from './preact/lineageFilter/LineageFilterChangedEvent';
38
38
  export { TextFilterChangedEvent } from './preact/textFilter/TextFilterChangedEvent';
39
+
40
+ export type { MutationAnnotations, MutationAnnotation } from './web-components/mutation-annotations-context';
@@ -0,0 +1,33 @@
1
+ import { Meta } from '@storybook/blocks';
2
+
3
+ <Meta title='Concepts/Mutation Annotations' />
4
+
5
+ # Mutation Annotations
6
+
7
+ Organism data usually has a lot of mutations.
8
+ It can be challenging for users to find out which mutations are relevant to investigate.
9
+ To guide the user to the most interesting mutations, we provide a mutation annotation feature.
10
+
11
+ The mutation annotations can be (optionally) supplied to `gs-app` as a JSON object:
12
+
13
+ ```html
14
+ <gs-app
15
+ lapis="https://your.lapis.url"
16
+ mutationAnnotations="[
17
+ {
18
+ name: 'I am an annotation!',
19
+ description: 'This describes what is special about these mutations.',
20
+ symbol: '+',
21
+ nucleotideMutations: ['C44T', 'C774T', 'G24872T', 'T23011-'],
22
+ aminoAcidMutations: ['S:501Y', 'S:S31-', 'ORF1a:S4286C'],
23
+ },
24
+ ]"
25
+ >
26
+ {/* children... */}
27
+ </gs-app>
28
+ ```
29
+
30
+ The mutation annotations are then distributed to child components.
31
+ Whenever we display a mutation (e.g. in the `gs-mutations` table view)
32
+ we will append the `symbol` of all matching annotations: <span>C44T<sup class='text-red-600'>+</sup></span>.
33
+ Users can click on the mutation to open a modal that shows the `name` and `description` of the annotation.
@@ -1,6 +1,6 @@
1
1
  import { Meta } from '@storybook/blocks';
2
2
 
3
- <Meta title='Components/Size of components' />
3
+ <Meta title='Concepts/Size of components' />
4
4
 
5
5
  # Size of components
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { Meta } from '@storybook/blocks';
2
2
 
3
- <Meta title='Components/Error Handling' />
3
+ <Meta title='Concepts/Error Handling' />
4
4
 
5
5
  # Error Handling
6
6
 
@@ -44,8 +44,8 @@ export class AppComponent extends LitElement {
44
44
 
45
45
  /**
46
46
  * Supply lists of mutations that are especially relevant for the current organism.
47
- * Whenever other components display mutations, matching mutations will be highlighted by appending the `symbol`.
48
- * On hover, a tooltip with the `name` and `description` will be shown.
47
+ *
48
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-mutation-annotations--docs for more information.
49
49
  */
50
50
  @provide({ context: mutationAnnotationsContext })
51
51
  @property({ type: Array })
@@ -19,6 +19,7 @@ const codeExample = String.raw`
19
19
  value="Year 2021"
20
20
  width="100%"
21
21
  lapisDateField="myDateColumn"
22
+ placeholder="My date column"
22
23
  ></gs-date-range-filter>`;
23
24
 
24
25
  const customDateRange = { label: 'CustomDateRange', dateFrom: '2021-01-01', dateTo: '2021-12-31' };
@@ -39,25 +40,20 @@ const meta: Meta<Required<DateRangeFilterProps>> = {
39
40
  }),
40
41
  argTypes: {
41
42
  value: {
42
- control: {
43
- type: 'object',
44
- },
43
+ control: { type: 'object' },
45
44
  },
46
45
  lapisDateField: { control: { type: 'text' } },
47
46
  dateRangeOptions: {
48
- control: {
49
- type: 'object',
50
- },
47
+ control: { type: 'object' },
51
48
  },
52
49
  earliestDate: {
53
- control: {
54
- type: 'text',
55
- },
50
+ control: { type: 'text' },
56
51
  },
57
52
  width: {
58
- control: {
59
- type: 'text',
60
- },
53
+ control: { type: 'text' },
54
+ },
55
+ placeholder: {
56
+ control: { type: 'text' },
61
57
  },
62
58
  },
63
59
  args: {
@@ -72,6 +68,7 @@ const meta: Meta<Required<DateRangeFilterProps>> = {
72
68
  value: dateRangeOptionPresets.lastMonth.label,
73
69
  lapisDateField: 'aDateColumn',
74
70
  width: '100%',
71
+ placeholder: 'Date range',
75
72
  },
76
73
  tags: ['autodocs'],
77
74
  };
@@ -88,6 +85,7 @@ export const Default: StoryObj<Required<DateRangeFilterProps>> = {
88
85
  .value=${args.value}
89
86
  .width=${args.width}
90
87
  .lapisDateField=${args.lapisDateField}
88
+ .placeholder=${args.placeholder}
91
89
  ></gs-date-range-filter>
92
90
  </div>
93
91
  </gs-app>`,
@@ -103,14 +101,15 @@ export const TestRenderAttributesInHtmlInsteadOfUsingPropertyExpression: StoryOb
103
101
  value="${args.value}"
104
102
  width="${args.width}"
105
103
  lapisDateField="${args.lapisDateField}"
104
+ placeholder="${args.placeholder}"
106
105
  ></gs-date-range-filter>
107
106
  </div>
108
107
  </gs-app>`,
109
108
  play: async ({ canvasElement }) => {
110
- const canvas = await withinShadowRoot(canvasElement, 'gs-date-range-filter');
111
-
112
109
  await waitFor(async () => {
113
- await expect(selectField(canvas)).toHaveValue('Last month');
110
+ const canvas = await withinShadowRoot(canvasElement, 'gs-date-range-filter');
111
+ const placeholderOption = canvas.getByRole('combobox').querySelector('option:checked');
112
+ await expect(placeholderOption).toHaveTextContent('Last month');
114
113
  });
115
114
  },
116
115
  argTypes: {
@@ -150,7 +149,10 @@ export const FiresEvents: StoryObj<Required<DateRangeFilterProps>> = {
150
149
  });
151
150
 
152
151
  await step('Expect last 6 months to be selected', async () => {
153
- await expect(selectField(canvas)).toHaveValue('Last month');
152
+ await waitFor(async () => {
153
+ const placeholderOption = canvas.getByRole('combobox').querySelector('option:checked');
154
+ await expect(placeholderOption).toHaveTextContent('Last month');
155
+ });
154
156
  await waitFor(async () => {
155
157
  await expect(dateToPicker(canvas)).toHaveValue(toYYYYMMDD(new Date()));
156
158
  });
@@ -158,22 +160,26 @@ export const FiresEvents: StoryObj<Required<DateRangeFilterProps>> = {
158
160
 
159
161
  await step('Expect event to be fired when selecting a different value', async () => {
160
162
  await userEvent.selectOptions(selectField(canvas), 'CustomDateRange');
161
- await expect(dateToPicker(canvas)).toHaveValue(customDateRange.dateTo);
162
-
163
- await expect(filterChangedListenerMock).toHaveBeenCalledWith(
164
- expect.objectContaining({
165
- detail: {
166
- aDateColumnFrom: customDateRange.dateFrom,
167
- aDateColumnTo: customDateRange.dateTo,
168
- },
169
- }),
170
- );
171
-
172
- await expect(optionChangedListenerMock).toHaveBeenCalledWith(
173
- expect.objectContaining({
174
- detail: customDateRange.label,
175
- }),
176
- );
163
+ await userEvent.click(canvas.getByText('CustomDateRange'));
164
+
165
+ await waitFor(async () => {
166
+ await expect(dateToPicker(canvas)).toHaveValue(customDateRange.dateTo);
167
+
168
+ await expect(filterChangedListenerMock).toHaveBeenCalledWith(
169
+ expect.objectContaining({
170
+ detail: {
171
+ aDateColumnFrom: customDateRange.dateFrom,
172
+ aDateColumnTo: customDateRange.dateTo,
173
+ },
174
+ }),
175
+ );
176
+
177
+ await expect(optionChangedListenerMock).toHaveBeenCalledWith(
178
+ expect.objectContaining({
179
+ detail: customDateRange.label,
180
+ }),
181
+ );
182
+ });
177
183
  });
178
184
  },
179
185
  };
@@ -73,7 +73,6 @@ export class DateRangeFilterComponent extends PreactLitAdapter {
73
73
  * - If it is a string, then it must be a valid label from the `dateRangeOptions`.
74
74
  * - If it is an object, then it accepts dates in the format `YYYY-MM-DD` for the keys `dateFrom` and `dateTo`.
75
75
  * Keys that are not set will default to the `earliestDate` or the current date respectively.
76
- * - If the attribute is not set, the component will default to the range `earliestDate` until today.
77
76
  *
78
77
  * The `detail` of the `gs-date-range-option-changed` event can be used for this attribute,
79
78
  * if you want to control this component in your JS application.
@@ -99,11 +98,17 @@ export class DateRangeFilterComponent extends PreactLitAdapter {
99
98
  /**
100
99
  * The width of the component.
101
100
  *
102
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
101
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
103
102
  */
104
103
  @property({ type: String })
105
104
  width: string = '100%';
106
105
 
106
+ /**
107
+ * The placeholder to display on the select dropdown.
108
+ */
109
+ @property({ type: String })
110
+ placeholder: string | undefined = undefined;
111
+
107
112
  /**
108
113
  * The name of the metadata field in LAPIS that contains the date information.
109
114
  */
@@ -118,6 +123,7 @@ export class DateRangeFilterComponent extends PreactLitAdapter {
118
123
  value={this.value}
119
124
  lapisDateField={this.lapisDateField}
120
125
  width={this.width}
126
+ placeholder={this.placeholder}
121
127
  />
122
128
  );
123
129
  }
@@ -67,7 +67,7 @@ export class LineageFilterComponent extends PreactLitAdapter {
67
67
  /**
68
68
  * The width of the component.
69
69
  *
70
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
70
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
71
71
  */
72
72
  @property({ type: String })
73
73
  width: string = '100%';
@@ -65,7 +65,7 @@ export class LocationFilterComponent extends PreactLitAdapter {
65
65
  /**
66
66
  * The width of the component.
67
67
  *
68
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
68
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
69
69
  */
70
70
  @property({ type: String })
71
71
  width: string = '100%';
@@ -75,7 +75,7 @@ export class MutationFilterComponent extends PreactLitAdapter {
75
75
  /**
76
76
  * The width of the component.
77
77
  *
78
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
78
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
79
79
  */
80
80
  @property({ type: String })
81
81
  width: string = '100%';
@@ -61,7 +61,7 @@ export class TextFilterComponent extends PreactLitAdapter {
61
61
  /**
62
62
  * The width of the component.
63
63
  *
64
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
64
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
65
65
  */
66
66
  @property({ type: String })
67
67
  width: string = '100%';
@@ -64,7 +64,7 @@ export class AggregateComponent extends PreactLitAdapterWithGridJsStyles {
64
64
  /**
65
65
  * The width of the component.
66
66
  *
67
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
67
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
68
68
  */
69
69
  @property({ type: String })
70
70
  width: string = '100%';
@@ -72,7 +72,7 @@ export class AggregateComponent extends PreactLitAdapterWithGridJsStyles {
72
72
  /**
73
73
  * The height of the component.
74
74
  *
75
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
75
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
76
76
  */
77
77
  @property({ type: String })
78
78
  height: string | undefined = undefined;
@@ -50,9 +50,26 @@ const meta: Meta<Required<MutationComparisonProps>> = {
50
50
 
51
51
  export default meta;
52
52
 
53
+ const mutationAnnotations = [
54
+ {
55
+ name: 'I am a mutation annotation!',
56
+ description: 'This describes what is special about these mutations.',
57
+ symbol: '#',
58
+ nucleotideMutations: ['G199-', 'C3037T'],
59
+ aminoAcidMutations: ['N:G204R'],
60
+ },
61
+ {
62
+ name: 'I am another mutation annotation!',
63
+ description: 'This describes what is special about these other mutations.',
64
+ symbol: '+',
65
+ nucleotideMutations: ['C3037T', 'A23403G'],
66
+ aminoAcidMutations: ['ORF1a:I2230T'],
67
+ },
68
+ ];
69
+
53
70
  const Template: StoryObj<Required<MutationComparisonProps>> = {
54
71
  render: (args) => html`
55
- <gs-app lapis="${LAPIS_URL}">
72
+ <gs-app lapis="${LAPIS_URL}" .mutationAnnotations=${mutationAnnotations}>
56
73
  <gs-mutation-comparison
57
74
  .lapisFilters=${args.lapisFilters}
58
75
  .sequenceType=${args.sequenceType}
@@ -1,9 +1,12 @@
1
+ import { consume } from '@lit/context';
1
2
  import { customElement, property } from 'lit/decorators.js';
2
3
  import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
4
 
5
+ import { MutationAnnotationsContextProvider } from '../../preact/MutationAnnotationsContext';
4
6
  import { MutationComparison, type MutationComparisonProps } from '../../preact/mutationComparison/mutation-comparison';
5
7
  import { type Equals, type Expect } from '../../utils/typeAssertions';
6
8
  import { PreactLitAdapterWithGridJsStyles } from '../PreactLitAdapterWithGridJsStyles';
9
+ import { type MutationAnnotations, mutationAnnotationsContext } from '../mutation-annotations-context';
7
10
 
8
11
  /**
9
12
  * ## Context
@@ -13,6 +16,9 @@ import { PreactLitAdapterWithGridJsStyles } from '../PreactLitAdapterWithGridJsS
13
16
  *
14
17
  * It only shows substitutions and deletions, it does not show insertions.
15
18
  *
19
+ * This component supports mutations annotations.
20
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-mutation-annotations--docs for more information.
21
+ *
16
22
  * ## Views
17
23
  *
18
24
  * ### Table View
@@ -68,7 +74,7 @@ export class MutationComparisonComponent extends PreactLitAdapterWithGridJsStyle
68
74
  /**
69
75
  * The width of the component.
70
76
  *
71
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
77
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
72
78
  */
73
79
  @property({ type: String })
74
80
  width: string = '100%';
@@ -76,7 +82,7 @@ export class MutationComparisonComponent extends PreactLitAdapterWithGridJsStyle
76
82
  /**
77
83
  * The height of the component.
78
84
  *
79
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
85
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
80
86
  */
81
87
  @property({ type: String })
82
88
  height: string | undefined = undefined;
@@ -88,16 +94,24 @@ export class MutationComparisonComponent extends PreactLitAdapterWithGridJsStyle
88
94
  @property({ type: Object })
89
95
  pageSize: boolean | number = false;
90
96
 
97
+ /**
98
+ * @internal
99
+ */
100
+ @consume({ context: mutationAnnotationsContext, subscribe: true })
101
+ mutationAnnotations: MutationAnnotations = [];
102
+
91
103
  override render() {
92
104
  return (
93
- <MutationComparison
94
- lapisFilters={this.lapisFilters}
95
- sequenceType={this.sequenceType}
96
- views={this.views}
97
- width={this.width}
98
- height={this.height}
99
- pageSize={this.pageSize}
100
- />
105
+ <MutationAnnotationsContextProvider value={this.mutationAnnotations}>
106
+ <MutationComparison
107
+ lapisFilters={this.lapisFilters}
108
+ sequenceType={this.sequenceType}
109
+ views={this.views}
110
+ width={this.width}
111
+ height={this.height}
112
+ pageSize={this.pageSize}
113
+ />
114
+ </MutationAnnotationsContextProvider>
101
115
  );
102
116
  }
103
117
  }
@@ -67,7 +67,8 @@ export default meta;
67
67
  const mutationAnnotations = [
68
68
  {
69
69
  name: 'I am a mutation annotation!',
70
- description: 'This describes what is special about these mutations.',
70
+ description:
71
+ 'This describes what is special about these mutations. <a class="link" href="/">And it has a link.</a>',
71
72
  symbol: '#',
72
73
  nucleotideMutations: ['C44T', 'C774T', 'G24872T', 'T23011-'],
73
74
  aminoAcidMutations: ['S:501Y', 'S:S31-', 'ORF1a:S4286C'],
@@ -15,6 +15,9 @@ import { type MutationAnnotations, mutationAnnotationsContext } from '../mutatio
15
15
  * The shown date range is determined by the date field in the LAPIS filter.
16
16
  * If the date field is not set, the date range is determined by all available dates in the dataset.
17
17
  *
18
+ * This component supports mutations annotations.
19
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-mutation-annotations--docs for more information.
20
+ *
18
21
  * ## Views
19
22
  *
20
23
  * ### Grid View
@@ -65,7 +68,7 @@ export class MutationsOverTimeComponent extends PreactLitAdapterWithGridJsStyles
65
68
  /**
66
69
  * The width of the component.
67
70
  *
68
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
71
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
69
72
  */
70
73
  @property({ type: String })
71
74
  width: string = '100%';
@@ -73,7 +76,7 @@ export class MutationsOverTimeComponent extends PreactLitAdapterWithGridJsStyles
73
76
  /**
74
77
  * The height of the component.
75
78
  *
76
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
79
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
77
80
  */
78
81
  @property({ type: String })
79
82
  height: string | undefined = undefined;
@@ -71,7 +71,8 @@ export default meta;
71
71
  const mutationAnnotations = [
72
72
  {
73
73
  name: 'I am a mutation annotation!',
74
- description: 'This describes what is special about these mutations.',
74
+ description:
75
+ 'This describes what is special about these mutations. <a class="link" href="/">And it has a link.</a>',
75
76
  symbol: '#',
76
77
  nucleotideMutations: ['C241T', 'C3037T'],
77
78
  aminoAcidMutations: ['S:501Y', 'S:S31-', 'ORF1a:S4286C'],
@@ -13,6 +13,9 @@ import { type MutationAnnotations, mutationAnnotationsContext } from '../mutatio
13
13
  *
14
14
  * This component displays mutations (substitutions, deletions and insertions) for a dataset selected by a LAPIS filter.
15
15
  *
16
+ * This component supports mutations annotations.
17
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-mutation-annotations--docs for more information.
18
+ *
16
19
  * ## Views
17
20
  *
18
21
  * ### Table View
@@ -103,7 +106,7 @@ export class MutationsComponent extends PreactLitAdapterWithGridJsStyles {
103
106
  /**
104
107
  * The width of the component.
105
108
  *
106
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
109
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
107
110
  */
108
111
  @property({ type: String })
109
112
  width: string = '100%';
@@ -111,7 +114,7 @@ export class MutationsComponent extends PreactLitAdapterWithGridJsStyles {
111
114
  /**
112
115
  * The height of the component.
113
116
  *
114
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
117
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
115
118
  */
116
119
  @property({ type: String })
117
120
  height: string | undefined = undefined;
@@ -61,7 +61,7 @@ export class NumberSequencesOverTimeComponent extends PreactLitAdapterWithGridJs
61
61
  /**
62
62
  * The width of the component.
63
63
  *
64
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
64
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
65
65
  */
66
66
  @property({ type: String })
67
67
  width: string = '100%';
@@ -69,7 +69,7 @@ export class NumberSequencesOverTimeComponent extends PreactLitAdapterWithGridJs
69
69
  /**
70
70
  * The height of the component.
71
71
  *
72
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
72
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
73
73
  */
74
74
  @property({ type: String })
75
75
  height: string | undefined = undefined;
@@ -112,7 +112,7 @@ export class PrevalenceOverTimeComponent extends PreactLitAdapterWithGridJsStyle
112
112
  /**
113
113
  * The width of the component.
114
114
  *
115
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
115
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
116
116
  */
117
117
  @property({ type: String })
118
118
  width: string = '100%';
@@ -120,7 +120,7 @@ export class PrevalenceOverTimeComponent extends PreactLitAdapterWithGridJsStyle
120
120
  /**
121
121
  * The height of the component.
122
122
  *
123
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
123
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
124
124
  */
125
125
  @property({ type: String })
126
126
  height: string | undefined = undefined;
@@ -76,7 +76,7 @@ export class RelativeGrowthAdvantageComponent extends PreactLitAdapter {
76
76
  /**
77
77
  * The width of the component.
78
78
  *
79
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
79
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
80
80
  */
81
81
  @property({ type: String })
82
82
  width: string = '100%';
@@ -84,7 +84,7 @@ export class RelativeGrowthAdvantageComponent extends PreactLitAdapter {
84
84
  /**
85
85
  * The height of the component.
86
86
  *
87
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
87
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
88
88
  */
89
89
  @property({ type: String })
90
90
  height: string | undefined = undefined;
@@ -140,7 +140,7 @@ export class SequencesByLocationComponent extends PreactLitAdapterWithGridJsStyl
140
140
  * Not that the map in the map view is not responsive
141
141
  * (i.e. does not adjust its size when the component is resized).
142
142
  *
143
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
143
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
144
144
  */
145
145
  @property({ type: String })
146
146
  width: string = '100%';
@@ -148,7 +148,7 @@ export class SequencesByLocationComponent extends PreactLitAdapterWithGridJsStyl
148
148
  /**
149
149
  * The height of the component.
150
150
  *
151
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
151
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
152
152
  */
153
153
  @property({ type: String })
154
154
  height: string | undefined = undefined;
@@ -40,7 +40,7 @@ export class StatisticsComponent extends PreactLitAdapterWithGridJsStyles {
40
40
  /**
41
41
  * The width of the component.
42
42
  *
43
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
43
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
44
44
  */
45
45
  @property({ type: String })
46
46
  width: string = '100%';
@@ -48,7 +48,7 @@ export class StatisticsComponent extends PreactLitAdapterWithGridJsStyles {
48
48
  /**
49
49
  * The height of the component.
50
50
  *
51
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
51
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
52
52
  */
53
53
  @property({ type: String })
54
54
  height: string | undefined = undefined;
@@ -55,7 +55,7 @@ export class WastewaterMutationsOverTimeComponent extends PreactLitAdapterWithGr
55
55
  /**
56
56
  * The width of the component.
57
57
  *
58
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
58
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
59
59
  */
60
60
  @property({ type: String })
61
61
  width: string = '100%';
@@ -63,7 +63,7 @@ export class WastewaterMutationsOverTimeComponent extends PreactLitAdapterWithGr
63
63
  /**
64
64
  * The height of the component.
65
65
  *
66
- * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/components-size-of-components--docs for more information.
66
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
67
67
  */
68
68
  @property({ type: String })
69
69
  height: string | undefined = undefined;