@genspectrum/dashboard-components 0.16.4 → 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.
- package/custom-elements.json +86 -61
- package/dist/{LineageFilterChangedEvent-COWV-Y0k.js → LineageFilterChangedEvent-DkvWdq_G.js} +2 -2
- package/dist/LineageFilterChangedEvent-DkvWdq_G.js.map +1 -0
- package/dist/components.d.ts +46 -34
- package/dist/components.js +304 -146
- package/dist/components.js.map +1 -1
- package/dist/style.css +76 -9
- package/dist/util.d.ts +11 -13
- package/dist/util.js +1 -1
- package/package.json +1 -1
- package/src/preact/components/clearable-select.stories.tsx +75 -0
- package/src/preact/components/clearable-select.tsx +76 -0
- package/src/preact/components/downshift-combobox.tsx +9 -7
- package/src/preact/dateRangeFilter/computeInitialValues.spec.ts +31 -33
- package/src/preact/dateRangeFilter/computeInitialValues.ts +2 -15
- package/src/preact/dateRangeFilter/date-picker.tsx +66 -0
- package/src/preact/dateRangeFilter/date-range-filter.stories.tsx +69 -31
- package/src/preact/dateRangeFilter/date-range-filter.tsx +136 -139
- package/src/preact/dateRangeFilter/dateRangeOption.ts +11 -11
- package/src/preact/shared/WithClassName/WithClassName.ts +1 -0
- package/src/preact/shared/icons/DeleteIcon.tsx +3 -0
- package/src/preact/shared/stories/expectOptionSelected.tsx +7 -0
- package/src/utilEntrypoint.ts +1 -1
- package/src/web-components/MutationAnnotations.mdx +33 -0
- package/src/web-components/ResizeContainer.mdx +1 -1
- package/src/web-components/errorHandling.mdx +1 -1
- package/src/web-components/gs-app.ts +2 -2
- package/src/web-components/input/gs-date-range-filter.stories.ts +38 -32
- package/src/web-components/input/gs-date-range-filter.tsx +8 -2
- package/src/web-components/input/gs-lineage-filter.tsx +1 -1
- package/src/web-components/input/gs-location-filter.tsx +1 -1
- package/src/web-components/input/gs-mutation-filter.tsx +1 -1
- package/src/web-components/input/gs-text-filter.tsx +1 -1
- package/src/web-components/visualization/gs-aggregate.tsx +2 -2
- package/src/web-components/visualization/gs-mutation-comparison.tsx +5 -2
- package/src/web-components/visualization/gs-mutations-over-time.tsx +5 -2
- package/src/web-components/visualization/gs-mutations.tsx +5 -2
- package/src/web-components/visualization/gs-number-sequences-over-time.tsx +2 -2
- package/src/web-components/visualization/gs-prevalence-over-time.tsx +2 -2
- package/src/web-components/visualization/gs-relative-growth-advantage.tsx +2 -2
- package/src/web-components/visualization/gs-sequences-by-location.tsx +2 -2
- package/src/web-components/visualization/gs-statistics.tsx +2 -2
- package/src/web-components/wastewaterVisualization/gs-wastewater-mutations-over-time.tsx +2 -2
- package/standalone-bundle/dashboard-components.js +6624 -6538
- package/standalone-bundle/dashboard-components.js.map +1 -1
- package/standalone-bundle/style.css +1 -1
- package/dist/LineageFilterChangedEvent-COWV-Y0k.js.map +0 -1
package/dist/components.js
CHANGED
|
@@ -7,7 +7,7 @@ import DOMPurify from "dompurify";
|
|
|
7
7
|
import { useRef, Grid } from "gridjs";
|
|
8
8
|
import { Chart, registerables, Scale, BarController } from "chart.js";
|
|
9
9
|
import { VennDiagramController, ArcSlice, extractSets } from "chartjs-chart-venn";
|
|
10
|
-
import { v as views, s as sequenceTypeSchema, n as namedLapisFilterSchema, l as lapisFilterSchema, t as temporalGranularitySchema, b as dateRangeValueSchema, c as dateRangeOptionSchema, e as toYYYYMMDD, D as DateRangeOptionChangedEvent, f as lapisLocationFilterSchema, L as LocationChangedEvent, T as TextFilterChangedEvent, m as mutationsFilterSchema, a as LineageFilterChangedEvent } from "./LineageFilterChangedEvent-
|
|
10
|
+
import { v as views, s as sequenceTypeSchema, n as namedLapisFilterSchema, l as lapisFilterSchema, t as temporalGranularitySchema, b as dateRangeValueSchema, c as dateRangeOptionSchema, e as toYYYYMMDD, D as DateRangeOptionChangedEvent, f as lapisLocationFilterSchema, L as LocationChangedEvent, T as TextFilterChangedEvent, m as mutationsFilterSchema, a as LineageFilterChangedEvent } from "./LineageFilterChangedEvent-DkvWdq_G.js";
|
|
11
11
|
import { autoUpdate, computePosition, offset, shift, flip } from "@floating-ui/dom";
|
|
12
12
|
import { ReactiveElement } from "@lit/reactive-element";
|
|
13
13
|
import { BarWithErrorBarsController, BarWithErrorBar } from "chartjs-chart-error-bars";
|
|
@@ -3105,12 +3105,6 @@ html {
|
|
|
3105
3105
|
--tw-bg-opacity: 1;
|
|
3106
3106
|
background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
|
|
3107
3107
|
}
|
|
3108
|
-
|
|
3109
|
-
.table-zebra tr.hover:hover,
|
|
3110
|
-
.table-zebra tr.hover:nth-child(even):hover {
|
|
3111
|
-
--tw-bg-opacity: 1;
|
|
3112
|
-
background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));
|
|
3113
|
-
}
|
|
3114
3108
|
}
|
|
3115
3109
|
.btn {
|
|
3116
3110
|
display: inline-flex;
|
|
@@ -5130,6 +5124,9 @@ input.tab:checked + .tab-content,
|
|
|
5130
5124
|
.right-0 {
|
|
5131
5125
|
right: 0px;
|
|
5132
5126
|
}
|
|
5127
|
+
.right-10 {
|
|
5128
|
+
right: 2.5rem;
|
|
5129
|
+
}
|
|
5133
5130
|
.right-2 {
|
|
5134
5131
|
right: 0.5rem;
|
|
5135
5132
|
}
|
|
@@ -5279,9 +5276,6 @@ input.tab:checked + .tab-content,
|
|
|
5279
5276
|
.w-\\[6rem\\] {
|
|
5280
5277
|
width: 6rem;
|
|
5281
5278
|
}
|
|
5282
|
-
.w-\\[7\\.5rem\\] {
|
|
5283
|
-
width: 7.5rem;
|
|
5284
|
-
}
|
|
5285
5279
|
.w-full {
|
|
5286
5280
|
width: 100%;
|
|
5287
5281
|
}
|
|
@@ -5289,6 +5283,9 @@ input.tab:checked + .tab-content,
|
|
|
5289
5283
|
width: -moz-max-content;
|
|
5290
5284
|
width: max-content;
|
|
5291
5285
|
}
|
|
5286
|
+
.min-w-24 {
|
|
5287
|
+
min-width: 6rem;
|
|
5288
|
+
}
|
|
5292
5289
|
.min-w-32 {
|
|
5293
5290
|
min-width: 8rem;
|
|
5294
5291
|
}
|
|
@@ -5310,6 +5307,10 @@ input.tab:checked + .tab-content,
|
|
|
5310
5307
|
.grow {
|
|
5311
5308
|
flex-grow: 1;
|
|
5312
5309
|
}
|
|
5310
|
+
.-translate-y-1\\/2 {
|
|
5311
|
+
--tw-translate-y: -50%;
|
|
5312
|
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
|
5313
|
+
}
|
|
5313
5314
|
.translate-x-\\[-50\\%\\] {
|
|
5314
5315
|
--tw-translate-x: -50%;
|
|
5315
5316
|
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
|
@@ -5408,12 +5409,27 @@ input.tab:checked + .tab-content,
|
|
|
5408
5409
|
border-bottom-right-radius: 0.375rem;
|
|
5409
5410
|
border-bottom-left-radius: 0.375rem;
|
|
5410
5411
|
}
|
|
5412
|
+
.rounded-b-none {
|
|
5413
|
+
border-bottom-right-radius: 0px;
|
|
5414
|
+
border-bottom-left-radius: 0px;
|
|
5415
|
+
}
|
|
5416
|
+
.rounded-t-md {
|
|
5417
|
+
border-top-left-radius: 0.375rem;
|
|
5418
|
+
border-top-right-radius: 0.375rem;
|
|
5419
|
+
}
|
|
5420
|
+
.rounded-t-none {
|
|
5421
|
+
border-top-left-radius: 0px;
|
|
5422
|
+
border-top-right-radius: 0px;
|
|
5423
|
+
}
|
|
5411
5424
|
.rounded-tr-md {
|
|
5412
5425
|
border-top-right-radius: 0.375rem;
|
|
5413
5426
|
}
|
|
5414
5427
|
.border {
|
|
5415
5428
|
border-width: 1px;
|
|
5416
5429
|
}
|
|
5430
|
+
.border-0 {
|
|
5431
|
+
border-width: 0px;
|
|
5432
|
+
}
|
|
5417
5433
|
.border-2 {
|
|
5418
5434
|
border-width: 2px;
|
|
5419
5435
|
}
|
|
@@ -5455,6 +5471,9 @@ input.tab:checked + .tab-content,
|
|
|
5455
5471
|
--tw-bg-opacity: 1;
|
|
5456
5472
|
background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1));
|
|
5457
5473
|
}
|
|
5474
|
+
.bg-transparent {
|
|
5475
|
+
background-color: transparent;
|
|
5476
|
+
}
|
|
5458
5477
|
.bg-white {
|
|
5459
5478
|
--tw-bg-opacity: 1;
|
|
5460
5479
|
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
|
@@ -5502,6 +5521,9 @@ input.tab:checked + .tab-content,
|
|
|
5502
5521
|
.pl-2 {
|
|
5503
5522
|
padding-left: 0.5rem;
|
|
5504
5523
|
}
|
|
5524
|
+
.pr-14 {
|
|
5525
|
+
padding-right: 3.5rem;
|
|
5526
|
+
}
|
|
5505
5527
|
.text-center {
|
|
5506
5528
|
text-align: center;
|
|
5507
5529
|
}
|
|
@@ -5700,6 +5722,51 @@ input.tab:checked + .tab-content,
|
|
|
5700
5722
|
visibility: visible;
|
|
5701
5723
|
}
|
|
5702
5724
|
}
|
|
5725
|
+
@container (min-width: 14rem) {
|
|
5726
|
+
|
|
5727
|
+
.\\@4xs\\:flex-row {
|
|
5728
|
+
flex-direction: row;
|
|
5729
|
+
}
|
|
5730
|
+
|
|
5731
|
+
.\\@4xs\\:rounded-l-none {
|
|
5732
|
+
border-top-left-radius: 0px;
|
|
5733
|
+
border-bottom-left-radius: 0px;
|
|
5734
|
+
}
|
|
5735
|
+
|
|
5736
|
+
.\\@4xs\\:rounded-bl-md {
|
|
5737
|
+
border-bottom-left-radius: 0.375rem;
|
|
5738
|
+
}
|
|
5739
|
+
|
|
5740
|
+
.\\@4xs\\:rounded-tr-none {
|
|
5741
|
+
border-top-right-radius: 0px;
|
|
5742
|
+
}
|
|
5743
|
+
}
|
|
5744
|
+
@container (min-width: 28rem) {
|
|
5745
|
+
|
|
5746
|
+
.\\@md\\:flex-row {
|
|
5747
|
+
flex-direction: row;
|
|
5748
|
+
}
|
|
5749
|
+
|
|
5750
|
+
.\\@md\\:rounded-l-md {
|
|
5751
|
+
border-top-left-radius: 0.375rem;
|
|
5752
|
+
border-bottom-left-radius: 0.375rem;
|
|
5753
|
+
}
|
|
5754
|
+
|
|
5755
|
+
.\\@md\\:rounded-l-none {
|
|
5756
|
+
border-top-left-radius: 0px;
|
|
5757
|
+
border-bottom-left-radius: 0px;
|
|
5758
|
+
}
|
|
5759
|
+
|
|
5760
|
+
.\\@md\\:rounded-r-md {
|
|
5761
|
+
border-top-right-radius: 0.375rem;
|
|
5762
|
+
border-bottom-right-radius: 0.375rem;
|
|
5763
|
+
}
|
|
5764
|
+
|
|
5765
|
+
.\\@md\\:rounded-r-none {
|
|
5766
|
+
border-top-right-radius: 0px;
|
|
5767
|
+
border-bottom-right-radius: 0px;
|
|
5768
|
+
}
|
|
5769
|
+
}
|
|
5703
5770
|
@media (min-width: 640px) {
|
|
5704
5771
|
|
|
5705
5772
|
.sm\\:max-w-5xl {
|
|
@@ -11774,12 +11841,7 @@ const getDatesForSelectorValue = (initialSelectedDateRange, dateRangeOptions, ea
|
|
|
11774
11841
|
function computeInitialValues(value, earliestDate, dateRangeOptions) {
|
|
11775
11842
|
var _a;
|
|
11776
11843
|
if (value === void 0) {
|
|
11777
|
-
|
|
11778
|
-
return {
|
|
11779
|
-
initialSelectedDateRange: void 0,
|
|
11780
|
-
initialSelectedDateFrom: dateFrom2,
|
|
11781
|
-
initialSelectedDateTo: dateTo2
|
|
11782
|
-
};
|
|
11844
|
+
return void 0;
|
|
11783
11845
|
}
|
|
11784
11846
|
if (typeof value === "string") {
|
|
11785
11847
|
const selectableOptions = getSelectableOptions(dateRangeOptions);
|
|
@@ -11827,12 +11889,115 @@ function computeInitialValues(value, earliestDate, dateRangeOptions) {
|
|
|
11827
11889
|
function isUndefinedOrEmpty(value) {
|
|
11828
11890
|
return value === void 0 || value === "";
|
|
11829
11891
|
}
|
|
11892
|
+
function DatePicker({
|
|
11893
|
+
onChange,
|
|
11894
|
+
value,
|
|
11895
|
+
minDate,
|
|
11896
|
+
maxDate,
|
|
11897
|
+
placeholderText,
|
|
11898
|
+
className
|
|
11899
|
+
}) {
|
|
11900
|
+
const inputRef = A$1(null);
|
|
11901
|
+
const [datePicker, setDatePicker] = d(null);
|
|
11902
|
+
y(() => {
|
|
11903
|
+
if (!inputRef.current) {
|
|
11904
|
+
return;
|
|
11905
|
+
}
|
|
11906
|
+
const instance = flatpickr(inputRef.current, {
|
|
11907
|
+
allowInput: true,
|
|
11908
|
+
dateFormat: "Y-m-d",
|
|
11909
|
+
defaultDate: value,
|
|
11910
|
+
minDate,
|
|
11911
|
+
maxDate
|
|
11912
|
+
});
|
|
11913
|
+
setDatePicker(instance);
|
|
11914
|
+
return () => {
|
|
11915
|
+
instance.destroy();
|
|
11916
|
+
};
|
|
11917
|
+
}, [maxDate, minDate, onChange, value]);
|
|
11918
|
+
if (value === void 0 && inputRef.current) {
|
|
11919
|
+
inputRef.current.value = "";
|
|
11920
|
+
}
|
|
11921
|
+
const handleChange = () => {
|
|
11922
|
+
const newValue = datePicker == null ? void 0 : datePicker.selectedDates[0];
|
|
11923
|
+
if (onChange) {
|
|
11924
|
+
onChange(newValue);
|
|
11925
|
+
}
|
|
11926
|
+
};
|
|
11927
|
+
return /* @__PURE__ */ u$1(
|
|
11928
|
+
"input",
|
|
11929
|
+
{
|
|
11930
|
+
className: `input input-bordered w-full ${className}`,
|
|
11931
|
+
type: "text",
|
|
11932
|
+
placeholder: placeholderText,
|
|
11933
|
+
ref: inputRef,
|
|
11934
|
+
onChange: handleChange,
|
|
11935
|
+
onBlur: handleChange
|
|
11936
|
+
}
|
|
11937
|
+
);
|
|
11938
|
+
}
|
|
11939
|
+
function DeleteIcon() {
|
|
11940
|
+
return /* @__PURE__ */ u$1(Fragment, { children: "×" });
|
|
11941
|
+
}
|
|
11942
|
+
const undefinedValue = "__undefined__";
|
|
11943
|
+
function ClearableSelect({
|
|
11944
|
+
items,
|
|
11945
|
+
initiallySelectedItem,
|
|
11946
|
+
onChange,
|
|
11947
|
+
placeholderText,
|
|
11948
|
+
className,
|
|
11949
|
+
value,
|
|
11950
|
+
selectClassName
|
|
11951
|
+
}) {
|
|
11952
|
+
const [selectedOption, setSelectedOption] = d(initiallySelectedItem ?? null);
|
|
11953
|
+
y(() => {
|
|
11954
|
+
if (value !== void 0) {
|
|
11955
|
+
setSelectedOption(value);
|
|
11956
|
+
}
|
|
11957
|
+
}, [value]);
|
|
11958
|
+
const handleClear = () => {
|
|
11959
|
+
setSelectedOption(null);
|
|
11960
|
+
if (onChange) {
|
|
11961
|
+
onChange(null);
|
|
11962
|
+
}
|
|
11963
|
+
};
|
|
11964
|
+
const handleChange = (event) => {
|
|
11965
|
+
const newValue = event.currentTarget.value;
|
|
11966
|
+
setSelectedOption(newValue);
|
|
11967
|
+
if (onChange) {
|
|
11968
|
+
onChange(newValue);
|
|
11969
|
+
}
|
|
11970
|
+
};
|
|
11971
|
+
return /* @__PURE__ */ u$1("div", { className: `relative inline min-w-24 ${className}`, children: [
|
|
11972
|
+
/* @__PURE__ */ u$1(
|
|
11973
|
+
"select",
|
|
11974
|
+
{
|
|
11975
|
+
className: `w-full select select-bordered pr-14 ${selectClassName}`,
|
|
11976
|
+
value: selectedOption ?? undefinedValue,
|
|
11977
|
+
onChange: handleChange,
|
|
11978
|
+
children: [
|
|
11979
|
+
/* @__PURE__ */ u$1("option", { value: undefinedValue, disabled: true, children: placeholderText ?? "Select an option" }),
|
|
11980
|
+
items.map((item) => /* @__PURE__ */ u$1("option", { value: item, children: item }, item))
|
|
11981
|
+
]
|
|
11982
|
+
}
|
|
11983
|
+
),
|
|
11984
|
+
selectedOption && /* @__PURE__ */ u$1(
|
|
11985
|
+
"button",
|
|
11986
|
+
{
|
|
11987
|
+
onClick: handleClear,
|
|
11988
|
+
className: "absolute right-10 top-1/2 -translate-y-1/2 bg-transparent border-0 cursor-pointer",
|
|
11989
|
+
children: /* @__PURE__ */ u$1(DeleteIcon, {})
|
|
11990
|
+
}
|
|
11991
|
+
)
|
|
11992
|
+
] });
|
|
11993
|
+
}
|
|
11830
11994
|
const customOption = "Custom";
|
|
11831
11995
|
const dateRangeFilterInnerPropsSchema = z$2.object({
|
|
11832
11996
|
dateRangeOptions: z$2.array(dateRangeOptionSchema),
|
|
11833
11997
|
earliestDate: z$2.string().date(),
|
|
11834
|
-
value: dateRangeValueSchema
|
|
11835
|
-
lapisDateField: z$2.string().min(1)
|
|
11998
|
+
value: dateRangeValueSchema,
|
|
11999
|
+
lapisDateField: z$2.string().min(1),
|
|
12000
|
+
placeholder: z$2.string().optional()
|
|
11836
12001
|
});
|
|
11837
12002
|
const dateRangeFilterPropsSchema = dateRangeFilterInnerPropsSchema.extend({
|
|
11838
12003
|
width: z$2.string()
|
|
@@ -11846,118 +12011,104 @@ const DateRangeFilterInner = ({
|
|
|
11846
12011
|
dateRangeOptions,
|
|
11847
12012
|
earliestDate = "1900-01-01",
|
|
11848
12013
|
value,
|
|
11849
|
-
lapisDateField
|
|
12014
|
+
lapisDateField,
|
|
12015
|
+
placeholder
|
|
11850
12016
|
}) => {
|
|
12017
|
+
var _a;
|
|
11851
12018
|
const initialValues = T$1(
|
|
11852
12019
|
() => computeInitialValues(value, earliestDate, dateRangeOptions),
|
|
11853
12020
|
[value, earliestDate, dateRangeOptions]
|
|
11854
12021
|
);
|
|
11855
|
-
const fromDatePickerRef = A$1(null);
|
|
11856
|
-
const toDatePickerRef = A$1(null);
|
|
11857
12022
|
const divRef = A$1(null);
|
|
11858
|
-
const
|
|
11859
|
-
|
|
11860
|
-
|
|
11861
|
-
|
|
11862
|
-
|
|
11863
|
-
|
|
11864
|
-
|
|
11865
|
-
|
|
11866
|
-
|
|
11867
|
-
|
|
11868
|
-
setSelectedDateRange(initialValues.initialSelectedDateRange);
|
|
11869
|
-
setSelectedDates({
|
|
12023
|
+
const getInitialState2 = q$1(() => {
|
|
12024
|
+
if (!initialValues) {
|
|
12025
|
+
return null;
|
|
12026
|
+
}
|
|
12027
|
+
return initialValues.initialSelectedDateRange ? {
|
|
12028
|
+
label: initialValues.initialSelectedDateRange,
|
|
12029
|
+
dateFrom: initialValues.initialSelectedDateFrom,
|
|
12030
|
+
dateTo: initialValues.initialSelectedDateTo
|
|
12031
|
+
} : {
|
|
12032
|
+
label: customOption,
|
|
11870
12033
|
dateFrom: initialValues.initialSelectedDateFrom,
|
|
11871
12034
|
dateTo: initialValues.initialSelectedDateTo
|
|
11872
|
-
});
|
|
11873
|
-
const commonConfig = {
|
|
11874
|
-
allowInput: true,
|
|
11875
|
-
dateFormat: "Y-m-d"
|
|
11876
12035
|
};
|
|
11877
|
-
|
|
11878
|
-
|
|
11879
|
-
|
|
11880
|
-
|
|
11881
|
-
|
|
11882
|
-
|
|
11883
|
-
|
|
11884
|
-
|
|
11885
|
-
|
|
11886
|
-
|
|
11887
|
-
|
|
11888
|
-
|
|
11889
|
-
|
|
11890
|
-
|
|
11891
|
-
|
|
12036
|
+
}, [initialValues]);
|
|
12037
|
+
const customComboboxValue = { label: customOption };
|
|
12038
|
+
const [options2, setOptions] = d(
|
|
12039
|
+
((_a = getInitialState2()) == null ? void 0 : _a.label) === customOption ? [...dateRangeOptions, customComboboxValue] : [...dateRangeOptions]
|
|
12040
|
+
);
|
|
12041
|
+
const [state, setState] = d(getInitialState2());
|
|
12042
|
+
function updateState(newState) {
|
|
12043
|
+
setState(newState);
|
|
12044
|
+
fireFilterChangedEvent({ dateFrom: newState == null ? void 0 : newState.dateFrom, dateTo: newState == null ? void 0 : newState.dateTo, lapisDateField });
|
|
12045
|
+
fireOptionChangedEvent(newState);
|
|
12046
|
+
}
|
|
12047
|
+
y(() => {
|
|
12048
|
+
setState(getInitialState2());
|
|
12049
|
+
}, [getInitialState2]);
|
|
12050
|
+
const onSelectChange = (option) => {
|
|
12051
|
+
updateState(
|
|
12052
|
+
option !== null ? {
|
|
12053
|
+
label: option == null ? void 0 : option.label,
|
|
12054
|
+
dateFrom: getFromDate(option, earliestDate),
|
|
12055
|
+
dateTo: getToDate(option)
|
|
12056
|
+
} : null
|
|
12057
|
+
);
|
|
12058
|
+
if ((option == null ? void 0 : option.label) !== customOption) {
|
|
12059
|
+
setOptions([...dateRangeOptions]);
|
|
11892
12060
|
}
|
|
11893
|
-
return () => {
|
|
11894
|
-
setDateFromPicker((prev) => {
|
|
11895
|
-
prev == null ? void 0 : prev.destroy();
|
|
11896
|
-
return null;
|
|
11897
|
-
});
|
|
11898
|
-
setDateToPicker((prev) => {
|
|
11899
|
-
prev == null ? void 0 : prev.destroy();
|
|
11900
|
-
return null;
|
|
11901
|
-
});
|
|
11902
|
-
};
|
|
11903
|
-
}, [fromDatePickerRef, toDatePickerRef, initialValues]);
|
|
11904
|
-
const onSelectChange = (value2) => {
|
|
11905
|
-
setSelectedDateRange(value2);
|
|
11906
|
-
const dateRange = getDatesForSelectorValue(value2, dateRangeOptions, earliestDate);
|
|
11907
|
-
dateToPicker == null ? void 0 : dateToPicker.set("minDate", dateRange.dateFrom);
|
|
11908
|
-
dateFromPicker == null ? void 0 : dateFromPicker.set("maxDate", dateRange.dateTo);
|
|
11909
|
-
dateFromPicker == null ? void 0 : dateFromPicker.setDate(dateRange.dateFrom);
|
|
11910
|
-
dateToPicker == null ? void 0 : dateToPicker.setDate(dateRange.dateTo);
|
|
11911
|
-
setSelectedDates({
|
|
11912
|
-
dateFrom: dateRange.dateFrom,
|
|
11913
|
-
dateTo: dateRange.dateTo
|
|
11914
|
-
});
|
|
11915
|
-
fireFilterChangedEvent();
|
|
11916
|
-
fireOptionChangedEvent(value2);
|
|
11917
12061
|
};
|
|
11918
|
-
|
|
11919
|
-
if (
|
|
12062
|
+
function getFromDate(option, earliestDate2) {
|
|
12063
|
+
if (!option || option.label === customOption) {
|
|
12064
|
+
return void 0;
|
|
12065
|
+
}
|
|
12066
|
+
return new Date((option == null ? void 0 : option.dateFrom) ?? earliestDate2);
|
|
12067
|
+
}
|
|
12068
|
+
function getToDate(option) {
|
|
12069
|
+
if (!option || option.label === customOption) {
|
|
12070
|
+
return void 0;
|
|
12071
|
+
}
|
|
12072
|
+
if (!option.dateTo) {
|
|
12073
|
+
return /* @__PURE__ */ new Date();
|
|
12074
|
+
}
|
|
12075
|
+
return new Date(option.dateTo);
|
|
12076
|
+
}
|
|
12077
|
+
const onChangeDateFrom = (date) => {
|
|
12078
|
+
var _a2;
|
|
12079
|
+
if ((date == null ? void 0 : date.toDateString()) === ((_a2 = state == null ? void 0 : state.dateFrom) == null ? void 0 : _a2.toDateString())) {
|
|
11920
12080
|
return;
|
|
11921
12081
|
}
|
|
11922
|
-
|
|
11923
|
-
|
|
11924
|
-
|
|
11925
|
-
|
|
11926
|
-
setSelectedDateRange(customOption);
|
|
11927
|
-
fireFilterChangedEvent();
|
|
11928
|
-
fireOptionChangedEvent({
|
|
11929
|
-
dateFrom: dateFrom !== void 0 ? toYYYYMMDD(dateFrom) : earliestDate,
|
|
11930
|
-
dateTo: toYYYYMMDD(dateTo || /* @__PURE__ */ new Date())
|
|
12082
|
+
updateState({
|
|
12083
|
+
label: customOption,
|
|
12084
|
+
dateFrom: date,
|
|
12085
|
+
dateTo: state == null ? void 0 : state.dateTo
|
|
11931
12086
|
});
|
|
12087
|
+
setOptions([...dateRangeOptions, customComboboxValue]);
|
|
11932
12088
|
};
|
|
11933
|
-
const onChangeDateTo = () => {
|
|
11934
|
-
|
|
12089
|
+
const onChangeDateTo = (date) => {
|
|
12090
|
+
var _a2;
|
|
12091
|
+
if ((date == null ? void 0 : date.toDateString()) === ((_a2 = state == null ? void 0 : state.dateTo) == null ? void 0 : _a2.toDateString())) {
|
|
11935
12092
|
return;
|
|
11936
12093
|
}
|
|
11937
|
-
|
|
11938
|
-
|
|
11939
|
-
|
|
11940
|
-
|
|
11941
|
-
setSelectedDateRange(customOption);
|
|
11942
|
-
fireFilterChangedEvent();
|
|
11943
|
-
fireOptionChangedEvent({
|
|
11944
|
-
dateFrom: dateFrom !== void 0 ? toYYYYMMDD(dateFrom) : earliestDate,
|
|
11945
|
-
dateTo: toYYYYMMDD(dateTo || /* @__PURE__ */ new Date())
|
|
12094
|
+
updateState({
|
|
12095
|
+
label: customOption,
|
|
12096
|
+
dateFrom: state == null ? void 0 : state.dateFrom,
|
|
12097
|
+
dateTo: date
|
|
11946
12098
|
});
|
|
12099
|
+
setOptions([...dateRangeOptions, customComboboxValue]);
|
|
11947
12100
|
};
|
|
11948
|
-
const
|
|
11949
|
-
|
|
11950
|
-
|
|
11951
|
-
|
|
11952
|
-
|
|
11953
|
-
var
|
|
11954
|
-
const dateFrom = dateFromPicker == null ? void 0 : dateFromPicker.selectedDates[0];
|
|
11955
|
-
const dateTo = dateToPicker == null ? void 0 : dateToPicker.selectedDates[0];
|
|
12101
|
+
const fireFilterChangedEvent = ({
|
|
12102
|
+
dateFrom,
|
|
12103
|
+
dateTo,
|
|
12104
|
+
lapisDateField: lapisDateField2
|
|
12105
|
+
}) => {
|
|
12106
|
+
var _a2;
|
|
11956
12107
|
const detail = {
|
|
11957
|
-
...dateFrom !== void 0 && { [`${
|
|
11958
|
-
...dateTo !== void 0 && { [`${
|
|
12108
|
+
...dateFrom !== void 0 && { [`${lapisDateField2}From`]: toYYYYMMDD(dateFrom) },
|
|
12109
|
+
...dateTo !== void 0 && { [`${lapisDateField2}To`]: toYYYYMMDD(dateTo) }
|
|
11959
12110
|
};
|
|
11960
|
-
(
|
|
12111
|
+
(_a2 = divRef.current) == null ? void 0 : _a2.dispatchEvent(
|
|
11961
12112
|
new CustomEvent("gs-date-range-filter-changed", {
|
|
11962
12113
|
detail,
|
|
11963
12114
|
bubbles: true,
|
|
@@ -11965,49 +12116,51 @@ const DateRangeFilterInner = ({
|
|
|
11965
12116
|
})
|
|
11966
12117
|
);
|
|
11967
12118
|
};
|
|
11968
|
-
|
|
11969
|
-
|
|
11970
|
-
|
|
12119
|
+
const fireOptionChangedEvent = (state2) => {
|
|
12120
|
+
var _a2;
|
|
12121
|
+
const eventDetail = (state2 == null ? void 0 : state2.label) === customOption ? {
|
|
12122
|
+
dateFrom: state2.dateFrom !== void 0 ? toYYYYMMDD(state2.dateFrom) : void 0,
|
|
12123
|
+
dateTo: state2.dateTo !== void 0 ? toYYYYMMDD(state2.dateTo) : void 0
|
|
12124
|
+
} : state2 == null ? void 0 : state2.label;
|
|
12125
|
+
(_a2 = divRef.current) == null ? void 0 : _a2.dispatchEvent(new DateRangeOptionChangedEvent(eventDetail));
|
|
12126
|
+
};
|
|
12127
|
+
return /* @__PURE__ */ u$1("div", { className: "@container", ref: divRef, children: /* @__PURE__ */ u$1("div", { className: "flex min-w-[7.5rem] flex-col @md:flex-row", children: [
|
|
12128
|
+
/* @__PURE__ */ u$1("div", { className: "flex-grow", children: /* @__PURE__ */ u$1(
|
|
12129
|
+
ClearableSelect,
|
|
11971
12130
|
{
|
|
11972
|
-
items:
|
|
11973
|
-
|
|
11974
|
-
|
|
11975
|
-
|
|
11976
|
-
|
|
11977
|
-
|
|
11978
|
-
|
|
11979
|
-
|
|
11980
|
-
const select = event.target;
|
|
11981
|
-
const value2 = select.value;
|
|
11982
|
-
onSelectChange(value2);
|
|
11983
|
-
}
|
|
12131
|
+
items: options2.map((item) => item.label),
|
|
12132
|
+
placeholderText: placeholder,
|
|
12133
|
+
onChange: (value2) => {
|
|
12134
|
+
const dateRangeOption = options2.find((item) => item.label === value2);
|
|
12135
|
+
onSelectChange(dateRangeOption ?? null);
|
|
12136
|
+
},
|
|
12137
|
+
value: (state == null ? void 0 : state.label) ?? null,
|
|
12138
|
+
selectClassName: "rounded-t-md rounded-b-none @md:rounded-l-md @md:rounded-r-none"
|
|
11984
12139
|
}
|
|
11985
|
-
),
|
|
11986
|
-
/* @__PURE__ */ u$1("div", { className: "flex flex-
|
|
12140
|
+
) }),
|
|
12141
|
+
/* @__PURE__ */ u$1("div", { className: "flex flex-grow flex-col @4xs:flex-row", children: [
|
|
11987
12142
|
/* @__PURE__ */ u$1(
|
|
11988
|
-
|
|
12143
|
+
DatePicker,
|
|
11989
12144
|
{
|
|
11990
|
-
|
|
11991
|
-
|
|
11992
|
-
placeholder: "Date from",
|
|
11993
|
-
ref: fromDatePickerRef,
|
|
12145
|
+
className: "flex-grow min-w-[7.5rem] @4xs:rounded-bl-md @md:rounded-l-none rounded-none",
|
|
12146
|
+
value: state == null ? void 0 : state.dateFrom,
|
|
11994
12147
|
onChange: onChangeDateFrom,
|
|
11995
|
-
|
|
12148
|
+
maxDate: state == null ? void 0 : state.dateTo,
|
|
12149
|
+
placeholderText: "Date from"
|
|
11996
12150
|
}
|
|
11997
12151
|
),
|
|
11998
12152
|
/* @__PURE__ */ u$1(
|
|
11999
|
-
|
|
12153
|
+
DatePicker,
|
|
12000
12154
|
{
|
|
12001
|
-
|
|
12002
|
-
|
|
12003
|
-
placeholder: "Date to",
|
|
12004
|
-
ref: toDatePickerRef,
|
|
12155
|
+
className: "flex-grow min-w-[7.5rem] rounded-b-md rounded-t-none @4xs:rounded-tr-none @4xs:rounded-l-none @md:rounded-r-md ",
|
|
12156
|
+
value: state == null ? void 0 : state.dateTo,
|
|
12005
12157
|
onChange: onChangeDateTo,
|
|
12006
|
-
|
|
12158
|
+
minDate: state == null ? void 0 : state.dateFrom,
|
|
12159
|
+
placeholderText: "Date to"
|
|
12007
12160
|
}
|
|
12008
12161
|
)
|
|
12009
12162
|
] })
|
|
12010
|
-
] });
|
|
12163
|
+
] }) });
|
|
12011
12164
|
};
|
|
12012
12165
|
var __defProp$4 = Object.defineProperty;
|
|
12013
12166
|
var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;
|
|
@@ -12026,6 +12179,7 @@ let DateRangeFilterComponent = class extends PreactLitAdapter {
|
|
|
12026
12179
|
this.earliestDate = "1900-01-01";
|
|
12027
12180
|
this.value = void 0;
|
|
12028
12181
|
this.width = "100%";
|
|
12182
|
+
this.placeholder = void 0;
|
|
12029
12183
|
this.lapisDateField = "";
|
|
12030
12184
|
}
|
|
12031
12185
|
render() {
|
|
@@ -12036,7 +12190,8 @@ let DateRangeFilterComponent = class extends PreactLitAdapter {
|
|
|
12036
12190
|
earliestDate: this.earliestDate,
|
|
12037
12191
|
value: this.value,
|
|
12038
12192
|
lapisDateField: this.lapisDateField,
|
|
12039
|
-
width: this.width
|
|
12193
|
+
width: this.width,
|
|
12194
|
+
placeholder: this.placeholder
|
|
12040
12195
|
}
|
|
12041
12196
|
);
|
|
12042
12197
|
}
|
|
@@ -12068,6 +12223,9 @@ __decorateClass$4([
|
|
|
12068
12223
|
__decorateClass$4([
|
|
12069
12224
|
n$1({ type: String })
|
|
12070
12225
|
], DateRangeFilterComponent.prototype, "width", 2);
|
|
12226
|
+
__decorateClass$4([
|
|
12227
|
+
n$1({ type: String })
|
|
12228
|
+
], DateRangeFilterComponent.prototype, "placeholder", 2);
|
|
12071
12229
|
__decorateClass$4([
|
|
12072
12230
|
n$1({ type: String })
|
|
12073
12231
|
], DateRangeFilterComponent.prototype, "lapisDateField", 2);
|
|
@@ -15059,11 +15217,11 @@ function DownshiftCombobox({
|
|
|
15059
15217
|
createEvent,
|
|
15060
15218
|
itemToString: itemToString2,
|
|
15061
15219
|
placeholderText,
|
|
15062
|
-
formatItemInList
|
|
15220
|
+
formatItemInList,
|
|
15221
|
+
inputClassName = ""
|
|
15063
15222
|
}) {
|
|
15064
15223
|
var _a;
|
|
15065
|
-
const
|
|
15066
|
-
const [itemsFilter, setItemsFilter] = d(itemToString2(initialSelectedItem));
|
|
15224
|
+
const [itemsFilter, setItemsFilter] = d(itemToString2(value));
|
|
15067
15225
|
const items = T$1(
|
|
15068
15226
|
() => allItems.filter((item) => filterItemsByInputValue(item, itemsFilter)),
|
|
15069
15227
|
[allItems, filterItemsByInputValue, itemsFilter]
|
|
@@ -15102,7 +15260,7 @@ function DownshiftCombobox({
|
|
|
15102
15260
|
itemToString(item) {
|
|
15103
15261
|
return itemToString2(item);
|
|
15104
15262
|
},
|
|
15105
|
-
|
|
15263
|
+
selectedItem: value,
|
|
15106
15264
|
environment
|
|
15107
15265
|
});
|
|
15108
15266
|
const onInputBlur = () => {
|
|
@@ -15124,7 +15282,7 @@ function DownshiftCombobox({
|
|
|
15124
15282
|
/* @__PURE__ */ u$1("div", { className: "w-full flex flex-col gap-1", children: /* @__PURE__ */ u$1(
|
|
15125
15283
|
"div",
|
|
15126
15284
|
{
|
|
15127
|
-
className:
|
|
15285
|
+
className: `flex gap-0.5 input input-bordered min-w-32 ${inputClassName}`,
|
|
15128
15286
|
onBlur: (event) => {
|
|
15129
15287
|
if (event.relatedTarget != buttonRef.current) {
|
|
15130
15288
|
closeMenu();
|
|
@@ -15148,7 +15306,7 @@ function DownshiftCombobox({
|
|
|
15148
15306
|
type: "button",
|
|
15149
15307
|
onClick: clearInput,
|
|
15150
15308
|
tabIndex: -1,
|
|
15151
|
-
children:
|
|
15309
|
+
children: /* @__PURE__ */ u$1(DeleteIcon, {})
|
|
15152
15310
|
}
|
|
15153
15311
|
),
|
|
15154
15312
|
/* @__PURE__ */ u$1(
|