@genspectrum/dashboard-components 0.17.1 → 0.18.1
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.
- package/custom-elements.json +3 -3
- package/dist/assets/{mutationOverTimeWorker-CPfQDLe6.js.map → mutationOverTimeWorker-ChQTFL68.js.map} +1 -1
- package/dist/components.d.ts +46 -46
- package/dist/components.js +304 -3960
- package/dist/components.js.map +1 -1
- package/dist/style.css +2 -3687
- package/dist/util.d.ts +46 -46
- package/package.json +5 -5
- package/src/preact/aggregatedData/aggregate.tsx +3 -3
- package/src/preact/components/clearable-select.tsx +1 -1
- package/src/preact/components/color-scale-selector-dropdown.tsx +1 -1
- package/src/preact/components/color-scale-selector.tsx +1 -1
- package/src/preact/components/confidence-interval-selector.tsx +1 -1
- package/src/preact/components/downshift-combobox.tsx +3 -3
- package/src/preact/components/fullscreen.tsx +6 -2
- package/src/preact/components/info.tsx +1 -1
- package/src/preact/components/mutation-type-selector.tsx +1 -1
- package/src/preact/components/percent-intput.tsx +3 -3
- package/src/preact/components/proportion-selector-dropdown.tsx +1 -1
- package/src/preact/components/scaling-selector.tsx +1 -1
- package/src/preact/components/select.tsx +1 -1
- package/src/preact/components/tabs.tsx +1 -1
- package/src/preact/dateRangeFilter/date-picker.tsx +1 -1
- package/src/preact/dateRangeFilter/date-range-filter.tsx +4 -4
- package/src/preact/mutationComparison/mutation-comparison.tsx +1 -1
- package/src/preact/mutationFilter/mutation-filter.tsx +1 -1
- package/src/preact/mutations/mutations.tsx +2 -2
- package/src/preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay.ts +3773 -2290
- package/src/preact/mutationsOverTime/__mockData__/byWeek.ts +3012 -948
- package/src/preact/mutationsOverTime/__mockData__/defaultMockData.ts +8799 -4406
- package/src/preact/mutationsOverTime/__mockData__/showsMessageWhenTooManyMutations.ts +1836 -0
- package/src/preact/mutationsOverTime/getFilteredMutationsOverTime.spec.ts +3 -1
- package/src/preact/mutationsOverTime/mutations-over-time-grid.tsx +56 -21
- package/src/preact/mutationsOverTime/mutations-over-time.tsx +3 -2
- package/src/preact/numberSequencesOverTime/number-sequences-over-time.tsx +1 -1
- package/src/preact/prevalenceOverTime/prevalence-over-time.tsx +1 -1
- package/src/preact/sequencesByLocation/sequences-by-location-map.tsx +1 -1
- package/src/preact/sequencesByLocation/sequences-by-location.tsx +3 -7
- package/src/preact/wastewater/mutationsOverTime/computeWastewaterMutationsOverTimeDataPerLocation.spec.ts +5 -5
- package/src/preact/wastewater/mutationsOverTime/computeWastewaterMutationsOverTimeDataPerLocation.ts +1 -3
- package/src/query/queryMutationsOverTime.spec.ts +28 -26
- package/src/query/queryMutationsOverTime.ts +20 -8
- package/src/styles/tailwind.css +14 -3
- package/src/web-components/input/gs-date-range-filter.stories.ts +2 -2
- package/src/web-components/input/gs-lineage-filter.stories.ts +1 -1
- package/src/web-components/input/gs-location-filter.stories.ts +1 -1
- package/src/web-components/input/gs-mutation-filter.stories.ts +1 -1
- package/src/web-components/input/gs-text-filter.stories.ts +1 -1
- package/standalone-bundle/assets/{mutationOverTimeWorker-CERZSdcA.js.map → mutationOverTimeWorker-jChgWnwp.js.map} +1 -1
- package/standalone-bundle/dashboard-components.js +5455 -5431
- package/standalone-bundle/dashboard-components.js.map +1 -1
- package/standalone-bundle/style.css +1 -1
package/dist/util.d.ts
CHANGED
|
@@ -890,7 +890,7 @@ declare global {
|
|
|
890
890
|
|
|
891
891
|
declare global {
|
|
892
892
|
interface HTMLElementTagNameMap {
|
|
893
|
-
'gs-
|
|
893
|
+
'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
|
|
894
894
|
}
|
|
895
895
|
}
|
|
896
896
|
|
|
@@ -898,7 +898,7 @@ declare global {
|
|
|
898
898
|
declare global {
|
|
899
899
|
namespace JSX {
|
|
900
900
|
interface IntrinsicElements {
|
|
901
|
-
'gs-
|
|
901
|
+
'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
902
902
|
}
|
|
903
903
|
}
|
|
904
904
|
}
|
|
@@ -906,7 +906,11 @@ declare global {
|
|
|
906
906
|
|
|
907
907
|
declare global {
|
|
908
908
|
interface HTMLElementTagNameMap {
|
|
909
|
-
'gs-
|
|
909
|
+
'gs-date-range-filter': DateRangeFilterComponent;
|
|
910
|
+
}
|
|
911
|
+
interface HTMLElementEventMap {
|
|
912
|
+
'gs-date-range-filter-changed': CustomEvent<Record<string, string>>;
|
|
913
|
+
'gs-date-range-option-changed': DateRangeOptionChangedEvent;
|
|
910
914
|
}
|
|
911
915
|
}
|
|
912
916
|
|
|
@@ -914,7 +918,7 @@ declare global {
|
|
|
914
918
|
declare global {
|
|
915
919
|
namespace JSX {
|
|
916
920
|
interface IntrinsicElements {
|
|
917
|
-
'gs-
|
|
921
|
+
'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
918
922
|
}
|
|
919
923
|
}
|
|
920
924
|
}
|
|
@@ -922,7 +926,10 @@ declare global {
|
|
|
922
926
|
|
|
923
927
|
declare global {
|
|
924
928
|
interface HTMLElementTagNameMap {
|
|
925
|
-
'gs-
|
|
929
|
+
'gs-location-filter': LocationFilterComponent;
|
|
930
|
+
}
|
|
931
|
+
interface HTMLElementEventMap {
|
|
932
|
+
'gs-location-changed': LocationChangedEvent;
|
|
926
933
|
}
|
|
927
934
|
}
|
|
928
935
|
|
|
@@ -930,7 +937,7 @@ declare global {
|
|
|
930
937
|
declare global {
|
|
931
938
|
namespace JSX {
|
|
932
939
|
interface IntrinsicElements {
|
|
933
|
-
'gs-
|
|
940
|
+
'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
934
941
|
}
|
|
935
942
|
}
|
|
936
943
|
}
|
|
@@ -938,7 +945,10 @@ declare global {
|
|
|
938
945
|
|
|
939
946
|
declare global {
|
|
940
947
|
interface HTMLElementTagNameMap {
|
|
941
|
-
'gs-
|
|
948
|
+
'gs-text-filter': TextFilterComponent;
|
|
949
|
+
}
|
|
950
|
+
interface HTMLElementEventMap {
|
|
951
|
+
'gs-text-filter-changed': TextFilterChangedEvent;
|
|
942
952
|
}
|
|
943
953
|
}
|
|
944
954
|
|
|
@@ -946,7 +956,7 @@ declare global {
|
|
|
946
956
|
declare global {
|
|
947
957
|
namespace JSX {
|
|
948
958
|
interface IntrinsicElements {
|
|
949
|
-
'gs-
|
|
959
|
+
'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
950
960
|
}
|
|
951
961
|
}
|
|
952
962
|
}
|
|
@@ -954,7 +964,10 @@ declare global {
|
|
|
954
964
|
|
|
955
965
|
declare global {
|
|
956
966
|
interface HTMLElementTagNameMap {
|
|
957
|
-
'gs-
|
|
967
|
+
'gs-mutation-filter': MutationFilterComponent;
|
|
968
|
+
}
|
|
969
|
+
interface HTMLElementEventMap {
|
|
970
|
+
'gs-mutation-filter-changed': CustomEvent<MutationsFilter>;
|
|
958
971
|
}
|
|
959
972
|
}
|
|
960
973
|
|
|
@@ -962,7 +975,7 @@ declare global {
|
|
|
962
975
|
declare global {
|
|
963
976
|
namespace JSX {
|
|
964
977
|
interface IntrinsicElements {
|
|
965
|
-
'gs-
|
|
978
|
+
'gs-mutation-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
966
979
|
}
|
|
967
980
|
}
|
|
968
981
|
}
|
|
@@ -970,7 +983,10 @@ declare global {
|
|
|
970
983
|
|
|
971
984
|
declare global {
|
|
972
985
|
interface HTMLElementTagNameMap {
|
|
973
|
-
'gs-
|
|
986
|
+
'gs-lineage-filter': LineageFilterComponent;
|
|
987
|
+
}
|
|
988
|
+
interface HTMLElementEventMap {
|
|
989
|
+
'gs-lineage-filter-changed': LineageFilterChangedEvent;
|
|
974
990
|
}
|
|
975
991
|
}
|
|
976
992
|
|
|
@@ -978,7 +994,7 @@ declare global {
|
|
|
978
994
|
declare global {
|
|
979
995
|
namespace JSX {
|
|
980
996
|
interface IntrinsicElements {
|
|
981
|
-
'gs-
|
|
997
|
+
'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
982
998
|
}
|
|
983
999
|
}
|
|
984
1000
|
}
|
|
@@ -986,7 +1002,7 @@ declare global {
|
|
|
986
1002
|
|
|
987
1003
|
declare global {
|
|
988
1004
|
interface HTMLElementTagNameMap {
|
|
989
|
-
'gs-
|
|
1005
|
+
'gs-mutations-component': MutationsComponent;
|
|
990
1006
|
}
|
|
991
1007
|
}
|
|
992
1008
|
|
|
@@ -994,7 +1010,7 @@ declare global {
|
|
|
994
1010
|
declare global {
|
|
995
1011
|
namespace JSX {
|
|
996
1012
|
interface IntrinsicElements {
|
|
997
|
-
'gs-
|
|
1013
|
+
'gs-mutations-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
998
1014
|
}
|
|
999
1015
|
}
|
|
1000
1016
|
}
|
|
@@ -1002,7 +1018,7 @@ declare global {
|
|
|
1002
1018
|
|
|
1003
1019
|
declare global {
|
|
1004
1020
|
interface HTMLElementTagNameMap {
|
|
1005
|
-
'gs-
|
|
1021
|
+
'gs-mutation-comparison-component': MutationComparisonComponent;
|
|
1006
1022
|
}
|
|
1007
1023
|
}
|
|
1008
1024
|
|
|
@@ -1010,7 +1026,7 @@ declare global {
|
|
|
1010
1026
|
declare global {
|
|
1011
1027
|
namespace JSX {
|
|
1012
1028
|
interface IntrinsicElements {
|
|
1013
|
-
'gs-
|
|
1029
|
+
'gs-mutation-comparison-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1014
1030
|
}
|
|
1015
1031
|
}
|
|
1016
1032
|
}
|
|
@@ -1018,7 +1034,7 @@ declare global {
|
|
|
1018
1034
|
|
|
1019
1035
|
declare global {
|
|
1020
1036
|
interface HTMLElementTagNameMap {
|
|
1021
|
-
'gs-
|
|
1037
|
+
'gs-relative-growth-advantage': RelativeGrowthAdvantageComponent;
|
|
1022
1038
|
}
|
|
1023
1039
|
}
|
|
1024
1040
|
|
|
@@ -1026,7 +1042,7 @@ declare global {
|
|
|
1026
1042
|
declare global {
|
|
1027
1043
|
namespace JSX {
|
|
1028
1044
|
interface IntrinsicElements {
|
|
1029
|
-
'gs-
|
|
1045
|
+
'gs-relative-growth-advantage': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1030
1046
|
}
|
|
1031
1047
|
}
|
|
1032
1048
|
}
|
|
@@ -1034,7 +1050,7 @@ declare global {
|
|
|
1034
1050
|
|
|
1035
1051
|
declare global {
|
|
1036
1052
|
interface HTMLElementTagNameMap {
|
|
1037
|
-
'gs-
|
|
1053
|
+
'gs-prevalence-over-time': PrevalenceOverTimeComponent;
|
|
1038
1054
|
}
|
|
1039
1055
|
}
|
|
1040
1056
|
|
|
@@ -1042,7 +1058,7 @@ declare global {
|
|
|
1042
1058
|
declare global {
|
|
1043
1059
|
namespace JSX {
|
|
1044
1060
|
interface IntrinsicElements {
|
|
1045
|
-
'gs-
|
|
1061
|
+
'gs-prevalence-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1046
1062
|
}
|
|
1047
1063
|
}
|
|
1048
1064
|
}
|
|
@@ -1050,11 +1066,7 @@ declare global {
|
|
|
1050
1066
|
|
|
1051
1067
|
declare global {
|
|
1052
1068
|
interface HTMLElementTagNameMap {
|
|
1053
|
-
'gs-
|
|
1054
|
-
}
|
|
1055
|
-
interface HTMLElementEventMap {
|
|
1056
|
-
'gs-date-range-filter-changed': CustomEvent<Record<string, string>>;
|
|
1057
|
-
'gs-date-range-option-changed': DateRangeOptionChangedEvent;
|
|
1069
|
+
'gs-aggregate': AggregateComponent;
|
|
1058
1070
|
}
|
|
1059
1071
|
}
|
|
1060
1072
|
|
|
@@ -1062,7 +1074,7 @@ declare global {
|
|
|
1062
1074
|
declare global {
|
|
1063
1075
|
namespace JSX {
|
|
1064
1076
|
interface IntrinsicElements {
|
|
1065
|
-
'gs-
|
|
1077
|
+
'gs-aggregate': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1066
1078
|
}
|
|
1067
1079
|
}
|
|
1068
1080
|
}
|
|
@@ -1070,10 +1082,7 @@ declare global {
|
|
|
1070
1082
|
|
|
1071
1083
|
declare global {
|
|
1072
1084
|
interface HTMLElementTagNameMap {
|
|
1073
|
-
'gs-
|
|
1074
|
-
}
|
|
1075
|
-
interface HTMLElementEventMap {
|
|
1076
|
-
'gs-location-changed': LocationChangedEvent;
|
|
1085
|
+
'gs-number-sequences-over-time': NumberSequencesOverTimeComponent;
|
|
1077
1086
|
}
|
|
1078
1087
|
}
|
|
1079
1088
|
|
|
@@ -1081,7 +1090,7 @@ declare global {
|
|
|
1081
1090
|
declare global {
|
|
1082
1091
|
namespace JSX {
|
|
1083
1092
|
interface IntrinsicElements {
|
|
1084
|
-
'gs-
|
|
1093
|
+
'gs-number-sequences-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1085
1094
|
}
|
|
1086
1095
|
}
|
|
1087
1096
|
}
|
|
@@ -1089,10 +1098,7 @@ declare global {
|
|
|
1089
1098
|
|
|
1090
1099
|
declare global {
|
|
1091
1100
|
interface HTMLElementTagNameMap {
|
|
1092
|
-
'gs-
|
|
1093
|
-
}
|
|
1094
|
-
interface HTMLElementEventMap {
|
|
1095
|
-
'gs-text-filter-changed': TextFilterChangedEvent;
|
|
1101
|
+
'gs-mutations-over-time': MutationsOverTimeComponent;
|
|
1096
1102
|
}
|
|
1097
1103
|
}
|
|
1098
1104
|
|
|
@@ -1100,7 +1106,7 @@ declare global {
|
|
|
1100
1106
|
declare global {
|
|
1101
1107
|
namespace JSX {
|
|
1102
1108
|
interface IntrinsicElements {
|
|
1103
|
-
'gs-
|
|
1109
|
+
'gs-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1104
1110
|
}
|
|
1105
1111
|
}
|
|
1106
1112
|
}
|
|
@@ -1108,10 +1114,7 @@ declare global {
|
|
|
1108
1114
|
|
|
1109
1115
|
declare global {
|
|
1110
1116
|
interface HTMLElementTagNameMap {
|
|
1111
|
-
'gs-
|
|
1112
|
-
}
|
|
1113
|
-
interface HTMLElementEventMap {
|
|
1114
|
-
'gs-mutation-filter-changed': CustomEvent<MutationsFilter>;
|
|
1117
|
+
'gs-sequences-by-location': SequencesByLocationComponent;
|
|
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-
|
|
1125
|
+
'gs-sequences-by-location': 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-
|
|
1131
|
-
}
|
|
1132
|
-
interface HTMLElementEventMap {
|
|
1133
|
-
'gs-lineage-filter-changed': LineageFilterChangedEvent;
|
|
1133
|
+
'gs-statistics': StatisticsComponent;
|
|
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-
|
|
1141
|
+
'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1142
1142
|
}
|
|
1143
1143
|
}
|
|
1144
1144
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genspectrum/dashboard-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.1",
|
|
4
4
|
"description": "GenSpectrum web components for building dashboards",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0-only",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"@custom-elements-manifest/analyzer": "^0.10.2",
|
|
103
103
|
"@iconify-json/mdi": "^1.1.67",
|
|
104
104
|
"@iconify-json/mdi-light": "^1.1.10",
|
|
105
|
-
"@iconify/
|
|
105
|
+
"@iconify/tailwind4": "^1.0.6",
|
|
106
106
|
"@playwright/test": "^1.43.1",
|
|
107
107
|
"@storybook/addon-actions": "^8.0.9",
|
|
108
108
|
"@storybook/addon-essentials": "^8.0.9",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
"@storybook/types": "^8.0.9",
|
|
117
117
|
"@storybook/web-components": "^8.0.9",
|
|
118
118
|
"@storybook/web-components-vite": "^8.0.9",
|
|
119
|
-
"@tailwindcss/
|
|
119
|
+
"@tailwindcss/postcss": "^4.0.9",
|
|
120
120
|
"@testing-library/preact": "^3.2.4",
|
|
121
121
|
"@types/geojson": "^7946.0.15",
|
|
122
122
|
"@types/leaflet": "^1.9.15",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"@typescript-eslint/eslint-plugin": "^8.2.0",
|
|
127
127
|
"@typescript-eslint/parser": "^8.2.0",
|
|
128
128
|
"autoprefixer": "^10.4.19",
|
|
129
|
-
"daisyui": "^
|
|
129
|
+
"daisyui": "^5.0.0",
|
|
130
130
|
"depcheck": "^1.4.7",
|
|
131
131
|
"eslint": "^8.57.0",
|
|
132
132
|
"eslint-config-preact": "^1.3.0",
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
"react": "^18.3.1",
|
|
143
143
|
"storybook": "^8.0.9",
|
|
144
144
|
"storybook-addon-fetch-mock": "^2.0.0",
|
|
145
|
-
"tailwindcss": "^
|
|
145
|
+
"tailwindcss": "^4.0.9",
|
|
146
146
|
"typescript": "~5.7.2",
|
|
147
147
|
"vite": "^6.0.3",
|
|
148
148
|
"vite-plugin-dts": "^4.0.3",
|
|
@@ -119,11 +119,11 @@ type ToolbarProps = {
|
|
|
119
119
|
|
|
120
120
|
const Toolbar: FunctionComponent<ToolbarProps> = ({ data, originalComponentProps }) => {
|
|
121
121
|
return (
|
|
122
|
-
|
|
123
|
-
<CsvDownloadButton className='
|
|
122
|
+
<>
|
|
123
|
+
<CsvDownloadButton className='btn btn-xs' getData={() => data} filename='aggregate.csv' />
|
|
124
124
|
<AggregateInfo originalComponentProps={originalComponentProps} />
|
|
125
125
|
<Fullscreen />
|
|
126
|
-
|
|
126
|
+
</>
|
|
127
127
|
);
|
|
128
128
|
};
|
|
129
129
|
|
|
@@ -50,7 +50,7 @@ export function ClearableSelect({
|
|
|
50
50
|
return (
|
|
51
51
|
<div className={`relative inline min-w-24 ${className}`}>
|
|
52
52
|
<select
|
|
53
|
-
className={`w-full select
|
|
53
|
+
className={`w-full select pr-14 ${selectClassName}`}
|
|
54
54
|
value={selectedOption ?? undefinedValue}
|
|
55
55
|
onChange={handleChange}
|
|
56
56
|
>
|
|
@@ -10,7 +10,7 @@ export const ColorScaleSelectorDropdown: FunctionComponent<ColorScaleSelectorDro
|
|
|
10
10
|
setColorScale,
|
|
11
11
|
}) => {
|
|
12
12
|
return (
|
|
13
|
-
<div className='w-20'>
|
|
13
|
+
<div className='w-20 inline-flex'>
|
|
14
14
|
<Dropdown buttonTitle={`Color scale`} placement={'bottom-start'}>
|
|
15
15
|
<ColorScaleSelector colorScale={colorScale} setColorScale={setColorScale} />
|
|
16
16
|
</Dropdown>
|
|
@@ -54,7 +54,7 @@ export const ColorScaleSelector: FunctionComponent<ColorScaleSelectorProps> = ({
|
|
|
54
54
|
);
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
export const
|
|
57
|
+
export const getColorWithinScale = (value: number | undefined, colorScale: ColorScale) => {
|
|
58
58
|
if (value === undefined) {
|
|
59
59
|
return 'lightgrey';
|
|
60
60
|
}
|
|
@@ -39,7 +39,7 @@ export const ConfidenceIntervalSelector: FunctionComponent<ConfidenceIntervalSel
|
|
|
39
39
|
const value = select.value as ConfidenceIntervalMethod;
|
|
40
40
|
setConfidenceIntervalMethod(value);
|
|
41
41
|
}}
|
|
42
|
-
selectStyle={'select-xs
|
|
42
|
+
selectStyle={'select-xs'}
|
|
43
43
|
/>
|
|
44
44
|
);
|
|
45
45
|
};
|
|
@@ -91,7 +91,7 @@ export function DownshiftCombobox<Item>({
|
|
|
91
91
|
<div ref={divRef} className={'relative w-full'}>
|
|
92
92
|
<div className='w-full flex flex-col gap-1'>
|
|
93
93
|
<div
|
|
94
|
-
className={`flex gap-0.5 input
|
|
94
|
+
className={`flex gap-0.5 input min-w-32 w-full ${inputClassName}`}
|
|
95
95
|
onBlur={(event) => {
|
|
96
96
|
if (event.relatedTarget != buttonRef.current) {
|
|
97
97
|
closeMenu();
|
|
@@ -131,7 +131,7 @@ export function DownshiftCombobox<Item>({
|
|
|
131
131
|
{items.length > 0 ? (
|
|
132
132
|
items.map((item, index) => (
|
|
133
133
|
<li
|
|
134
|
-
className={`${highlightedIndex === index ? 'bg-blue-300' : ''} ${selectedItem !== null && itemToString(selectedItem) === itemToString(item) ? 'font-bold' : ''} py-2 px-3 shadow-
|
|
134
|
+
className={`${highlightedIndex === index ? 'bg-blue-300' : ''} ${selectedItem !== null && itemToString(selectedItem) === itemToString(item) ? 'font-bold' : ''} py-2 px-3 shadow-xs`}
|
|
135
135
|
key={itemToString(item)}
|
|
136
136
|
{...getItemProps({ item, index })}
|
|
137
137
|
>
|
|
@@ -139,7 +139,7 @@ export function DownshiftCombobox<Item>({
|
|
|
139
139
|
</li>
|
|
140
140
|
))
|
|
141
141
|
) : (
|
|
142
|
-
<li className='py-2 px-3 shadow-
|
|
142
|
+
<li className='py-2 px-3 shadow-xs'>No elements to select.</li>
|
|
143
143
|
)}
|
|
144
144
|
</ul>
|
|
145
145
|
</div>
|
|
@@ -18,9 +18,13 @@ export const Fullscreen = () => {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
}}
|
|
21
|
-
className={`
|
|
21
|
+
className={`btn btn-xs`}
|
|
22
22
|
title={isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'}
|
|
23
|
-
|
|
23
|
+
>
|
|
24
|
+
<div
|
|
25
|
+
className={`iconify text-2xl ${isFullscreen ? 'mdi--fullscreen-exit hover:scale-90' : 'mdi--fullscreen hover:scale-110'}`}
|
|
26
|
+
/>
|
|
27
|
+
</button>
|
|
24
28
|
);
|
|
25
29
|
};
|
|
26
30
|
|
|
@@ -17,7 +17,7 @@ export const MutationTypeSelector: FunctionComponent<MutationTypeSelectorProps>
|
|
|
17
17
|
setDisplayedMutationTypes,
|
|
18
18
|
}) => {
|
|
19
19
|
return (
|
|
20
|
-
<div className='w-[6rem]'>
|
|
20
|
+
<div className='w-[6rem] inline-flex'>
|
|
21
21
|
<CheckboxSelector
|
|
22
22
|
items={displayedMutationTypes}
|
|
23
23
|
label={getMutationTypesSelectorLabel(displayedMutationTypes)}
|
|
@@ -40,7 +40,8 @@ export const PercentInput: FunctionComponent<PercentInputProps> = ({
|
|
|
40
40
|
|
|
41
41
|
const isError = indicateError || !percentageInRange(internalPercentage);
|
|
42
42
|
return (
|
|
43
|
-
<label className={`input
|
|
43
|
+
<label className={`input flex items-center w-32 ${isError ? 'input-error' : ''}`}>
|
|
44
|
+
<span className='label'>%</span>
|
|
44
45
|
<input
|
|
45
46
|
type='number'
|
|
46
47
|
step={0.1}
|
|
@@ -49,9 +50,8 @@ export const PercentInput: FunctionComponent<PercentInputProps> = ({
|
|
|
49
50
|
value={internalPercentage}
|
|
50
51
|
onInput={handleInputChange}
|
|
51
52
|
lang='en'
|
|
52
|
-
className={`grow w-
|
|
53
|
+
className={`grow w-12`}
|
|
53
54
|
/>
|
|
54
|
-
%
|
|
55
55
|
</label>
|
|
56
56
|
);
|
|
57
57
|
};
|
|
@@ -16,7 +16,7 @@ export const ProportionSelectorDropdown: FunctionComponent<ProportionSelectorDro
|
|
|
16
16
|
const width = 'w-[calc(1.5 * var(--tw-space-x-reverse) + 1.5 * var(--tw-space-x))]';
|
|
17
17
|
|
|
18
18
|
return (
|
|
19
|
-
<div className={width}>
|
|
19
|
+
<div className={`${width} inline-flex`}>
|
|
20
20
|
<Dropdown buttonTitle={`${labelPrefix} ${percentLabel}`} placement={'bottom-start'}>
|
|
21
21
|
<ProportionSelector
|
|
22
22
|
proportionInterval={proportionInterval}
|
|
@@ -36,7 +36,7 @@ export const ScalingSelector: FunctionComponent<ScalingSelectorProps> = ({
|
|
|
36
36
|
const value = select.value as ScaleType;
|
|
37
37
|
setYAxisScaleType(value);
|
|
38
38
|
}}
|
|
39
|
-
selectStyle={`${className} select-xs
|
|
39
|
+
selectStyle={`${className ?? ''} select-xs`}
|
|
40
40
|
/>
|
|
41
41
|
);
|
|
42
42
|
};
|
|
@@ -10,7 +10,7 @@ export interface SelectProps {
|
|
|
10
10
|
|
|
11
11
|
export const Select: FunctionComponent<SelectProps> = ({ items, selected, onChange, selectStyle }) => {
|
|
12
12
|
return (
|
|
13
|
-
<select class={`select
|
|
13
|
+
<select class={`select ${selectStyle} w-fit`} value={selected} onChange={onChange}>
|
|
14
14
|
{items.map((item) => (
|
|
15
15
|
<option key={item.value} value={item.value} disabled={item.disabled}>
|
|
16
16
|
{item.label}
|
|
@@ -45,7 +45,7 @@ const Tabs: FunctionComponent<ComponentTabsProps> = ({ tabs, toolbar }) => {
|
|
|
45
45
|
{tabElements}
|
|
46
46
|
{toolbar && <div className='py-2 flex flex-wrap gap-y-1'>{toolbarElement}</div>}
|
|
47
47
|
</div>
|
|
48
|
-
<div className={`p-2
|
|
48
|
+
<div className={`p-2 grow overflow-scroll border-2 border-gray-100 rounded-b-md rounded-tr-md`}>
|
|
49
49
|
{tabs.map((tab) => (
|
|
50
50
|
<div className='h-full' key={tab.title} hidden={activeTab !== tab.title}>
|
|
51
51
|
{tab.content}
|
|
@@ -193,7 +193,7 @@ export const DateRangeFilterInner = ({
|
|
|
193
193
|
return (
|
|
194
194
|
<div className={'@container'} ref={divRef}>
|
|
195
195
|
<div className='flex min-w-[7.5rem] flex-col @md:flex-row'>
|
|
196
|
-
<div className='
|
|
196
|
+
<div className='grow'>
|
|
197
197
|
<ClearableSelect
|
|
198
198
|
items={options.map((item) => item.label)}
|
|
199
199
|
placeholderText={placeholder}
|
|
@@ -205,9 +205,9 @@ export const DateRangeFilterInner = ({
|
|
|
205
205
|
selectClassName={'rounded-t-md rounded-b-none @md:rounded-l-md @md:rounded-r-none'}
|
|
206
206
|
/>
|
|
207
207
|
</div>
|
|
208
|
-
<div className={'flex
|
|
208
|
+
<div className={'flex grow flex-col @4xs:flex-row'}>
|
|
209
209
|
<DatePicker
|
|
210
|
-
className={'
|
|
210
|
+
className={'grow min-w-[7.5rem] @4xs:rounded-bl-md @md:rounded-l-none rounded-none'}
|
|
211
211
|
value={state?.dateFrom}
|
|
212
212
|
onChange={onChangeDateFrom}
|
|
213
213
|
maxDate={state?.dateTo}
|
|
@@ -215,7 +215,7 @@ export const DateRangeFilterInner = ({
|
|
|
215
215
|
/>
|
|
216
216
|
<DatePicker
|
|
217
217
|
className={
|
|
218
|
-
'
|
|
218
|
+
'grow min-w-[7.5rem] rounded-b-md rounded-t-none @4xs:rounded-tr-none @4xs:rounded-l-none @md:rounded-r-md '
|
|
219
219
|
}
|
|
220
220
|
value={state?.dateTo}
|
|
221
221
|
onChange={onChangeDateTo}
|
|
@@ -178,7 +178,7 @@ const Toolbar: FunctionComponent<ToolbarProps> = ({
|
|
|
178
178
|
setDisplayedMutationTypes={setDisplayedMutationTypes}
|
|
179
179
|
/>
|
|
180
180
|
<CsvDownloadButton
|
|
181
|
-
className='
|
|
181
|
+
className='btn btn-xs'
|
|
182
182
|
getData={() => getMutationComparisonTableData({ content: filteredData }, proportionInterval)}
|
|
183
183
|
filename='mutation_comparison.csv'
|
|
184
184
|
/>
|
|
@@ -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>
|
|
@@ -200,7 +200,7 @@ const Toolbar: FunctionComponent<ToolbarProps> = ({
|
|
|
200
200
|
setMaxProportion={(max) => setProportionInterval((prev) => ({ ...prev, max }))}
|
|
201
201
|
/>
|
|
202
202
|
<CsvDownloadButton
|
|
203
|
-
className='
|
|
203
|
+
className='btn btn-xs'
|
|
204
204
|
getData={() =>
|
|
205
205
|
getMutationsTableData(
|
|
206
206
|
filteredData.tableData,
|
|
@@ -215,7 +215,7 @@ const Toolbar: FunctionComponent<ToolbarProps> = ({
|
|
|
215
215
|
)}
|
|
216
216
|
{activeTab === 'Insertions' && (
|
|
217
217
|
<CsvDownloadButton
|
|
218
|
-
className='
|
|
218
|
+
className='btn btn-xs'
|
|
219
219
|
getData={() =>
|
|
220
220
|
getInsertionsTableData(filteredData.insertions).map((row) => {
|
|
221
221
|
return {
|