@sustaina/shared-ui 1.14.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -177,6 +177,45 @@ function stripNullishObject(value) {
177
177
  return {};
178
178
  }
179
179
  }
180
+
181
+ // src/utils/date.ts
182
+ var pad = (num) => String(num).padStart(2, "0");
183
+ function formatISODate(isoDate, format5 = "d/m/Y H:i") {
184
+ const date = new Date(isoDate);
185
+ if (isNaN(date.getTime())) {
186
+ return "Invalid Date";
187
+ }
188
+ const parts = {
189
+ d: pad(date.getDate()),
190
+ m: pad(date.getMonth() + 1),
191
+ Y: String(date.getFullYear()),
192
+ H: pad(date.getHours()),
193
+ i: pad(date.getMinutes()),
194
+ s: pad(date.getSeconds())
195
+ };
196
+ const tokenMap = {
197
+ // Day
198
+ d: "d",
199
+ DD: "d",
200
+ // Month
201
+ m: "m",
202
+ MM: "m",
203
+ // Year
204
+ Y: "Y",
205
+ // 'Y' and 'YYYY' will both map to the 4-digit year
206
+ YYYY: "Y",
207
+ // Hour
208
+ H: "H",
209
+ // Minute
210
+ i: "i",
211
+ // Second
212
+ s: "s"
213
+ };
214
+ return format5.replace(/YYYY|Y|MM|m|DD|d|H|i|s/g, (match) => {
215
+ const partKey = tokenMap[match];
216
+ return partKey ? parts[partKey] : match;
217
+ });
218
+ }
180
219
  function cn(...args) {
181
220
  return twMerge(clsx(args));
182
221
  }
@@ -1769,7 +1808,7 @@ var DatePicker2 = ({
1769
1808
  value,
1770
1809
  onChange,
1771
1810
  onValueChange,
1772
- placeholder: placeholder3 = "DD/MM/YYYY",
1811
+ placeholder: placeholder2 = "DD/MM/YYYY",
1773
1812
  allowClear = true,
1774
1813
  displayFormatter,
1775
1814
  valueFormatter,
@@ -1798,7 +1837,7 @@ var DatePicker2 = ({
1798
1837
  const parsed = parser(value);
1799
1838
  return parsed && isValid(parsed) ? parsed : void 0;
1800
1839
  }, [parser, value]);
1801
- const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder3;
1840
+ const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder2;
1802
1841
  const buttonAriaLabel = ariaLabel ?? (parsedValue ? `Change date, current selection ${labelFormatter(parsedValue)}` : "Open date picker");
1803
1842
  const shouldShowClear = allowClear && !disabled && !!parsedValue;
1804
1843
  const handleClose = React4__default.useCallback(() => setOpen(false), []);
@@ -1872,8 +1911,15 @@ var DatePicker2 = ({
1872
1911
  )
1873
1912
  ] }) });
1874
1913
  };
1875
- var placeholder = "DD/MM/YYYY";
1876
- var ConditionDateInput = ({ row, control, onClear }) => {
1914
+
1915
+ // src/components/advanceSearch/components/constants/index.ts
1916
+ var fallbackShortDateFormat = "DD/MM/YYYY";
1917
+ var ConditionDateInput = ({
1918
+ row,
1919
+ control,
1920
+ onClear,
1921
+ shortDateFormat = fallbackShortDateFormat
1922
+ }) => {
1877
1923
  const isBetween = row.operator === "between";
1878
1924
  const buildAriaLabel = (isEnd) => {
1879
1925
  if (isEnd) return "Select end date";
@@ -1905,10 +1951,11 @@ var ConditionDateInput = ({ row, control, onClear }) => {
1905
1951
  ...field,
1906
1952
  value: field.value || void 0,
1907
1953
  onValueChange: handleValueChange,
1908
- placeholder,
1954
+ placeholder: shortDateFormat,
1909
1955
  ariaLabel: buildAriaLabel(options?.isEnd),
1910
1956
  clearAriaLabel: buildClearLabel(options?.isEnd),
1911
1957
  invalid: Boolean(fieldState.error),
1958
+ displayFormatter: (d) => formatISODate(d, shortDateFormat),
1912
1959
  wrapperClassName: "min-w-0"
1913
1960
  }
1914
1961
  ) }),
