@sustaina/shared-ui 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -388,6 +388,7 @@ declare function DialogAlert({ open, onOpenChange, title, description, variant,
388
388
 
389
389
  declare function isDefined(value: any): boolean;
390
390
  declare function isEmptyObject(value: any): boolean;
391
+ declare function debounce<T extends (...args: any[]) => void>(fn: T, delay?: number): (...args: Parameters<T>) => void;
391
392
 
392
393
  declare function stripNullishObject<T extends Record<string, any>>(value: Partial<T>): {
393
394
  [k: string]: any;
@@ -496,4 +497,12 @@ type Breakpoints = {
496
497
  };
497
498
  declare const useScreenSize: (breakpoints?: Breakpoints) => UseScreenSizeResult;
498
499
 
499
- export { AdvanceSearch, type Breakpoints, Button, type Column, type ContentSlot, DataTable, type DataTableChildrenKeyHandler, type DataTableColumnFilter, type DataTableColumnFilterProps, type DataTableColumnGrouping, type DataTableColumnOrdering, type DataTableColumnPinning, type DataTableColumnSorting, type DataTableColumnVisibility, type DataTableComponentProps, type DataTableFilterConfig, type DataTableFilters, type DataTableGlobalFilter, type DataTableHeaderCell, type DataTableProps, type DataTableRenderHeaderHandler, type DataTableRenderHeaderProps, type DataTableRenderRowHandler, type DataTableRenderRowProps, type DataTableRowCell, type DataTableRowClickHandler, type DataTableRowClickMode, type DataTableRowExpansion, type DataTableRowIdKeyHandler, type DataTableRowSelection, type DataTableScrollFetch, type DataTableStatusContent, type DatatableColumnResizing, DialogAlert, type DialogAlertProps, type DialogVariant, type FieldSchema, FormErrorMessage, type FormErrorMessageProps, FormField, FormFieldContext, type FormFieldContextValue, type FormFieldProps, FormItem, FormItemContext, type FormItemContextValue, type FormItemProps, FormLabel, type FormLabelProps, type GridPayload, GridSettingsModal, type GridSettingsModalProps, HeaderCell, type HeaderCellProps, _default as Navbar, type NavbarProps, NumberInput, type NumberInputProps, PreventPageLeave, type RowClickType, type SorterProps, TextInput, type TextInputProps, type UseFormFieldOptions, type UseFormFieldReturn, type UseHoverResult, type UseMediaQueryOptions, type UseMediaQueryResult, type UsePreventPageLeaveOptions, type UseScreenSizeResult, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, getColumnIdFromTable, isDefined, isEmptyObject, renderContentSlot, selectValueToBoolean, stripNullishObject, useFormField, useGridSettingsStore, useHover, useIntersectionObserver, useMediaQuery, usePreventPageLeave, usePreventPageLeaveStore, useScreenSize };
500
+ type UseTruncatedOptions<T> = {
501
+ elementRef: React.RefObject<T | null>;
502
+ onChange?: (isTruncated: boolean) => void;
503
+ resizeDetectDelay?: number;
504
+ };
505
+ type UseTruncatedResult = boolean;
506
+ declare const useTruncated: <T extends HTMLElement = any>({ elementRef, onChange, resizeDetectDelay }: UseTruncatedOptions<T>) => UseTruncatedResult;
507
+
508
+ export { AdvanceSearch, type Breakpoints, Button, type Column, type ContentSlot, DataTable, type DataTableChildrenKeyHandler, type DataTableColumnFilter, type DataTableColumnFilterProps, type DataTableColumnGrouping, type DataTableColumnOrdering, type DataTableColumnPinning, type DataTableColumnSorting, type DataTableColumnVisibility, type DataTableComponentProps, type DataTableFilterConfig, type DataTableFilters, type DataTableGlobalFilter, type DataTableHeaderCell, type DataTableProps, type DataTableRenderHeaderHandler, type DataTableRenderHeaderProps, type DataTableRenderRowHandler, type DataTableRenderRowProps, type DataTableRowCell, type DataTableRowClickHandler, type DataTableRowClickMode, type DataTableRowExpansion, type DataTableRowIdKeyHandler, type DataTableRowSelection, type DataTableScrollFetch, type DataTableStatusContent, type DatatableColumnResizing, DialogAlert, type DialogAlertProps, type DialogVariant, type FieldSchema, FormErrorMessage, type FormErrorMessageProps, FormField, FormFieldContext, type FormFieldContextValue, type FormFieldProps, FormItem, FormItemContext, type FormItemContextValue, type FormItemProps, FormLabel, type FormLabelProps, type GridPayload, GridSettingsModal, type GridSettingsModalProps, HeaderCell, type HeaderCellProps, _default as Navbar, type NavbarProps, NumberInput, type NumberInputProps, PreventPageLeave, type RowClickType, type SorterProps, TextInput, type TextInputProps, type UseFormFieldOptions, type UseFormFieldReturn, type UseHoverResult, type UseMediaQueryOptions, type UseMediaQueryResult, type UsePreventPageLeaveOptions, type UseScreenSizeResult, type UseTruncatedOptions, type UseTruncatedResult, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, debounce, getColumnIdFromTable, isDefined, isEmptyObject, renderContentSlot, selectValueToBoolean, stripNullishObject, useFormField, useGridSettingsStore, useHover, useIntersectionObserver, useMediaQuery, usePreventPageLeave, usePreventPageLeaveStore, useScreenSize, useTruncated };
package/dist/index.d.ts CHANGED
@@ -388,6 +388,7 @@ declare function DialogAlert({ open, onOpenChange, title, description, variant,
388
388
 
389
389
  declare function isDefined(value: any): boolean;
390
390
  declare function isEmptyObject(value: any): boolean;
391
+ declare function debounce<T extends (...args: any[]) => void>(fn: T, delay?: number): (...args: Parameters<T>) => void;
391
392
 
392
393
  declare function stripNullishObject<T extends Record<string, any>>(value: Partial<T>): {
393
394
  [k: string]: any;
@@ -496,4 +497,12 @@ type Breakpoints = {
496
497
  };
497
498
  declare const useScreenSize: (breakpoints?: Breakpoints) => UseScreenSizeResult;
498
499
 
499
- export { AdvanceSearch, type Breakpoints, Button, type Column, type ContentSlot, DataTable, type DataTableChildrenKeyHandler, type DataTableColumnFilter, type DataTableColumnFilterProps, type DataTableColumnGrouping, type DataTableColumnOrdering, type DataTableColumnPinning, type DataTableColumnSorting, type DataTableColumnVisibility, type DataTableComponentProps, type DataTableFilterConfig, type DataTableFilters, type DataTableGlobalFilter, type DataTableHeaderCell, type DataTableProps, type DataTableRenderHeaderHandler, type DataTableRenderHeaderProps, type DataTableRenderRowHandler, type DataTableRenderRowProps, type DataTableRowCell, type DataTableRowClickHandler, type DataTableRowClickMode, type DataTableRowExpansion, type DataTableRowIdKeyHandler, type DataTableRowSelection, type DataTableScrollFetch, type DataTableStatusContent, type DatatableColumnResizing, DialogAlert, type DialogAlertProps, type DialogVariant, type FieldSchema, FormErrorMessage, type FormErrorMessageProps, FormField, FormFieldContext, type FormFieldContextValue, type FormFieldProps, FormItem, FormItemContext, type FormItemContextValue, type FormItemProps, FormLabel, type FormLabelProps, type GridPayload, GridSettingsModal, type GridSettingsModalProps, HeaderCell, type HeaderCellProps, _default as Navbar, type NavbarProps, NumberInput, type NumberInputProps, PreventPageLeave, type RowClickType, type SorterProps, TextInput, type TextInputProps, type UseFormFieldOptions, type UseFormFieldReturn, type UseHoverResult, type UseMediaQueryOptions, type UseMediaQueryResult, type UsePreventPageLeaveOptions, type UseScreenSizeResult, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, getColumnIdFromTable, isDefined, isEmptyObject, renderContentSlot, selectValueToBoolean, stripNullishObject, useFormField, useGridSettingsStore, useHover, useIntersectionObserver, useMediaQuery, usePreventPageLeave, usePreventPageLeaveStore, useScreenSize };
500
+ type UseTruncatedOptions<T> = {
501
+ elementRef: React.RefObject<T | null>;
502
+ onChange?: (isTruncated: boolean) => void;
503
+ resizeDetectDelay?: number;
504
+ };
505
+ type UseTruncatedResult = boolean;
506
+ declare const useTruncated: <T extends HTMLElement = any>({ elementRef, onChange, resizeDetectDelay }: UseTruncatedOptions<T>) => UseTruncatedResult;
507
+
508
+ export { AdvanceSearch, type Breakpoints, Button, type Column, type ContentSlot, DataTable, type DataTableChildrenKeyHandler, type DataTableColumnFilter, type DataTableColumnFilterProps, type DataTableColumnGrouping, type DataTableColumnOrdering, type DataTableColumnPinning, type DataTableColumnSorting, type DataTableColumnVisibility, type DataTableComponentProps, type DataTableFilterConfig, type DataTableFilters, type DataTableGlobalFilter, type DataTableHeaderCell, type DataTableProps, type DataTableRenderHeaderHandler, type DataTableRenderHeaderProps, type DataTableRenderRowHandler, type DataTableRenderRowProps, type DataTableRowCell, type DataTableRowClickHandler, type DataTableRowClickMode, type DataTableRowExpansion, type DataTableRowIdKeyHandler, type DataTableRowSelection, type DataTableScrollFetch, type DataTableStatusContent, type DatatableColumnResizing, DialogAlert, type DialogAlertProps, type DialogVariant, type FieldSchema, FormErrorMessage, type FormErrorMessageProps, FormField, FormFieldContext, type FormFieldContextValue, type FormFieldProps, FormItem, FormItemContext, type FormItemContextValue, type FormItemProps, FormLabel, type FormLabelProps, type GridPayload, GridSettingsModal, type GridSettingsModalProps, HeaderCell, type HeaderCellProps, _default as Navbar, type NavbarProps, NumberInput, type NumberInputProps, PreventPageLeave, type RowClickType, type SorterProps, TextInput, type TextInputProps, type UseFormFieldOptions, type UseFormFieldReturn, type UseHoverResult, type UseMediaQueryOptions, type UseMediaQueryResult, type UsePreventPageLeaveOptions, type UseScreenSizeResult, type UseTruncatedOptions, type UseTruncatedResult, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, debounce, getColumnIdFromTable, isDefined, isEmptyObject, renderContentSlot, selectValueToBoolean, stripNullishObject, useFormField, useGridSettingsStore, useHover, useIntersectionObserver, useMediaQuery, usePreventPageLeave, usePreventPageLeaveStore, useScreenSize, useTruncated };
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ var utilities = require('@dnd-kit/utilities');
17
17
  var SelectPrimitive = require('@radix-ui/react-select');
18
18
  var TooltipPrimitive = require('@radix-ui/react-tooltip');
19
19
  var core = require('@dnd-kit/core');
20
+ var modifiers = require('@dnd-kit/modifiers');
20
21
  var zod = require('zod');
21
22
  var reactDom = require('react-dom');
22
23
  var PopoverPrimitive = require('@radix-ui/react-popover');
@@ -159,6 +160,15 @@ function isDefined(value) {
159
160
  function isEmptyObject(value) {
160
161
  return !!value && Object.keys(value).length === 0 && value.constructor === Object;
161
162
  }
163
+ function debounce(fn, delay = 150) {
164
+ let timeout = null;
165
+ return (...args) => {
166
+ if (timeout) clearTimeout(timeout);
167
+ timeout = setTimeout(() => {
168
+ fn(...args);
169
+ }, delay);
170
+ };
171
+ }
162
172
 
163
173
  // src/utils/filters.ts
164
174
  function stripNullishObject(value) {
@@ -385,6 +395,36 @@ var useScreenSize = (breakpoints) => {
385
395
  return { isMobile, isTablet, isDesktop };
386
396
  };
387
397
  var useScreenSize_default = useScreenSize;
398
+ var useTruncated = ({
399
+ elementRef,
400
+ onChange,
401
+ resizeDetectDelay = 150
402
+ }) => {
403
+ const [isTruncated, setIsTruncated] = React4.useState(false);
404
+ React4.useEffect(() => {
405
+ const element = elementRef.current;
406
+ if (!element) return;
407
+ const checkTruncate = debounce(() => {
408
+ const truncated = element.scrollWidth > element.clientWidth;
409
+ setIsTruncated((prev) => {
410
+ if (prev !== truncated) {
411
+ onChange?.(truncated);
412
+ }
413
+ return truncated;
414
+ });
415
+ }, resizeDetectDelay);
416
+ checkTruncate();
417
+ const observer = new ResizeObserver(checkTruncate);
418
+ observer.observe(element);
419
+ window.addEventListener("resize", checkTruncate);
420
+ return () => {
421
+ observer.disconnect();
422
+ window.removeEventListener("resize", checkTruncate);
423
+ };
424
+ }, [elementRef, onChange, resizeDetectDelay]);
425
+ return isTruncated;
426
+ };
427
+ var useTruncated_default = useTruncated;
388
428
  var HeaderCell = ({ rootClassName, labelClassName, context, label, sorterProps }) => {
389
429
  const { ref, hovering } = useHover_default();
390
430
  const showSorter = sorterProps?.show ?? context.column.getCanSort();
@@ -1403,6 +1443,7 @@ function SelectContent({
1403
1443
  function SelectItem({
1404
1444
  className,
1405
1445
  children,
1446
+ hideCheckIcon,
1406
1447
  ...props
1407
1448
  }) {
1408
1449
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1415,6 +1456,7 @@ function SelectItem({
1415
1456
  ),
1416
1457
  ...props,
1417
1458
  children: [
1459
+ !hideCheckIcon && //
1418
1460
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "size-4" }) }) }),
1419
1461
  /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
1420
1462
  ]
@@ -1554,6 +1596,7 @@ function SortableRow({
1554
1596
  SelectItem,
1555
1597
  {
1556
1598
  value: opt.id,
1599
+ hideCheckIcon: true,
1557
1600
  className: cn(
1558
1601
  "focus:bg-[#e8edea]",
1559
1602
  opt.id === field.value ? "font-bold bg-[#dae5de] focus:bg-[#dae5de]" : ""
@@ -1747,11 +1790,12 @@ var GridSettingsModal = ({
1747
1790
  },
1748
1791
  fields[0]?.fieldId
1749
1792
  ),
1750
- /* @__PURE__ */ jsxRuntime.jsx(
1793
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: /* @__PURE__ */ jsxRuntime.jsx(
1751
1794
  core.DndContext,
1752
1795
  {
1753
1796
  sensors,
1754
1797
  collisionDetection: core.closestCenter,
1798
+ modifiers: [modifiers.restrictToParentElement, modifiers.restrictToVerticalAxis],
1755
1799
  onDragStart: () => setIsDragging(true),
1756
1800
  onDragEnd: (event) => {
1757
1801
  setIsDragging(false);
@@ -1777,7 +1821,7 @@ var GridSettingsModal = ({
1777
1821
  }
1778
1822
  )
1779
1823
  }
1780
- ),
1824
+ ) }),
1781
1825
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-6", children: /* @__PURE__ */ jsxRuntime.jsxs(
1782
1826
  Button2,
1783
1827
  {
@@ -5121,6 +5165,7 @@ exports.booleanToSelectValue = booleanToSelectValue;
5121
5165
  exports.buttonVariants = buttonVariants;
5122
5166
  exports.cn = cn;
5123
5167
  exports.compareAlphanumeric = compareAlphanumeric;
5168
+ exports.debounce = debounce;
5124
5169
  exports.getColumnIdFromTable = getColumnIdFromTable;
5125
5170
  exports.isDefined = isDefined;
5126
5171
  exports.isEmptyObject = isEmptyObject;
@@ -5135,5 +5180,6 @@ exports.useMediaQuery = useMediaQuery_default;
5135
5180
  exports.usePreventPageLeave = usePreventPageLeave_default;
5136
5181
  exports.usePreventPageLeaveStore = usePreventPageLeaveStore_default;
5137
5182
  exports.useScreenSize = useScreenSize_default;
5183
+ exports.useTruncated = useTruncated_default;
5138
5184
  //# sourceMappingURL=index.js.map
5139
5185
  //# sourceMappingURL=index.js.map