@sustaina/shared-ui 1.30.1 → 1.30.3

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.mjs CHANGED
@@ -652,7 +652,8 @@ var OPERATOR_MAP = {
652
652
  dropdown: ["is", "isNot"],
653
653
  lookup: ["containsAny", "containsOnly", "containsAll", "notContains"],
654
654
  uuid: ["equals", "notEquals", "gt", "gte", "lt", "lte"],
655
- json: ["equals", "notEquals", "containsAny"]
655
+ json: ["equals", "notEquals"]
656
+ // removed containsAny from json
656
657
  };
657
658
 
658
659
  // src/components/advanceSearch/hooks/useAdvanceSearch.ts
@@ -2600,12 +2601,16 @@ var LookupSelect = ({
2600
2601
  (option) => {
2601
2602
  upsertOptionLabels([option]);
2602
2603
  addTag(option.value);
2603
- inputRef.current?.focus();
2604
- setTimeout(() => {
2605
- inputRef.current?.scrollIntoView({ behavior: "smooth" });
2606
- }, 100);
2604
+ if (multiple) {
2605
+ inputRef.current?.focus();
2606
+ setTimeout(() => {
2607
+ inputRef.current?.scrollIntoView({ behavior: "smooth" });
2608
+ }, 100);
2609
+ } else {
2610
+ inputRef.current?.blur();
2611
+ }
2607
2612
  },
2608
- [addTag, upsertOptionLabels]
2613
+ [addTag, multiple, upsertOptionLabels]
2609
2614
  );
2610
2615
  const handleKeyDown = useCallback(
2611
2616
  (e) => {
@@ -2765,7 +2770,7 @@ var LookupSelect = ({
2765
2770
  }
2766
2771
  return /* @__PURE__ */ jsx("div", { ref: assignDropdownContentRef, className: "absolute left-0 right-0 top-full z-10 mt-1", children: dropdownContent });
2767
2772
  };
2768
- return /* @__PURE__ */ jsxs("div", { className: "relative w-full", ref: containerRef, children: [
2773
+ return /* @__PURE__ */ jsxs("div", { className: "relative w-full truncate", ref: containerRef, children: [
2769
2774
  /* @__PURE__ */ jsxs(
2770
2775
  "div",
2771
2776
  {
@@ -2796,7 +2801,7 @@ var LookupSelect = ({
2796
2801
  `${tag}-${i}`
2797
2802
  );
2798
2803
  }),
2799
- !multiple && selectedLabel && /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-gray-700", children: selectedLabel }),
2804
+ !multiple && selectedLabel && /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-gray-700 max-w-full", children: selectedLabel }),
2800
2805
  /* @__PURE__ */ jsx(
2801
2806
  "input",
2802
2807
  {
@@ -2810,6 +2815,7 @@ var LookupSelect = ({
2810
2815
  setIsDropdownOpen(true);
2811
2816
  }
2812
2817
  },
2818
+ hidden: !multiple && selectedLabel !== void 0,
2813
2819
  placeholder: value.length === 0 && resolvedPlaceholder || "",
2814
2820
  className: "min-w-[120px] flex-1 border-none bg-transparent py-1 text-sm text-gray-600 placeholder:text-gray-400 outline-none",
2815
2821
  disabled: multiple && limitReached
@@ -2911,7 +2917,6 @@ var ConditionJSONInput = ({
2911
2917
  onClear: handleClear,
2912
2918
  error: Boolean(fieldState.error),
2913
2919
  placeholder: fieldSchema?.placeholder,
2914
- maxTags: row.operator === "containsAny" ? fieldSchema?.maxTags : 1,
2915
2920
  fetchSuggestions: fieldSchema?.fetchSuggestions,
2916
2921
  suggestionDebounce: fieldSchema?.suggestionDebounce,
2917
2922
  noOptionsMessage: fieldSchema?.noOptionsMessage,
@@ -3227,12 +3232,12 @@ var JSONBuilder = class {
3227
3232
  return {
3228
3233
  NOT: { [row.fieldName]: { path: row.jsonPath, equals: isArray ? row.value[0] : row.value } }
3229
3234
  };
3230
- case "containsAny":
3231
- if (!isArray)
3232
- return { [row.fieldName]: { path: row.jsonPath, equals: isArray ? row.value[0] : row.value } };
3233
- return {
3234
- OR: row.value.map((v) => ({ [row.fieldName]: { path: row.jsonPath, equals: v } }))
3235
- };
3235
+ // case "containsAny":
3236
+ // if (!isArray)
3237
+ // return { [row.fieldName]: { path: row.jsonPath, equals: isArray ? row.value[0] : row.value } };
3238
+ // return {
3239
+ // OR: (row.value as any[]).map((v) => ({ [row.fieldName]: { path: row.jsonPath, equals: v } }))
3240
+ // };
3236
3241
  default:
3237
3242
  return {};
3238
3243
  }
@@ -3505,7 +3510,9 @@ function transformFilterKeys(obj, fieldMap = FILTER_FIELD_MAP) {
3505
3510
  }
3506
3511
  var sanitizeInput = (val) => {
3507
3512
  if (!val) return val;
3508
- if (typeof val !== "string") return "__INVALID_TYPE__";
3513
+ if (Array.isArray(val)) {
3514
+ return val.map((v) => sanitizeInput(v));
3515
+ }
3509
3516
  if (val.includes("\n") || val.includes("\r") || /[\u2028\u2029]/u.test(val))
3510
3517
  return "__INVALID_NEWLINE__";
3511
3518
  if (/\\\\/.test(val)) return "__INVALID_ESCAPE__";
@@ -3524,6 +3531,9 @@ var numericTypes = ["number", "integer", "decimal"];
3524
3531
  var dateTypes = ["date", "datemonth"];
3525
3532
  var validateByFieldType = (value, fieldType) => {
3526
3533
  if (!value) return { valid: true };
3534
+ if (Array.isArray(value)) {
3535
+ return { valid: true };
3536
+ }
3527
3537
  if (numericTypes.includes(fieldType)) {
3528
3538
  if (!/^\d+(\.\d+)?$/.test(value)) {
3529
3539
  return { valid: false, message: "Please enter a valid number." };
@@ -3596,6 +3606,7 @@ var AdvanceSearch = ({
3596
3606
  );
3597
3607
  const parseRangeValue = useCallback((raw, fieldType) => {
3598
3608
  if (!raw) return void 0;
3609
+ if (Array.isArray(raw)) return void 0;
3599
3610
  const normalized = fieldType === "datemonth" ? `${raw}-01` : raw;
3600
3611
  const parsed = parseISO(normalized);
3601
3612
  return isValid(parsed) ? parsed : void 0;
@@ -3614,10 +3625,10 @@ var AdvanceSearch = ({
3614
3625
  const processedRows = rows.map((r) => {
3615
3626
  const startField = `value_${r.id}`;
3616
3627
  const endField = `value2_${r.id}`;
3617
- let v1 = currentValues[startField] ?? "";
3618
- let v2 = currentValues[endField] ?? "";
3628
+ let v1 = currentValues[startField];
3629
+ let v2 = currentValues[endField];
3619
3630
  const s1 = sanitizeInput(v1);
3620
- if (s1?.startsWith("__INVALID")) {
3631
+ if (Array.isArray(s1) && s1.some((v) => v?.startsWith("__INVALID")) || typeof s1 === "string" && s1?.startsWith("__INVALID")) {
3621
3632
  hasError = true;
3622
3633
  setError(startField, { type: "validate", message: "Invalid input." });
3623
3634
  return null;
@@ -3631,7 +3642,7 @@ var AdvanceSearch = ({
3631
3642
  }
3632
3643
  if (r.operator === "between") {
3633
3644
  const s2 = sanitizeInput(v2);
3634
- if (s2?.startsWith("__INVALID")) {
3645
+ if (Array.isArray(s2) && s2.some((v) => v?.startsWith("__INVALID")) || typeof s2 === "string" && s2?.startsWith("__INVALID")) {
3635
3646
  hasError = true;
3636
3647
  setError(endField, { type: "validate", message: "Invalid input." });
3637
3648
  return null;
@@ -3821,6 +3832,15 @@ function selectValueToBoolean(value) {
3821
3832
  if (value === "false") return false;
3822
3833
  return void 0;
3823
3834
  }
3835
+ function resetVisibleTableState(payload) {
3836
+ const { table, visibility } = payload;
3837
+ if (!table) return;
3838
+ table.setColumnVisibility(visibility);
3839
+ const isVisible = (id) => payload.visibility?.[id] === true;
3840
+ const prevState = table.getState();
3841
+ table.setColumnFilters(prevState.columnFilters.filter((f) => isVisible(f.id)));
3842
+ table.setSorting(prevState.sorting.filter((s) => isVisible(s.id)));
3843
+ }
3824
3844
  var useHover = () => {
3825
3845
  const [hovering, setHovering] = useState(false);
3826
3846
  const prevRef = useRef(null);
@@ -6867,8 +6887,15 @@ var useGridSettingsStore = create(
6867
6887
  return { availableColumns, currentColumns };
6868
6888
  },
6869
6889
  syncColumnsState: (table, options) => {
6890
+ const {
6891
+ excludeColumns = [],
6892
+ labelMap = {},
6893
+ visibility = {},
6894
+ ordering = [],
6895
+ pinning
6896
+ } = options || {};
6870
6897
  const { availableColumns, currentColumns } = get().extractColumns(table);
6871
- const { excludeColumns = [], labelMap = {}, visibility = {} } = options || {};
6898
+ const orderMap = new Map(ordering.map((columnId, index) => [columnId, index]));
6872
6899
  const filteredExcludeColumnFn = (column) => !excludeColumns.includes(column.id);
6873
6900
  const mapLabel = (col) => ({
6874
6901
  id: col.id,
@@ -6883,7 +6910,20 @@ var useGridSettingsStore = create(
6883
6910
  }
6884
6911
  }
6885
6912
  return true;
6886
- }).map(mapLabel)
6913
+ }).map(mapLabel).sort((a, b) => {
6914
+ const columnIdA = a.id;
6915
+ const columnIdB = b.id;
6916
+ const aOrder = orderMap.get(columnIdA) ?? Infinity;
6917
+ const bOrder = orderMap.get(columnIdB) ?? Infinity;
6918
+ return aOrder - bOrder;
6919
+ }),
6920
+ payload: {
6921
+ ordering,
6922
+ pinning: {
6923
+ left: pinning?.left || []
6924
+ },
6925
+ visibility
6926
+ }
6887
6927
  });
6888
6928
  }
6889
6929
  })
@@ -10072,6 +10112,6 @@ var InputNumber = ({ customInputProps, ...props }) => {
10072
10112
  };
10073
10113
  var InputNumber_default = InputNumber;
10074
10114
 
10075
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdvanceSearch_default as AdvanceSearch, arrow_default as ArrowIcon, Button, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, CropperModal, CropperModalError, DIALOG_ALERT_I18N_SUBNAMESPACE, DataTable_default as DataTable, DatePicker2 as DatePicker, Dialog, DialogAlert, DialogAlertProvider, DialogContent, DialogDescription, DialogFooter, DialogTitle, DialogTrigger, ErrorCompression, ErrorCreateCanvas, ErrorGeneratingBlob, ErrorInvalidSVG, ErrorSVGExceedSize, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormulaEditor, GridSettingsModal_default as GridSettingsModal, HeaderCell_default as HeaderCell, Image2 as Image, Input, InputNumber_default as InputNumber, Label2 as Label, List_default as List, container_default as ListContainer, header_default as ListHeader, table_default as ListTable, LookupSelect, MonthPicker2 as MonthPicker, navbar_default as Navbar, not_found_default as NotFoundIcon, Popover, PopoverAnchor, PopoverArrow, PopoverContent, PopoverTrigger, PreventPageLeave_default as PreventPageLeave, RadioGroupItem, RadioGroupRoot, RadioLabel, RichText, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Spinner, calendar_default as SuiCalendarIcon, check_default as SuiCheckIcon, dots_vertical_default as SuiDotsVerticalIcon, empty_data_default as SuiEmptyDataIcon, expand_default as SuiExpandIcon, filter_default as SuiFilterIcon, setting_default as SuiSettingIcon, triangle_down_default as SuiTriangleDownIcon, warning_default as SuiWarningIcon, Switch, Textarea, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipTrigger, truncated_default as Truncated, ui_exports as UI, booleanToSelectValue, buildPrefixMap, buttonVariants, cn, compareAlphanumeric, debounce, defaultOperatorShortcuts, defaultOperators, formatISODate, getDialogAlertControls, getDialogTemplates, inputVariants, isDefined, isEmptyObject, isValidParentheses, mapTokensToOutput, parseFormula, parseFormulaToToken, selectValueToBoolean, spinnerVariants, splitOperators, stripNullishObject, throttle, tokenizeFormulaString, useFormField, useGridSettingsStore_default as useGridSettingsStore, useHover_default as useHover, useIntersectionObserver_default as useIntersectionObserver, useMediaQuery_default as useMediaQuery, usePreventPageLeave_default as usePreventPageLeave, usePreventPageLeaveStore_default as usePreventPageLeaveStore, useScreenSize_default as useScreenSize, useSidebar, useTruncated_default as useTruncated, validateTokenPrefixes };
10115
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdvanceSearch_default as AdvanceSearch, arrow_default as ArrowIcon, Button, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, CropperModal, CropperModalError, DIALOG_ALERT_I18N_SUBNAMESPACE, DataTable_default as DataTable, DatePicker2 as DatePicker, Dialog, DialogAlert, DialogAlertProvider, DialogContent, DialogDescription, DialogFooter, DialogTitle, DialogTrigger, ErrorCompression, ErrorCreateCanvas, ErrorGeneratingBlob, ErrorInvalidSVG, ErrorSVGExceedSize, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormulaEditor, GridSettingsModal_default as GridSettingsModal, HeaderCell_default as HeaderCell, Image2 as Image, Input, InputNumber_default as InputNumber, Label2 as Label, List_default as List, container_default as ListContainer, header_default as ListHeader, table_default as ListTable, LookupSelect, MonthPicker2 as MonthPicker, navbar_default as Navbar, not_found_default as NotFoundIcon, Popover, PopoverAnchor, PopoverArrow, PopoverContent, PopoverTrigger, PreventPageLeave_default as PreventPageLeave, RadioGroupItem, RadioGroupRoot, RadioLabel, RichText, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Spinner, calendar_default as SuiCalendarIcon, check_default as SuiCheckIcon, dots_vertical_default as SuiDotsVerticalIcon, empty_data_default as SuiEmptyDataIcon, expand_default as SuiExpandIcon, filter_default as SuiFilterIcon, setting_default as SuiSettingIcon, triangle_down_default as SuiTriangleDownIcon, warning_default as SuiWarningIcon, Switch, Textarea, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipTrigger, truncated_default as Truncated, ui_exports as UI, booleanToSelectValue, buildPrefixMap, buttonVariants, cn, compareAlphanumeric, debounce, defaultOperatorShortcuts, defaultOperators, formatISODate, getDialogAlertControls, getDialogTemplates, inputVariants, isDefined, isEmptyObject, isValidParentheses, mapTokensToOutput, parseFormula, parseFormulaToToken, resetVisibleTableState, selectValueToBoolean, spinnerVariants, splitOperators, stripNullishObject, throttle, tokenizeFormulaString, useFormField, useGridSettingsStore_default as useGridSettingsStore, useHover_default as useHover, useIntersectionObserver_default as useIntersectionObserver, useMediaQuery_default as useMediaQuery, usePreventPageLeave_default as usePreventPageLeave, usePreventPageLeaveStore_default as usePreventPageLeaveStore, useScreenSize_default as useScreenSize, useSidebar, useTruncated_default as useTruncated, validateTokenPrefixes };
10076
10116
  //# sourceMappingURL=index.mjs.map
10077
10117
  //# sourceMappingURL=index.mjs.map