@@ -2192,7 +2239,7 @@ var MonthPicker2 = ({
2192
2239
  value,
2193
2240
  onChange,
2194
2241
  onValueChange,
2195
- placeholder: placeholder3 = "MM/YYYY",
2242
+ placeholder: placeholder2 = "MM/YYYY",
2196
2243
  allowClear = true,
2197
2244
  displayFormatter,
2198
2245
  valueFormatter,
@@ -2224,7 +2271,7 @@ var MonthPicker2 = ({
2224
2271
  }
2225
2272
  return void 0;
2226
2273
  }, [parser, value]);
2227
- const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder3;
2274
+ const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder2;
2228
2275
  const buttonAriaLabel = ariaLabel ?? (parsedValue ? `Change month, current selection ${labelFormatter(parsedValue)}` : "Open month picker");
2229
2276
  const shouldShowClear = allowClear && !disabled && !!parsedValue;
2230
2277
  const handleClose = React4__default.useCallback(() => setOpen(false), []);
@@ -2299,7 +2346,7 @@ var MonthPicker2 = ({
2299
2346
  )
2300
2347
  ] }) });
2301
2348
  };
2302
- var placeholder2 = "MM/YYYY";
2349
+ var placeholder = "MM/YYYY";
2303
2350
  var ConditionMonthInput = ({ row, control, onClear }) => {
2304
2351
  const isBetween = row.operator === "between";
2305
2352
  const buildAriaLabel = (isEnd) => {
@@ -2333,7 +2380,7 @@ var ConditionMonthInput = ({ row, control, onClear }) => {
2333
2380
  ...field,
2334
2381
  value,
2335
2382
  onValueChange: handleValueChange,
2336
- placeholder: placeholder2,
2383
+ placeholder,
2337
2384
  ariaLabel: buildAriaLabel(options?.isEnd),
2338
2385
  clearAriaLabel: buildClearLabel(options?.isEnd),
2339
2386
  displayFormatter: (month) => format(month, "MM/yyyy"),
@@ -2445,7 +2492,7 @@ var LookupSelect = ({
2445
2492
  onChange,
2446
2493
  onClear,
2447
2494
  error,
2448
- placeholder: placeholder3,
2495
+ placeholder: placeholder2,
2449
2496
  maxTags = 10,
2450
2497
  fetchSuggestions,
2451
2498
  suggestionDebounce = 250,
@@ -2619,7 +2666,7 @@ var LookupSelect = ({
2619
2666
  window.removeEventListener("scroll", handleReposition, true);
2620
2667
  };
2621
2668
  }, [dropdownPortalElement, isDropdownOpen, updateDropdownPosition]);
2622
- const resolvedPlaceholder = placeholder3 ?? "Select";
2669
+ const resolvedPlaceholder = placeholder2 ?? "Select";
2623
2670
  const showDropdown = isDropdownOpen && !fetchError;
2624
2671
  const dropdownContent = /* @__PURE__ */ jsx("div", { className: "overflow-hidden rounded-md border border-gray-200 bg-white shadow-lg", children: loading ? /* @__PURE__ */ jsx("div", { className: "px-3 py-2 text-sm text-inherit", children: loadingMessage }) : suggestions.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center px-3 py-4 text-sm text-inherit text-center", children: [
2625
2672
  /* @__PURE__ */ jsx(not_found_default, { className: "w-full max-w-[80px] h-auto" }),
@@ -2812,7 +2859,13 @@ var ConditionJSONInput = ({
2812
2859
  }
2813
2860
  }
2814
2861
  );
2815
- var ConditionValue = ({ row, fields, onClearValue, dropdownPortalId }) => {
2862
+ var ConditionValue = ({
2863
+ row,
2864
+ fields,
2865
+ onClearValue,
2866
+ dropdownPortalId,
2867
+ shortDateFormat
2868
+ }) => {
2816
2869
  const { control } = useFormContext();
2817
2870
  const fieldSchema = fields.find((f) => f.name === row.fieldName);
2818
2871
  const fieldType = fieldSchema?.type ?? "text";
@@ -2821,7 +2874,15 @@ var ConditionValue = ({ row, fields, onClearValue, dropdownPortalId }) => {
2821
2874
  return /* @__PURE__ */ jsx(ConditionNumberInput, { row, control, onClear: onClearValue });
2822
2875
  case "date":
2823
2876
  case "datetime":
2824
- return /* @__PURE__ */ jsx(ConditionDateInput, { row, control, onClear: onClearValue });
2877
+ return /* @__PURE__ */ jsx(
2878
+ ConditionDateInput,
2879
+ {
2880
+ row,
2881
+ control,
2882
+ onClear: onClearValue,
2883
+ shortDateFormat
2884
+ }
2885
+ );
2825
2886
  case "datemonth":
2826
2887
  return /* @__PURE__ */ jsx(ConditionMonthInput, { row, control, onClear: onClearValue });
2827
2888
  case "dropdown":
@@ -2900,7 +2961,8 @@ var AdvanceSearchRow = ({
2900
2961
  onRemove,
2901
2962
  onClearValue,
2902
2963
  disableAdd,
2903
- dropdownPortalId
2964
+ dropdownPortalId,
2965
+ shortDateFormat
2904
2966
  }) => {
2905
2967
  return /* @__PURE__ */ jsxs("div", { className: "grid gap-3 rounded-lg bg-white md:grid-cols-[minmax(150px,0.85fr)_minmax(140px,0.75fr)_minmax(260px,1fr)_auto] md:items-start", children: [
2906
2968
  /* @__PURE__ */ jsx(FieldSelect, { row, fieldOptions, onChangeField }),
@@ -2919,7 +2981,8 @@ var AdvanceSearchRow = ({
2919
2981
  row,
2920
2982
  fields,
2921
2983
  onClearValue,
2922
- dropdownPortalId
2984
+ dropdownPortalId,
2985
+ shortDateFormat
2923
2986
  }
2924
2987
  ),
2925
2988
  /* @__PURE__ */ jsx("div", { className: "flex h-full", children: /* @__PURE__ */ jsx(AddRemoveButtons, { isFirst, onAdd, onRemove, disableAdd }) })
@@ -3341,7 +3404,8 @@ var AdvanceSearch = ({
3341
3404
  iconColor = "#ffffff",
3342
3405
  limitRows = 4,
3343
3406
  onSearch,
3344
- onClear
3407
+ onClear,
3408
+ shortDateFormat
3345
3409
  }) => {
3346
3410
  const fieldsData = useMemo(() => {
3347
3411
  if (fields.length === 0) throw new Error("fields cannot be an empty array");
@@ -3471,6 +3535,7 @@ var AdvanceSearch = ({
3471
3535
  AdvanceSearchRow,
3472
3536
  {
3473
3537
  row,
3538
+ shortDateFormat,
3474
3539
  isFirst: idx === 0,
3475
3540
  fields: fieldsData,
3476
3541
  fieldOptions,
@@ -6294,8 +6359,8 @@ function parseSerializedEditorState(raw) {
6294
6359
  return void 0;
6295
6360
  }
6296
6361
  }
6297
- function Placeholder({ placeholder: placeholder3 }) {
6298
- return /* @__PURE__ */ jsx("div", { className: theme.placeholder, children: placeholder3 });
6362
+ function Placeholder({ placeholder: placeholder2 }) {
6363
+ return /* @__PURE__ */ jsx("div", { className: theme.placeholder, children: placeholder2 });
6299
6364
  }
6300
6365
  var initialToolbarState = {
6301
6366
  isBold: false,
@@ -7196,7 +7261,7 @@ var RichText = forwardRef(function RichText2({
7196
7261
  defaultValue,
7197
7262
  onChange,
7198
7263
  onHtmlChange,
7199
- placeholder: placeholder3,
7264
+ placeholder: placeholder2,
7200
7265
  readOnly,
7201
7266
  disabled,
7202
7267
  editorClassName,
@@ -7284,7 +7349,7 @@ var RichText = forwardRef(function RichText2({
7284
7349
  )
7285
7350
  }
7286
7351
  ),
7287
- placeholder: /* @__PURE__ */ jsx(Placeholder, { placeholder: placeholder3 || "" }),
7352
+ placeholder: /* @__PURE__ */ jsx(Placeholder, { placeholder: placeholder2 || "" }),
7288
7353
  ErrorBoundary: LexicalErrorBoundary
7289
7354
  }
7290
7355
  ),
@@ -8381,6 +8446,6 @@ var CropperModal = ({
8381
8446
  );
8382
8447
  };
8383
8448
 
8384
- 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_NAMESPACE, 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, GridSettingsModal_default as GridSettingsModal, HeaderCell_default as HeaderCell, Input, 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, ui_exports as UI, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, debounce, getDialogAlertControls, getDialogTemplates, inputVariants, isDefined, isEmptyObject, selectValueToBoolean, spinnerVariants, stripNullishObject, throttle, 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 };
8449
+ 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_NAMESPACE, 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, GridSettingsModal_default as GridSettingsModal, HeaderCell_default as HeaderCell, Input, 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, ui_exports as UI, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, debounce, formatISODate, getDialogAlertControls, getDialogTemplates, inputVariants, isDefined, isEmptyObject, selectValueToBoolean, spinnerVariants, stripNullishObject, throttle, 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 };
8385
8450
  //# sourceMappingURL=index.mjs.map
8386
8451
  //# sourceMappingURL=index.mjs.map