@helpwave/hightide 0.9.2 → 0.9.4
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/dist/index.d.mts +32 -13
- package/dist/index.d.ts +32 -13
- package/dist/index.js +879 -734
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +739 -595
- package/dist/index.mjs.map +1 -1
- package/dist/style/globals.css +3 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6925,6 +6925,7 @@ __export(index_exports, {
|
|
|
6925
6925
|
SimpleSearch: () => SimpleSearch,
|
|
6926
6926
|
SimpleSearchWithMapping: () => SimpleSearchWithMapping,
|
|
6927
6927
|
SingleSelectProperty: () => SingleSelectProperty,
|
|
6928
|
+
SortingList: () => SortingList,
|
|
6928
6929
|
StepperBar: () => StepperBar,
|
|
6929
6930
|
StorageListener: () => StorageListener,
|
|
6930
6931
|
Switch: () => Switch,
|
|
@@ -8604,6 +8605,7 @@ var hightideTranslation = {
|
|
|
8604
8605
|
"de-DE": {
|
|
8605
8606
|
"add": `Hinzuf\xFCgen`,
|
|
8606
8607
|
"addFilter": `Filter hinzuf\xFCgen`,
|
|
8608
|
+
"addSorting": `Sortierung hinzuf\xFCgen`,
|
|
8607
8609
|
"addTime": `Uhrzeit hinzuf\xFCgen`,
|
|
8608
8610
|
"after": `Nach`,
|
|
8609
8611
|
"age": `Alter`,
|
|
@@ -8815,6 +8817,8 @@ var hightideTranslation = {
|
|
|
8815
8817
|
"slideOf": ({ index, length }) => {
|
|
8816
8818
|
return `Slide ${index} von ${length} slides`;
|
|
8817
8819
|
},
|
|
8820
|
+
"sortAsc": `ASC`,
|
|
8821
|
+
"sortDesc": `DESC`,
|
|
8818
8822
|
"sorting": `Sortierung`,
|
|
8819
8823
|
"sSortingState": ({ sortDirection }) => {
|
|
8820
8824
|
return import_internationalization.TranslationGen.resolveSelect(sortDirection, {
|
|
@@ -8971,6 +8975,7 @@ var hightideTranslation = {
|
|
|
8971
8975
|
"en-US": {
|
|
8972
8976
|
"add": `Add`,
|
|
8973
8977
|
"addFilter": `Add filter`,
|
|
8978
|
+
"addSorting": `Add sorting`,
|
|
8974
8979
|
"addTime": `Add Time`,
|
|
8975
8980
|
"after": `After`,
|
|
8976
8981
|
"age": `Age`,
|
|
@@ -9182,6 +9187,8 @@ var hightideTranslation = {
|
|
|
9182
9187
|
"slideOf": ({ index, length }) => {
|
|
9183
9188
|
return `Slide ${index} of ${length} slides`;
|
|
9184
9189
|
},
|
|
9190
|
+
"sortAsc": `ASC`,
|
|
9191
|
+
"sortDesc": `DESC`,
|
|
9185
9192
|
"sorting": `Sorting`,
|
|
9186
9193
|
"sSortingState": ({ sortDirection }) => {
|
|
9187
9194
|
return import_internationalization.TranslationGen.resolveSelect(sortDirection, {
|
|
@@ -14636,40 +14643,40 @@ function isParameterValidForOperator(dataType, operator, parameter) {
|
|
|
14636
14643
|
}
|
|
14637
14644
|
switch (dataType) {
|
|
14638
14645
|
case "text": {
|
|
14639
|
-
return typeof parameter.
|
|
14646
|
+
return typeof parameter.stringValue === "string";
|
|
14640
14647
|
}
|
|
14641
14648
|
case "number": {
|
|
14642
14649
|
if (operator === "between" || operator === "notBetween") {
|
|
14643
|
-
const min = parameter.
|
|
14644
|
-
const max = parameter.
|
|
14650
|
+
const min = parameter.numberMin;
|
|
14651
|
+
const max = parameter.numberMax;
|
|
14645
14652
|
return typeof min === "number" && !Number.isNaN(min) && typeof max === "number" && !Number.isNaN(max) && min <= max;
|
|
14646
14653
|
}
|
|
14647
|
-
const v = parameter.
|
|
14654
|
+
const v = parameter.numberValue;
|
|
14648
14655
|
return typeof v === "number" && !Number.isNaN(v);
|
|
14649
14656
|
}
|
|
14650
14657
|
case "date":
|
|
14651
14658
|
case "dateTime": {
|
|
14652
14659
|
if (operator === "between" || operator === "notBetween") {
|
|
14653
|
-
const minDate = DateUtils.tryParseDate(parameter.
|
|
14654
|
-
const maxDate = DateUtils.tryParseDate(parameter.
|
|
14660
|
+
const minDate = DateUtils.tryParseDate(parameter.dateMin);
|
|
14661
|
+
const maxDate = DateUtils.tryParseDate(parameter.dateMax);
|
|
14655
14662
|
if (!minDate || !maxDate) return false;
|
|
14656
14663
|
const minNorm = dataType === "date" ? DateUtils.toOnlyDate(minDate).getTime() : DateUtils.toDateTimeOnly(minDate).getTime();
|
|
14657
14664
|
const maxNorm = dataType === "date" ? DateUtils.toOnlyDate(maxDate).getTime() : DateUtils.toDateTimeOnly(maxDate).getTime();
|
|
14658
14665
|
return minNorm <= maxNorm;
|
|
14659
14666
|
}
|
|
14660
|
-
return DateUtils.tryParseDate(parameter.
|
|
14667
|
+
return DateUtils.tryParseDate(parameter.dateValue) != null;
|
|
14661
14668
|
}
|
|
14662
14669
|
case "boolean":
|
|
14663
14670
|
return true;
|
|
14664
14671
|
case "multiTags": {
|
|
14665
|
-
return Array.isArray(parameter.
|
|
14672
|
+
return Array.isArray(parameter.uuidValues);
|
|
14666
14673
|
}
|
|
14667
14674
|
case "singleTag": {
|
|
14668
14675
|
if (operator === "contains" || operator === "notContains") {
|
|
14669
|
-
return Array.isArray(parameter.
|
|
14676
|
+
return Array.isArray(parameter.uuidValues);
|
|
14670
14677
|
}
|
|
14671
14678
|
if (operator === "equals" || operator === "notEquals") {
|
|
14672
|
-
return typeof parameter.
|
|
14679
|
+
return typeof parameter.uuidValue === "string";
|
|
14673
14680
|
}
|
|
14674
14681
|
return true;
|
|
14675
14682
|
}
|
|
@@ -14691,9 +14698,8 @@ var FilterValueUtils = {
|
|
|
14691
14698
|
isValid: isFilterValueValid
|
|
14692
14699
|
};
|
|
14693
14700
|
function filterText(value, operator, parameter) {
|
|
14694
|
-
const
|
|
14695
|
-
const
|
|
14696
|
-
const cellText = isCaseSensitive ? value?.toString() ?? "" : value?.toString().toLowerCase() ?? "";
|
|
14701
|
+
const searchText = parameter.stringValue ?? "";
|
|
14702
|
+
const cellText = value?.toString() ?? "";
|
|
14697
14703
|
switch (operator) {
|
|
14698
14704
|
case "equals":
|
|
14699
14705
|
return cellText === searchText;
|
|
@@ -14727,21 +14733,21 @@ function filterNumber(value, operator, parameter) {
|
|
|
14727
14733
|
}
|
|
14728
14734
|
switch (operator) {
|
|
14729
14735
|
case "equals":
|
|
14730
|
-
return value === parameter.
|
|
14736
|
+
return value === parameter.numberValue;
|
|
14731
14737
|
case "notEquals":
|
|
14732
|
-
return value !== parameter.
|
|
14738
|
+
return value !== parameter.numberValue;
|
|
14733
14739
|
case "greaterThan":
|
|
14734
|
-
return value > (parameter.
|
|
14740
|
+
return value > (parameter.numberValue ?? 0);
|
|
14735
14741
|
case "greaterThanOrEqual":
|
|
14736
|
-
return value >= (parameter.
|
|
14742
|
+
return value >= (parameter.numberValue ?? 0);
|
|
14737
14743
|
case "lessThan":
|
|
14738
|
-
return value < (parameter.
|
|
14744
|
+
return value < (parameter.numberValue ?? 0);
|
|
14739
14745
|
case "lessThanOrEqual":
|
|
14740
|
-
return value <= (parameter.
|
|
14746
|
+
return value <= (parameter.numberValue ?? 0);
|
|
14741
14747
|
case "between":
|
|
14742
|
-
return value >= (parameter.
|
|
14748
|
+
return value >= (parameter.numberMin ?? -Infinity) && value <= (parameter.numberMax ?? Infinity);
|
|
14743
14749
|
case "notBetween":
|
|
14744
|
-
return value < (parameter.
|
|
14750
|
+
return value < (parameter.numberMin ?? -Infinity) || value > (parameter.numberMax ?? Infinity);
|
|
14745
14751
|
case "isUndefined":
|
|
14746
14752
|
return value === void 0 || value === null;
|
|
14747
14753
|
case "isNotUndefined":
|
|
@@ -14764,44 +14770,44 @@ function filterDate(value, operator, parameter) {
|
|
|
14764
14770
|
const normalizedDate = DateUtils.toOnlyDate(date);
|
|
14765
14771
|
switch (operator) {
|
|
14766
14772
|
case "equals": {
|
|
14767
|
-
const filterDate2 = DateUtils.tryParseDate(parameter.
|
|
14773
|
+
const filterDate2 = DateUtils.tryParseDate(parameter.dateValue);
|
|
14768
14774
|
if (!filterDate2) return false;
|
|
14769
14775
|
return normalizedDate.getTime() === DateUtils.toOnlyDate(filterDate2).getTime();
|
|
14770
14776
|
}
|
|
14771
14777
|
case "notEquals": {
|
|
14772
|
-
const filterDate2 = DateUtils.tryParseDate(parameter.
|
|
14778
|
+
const filterDate2 = DateUtils.tryParseDate(parameter.dateValue);
|
|
14773
14779
|
if (!filterDate2) return false;
|
|
14774
14780
|
return normalizedDate.getTime() !== DateUtils.toOnlyDate(filterDate2).getTime();
|
|
14775
14781
|
}
|
|
14776
14782
|
case "greaterThan": {
|
|
14777
|
-
const filterDate2 = DateUtils.tryParseDate(parameter.
|
|
14783
|
+
const filterDate2 = DateUtils.tryParseDate(parameter.dateValue);
|
|
14778
14784
|
if (!filterDate2) return false;
|
|
14779
14785
|
return normalizedDate > DateUtils.toOnlyDate(filterDate2);
|
|
14780
14786
|
}
|
|
14781
14787
|
case "greaterThanOrEqual": {
|
|
14782
|
-
const filterDate2 = DateUtils.tryParseDate(parameter.
|
|
14788
|
+
const filterDate2 = DateUtils.tryParseDate(parameter.dateValue);
|
|
14783
14789
|
if (!filterDate2) return false;
|
|
14784
14790
|
return normalizedDate >= DateUtils.toOnlyDate(filterDate2);
|
|
14785
14791
|
}
|
|
14786
14792
|
case "lessThan": {
|
|
14787
|
-
const filterDate2 = DateUtils.tryParseDate(parameter.
|
|
14793
|
+
const filterDate2 = DateUtils.tryParseDate(parameter.dateValue);
|
|
14788
14794
|
if (!filterDate2) return false;
|
|
14789
14795
|
return normalizedDate < DateUtils.toOnlyDate(filterDate2);
|
|
14790
14796
|
}
|
|
14791
14797
|
case "lessThanOrEqual": {
|
|
14792
|
-
const filterDate2 = DateUtils.tryParseDate(parameter.
|
|
14798
|
+
const filterDate2 = DateUtils.tryParseDate(parameter.dateValue);
|
|
14793
14799
|
if (!filterDate2) return false;
|
|
14794
14800
|
return normalizedDate <= DateUtils.toOnlyDate(filterDate2);
|
|
14795
14801
|
}
|
|
14796
14802
|
case "between": {
|
|
14797
|
-
const minDate = DateUtils.tryParseDate(parameter.
|
|
14798
|
-
const maxDate = DateUtils.tryParseDate(parameter.
|
|
14803
|
+
const minDate = DateUtils.tryParseDate(parameter.dateMin);
|
|
14804
|
+
const maxDate = DateUtils.tryParseDate(parameter.dateMax);
|
|
14799
14805
|
if (!minDate || !maxDate) return false;
|
|
14800
14806
|
return normalizedDate >= DateUtils.toOnlyDate(minDate) && normalizedDate <= DateUtils.toOnlyDate(maxDate);
|
|
14801
14807
|
}
|
|
14802
14808
|
case "notBetween": {
|
|
14803
|
-
const minDate = DateUtils.tryParseDate(parameter.
|
|
14804
|
-
const maxDate = DateUtils.tryParseDate(parameter.
|
|
14809
|
+
const minDate = DateUtils.tryParseDate(parameter.dateMin);
|
|
14810
|
+
const maxDate = DateUtils.tryParseDate(parameter.dateMax);
|
|
14805
14811
|
if (!minDate || !maxDate) return false;
|
|
14806
14812
|
return normalizedDate < DateUtils.toOnlyDate(minDate) || normalizedDate > DateUtils.toOnlyDate(maxDate);
|
|
14807
14813
|
}
|
|
@@ -14823,44 +14829,44 @@ function filterDateTime(value, operator, parameter) {
|
|
|
14823
14829
|
const normalizedDatetime = DateUtils.toDateTimeOnly(dateTime);
|
|
14824
14830
|
switch (operator) {
|
|
14825
14831
|
case "equals": {
|
|
14826
|
-
const filterDatetime = DateUtils.tryParseDate(parameter.
|
|
14832
|
+
const filterDatetime = DateUtils.tryParseDate(parameter.dateValue);
|
|
14827
14833
|
if (!filterDatetime) return false;
|
|
14828
14834
|
return normalizedDatetime.getTime() === DateUtils.toDateTimeOnly(filterDatetime).getTime();
|
|
14829
14835
|
}
|
|
14830
14836
|
case "notEquals": {
|
|
14831
|
-
const filterDatetime = DateUtils.tryParseDate(parameter.
|
|
14837
|
+
const filterDatetime = DateUtils.tryParseDate(parameter.dateValue);
|
|
14832
14838
|
if (!filterDatetime) return false;
|
|
14833
14839
|
return normalizedDatetime.getTime() !== DateUtils.toDateTimeOnly(filterDatetime).getTime();
|
|
14834
14840
|
}
|
|
14835
14841
|
case "greaterThan": {
|
|
14836
|
-
const filterDatetime = DateUtils.tryParseDate(parameter.
|
|
14842
|
+
const filterDatetime = DateUtils.tryParseDate(parameter.dateValue);
|
|
14837
14843
|
if (!filterDatetime) return false;
|
|
14838
14844
|
return normalizedDatetime > DateUtils.toDateTimeOnly(filterDatetime);
|
|
14839
14845
|
}
|
|
14840
14846
|
case "greaterThanOrEqual": {
|
|
14841
|
-
const filterDatetime = DateUtils.tryParseDate(parameter.
|
|
14847
|
+
const filterDatetime = DateUtils.tryParseDate(parameter.dateValue);
|
|
14842
14848
|
if (!filterDatetime) return false;
|
|
14843
14849
|
return normalizedDatetime >= DateUtils.toDateTimeOnly(filterDatetime);
|
|
14844
14850
|
}
|
|
14845
14851
|
case "lessThan": {
|
|
14846
|
-
const filterDatetime = DateUtils.tryParseDate(parameter.
|
|
14852
|
+
const filterDatetime = DateUtils.tryParseDate(parameter.dateValue);
|
|
14847
14853
|
if (!filterDatetime) return false;
|
|
14848
14854
|
return normalizedDatetime < DateUtils.toDateTimeOnly(filterDatetime);
|
|
14849
14855
|
}
|
|
14850
14856
|
case "lessThanOrEqual": {
|
|
14851
|
-
const filterDatetime = DateUtils.tryParseDate(parameter.
|
|
14857
|
+
const filterDatetime = DateUtils.tryParseDate(parameter.dateValue);
|
|
14852
14858
|
if (!filterDatetime) return false;
|
|
14853
14859
|
return normalizedDatetime <= DateUtils.toDateTimeOnly(filterDatetime);
|
|
14854
14860
|
}
|
|
14855
14861
|
case "between": {
|
|
14856
|
-
const minDatetime = DateUtils.tryParseDate(parameter.
|
|
14857
|
-
const maxDatetime = DateUtils.tryParseDate(parameter.
|
|
14862
|
+
const minDatetime = DateUtils.tryParseDate(parameter.dateMin);
|
|
14863
|
+
const maxDatetime = DateUtils.tryParseDate(parameter.dateMax);
|
|
14858
14864
|
if (!minDatetime || !maxDatetime) return false;
|
|
14859
14865
|
return normalizedDatetime >= DateUtils.toDateTimeOnly(minDatetime) && normalizedDatetime <= DateUtils.toDateTimeOnly(maxDatetime);
|
|
14860
14866
|
}
|
|
14861
14867
|
case "notBetween": {
|
|
14862
|
-
const minDatetime = DateUtils.tryParseDate(parameter.
|
|
14863
|
-
const maxDatetime = DateUtils.tryParseDate(parameter.
|
|
14868
|
+
const minDatetime = DateUtils.tryParseDate(parameter.dateMin);
|
|
14869
|
+
const maxDatetime = DateUtils.tryParseDate(parameter.dateMax);
|
|
14864
14870
|
if (!minDatetime || !maxDatetime) return false;
|
|
14865
14871
|
return normalizedDatetime < DateUtils.toDateTimeOnly(minDatetime) || normalizedDatetime > DateUtils.toDateTimeOnly(maxDatetime);
|
|
14866
14872
|
}
|
|
@@ -14885,28 +14891,28 @@ function filterBoolean(value, operator) {
|
|
|
14885
14891
|
function filterMultiTags(value, operator, parameter) {
|
|
14886
14892
|
switch (operator) {
|
|
14887
14893
|
case "equals": {
|
|
14888
|
-
if (!Array.isArray(value) || !Array.isArray(parameter.
|
|
14889
|
-
if (value.length !== parameter.
|
|
14894
|
+
if (!Array.isArray(value) || !Array.isArray(parameter.uuidValues)) return false;
|
|
14895
|
+
if (value.length !== parameter.uuidValues.length) return false;
|
|
14890
14896
|
const valueSet = new Set(value);
|
|
14891
|
-
const searchTagsSet = new Set(parameter.
|
|
14897
|
+
const searchTagsSet = new Set(parameter.uuidValues);
|
|
14892
14898
|
if (valueSet.size !== searchTagsSet.size) return false;
|
|
14893
14899
|
return Array.from(valueSet).every((tag) => searchTagsSet.has(tag));
|
|
14894
14900
|
}
|
|
14895
14901
|
case "notEquals": {
|
|
14896
|
-
if (!Array.isArray(value) || !Array.isArray(parameter.
|
|
14897
|
-
if (value.length !== parameter.
|
|
14902
|
+
if (!Array.isArray(value) || !Array.isArray(parameter.uuidValues)) return true;
|
|
14903
|
+
if (value.length !== parameter.uuidValues.length) return true;
|
|
14898
14904
|
const valueSet = new Set(value);
|
|
14899
|
-
const searchTagsSet = new Set(parameter.
|
|
14905
|
+
const searchTagsSet = new Set(parameter.uuidValues);
|
|
14900
14906
|
if (valueSet.size !== searchTagsSet.size) return true;
|
|
14901
14907
|
return !Array.from(valueSet).every((tag) => searchTagsSet.has(tag));
|
|
14902
14908
|
}
|
|
14903
14909
|
case "contains": {
|
|
14904
|
-
if (!Array.isArray(value) || !Array.isArray(parameter.
|
|
14905
|
-
return parameter.
|
|
14910
|
+
if (!Array.isArray(value) || !Array.isArray(parameter.uuidValues)) return false;
|
|
14911
|
+
return parameter.uuidValues.every((tag) => value.includes(tag));
|
|
14906
14912
|
}
|
|
14907
14913
|
case "notContains": {
|
|
14908
|
-
if (!Array.isArray(value) || !Array.isArray(parameter.
|
|
14909
|
-
return !parameter.
|
|
14914
|
+
if (!Array.isArray(value) || !Array.isArray(parameter.uuidValues)) return true;
|
|
14915
|
+
return !parameter.uuidValues.every((tag) => value.includes(tag));
|
|
14910
14916
|
}
|
|
14911
14917
|
case "isUndefined":
|
|
14912
14918
|
return value === void 0 || value === null;
|
|
@@ -14919,13 +14925,13 @@ function filterMultiTags(value, operator, parameter) {
|
|
|
14919
14925
|
function filterSingleTag(value, operator, parameter) {
|
|
14920
14926
|
switch (operator) {
|
|
14921
14927
|
case "equals":
|
|
14922
|
-
return value === parameter.
|
|
14928
|
+
return value === parameter.uuidValue;
|
|
14923
14929
|
case "notEquals":
|
|
14924
|
-
return value !== parameter.
|
|
14930
|
+
return value !== parameter.uuidValue;
|
|
14925
14931
|
case "contains":
|
|
14926
|
-
return parameter.
|
|
14932
|
+
return parameter.uuidValues?.includes(value) ?? false;
|
|
14927
14933
|
case "notContains":
|
|
14928
|
-
return !(parameter.
|
|
14934
|
+
return !(parameter.uuidValues?.includes(value) ?? false);
|
|
14929
14935
|
case "isUndefined":
|
|
14930
14936
|
return value === void 0 || value === null;
|
|
14931
14937
|
case "isNotUndefined":
|
|
@@ -14973,81 +14979,81 @@ function useFilterValueTranslation() {
|
|
|
14973
14979
|
switch (value.operator) {
|
|
14974
14980
|
case "equals":
|
|
14975
14981
|
if (value.dataType === "date" || value.dataType === "dateTime") {
|
|
14976
|
-
return translation("rEquals", { value: formatDateParam(p.
|
|
14982
|
+
return translation("rEquals", { value: formatDateParam(p.dateValue, locale, dateFormat) ?? "-" });
|
|
14977
14983
|
}
|
|
14978
14984
|
if (value.dataType === "singleTag") {
|
|
14979
|
-
return translation("rEquals", { value: tagToLabel(tags, p.
|
|
14985
|
+
return translation("rEquals", { value: tagToLabel(tags, p.uuidValue) });
|
|
14980
14986
|
}
|
|
14981
14987
|
if (value.dataType === "multiTags") {
|
|
14982
|
-
const valueStr = (p.
|
|
14988
|
+
const valueStr = (p.uuidValues ?? []).map((v) => tagToLabel(tags, v)).join(", ");
|
|
14983
14989
|
return translation("rEquals", { value: valueStr });
|
|
14984
14990
|
}
|
|
14985
|
-
return translation("rEquals", { value: String(p.
|
|
14991
|
+
return translation("rEquals", { value: String(p.stringValue ?? p.numberValue ?? "") });
|
|
14986
14992
|
case "notEquals":
|
|
14987
14993
|
if (value.dataType === "date" || value.dataType === "dateTime") {
|
|
14988
|
-
return translation("rNotEquals", { value: formatDateParam(p.
|
|
14994
|
+
return translation("rNotEquals", { value: formatDateParam(p.dateValue, locale, dateFormat) });
|
|
14989
14995
|
}
|
|
14990
14996
|
if (value.dataType === "singleTag") {
|
|
14991
|
-
return translation("rNotEquals", { value: tagToLabel(tags, p.
|
|
14997
|
+
return translation("rNotEquals", { value: tagToLabel(tags, p.uuidValue) });
|
|
14992
14998
|
}
|
|
14993
14999
|
if (value.dataType === "multiTags") {
|
|
14994
|
-
const valueStr = (p.
|
|
15000
|
+
const valueStr = (p.uuidValues ?? []).map((v) => tagToLabel(tags, v)).join(", ");
|
|
14995
15001
|
return translation("rNotEquals", { value: valueStr });
|
|
14996
15002
|
}
|
|
14997
|
-
return translation("rNotEquals", { value: String(p.
|
|
15003
|
+
return translation("rNotEquals", { value: String(p.stringValue ?? p.numberValue ?? "") });
|
|
14998
15004
|
case "contains":
|
|
14999
15005
|
if (value.dataType === "multiTags" || value.dataType === "singleTag") {
|
|
15000
|
-
const valueStr = value.dataType === "singleTag" ? tagToLabel(tags, p.
|
|
15006
|
+
const valueStr = value.dataType === "singleTag" ? tagToLabel(tags, p.uuidValue) : (p.uuidValues ?? []).map((v) => tagToLabel(tags, v)).join(", ");
|
|
15001
15007
|
return translation("rContains", { value: valueStr });
|
|
15002
15008
|
}
|
|
15003
|
-
return translation("rContains", { value: String(p.
|
|
15009
|
+
return translation("rContains", { value: String(p.stringValue ?? "") });
|
|
15004
15010
|
case "notContains":
|
|
15005
15011
|
if (value.dataType === "multiTags" || value.dataType === "singleTag") {
|
|
15006
|
-
const valueStr = value.dataType === "singleTag" ? tagToLabel(tags, p.
|
|
15012
|
+
const valueStr = value.dataType === "singleTag" ? tagToLabel(tags, p.uuidValue) : (p.uuidValues ?? []).map((v) => tagToLabel(tags, v)).join(", ");
|
|
15007
15013
|
return translation("rNotContains", { value: valueStr });
|
|
15008
15014
|
}
|
|
15009
|
-
return translation("rNotContains", { value: `"${String(p.
|
|
15015
|
+
return translation("rNotContains", { value: `"${String(p.stringValue ?? "")}"` });
|
|
15010
15016
|
case "startsWith":
|
|
15011
|
-
return translation("rStartsWith", { value: `"${String(p.
|
|
15017
|
+
return translation("rStartsWith", { value: `"${String(p.stringValue ?? "")}"` });
|
|
15012
15018
|
case "endsWith":
|
|
15013
|
-
return translation("rEndsWith", { value: `"${String(p.
|
|
15019
|
+
return translation("rEndsWith", { value: `"${String(p.stringValue ?? "")}"` });
|
|
15014
15020
|
case "greaterThan":
|
|
15015
15021
|
return translation("rGreaterThan", {
|
|
15016
|
-
value: value.dataType === "date" || value.dataType === "dateTime" ? formatDateParam(p.
|
|
15022
|
+
value: value.dataType === "date" || value.dataType === "dateTime" ? formatDateParam(p.dateValue, locale, dateFormat) ?? "-" : String(p.numberValue ?? "-")
|
|
15017
15023
|
});
|
|
15018
15024
|
case "greaterThanOrEqual":
|
|
15019
15025
|
return translation("rGreaterThanOrEqual", {
|
|
15020
|
-
value: value.dataType === "date" || value.dataType === "dateTime" ? formatDateParam(p.
|
|
15026
|
+
value: value.dataType === "date" || value.dataType === "dateTime" ? formatDateParam(p.dateValue, locale, dateFormat) ?? "-" : String(p.numberValue ?? "-")
|
|
15021
15027
|
});
|
|
15022
15028
|
case "lessThan":
|
|
15023
15029
|
return translation("rLessThan", {
|
|
15024
|
-
value: value.dataType === "date" || value.dataType === "dateTime" ? formatDateParam(p.
|
|
15030
|
+
value: value.dataType === "date" || value.dataType === "dateTime" ? formatDateParam(p.dateValue, locale, dateFormat) ?? "-" : String(p.numberValue ?? "-")
|
|
15025
15031
|
});
|
|
15026
15032
|
case "lessThanOrEqual":
|
|
15027
15033
|
return translation("rLessThanOrEqual", {
|
|
15028
|
-
value: value.dataType === "date" || value.dataType === "dateTime" ? formatDateParam(p.
|
|
15034
|
+
value: value.dataType === "date" || value.dataType === "dateTime" ? formatDateParam(p.dateValue, locale, dateFormat) ?? "-" : String(p.numberValue ?? "-")
|
|
15029
15035
|
});
|
|
15030
15036
|
case "between":
|
|
15031
15037
|
if (value.dataType === "date" || value.dataType === "dateTime") {
|
|
15032
15038
|
return translation("rBetween", {
|
|
15033
|
-
value1: formatDateParam(p.
|
|
15034
|
-
value2: formatDateParam(p.
|
|
15039
|
+
value1: formatDateParam(p.dateMin, locale, dateFormat) ?? "-",
|
|
15040
|
+
value2: formatDateParam(p.dateMax, locale, dateFormat) ?? "-"
|
|
15035
15041
|
});
|
|
15036
15042
|
}
|
|
15037
15043
|
return translation("rBetween", {
|
|
15038
|
-
value1: String(p.
|
|
15039
|
-
value2: String(p.
|
|
15044
|
+
value1: String(p.numberMin ?? "-"),
|
|
15045
|
+
value2: String(p.numberMax ?? "-")
|
|
15040
15046
|
});
|
|
15041
15047
|
case "notBetween":
|
|
15042
15048
|
if (value.dataType === "date" || value.dataType === "dateTime") {
|
|
15043
15049
|
return translation("rNotBetween", {
|
|
15044
|
-
value1: formatDateParam(p.
|
|
15045
|
-
value2: formatDateParam(p.
|
|
15050
|
+
value1: formatDateParam(p.dateMin, locale, dateFormat) ?? "-",
|
|
15051
|
+
value2: formatDateParam(p.dateMax, locale, dateFormat) ?? "-"
|
|
15046
15052
|
});
|
|
15047
15053
|
}
|
|
15048
15054
|
return translation("rNotBetween", {
|
|
15049
|
-
value1: String(p.
|
|
15050
|
-
value2: String(p.
|
|
15055
|
+
value1: String(p.numberMin ?? "-"),
|
|
15056
|
+
value2: String(p.numberMax ?? "-")
|
|
15051
15057
|
});
|
|
15052
15058
|
case "isTrue":
|
|
15053
15059
|
return translation("isTrue");
|
|
@@ -15456,85 +15462,22 @@ var TableSortButton = ({
|
|
|
15456
15462
|
};
|
|
15457
15463
|
|
|
15458
15464
|
// src/components/layout/table/TableFilterButton.tsx
|
|
15459
|
-
var import_lucide_react21 = require("lucide-react");
|
|
15460
|
-
var import_react88 = require("react");
|
|
15461
|
-
var import_react_table3 = require("@tanstack/react-table");
|
|
15462
|
-
|
|
15463
|
-
// src/components/user-interaction/data/FilterPopUp.tsx
|
|
15464
15465
|
var import_lucide_react20 = require("lucide-react");
|
|
15465
15466
|
var import_react87 = require("react");
|
|
15467
|
+
var import_react_table3 = require("@tanstack/react-table");
|
|
15466
15468
|
|
|
15467
|
-
// src/components/user-interaction/
|
|
15468
|
-
var
|
|
15469
|
-
var
|
|
15470
|
-
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
15471
|
-
var Checkbox = ({
|
|
15472
|
-
value: controlledValue,
|
|
15473
|
-
initialValue = false,
|
|
15474
|
-
indeterminate,
|
|
15475
|
-
required = false,
|
|
15476
|
-
invalid = false,
|
|
15477
|
-
disabled = false,
|
|
15478
|
-
readOnly = false,
|
|
15479
|
-
onValueChange,
|
|
15480
|
-
onEditComplete,
|
|
15481
|
-
size = "md",
|
|
15482
|
-
alwaysShowCheckIcon = false,
|
|
15483
|
-
...props
|
|
15484
|
-
}) => {
|
|
15485
|
-
const onEditCompleteStable = useEventCallbackStabilizer(onEditComplete);
|
|
15486
|
-
const onValueChangeStable = useEventCallbackStabilizer(onValueChange);
|
|
15487
|
-
const onChangeWrapper = (0, import_react72.useCallback)((value2) => {
|
|
15488
|
-
onValueChangeStable(value2);
|
|
15489
|
-
onEditCompleteStable(value2);
|
|
15490
|
-
}, [onValueChangeStable, onEditCompleteStable]);
|
|
15491
|
-
const [value, setValue] = useControlledState({
|
|
15492
|
-
value: controlledValue,
|
|
15493
|
-
onValueChange: onChangeWrapper,
|
|
15494
|
-
defaultValue: initialValue
|
|
15495
|
-
});
|
|
15496
|
-
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
15497
|
-
"div",
|
|
15498
|
-
{
|
|
15499
|
-
...props,
|
|
15500
|
-
onClick: (event) => {
|
|
15501
|
-
if (!disabled) {
|
|
15502
|
-
setValue((prev) => !prev);
|
|
15503
|
-
}
|
|
15504
|
-
props.onClick?.(event);
|
|
15505
|
-
},
|
|
15506
|
-
onKeyDown: (event) => {
|
|
15507
|
-
if (disabled) return;
|
|
15508
|
-
if (event.key === " " || event.key === "Enter") {
|
|
15509
|
-
event.preventDefault();
|
|
15510
|
-
setValue((prev) => !prev);
|
|
15511
|
-
}
|
|
15512
|
-
props.onKeyDown?.(event);
|
|
15513
|
-
},
|
|
15514
|
-
"data-checked": !indeterminate ? value : "indeterminate",
|
|
15515
|
-
"data-size": size ?? void 0,
|
|
15516
|
-
...PropsUtil.dataAttributes.interactionStates({ disabled, invalid, readOnly, required }),
|
|
15517
|
-
role: "checkbox",
|
|
15518
|
-
tabIndex: disabled ? -1 : 0,
|
|
15519
|
-
"aria-checked": indeterminate ? "mixed" : value,
|
|
15520
|
-
...PropsUtil.aria.interactionStates({ disabled, invalid, readOnly, required }, props),
|
|
15521
|
-
"data-name": props["data-name"] ?? "checkbox",
|
|
15522
|
-
children: [
|
|
15523
|
-
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Visibility, { isVisible: indeterminate, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react16.Minus, { "data-name": "checkbox-indicator", className: "checkbox-indicator", "aria-hidden": true }) }),
|
|
15524
|
-
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Visibility, { isVisible: !indeterminate && (alwaysShowCheckIcon || value), children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react16.Check, { "data-name": "checkbox-indicator", className: "checkbox-indicator", "aria-hidden": true }) })
|
|
15525
|
-
]
|
|
15526
|
-
}
|
|
15527
|
-
);
|
|
15528
|
-
};
|
|
15469
|
+
// src/components/user-interaction/data/FilterPopUp.tsx
|
|
15470
|
+
var import_lucide_react19 = require("lucide-react");
|
|
15471
|
+
var import_react86 = require("react");
|
|
15529
15472
|
|
|
15530
15473
|
// src/components/user-interaction/input/DateTimeInput.tsx
|
|
15531
|
-
var
|
|
15532
|
-
var
|
|
15474
|
+
var import_react77 = require("react");
|
|
15475
|
+
var import_lucide_react17 = require("lucide-react");
|
|
15533
15476
|
var import_clsx24 = __toESM(require("clsx"));
|
|
15534
15477
|
|
|
15535
15478
|
// src/components/user-interaction/date/TimePicker.tsx
|
|
15536
|
-
var
|
|
15537
|
-
var
|
|
15479
|
+
var import_react72 = require("react");
|
|
15480
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
15538
15481
|
var TimePicker = ({
|
|
15539
15482
|
value: controlledValue,
|
|
15540
15483
|
initialValue = /* @__PURE__ */ new Date(),
|
|
@@ -15552,11 +15495,11 @@ var TimePicker = ({
|
|
|
15552
15495
|
onValueChange,
|
|
15553
15496
|
defaultValue: initialValue
|
|
15554
15497
|
});
|
|
15555
|
-
const minuteRef = (0,
|
|
15556
|
-
const hourRef = (0,
|
|
15498
|
+
const minuteRef = (0, import_react72.useRef)(null);
|
|
15499
|
+
const hourRef = (0, import_react72.useRef)(null);
|
|
15557
15500
|
const isPM = value.getHours() > 11;
|
|
15558
15501
|
const hours = is24HourFormat ? range(24) : range(12);
|
|
15559
|
-
const minutes = (0,
|
|
15502
|
+
const minutes = (0, import_react72.useMemo)(() => {
|
|
15560
15503
|
const full = range(60);
|
|
15561
15504
|
switch (minuteIncrement) {
|
|
15562
15505
|
case "5min":
|
|
@@ -15569,7 +15512,7 @@ var TimePicker = ({
|
|
|
15569
15512
|
return full.filter((value2) => value2 % 30 === 0);
|
|
15570
15513
|
}
|
|
15571
15514
|
}, [minuteIncrement]);
|
|
15572
|
-
const seconds = (0,
|
|
15515
|
+
const seconds = (0, import_react72.useMemo)(() => {
|
|
15573
15516
|
const full = range(60);
|
|
15574
15517
|
switch (secondIncrement) {
|
|
15575
15518
|
case "1s":
|
|
@@ -15584,7 +15527,7 @@ var TimePicker = ({
|
|
|
15584
15527
|
return full.filter((value2) => value2 % 30 === 0);
|
|
15585
15528
|
}
|
|
15586
15529
|
}, [secondIncrement]);
|
|
15587
|
-
const milliseconds = (0,
|
|
15530
|
+
const milliseconds = (0, import_react72.useMemo)(() => {
|
|
15588
15531
|
const full = range(1e3);
|
|
15589
15532
|
switch (millisecondIncrement) {
|
|
15590
15533
|
case "1ms":
|
|
@@ -15605,17 +15548,17 @@ var TimePicker = ({
|
|
|
15605
15548
|
return full.filter((value2) => value2 % 500 === 0);
|
|
15606
15549
|
}
|
|
15607
15550
|
}, [millisecondIncrement]);
|
|
15608
|
-
const closestMinute = (0,
|
|
15609
|
-
const closestSecond = (0,
|
|
15610
|
-
const closestMillisecond = (0,
|
|
15551
|
+
const closestMinute = (0, import_react72.useMemo)(() => closestMatch(minutes, (item1, item2) => Math.abs(item1 - value.getMinutes()) < Math.abs(item2 - value.getMinutes())), [minutes, value]);
|
|
15552
|
+
const closestSecond = (0, import_react72.useMemo)(() => closestMatch(seconds, (item1, item2) => Math.abs(item1 - value.getSeconds()) < Math.abs(item2 - value.getSeconds())), [seconds, value]);
|
|
15553
|
+
const closestMillisecond = (0, import_react72.useMemo)(() => closestMatch(milliseconds, (item1, item2) => Math.abs(item1 - value.getMilliseconds()) < Math.abs(item2 - value.getMilliseconds())), [milliseconds, value]);
|
|
15611
15554
|
const hour = value.getHours();
|
|
15612
|
-
(0,
|
|
15555
|
+
(0, import_react72.useEffect)(() => {
|
|
15613
15556
|
minuteRef.current?.scrollIntoView({
|
|
15614
15557
|
behavior: "smooth",
|
|
15615
15558
|
block: "nearest"
|
|
15616
15559
|
});
|
|
15617
15560
|
}, [closestMinute]);
|
|
15618
|
-
(0,
|
|
15561
|
+
(0, import_react72.useEffect)(() => {
|
|
15619
15562
|
hourRef.current?.scrollIntoView({
|
|
15620
15563
|
behavior: "smooth",
|
|
15621
15564
|
block: "nearest"
|
|
@@ -15627,10 +15570,10 @@ var TimePicker = ({
|
|
|
15627
15570
|
setValue(newDate);
|
|
15628
15571
|
onEditComplete?.(newDate);
|
|
15629
15572
|
};
|
|
15630
|
-
return /* @__PURE__ */ (0,
|
|
15631
|
-
/* @__PURE__ */ (0,
|
|
15573
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { "data-name": "time-picker-container", className, children: [
|
|
15574
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { "data-name": "time-picker-value-column", children: hours.map((hour2) => {
|
|
15632
15575
|
const isSelected = hour2 === value.getHours() - (!is24HourFormat && isPM ? 12 : 0);
|
|
15633
|
-
return /* @__PURE__ */ (0,
|
|
15576
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
15634
15577
|
Button,
|
|
15635
15578
|
{
|
|
15636
15579
|
size: "sm",
|
|
@@ -15643,9 +15586,9 @@ var TimePicker = ({
|
|
|
15643
15586
|
hour2
|
|
15644
15587
|
);
|
|
15645
15588
|
}) }),
|
|
15646
|
-
/* @__PURE__ */ (0,
|
|
15589
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { "data-name": "time-picker-value-column", children: minutes.map((minute) => {
|
|
15647
15590
|
const isSelected = minute === closestMinute;
|
|
15648
|
-
return /* @__PURE__ */ (0,
|
|
15591
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
15649
15592
|
Button,
|
|
15650
15593
|
{
|
|
15651
15594
|
size: "sm",
|
|
@@ -15658,9 +15601,9 @@ var TimePicker = ({
|
|
|
15658
15601
|
minute + minuteIncrement
|
|
15659
15602
|
);
|
|
15660
15603
|
}) }),
|
|
15661
|
-
/* @__PURE__ */ (0,
|
|
15604
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Visibility, { isVisible: precision === "second" || precision === "millisecond", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { "data-name": "time-picker-value-column", children: seconds.map((second) => {
|
|
15662
15605
|
const isSelected = second === closestSecond;
|
|
15663
|
-
return /* @__PURE__ */ (0,
|
|
15606
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
15664
15607
|
Button,
|
|
15665
15608
|
{
|
|
15666
15609
|
size: "sm",
|
|
@@ -15673,9 +15616,9 @@ var TimePicker = ({
|
|
|
15673
15616
|
second + secondIncrement
|
|
15674
15617
|
);
|
|
15675
15618
|
}) }) }),
|
|
15676
|
-
/* @__PURE__ */ (0,
|
|
15619
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Visibility, { isVisible: precision === "millisecond", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { "data-name": "time-picker-value-column", children: milliseconds.map((millisecond) => {
|
|
15677
15620
|
const isSelected = millisecond === closestMillisecond;
|
|
15678
|
-
return /* @__PURE__ */ (0,
|
|
15621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
15679
15622
|
Button,
|
|
15680
15623
|
{
|
|
15681
15624
|
size: "sm",
|
|
@@ -15688,8 +15631,8 @@ var TimePicker = ({
|
|
|
15688
15631
|
millisecond + millisecondIncrement
|
|
15689
15632
|
);
|
|
15690
15633
|
}) }) }),
|
|
15691
|
-
!is24HourFormat && /* @__PURE__ */ (0,
|
|
15692
|
-
/* @__PURE__ */ (0,
|
|
15634
|
+
!is24HourFormat && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { "data-name": "time-picker-value-column", children: [
|
|
15635
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
15693
15636
|
Button,
|
|
15694
15637
|
{
|
|
15695
15638
|
size: "sm",
|
|
@@ -15699,7 +15642,7 @@ var TimePicker = ({
|
|
|
15699
15642
|
children: "AM"
|
|
15700
15643
|
}
|
|
15701
15644
|
),
|
|
15702
|
-
/* @__PURE__ */ (0,
|
|
15645
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
15703
15646
|
Button,
|
|
15704
15647
|
{
|
|
15705
15648
|
size: "sm",
|
|
@@ -15714,13 +15657,13 @@ var TimePicker = ({
|
|
|
15714
15657
|
};
|
|
15715
15658
|
|
|
15716
15659
|
// src/components/user-interaction/date/DatePicker.tsx
|
|
15717
|
-
var
|
|
15718
|
-
var
|
|
15660
|
+
var import_react75 = require("react");
|
|
15661
|
+
var import_lucide_react16 = require("lucide-react");
|
|
15719
15662
|
var import_clsx23 = __toESM(require("clsx"));
|
|
15720
15663
|
|
|
15721
15664
|
// src/components/user-interaction/date/DayPicker.tsx
|
|
15722
|
-
var
|
|
15723
|
-
var
|
|
15665
|
+
var import_react73 = require("react");
|
|
15666
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
15724
15667
|
var DayPicker = ({
|
|
15725
15668
|
displayedMonth: controlledDisplayedMonth,
|
|
15726
15669
|
initialDisplayedMonth,
|
|
@@ -15748,33 +15691,33 @@ var DayPicker = ({
|
|
|
15748
15691
|
});
|
|
15749
15692
|
const month = displayedMonth.getMonth();
|
|
15750
15693
|
const weeks = DateUtils.weeksForCalenderMonth(displayedMonth, weekStart);
|
|
15751
|
-
const selectedButtonRef = (0,
|
|
15752
|
-
const isValueInDisplayedWeeks = (0,
|
|
15694
|
+
const selectedButtonRef = (0, import_react73.useRef)(null);
|
|
15695
|
+
const isValueInDisplayedWeeks = (0, import_react73.useMemo)(
|
|
15753
15696
|
() => !!value && weeks.some((week) => week.some((d) => DateUtils.equalDate(value, d))),
|
|
15754
15697
|
[value, weeks]
|
|
15755
15698
|
);
|
|
15756
|
-
const firstDayOfMonth = (0,
|
|
15699
|
+
const firstDayOfMonth = (0, import_react73.useCallback)(
|
|
15757
15700
|
(date) => new Date(date.getFullYear(), date.getMonth(), 1),
|
|
15758
15701
|
[]
|
|
15759
15702
|
);
|
|
15760
15703
|
const focusTargetDate = value && isValueInDisplayedWeeks ? value : firstDayOfMonth(displayedMonth);
|
|
15761
|
-
(0,
|
|
15704
|
+
(0, import_react73.useEffect)(() => {
|
|
15762
15705
|
selectedButtonRef.current?.focus();
|
|
15763
15706
|
}, [focusTargetDate]);
|
|
15764
|
-
const end = (0,
|
|
15707
|
+
const end = (0, import_react73.useMemo)(() => {
|
|
15765
15708
|
if (!providedEnd) return;
|
|
15766
15709
|
return new Date(providedEnd.getFullYear(), providedEnd.getMonth(), providedEnd.getDate());
|
|
15767
15710
|
}, [providedEnd]);
|
|
15768
|
-
const start = (0,
|
|
15711
|
+
const start = (0, import_react73.useMemo)(() => {
|
|
15769
15712
|
if (!providedStart) return;
|
|
15770
15713
|
return new Date(providedStart.getFullYear(), providedStart.getMonth(), providedStart.getDate());
|
|
15771
15714
|
}, [providedStart]);
|
|
15772
|
-
const clampToRange = (0,
|
|
15715
|
+
const clampToRange = (0, import_react73.useCallback)((date) => {
|
|
15773
15716
|
if (start && date < start) return start;
|
|
15774
15717
|
if (end && date > end) return end;
|
|
15775
15718
|
return date;
|
|
15776
15719
|
}, [start, end]);
|
|
15777
|
-
const navigateTo = (0,
|
|
15720
|
+
const navigateTo = (0, import_react73.useCallback)((candidate) => {
|
|
15778
15721
|
const clamped = clampToRange(candidate);
|
|
15779
15722
|
if (!DateUtils.between(clamped, start, end)) return;
|
|
15780
15723
|
setValue(clamped);
|
|
@@ -15783,7 +15726,7 @@ var DayPicker = ({
|
|
|
15783
15726
|
setDisplayedMonth(firstDayOfMonth(clamped));
|
|
15784
15727
|
}
|
|
15785
15728
|
}, [clampToRange, start, end, setValue, onEditComplete, displayedMonth, setDisplayedMonth, firstDayOfMonth]);
|
|
15786
|
-
const onKeyDown = (0,
|
|
15729
|
+
const onKeyDown = (0, import_react73.useCallback)(
|
|
15787
15730
|
(event) => {
|
|
15788
15731
|
PropsUtil.aria.navigate({
|
|
15789
15732
|
left: () => focusTargetDate && navigateTo(DateUtils.subtractDuration(focusTargetDate, { days: 1 })),
|
|
@@ -15794,15 +15737,15 @@ var DayPicker = ({
|
|
|
15794
15737
|
},
|
|
15795
15738
|
[focusTargetDate, navigateTo]
|
|
15796
15739
|
);
|
|
15797
|
-
return /* @__PURE__ */ (0,
|
|
15798
|
-
/* @__PURE__ */ (0,
|
|
15799
|
-
weeks.map((week, index) => /* @__PURE__ */ (0,
|
|
15740
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { "data-name": "day-picker-container", className, children: [
|
|
15741
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { "data-name": "day-picker-header-row", children: weeks[0].map((weekDay, index) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { "data-name": "day-picker-header-item", children: new Intl.DateTimeFormat(locale, { weekday: "long" }).format(weekDay).substring(0, 2) }, index)) }),
|
|
15742
|
+
weeks.map((week, index) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { "data-name": "day-picker-body-row", children: week.map((date) => {
|
|
15800
15743
|
const isSelected = !!value && DateUtils.equalDate(value, date);
|
|
15801
15744
|
const isFocused = !!focusTargetDate && DateUtils.equalDate(focusTargetDate, date);
|
|
15802
15745
|
const isToday = DateUtils.equalDate(/* @__PURE__ */ new Date(), date);
|
|
15803
15746
|
const isSameMonth = date.getMonth() === month;
|
|
15804
15747
|
const isDayValid = DateUtils.between(date, start, end);
|
|
15805
|
-
return /* @__PURE__ */ (0,
|
|
15748
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
15806
15749
|
"div",
|
|
15807
15750
|
{
|
|
15808
15751
|
ref: isFocused ? selectedButtonRef : void 0,
|
|
@@ -15840,10 +15783,10 @@ var DayPicker = ({
|
|
|
15840
15783
|
};
|
|
15841
15784
|
|
|
15842
15785
|
// src/components/user-interaction/date/YearMonthPicker.tsx
|
|
15843
|
-
var
|
|
15786
|
+
var import_react74 = require("react");
|
|
15844
15787
|
var import_clsx22 = __toESM(require("clsx"));
|
|
15845
|
-
var
|
|
15846
|
-
var YearRow = (0,
|
|
15788
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
15789
|
+
var YearRow = (0, import_react74.memo)(function YearRow2({
|
|
15847
15790
|
year,
|
|
15848
15791
|
selectedMonthIndex,
|
|
15849
15792
|
minTimestamp,
|
|
@@ -15851,31 +15794,31 @@ var YearRow = (0, import_react75.memo)(function YearRow2({
|
|
|
15851
15794
|
monthNames,
|
|
15852
15795
|
onSelect
|
|
15853
15796
|
}) {
|
|
15854
|
-
const ref = (0,
|
|
15797
|
+
const ref = (0, import_react74.useRef)(null);
|
|
15855
15798
|
const isSelectedYear = selectedMonthIndex !== void 0;
|
|
15856
|
-
const [isExpanded, setIsExpanded] = (0,
|
|
15857
|
-
(0,
|
|
15799
|
+
const [isExpanded, setIsExpanded] = (0, import_react74.useState)(false);
|
|
15800
|
+
(0, import_react74.useEffect)(() => {
|
|
15858
15801
|
if (isSelectedYear) {
|
|
15859
15802
|
ref.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
15860
15803
|
}
|
|
15861
15804
|
}, [isSelectedYear]);
|
|
15862
|
-
const monthGrid = (0,
|
|
15863
|
-
return /* @__PURE__ */ (0,
|
|
15805
|
+
const monthGrid = (0, import_react74.useMemo)(() => equalSizeGroups([...DateUtils.monthsList], 3), []);
|
|
15806
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
15864
15807
|
ExpandableRoot,
|
|
15865
15808
|
{
|
|
15866
15809
|
ref: isSelectedYear ? ref : void 0,
|
|
15867
15810
|
isExpanded,
|
|
15868
15811
|
onExpandedChange: setIsExpanded,
|
|
15869
15812
|
children: [
|
|
15870
|
-
/* @__PURE__ */ (0,
|
|
15871
|
-
/* @__PURE__ */ (0,
|
|
15813
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ExpandableHeader, { className: (0, import_clsx22.default)("px-2", { "text-primary font-bold": isSelectedYear }), children: year }),
|
|
15814
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ExpandableContent, { className: "gap-y-1 px-2 expandable-content-h-43", children: isExpanded && monthGrid.map((group, groupIdx) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex-row-1", children: group.map((month) => {
|
|
15872
15815
|
const monthIndex = DateUtils.monthsList.indexOf(month);
|
|
15873
15816
|
const currentTimestamp = new Date(year, monthIndex).getTime();
|
|
15874
15817
|
const isAfterStart = minTimestamp === void 0 || currentTimestamp >= minTimestamp;
|
|
15875
15818
|
const isBeforeEnd = maxTimestamp === void 0 || currentTimestamp <= maxTimestamp;
|
|
15876
15819
|
const isValid = isAfterStart && isBeforeEnd;
|
|
15877
15820
|
const isSelectedMonth = monthIndex === selectedMonthIndex;
|
|
15878
|
-
return /* @__PURE__ */ (0,
|
|
15821
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
15879
15822
|
Button,
|
|
15880
15823
|
{
|
|
15881
15824
|
disabled: !isValid,
|
|
@@ -15914,27 +15857,27 @@ var YearMonthPicker = ({
|
|
|
15914
15857
|
defaultValue: initialValue
|
|
15915
15858
|
});
|
|
15916
15859
|
const onEditCompleteStable = useEventCallbackStabilizer(onEditComplete);
|
|
15917
|
-
const monthNames = (0,
|
|
15860
|
+
const monthNames = (0, import_react74.useMemo)(() => {
|
|
15918
15861
|
const formatter = new Intl.DateTimeFormat(locale, { month: "short" });
|
|
15919
15862
|
return Array.from({ length: 12 }, (_, i) => formatter.format(new Date(2e3, i, 1)));
|
|
15920
15863
|
}, [locale]);
|
|
15921
|
-
const years = (0,
|
|
15864
|
+
const years = (0, import_react74.useMemo)(
|
|
15922
15865
|
() => range([start.getFullYear(), end.getFullYear()], { exclusiveEnd: false }),
|
|
15923
15866
|
[start, end]
|
|
15924
15867
|
);
|
|
15925
|
-
const minTimestamp = (0,
|
|
15868
|
+
const minTimestamp = (0, import_react74.useMemo)(() => {
|
|
15926
15869
|
if (!start) return;
|
|
15927
15870
|
return new Date(start.getFullYear(), start.getMonth(), 1).getTime();
|
|
15928
15871
|
}, [start]);
|
|
15929
|
-
const maxTimestamp = (0,
|
|
15872
|
+
const maxTimestamp = (0, import_react74.useMemo)(() => {
|
|
15930
15873
|
if (!end) return;
|
|
15931
15874
|
return new Date(end.getFullYear(), end.getMonth() + 1, 0).getTime();
|
|
15932
15875
|
}, [end]);
|
|
15933
|
-
const handleSelect = (0,
|
|
15876
|
+
const handleSelect = (0, import_react74.useCallback)((newDate) => {
|
|
15934
15877
|
setValue(newDate);
|
|
15935
15878
|
onEditCompleteStable(newDate);
|
|
15936
15879
|
}, [onEditCompleteStable, setValue]);
|
|
15937
|
-
return /* @__PURE__ */ (0,
|
|
15880
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
15938
15881
|
InfiniteScroll,
|
|
15939
15882
|
{
|
|
15940
15883
|
itemCount: years.length,
|
|
@@ -15944,7 +15887,7 @@ var YearMonthPicker = ({
|
|
|
15944
15887
|
const year = years[index];
|
|
15945
15888
|
const isSelectedYear = value.getFullYear() === year;
|
|
15946
15889
|
const selectedMonthIndex = isSelectedYear ? value.getMonth() : void 0;
|
|
15947
|
-
return /* @__PURE__ */ (0,
|
|
15890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
15948
15891
|
YearRow,
|
|
15949
15892
|
{
|
|
15950
15893
|
year,
|
|
@@ -15962,7 +15905,7 @@ var YearMonthPicker = ({
|
|
|
15962
15905
|
};
|
|
15963
15906
|
|
|
15964
15907
|
// src/components/user-interaction/date/DatePicker.tsx
|
|
15965
|
-
var
|
|
15908
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
15966
15909
|
var DatePicker = ({
|
|
15967
15910
|
value: controlledValue,
|
|
15968
15911
|
initialValue = /* @__PURE__ */ new Date(),
|
|
@@ -15983,11 +15926,11 @@ var DatePicker = ({
|
|
|
15983
15926
|
onValueChange,
|
|
15984
15927
|
defaultValue: initialValue
|
|
15985
15928
|
});
|
|
15986
|
-
const [displayedMonth, setDisplayedMonth] = (0,
|
|
15987
|
-
const [displayMode, setDisplayMode] = (0,
|
|
15988
|
-
return /* @__PURE__ */ (0,
|
|
15989
|
-
/* @__PURE__ */ (0,
|
|
15990
|
-
/* @__PURE__ */ (0,
|
|
15929
|
+
const [displayedMonth, setDisplayedMonth] = (0, import_react75.useState)(new Date(value.getFullYear(), value.getMonth(), 1));
|
|
15930
|
+
const [displayMode, setDisplayMode] = (0, import_react75.useState)(initialDisplay);
|
|
15931
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: (0, import_clsx23.default)("flex-col-3", className), children: [
|
|
15932
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex-row-2 items-center justify-between", children: [
|
|
15933
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
15991
15934
|
Button,
|
|
15992
15935
|
{
|
|
15993
15936
|
size: "sm",
|
|
@@ -15998,12 +15941,12 @@ var DatePicker = ({
|
|
|
15998
15941
|
onClick: () => setDisplayMode(displayMode === "day" ? "yearMonth" : "day"),
|
|
15999
15942
|
children: [
|
|
16000
15943
|
`${new Intl.DateTimeFormat(LocalizationUtil.localToLanguage(locale), { month: "long" }).format(displayedMonth)} ${displayedMonth.getFullYear()}`,
|
|
16001
|
-
/* @__PURE__ */ (0,
|
|
15944
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react16.ChevronDown, { size: 16 })
|
|
16002
15945
|
]
|
|
16003
15946
|
}
|
|
16004
15947
|
),
|
|
16005
|
-
displayMode === "day" && /* @__PURE__ */ (0,
|
|
16006
|
-
/* @__PURE__ */ (0,
|
|
15948
|
+
displayMode === "day" && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex-row-2 justify-end", children: [
|
|
15949
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
16007
15950
|
IconButton,
|
|
16008
15951
|
{
|
|
16009
15952
|
tooltip: translation("time.today"),
|
|
@@ -16015,10 +15958,10 @@ var DatePicker = ({
|
|
|
16015
15958
|
setValue(newDate);
|
|
16016
15959
|
setDisplayedMonth(newDate);
|
|
16017
15960
|
},
|
|
16018
|
-
children: /* @__PURE__ */ (0,
|
|
15961
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react16.Calendar, { className: "size-5" })
|
|
16019
15962
|
}
|
|
16020
15963
|
),
|
|
16021
|
-
/* @__PURE__ */ (0,
|
|
15964
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
16022
15965
|
IconButton,
|
|
16023
15966
|
{
|
|
16024
15967
|
tooltip: translation("time.previousMonth"),
|
|
@@ -16027,10 +15970,10 @@ var DatePicker = ({
|
|
|
16027
15970
|
onClick: () => {
|
|
16028
15971
|
setDisplayedMonth(DateUtils.subtractDuration(displayedMonth, { months: 1 }));
|
|
16029
15972
|
},
|
|
16030
|
-
children: /* @__PURE__ */ (0,
|
|
15973
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react16.ArrowUp, { size: 20 })
|
|
16031
15974
|
}
|
|
16032
15975
|
),
|
|
16033
|
-
/* @__PURE__ */ (0,
|
|
15976
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
16034
15977
|
IconButton,
|
|
16035
15978
|
{
|
|
16036
15979
|
tooltip: translation("time.nextMonth"),
|
|
@@ -16039,12 +15982,12 @@ var DatePicker = ({
|
|
|
16039
15982
|
onClick: () => {
|
|
16040
15983
|
setDisplayedMonth(DateUtils.addDuration(displayedMonth, { months: 1 }));
|
|
16041
15984
|
},
|
|
16042
|
-
children: /* @__PURE__ */ (0,
|
|
15985
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react16.ArrowDown, { size: 20 })
|
|
16043
15986
|
}
|
|
16044
15987
|
)
|
|
16045
15988
|
] })
|
|
16046
15989
|
] }),
|
|
16047
|
-
displayMode === "yearMonth" ? /* @__PURE__ */ (0,
|
|
15990
|
+
displayMode === "yearMonth" ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
16048
15991
|
YearMonthPicker,
|
|
16049
15992
|
{
|
|
16050
15993
|
...yearMonthPickerProps,
|
|
@@ -16061,7 +16004,7 @@ var DatePicker = ({
|
|
|
16061
16004
|
},
|
|
16062
16005
|
className: "h-60 max-h-60"
|
|
16063
16006
|
}
|
|
16064
|
-
) : /* @__PURE__ */ (0,
|
|
16007
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
16065
16008
|
DayPicker,
|
|
16066
16009
|
{
|
|
16067
16010
|
...dayPickerProps,
|
|
@@ -16080,7 +16023,7 @@ var DatePicker = ({
|
|
|
16080
16023
|
};
|
|
16081
16024
|
|
|
16082
16025
|
// src/components/user-interaction/date/DateTimePicker.tsx
|
|
16083
|
-
var
|
|
16026
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
16084
16027
|
var DateTimePicker = ({
|
|
16085
16028
|
value: controlledValue,
|
|
16086
16029
|
initialValue = /* @__PURE__ */ new Date(),
|
|
@@ -16108,7 +16051,7 @@ var DateTimePicker = ({
|
|
|
16108
16051
|
let dateDisplay;
|
|
16109
16052
|
let timeDisplay;
|
|
16110
16053
|
if (useDate) {
|
|
16111
|
-
dateDisplay = /* @__PURE__ */ (0,
|
|
16054
|
+
dateDisplay = /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
16112
16055
|
DatePicker,
|
|
16113
16056
|
{
|
|
16114
16057
|
...datePickerProps,
|
|
@@ -16124,7 +16067,7 @@ var DateTimePicker = ({
|
|
|
16124
16067
|
);
|
|
16125
16068
|
}
|
|
16126
16069
|
if (useTime) {
|
|
16127
|
-
timeDisplay = /* @__PURE__ */ (0,
|
|
16070
|
+
timeDisplay = /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
16128
16071
|
TimePicker,
|
|
16129
16072
|
{
|
|
16130
16073
|
...timePickerProps,
|
|
@@ -16139,15 +16082,15 @@ var DateTimePicker = ({
|
|
|
16139
16082
|
}
|
|
16140
16083
|
);
|
|
16141
16084
|
}
|
|
16142
|
-
return /* @__PURE__ */ (0,
|
|
16085
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex-row-2 min-h-71 max-h-71", children: [
|
|
16143
16086
|
dateDisplay,
|
|
16144
16087
|
timeDisplay
|
|
16145
16088
|
] });
|
|
16146
16089
|
};
|
|
16147
16090
|
|
|
16148
16091
|
// src/components/user-interaction/date/DateTimePickerDialog.tsx
|
|
16149
|
-
var
|
|
16150
|
-
var
|
|
16092
|
+
var import_react76 = require("react");
|
|
16093
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
16151
16094
|
var DateTimePickerDialog = ({
|
|
16152
16095
|
initialValue = null,
|
|
16153
16096
|
value,
|
|
@@ -16174,12 +16117,12 @@ var DateTimePickerDialog = ({
|
|
|
16174
16117
|
onValueChange,
|
|
16175
16118
|
defaultValue: initialValue
|
|
16176
16119
|
});
|
|
16177
|
-
const [pickerState, setPickerState] = (0,
|
|
16178
|
-
(0,
|
|
16120
|
+
const [pickerState, setPickerState] = (0, import_react76.useState)(state ?? /* @__PURE__ */ new Date());
|
|
16121
|
+
(0, import_react76.useEffect)(() => {
|
|
16179
16122
|
setPickerState(state ?? /* @__PURE__ */ new Date());
|
|
16180
16123
|
}, [state]);
|
|
16181
|
-
return /* @__PURE__ */ (0,
|
|
16182
|
-
/* @__PURE__ */ (0,
|
|
16124
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
16125
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "flex-row-2 justify-center w-full py-1", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
16183
16126
|
"span",
|
|
16184
16127
|
{
|
|
16185
16128
|
id: labelId,
|
|
@@ -16187,7 +16130,7 @@ var DateTimePickerDialog = ({
|
|
|
16187
16130
|
children: label ?? translation("sDateTimeSelect", { datetimeMode: mode })
|
|
16188
16131
|
}
|
|
16189
16132
|
) }),
|
|
16190
|
-
/* @__PURE__ */ (0,
|
|
16133
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
16191
16134
|
DateTimePicker,
|
|
16192
16135
|
{
|
|
16193
16136
|
...pickerProps,
|
|
@@ -16206,8 +16149,8 @@ var DateTimePickerDialog = ({
|
|
|
16206
16149
|
precision
|
|
16207
16150
|
}
|
|
16208
16151
|
),
|
|
16209
|
-
/* @__PURE__ */ (0,
|
|
16210
|
-
/* @__PURE__ */ (0,
|
|
16152
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex-row-2 justify-end", children: [
|
|
16153
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Visibility, { isVisible: allowRemove && !!state, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
16211
16154
|
Button,
|
|
16212
16155
|
{
|
|
16213
16156
|
size: "md",
|
|
@@ -16220,7 +16163,7 @@ var DateTimePickerDialog = ({
|
|
|
16220
16163
|
children: translation("clear")
|
|
16221
16164
|
}
|
|
16222
16165
|
) }),
|
|
16223
|
-
/* @__PURE__ */ (0,
|
|
16166
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Visibility, { isVisible: !state, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
16224
16167
|
Button,
|
|
16225
16168
|
{
|
|
16226
16169
|
size: "md",
|
|
@@ -16233,7 +16176,7 @@ var DateTimePickerDialog = ({
|
|
|
16233
16176
|
children: translation("cancel")
|
|
16234
16177
|
}
|
|
16235
16178
|
) }),
|
|
16236
|
-
/* @__PURE__ */ (0,
|
|
16179
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
16237
16180
|
Button,
|
|
16238
16181
|
{
|
|
16239
16182
|
size: "md",
|
|
@@ -16249,8 +16192,8 @@ var DateTimePickerDialog = ({
|
|
|
16249
16192
|
};
|
|
16250
16193
|
|
|
16251
16194
|
// src/components/user-interaction/input/DateTimeInput.tsx
|
|
16252
|
-
var
|
|
16253
|
-
var DateTimeInput = (0,
|
|
16195
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
16196
|
+
var DateTimeInput = (0, import_react77.forwardRef)(function DateTimeInput2({
|
|
16254
16197
|
id: inputId,
|
|
16255
16198
|
value,
|
|
16256
16199
|
initialValue = null,
|
|
@@ -16279,37 +16222,35 @@ var DateTimeInput = (0, import_react78.forwardRef)(function DateTimeInput2({
|
|
|
16279
16222
|
...props
|
|
16280
16223
|
}, forwardedRef) {
|
|
16281
16224
|
const translation = useHightideTranslation();
|
|
16282
|
-
const [isOpen, setIsOpen] = (0,
|
|
16225
|
+
const [isOpen, setIsOpen] = (0, import_react77.useState)(false);
|
|
16283
16226
|
const [state, setState] = useControlledState({
|
|
16284
16227
|
value,
|
|
16285
16228
|
onValueChange,
|
|
16286
16229
|
defaultValue: initialValue
|
|
16287
16230
|
});
|
|
16288
|
-
const [dialogValue, setDialogValue] = (0,
|
|
16289
|
-
const [stringInputState, setStringInputState] = (0,
|
|
16231
|
+
const [dialogValue, setDialogValue] = (0, import_react77.useState)(state);
|
|
16232
|
+
const [stringInputState, setStringInputState] = (0, import_react77.useState)({
|
|
16290
16233
|
state: state ? DateUtils.toInputString(state, mode, precision) : "",
|
|
16291
|
-
date: void 0
|
|
16234
|
+
date: void 0,
|
|
16235
|
+
mode
|
|
16292
16236
|
});
|
|
16293
|
-
(0,
|
|
16294
|
-
|
|
16295
|
-
|
|
16296
|
-
|
|
16297
|
-
|
|
16298
|
-
});
|
|
16299
|
-
}, [mode, state]);
|
|
16300
|
-
const changeOpenWrapper = (0, import_react78.useCallback)((isOpen2) => {
|
|
16237
|
+
const safeInputString = (0, import_react77.useMemo)(() => {
|
|
16238
|
+
if (!state) return "";
|
|
16239
|
+
return stringInputState.mode !== mode ? DateUtils.toInputString(state, mode, precision) : stringInputState.state;
|
|
16240
|
+
}, [stringInputState.mode, stringInputState.state, mode, state, precision]);
|
|
16241
|
+
const changeOpenWrapper = (0, import_react77.useCallback)((isOpen2) => {
|
|
16301
16242
|
onDialogOpeningChange?.(isOpen2);
|
|
16302
16243
|
setIsOpen(isOpen2);
|
|
16303
16244
|
}, [onDialogOpeningChange]);
|
|
16304
|
-
const generatedId = (0,
|
|
16305
|
-
const ids = (0,
|
|
16245
|
+
const generatedId = (0, import_react77.useId)();
|
|
16246
|
+
const ids = (0, import_react77.useMemo)(() => ({
|
|
16306
16247
|
input: inputId ?? `date-time-input-${generatedId}`,
|
|
16307
16248
|
popup: `date-time-input-popup-${generatedId}`,
|
|
16308
16249
|
label: `date-time-input-label-${generatedId}`
|
|
16309
16250
|
}), [generatedId, inputId]);
|
|
16310
|
-
const innerRef = (0,
|
|
16311
|
-
(0,
|
|
16312
|
-
(0,
|
|
16251
|
+
const innerRef = (0, import_react77.useRef)(null);
|
|
16252
|
+
(0, import_react77.useImperativeHandle)(forwardedRef, () => innerRef.current);
|
|
16253
|
+
(0, import_react77.useEffect)(() => {
|
|
16313
16254
|
if (readOnly || disabled) {
|
|
16314
16255
|
changeOpenWrapper(false);
|
|
16315
16256
|
}
|
|
@@ -16318,21 +16259,26 @@ var DateTimeInput = (0, import_react78.forwardRef)(function DateTimeInput2({
|
|
|
16318
16259
|
restartTimer,
|
|
16319
16260
|
clearTimer
|
|
16320
16261
|
} = useDelay({ delay: 2e3, disabled: disabled || readOnly });
|
|
16321
|
-
return /* @__PURE__ */ (0,
|
|
16322
|
-
/* @__PURE__ */ (0,
|
|
16323
|
-
/* @__PURE__ */ (0,
|
|
16262
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
16263
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { ...containerProps, className: (0, import_clsx24.default)("relative w-full", containerProps?.className), children: [
|
|
16264
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
16324
16265
|
"input",
|
|
16325
16266
|
{
|
|
16326
16267
|
...props,
|
|
16327
16268
|
ref: innerRef,
|
|
16328
16269
|
id: ids.input,
|
|
16329
|
-
value:
|
|
16270
|
+
value: safeInputString,
|
|
16330
16271
|
onClick: (event) => {
|
|
16331
16272
|
event.preventDefault();
|
|
16332
16273
|
},
|
|
16333
16274
|
onFocus: (event) => {
|
|
16334
16275
|
event.preventDefault();
|
|
16335
16276
|
},
|
|
16277
|
+
onKeyDown: (event) => {
|
|
16278
|
+
if (event.key === " ") {
|
|
16279
|
+
event.preventDefault();
|
|
16280
|
+
}
|
|
16281
|
+
},
|
|
16336
16282
|
onChange: (event) => {
|
|
16337
16283
|
const date = new Date(event.target.value ?? "");
|
|
16338
16284
|
const isValid = !isNaN(date.getTime());
|
|
@@ -16347,7 +16293,8 @@ var DateTimeInput = (0, import_react78.forwardRef)(function DateTimeInput2({
|
|
|
16347
16293
|
}
|
|
16348
16294
|
setStringInputState({
|
|
16349
16295
|
state: event.target.value,
|
|
16350
|
-
date: isValid ? date : void 0
|
|
16296
|
+
date: isValid ? date : void 0,
|
|
16297
|
+
mode
|
|
16351
16298
|
});
|
|
16352
16299
|
},
|
|
16353
16300
|
onBlur: (event) => {
|
|
@@ -16362,7 +16309,8 @@ var DateTimeInput = (0, import_react78.forwardRef)(function DateTimeInput2({
|
|
|
16362
16309
|
}
|
|
16363
16310
|
setStringInputState({
|
|
16364
16311
|
state: state ? DateUtils.toInputString(state, mode) : "",
|
|
16365
|
-
date: void 0
|
|
16312
|
+
date: void 0,
|
|
16313
|
+
mode
|
|
16366
16314
|
});
|
|
16367
16315
|
}
|
|
16368
16316
|
},
|
|
@@ -16373,9 +16321,9 @@ var DateTimeInput = (0, import_react78.forwardRef)(function DateTimeInput2({
|
|
|
16373
16321
|
...PropsUtil.aria.interactionStates({ disabled, readOnly, invalid, required }, props)
|
|
16374
16322
|
}
|
|
16375
16323
|
),
|
|
16376
|
-
/* @__PURE__ */ (0,
|
|
16324
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "absolute right-1 top-1/2 -translate-y-1/2 flex-row-0", children: [
|
|
16377
16325
|
actions,
|
|
16378
|
-
/* @__PURE__ */ (0,
|
|
16326
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Visibility, { isVisible: !readOnly, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
16379
16327
|
IconButton,
|
|
16380
16328
|
{
|
|
16381
16329
|
tooltip: translation("sDateTimeSelect", { datetimeMode: mode }),
|
|
@@ -16389,12 +16337,12 @@ var DateTimeInput = (0, import_react78.forwardRef)(function DateTimeInput2({
|
|
|
16389
16337
|
"aria-haspopup": "dialog",
|
|
16390
16338
|
"aria-expanded": isOpen,
|
|
16391
16339
|
"aria-controls": isOpen ? ids.popup : void 0,
|
|
16392
|
-
children: /* @__PURE__ */ (0,
|
|
16340
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react17.CalendarIcon, { className: "size-5" })
|
|
16393
16341
|
}
|
|
16394
16342
|
) })
|
|
16395
16343
|
] })
|
|
16396
16344
|
] }),
|
|
16397
|
-
/* @__PURE__ */ (0,
|
|
16345
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
16398
16346
|
PopUp,
|
|
16399
16347
|
{
|
|
16400
16348
|
id: ids.popup,
|
|
@@ -16413,7 +16361,7 @@ var DateTimeInput = (0, import_react78.forwardRef)(function DateTimeInput2({
|
|
|
16413
16361
|
role: "dialog",
|
|
16414
16362
|
"aria-labelledby": ids.label,
|
|
16415
16363
|
className: "flex-col-2 p-2",
|
|
16416
|
-
children: /* @__PURE__ */ (0,
|
|
16364
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
16417
16365
|
DateTimePickerDialog,
|
|
16418
16366
|
{
|
|
16419
16367
|
value: dialogValue,
|
|
@@ -16443,25 +16391,25 @@ var DateTimeInput = (0, import_react78.forwardRef)(function DateTimeInput2({
|
|
|
16443
16391
|
});
|
|
16444
16392
|
|
|
16445
16393
|
// src/components/user-interaction/MultiSelect/MultiSelect.tsx
|
|
16446
|
-
var
|
|
16394
|
+
var import_react85 = require("react");
|
|
16447
16395
|
|
|
16448
16396
|
// src/components/user-interaction/MultiSelect/MultiSelectRoot.tsx
|
|
16449
|
-
var
|
|
16397
|
+
var import_react81 = require("react");
|
|
16450
16398
|
|
|
16451
16399
|
// src/components/user-interaction/MultiSelect/MultiSelectContext.tsx
|
|
16452
|
-
var
|
|
16453
|
-
var MultiSelectContext = (0,
|
|
16400
|
+
var import_react78 = require("react");
|
|
16401
|
+
var MultiSelectContext = (0, import_react78.createContext)(null);
|
|
16454
16402
|
function useMultiSelectContext() {
|
|
16455
|
-
const ctx = (0,
|
|
16403
|
+
const ctx = (0, import_react78.useContext)(MultiSelectContext);
|
|
16456
16404
|
if (!ctx) throw new Error("useMultiSelectContext must be used within MultiSelectRoot");
|
|
16457
16405
|
return ctx;
|
|
16458
16406
|
}
|
|
16459
16407
|
|
|
16460
16408
|
// src/components/user-interaction/MultiSelect/useMultiSelect.ts
|
|
16461
|
-
var
|
|
16409
|
+
var import_react80 = require("react");
|
|
16462
16410
|
|
|
16463
16411
|
// src/hooks/useMultiSelection.ts
|
|
16464
|
-
var
|
|
16412
|
+
var import_react79 = require("react");
|
|
16465
16413
|
function useMultiSelection({
|
|
16466
16414
|
options: optionsList,
|
|
16467
16415
|
value,
|
|
@@ -16475,8 +16423,8 @@ function useMultiSelection({
|
|
|
16475
16423
|
defaultValue: [...initialSelection],
|
|
16476
16424
|
isControlled
|
|
16477
16425
|
});
|
|
16478
|
-
const isSelected = (0,
|
|
16479
|
-
const toggleSelection = (0,
|
|
16426
|
+
const isSelected = (0, import_react79.useCallback)((id) => selection.includes(id), [selection]);
|
|
16427
|
+
const toggleSelection = (0, import_react79.useCallback)(
|
|
16480
16428
|
(id) => {
|
|
16481
16429
|
const option = optionsList.find((o) => o.id === id);
|
|
16482
16430
|
if (!option || option.disabled) return;
|
|
@@ -16484,11 +16432,11 @@ function useMultiSelection({
|
|
|
16484
16432
|
},
|
|
16485
16433
|
[optionsList, setSelection]
|
|
16486
16434
|
);
|
|
16487
|
-
const setSelectionValue = (0,
|
|
16435
|
+
const setSelectionValue = (0, import_react79.useCallback)(
|
|
16488
16436
|
(next) => setSelection(Array.from(next)),
|
|
16489
16437
|
[setSelection]
|
|
16490
16438
|
);
|
|
16491
|
-
return (0,
|
|
16439
|
+
return (0, import_react79.useMemo)(
|
|
16492
16440
|
() => ({
|
|
16493
16441
|
selection,
|
|
16494
16442
|
setSelection: setSelectionValue,
|
|
@@ -16510,9 +16458,9 @@ function useMultiSelect({
|
|
|
16510
16458
|
initialIsOpen = false,
|
|
16511
16459
|
typeAheadResetMs = 500
|
|
16512
16460
|
}) {
|
|
16513
|
-
const [isOpen, setIsOpen] = (0,
|
|
16514
|
-
const [searchQuery, setSearchQuery] = (0,
|
|
16515
|
-
const selectionOptions = (0,
|
|
16461
|
+
const [isOpen, setIsOpen] = (0, import_react80.useState)(initialIsOpen);
|
|
16462
|
+
const [searchQuery, setSearchQuery] = (0, import_react80.useState)("");
|
|
16463
|
+
const selectionOptions = (0, import_react80.useMemo)(
|
|
16516
16464
|
() => options.map((o) => ({ id: o.id, disabled: o.disabled })),
|
|
16517
16465
|
[options]
|
|
16518
16466
|
);
|
|
@@ -16528,13 +16476,13 @@ function useMultiSelect({
|
|
|
16528
16476
|
const { searchResult: visibleOptions } = useSearch({
|
|
16529
16477
|
items: options,
|
|
16530
16478
|
searchQuery,
|
|
16531
|
-
toTags: (0,
|
|
16479
|
+
toTags: (0, import_react80.useCallback)((o) => [o.label ?? ""], [])
|
|
16532
16480
|
});
|
|
16533
|
-
const visibleOptionIds = (0,
|
|
16481
|
+
const visibleOptionIds = (0, import_react80.useMemo)(
|
|
16534
16482
|
() => visibleOptions.map((o) => o.id),
|
|
16535
16483
|
[visibleOptions]
|
|
16536
16484
|
);
|
|
16537
|
-
const enabledOptions = (0,
|
|
16485
|
+
const enabledOptions = (0, import_react80.useMemo)(
|
|
16538
16486
|
() => visibleOptions.filter((o) => !o.disabled),
|
|
16539
16487
|
[visibleOptions]
|
|
16540
16488
|
);
|
|
@@ -16547,7 +16495,7 @@ function useMultiSelect({
|
|
|
16547
16495
|
options: enabledOptions,
|
|
16548
16496
|
resetTimer: typeAheadResetMs,
|
|
16549
16497
|
toString: (o) => o.label ?? "",
|
|
16550
|
-
onResultChange: (0,
|
|
16498
|
+
onResultChange: (0, import_react80.useCallback)(
|
|
16551
16499
|
(option) => {
|
|
16552
16500
|
if (option) listNav.highlight(option.id);
|
|
16553
16501
|
},
|
|
@@ -16555,14 +16503,14 @@ function useMultiSelect({
|
|
|
16555
16503
|
)
|
|
16556
16504
|
});
|
|
16557
16505
|
const { reset: typeAheadReset, addToTypeAhead } = typeAhead;
|
|
16558
|
-
(0,
|
|
16506
|
+
(0, import_react80.useEffect)(() => {
|
|
16559
16507
|
if (!isOpen) typeAheadReset();
|
|
16560
16508
|
}, [isOpen, typeAheadReset]);
|
|
16561
|
-
const highlightItem = (0,
|
|
16509
|
+
const highlightItem = (0, import_react80.useCallback)((id) => {
|
|
16562
16510
|
if (!enabledOptions.some((o) => o.id === id)) return;
|
|
16563
16511
|
listNavHighlight(id);
|
|
16564
16512
|
}, [enabledOptions, listNavHighlight]);
|
|
16565
|
-
const toggleSelectionValue = (0,
|
|
16513
|
+
const toggleSelectionValue = (0, import_react80.useCallback)((id, newIsSelected) => {
|
|
16566
16514
|
const next = newIsSelected ?? !isSelected(id);
|
|
16567
16515
|
if (next) {
|
|
16568
16516
|
toggleSelection(id);
|
|
@@ -16571,7 +16519,7 @@ function useMultiSelect({
|
|
|
16571
16519
|
}
|
|
16572
16520
|
highlightItem(id);
|
|
16573
16521
|
}, [toggleSelection, setSelection, highlightItem, isSelected, selection]);
|
|
16574
|
-
const setIsOpenWrapper = (0,
|
|
16522
|
+
const setIsOpenWrapper = (0, import_react80.useCallback)(
|
|
16575
16523
|
(open, behavior) => {
|
|
16576
16524
|
setIsOpen(open);
|
|
16577
16525
|
behavior = behavior ?? "first";
|
|
@@ -16602,13 +16550,13 @@ function useMultiSelect({
|
|
|
16602
16550
|
enabledOptions
|
|
16603
16551
|
]
|
|
16604
16552
|
);
|
|
16605
|
-
const toggleOpenWrapper = (0,
|
|
16553
|
+
const toggleOpenWrapper = (0, import_react80.useCallback)(
|
|
16606
16554
|
(behavior) => {
|
|
16607
16555
|
setIsOpenWrapper(!isOpen, behavior);
|
|
16608
16556
|
},
|
|
16609
16557
|
[isOpen, setIsOpenWrapper]
|
|
16610
16558
|
);
|
|
16611
|
-
const state = (0,
|
|
16559
|
+
const state = (0, import_react80.useMemo)(
|
|
16612
16560
|
() => ({
|
|
16613
16561
|
value: [...selection],
|
|
16614
16562
|
highlightedId: listNav.highlightedId,
|
|
@@ -16624,11 +16572,11 @@ function useMultiSelect({
|
|
|
16624
16572
|
options
|
|
16625
16573
|
]
|
|
16626
16574
|
);
|
|
16627
|
-
const computedState = (0,
|
|
16575
|
+
const computedState = (0, import_react80.useMemo)(
|
|
16628
16576
|
() => ({ visibleOptionIds }),
|
|
16629
16577
|
[visibleOptionIds]
|
|
16630
16578
|
);
|
|
16631
|
-
const actions = (0,
|
|
16579
|
+
const actions = (0, import_react80.useMemo)(
|
|
16632
16580
|
() => ({
|
|
16633
16581
|
setIsOpen: setIsOpenWrapper,
|
|
16634
16582
|
toggleOpen: toggleOpenWrapper,
|
|
@@ -16657,7 +16605,7 @@ function useMultiSelect({
|
|
|
16657
16605
|
addToTypeAhead
|
|
16658
16606
|
]
|
|
16659
16607
|
);
|
|
16660
|
-
return (0,
|
|
16608
|
+
return (0, import_react80.useMemo)(
|
|
16661
16609
|
() => ({
|
|
16662
16610
|
...state,
|
|
16663
16611
|
...computedState,
|
|
@@ -16668,7 +16616,7 @@ function useMultiSelect({
|
|
|
16668
16616
|
}
|
|
16669
16617
|
|
|
16670
16618
|
// src/components/user-interaction/MultiSelect/MultiSelectRoot.tsx
|
|
16671
|
-
var
|
|
16619
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
16672
16620
|
function MultiSelectRoot({
|
|
16673
16621
|
children,
|
|
16674
16622
|
value,
|
|
@@ -16685,16 +16633,16 @@ function MultiSelectRoot({
|
|
|
16685
16633
|
readOnly = false,
|
|
16686
16634
|
required = false
|
|
16687
16635
|
}) {
|
|
16688
|
-
const [triggerRef, setTriggerRef] = (0,
|
|
16689
|
-
const [options, setOptions] = (0,
|
|
16690
|
-
const generatedId = (0,
|
|
16691
|
-
const [ids, setIds] = (0,
|
|
16636
|
+
const [triggerRef, setTriggerRef] = (0, import_react81.useState)(null);
|
|
16637
|
+
const [options, setOptions] = (0, import_react81.useState)([]);
|
|
16638
|
+
const generatedId = (0, import_react81.useId)();
|
|
16639
|
+
const [ids, setIds] = (0, import_react81.useState)({
|
|
16692
16640
|
trigger: "multi-select-" + generatedId,
|
|
16693
16641
|
content: "multi-select-content-" + generatedId,
|
|
16694
16642
|
listbox: "multi-select-listbox-" + generatedId,
|
|
16695
16643
|
searchInput: "multi-select-search-" + generatedId
|
|
16696
16644
|
});
|
|
16697
|
-
const registerOption = (0,
|
|
16645
|
+
const registerOption = (0, import_react81.useCallback)((item) => {
|
|
16698
16646
|
setOptions((prev) => {
|
|
16699
16647
|
const next = prev.filter((o) => o.id !== item.id);
|
|
16700
16648
|
next.push(item);
|
|
@@ -16703,12 +16651,12 @@ function MultiSelectRoot({
|
|
|
16703
16651
|
});
|
|
16704
16652
|
return () => setOptions((prev) => prev.filter((o) => o.id !== item.id));
|
|
16705
16653
|
}, []);
|
|
16706
|
-
const registerTrigger = (0,
|
|
16654
|
+
const registerTrigger = (0, import_react81.useCallback)((ref) => {
|
|
16707
16655
|
setTriggerRef(ref);
|
|
16708
16656
|
return () => setTriggerRef(null);
|
|
16709
16657
|
}, []);
|
|
16710
|
-
const compare = (0,
|
|
16711
|
-
const idToOptionMap = (0,
|
|
16658
|
+
const compare = (0, import_react81.useMemo)(() => compareFunction ?? Object.is, [compareFunction]);
|
|
16659
|
+
const idToOptionMap = (0, import_react81.useMemo)(
|
|
16712
16660
|
() => options.reduce(
|
|
16713
16661
|
(acc, o) => {
|
|
16714
16662
|
acc[o.id] = o;
|
|
@@ -16718,22 +16666,22 @@ function MultiSelectRoot({
|
|
|
16718
16666
|
),
|
|
16719
16667
|
[options]
|
|
16720
16668
|
);
|
|
16721
|
-
const mappedValueIds = (0,
|
|
16669
|
+
const mappedValueIds = (0, import_react81.useMemo)(() => {
|
|
16722
16670
|
if (value == null) return void 0;
|
|
16723
16671
|
return value.map((v) => options.find((o) => compare(o.value, v))?.id).filter((id) => id !== void 0);
|
|
16724
16672
|
}, [options, value, compare]);
|
|
16725
|
-
const mappedInitialValueIds = (0,
|
|
16673
|
+
const mappedInitialValueIds = (0, import_react81.useMemo)(() => {
|
|
16726
16674
|
if (initialValue == null) return [];
|
|
16727
16675
|
return initialValue.map((v) => options.find((o) => compare(o.value, v))?.id).filter((id) => id !== void 0);
|
|
16728
16676
|
}, [options, initialValue, compare]);
|
|
16729
|
-
const onValueChangeStable = (0,
|
|
16677
|
+
const onValueChangeStable = (0, import_react81.useCallback)(
|
|
16730
16678
|
(ids2) => {
|
|
16731
16679
|
const values = ids2.map((id) => idToOptionMap[id]?.value).filter((v) => v != null);
|
|
16732
16680
|
onValueChange?.(values);
|
|
16733
16681
|
},
|
|
16734
16682
|
[idToOptionMap, onValueChange]
|
|
16735
16683
|
);
|
|
16736
|
-
const onEditCompleteStable = (0,
|
|
16684
|
+
const onEditCompleteStable = (0, import_react81.useCallback)(
|
|
16737
16685
|
(ids2) => {
|
|
16738
16686
|
const values = ids2.map((id) => idToOptionMap[id]?.value).filter((v) => v != null);
|
|
16739
16687
|
onEditComplete?.(values);
|
|
@@ -16750,12 +16698,12 @@ function MultiSelectRoot({
|
|
|
16750
16698
|
onClose
|
|
16751
16699
|
});
|
|
16752
16700
|
const { setSearchQuery } = state;
|
|
16753
|
-
(0,
|
|
16701
|
+
(0, import_react81.useEffect)(() => {
|
|
16754
16702
|
if (showSearch === false) {
|
|
16755
16703
|
setSearchQuery("");
|
|
16756
16704
|
}
|
|
16757
16705
|
}, [showSearch, setSearchQuery]);
|
|
16758
|
-
const contextValue = (0,
|
|
16706
|
+
const contextValue = (0, import_react81.useMemo)(() => {
|
|
16759
16707
|
const valueT = state.value.map((id) => idToOptionMap[id]?.value).filter((v) => v != null);
|
|
16760
16708
|
return {
|
|
16761
16709
|
invalid,
|
|
@@ -16809,7 +16757,7 @@ function MultiSelectRoot({
|
|
|
16809
16757
|
registerTrigger,
|
|
16810
16758
|
showSearch
|
|
16811
16759
|
]);
|
|
16812
|
-
return /* @__PURE__ */ (0,
|
|
16760
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(MultiSelectContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
16813
16761
|
PopUpContext.Provider,
|
|
16814
16762
|
{
|
|
16815
16763
|
value: {
|
|
@@ -16826,16 +16774,16 @@ function MultiSelectRoot({
|
|
|
16826
16774
|
}
|
|
16827
16775
|
|
|
16828
16776
|
// src/components/user-interaction/MultiSelect/MultiSelectButton.tsx
|
|
16829
|
-
var
|
|
16777
|
+
var import_react83 = require("react");
|
|
16830
16778
|
|
|
16831
16779
|
// src/components/user-interaction/MultiSelect/MultiSelectOption.tsx
|
|
16832
16780
|
var import_clsx25 = __toESM(require("clsx"));
|
|
16833
|
-
var
|
|
16834
|
-
var
|
|
16835
|
-
var
|
|
16836
|
-
var MultiSelectOptionDisplayContext = (0,
|
|
16781
|
+
var import_lucide_react18 = require("lucide-react");
|
|
16782
|
+
var import_react82 = require("react");
|
|
16783
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
16784
|
+
var MultiSelectOptionDisplayContext = (0, import_react82.createContext)(null);
|
|
16837
16785
|
function useMultiSelectOptionDisplayLocation() {
|
|
16838
|
-
const context = (0,
|
|
16786
|
+
const context = (0, import_react82.useContext)(MultiSelectOptionDisplayContext);
|
|
16839
16787
|
if (!context) {
|
|
16840
16788
|
throw new Error(
|
|
16841
16789
|
"useMultiSelectOptionDisplayLocation must be used within a MultiSelectOptionDisplayContext"
|
|
@@ -16843,7 +16791,7 @@ function useMultiSelectOptionDisplayLocation() {
|
|
|
16843
16791
|
}
|
|
16844
16792
|
return context;
|
|
16845
16793
|
}
|
|
16846
|
-
var MultiSelectOption = (0,
|
|
16794
|
+
var MultiSelectOption = (0, import_react82.forwardRef)(function MultiSelectOption2({
|
|
16847
16795
|
children,
|
|
16848
16796
|
label,
|
|
16849
16797
|
value,
|
|
@@ -16853,12 +16801,12 @@ var MultiSelectOption = (0, import_react83.forwardRef)(function MultiSelectOptio
|
|
|
16853
16801
|
}, ref) {
|
|
16854
16802
|
const context = useMultiSelectContext();
|
|
16855
16803
|
const { registerOption } = context;
|
|
16856
|
-
const itemRef = (0,
|
|
16804
|
+
const itemRef = (0, import_react82.useRef)(null);
|
|
16857
16805
|
const display = children ?? label;
|
|
16858
16806
|
const iconAppearanceResolved = iconAppearance ?? context.config.iconAppearance;
|
|
16859
|
-
const generatedId = (0,
|
|
16807
|
+
const generatedId = (0, import_react82.useId)();
|
|
16860
16808
|
const optionId = props?.id ?? "multi-select-option-" + generatedId;
|
|
16861
|
-
(0,
|
|
16809
|
+
(0, import_react82.useEffect)(() => {
|
|
16862
16810
|
return registerOption({
|
|
16863
16811
|
id: optionId,
|
|
16864
16812
|
value,
|
|
@@ -16871,7 +16819,7 @@ var MultiSelectOption = (0, import_react83.forwardRef)(function MultiSelectOptio
|
|
|
16871
16819
|
const isHighlighted = context.highlightedId === optionId;
|
|
16872
16820
|
const isSelected = context.selectedIds.includes(optionId);
|
|
16873
16821
|
const isVisible = context.visibleOptionIds.includes(optionId);
|
|
16874
|
-
return /* @__PURE__ */ (0,
|
|
16822
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
16875
16823
|
"li",
|
|
16876
16824
|
{
|
|
16877
16825
|
...props,
|
|
@@ -16904,16 +16852,16 @@ var MultiSelectOption = (0, import_react83.forwardRef)(function MultiSelectOptio
|
|
|
16904
16852
|
}
|
|
16905
16853
|
},
|
|
16906
16854
|
children: [
|
|
16907
|
-
iconAppearanceResolved === "left" && /* @__PURE__ */ (0,
|
|
16908
|
-
|
|
16855
|
+
iconAppearanceResolved === "left" && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
16856
|
+
import_lucide_react18.CheckIcon,
|
|
16909
16857
|
{
|
|
16910
16858
|
className: (0, import_clsx25.default)("w-4 h-4", { "opacity-0": !isSelected || disabled }),
|
|
16911
16859
|
"aria-hidden": true
|
|
16912
16860
|
}
|
|
16913
16861
|
),
|
|
16914
|
-
/* @__PURE__ */ (0,
|
|
16915
|
-
iconAppearanceResolved === "right" && /* @__PURE__ */ (0,
|
|
16916
|
-
|
|
16862
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(MultiSelectOptionDisplayContext.Provider, { value: "list", children: display }),
|
|
16863
|
+
iconAppearanceResolved === "right" && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
16864
|
+
import_lucide_react18.CheckIcon,
|
|
16917
16865
|
{
|
|
16918
16866
|
className: (0, import_clsx25.default)("w-4 h-4", { "opacity-0": !isSelected || disabled }),
|
|
16919
16867
|
"aria-hidden": true
|
|
@@ -16925,8 +16873,8 @@ var MultiSelectOption = (0, import_react83.forwardRef)(function MultiSelectOptio
|
|
|
16925
16873
|
});
|
|
16926
16874
|
|
|
16927
16875
|
// src/components/user-interaction/MultiSelect/MultiSelectButton.tsx
|
|
16928
|
-
var
|
|
16929
|
-
var MultiSelectButton = (0,
|
|
16876
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
16877
|
+
var MultiSelectButton = (0, import_react83.forwardRef)(function MultiSelectButton2({
|
|
16930
16878
|
id,
|
|
16931
16879
|
placeholder,
|
|
16932
16880
|
disabled: disabledOverride,
|
|
@@ -16939,12 +16887,12 @@ var MultiSelectButton = (0, import_react84.forwardRef)(function MultiSelectButto
|
|
|
16939
16887
|
const { config, layout } = context;
|
|
16940
16888
|
const { setIds } = config;
|
|
16941
16889
|
const { registerTrigger } = layout;
|
|
16942
|
-
(0,
|
|
16890
|
+
(0, import_react83.useEffect)(() => {
|
|
16943
16891
|
if (id) setIds((prev) => ({ ...prev, trigger: id }));
|
|
16944
16892
|
}, [id, setIds]);
|
|
16945
|
-
const innerRef = (0,
|
|
16946
|
-
(0,
|
|
16947
|
-
(0,
|
|
16893
|
+
const innerRef = (0, import_react83.useRef)(null);
|
|
16894
|
+
(0, import_react83.useImperativeHandle)(ref, () => innerRef.current);
|
|
16895
|
+
(0, import_react83.useEffect)(() => {
|
|
16948
16896
|
const unregister = registerTrigger(innerRef);
|
|
16949
16897
|
return () => unregister();
|
|
16950
16898
|
}, [registerTrigger]);
|
|
@@ -16952,7 +16900,7 @@ var MultiSelectButton = (0, import_react84.forwardRef)(function MultiSelectButto
|
|
|
16952
16900
|
const invalid = context.invalid;
|
|
16953
16901
|
const hasValue = context.value.length > 0;
|
|
16954
16902
|
const selectedOptions = context.selectedIds.map((id2) => context.idToOptionMap[id2]).filter(Boolean);
|
|
16955
|
-
return /* @__PURE__ */ (0,
|
|
16903
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
|
|
16956
16904
|
"div",
|
|
16957
16905
|
{
|
|
16958
16906
|
...props,
|
|
@@ -16996,34 +16944,34 @@ var MultiSelectButton = (0, import_react84.forwardRef)(function MultiSelectButto
|
|
|
16996
16944
|
"aria-expanded": context.isOpen,
|
|
16997
16945
|
"aria-controls": context.isOpen ? context.config.ids.content : void 0,
|
|
16998
16946
|
children: [
|
|
16999
|
-
/* @__PURE__ */ (0,
|
|
16947
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(MultiSelectOptionDisplayContext.Provider, { value: "trigger", children: hasValue ? selectedDisplay?.(context.value) ?? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "flex flex-wrap gap-x-1 gap-y-2", children: selectedOptions.map((opt, index) => /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("span", { children: [
|
|
17000
16948
|
opt.display,
|
|
17001
|
-
index < selectedOptions.length - 1 && /* @__PURE__ */ (0,
|
|
16949
|
+
index < selectedOptions.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { children: "," })
|
|
17002
16950
|
] }, opt.id)) }) : placeholder ?? translation("clickToSelect") }),
|
|
17003
|
-
!hideExpansionIcon && /* @__PURE__ */ (0,
|
|
16951
|
+
!hideExpansionIcon && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ExpansionIcon, { isExpanded: context.isOpen })
|
|
17004
16952
|
]
|
|
17005
16953
|
}
|
|
17006
16954
|
);
|
|
17007
16955
|
});
|
|
17008
16956
|
|
|
17009
16957
|
// src/components/user-interaction/MultiSelect/MultiSelectContent.tsx
|
|
17010
|
-
var
|
|
16958
|
+
var import_react84 = require("react");
|
|
17011
16959
|
var import_clsx26 = __toESM(require("clsx"));
|
|
17012
|
-
var
|
|
17013
|
-
var MultiSelectContent = (0,
|
|
16960
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
16961
|
+
var MultiSelectContent = (0, import_react84.forwardRef)(function MultiSelectContent2({ id, options, showSearch: showSearchOverride, searchInputProps, ...props }, ref) {
|
|
17014
16962
|
const translation = useHightideTranslation();
|
|
17015
|
-
const innerRef = (0,
|
|
17016
|
-
const searchInputRef = (0,
|
|
17017
|
-
(0,
|
|
16963
|
+
const innerRef = (0, import_react84.useRef)(null);
|
|
16964
|
+
const searchInputRef = (0, import_react84.useRef)(null);
|
|
16965
|
+
(0, import_react84.useImperativeHandle)(ref, () => innerRef.current);
|
|
17018
16966
|
const context = useMultiSelectContext();
|
|
17019
16967
|
const { config, highlightNext, highlightPrevious, highlightFirst, highlightLast, highlightedId, handleTypeaheadKey, toggleSelection } = context;
|
|
17020
16968
|
const { setIds } = config;
|
|
17021
|
-
(0,
|
|
16969
|
+
(0, import_react84.useEffect)(() => {
|
|
17022
16970
|
if (id) setIds((prev) => ({ ...prev, content: id }));
|
|
17023
16971
|
}, [id, setIds]);
|
|
17024
16972
|
const showSearch = showSearchOverride ?? context.search.hasSearch;
|
|
17025
16973
|
const listboxAriaLabel = showSearch ? translation("searchResults") : void 0;
|
|
17026
|
-
const keyHandler = (0,
|
|
16974
|
+
const keyHandler = (0, import_react84.useCallback)(
|
|
17027
16975
|
(event) => {
|
|
17028
16976
|
switch (event.key) {
|
|
17029
16977
|
case "ArrowDown":
|
|
@@ -17060,7 +17008,7 @@ var MultiSelectContent = (0, import_react85.forwardRef)(function MultiSelectCont
|
|
|
17060
17008
|
},
|
|
17061
17009
|
[showSearch, handleTypeaheadKey, toggleSelection, highlightedId, highlightNext, highlightPrevious, highlightFirst, highlightLast]
|
|
17062
17010
|
);
|
|
17063
|
-
return /* @__PURE__ */ (0,
|
|
17011
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
|
|
17064
17012
|
PopUp,
|
|
17065
17013
|
{
|
|
17066
17014
|
...props,
|
|
@@ -17076,7 +17024,7 @@ var MultiSelectContent = (0, import_react85.forwardRef)(function MultiSelectCont
|
|
|
17076
17024
|
"aria-labelledby": context.config.ids.trigger,
|
|
17077
17025
|
className: (0, import_clsx26.default)("gap-y-1", props.className),
|
|
17078
17026
|
children: [
|
|
17079
|
-
showSearch && /* @__PURE__ */ (0,
|
|
17027
|
+
showSearch && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
17080
17028
|
Input,
|
|
17081
17029
|
{
|
|
17082
17030
|
...searchInputProps,
|
|
@@ -17095,7 +17043,7 @@ var MultiSelectContent = (0, import_react85.forwardRef)(function MultiSelectCont
|
|
|
17095
17043
|
className: (0, import_clsx26.default)("mx-2 mt-2 shrink-0", searchInputProps?.className)
|
|
17096
17044
|
}
|
|
17097
17045
|
),
|
|
17098
|
-
/* @__PURE__ */ (0,
|
|
17046
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
|
|
17099
17047
|
"ul",
|
|
17100
17048
|
{
|
|
17101
17049
|
ref: innerRef,
|
|
@@ -17110,7 +17058,7 @@ var MultiSelectContent = (0, import_react85.forwardRef)(function MultiSelectCont
|
|
|
17110
17058
|
className: (0, import_clsx26.default)("flex-col-1 p-2 overflow-auto"),
|
|
17111
17059
|
children: [
|
|
17112
17060
|
props.children,
|
|
17113
|
-
/* @__PURE__ */ (0,
|
|
17061
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Visibility, { isVisible: showSearch, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
17114
17062
|
"li",
|
|
17115
17063
|
{
|
|
17116
17064
|
role: "option",
|
|
@@ -17136,12 +17084,12 @@ var MultiSelectContent = (0, import_react85.forwardRef)(function MultiSelectCont
|
|
|
17136
17084
|
});
|
|
17137
17085
|
|
|
17138
17086
|
// src/components/user-interaction/MultiSelect/MultiSelect.tsx
|
|
17139
|
-
var
|
|
17140
|
-
var MultiSelect = (0,
|
|
17087
|
+
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
17088
|
+
var MultiSelect = (0, import_react85.forwardRef)(
|
|
17141
17089
|
function MultiSelect2({ children, contentPanelProps, buttonProps, ...props }, ref) {
|
|
17142
|
-
return /* @__PURE__ */ (0,
|
|
17143
|
-
/* @__PURE__ */ (0,
|
|
17144
|
-
/* @__PURE__ */ (0,
|
|
17090
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(MultiSelectRoot, { ...props, children: [
|
|
17091
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(MultiSelectButton, { ref, ...buttonProps }),
|
|
17092
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(MultiSelectContent, { ...contentPanelProps, children })
|
|
17145
17093
|
] });
|
|
17146
17094
|
}
|
|
17147
17095
|
);
|
|
@@ -17150,41 +17098,51 @@ var MultiSelect = (0, import_react86.forwardRef)(
|
|
|
17150
17098
|
var import_clsx27 = __toESM(require("clsx"));
|
|
17151
17099
|
|
|
17152
17100
|
// src/components/user-interaction/data/FilterOperatorLabel.tsx
|
|
17153
|
-
var
|
|
17101
|
+
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
17154
17102
|
var FilterOperatorLabel = ({ operator }) => {
|
|
17155
17103
|
const translation = useHightideTranslation();
|
|
17156
17104
|
const { icon, translationKey } = FilterOperatorUtils.getInfo(operator);
|
|
17157
17105
|
const label = typeof translationKey === "string" ? translation(translationKey) : translationKey;
|
|
17158
|
-
return /* @__PURE__ */ (0,
|
|
17106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "flex-row-1 items-center gap-2", children: [
|
|
17159
17107
|
icon,
|
|
17160
17108
|
label
|
|
17161
17109
|
] });
|
|
17162
17110
|
};
|
|
17163
17111
|
|
|
17164
17112
|
// src/components/user-interaction/data/FilterPopUp.tsx
|
|
17165
|
-
var
|
|
17166
|
-
var FilterBasePopUp = (0,
|
|
17113
|
+
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
17114
|
+
var FilterBasePopUp = (0, import_react86.forwardRef)(function FilterBasePopUp2({
|
|
17167
17115
|
children,
|
|
17168
17116
|
name,
|
|
17169
17117
|
operator,
|
|
17170
17118
|
onOperatorChange,
|
|
17171
17119
|
onRemove,
|
|
17172
17120
|
allowedOperators,
|
|
17121
|
+
operatorOverrides,
|
|
17173
17122
|
noParameterRequired = false,
|
|
17174
17123
|
...props
|
|
17175
17124
|
}, ref) {
|
|
17176
17125
|
const translation = useHightideTranslation();
|
|
17177
|
-
|
|
17126
|
+
const operators = (0, import_react86.useMemo)(() => {
|
|
17127
|
+
if (!operatorOverrides || operatorOverrides.length === 0) return allowedOperators;
|
|
17128
|
+
return allowedOperators.filter((op) => operatorOverrides.includes(op));
|
|
17129
|
+
}, [allowedOperators, operatorOverrides]);
|
|
17130
|
+
(0, import_react86.useEffect)(() => {
|
|
17131
|
+
if (operators.length === 0) {
|
|
17132
|
+
onRemove();
|
|
17133
|
+
}
|
|
17134
|
+
}, [operators, onRemove]);
|
|
17135
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
17178
17136
|
PopUp,
|
|
17179
17137
|
{
|
|
17180
17138
|
ref,
|
|
17181
17139
|
...props,
|
|
17182
17140
|
className: (0, import_clsx27.default)("flex-col-3 p-3 relative min-w-64", props.className),
|
|
17183
17141
|
children: [
|
|
17184
|
-
/* @__PURE__ */ (0,
|
|
17185
|
-
/* @__PURE__ */ (0,
|
|
17186
|
-
/* @__PURE__ */ (0,
|
|
17187
|
-
/* @__PURE__ */ (0,
|
|
17142
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex-row-4 justify-between w-full", children: [
|
|
17143
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex-row-0.5 items-center", children: [
|
|
17144
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "typography-label-sm text-description", children: name ?? translation("filter") }),
|
|
17145
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17188
17146
|
Select,
|
|
17189
17147
|
{
|
|
17190
17148
|
value: operator,
|
|
@@ -17195,12 +17153,12 @@ var FilterBasePopUp = (0, import_react87.forwardRef)(function FilterBasePopUp2({
|
|
|
17195
17153
|
"selectedDisplay": (option) => option ? translation(FilterOperatorUtils.getInfo(option.value).translationKey) : ""
|
|
17196
17154
|
},
|
|
17197
17155
|
iconAppearance: "right",
|
|
17198
|
-
children:
|
|
17156
|
+
children: operators.map((op) => /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(SelectOption, { value: op, label: translation(FilterOperatorUtils.getInfo(op).translationKey), children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(FilterOperatorLabel, { operator: op }) }, op))
|
|
17199
17157
|
}
|
|
17200
17158
|
)
|
|
17201
17159
|
] }),
|
|
17202
|
-
/* @__PURE__ */ (0,
|
|
17203
|
-
/* @__PURE__ */ (0,
|
|
17160
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex-row-0 items-center", children: [
|
|
17161
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17204
17162
|
IconButton,
|
|
17205
17163
|
{
|
|
17206
17164
|
tooltip: translation("removeFilter"),
|
|
@@ -17208,29 +17166,29 @@ var FilterBasePopUp = (0, import_react87.forwardRef)(function FilterBasePopUp2({
|
|
|
17208
17166
|
color: "negative",
|
|
17209
17167
|
coloringStyle: "text",
|
|
17210
17168
|
size: "sm",
|
|
17211
|
-
children: /* @__PURE__ */ (0,
|
|
17169
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_lucide_react19.TrashIcon, { className: "size-4" })
|
|
17212
17170
|
}
|
|
17213
17171
|
),
|
|
17214
|
-
/* @__PURE__ */ (0,
|
|
17172
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17215
17173
|
IconButton,
|
|
17216
17174
|
{
|
|
17217
|
-
tooltip: translation("
|
|
17175
|
+
tooltip: translation("done"),
|
|
17218
17176
|
onClick: props.onClose,
|
|
17219
17177
|
color: "neutral",
|
|
17220
17178
|
coloringStyle: "text",
|
|
17221
17179
|
size: "sm",
|
|
17222
|
-
children: /* @__PURE__ */ (0,
|
|
17180
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_lucide_react19.Check, { className: "size-4" })
|
|
17223
17181
|
}
|
|
17224
17182
|
)
|
|
17225
17183
|
] })
|
|
17226
17184
|
] }),
|
|
17227
17185
|
children,
|
|
17228
|
-
/* @__PURE__ */ (0,
|
|
17186
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: noParameterRequired, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "flex-row-0 items-center text-sm text-description h-element-sm", children: translation("noParameterRequired") }) })
|
|
17229
17187
|
]
|
|
17230
17188
|
}
|
|
17231
17189
|
);
|
|
17232
17190
|
});
|
|
17233
|
-
var TextFilterPopUp = (0,
|
|
17191
|
+
var TextFilterPopUp = (0, import_react86.forwardRef)(function TextFilterPopUp2({
|
|
17234
17192
|
name,
|
|
17235
17193
|
value,
|
|
17236
17194
|
onValueChange,
|
|
@@ -17238,12 +17196,12 @@ var TextFilterPopUp = (0, import_react87.forwardRef)(function TextFilterPopUp2({
|
|
|
17238
17196
|
...props
|
|
17239
17197
|
}, ref) {
|
|
17240
17198
|
const translation = useHightideTranslation();
|
|
17241
|
-
const id = (0,
|
|
17199
|
+
const id = (0, import_react86.useId)();
|
|
17242
17200
|
const ids = {
|
|
17243
17201
|
search: `text-filter-search-${id}`,
|
|
17244
17202
|
caseSensitive: `text-filter-case-sensitive-${id}`
|
|
17245
17203
|
};
|
|
17246
|
-
const operator = (0,
|
|
17204
|
+
const operator = (0, import_react86.useMemo)(() => {
|
|
17247
17205
|
const suggestion = value?.operator ?? "contains";
|
|
17248
17206
|
if (!FilterOperatorUtils.typeCheck.text(suggestion)) {
|
|
17249
17207
|
return "contains";
|
|
@@ -17252,7 +17210,7 @@ var TextFilterPopUp = (0, import_react87.forwardRef)(function TextFilterPopUp2({
|
|
|
17252
17210
|
}, [value]);
|
|
17253
17211
|
const parameter = value?.parameter ?? {};
|
|
17254
17212
|
const needsParameterInput = operator !== "isUndefined" && operator !== "isNotUndefined";
|
|
17255
|
-
return /* @__PURE__ */ (0,
|
|
17213
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17256
17214
|
FilterBasePopUp,
|
|
17257
17215
|
{
|
|
17258
17216
|
ref,
|
|
@@ -17263,48 +17221,29 @@ var TextFilterPopUp = (0, import_react87.forwardRef)(function TextFilterPopUp2({
|
|
|
17263
17221
|
onRemove,
|
|
17264
17222
|
allowedOperators: FilterOperatorUtils.operatorsByCategory.text,
|
|
17265
17223
|
noParameterRequired: !needsParameterInput,
|
|
17266
|
-
children: /* @__PURE__ */ (0,
|
|
17267
|
-
/* @__PURE__ */ (0,
|
|
17268
|
-
|
|
17269
|
-
|
|
17270
|
-
|
|
17271
|
-
|
|
17272
|
-
|
|
17273
|
-
|
|
17274
|
-
|
|
17275
|
-
onValueChange
|
|
17276
|
-
|
|
17277
|
-
|
|
17278
|
-
|
|
17279
|
-
|
|
17280
|
-
|
|
17281
|
-
|
|
17282
|
-
|
|
17283
|
-
|
|
17284
|
-
|
|
17285
|
-
] }),
|
|
17286
|
-
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "flex-row-2 items-center mt-1", children: [
|
|
17287
|
-
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
17288
|
-
Checkbox,
|
|
17289
|
-
{
|
|
17290
|
-
id: ids.caseSensitive,
|
|
17291
|
-
value: parameter.isCaseSensitive ?? false,
|
|
17292
|
-
onValueChange: (isCaseSensitive) => {
|
|
17293
|
-
onValueChange({
|
|
17294
|
-
dataType: "text",
|
|
17295
|
-
operator,
|
|
17296
|
-
parameter: { ...parameter, isCaseSensitive }
|
|
17297
|
-
});
|
|
17298
|
-
}
|
|
17299
|
-
}
|
|
17300
|
-
),
|
|
17301
|
-
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("label", { htmlFor: ids.caseSensitive, children: translation("caseSensitive") })
|
|
17302
|
-
] })
|
|
17303
|
-
] })
|
|
17224
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: needsParameterInput, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex-col-1", children: [
|
|
17225
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: ids.search, className: "typography-label-md", children: translation("search") }),
|
|
17226
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17227
|
+
Input,
|
|
17228
|
+
{
|
|
17229
|
+
id: ids.search,
|
|
17230
|
+
value: parameter.stringValue ?? "",
|
|
17231
|
+
placeholder: translation("value"),
|
|
17232
|
+
onValueChange: (searchText) => {
|
|
17233
|
+
onValueChange({
|
|
17234
|
+
dataType: "text",
|
|
17235
|
+
operator,
|
|
17236
|
+
parameter: { ...parameter, stringValue: searchText }
|
|
17237
|
+
});
|
|
17238
|
+
},
|
|
17239
|
+
className: "min-w-64"
|
|
17240
|
+
}
|
|
17241
|
+
)
|
|
17242
|
+
] }) })
|
|
17304
17243
|
}
|
|
17305
17244
|
);
|
|
17306
17245
|
});
|
|
17307
|
-
var NumberFilterPopUp = (0,
|
|
17246
|
+
var NumberFilterPopUp = (0, import_react86.forwardRef)(function NumberFilterPopUp2({
|
|
17308
17247
|
name,
|
|
17309
17248
|
value,
|
|
17310
17249
|
onValueChange,
|
|
@@ -17312,13 +17251,13 @@ var NumberFilterPopUp = (0, import_react87.forwardRef)(function NumberFilterPopU
|
|
|
17312
17251
|
...props
|
|
17313
17252
|
}, ref) {
|
|
17314
17253
|
const translation = useHightideTranslation();
|
|
17315
|
-
const id = (0,
|
|
17254
|
+
const id = (0, import_react86.useId)();
|
|
17316
17255
|
const ids = {
|
|
17317
17256
|
min: `number-filter-min-${id}`,
|
|
17318
17257
|
max: `number-filter-max-${id}`,
|
|
17319
17258
|
compareValue: `number-filter-compare-value-${id}`
|
|
17320
17259
|
};
|
|
17321
|
-
const operator = (0,
|
|
17260
|
+
const operator = (0, import_react86.useMemo)(() => {
|
|
17322
17261
|
const suggestion = value?.operator ?? "between";
|
|
17323
17262
|
if (!FilterOperatorUtils.typeCheck.number(suggestion)) {
|
|
17324
17263
|
return "between";
|
|
@@ -17328,7 +17267,7 @@ var NumberFilterPopUp = (0, import_react87.forwardRef)(function NumberFilterPopU
|
|
|
17328
17267
|
const parameter = value?.parameter ?? {};
|
|
17329
17268
|
const needsRangeInput = operator === "between" || operator === "notBetween";
|
|
17330
17269
|
const needsParameterInput = operator !== "isUndefined" && operator !== "isNotUndefined";
|
|
17331
|
-
return /* @__PURE__ */ (0,
|
|
17270
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
17332
17271
|
FilterBasePopUp,
|
|
17333
17272
|
{
|
|
17334
17273
|
ref,
|
|
@@ -17342,14 +17281,14 @@ var NumberFilterPopUp = (0, import_react87.forwardRef)(function NumberFilterPopU
|
|
|
17342
17281
|
allowedOperators: FilterOperatorUtils.operatorsByCategory.number,
|
|
17343
17282
|
noParameterRequired: !needsParameterInput,
|
|
17344
17283
|
children: [
|
|
17345
|
-
/* @__PURE__ */ (0,
|
|
17346
|
-
/* @__PURE__ */ (0,
|
|
17347
|
-
/* @__PURE__ */ (0,
|
|
17348
|
-
/* @__PURE__ */ (0,
|
|
17284
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(Visibility, { isVisible: needsRangeInput, children: [
|
|
17285
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex-col-1", children: [
|
|
17286
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: ids.min, className: "typography-label-md", children: translation("min") }),
|
|
17287
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17349
17288
|
Input,
|
|
17350
17289
|
{
|
|
17351
17290
|
id: ids.min,
|
|
17352
|
-
value: parameter.
|
|
17291
|
+
value: parameter.numberMin?.toString() ?? "",
|
|
17353
17292
|
type: "number",
|
|
17354
17293
|
placeholder: "0",
|
|
17355
17294
|
onValueChange: (text) => {
|
|
@@ -17357,20 +17296,20 @@ var NumberFilterPopUp = (0, import_react87.forwardRef)(function NumberFilterPopU
|
|
|
17357
17296
|
onValueChange({
|
|
17358
17297
|
dataType: "number",
|
|
17359
17298
|
operator,
|
|
17360
|
-
parameter: { ...parameter,
|
|
17299
|
+
parameter: { ...parameter, numberMin: isNaN(num) ? void 0 : num }
|
|
17361
17300
|
});
|
|
17362
17301
|
},
|
|
17363
17302
|
className: "min-w-64"
|
|
17364
17303
|
}
|
|
17365
17304
|
)
|
|
17366
17305
|
] }),
|
|
17367
|
-
/* @__PURE__ */ (0,
|
|
17368
|
-
/* @__PURE__ */ (0,
|
|
17369
|
-
/* @__PURE__ */ (0,
|
|
17306
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex-col-1", children: [
|
|
17307
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: ids.max, className: "typography-label-md", children: translation("max") }),
|
|
17308
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17370
17309
|
Input,
|
|
17371
17310
|
{
|
|
17372
17311
|
id: ids.max,
|
|
17373
|
-
value: parameter.
|
|
17312
|
+
value: parameter.numberMax?.toString() ?? "",
|
|
17374
17313
|
type: "number",
|
|
17375
17314
|
placeholder: "1",
|
|
17376
17315
|
onValueChange: (text) => {
|
|
@@ -17378,7 +17317,7 @@ var NumberFilterPopUp = (0, import_react87.forwardRef)(function NumberFilterPopU
|
|
|
17378
17317
|
onValueChange({
|
|
17379
17318
|
dataType: "number",
|
|
17380
17319
|
operator,
|
|
17381
|
-
parameter: { ...parameter,
|
|
17320
|
+
parameter: { ...parameter, numberMax: isNaN(num) ? void 0 : num }
|
|
17382
17321
|
});
|
|
17383
17322
|
},
|
|
17384
17323
|
className: "min-w-64"
|
|
@@ -17386,10 +17325,10 @@ var NumberFilterPopUp = (0, import_react87.forwardRef)(function NumberFilterPopU
|
|
|
17386
17325
|
)
|
|
17387
17326
|
] })
|
|
17388
17327
|
] }),
|
|
17389
|
-
/* @__PURE__ */ (0,
|
|
17328
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: !needsRangeInput && needsParameterInput, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17390
17329
|
Input,
|
|
17391
17330
|
{
|
|
17392
|
-
value: parameter.
|
|
17331
|
+
value: parameter.numberValue?.toString() ?? "",
|
|
17393
17332
|
type: "number",
|
|
17394
17333
|
placeholder: "0",
|
|
17395
17334
|
onValueChange: (text) => {
|
|
@@ -17397,7 +17336,7 @@ var NumberFilterPopUp = (0, import_react87.forwardRef)(function NumberFilterPopU
|
|
|
17397
17336
|
onValueChange({
|
|
17398
17337
|
dataType: "number",
|
|
17399
17338
|
operator,
|
|
17400
|
-
parameter: { ...parameter,
|
|
17339
|
+
parameter: { ...parameter, numberValue: isNaN(num) ? void 0 : num }
|
|
17401
17340
|
});
|
|
17402
17341
|
},
|
|
17403
17342
|
className: "min-w-64"
|
|
@@ -17407,7 +17346,7 @@ var NumberFilterPopUp = (0, import_react87.forwardRef)(function NumberFilterPopU
|
|
|
17407
17346
|
}
|
|
17408
17347
|
);
|
|
17409
17348
|
});
|
|
17410
|
-
var DateFilterPopUp = (0,
|
|
17349
|
+
var DateFilterPopUp = (0, import_react86.forwardRef)(function DateFilterPopUp2({
|
|
17411
17350
|
name,
|
|
17412
17351
|
value,
|
|
17413
17352
|
onValueChange,
|
|
@@ -17415,13 +17354,13 @@ var DateFilterPopUp = (0, import_react87.forwardRef)(function DateFilterPopUp2({
|
|
|
17415
17354
|
...props
|
|
17416
17355
|
}, ref) {
|
|
17417
17356
|
const translation = useHightideTranslation();
|
|
17418
|
-
const id = (0,
|
|
17357
|
+
const id = (0, import_react86.useId)();
|
|
17419
17358
|
const ids = {
|
|
17420
17359
|
startDate: `date-filter-start-date-${id}`,
|
|
17421
17360
|
endDate: `date-filter-end-date-${id}`,
|
|
17422
17361
|
compareDate: `date-filter-compare-date-${id}`
|
|
17423
17362
|
};
|
|
17424
|
-
const operator = (0,
|
|
17363
|
+
const operator = (0, import_react86.useMemo)(() => {
|
|
17425
17364
|
const suggestion = value?.operator ?? "between";
|
|
17426
17365
|
if (!FilterOperatorUtils.typeCheck.date(suggestion)) {
|
|
17427
17366
|
return "between";
|
|
@@ -17429,11 +17368,11 @@ var DateFilterPopUp = (0, import_react87.forwardRef)(function DateFilterPopUp2({
|
|
|
17429
17368
|
return suggestion;
|
|
17430
17369
|
}, [value]);
|
|
17431
17370
|
const parameter = value?.parameter ?? {};
|
|
17432
|
-
const [temporaryMinDateValue, setTemporaryMinDateValue] = (0,
|
|
17433
|
-
const [temporaryMaxDateValue, setTemporaryMaxDateValue] = (0,
|
|
17371
|
+
const [temporaryMinDateValue, setTemporaryMinDateValue] = (0, import_react86.useState)(null);
|
|
17372
|
+
const [temporaryMaxDateValue, setTemporaryMaxDateValue] = (0, import_react86.useState)(null);
|
|
17434
17373
|
const needsRangeInput = operator === "between" || operator === "notBetween";
|
|
17435
17374
|
const needsParameterInput = operator !== "isUndefined" && operator !== "isNotUndefined";
|
|
17436
|
-
return /* @__PURE__ */ (0,
|
|
17375
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
17437
17376
|
FilterBasePopUp,
|
|
17438
17377
|
{
|
|
17439
17378
|
ref,
|
|
@@ -17445,36 +17384,36 @@ var DateFilterPopUp = (0, import_react87.forwardRef)(function DateFilterPopUp2({
|
|
|
17445
17384
|
allowedOperators: FilterOperatorUtils.operatorsByCategory.date,
|
|
17446
17385
|
noParameterRequired: !needsParameterInput,
|
|
17447
17386
|
children: [
|
|
17448
|
-
/* @__PURE__ */ (0,
|
|
17449
|
-
/* @__PURE__ */ (0,
|
|
17450
|
-
/* @__PURE__ */ (0,
|
|
17451
|
-
/* @__PURE__ */ (0,
|
|
17387
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(Visibility, { isVisible: needsRangeInput, children: [
|
|
17388
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex-col-1", children: [
|
|
17389
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: ids.startDate, className: "typography-label-md", children: translation("startDate") }),
|
|
17390
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17452
17391
|
DateTimeInput,
|
|
17453
17392
|
{
|
|
17454
17393
|
id: ids.startDate,
|
|
17455
|
-
value: temporaryMinDateValue ?? parameter.
|
|
17394
|
+
value: temporaryMinDateValue ?? parameter.dateMin ?? null,
|
|
17456
17395
|
onValueChange: setTemporaryMinDateValue,
|
|
17457
17396
|
onEditComplete: (dateValue) => {
|
|
17458
|
-
if (dateValue && parameter.
|
|
17459
|
-
if (!parameter.
|
|
17397
|
+
if (dateValue && parameter.dateMax && dateValue > parameter.dateMax) {
|
|
17398
|
+
if (!parameter.dateMin) {
|
|
17460
17399
|
onValueChange({
|
|
17461
17400
|
dataType: "date",
|
|
17462
17401
|
operator,
|
|
17463
|
-
parameter: { ...parameter,
|
|
17402
|
+
parameter: { ...parameter, dateMin: parameter.dateMax, dateMax: dateValue }
|
|
17464
17403
|
});
|
|
17465
17404
|
} else {
|
|
17466
|
-
const diff = parameter.
|
|
17405
|
+
const diff = parameter.dateMax.getTime() - parameter.dateMin.getTime();
|
|
17467
17406
|
onValueChange({
|
|
17468
17407
|
dataType: "date",
|
|
17469
17408
|
operator,
|
|
17470
|
-
parameter: { ...parameter,
|
|
17409
|
+
parameter: { ...parameter, dateMin: dateValue, dateMax: new Date(dateValue.getTime() + diff) }
|
|
17471
17410
|
});
|
|
17472
17411
|
}
|
|
17473
17412
|
} else {
|
|
17474
17413
|
onValueChange({
|
|
17475
17414
|
dataType: "date",
|
|
17476
17415
|
operator,
|
|
17477
|
-
parameter: { ...parameter,
|
|
17416
|
+
parameter: { ...parameter, dateMin: dateValue }
|
|
17478
17417
|
});
|
|
17479
17418
|
}
|
|
17480
17419
|
setTemporaryMinDateValue(null);
|
|
@@ -17485,35 +17424,35 @@ var DateFilterPopUp = (0, import_react87.forwardRef)(function DateFilterPopUp2({
|
|
|
17485
17424
|
}
|
|
17486
17425
|
)
|
|
17487
17426
|
] }),
|
|
17488
|
-
/* @__PURE__ */ (0,
|
|
17489
|
-
/* @__PURE__ */ (0,
|
|
17490
|
-
/* @__PURE__ */ (0,
|
|
17427
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex-col-1", children: [
|
|
17428
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: ids.endDate, className: "typography-label-md", children: translation("endDate") }),
|
|
17429
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17491
17430
|
DateTimeInput,
|
|
17492
17431
|
{
|
|
17493
17432
|
id: ids.endDate,
|
|
17494
|
-
value: temporaryMaxDateValue ?? parameter.
|
|
17433
|
+
value: temporaryMaxDateValue ?? parameter.dateMax ?? null,
|
|
17495
17434
|
onValueChange: setTemporaryMaxDateValue,
|
|
17496
17435
|
onEditComplete: (dateValue) => {
|
|
17497
|
-
if (dateValue && parameter.
|
|
17498
|
-
if (!parameter.
|
|
17436
|
+
if (dateValue && parameter.dateMin && dateValue < parameter.dateMin) {
|
|
17437
|
+
if (!parameter.dateMax) {
|
|
17499
17438
|
onValueChange({
|
|
17500
17439
|
dataType: "date",
|
|
17501
17440
|
operator,
|
|
17502
|
-
parameter: { ...parameter,
|
|
17441
|
+
parameter: { ...parameter, dateMin: dateValue, dateMax: parameter.dateMin }
|
|
17503
17442
|
});
|
|
17504
17443
|
} else {
|
|
17505
|
-
const diff = parameter.
|
|
17444
|
+
const diff = parameter.dateMax.getTime() - parameter.dateMin.getTime();
|
|
17506
17445
|
onValueChange({
|
|
17507
17446
|
dataType: "date",
|
|
17508
17447
|
operator,
|
|
17509
|
-
parameter: { ...parameter,
|
|
17448
|
+
parameter: { ...parameter, dateMin: new Date(dateValue.getTime() - diff), dateMax: dateValue }
|
|
17510
17449
|
});
|
|
17511
17450
|
}
|
|
17512
17451
|
} else {
|
|
17513
17452
|
onValueChange({
|
|
17514
17453
|
dataType: "date",
|
|
17515
17454
|
operator,
|
|
17516
|
-
parameter: { ...parameter,
|
|
17455
|
+
parameter: { ...parameter, dateMax: dateValue }
|
|
17517
17456
|
});
|
|
17518
17457
|
}
|
|
17519
17458
|
setTemporaryMaxDateValue(null);
|
|
@@ -17525,17 +17464,17 @@ var DateFilterPopUp = (0, import_react87.forwardRef)(function DateFilterPopUp2({
|
|
|
17525
17464
|
)
|
|
17526
17465
|
] })
|
|
17527
17466
|
] }),
|
|
17528
|
-
/* @__PURE__ */ (0,
|
|
17529
|
-
/* @__PURE__ */ (0,
|
|
17530
|
-
/* @__PURE__ */ (0,
|
|
17467
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(Visibility, { isVisible: !needsRangeInput && needsParameterInput, children: [
|
|
17468
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: ids.compareDate, className: "typography-label-md", children: translation("date") }),
|
|
17469
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17531
17470
|
DateTimeInput,
|
|
17532
17471
|
{
|
|
17533
17472
|
id: ids.compareDate,
|
|
17534
|
-
value: parameter.
|
|
17473
|
+
value: parameter.dateValue ?? null,
|
|
17535
17474
|
onValueChange: (compareDate) => {
|
|
17536
17475
|
onValueChange({
|
|
17537
17476
|
...value,
|
|
17538
|
-
parameter: { ...parameter, compareDate }
|
|
17477
|
+
parameter: { ...parameter, dateValue: compareDate }
|
|
17539
17478
|
});
|
|
17540
17479
|
},
|
|
17541
17480
|
allowRemove: true,
|
|
@@ -17544,12 +17483,12 @@ var DateFilterPopUp = (0, import_react87.forwardRef)(function DateFilterPopUp2({
|
|
|
17544
17483
|
}
|
|
17545
17484
|
)
|
|
17546
17485
|
] }),
|
|
17547
|
-
/* @__PURE__ */ (0,
|
|
17486
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: !needsParameterInput, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "text-sm text-description h-10", children: translation("noParameterRequired") }) })
|
|
17548
17487
|
]
|
|
17549
17488
|
}
|
|
17550
17489
|
);
|
|
17551
17490
|
});
|
|
17552
|
-
var DatetimeFilterPopUp = (0,
|
|
17491
|
+
var DatetimeFilterPopUp = (0, import_react86.forwardRef)(function DatetimeFilterPopUp2({
|
|
17553
17492
|
name,
|
|
17554
17493
|
value,
|
|
17555
17494
|
onValueChange,
|
|
@@ -17557,13 +17496,13 @@ var DatetimeFilterPopUp = (0, import_react87.forwardRef)(function DatetimeFilter
|
|
|
17557
17496
|
...props
|
|
17558
17497
|
}, ref) {
|
|
17559
17498
|
const translation = useHightideTranslation();
|
|
17560
|
-
const id = (0,
|
|
17499
|
+
const id = (0, import_react86.useId)();
|
|
17561
17500
|
const ids = {
|
|
17562
17501
|
startDate: `datetime-filter-start-date-${id}`,
|
|
17563
17502
|
endDate: `datetime-filter-end-date-${id}`,
|
|
17564
17503
|
compareDate: `datetime-filter-compare-date-${id}`
|
|
17565
17504
|
};
|
|
17566
|
-
const operator = (0,
|
|
17505
|
+
const operator = (0, import_react86.useMemo)(() => {
|
|
17567
17506
|
const suggestion = value?.operator ?? "between";
|
|
17568
17507
|
if (!FilterOperatorUtils.typeCheck.datetime(suggestion)) {
|
|
17569
17508
|
return "between";
|
|
@@ -17571,11 +17510,11 @@ var DatetimeFilterPopUp = (0, import_react87.forwardRef)(function DatetimeFilter
|
|
|
17571
17510
|
return suggestion;
|
|
17572
17511
|
}, [value]);
|
|
17573
17512
|
const parameter = value?.parameter ?? {};
|
|
17574
|
-
const [temporaryMinDateValue, setTemporaryMinDateValue] = (0,
|
|
17575
|
-
const [temporaryMaxDateValue, setTemporaryMaxDateValue] = (0,
|
|
17513
|
+
const [temporaryMinDateValue, setTemporaryMinDateValue] = (0, import_react86.useState)(null);
|
|
17514
|
+
const [temporaryMaxDateValue, setTemporaryMaxDateValue] = (0, import_react86.useState)(null);
|
|
17576
17515
|
const needsRangeInput = operator === "between" || operator === "notBetween";
|
|
17577
17516
|
const needsParameterInput = operator !== "isUndefined" && operator !== "isNotUndefined";
|
|
17578
|
-
return /* @__PURE__ */ (0,
|
|
17517
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
17579
17518
|
FilterBasePopUp,
|
|
17580
17519
|
{
|
|
17581
17520
|
ref,
|
|
@@ -17586,37 +17525,37 @@ var DatetimeFilterPopUp = (0, import_react87.forwardRef)(function DatetimeFilter
|
|
|
17586
17525
|
onRemove,
|
|
17587
17526
|
allowedOperators: FilterOperatorUtils.operatorsByCategory.dateTime,
|
|
17588
17527
|
children: [
|
|
17589
|
-
/* @__PURE__ */ (0,
|
|
17590
|
-
/* @__PURE__ */ (0,
|
|
17591
|
-
/* @__PURE__ */ (0,
|
|
17592
|
-
/* @__PURE__ */ (0,
|
|
17528
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "typography-label-lg font-semibold", children: translation("parameter") }),
|
|
17529
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: needsRangeInput, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "flex-col-2 gap-2", children: [
|
|
17530
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: ids.startDate, className: "typography-label-md", children: translation("startDate") }),
|
|
17531
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17593
17532
|
DateTimeInput,
|
|
17594
17533
|
{
|
|
17595
17534
|
id: ids.startDate,
|
|
17596
17535
|
mode: "dateTime",
|
|
17597
|
-
value: temporaryMinDateValue ?? parameter.
|
|
17536
|
+
value: temporaryMinDateValue ?? parameter.dateMin ?? null,
|
|
17598
17537
|
onValueChange: setTemporaryMinDateValue,
|
|
17599
17538
|
onEditComplete: (dateValue) => {
|
|
17600
|
-
if (dateValue && parameter.
|
|
17601
|
-
if (!parameter.
|
|
17539
|
+
if (dateValue && parameter.dateMax && dateValue > parameter.dateMax) {
|
|
17540
|
+
if (!parameter.dateMin) {
|
|
17602
17541
|
onValueChange({
|
|
17603
17542
|
dataType: "dateTime",
|
|
17604
17543
|
operator,
|
|
17605
|
-
parameter: { ...parameter,
|
|
17544
|
+
parameter: { ...parameter, dateMin: parameter.dateMax, dateMax: dateValue }
|
|
17606
17545
|
});
|
|
17607
17546
|
} else {
|
|
17608
|
-
const diff = parameter.
|
|
17547
|
+
const diff = parameter.dateMax.getTime() - parameter.dateMin.getTime();
|
|
17609
17548
|
onValueChange({
|
|
17610
17549
|
dataType: "dateTime",
|
|
17611
17550
|
operator,
|
|
17612
|
-
parameter: { ...parameter,
|
|
17551
|
+
parameter: { ...parameter, dateMin: dateValue, dateMax: new Date(dateValue.getTime() + diff) }
|
|
17613
17552
|
});
|
|
17614
17553
|
}
|
|
17615
17554
|
} else {
|
|
17616
17555
|
onValueChange({
|
|
17617
17556
|
dataType: "dateTime",
|
|
17618
17557
|
operator,
|
|
17619
|
-
parameter: { ...parameter,
|
|
17558
|
+
parameter: { ...parameter, dateMin: dateValue }
|
|
17620
17559
|
});
|
|
17621
17560
|
}
|
|
17622
17561
|
setTemporaryMinDateValue(null);
|
|
@@ -17626,35 +17565,35 @@ var DatetimeFilterPopUp = (0, import_react87.forwardRef)(function DatetimeFilter
|
|
|
17626
17565
|
className: "min-w-64"
|
|
17627
17566
|
}
|
|
17628
17567
|
),
|
|
17629
|
-
/* @__PURE__ */ (0,
|
|
17630
|
-
/* @__PURE__ */ (0,
|
|
17568
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: ids.endDate, className: "typography-label-md", children: translation("endDate") }),
|
|
17569
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17631
17570
|
DateTimeInput,
|
|
17632
17571
|
{
|
|
17633
17572
|
id: ids.endDate,
|
|
17634
17573
|
mode: "dateTime",
|
|
17635
|
-
value: temporaryMaxDateValue ?? parameter.
|
|
17574
|
+
value: temporaryMaxDateValue ?? parameter.dateMax ?? null,
|
|
17636
17575
|
onValueChange: setTemporaryMaxDateValue,
|
|
17637
17576
|
onEditComplete: (dateValue) => {
|
|
17638
|
-
if (dateValue && parameter.
|
|
17639
|
-
if (!parameter.
|
|
17577
|
+
if (dateValue && parameter.dateMin && dateValue < parameter.dateMin) {
|
|
17578
|
+
if (!parameter.dateMax) {
|
|
17640
17579
|
onValueChange({
|
|
17641
17580
|
dataType: "dateTime",
|
|
17642
17581
|
operator,
|
|
17643
|
-
parameter: { ...parameter,
|
|
17582
|
+
parameter: { ...parameter, dateMin: dateValue, dateMax: parameter.dateMin }
|
|
17644
17583
|
});
|
|
17645
17584
|
} else {
|
|
17646
|
-
const diff = parameter.
|
|
17585
|
+
const diff = parameter.dateMax.getTime() - parameter.dateMin.getTime();
|
|
17647
17586
|
onValueChange({
|
|
17648
17587
|
dataType: "dateTime",
|
|
17649
17588
|
operator,
|
|
17650
|
-
parameter: { ...parameter,
|
|
17589
|
+
parameter: { ...parameter, dateMin: new Date(dateValue.getTime() - diff), dateMax: dateValue }
|
|
17651
17590
|
});
|
|
17652
17591
|
}
|
|
17653
17592
|
} else {
|
|
17654
17593
|
onValueChange({
|
|
17655
17594
|
dataType: "dateTime",
|
|
17656
17595
|
operator,
|
|
17657
|
-
parameter: { ...parameter,
|
|
17596
|
+
parameter: { ...parameter, dateMax: dateValue }
|
|
17658
17597
|
});
|
|
17659
17598
|
}
|
|
17660
17599
|
setTemporaryMaxDateValue(null);
|
|
@@ -17665,19 +17604,19 @@ var DatetimeFilterPopUp = (0, import_react87.forwardRef)(function DatetimeFilter
|
|
|
17665
17604
|
}
|
|
17666
17605
|
)
|
|
17667
17606
|
] }) }),
|
|
17668
|
-
/* @__PURE__ */ (0,
|
|
17669
|
-
/* @__PURE__ */ (0,
|
|
17670
|
-
/* @__PURE__ */ (0,
|
|
17607
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(Visibility, { isVisible: !needsRangeInput && needsParameterInput, children: [
|
|
17608
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("label", { htmlFor: ids.compareDate, className: "typography-label-md", children: translation("date") }),
|
|
17609
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17671
17610
|
DateTimeInput,
|
|
17672
17611
|
{
|
|
17673
17612
|
id: ids.compareDate,
|
|
17674
17613
|
mode: "dateTime",
|
|
17675
|
-
value: parameter.
|
|
17614
|
+
value: parameter.dateValue ?? null,
|
|
17676
17615
|
onValueChange: (compareDate) => {
|
|
17677
17616
|
onValueChange({
|
|
17678
17617
|
dataType: "dateTime",
|
|
17679
17618
|
operator,
|
|
17680
|
-
parameter: { ...parameter, compareDate }
|
|
17619
|
+
parameter: { ...parameter, dateValue: compareDate }
|
|
17681
17620
|
});
|
|
17682
17621
|
},
|
|
17683
17622
|
allowRemove: true,
|
|
@@ -17686,19 +17625,19 @@ var DatetimeFilterPopUp = (0, import_react87.forwardRef)(function DatetimeFilter
|
|
|
17686
17625
|
}
|
|
17687
17626
|
)
|
|
17688
17627
|
] }),
|
|
17689
|
-
/* @__PURE__ */ (0,
|
|
17628
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: !needsParameterInput, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "text-sm text-description h-10", children: translation("noParameterRequired") }) })
|
|
17690
17629
|
]
|
|
17691
17630
|
}
|
|
17692
17631
|
);
|
|
17693
17632
|
});
|
|
17694
|
-
var BooleanFilterPopUp = (0,
|
|
17633
|
+
var BooleanFilterPopUp = (0, import_react86.forwardRef)(function BooleanFilterPopUp2({
|
|
17695
17634
|
name,
|
|
17696
17635
|
value,
|
|
17697
17636
|
onValueChange,
|
|
17698
17637
|
onRemove,
|
|
17699
17638
|
...props
|
|
17700
17639
|
}, ref) {
|
|
17701
|
-
const operator = (0,
|
|
17640
|
+
const operator = (0, import_react86.useMemo)(() => {
|
|
17702
17641
|
const suggestion = value?.operator ?? "isTrue";
|
|
17703
17642
|
if (!FilterOperatorUtils.typeCheck.boolean(suggestion)) {
|
|
17704
17643
|
return "isTrue";
|
|
@@ -17706,7 +17645,7 @@ var BooleanFilterPopUp = (0, import_react87.forwardRef)(function BooleanFilterPo
|
|
|
17706
17645
|
return suggestion;
|
|
17707
17646
|
}, [value]);
|
|
17708
17647
|
const parameter = value?.parameter ?? {};
|
|
17709
|
-
return /* @__PURE__ */ (0,
|
|
17648
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17710
17649
|
FilterBasePopUp,
|
|
17711
17650
|
{
|
|
17712
17651
|
ref,
|
|
@@ -17719,7 +17658,7 @@ var BooleanFilterPopUp = (0, import_react87.forwardRef)(function BooleanFilterPo
|
|
|
17719
17658
|
}
|
|
17720
17659
|
);
|
|
17721
17660
|
});
|
|
17722
|
-
var TagsFilterPopUp = (0,
|
|
17661
|
+
var TagsFilterPopUp = (0, import_react86.forwardRef)(function TagsFilterPopUp2({
|
|
17723
17662
|
name,
|
|
17724
17663
|
value,
|
|
17725
17664
|
onValueChange,
|
|
@@ -17728,7 +17667,7 @@ var TagsFilterPopUp = (0, import_react87.forwardRef)(function TagsFilterPopUp2({
|
|
|
17728
17667
|
...props
|
|
17729
17668
|
}, ref) {
|
|
17730
17669
|
const translation = useHightideTranslation();
|
|
17731
|
-
const operator = (0,
|
|
17670
|
+
const operator = (0, import_react86.useMemo)(() => {
|
|
17732
17671
|
const suggestion = value?.operator ?? "contains";
|
|
17733
17672
|
if (!FilterOperatorUtils.typeCheck.tags(suggestion)) {
|
|
17734
17673
|
return "contains";
|
|
@@ -17736,12 +17675,12 @@ var TagsFilterPopUp = (0, import_react87.forwardRef)(function TagsFilterPopUp2({
|
|
|
17736
17675
|
return suggestion;
|
|
17737
17676
|
}, [value]);
|
|
17738
17677
|
const parameter = value?.parameter ?? {};
|
|
17739
|
-
const selectedTags = Array.isArray(parameter.
|
|
17678
|
+
const selectedTags = Array.isArray(parameter.uuidValues) ? parameter.uuidValues : [];
|
|
17740
17679
|
const needsParameterInput = operator !== "isUndefined" && operator !== "isNotUndefined";
|
|
17741
17680
|
if (availableTags.length === 0) {
|
|
17742
17681
|
return null;
|
|
17743
17682
|
}
|
|
17744
|
-
return /* @__PURE__ */ (0,
|
|
17683
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
17745
17684
|
FilterBasePopUp,
|
|
17746
17685
|
{
|
|
17747
17686
|
ref,
|
|
@@ -17752,8 +17691,8 @@ var TagsFilterPopUp = (0, import_react87.forwardRef)(function TagsFilterPopUp2({
|
|
|
17752
17691
|
onRemove,
|
|
17753
17692
|
allowedOperators: FilterOperatorUtils.operatorsByCategory.multiTags,
|
|
17754
17693
|
children: [
|
|
17755
|
-
/* @__PURE__ */ (0,
|
|
17756
|
-
/* @__PURE__ */ (0,
|
|
17694
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "typography-label-lg font-semibold", children: translation("parameter") }),
|
|
17695
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: needsParameterInput, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17757
17696
|
MultiSelect,
|
|
17758
17697
|
{
|
|
17759
17698
|
value: selectedTags,
|
|
@@ -17761,19 +17700,19 @@ var TagsFilterPopUp = (0, import_react87.forwardRef)(function TagsFilterPopUp2({
|
|
|
17761
17700
|
onValueChange({
|
|
17762
17701
|
dataType: "multiTags",
|
|
17763
17702
|
operator,
|
|
17764
|
-
parameter: { ...parameter,
|
|
17703
|
+
parameter: { ...parameter, uuidValues: selected.length > 0 ? selected : void 0 }
|
|
17765
17704
|
});
|
|
17766
17705
|
},
|
|
17767
17706
|
buttonProps: { className: "min-w-64" },
|
|
17768
|
-
children: availableTags.map(({ tag, label }) => /* @__PURE__ */ (0,
|
|
17707
|
+
children: availableTags.map(({ tag, label }) => /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(MultiSelectOption, { value: tag, label, children: label }, tag))
|
|
17769
17708
|
}
|
|
17770
17709
|
) }),
|
|
17771
|
-
/* @__PURE__ */ (0,
|
|
17710
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: !needsParameterInput, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "text-sm text-description h-10", children: translation("noParameterRequired") }) })
|
|
17772
17711
|
]
|
|
17773
17712
|
}
|
|
17774
17713
|
);
|
|
17775
17714
|
});
|
|
17776
|
-
var TagsSingleFilterPopUp = (0,
|
|
17715
|
+
var TagsSingleFilterPopUp = (0, import_react86.forwardRef)(function TagsSingleFilterPopUp2({
|
|
17777
17716
|
name,
|
|
17778
17717
|
value,
|
|
17779
17718
|
onValueChange,
|
|
@@ -17782,7 +17721,7 @@ var TagsSingleFilterPopUp = (0, import_react87.forwardRef)(function TagsSingleFi
|
|
|
17782
17721
|
...props
|
|
17783
17722
|
}, ref) {
|
|
17784
17723
|
const translation = useHightideTranslation();
|
|
17785
|
-
const operator = (0,
|
|
17724
|
+
const operator = (0, import_react86.useMemo)(() => {
|
|
17786
17725
|
const suggestion = value?.operator ?? "contains";
|
|
17787
17726
|
if (!FilterOperatorUtils.typeCheck.tagsSingle(suggestion)) {
|
|
17788
17727
|
return "contains";
|
|
@@ -17790,14 +17729,14 @@ var TagsSingleFilterPopUp = (0, import_react87.forwardRef)(function TagsSingleFi
|
|
|
17790
17729
|
return suggestion;
|
|
17791
17730
|
}, [value]);
|
|
17792
17731
|
const parameter = value?.parameter ?? {};
|
|
17793
|
-
const selectedTagsMulti = Array.isArray(parameter.
|
|
17794
|
-
const selectedTagSingle = parameter.
|
|
17732
|
+
const selectedTagsMulti = Array.isArray(parameter.uuidValues) ? parameter.uuidValues : [];
|
|
17733
|
+
const selectedTagSingle = parameter.uuidValue != null ? String(parameter.uuidValue) : void 0;
|
|
17795
17734
|
const needsParameterInput = operator !== "isUndefined" && operator !== "isNotUndefined";
|
|
17796
17735
|
const needsMultiSelect = operator === "contains" || operator === "notContains";
|
|
17797
17736
|
if (availableTags.length === 0) {
|
|
17798
17737
|
return null;
|
|
17799
17738
|
}
|
|
17800
|
-
return /* @__PURE__ */ (0,
|
|
17739
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
17801
17740
|
FilterBasePopUp,
|
|
17802
17741
|
{
|
|
17803
17742
|
ref,
|
|
@@ -17808,8 +17747,8 @@ var TagsSingleFilterPopUp = (0, import_react87.forwardRef)(function TagsSingleFi
|
|
|
17808
17747
|
onRemove,
|
|
17809
17748
|
allowedOperators: FilterOperatorUtils.operatorsByCategory.singleTag,
|
|
17810
17749
|
children: [
|
|
17811
|
-
/* @__PURE__ */ (0,
|
|
17812
|
-
/* @__PURE__ */ (0,
|
|
17750
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "typography-label-lg font-semibold", children: translation("parameter") }),
|
|
17751
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: needsParameterInput && needsMultiSelect, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17813
17752
|
MultiSelect,
|
|
17814
17753
|
{
|
|
17815
17754
|
value: selectedTagsMulti,
|
|
@@ -17817,14 +17756,14 @@ var TagsSingleFilterPopUp = (0, import_react87.forwardRef)(function TagsSingleFi
|
|
|
17817
17756
|
onValueChange({
|
|
17818
17757
|
dataType: "singleTag",
|
|
17819
17758
|
operator,
|
|
17820
|
-
parameter: { ...parameter,
|
|
17759
|
+
parameter: { ...parameter, uuidValues: selected.length > 0 ? selected : void 0 }
|
|
17821
17760
|
});
|
|
17822
17761
|
},
|
|
17823
17762
|
buttonProps: { className: "min-w-64" },
|
|
17824
|
-
children: availableTags.map(({ tag, label }) => /* @__PURE__ */ (0,
|
|
17763
|
+
children: availableTags.map(({ tag, label }) => /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(MultiSelectOption, { value: tag, label }, tag))
|
|
17825
17764
|
}
|
|
17826
17765
|
) }),
|
|
17827
|
-
/* @__PURE__ */ (0,
|
|
17766
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: needsParameterInput && !needsMultiSelect, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17828
17767
|
Select,
|
|
17829
17768
|
{
|
|
17830
17769
|
value: selectedTagSingle,
|
|
@@ -17832,27 +17771,27 @@ var TagsSingleFilterPopUp = (0, import_react87.forwardRef)(function TagsSingleFi
|
|
|
17832
17771
|
onValueChange({
|
|
17833
17772
|
dataType: "singleTag",
|
|
17834
17773
|
operator,
|
|
17835
|
-
parameter: { ...parameter,
|
|
17774
|
+
parameter: { ...parameter, uuidValue: selectedTag ?? void 0 }
|
|
17836
17775
|
});
|
|
17837
17776
|
},
|
|
17838
17777
|
buttonProps: { className: "min-w-64" },
|
|
17839
|
-
children: availableTags.map(({ tag, label }) => /* @__PURE__ */ (0,
|
|
17778
|
+
children: availableTags.map(({ tag, label }) => /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(SelectOption, { value: tag, label }, tag))
|
|
17840
17779
|
}
|
|
17841
17780
|
) }),
|
|
17842
|
-
/* @__PURE__ */ (0,
|
|
17781
|
+
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Visibility, { isVisible: !needsParameterInput, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "text-sm text-description h-10", children: translation("noParameterRequired") }) })
|
|
17843
17782
|
]
|
|
17844
17783
|
}
|
|
17845
17784
|
);
|
|
17846
17785
|
});
|
|
17847
|
-
var GenericFilterPopUp = (0,
|
|
17848
|
-
const operator = (0,
|
|
17786
|
+
var GenericFilterPopUp = (0, import_react86.forwardRef)(function GenericFilterPopUp2({ name, value, onValueChange, ...props }, ref) {
|
|
17787
|
+
const operator = (0, import_react86.useMemo)(() => {
|
|
17849
17788
|
const suggestion = value?.operator ?? "isNotUndefined";
|
|
17850
17789
|
if (!FilterOperatorUtils.typeCheck.unknownType(suggestion)) {
|
|
17851
17790
|
return "isNotUndefined";
|
|
17852
17791
|
}
|
|
17853
17792
|
return suggestion;
|
|
17854
17793
|
}, [value]);
|
|
17855
|
-
return /* @__PURE__ */ (0,
|
|
17794
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
17856
17795
|
FilterBasePopUp,
|
|
17857
17796
|
{
|
|
17858
17797
|
ref,
|
|
@@ -17865,7 +17804,7 @@ var GenericFilterPopUp = (0, import_react87.forwardRef)(function GenericFilterPo
|
|
|
17865
17804
|
}
|
|
17866
17805
|
);
|
|
17867
17806
|
});
|
|
17868
|
-
var FilterPopUp = (0,
|
|
17807
|
+
var FilterPopUp = (0, import_react86.forwardRef)(function FilterPopUp2({
|
|
17869
17808
|
name,
|
|
17870
17809
|
value,
|
|
17871
17810
|
onValueChange,
|
|
@@ -17875,26 +17814,26 @@ var FilterPopUp = (0, import_react87.forwardRef)(function FilterPopUp2({
|
|
|
17875
17814
|
}, ref) {
|
|
17876
17815
|
switch (dataType) {
|
|
17877
17816
|
case "text":
|
|
17878
|
-
return /* @__PURE__ */ (0,
|
|
17817
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(TextFilterPopUp, { ref, name, value, onValueChange, ...props });
|
|
17879
17818
|
case "number":
|
|
17880
|
-
return /* @__PURE__ */ (0,
|
|
17819
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(NumberFilterPopUp, { ref, name, value, onValueChange, ...props });
|
|
17881
17820
|
case "date":
|
|
17882
|
-
return /* @__PURE__ */ (0,
|
|
17821
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(DateFilterPopUp, { ref, name, value, onValueChange, ...props });
|
|
17883
17822
|
case "dateTime":
|
|
17884
|
-
return /* @__PURE__ */ (0,
|
|
17823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(DatetimeFilterPopUp, { ref, name, value, onValueChange, ...props });
|
|
17885
17824
|
case "boolean":
|
|
17886
|
-
return /* @__PURE__ */ (0,
|
|
17825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(BooleanFilterPopUp, { ref, name, value, onValueChange, ...props });
|
|
17887
17826
|
case "multiTags":
|
|
17888
|
-
return /* @__PURE__ */ (0,
|
|
17827
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(TagsFilterPopUp, { ref, name, value, onValueChange, tags, ...props });
|
|
17889
17828
|
case "singleTag":
|
|
17890
|
-
return /* @__PURE__ */ (0,
|
|
17829
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(TagsSingleFilterPopUp, { ref, name, value, onValueChange, tags, ...props });
|
|
17891
17830
|
case "unknownType":
|
|
17892
|
-
return /* @__PURE__ */ (0,
|
|
17831
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(GenericFilterPopUp, { ref, name, value, onValueChange, ...props });
|
|
17893
17832
|
}
|
|
17894
17833
|
});
|
|
17895
17834
|
|
|
17896
17835
|
// src/components/layout/table/TableFilterButton.tsx
|
|
17897
|
-
var
|
|
17836
|
+
var import_jsx_runtime76 = require("react/jsx-runtime");
|
|
17898
17837
|
var TableFilterButton = ({
|
|
17899
17838
|
filterType,
|
|
17900
17839
|
header
|
|
@@ -17902,18 +17841,18 @@ var TableFilterButton = ({
|
|
|
17902
17841
|
const translation = useHightideTranslation();
|
|
17903
17842
|
const column = header.column;
|
|
17904
17843
|
const columnFilterValue = column.getFilterValue();
|
|
17905
|
-
const [filterValue, setFilterValue] = (0,
|
|
17844
|
+
const [filterValue, setFilterValue] = (0, import_react87.useState)(columnFilterValue);
|
|
17906
17845
|
const hasFilter = !!filterValue;
|
|
17907
|
-
const anchorRef = (0,
|
|
17908
|
-
const containerRef = (0,
|
|
17909
|
-
const [isOpen, setIsOpen] = (0,
|
|
17910
|
-
const id = (0,
|
|
17911
|
-
const ids = (0,
|
|
17846
|
+
const anchorRef = (0, import_react87.useRef)(null);
|
|
17847
|
+
const containerRef = (0, import_react87.useRef)(null);
|
|
17848
|
+
const [isOpen, setIsOpen] = (0, import_react87.useState)(false);
|
|
17849
|
+
const id = (0, import_react87.useId)();
|
|
17850
|
+
const ids = (0, import_react87.useMemo)(() => ({
|
|
17912
17851
|
button: `table-filter-button-${id}`,
|
|
17913
17852
|
popup: `table-filter-popup-${id}`,
|
|
17914
17853
|
label: `table-filter-label-${id}`
|
|
17915
17854
|
}), [id]);
|
|
17916
|
-
(0,
|
|
17855
|
+
(0, import_react87.useEffect)(() => {
|
|
17917
17856
|
setFilterValue(columnFilterValue);
|
|
17918
17857
|
}, [columnFilterValue]);
|
|
17919
17858
|
const isTagsFilter = filterType === "multiTags" || filterType === "singleTag";
|
|
@@ -17921,8 +17860,8 @@ var TableFilterButton = ({
|
|
|
17921
17860
|
if (isTagsFilter && !hasTagsMetaData) {
|
|
17922
17861
|
return null;
|
|
17923
17862
|
}
|
|
17924
|
-
return /* @__PURE__ */ (0,
|
|
17925
|
-
/* @__PURE__ */ (0,
|
|
17863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(import_jsx_runtime76.Fragment, { children: [
|
|
17864
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(
|
|
17926
17865
|
IconButton,
|
|
17927
17866
|
{
|
|
17928
17867
|
ref: anchorRef,
|
|
@@ -17938,12 +17877,12 @@ var TableFilterButton = ({
|
|
|
17938
17877
|
"aria-labelledby": ids.label,
|
|
17939
17878
|
className: "relative",
|
|
17940
17879
|
children: [
|
|
17941
|
-
/* @__PURE__ */ (0,
|
|
17942
|
-
/* @__PURE__ */ (0,
|
|
17880
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_lucide_react20.FilterIcon, { className: "size-4" }),
|
|
17881
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Visibility, { isVisible: hasFilter, children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "absolute -top-1 -right-1 w-2 h-2 rounded-full bg-primary" }) })
|
|
17943
17882
|
]
|
|
17944
17883
|
}
|
|
17945
17884
|
),
|
|
17946
|
-
/* @__PURE__ */ (0,
|
|
17885
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
17947
17886
|
FilterPopUp,
|
|
17948
17887
|
{
|
|
17949
17888
|
ref: containerRef,
|
|
@@ -17974,11 +17913,11 @@ var TableFilterButton = ({
|
|
|
17974
17913
|
};
|
|
17975
17914
|
|
|
17976
17915
|
// src/components/layout/table/TableHeader.tsx
|
|
17977
|
-
var
|
|
17916
|
+
var import_react88 = require("react");
|
|
17978
17917
|
|
|
17979
17918
|
// src/components/user-interaction/data/data-types.tsx
|
|
17980
|
-
var
|
|
17981
|
-
var
|
|
17919
|
+
var import_lucide_react21 = require("lucide-react");
|
|
17920
|
+
var import_jsx_runtime77 = require("react/jsx-runtime");
|
|
17982
17921
|
var dataTypes = [
|
|
17983
17922
|
"text",
|
|
17984
17923
|
"number",
|
|
@@ -18011,21 +17950,21 @@ var getDefaultValue = (type, selectOptions) => {
|
|
|
18011
17950
|
function toIcon(type) {
|
|
18012
17951
|
switch (type) {
|
|
18013
17952
|
case "text":
|
|
18014
|
-
return /* @__PURE__ */ (0,
|
|
17953
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react21.TextIcon, { className: "size-4" });
|
|
18015
17954
|
case "number":
|
|
18016
|
-
return /* @__PURE__ */ (0,
|
|
17955
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react21.Binary, { className: "size-4" });
|
|
18017
17956
|
case "boolean":
|
|
18018
|
-
return /* @__PURE__ */ (0,
|
|
17957
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react21.Check, { className: "size-4" });
|
|
18019
17958
|
case "date":
|
|
18020
|
-
return /* @__PURE__ */ (0,
|
|
17959
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react21.Calendar, { className: "size-4" });
|
|
18021
17960
|
case "dateTime":
|
|
18022
|
-
return /* @__PURE__ */ (0,
|
|
17961
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react21.CalendarClock, { className: "size-4" });
|
|
18023
17962
|
case "singleTag":
|
|
18024
|
-
return /* @__PURE__ */ (0,
|
|
17963
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react21.Tag, { className: "size-4" });
|
|
18025
17964
|
case "multiTags":
|
|
18026
|
-
return /* @__PURE__ */ (0,
|
|
17965
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react21.Tags, { className: "size-4" });
|
|
18027
17966
|
case "unknownType":
|
|
18028
|
-
return /* @__PURE__ */ (0,
|
|
17967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react21.Database, { className: "size-4" });
|
|
18029
17968
|
}
|
|
18030
17969
|
}
|
|
18031
17970
|
var DataTypeUtils = {
|
|
@@ -18035,10 +17974,10 @@ var DataTypeUtils = {
|
|
|
18035
17974
|
};
|
|
18036
17975
|
|
|
18037
17976
|
// src/components/layout/table/TableHeader.tsx
|
|
18038
|
-
var
|
|
17977
|
+
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
18039
17978
|
var TableHeader = ({ isSticky = false }) => {
|
|
18040
17979
|
const { table } = useTableStateWithoutSizingContext();
|
|
18041
|
-
const handleResizeMove = (0,
|
|
17980
|
+
const handleResizeMove = (0, import_react88.useCallback)((e) => {
|
|
18042
17981
|
if (!table.getState().columnSizingInfo.isResizingColumn) return;
|
|
18043
17982
|
const currentX = "touches" in e ? e.touches[0].clientX : e.clientX;
|
|
18044
17983
|
const deltaOffset = currentX - (table.getState().columnSizingInfo.startOffset ?? 0);
|
|
@@ -18054,7 +17993,7 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
18054
17993
|
deltaOffset
|
|
18055
17994
|
}));
|
|
18056
17995
|
}, [table]);
|
|
18057
|
-
const handleResizeEnd = (0,
|
|
17996
|
+
const handleResizeEnd = (0, import_react88.useCallback)(() => {
|
|
18058
17997
|
if (!table.getState().columnSizingInfo.isResizingColumn) return;
|
|
18059
17998
|
const newWidth = (table.getState().columnSizingInfo.startSize ?? 0) + (table.getState().columnSizingInfo.deltaOffset ?? 0);
|
|
18060
17999
|
table.setColumnSizing((prev) => {
|
|
@@ -18072,7 +18011,7 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
18072
18011
|
startSize: null
|
|
18073
18012
|
});
|
|
18074
18013
|
}, [table]);
|
|
18075
|
-
(0,
|
|
18014
|
+
(0, import_react88.useEffect)(() => {
|
|
18076
18015
|
window.addEventListener("pointermove", handleResizeMove);
|
|
18077
18016
|
window.addEventListener("pointerup", handleResizeEnd);
|
|
18078
18017
|
return () => {
|
|
@@ -18080,8 +18019,8 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
18080
18019
|
window.removeEventListener("pointerup", handleResizeEnd);
|
|
18081
18020
|
};
|
|
18082
18021
|
}, [handleResizeEnd, handleResizeMove, table]);
|
|
18083
|
-
return /* @__PURE__ */ (0,
|
|
18084
|
-
table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0,
|
|
18022
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
|
|
18023
|
+
table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(TableStateContext.Consumer, { children: ({ sizeVars }) => /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("colgroup", { style: sizeVars, children: headerGroup.headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
18085
18024
|
"col",
|
|
18086
18025
|
{
|
|
18087
18026
|
style: {
|
|
@@ -18092,8 +18031,8 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
18092
18031
|
},
|
|
18093
18032
|
header.id
|
|
18094
18033
|
)) }) }, headerGroup.id)),
|
|
18095
|
-
/* @__PURE__ */ (0,
|
|
18096
|
-
return /* @__PURE__ */ (0,
|
|
18034
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)("thead", { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("tr", { "data-name": "table-header-row", className: (0, import_clsx28.default)(table.options.meta?.headerRowClassName), children: headerGroup.headers.map((header) => {
|
|
18035
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
|
|
18097
18036
|
"th",
|
|
18098
18037
|
{
|
|
18099
18038
|
colSpan: header.colSpan,
|
|
@@ -18101,8 +18040,8 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
18101
18040
|
"data-name": "table-header-cell",
|
|
18102
18041
|
className: (0, import_clsx28.default)("group/table-header-cell", header.column.columnDef.meta?.className),
|
|
18103
18042
|
children: [
|
|
18104
|
-
/* @__PURE__ */ (0,
|
|
18105
|
-
/* @__PURE__ */ (0,
|
|
18043
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Visibility, { isVisible: !header.isPlaceholder, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex-row-1 items-center truncate", children: [
|
|
18044
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Visibility, { isVisible: header.column.getCanSort(), children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
18106
18045
|
TableSortButton,
|
|
18107
18046
|
{
|
|
18108
18047
|
sortDirection: header.column.getIsSorted(),
|
|
@@ -18128,7 +18067,7 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
18128
18067
|
}
|
|
18129
18068
|
}
|
|
18130
18069
|
) }),
|
|
18131
|
-
/* @__PURE__ */ (0,
|
|
18070
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Visibility, { isVisible: header.column.getCanFilter() && DataTypeUtils.types.includes(header.column.columnDef.filterFn), children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
18132
18071
|
TableFilterButton,
|
|
18133
18072
|
{
|
|
18134
18073
|
header,
|
|
@@ -18140,7 +18079,7 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
18140
18079
|
header.getContext()
|
|
18141
18080
|
)
|
|
18142
18081
|
] }) }),
|
|
18143
|
-
/* @__PURE__ */ (0,
|
|
18082
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Visibility, { isVisible: header.column.getCanResize(), children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
18144
18083
|
"div",
|
|
18145
18084
|
{
|
|
18146
18085
|
onPointerDown: (e) => {
|
|
@@ -18171,7 +18110,7 @@ var TableHeader = ({ isSticky = false }) => {
|
|
|
18171
18110
|
};
|
|
18172
18111
|
|
|
18173
18112
|
// src/components/layout/table/TableDisplay.tsx
|
|
18174
|
-
var
|
|
18113
|
+
var import_jsx_runtime79 = require("react/jsx-runtime");
|
|
18175
18114
|
var TableDisplay = ({
|
|
18176
18115
|
children,
|
|
18177
18116
|
containerProps,
|
|
@@ -18180,7 +18119,7 @@ var TableDisplay = ({
|
|
|
18180
18119
|
}) => {
|
|
18181
18120
|
const { table } = useTableStateContext();
|
|
18182
18121
|
const { containerRef } = useTableContainerContext();
|
|
18183
|
-
return /* @__PURE__ */ (0,
|
|
18122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { ...containerProps, ref: containerRef, "data-name": containerProps?.["data-name"] ?? "table-container", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
|
|
18184
18123
|
"table",
|
|
18185
18124
|
{
|
|
18186
18125
|
...props,
|
|
@@ -18191,8 +18130,8 @@ var TableDisplay = ({
|
|
|
18191
18130
|
},
|
|
18192
18131
|
children: [
|
|
18193
18132
|
children,
|
|
18194
|
-
/* @__PURE__ */ (0,
|
|
18195
|
-
/* @__PURE__ */ (0,
|
|
18133
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(TableHeader, { ...tableHeaderProps }),
|
|
18134
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(TableBody, {})
|
|
18196
18135
|
]
|
|
18197
18136
|
}
|
|
18198
18137
|
) });
|
|
@@ -18200,10 +18139,10 @@ var TableDisplay = ({
|
|
|
18200
18139
|
|
|
18201
18140
|
// src/components/layout/table/TablePagination.tsx
|
|
18202
18141
|
var import_clsx29 = __toESM(require("clsx"));
|
|
18203
|
-
var
|
|
18142
|
+
var import_jsx_runtime80 = require("react/jsx-runtime");
|
|
18204
18143
|
var TablePaginationMenu = ({ ...props }) => {
|
|
18205
18144
|
const { table } = useTableStateWithoutSizingContext();
|
|
18206
|
-
return /* @__PURE__ */ (0,
|
|
18145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
18207
18146
|
Pagination,
|
|
18208
18147
|
{
|
|
18209
18148
|
...props,
|
|
@@ -18223,23 +18162,86 @@ var TablePageSizeSelect = ({
|
|
|
18223
18162
|
}) => {
|
|
18224
18163
|
const { table } = useTableStateWithoutSizingContext();
|
|
18225
18164
|
const currentPageSize = table.getState().pagination.pageSize;
|
|
18226
|
-
return /* @__PURE__ */ (0,
|
|
18165
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
18227
18166
|
Select,
|
|
18228
18167
|
{
|
|
18229
18168
|
...props,
|
|
18230
18169
|
value: currentPageSize.toString(),
|
|
18231
18170
|
onValueChange: (value) => table.setPageSize(Number(value)),
|
|
18232
|
-
children: pageSizeOptions.map((size) => /* @__PURE__ */ (0,
|
|
18171
|
+
children: pageSizeOptions.map((size) => /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(SelectOption, { value: size.toString(), label: size.toString() }, size))
|
|
18233
18172
|
}
|
|
18234
18173
|
);
|
|
18235
18174
|
};
|
|
18236
18175
|
var TablePagination = ({ allowChangingPageSize = true, pageSizeOptions, ...props }) => {
|
|
18237
|
-
return /* @__PURE__ */ (0,
|
|
18238
|
-
/* @__PURE__ */ (0,
|
|
18239
|
-
/* @__PURE__ */ (0,
|
|
18176
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { ...props, className: (0, import_clsx29.default)("container flex-col-2 sm:flex-row-8 items-center justify-center", props.className), children: [
|
|
18177
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(TablePaginationMenu, {}),
|
|
18178
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Visibility, { isVisible: allowChangingPageSize, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(TablePageSizeSelect, { pageSizeOptions, buttonProps: { className: "h-10 min-w-24 max-w-24" } }) })
|
|
18240
18179
|
] });
|
|
18241
18180
|
};
|
|
18242
18181
|
|
|
18182
|
+
// src/components/user-interaction/Checkbox.tsx
|
|
18183
|
+
var import_lucide_react22 = require("lucide-react");
|
|
18184
|
+
var import_react89 = require("react");
|
|
18185
|
+
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
18186
|
+
var Checkbox = ({
|
|
18187
|
+
value: controlledValue,
|
|
18188
|
+
initialValue = false,
|
|
18189
|
+
indeterminate,
|
|
18190
|
+
required = false,
|
|
18191
|
+
invalid = false,
|
|
18192
|
+
disabled = false,
|
|
18193
|
+
readOnly = false,
|
|
18194
|
+
onValueChange,
|
|
18195
|
+
onEditComplete,
|
|
18196
|
+
size = "md",
|
|
18197
|
+
alwaysShowCheckIcon = false,
|
|
18198
|
+
...props
|
|
18199
|
+
}) => {
|
|
18200
|
+
const onEditCompleteStable = useEventCallbackStabilizer(onEditComplete);
|
|
18201
|
+
const onValueChangeStable = useEventCallbackStabilizer(onValueChange);
|
|
18202
|
+
const onChangeWrapper = (0, import_react89.useCallback)((value2) => {
|
|
18203
|
+
onValueChangeStable(value2);
|
|
18204
|
+
onEditCompleteStable(value2);
|
|
18205
|
+
}, [onValueChangeStable, onEditCompleteStable]);
|
|
18206
|
+
const [value, setValue] = useControlledState({
|
|
18207
|
+
value: controlledValue,
|
|
18208
|
+
onValueChange: onChangeWrapper,
|
|
18209
|
+
defaultValue: initialValue
|
|
18210
|
+
});
|
|
18211
|
+
return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
|
|
18212
|
+
"div",
|
|
18213
|
+
{
|
|
18214
|
+
...props,
|
|
18215
|
+
onClick: (event) => {
|
|
18216
|
+
if (!disabled) {
|
|
18217
|
+
setValue((prev) => !prev);
|
|
18218
|
+
}
|
|
18219
|
+
props.onClick?.(event);
|
|
18220
|
+
},
|
|
18221
|
+
onKeyDown: (event) => {
|
|
18222
|
+
if (disabled) return;
|
|
18223
|
+
if (event.key === " " || event.key === "Enter") {
|
|
18224
|
+
event.preventDefault();
|
|
18225
|
+
setValue((prev) => !prev);
|
|
18226
|
+
}
|
|
18227
|
+
props.onKeyDown?.(event);
|
|
18228
|
+
},
|
|
18229
|
+
"data-checked": !indeterminate ? value : "indeterminate",
|
|
18230
|
+
"data-size": size ?? void 0,
|
|
18231
|
+
...PropsUtil.dataAttributes.interactionStates({ disabled, invalid, readOnly, required }),
|
|
18232
|
+
role: "checkbox",
|
|
18233
|
+
tabIndex: disabled ? -1 : 0,
|
|
18234
|
+
"aria-checked": indeterminate ? "mixed" : value,
|
|
18235
|
+
...PropsUtil.aria.interactionStates({ disabled, invalid, readOnly, required }, props),
|
|
18236
|
+
"data-name": props["data-name"] ?? "checkbox",
|
|
18237
|
+
children: [
|
|
18238
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Visibility, { isVisible: indeterminate, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react22.Minus, { "data-name": "checkbox-indicator", className: "checkbox-indicator", "aria-hidden": true }) }),
|
|
18239
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Visibility, { isVisible: !indeterminate && (alwaysShowCheckIcon || value), children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react22.Check, { "data-name": "checkbox-indicator", className: "checkbox-indicator", "aria-hidden": true }) })
|
|
18240
|
+
]
|
|
18241
|
+
}
|
|
18242
|
+
);
|
|
18243
|
+
};
|
|
18244
|
+
|
|
18243
18245
|
// src/components/layout/table/TableWithSelectionProvider.tsx
|
|
18244
18246
|
var import_react90 = require("react");
|
|
18245
18247
|
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
@@ -18405,6 +18407,8 @@ var TableColumnSwitcherPopUp = ({ ...props }) => {
|
|
|
18405
18407
|
popup: props.id ?? `table-column-picker-popup-${generatedId}`,
|
|
18406
18408
|
label: `table-column-picker-label-${generatedId}`
|
|
18407
18409
|
}), [generatedId, props.id]);
|
|
18410
|
+
const enableHiding = table.options.enableHiding !== false;
|
|
18411
|
+
const enableColumnPinning = table.options.enableColumnPinning !== false;
|
|
18408
18412
|
const tableState = table.getState();
|
|
18409
18413
|
const columnOrder = tableState.columnOrder;
|
|
18410
18414
|
const columnPinning = tableState.columnPinning;
|
|
@@ -18609,7 +18613,7 @@ var TableColumnSwitcherPopUp = ({ ...props }) => {
|
|
|
18609
18613
|
] }) }),
|
|
18610
18614
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "flex-1 typography-label-lg", children: getColumnHeader(columnId) }),
|
|
18611
18615
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(import_jsx_runtime85.Fragment, { children: [
|
|
18612
|
-
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
18616
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Visibility, { isVisible: enableHiding, children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
18613
18617
|
IconButton,
|
|
18614
18618
|
{
|
|
18615
18619
|
tooltip: translation("changeVisibility"),
|
|
@@ -18621,8 +18625,8 @@ var TableColumnSwitcherPopUp = ({ ...props }) => {
|
|
|
18621
18625
|
"aria-label": isVisible ? translation("hideColumn") : translation("showColumn"),
|
|
18622
18626
|
children: isVisible ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react23.Eye, { className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react23.EyeOff, { className: "size-4" })
|
|
18623
18627
|
}
|
|
18624
|
-
),
|
|
18625
|
-
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
18628
|
+
) }),
|
|
18629
|
+
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Visibility, { isVisible: enableColumnPinning, children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
|
|
18626
18630
|
IconButton,
|
|
18627
18631
|
{
|
|
18628
18632
|
tooltip: translation("changePinning"),
|
|
@@ -18640,7 +18644,7 @@ var TableColumnSwitcherPopUp = ({ ...props }) => {
|
|
|
18640
18644
|
"aria-label": isPinned ? translation("unpin") : translation("pinLeft"),
|
|
18641
18645
|
children: !isPinned ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react23.PinOff, { className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react23.Pin, { className: "size-4" })
|
|
18642
18646
|
}
|
|
18643
|
-
)
|
|
18647
|
+
) })
|
|
18644
18648
|
] })
|
|
18645
18649
|
] }, columnId);
|
|
18646
18650
|
}) })
|
|
@@ -18658,7 +18662,7 @@ var TableColumnSwitcher = ({ buttonProps, ...props }) => {
|
|
|
18658
18662
|
color: "neutral",
|
|
18659
18663
|
tooltip: translation("changeColumnDisplay"),
|
|
18660
18664
|
...buttonProps,
|
|
18661
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react23.
|
|
18665
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react23.Columns3Cog, { className: "size-5" })
|
|
18662
18666
|
}
|
|
18663
18667
|
) }),
|
|
18664
18668
|
/* @__PURE__ */ (0, import_jsx_runtime85.jsx)(TableColumnSwitcherPopUp, { ...props })
|
|
@@ -19667,9 +19671,9 @@ var FilterList = ({ value, onValueChange, availableItems }) => {
|
|
|
19667
19671
|
}
|
|
19668
19672
|
return value;
|
|
19669
19673
|
}, [value, editState]);
|
|
19670
|
-
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex-row-
|
|
19674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex-row-2 flex-wrap gap-y-2", children: [
|
|
19671
19675
|
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(PopUpRoot, { children: [
|
|
19672
|
-
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(PopUpOpener, { children: ({ toggleOpen, props }) => /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(Button, { ...props, onClick: toggleOpen, color: "neutral", size: "
|
|
19676
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(PopUpOpener, { children: ({ toggleOpen, props }) => /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(Button, { ...props, onClick: toggleOpen, color: "neutral", size: "sm", className: "min-w-36", children: [
|
|
19673
19677
|
translation("addFilter"),
|
|
19674
19678
|
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react26.PlusIcon, { className: "size-4" })
|
|
19675
19679
|
] }) }),
|
|
@@ -19718,10 +19722,10 @@ var FilterList = ({ value, onValueChange, availableItems }) => {
|
|
|
19718
19722
|
}
|
|
19719
19723
|
},
|
|
19720
19724
|
children: [
|
|
19721
|
-
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(PopUpOpener, { children: ({ toggleOpen, props
|
|
19722
|
-
|
|
19723
|
-
|
|
19724
|
-
] }) }),
|
|
19725
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(PopUpOpener, { children: ({ toggleOpen, props }) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { ...props, onClick: toggleOpen, color: "primary", coloringStyle: "tonal-outline", size: "sm", children: item.activeLabelBuilder ? item.activeLabelBuilder(columnFilter.value) : /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [
|
|
19726
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "font-bold", children: item.label }),
|
|
19727
|
+
filterValueToLabel(columnFilter.value, { tags: item.tags })
|
|
19728
|
+
] }) }) }),
|
|
19725
19729
|
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(PopUpContext.Consumer, { children: ({ isOpen, setIsOpen }) => item.popUpBuilder ? item.popUpBuilder({
|
|
19726
19730
|
value: editState?.id === columnFilter.id ? editState.value : columnFilter.value,
|
|
19727
19731
|
onValueChange: (value2) => setEditState({ ...columnFilter, value: value2 }),
|
|
@@ -19729,11 +19733,12 @@ var FilterList = ({ value, onValueChange, availableItems }) => {
|
|
|
19729
19733
|
onValueChange(value.filter((prevItem) => prevItem.id !== columnFilter.id));
|
|
19730
19734
|
setEditState(void 0);
|
|
19731
19735
|
},
|
|
19736
|
+
operatorOverrides: item.operatorOverrides,
|
|
19732
19737
|
dataType: item.dataType,
|
|
19733
19738
|
tags: item.tags,
|
|
19734
19739
|
name: item.label,
|
|
19735
19740
|
isOpen,
|
|
19736
|
-
|
|
19741
|
+
onClose: () => setIsOpen(false)
|
|
19737
19742
|
}) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
19738
19743
|
FilterPopUp,
|
|
19739
19744
|
{
|
|
@@ -19741,6 +19746,7 @@ var FilterList = ({ value, onValueChange, availableItems }) => {
|
|
|
19741
19746
|
value: editState?.id === columnFilter.id ? editState.value : columnFilter.value,
|
|
19742
19747
|
dataType: item.dataType,
|
|
19743
19748
|
tags: item.tags,
|
|
19749
|
+
operatorOverrides: item.operatorOverrides,
|
|
19744
19750
|
onValueChange: (value2) => {
|
|
19745
19751
|
setEditState({ ...columnFilter, value: value2 });
|
|
19746
19752
|
},
|
|
@@ -19759,8 +19765,142 @@ var FilterList = ({ value, onValueChange, availableItems }) => {
|
|
|
19759
19765
|
] });
|
|
19760
19766
|
};
|
|
19761
19767
|
|
|
19762
|
-
// src/components/user-interaction/
|
|
19768
|
+
// src/components/user-interaction/data/SortingList.tsx
|
|
19769
|
+
var import_react107 = require("react");
|
|
19770
|
+
var import_lucide_react27 = require("lucide-react");
|
|
19771
|
+
var import_clsx37 = __toESM(require("clsx"));
|
|
19763
19772
|
var import_jsx_runtime98 = require("react/jsx-runtime");
|
|
19773
|
+
var SortingList = ({ sorting, onSortingChange, availableItems }) => {
|
|
19774
|
+
const translation = useHightideTranslation();
|
|
19775
|
+
const activeIds = (0, import_react107.useMemo)(() => sorting.map((item) => item.id), [sorting]);
|
|
19776
|
+
const inactiveItems = (0, import_react107.useMemo)(
|
|
19777
|
+
() => availableItems.filter((item) => !activeIds.includes(item.id)).sort((a, b) => a.label.localeCompare(b.label)),
|
|
19778
|
+
[availableItems, activeIds]
|
|
19779
|
+
);
|
|
19780
|
+
const itemRecord = (0, import_react107.useMemo)(
|
|
19781
|
+
() => availableItems.reduce(
|
|
19782
|
+
(acc, item) => {
|
|
19783
|
+
acc[item.id] = item;
|
|
19784
|
+
return acc;
|
|
19785
|
+
},
|
|
19786
|
+
{}
|
|
19787
|
+
),
|
|
19788
|
+
[availableItems]
|
|
19789
|
+
);
|
|
19790
|
+
const setSortDirection = (columnId, desc) => {
|
|
19791
|
+
onSortingChange(sorting.map((s) => s.id === columnId ? { ...s, desc } : s));
|
|
19792
|
+
};
|
|
19793
|
+
const removeSort = (columnId) => {
|
|
19794
|
+
onSortingChange(sorting.filter((s) => s.id !== columnId));
|
|
19795
|
+
};
|
|
19796
|
+
return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex-row-2 flex-wrap gap-y-2", children: [
|
|
19797
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(PopUpRoot, { children: [
|
|
19798
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(PopUpOpener, { children: ({ toggleOpen, props }) => /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Button, { ...props, onClick: toggleOpen, color: "neutral", size: "sm", className: "min-w-36", children: [
|
|
19799
|
+
translation("addSorting"),
|
|
19800
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react27.PlusIcon, { className: "size-4" })
|
|
19801
|
+
] }) }),
|
|
19802
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(PopUp, { className: "flex-col-2 p-2", children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(PopUpContext.Consumer, { children: ({ setIsOpen }) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
19803
|
+
Combobox,
|
|
19804
|
+
{
|
|
19805
|
+
onItemClick: (id) => {
|
|
19806
|
+
const item = itemRecord[id];
|
|
19807
|
+
if (!item) return;
|
|
19808
|
+
onSortingChange([...sorting, { id: item.id, desc: false }]);
|
|
19809
|
+
setIsOpen(false);
|
|
19810
|
+
},
|
|
19811
|
+
children: inactiveItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(ComboboxOption, { value: item.id, label: item.label, children: [
|
|
19812
|
+
DataTypeUtils.toIcon(item.dataType),
|
|
19813
|
+
item.label
|
|
19814
|
+
] }, item.id))
|
|
19815
|
+
}
|
|
19816
|
+
) }) })
|
|
19817
|
+
] }),
|
|
19818
|
+
sorting.map((columnSort) => {
|
|
19819
|
+
const item = itemRecord[columnSort.id];
|
|
19820
|
+
if (!item) return null;
|
|
19821
|
+
return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(PopUpRoot, { children: [
|
|
19822
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(PopUpOpener, { children: ({ toggleOpen, props }) => /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Button, { ...props, onClick: toggleOpen, color: "secondary", coloringStyle: "tonal-outline", size: "sm", children: [
|
|
19823
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "font-bold", children: item.label }),
|
|
19824
|
+
columnSort.desc ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react27.ArrowDownWideNarrow, { className: "size-5" }) : /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react27.ArrowUpNarrowWide, { className: "size-5" })
|
|
19825
|
+
] }) }),
|
|
19826
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(PopUpContext.Consumer, { children: ({ setIsOpen }) => /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
19827
|
+
PopUp,
|
|
19828
|
+
{
|
|
19829
|
+
className: (0, import_clsx37.default)("flex-col-3 p-3 min-w-64"),
|
|
19830
|
+
onClose: () => setIsOpen(false),
|
|
19831
|
+
children: [
|
|
19832
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex-row-4 justify-between w-full items-center gap-2", children: [
|
|
19833
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "typography-title-sm font-semibold", children: item.label }),
|
|
19834
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex-row-0 shrink-0 items-center", children: [
|
|
19835
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
19836
|
+
IconButton,
|
|
19837
|
+
{
|
|
19838
|
+
tooltip: translation("removeFilter"),
|
|
19839
|
+
onClick: () => {
|
|
19840
|
+
removeSort(columnSort.id);
|
|
19841
|
+
setIsOpen(false);
|
|
19842
|
+
},
|
|
19843
|
+
color: "negative",
|
|
19844
|
+
coloringStyle: "text",
|
|
19845
|
+
size: "sm",
|
|
19846
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react27.TrashIcon, { className: "size-4" })
|
|
19847
|
+
}
|
|
19848
|
+
),
|
|
19849
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
19850
|
+
IconButton,
|
|
19851
|
+
{
|
|
19852
|
+
tooltip: translation("close"),
|
|
19853
|
+
onClick: () => setIsOpen(false),
|
|
19854
|
+
color: "neutral",
|
|
19855
|
+
coloringStyle: "text",
|
|
19856
|
+
size: "sm",
|
|
19857
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react27.XIcon, { className: "size-4" })
|
|
19858
|
+
}
|
|
19859
|
+
)
|
|
19860
|
+
] })
|
|
19861
|
+
] }),
|
|
19862
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex-row-1 w-full gap-2", children: [
|
|
19863
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
19864
|
+
Button,
|
|
19865
|
+
{
|
|
19866
|
+
type: "button",
|
|
19867
|
+
className: "flex-1 flex-row-1 items-center justify-center gap-2",
|
|
19868
|
+
color: columnSort.desc ? "neutral" : "primary",
|
|
19869
|
+
coloringStyle: "solid",
|
|
19870
|
+
size: "md",
|
|
19871
|
+
onClick: () => setSortDirection(columnSort.id, false),
|
|
19872
|
+
children: [
|
|
19873
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react27.ArrowUpNarrowWide, { className: "size-4" }),
|
|
19874
|
+
translation("sortAsc")
|
|
19875
|
+
]
|
|
19876
|
+
}
|
|
19877
|
+
),
|
|
19878
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
|
|
19879
|
+
Button,
|
|
19880
|
+
{
|
|
19881
|
+
type: "button",
|
|
19882
|
+
className: "flex-1 flex-row-1 items-center justify-center gap-2",
|
|
19883
|
+
color: columnSort.desc ? "primary" : "neutral",
|
|
19884
|
+
coloringStyle: "solid",
|
|
19885
|
+
size: "md",
|
|
19886
|
+
onClick: () => setSortDirection(columnSort.id, true),
|
|
19887
|
+
children: [
|
|
19888
|
+
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_lucide_react27.ArrowDownWideNarrow, { className: "size-4" }),
|
|
19889
|
+
translation("sortDesc")
|
|
19890
|
+
]
|
|
19891
|
+
}
|
|
19892
|
+
)
|
|
19893
|
+
] })
|
|
19894
|
+
]
|
|
19895
|
+
}
|
|
19896
|
+
) })
|
|
19897
|
+
] }, columnSort.id);
|
|
19898
|
+
})
|
|
19899
|
+
] });
|
|
19900
|
+
};
|
|
19901
|
+
|
|
19902
|
+
// src/components/user-interaction/date/TimeDisplay.tsx
|
|
19903
|
+
var import_jsx_runtime99 = require("react/jsx-runtime");
|
|
19764
19904
|
var TimeDisplay = ({
|
|
19765
19905
|
date,
|
|
19766
19906
|
mode = "daysFromToday"
|
|
@@ -19797,14 +19937,14 @@ var TimeDisplay = ({
|
|
|
19797
19937
|
} else {
|
|
19798
19938
|
fullString = `${date.getDate()}. ${monthToTranslation[date.getMonth()]} ${date.getFullYear()}`;
|
|
19799
19939
|
}
|
|
19800
|
-
return /* @__PURE__ */ (0,
|
|
19940
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: fullString });
|
|
19801
19941
|
};
|
|
19802
19942
|
|
|
19803
19943
|
// src/components/user-interaction/input/FlexibleDateTimeInput.tsx
|
|
19804
|
-
var
|
|
19805
|
-
var
|
|
19806
|
-
var
|
|
19807
|
-
var FlexibleDateTimeInput = (0,
|
|
19944
|
+
var import_react108 = require("react");
|
|
19945
|
+
var import_lucide_react28 = require("lucide-react");
|
|
19946
|
+
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
19947
|
+
var FlexibleDateTimeInput = (0, import_react108.forwardRef)(function FlexibleDateTimeInput2({
|
|
19808
19948
|
defaultMode = "date",
|
|
19809
19949
|
value: controlledValue,
|
|
19810
19950
|
initialValue,
|
|
@@ -19819,26 +19959,30 @@ var FlexibleDateTimeInput = (0, import_react107.forwardRef)(function FlexibleDat
|
|
|
19819
19959
|
onValueChange,
|
|
19820
19960
|
defaultValue: initialValue
|
|
19821
19961
|
});
|
|
19822
|
-
const fixedTime = (0,
|
|
19823
|
-
const [preferredMode, setPreferredMode] = (0,
|
|
19824
|
-
|
|
19825
|
-
if (!value) return preferredMode;
|
|
19962
|
+
const fixedTime = (0, import_react108.useMemo)(() => fixedTimeOverride ?? new Date(1970, 0, 1, 23, 59, 59, 999), [fixedTimeOverride]);
|
|
19963
|
+
const [preferredMode, setPreferredMode] = (0, import_react108.useState)(() => {
|
|
19964
|
+
if (!value) return defaultMode;
|
|
19826
19965
|
if (DateUtils.sameTime(value, fixedTime, true, true)) {
|
|
19827
19966
|
return "date";
|
|
19828
19967
|
}
|
|
19829
19968
|
return "dateTime";
|
|
19830
|
-
}
|
|
19831
|
-
return /* @__PURE__ */ (0,
|
|
19969
|
+
});
|
|
19970
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
19832
19971
|
DateTimeInput,
|
|
19833
19972
|
{
|
|
19834
19973
|
...props,
|
|
19835
19974
|
ref: forwardedRef,
|
|
19836
|
-
mode,
|
|
19975
|
+
mode: preferredMode,
|
|
19837
19976
|
value,
|
|
19838
|
-
onValueChange:
|
|
19977
|
+
onValueChange: (value2) => {
|
|
19978
|
+
if (preferredMode === "date")
|
|
19979
|
+
setValue(DateUtils.withTime(value2, fixedTime));
|
|
19980
|
+
else
|
|
19981
|
+
setValue(DateUtils.isLastMillisecondOfDay(value2) ? new Date(value2.getTime() - 1) : new Date(value2.getTime() + 1));
|
|
19982
|
+
},
|
|
19839
19983
|
actions: [
|
|
19840
19984
|
...actions,
|
|
19841
|
-
/* @__PURE__ */ (0,
|
|
19985
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
19842
19986
|
IconButton,
|
|
19843
19987
|
{
|
|
19844
19988
|
size: "sm",
|
|
@@ -19847,7 +19991,6 @@ var FlexibleDateTimeInput = (0, import_react107.forwardRef)(function FlexibleDat
|
|
|
19847
19991
|
tooltip: preferredMode === "date" ? translation("addTime") : translation("withoutTime"),
|
|
19848
19992
|
onClick: () => {
|
|
19849
19993
|
const newMode = preferredMode === "date" ? "dateTime" : "date";
|
|
19850
|
-
setPreferredMode((prev) => prev === "date" ? "dateTime" : "date");
|
|
19851
19994
|
if (value) {
|
|
19852
19995
|
if (newMode === "date") {
|
|
19853
19996
|
setValue(DateUtils.withTime(value, fixedTime));
|
|
@@ -19855,8 +19998,9 @@ var FlexibleDateTimeInput = (0, import_react107.forwardRef)(function FlexibleDat
|
|
|
19855
19998
|
setValue(DateUtils.isLastMillisecondOfDay(value) ? new Date(value.getTime() - 1) : new Date(value.getTime() + 1));
|
|
19856
19999
|
}
|
|
19857
20000
|
}
|
|
20001
|
+
setPreferredMode(newMode);
|
|
19858
20002
|
},
|
|
19859
|
-
children: preferredMode === "date" ? /* @__PURE__ */ (0,
|
|
20003
|
+
children: preferredMode === "date" ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react28.ClockPlus, { className: "size-5" }) : /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react28.ClockFading, { className: "size-5" })
|
|
19860
20004
|
},
|
|
19861
20005
|
"date-mode"
|
|
19862
20006
|
)
|
|
@@ -19866,11 +20010,11 @@ var FlexibleDateTimeInput = (0, import_react107.forwardRef)(function FlexibleDat
|
|
|
19866
20010
|
});
|
|
19867
20011
|
|
|
19868
20012
|
// src/components/user-interaction/input/InsideLabelInput.tsx
|
|
19869
|
-
var import_react108 = require("react");
|
|
19870
20013
|
var import_react109 = require("react");
|
|
19871
|
-
var
|
|
19872
|
-
var
|
|
19873
|
-
var
|
|
20014
|
+
var import_react110 = require("react");
|
|
20015
|
+
var import_clsx38 = __toESM(require("clsx"));
|
|
20016
|
+
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
20017
|
+
var InsideLabelInput = (0, import_react110.forwardRef)(function InsideLabelInput2({
|
|
19874
20018
|
id: customId,
|
|
19875
20019
|
value: controlledValue,
|
|
19876
20020
|
initialValue,
|
|
@@ -19883,11 +20027,11 @@ var InsideLabelInput = (0, import_react109.forwardRef)(function InsideLabelInput
|
|
|
19883
20027
|
onValueChange,
|
|
19884
20028
|
defaultValue: initialValue
|
|
19885
20029
|
});
|
|
19886
|
-
const [isFocused, setIsFocused] = (0,
|
|
19887
|
-
const generatedId = (0,
|
|
20030
|
+
const [isFocused, setIsFocused] = (0, import_react110.useState)(false);
|
|
20031
|
+
const generatedId = (0, import_react109.useId)();
|
|
19888
20032
|
const id = customId ?? generatedId;
|
|
19889
|
-
return /* @__PURE__ */ (0,
|
|
19890
|
-
/* @__PURE__ */ (0,
|
|
20033
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: (0, import_clsx38.default)("relative"), children: [
|
|
20034
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
19891
20035
|
Input,
|
|
19892
20036
|
{
|
|
19893
20037
|
...props,
|
|
@@ -19904,16 +20048,16 @@ var InsideLabelInput = (0, import_react109.forwardRef)(function InsideLabelInput
|
|
|
19904
20048
|
setIsFocused(false);
|
|
19905
20049
|
},
|
|
19906
20050
|
"aria-labelledby": id + "-label",
|
|
19907
|
-
className: (0,
|
|
20051
|
+
className: (0, import_clsx38.default)("h-14 px-4 pb-2 py-6.5", props.className)
|
|
19908
20052
|
}
|
|
19909
20053
|
),
|
|
19910
|
-
/* @__PURE__ */ (0,
|
|
20054
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
19911
20055
|
"label",
|
|
19912
20056
|
{
|
|
19913
20057
|
id: id + "-label",
|
|
19914
20058
|
"aria-hidden": true,
|
|
19915
20059
|
"data-display": isFocused || !!value ? "small" : "full",
|
|
19916
|
-
className: (0,
|
|
20060
|
+
className: (0, import_clsx38.default)(
|
|
19917
20061
|
// margin left to account for the border which is ignored for absolute positions
|
|
19918
20062
|
"absolute left-4 ml-0.5 top-2 transition-all delay-25 pointer-events-none touch-none",
|
|
19919
20063
|
"data-[display=small]:top-2 data-[display=small]:h-force-4.5 data-[display=small]:typography-caption-sm data-[display=small]:overflow-y-hidden",
|
|
@@ -19926,9 +20070,9 @@ var InsideLabelInput = (0, import_react109.forwardRef)(function InsideLabelInput
|
|
|
19926
20070
|
});
|
|
19927
20071
|
|
|
19928
20072
|
// src/components/user-interaction/input/SearchBar.tsx
|
|
19929
|
-
var
|
|
19930
|
-
var
|
|
19931
|
-
var
|
|
20073
|
+
var import_lucide_react29 = require("lucide-react");
|
|
20074
|
+
var import_clsx39 = require("clsx");
|
|
20075
|
+
var import_jsx_runtime102 = require("react/jsx-runtime");
|
|
19932
20076
|
var SearchBar = ({
|
|
19933
20077
|
value: controlledValue,
|
|
19934
20078
|
initialValue,
|
|
@@ -19944,8 +20088,8 @@ var SearchBar = ({
|
|
|
19944
20088
|
onValueChange,
|
|
19945
20089
|
defaultValue: initialValue
|
|
19946
20090
|
});
|
|
19947
|
-
return /* @__PURE__ */ (0,
|
|
19948
|
-
/* @__PURE__ */ (0,
|
|
20091
|
+
return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { ...containerProps, className: (0, import_clsx39.clsx)("relative", containerProps?.className), children: [
|
|
20092
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
19949
20093
|
Input,
|
|
19950
20094
|
{
|
|
19951
20095
|
...inputProps,
|
|
@@ -19953,10 +20097,10 @@ var SearchBar = ({
|
|
|
19953
20097
|
onValueChange: setValue,
|
|
19954
20098
|
onEditComplete: onSearch,
|
|
19955
20099
|
placeholder: inputProps.placeholder ?? translation("search"),
|
|
19956
|
-
className: (0,
|
|
20100
|
+
className: (0, import_clsx39.clsx)("pr-10 w-full", inputProps.className)
|
|
19957
20101
|
}
|
|
19958
20102
|
),
|
|
19959
|
-
/* @__PURE__ */ (0,
|
|
20103
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
|
|
19960
20104
|
IconButton,
|
|
19961
20105
|
{
|
|
19962
20106
|
...searchButtonProps,
|
|
@@ -19965,19 +20109,19 @@ var SearchBar = ({
|
|
|
19965
20109
|
color: "neutral",
|
|
19966
20110
|
coloringStyle: "text",
|
|
19967
20111
|
onClick: () => onSearch(value),
|
|
19968
|
-
className: (0,
|
|
19969
|
-
children: /* @__PURE__ */ (0,
|
|
20112
|
+
className: (0, import_clsx39.clsx)("absolute right-1.5 top-1/2 -translate-y-1/2", searchButtonProps?.className),
|
|
20113
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_lucide_react29.Search, { className: "w-full h-full" })
|
|
19970
20114
|
}
|
|
19971
20115
|
)
|
|
19972
20116
|
] });
|
|
19973
20117
|
};
|
|
19974
20118
|
|
|
19975
20119
|
// src/components/user-interaction/input/ToggleableInput.tsx
|
|
19976
|
-
var
|
|
19977
|
-
var
|
|
19978
|
-
var
|
|
19979
|
-
var
|
|
19980
|
-
var ToggleableInput = (0,
|
|
20120
|
+
var import_react111 = require("react");
|
|
20121
|
+
var import_lucide_react30 = require("lucide-react");
|
|
20122
|
+
var import_clsx40 = __toESM(require("clsx"));
|
|
20123
|
+
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
20124
|
+
var ToggleableInput = (0, import_react111.forwardRef)(function ToggleableInput2({
|
|
19981
20125
|
value: controlledValue,
|
|
19982
20126
|
initialValue,
|
|
19983
20127
|
onValueChange,
|
|
@@ -19990,16 +20134,16 @@ var ToggleableInput = (0, import_react110.forwardRef)(function ToggleableInput2(
|
|
|
19990
20134
|
onValueChange,
|
|
19991
20135
|
defaultValue: initialValue
|
|
19992
20136
|
});
|
|
19993
|
-
const [isEditing, setIsEditing] = (0,
|
|
19994
|
-
const innerRef = (0,
|
|
19995
|
-
(0,
|
|
19996
|
-
(0,
|
|
20137
|
+
const [isEditing, setIsEditing] = (0, import_react111.useState)(initialState !== "display");
|
|
20138
|
+
const innerRef = (0, import_react111.useRef)(null);
|
|
20139
|
+
(0, import_react111.useImperativeHandle)(forwardedRef, () => innerRef.current);
|
|
20140
|
+
(0, import_react111.useEffect)(() => {
|
|
19997
20141
|
if (isEditing) {
|
|
19998
20142
|
innerRef.current?.focus();
|
|
19999
20143
|
}
|
|
20000
20144
|
}, [isEditing]);
|
|
20001
|
-
return /* @__PURE__ */ (0,
|
|
20002
|
-
/* @__PURE__ */ (0,
|
|
20145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: (0, import_clsx40.default)("relative flex-row-2", { "flex-1": isEditing }), children: [
|
|
20146
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
20003
20147
|
Input,
|
|
20004
20148
|
{
|
|
20005
20149
|
...props,
|
|
@@ -20023,20 +20167,20 @@ var ToggleableInput = (0, import_react110.forwardRef)(function ToggleableInput2(
|
|
|
20023
20167
|
"data-name": props["data-name"] ?? "togglable-input"
|
|
20024
20168
|
}
|
|
20025
20169
|
),
|
|
20026
|
-
!isEditing && /* @__PURE__ */ (0,
|
|
20027
|
-
/* @__PURE__ */ (0,
|
|
20028
|
-
/* @__PURE__ */ (0,
|
|
20170
|
+
!isEditing && /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "absolute left-0 flex-row-2 items-center pointer-events-none touch-none w-full overflow-hidden", children: [
|
|
20171
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { className: (0, import_clsx40.default)(" truncate"), children: value }),
|
|
20172
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react30.Pencil, { className: (0, import_clsx40.default)(`size-force-4`, { "text-transparent": isEditing }) })
|
|
20029
20173
|
] })
|
|
20030
20174
|
] });
|
|
20031
20175
|
});
|
|
20032
20176
|
|
|
20033
20177
|
// src/components/user-interaction/properties/CheckboxProperty.tsx
|
|
20034
|
-
var
|
|
20178
|
+
var import_lucide_react32 = require("lucide-react");
|
|
20035
20179
|
|
|
20036
20180
|
// src/components/user-interaction/properties/PropertyBase.tsx
|
|
20037
|
-
var
|
|
20038
|
-
var
|
|
20039
|
-
var
|
|
20181
|
+
var import_clsx41 = __toESM(require("clsx"));
|
|
20182
|
+
var import_lucide_react31 = require("lucide-react");
|
|
20183
|
+
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
20040
20184
|
var PropertyBase = ({
|
|
20041
20185
|
name,
|
|
20042
20186
|
children,
|
|
@@ -20055,36 +20199,36 @@ var PropertyBase = ({
|
|
|
20055
20199
|
const isClearEnabled = allowClear && !readOnly;
|
|
20056
20200
|
const isRemoveEnabled = allowRemove && !readOnly;
|
|
20057
20201
|
const showActionsContainer = isClearEnabled || isRemoveEnabled;
|
|
20058
|
-
return /* @__PURE__ */ (0,
|
|
20202
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
|
|
20059
20203
|
"div",
|
|
20060
20204
|
{
|
|
20061
|
-
className: (0,
|
|
20205
|
+
className: (0, import_clsx41.default)("group/property", className),
|
|
20062
20206
|
"data-name": "property-root",
|
|
20063
20207
|
"data-invalid": PropsUtil.dataAttributes.bool(invalid),
|
|
20064
20208
|
children: [
|
|
20065
|
-
/* @__PURE__ */ (0,
|
|
20209
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
|
|
20066
20210
|
"div",
|
|
20067
20211
|
{
|
|
20068
20212
|
"data-name": "property-title",
|
|
20069
20213
|
"data-invalid": PropsUtil.dataAttributes.bool(invalid),
|
|
20070
20214
|
children: [
|
|
20071
|
-
/* @__PURE__ */ (0,
|
|
20072
|
-
/* @__PURE__ */ (0,
|
|
20073
|
-
/* @__PURE__ */ (0,
|
|
20215
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Tooltip, { tooltip: name, containerClassName: "min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "flex-row-1 items-center", children: [
|
|
20216
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { "data-name": "property-title-icon", children: icon }),
|
|
20217
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { "data-name": "property-title-text", children: name })
|
|
20074
20218
|
] }) }),
|
|
20075
|
-
invalid && /* @__PURE__ */ (0,
|
|
20219
|
+
invalid && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_lucide_react31.AlertTriangle, { className: "size-force-6" })
|
|
20076
20220
|
]
|
|
20077
20221
|
}
|
|
20078
20222
|
),
|
|
20079
|
-
/* @__PURE__ */ (0,
|
|
20223
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
|
|
20080
20224
|
"div",
|
|
20081
20225
|
{
|
|
20082
20226
|
"data-name": "property-content",
|
|
20083
20227
|
"data-invalid": PropsUtil.dataAttributes.bool(invalid),
|
|
20084
20228
|
children: [
|
|
20085
20229
|
children({ required, hasValue, invalid }),
|
|
20086
|
-
showActionsContainer && /* @__PURE__ */ (0,
|
|
20087
|
-
isClearEnabled && /* @__PURE__ */ (0,
|
|
20230
|
+
showActionsContainer && /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { "data-name": "property-actions", children: [
|
|
20231
|
+
isClearEnabled && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
20088
20232
|
IconButton,
|
|
20089
20233
|
{
|
|
20090
20234
|
tooltip: translation("clearValue"),
|
|
@@ -20093,10 +20237,10 @@ var PropertyBase = ({
|
|
|
20093
20237
|
color: "negative",
|
|
20094
20238
|
coloringStyle: "text",
|
|
20095
20239
|
size: "sm",
|
|
20096
|
-
children: /* @__PURE__ */ (0,
|
|
20240
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_lucide_react31.X, { className: "size-force-5" })
|
|
20097
20241
|
}
|
|
20098
20242
|
),
|
|
20099
|
-
isRemoveEnabled && /* @__PURE__ */ (0,
|
|
20243
|
+
isRemoveEnabled && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
20100
20244
|
IconButton,
|
|
20101
20245
|
{
|
|
20102
20246
|
tooltip: translation("removeProperty"),
|
|
@@ -20104,7 +20248,7 @@ var PropertyBase = ({
|
|
|
20104
20248
|
color: "negative",
|
|
20105
20249
|
coloringStyle: "text",
|
|
20106
20250
|
size: "sm",
|
|
20107
|
-
children: /* @__PURE__ */ (0,
|
|
20251
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_lucide_react31.Trash, { className: "size-force-5" })
|
|
20108
20252
|
}
|
|
20109
20253
|
)
|
|
20110
20254
|
] })
|
|
@@ -20117,7 +20261,7 @@ var PropertyBase = ({
|
|
|
20117
20261
|
};
|
|
20118
20262
|
|
|
20119
20263
|
// src/components/user-interaction/properties/CheckboxProperty.tsx
|
|
20120
|
-
var
|
|
20264
|
+
var import_jsx_runtime105 = require("react/jsx-runtime");
|
|
20121
20265
|
var CheckboxProperty = ({
|
|
20122
20266
|
value,
|
|
20123
20267
|
onValueChange,
|
|
@@ -20126,15 +20270,15 @@ var CheckboxProperty = ({
|
|
|
20126
20270
|
...baseProps
|
|
20127
20271
|
}) => {
|
|
20128
20272
|
const translation = useHightideTranslation();
|
|
20129
|
-
return /* @__PURE__ */ (0,
|
|
20273
|
+
return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
20130
20274
|
PropertyBase,
|
|
20131
20275
|
{
|
|
20132
20276
|
...baseProps,
|
|
20133
20277
|
hasValue: value !== void 0,
|
|
20134
20278
|
readOnly,
|
|
20135
|
-
icon: /* @__PURE__ */ (0,
|
|
20136
|
-
children: () => /* @__PURE__ */ (0,
|
|
20137
|
-
/* @__PURE__ */ (0,
|
|
20279
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react32.Check, { size: 24 }),
|
|
20280
|
+
children: () => /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex-row-2 items-center", children: [
|
|
20281
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
20138
20282
|
Button,
|
|
20139
20283
|
{
|
|
20140
20284
|
color: value ? "positive" : "neutral",
|
|
@@ -20147,7 +20291,7 @@ var CheckboxProperty = ({
|
|
|
20147
20291
|
children: translation("yes")
|
|
20148
20292
|
}
|
|
20149
20293
|
),
|
|
20150
|
-
/* @__PURE__ */ (0,
|
|
20294
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
20151
20295
|
Button,
|
|
20152
20296
|
{
|
|
20153
20297
|
color: !value && value !== void 0 ? "negative" : "neutral",
|
|
@@ -20166,8 +20310,8 @@ var CheckboxProperty = ({
|
|
|
20166
20310
|
};
|
|
20167
20311
|
|
|
20168
20312
|
// src/components/user-interaction/properties/DateProperty.tsx
|
|
20169
|
-
var
|
|
20170
|
-
var
|
|
20313
|
+
var import_lucide_react33 = require("lucide-react");
|
|
20314
|
+
var import_jsx_runtime106 = require("react/jsx-runtime");
|
|
20171
20315
|
var DateProperty = ({
|
|
20172
20316
|
value,
|
|
20173
20317
|
onValueChange,
|
|
@@ -20177,13 +20321,13 @@ var DateProperty = ({
|
|
|
20177
20321
|
...baseProps
|
|
20178
20322
|
}) => {
|
|
20179
20323
|
const hasValue = !!value;
|
|
20180
|
-
return /* @__PURE__ */ (0,
|
|
20324
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
20181
20325
|
PropertyBase,
|
|
20182
20326
|
{
|
|
20183
20327
|
...baseProps,
|
|
20184
20328
|
hasValue,
|
|
20185
|
-
icon: /* @__PURE__ */ (0,
|
|
20186
|
-
children: ({ invalid }) => /* @__PURE__ */ (0,
|
|
20329
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_lucide_react33.CalendarDays, { size: 24 }),
|
|
20330
|
+
children: ({ invalid }) => /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
20187
20331
|
DateTimeInput,
|
|
20188
20332
|
{
|
|
20189
20333
|
value,
|
|
@@ -20200,8 +20344,8 @@ var DateProperty = ({
|
|
|
20200
20344
|
};
|
|
20201
20345
|
|
|
20202
20346
|
// src/components/user-interaction/properties/MultiSelectProperty.tsx
|
|
20203
|
-
var
|
|
20204
|
-
var
|
|
20347
|
+
var import_lucide_react34 = require("lucide-react");
|
|
20348
|
+
var import_jsx_runtime107 = require("react/jsx-runtime");
|
|
20205
20349
|
var MultiSelectProperty = ({
|
|
20206
20350
|
children,
|
|
20207
20351
|
value,
|
|
@@ -20210,18 +20354,18 @@ var MultiSelectProperty = ({
|
|
|
20210
20354
|
...props
|
|
20211
20355
|
}) => {
|
|
20212
20356
|
const hasValue = value.length > 0;
|
|
20213
|
-
return /* @__PURE__ */ (0,
|
|
20357
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
20214
20358
|
PropertyBase,
|
|
20215
20359
|
{
|
|
20216
20360
|
...props,
|
|
20217
20361
|
hasValue,
|
|
20218
|
-
icon: /* @__PURE__ */ (0,
|
|
20219
|
-
children: ({ invalid }) => /* @__PURE__ */ (0,
|
|
20362
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_lucide_react34.List, { size: 24 }),
|
|
20363
|
+
children: ({ invalid }) => /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
20220
20364
|
"div",
|
|
20221
20365
|
{
|
|
20222
20366
|
"data-name": "property-input-wrapper",
|
|
20223
20367
|
"data-invalid": PropsUtil.dataAttributes.bool(invalid),
|
|
20224
|
-
children: /* @__PURE__ */ (0,
|
|
20368
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
20225
20369
|
MultiSelectChipDisplay,
|
|
20226
20370
|
{
|
|
20227
20371
|
value,
|
|
@@ -20247,8 +20391,8 @@ var MultiSelectProperty = ({
|
|
|
20247
20391
|
};
|
|
20248
20392
|
|
|
20249
20393
|
// src/components/user-interaction/properties/NumberProperty.tsx
|
|
20250
|
-
var
|
|
20251
|
-
var
|
|
20394
|
+
var import_lucide_react35 = require("lucide-react");
|
|
20395
|
+
var import_jsx_runtime108 = require("react/jsx-runtime");
|
|
20252
20396
|
var NumberProperty = ({
|
|
20253
20397
|
value,
|
|
20254
20398
|
onValueChange,
|
|
@@ -20260,20 +20404,20 @@ var NumberProperty = ({
|
|
|
20260
20404
|
}) => {
|
|
20261
20405
|
const translation = useHightideTranslation();
|
|
20262
20406
|
const hasValue = value !== void 0;
|
|
20263
|
-
return /* @__PURE__ */ (0,
|
|
20407
|
+
return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
20264
20408
|
PropertyBase,
|
|
20265
20409
|
{
|
|
20266
20410
|
...baseProps,
|
|
20267
20411
|
onValueClear,
|
|
20268
20412
|
hasValue,
|
|
20269
|
-
icon: /* @__PURE__ */ (0,
|
|
20270
|
-
children: ({ invalid }) => /* @__PURE__ */ (0,
|
|
20413
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_lucide_react35.Binary, { size: 24 }),
|
|
20414
|
+
children: ({ invalid }) => /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
|
|
20271
20415
|
"div",
|
|
20272
20416
|
{
|
|
20273
20417
|
"data-name": "property-input-wrapper",
|
|
20274
20418
|
"data-invalid": PropsUtil.dataAttributes.bool(invalid),
|
|
20275
20419
|
children: [
|
|
20276
|
-
/* @__PURE__ */ (0,
|
|
20420
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
20277
20421
|
Input,
|
|
20278
20422
|
{
|
|
20279
20423
|
"data-name": "property-input",
|
|
@@ -20301,7 +20445,7 @@ var NumberProperty = ({
|
|
|
20301
20445
|
}
|
|
20302
20446
|
}
|
|
20303
20447
|
),
|
|
20304
|
-
suffix && /* @__PURE__ */ (0,
|
|
20448
|
+
suffix && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
20305
20449
|
"span",
|
|
20306
20450
|
{
|
|
20307
20451
|
"data-name": "property-suffix",
|
|
@@ -20317,8 +20461,8 @@ var NumberProperty = ({
|
|
|
20317
20461
|
};
|
|
20318
20462
|
|
|
20319
20463
|
// src/components/user-interaction/properties/SelectProperty.tsx
|
|
20320
|
-
var
|
|
20321
|
-
var
|
|
20464
|
+
var import_lucide_react36 = require("lucide-react");
|
|
20465
|
+
var import_jsx_runtime109 = require("react/jsx-runtime");
|
|
20322
20466
|
var SingleSelectProperty = ({
|
|
20323
20467
|
children,
|
|
20324
20468
|
value,
|
|
@@ -20327,18 +20471,18 @@ var SingleSelectProperty = ({
|
|
|
20327
20471
|
...props
|
|
20328
20472
|
}) => {
|
|
20329
20473
|
const hasValue = value !== void 0;
|
|
20330
|
-
return /* @__PURE__ */ (0,
|
|
20474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
20331
20475
|
PropertyBase,
|
|
20332
20476
|
{
|
|
20333
20477
|
...props,
|
|
20334
20478
|
hasValue,
|
|
20335
|
-
icon: /* @__PURE__ */ (0,
|
|
20336
|
-
children: ({ invalid }) => /* @__PURE__ */ (0,
|
|
20479
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_lucide_react36.List, { size: 24 }),
|
|
20480
|
+
children: ({ invalid }) => /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
20337
20481
|
"div",
|
|
20338
20482
|
{
|
|
20339
20483
|
"data-name": "property-input-wrapper",
|
|
20340
20484
|
"data-invalid": PropsUtil.dataAttributes.bool(invalid),
|
|
20341
|
-
children: /* @__PURE__ */ (0,
|
|
20485
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
|
|
20342
20486
|
SelectRoot,
|
|
20343
20487
|
{
|
|
20344
20488
|
value,
|
|
@@ -20348,7 +20492,7 @@ var SingleSelectProperty = ({
|
|
|
20348
20492
|
},
|
|
20349
20493
|
disabled: props.readOnly,
|
|
20350
20494
|
children: [
|
|
20351
|
-
/* @__PURE__ */ (0,
|
|
20495
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
20352
20496
|
SelectButton,
|
|
20353
20497
|
{
|
|
20354
20498
|
className: "flex-row-2 w-full items-center justify-between",
|
|
@@ -20356,7 +20500,7 @@ var SingleSelectProperty = ({
|
|
|
20356
20500
|
"data-name": "property-input"
|
|
20357
20501
|
}
|
|
20358
20502
|
),
|
|
20359
|
-
/* @__PURE__ */ (0,
|
|
20503
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(SelectContent, { children })
|
|
20360
20504
|
]
|
|
20361
20505
|
}
|
|
20362
20506
|
)
|
|
@@ -20367,8 +20511,8 @@ var SingleSelectProperty = ({
|
|
|
20367
20511
|
};
|
|
20368
20512
|
|
|
20369
20513
|
// src/components/user-interaction/properties/TextProperty.tsx
|
|
20370
|
-
var
|
|
20371
|
-
var
|
|
20514
|
+
var import_lucide_react37 = require("lucide-react");
|
|
20515
|
+
var import_jsx_runtime110 = require("react/jsx-runtime");
|
|
20372
20516
|
var TextProperty = ({
|
|
20373
20517
|
value,
|
|
20374
20518
|
readOnly,
|
|
@@ -20378,13 +20522,13 @@ var TextProperty = ({
|
|
|
20378
20522
|
}) => {
|
|
20379
20523
|
const translation = useHightideTranslation();
|
|
20380
20524
|
const hasValue = value !== void 0;
|
|
20381
|
-
return /* @__PURE__ */ (0,
|
|
20525
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
20382
20526
|
PropertyBase,
|
|
20383
20527
|
{
|
|
20384
20528
|
...baseProps,
|
|
20385
20529
|
hasValue,
|
|
20386
|
-
icon: /* @__PURE__ */ (0,
|
|
20387
|
-
children: ({ invalid }) => /* @__PURE__ */ (0,
|
|
20530
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react37.Text, { size: 24 }),
|
|
20531
|
+
children: ({ invalid }) => /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
|
|
20388
20532
|
Textarea,
|
|
20389
20533
|
{
|
|
20390
20534
|
"data-name": "property-input",
|
|
@@ -20404,29 +20548,29 @@ var TextProperty = ({
|
|
|
20404
20548
|
|
|
20405
20549
|
// src/components/utils/Polymorphic.tsx
|
|
20406
20550
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
20407
|
-
var
|
|
20408
|
-
var
|
|
20409
|
-
var PolymorphicSlot = (0,
|
|
20551
|
+
var import_react112 = require("react");
|
|
20552
|
+
var import_jsx_runtime111 = require("react/jsx-runtime");
|
|
20553
|
+
var PolymorphicSlot = (0, import_react112.forwardRef)(function PolymorphicSlot2({
|
|
20410
20554
|
children,
|
|
20411
20555
|
asChild,
|
|
20412
20556
|
defaultComponent = "div",
|
|
20413
20557
|
...props
|
|
20414
20558
|
}, ref) {
|
|
20415
20559
|
const Component = asChild ? import_react_slot.Slot : defaultComponent;
|
|
20416
|
-
return /* @__PURE__ */ (0,
|
|
20560
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Component, { ...props, ref, children });
|
|
20417
20561
|
});
|
|
20418
20562
|
|
|
20419
20563
|
// src/components/utils/Transition.tsx
|
|
20420
|
-
var
|
|
20564
|
+
var import_react113 = require("react");
|
|
20421
20565
|
function Transition({
|
|
20422
20566
|
children,
|
|
20423
20567
|
show,
|
|
20424
20568
|
includeAnimation = true
|
|
20425
20569
|
}) {
|
|
20426
|
-
const [isOpen, setIsOpen] = (0,
|
|
20427
|
-
const [isTransitioning, setIsTransitioning] = (0,
|
|
20570
|
+
const [isOpen, setIsOpen] = (0, import_react113.useState)(show);
|
|
20571
|
+
const [isTransitioning, setIsTransitioning] = (0, import_react113.useState)(!isOpen);
|
|
20428
20572
|
const isUsingReducedMotion = typeof window !== "undefined" && typeof window.matchMedia === "function" ? window.matchMedia("(prefers-reduced-motion: reduce)").matches : true;
|
|
20429
|
-
(0,
|
|
20573
|
+
(0, import_react113.useEffect)(() => {
|
|
20430
20574
|
setIsOpen(show);
|
|
20431
20575
|
setIsTransitioning(true);
|
|
20432
20576
|
}, [show]);
|
|
@@ -20451,18 +20595,18 @@ function Transition({
|
|
|
20451
20595
|
}
|
|
20452
20596
|
|
|
20453
20597
|
// src/global-contexts/HightideProvider.tsx
|
|
20454
|
-
var
|
|
20598
|
+
var import_jsx_runtime112 = require("react/jsx-runtime");
|
|
20455
20599
|
var HightideProvider = ({
|
|
20456
20600
|
children,
|
|
20457
20601
|
theme,
|
|
20458
20602
|
locale,
|
|
20459
20603
|
config
|
|
20460
20604
|
}) => {
|
|
20461
|
-
return /* @__PURE__ */ (0,
|
|
20605
|
+
return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(LocaleProvider, { ...locale, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(ThemeProvider, { ...theme, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(HightideConfigProvider, { ...config, children }) }) });
|
|
20462
20606
|
};
|
|
20463
20607
|
|
|
20464
20608
|
// src/hooks/focus/useFocusGuards.ts
|
|
20465
|
-
var
|
|
20609
|
+
var import_react114 = require("react");
|
|
20466
20610
|
var selectorName = "data-hw-focus-guard";
|
|
20467
20611
|
function FocusGuard() {
|
|
20468
20612
|
const element = document.createElement("div");
|
|
@@ -20500,7 +20644,7 @@ var FocusGuardsService = class _FocusGuardsService {
|
|
|
20500
20644
|
}
|
|
20501
20645
|
};
|
|
20502
20646
|
var useFocusGuards = () => {
|
|
20503
|
-
(0,
|
|
20647
|
+
(0, import_react114.useEffect)(() => {
|
|
20504
20648
|
FocusGuardsService.getInstance().add();
|
|
20505
20649
|
return () => {
|
|
20506
20650
|
FocusGuardsService.getInstance().remove();
|
|
@@ -20509,10 +20653,10 @@ var useFocusGuards = () => {
|
|
|
20509
20653
|
};
|
|
20510
20654
|
|
|
20511
20655
|
// src/hooks/focus/useFocusOnceVisible.ts
|
|
20512
|
-
var
|
|
20656
|
+
var import_react115 = __toESM(require("react"));
|
|
20513
20657
|
var useFocusOnceVisible = (ref, disable = false) => {
|
|
20514
|
-
const [hasUsedFocus, setHasUsedFocus] =
|
|
20515
|
-
(0,
|
|
20658
|
+
const [hasUsedFocus, setHasUsedFocus] = import_react115.default.useState(false);
|
|
20659
|
+
(0, import_react115.useEffect)(() => {
|
|
20516
20660
|
if (disable || hasUsedFocus) {
|
|
20517
20661
|
return;
|
|
20518
20662
|
}
|
|
@@ -20532,11 +20676,11 @@ var useFocusOnceVisible = (ref, disable = false) => {
|
|
|
20532
20676
|
};
|
|
20533
20677
|
|
|
20534
20678
|
// src/hooks/focus/useIsMounted.ts
|
|
20535
|
-
var
|
|
20679
|
+
var import_react116 = require("react");
|
|
20536
20680
|
var isClient = typeof window !== "undefined" && typeof document !== "undefined";
|
|
20537
|
-
var useIsomorphicEffect = isClient ?
|
|
20681
|
+
var useIsomorphicEffect = isClient ? import_react116.useLayoutEffect : import_react116.useEffect;
|
|
20538
20682
|
var useIsMounted = () => {
|
|
20539
|
-
const [isMounted, setIsMounted] = (0,
|
|
20683
|
+
const [isMounted, setIsMounted] = (0, import_react116.useState)(false);
|
|
20540
20684
|
useIsomorphicEffect(() => {
|
|
20541
20685
|
setIsMounted(true);
|
|
20542
20686
|
return () => {
|
|
@@ -20547,10 +20691,10 @@ var useIsMounted = () => {
|
|
|
20547
20691
|
};
|
|
20548
20692
|
|
|
20549
20693
|
// src/hooks/useHandleRefs.ts
|
|
20550
|
-
var
|
|
20694
|
+
var import_react117 = require("react");
|
|
20551
20695
|
function useHandleRefs(handleRef) {
|
|
20552
|
-
const refs = (0,
|
|
20553
|
-
(0,
|
|
20696
|
+
const refs = (0, import_react117.useRef)([]);
|
|
20697
|
+
(0, import_react117.useEffect)(() => {
|
|
20554
20698
|
refs.current = Object.keys(handleRef?.current ?? {}).map(
|
|
20555
20699
|
() => ({ current: null })
|
|
20556
20700
|
);
|
|
@@ -20563,10 +20707,10 @@ function useHandleRefs(handleRef) {
|
|
|
20563
20707
|
}
|
|
20564
20708
|
|
|
20565
20709
|
// src/hooks/useLogUnstableDependencies.ts
|
|
20566
|
-
var
|
|
20710
|
+
var import_react118 = __toESM(require("react"));
|
|
20567
20711
|
function useLogUnstableDependencies(name, value) {
|
|
20568
|
-
const prev =
|
|
20569
|
-
|
|
20712
|
+
const prev = import_react118.default.useRef(null);
|
|
20713
|
+
import_react118.default.useEffect(() => {
|
|
20570
20714
|
if (!prev.current) {
|
|
20571
20715
|
prev.current = value;
|
|
20572
20716
|
return;
|
|
@@ -20588,10 +20732,10 @@ function useLogUnstableDependencies(name, value) {
|
|
|
20588
20732
|
}
|
|
20589
20733
|
|
|
20590
20734
|
// src/hooks/useOverwritableState.ts
|
|
20591
|
-
var
|
|
20735
|
+
var import_react119 = require("react");
|
|
20592
20736
|
var useOverwritableState = (overwriteValue, onChange) => {
|
|
20593
|
-
const [state, setState] = (0,
|
|
20594
|
-
(0,
|
|
20737
|
+
const [state, setState] = (0, import_react119.useState)(overwriteValue);
|
|
20738
|
+
(0, import_react119.useEffect)(() => {
|
|
20595
20739
|
setState(overwriteValue);
|
|
20596
20740
|
}, [overwriteValue]);
|
|
20597
20741
|
const onChangeWrapper = (action) => {
|
|
@@ -20603,29 +20747,29 @@ var useOverwritableState = (overwriteValue, onChange) => {
|
|
|
20603
20747
|
};
|
|
20604
20748
|
|
|
20605
20749
|
// src/hooks/useRerender.ts
|
|
20606
|
-
var
|
|
20750
|
+
var import_react120 = require("react");
|
|
20607
20751
|
var useRerender = () => {
|
|
20608
|
-
return (0,
|
|
20752
|
+
return (0, import_react120.useReducer)(() => ({}), {})[1];
|
|
20609
20753
|
};
|
|
20610
20754
|
|
|
20611
20755
|
// src/hooks/useUpdatingDateString.ts
|
|
20612
|
-
var
|
|
20756
|
+
var import_react121 = require("react");
|
|
20613
20757
|
var useUpdatingDateString = ({ absoluteFormat = "dateTime", localeOverride, date }) => {
|
|
20614
20758
|
const { locale: contextLocale } = useLocale();
|
|
20615
20759
|
const locale = localeOverride ?? contextLocale;
|
|
20616
|
-
const [dateAndTimeStrings, setDateAndTimeStrings] = (0,
|
|
20760
|
+
const [dateAndTimeStrings, setDateAndTimeStrings] = (0, import_react121.useState)({
|
|
20617
20761
|
compareDate: date,
|
|
20618
20762
|
absolute: DateUtils.formatAbsolute(date, locale, absoluteFormat),
|
|
20619
20763
|
relative: DateUtils.formatRelative(date, locale)
|
|
20620
20764
|
});
|
|
20621
|
-
(0,
|
|
20765
|
+
(0, import_react121.useEffect)(() => {
|
|
20622
20766
|
setDateAndTimeStrings({
|
|
20623
20767
|
compareDate: date,
|
|
20624
20768
|
absolute: DateUtils.formatAbsolute(date, locale, absoluteFormat),
|
|
20625
20769
|
relative: DateUtils.formatRelative(date, locale)
|
|
20626
20770
|
});
|
|
20627
20771
|
}, [date, absoluteFormat, locale]);
|
|
20628
|
-
(0,
|
|
20772
|
+
(0, import_react121.useEffect)(() => {
|
|
20629
20773
|
let timeoutId;
|
|
20630
20774
|
const startTimer = () => {
|
|
20631
20775
|
const now = /* @__PURE__ */ new Date();
|
|
@@ -20661,7 +20805,7 @@ var validateEmail = (email) => {
|
|
|
20661
20805
|
};
|
|
20662
20806
|
|
|
20663
20807
|
// src/hooks/useValidators.ts
|
|
20664
|
-
var
|
|
20808
|
+
var import_react122 = require("react");
|
|
20665
20809
|
var notEmpty = (value) => {
|
|
20666
20810
|
if (!value) {
|
|
20667
20811
|
return "notEmpty";
|
|
@@ -20711,7 +20855,7 @@ var UseValidators = {
|
|
|
20711
20855
|
};
|
|
20712
20856
|
var useTranslatedValidators = () => {
|
|
20713
20857
|
const translation = useHightideTranslation();
|
|
20714
|
-
return (0,
|
|
20858
|
+
return (0, import_react122.useMemo)(() => ({
|
|
20715
20859
|
notEmpty: (value) => {
|
|
20716
20860
|
const result = notEmpty(value);
|
|
20717
20861
|
if (result) {
|
|
@@ -21113,6 +21257,7 @@ var PromiseUtils = {
|
|
|
21113
21257
|
SimpleSearch,
|
|
21114
21258
|
SimpleSearchWithMapping,
|
|
21115
21259
|
SingleSelectProperty,
|
|
21260
|
+
SortingList,
|
|
21116
21261
|
StepperBar,
|
|
21117
21262
|
StorageListener,
|
|
21118
21263
|
Switch,
|