@krak-stack/registry 0.1.43 → 0.1.44

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.
@@ -40,7 +40,9 @@ export interface DataTableListOptions {
40
40
  export type DataTableListColumn<TData> = DataTableListOptions & {
41
41
  /** Includes items not loaded in the preview; the dropdown only shows supplied items. */
42
42
  getTotalCount?: (row: TData) => number;
43
- /** Actions open from an explicit roster button; list items remain passive. */
43
+ /** Optional primary action for items without submenu actions. */
44
+ onItemClick?: (context: DataTableListItemContext<TData>) => void;
45
+ /** Optional secondary actions shown in each item's submenu. */
44
46
  itemActions?: readonly DataTableItemAction<DataTableListItemContext<TData>>[];
45
47
  actionsLabel?: string;
46
48
  } & ({
@@ -76,6 +78,7 @@ interface EditableDataTableListCellProps extends DataTableListOptions {
76
78
  totalCount?: number | undefined;
77
79
  }
78
80
  interface DataTableListCellActionsProps {
81
+ onItemClick?: ((item: DataTableListItem) => void) | undefined;
79
82
  actionsLabel?: string | undefined;
80
83
  itemActions?: readonly DataTableItemAction<DataTableListItem>[] | undefined;
81
84
  }
@@ -1494,6 +1494,7 @@ var renderCell = (row, column, locale = "en", labels = dataTableMessages(locale)
1494
1494
  return /* @__PURE__ */ jsx14(DataTableListCell, {
1495
1495
  ...config,
1496
1496
  itemActions,
1497
+ onItemClick: config.onItemClick ? (item) => config.onItemClick?.({ item, row: row.data }) : undefined,
1497
1498
  items: config.getItems(row.data),
1498
1499
  locale,
1499
1500
  messages: { [locale]: labels },
@@ -1506,6 +1507,7 @@ var renderCell = (row, column, locale = "en", labels = dataTableMessages(locale)
1506
1507
  return /* @__PURE__ */ jsx14(DataTableListCell, {
1507
1508
  ...config,
1508
1509
  itemActions,
1510
+ onItemClick: config.onItemClick ? (item) => config.onItemClick?.({ item, row: row.data }) : undefined,
1509
1511
  items: config.getItems(row.data),
1510
1512
  locale,
1511
1513
  messages: { [locale]: labels },
@@ -3001,11 +3003,10 @@ var DataTableListCell = (props) => {
3001
3003
  ...resolvedProps
3002
3004
  });
3003
3005
  }
3004
- const { actionsLabel, itemActions, ...summaryProps } = resolvedProps;
3006
+ const { actionsLabel, itemActions, onItemClick, ...summaryProps } = resolvedProps;
3005
3007
  const labels = dataTableMessages(locale, resolvedProps.messages);
3006
- const totalCount = resolvedProps.totalCount ?? resolvedProps.items.length;
3007
- const overflow = totalCount > Math.min(resolvedProps.items.length, resolvedProps.visibleCount ?? 3);
3008
- if (!itemActions?.length && !overflow) {
3008
+ const hasItems = resolvedProps.items.length > 0;
3009
+ if (!itemActions?.length && !hasItems) {
3009
3010
  return /* @__PURE__ */ jsx14(DataTableListSummary, {
3010
3011
  ...summaryProps
3011
3012
  });
@@ -3019,11 +3020,12 @@ var DataTableListCell = (props) => {
3019
3020
  children: /* @__PURE__ */ jsx14(DataTableListMenu, {
3020
3021
  actions: itemActions ?? [],
3021
3022
  display: resolvedProps.display,
3022
- force: overflow,
3023
+ force: hasItems,
3023
3024
  label: menuLabel,
3024
3025
  items: resolvedProps.items,
3025
3026
  locale,
3026
3027
  messages: resolvedProps.messages,
3028
+ onItemClick,
3027
3029
  trigger: /* @__PURE__ */ jsxs8(Button, {
3028
3030
  "aria-label": menuLabel,
3029
3031
  className: "h-full w-full min-w-0 justify-between rounded-none px-2 focus-visible:ring-inset",
@@ -3051,6 +3053,7 @@ var EditableDataTableListCell = ({
3051
3053
  totalCount,
3052
3054
  actionsLabel,
3053
3055
  itemActions,
3056
+ onItemClick,
3054
3057
  locale = "en",
3055
3058
  messages
3056
3059
  }) => {
@@ -3093,6 +3096,7 @@ var EditableDataTableListCell = ({
3093
3096
  display,
3094
3097
  force: true,
3095
3098
  items: selected,
3099
+ onItemClick,
3096
3100
  label: actionsLabel ?? manageLabel,
3097
3101
  locale,
3098
3102
  messages,
@@ -3133,6 +3137,7 @@ var DataTableListMenu = ({
3133
3137
  locale = "en",
3134
3138
  messages,
3135
3139
  onAdd,
3140
+ onItemClick,
3136
3141
  trigger
3137
3142
  }) => {
3138
3143
  const entries = items.map((item) => {
@@ -3160,7 +3165,7 @@ var DataTableListMenu = ({
3160
3165
  }),
3161
3166
  /* @__PURE__ */ jsx14(DropdownMenuContent, {
3162
3167
  align: "end",
3163
- className: "max-h-72 w-72",
3168
+ className: "max-h-[min(18rem,var(--available-height))] w-72 max-w-[calc(100vw-2rem)]",
3164
3169
  onClick: (event) => event.stopPropagation(),
3165
3170
  onPointerDown: (event) => event.stopPropagation(),
3166
3171
  children: /* @__PURE__ */ jsxs8(DropdownMenuGroup, {
@@ -3194,8 +3199,12 @@ var DataTableListMenu = ({
3194
3199
  }, action.id ?? action.name))
3195
3200
  })
3196
3201
  ]
3197
- }, item.value ?? `${item.label}-${index}`) : /* @__PURE__ */ jsx14("div", {
3198
- className: "px-2 py-1.5",
3202
+ }, item.value ?? `${item.label}-${index}`) : /* @__PURE__ */ jsx14(DropdownMenuItem, {
3203
+ closeOnClick: Boolean(onItemClick),
3204
+ onClick: (event) => {
3205
+ event.stopPropagation();
3206
+ onItemClick?.(item);
3207
+ },
3199
3208
  children: /* @__PURE__ */ jsx14(DataTableListEntry, {
3200
3209
  item,
3201
3210
  appearance: display === "icon" ? "detail" : "list"
@@ -3377,7 +3386,8 @@ var DataTableListEntry = ({
3377
3386
  });
3378
3387
  if (appearance === "list") {
3379
3388
  return /* @__PURE__ */ jsx14("span", {
3380
- className: "truncate",
3389
+ className: "min-w-0 flex-1 truncate",
3390
+ title: item.label,
3381
3391
  children: item.label
3382
3392
  });
3383
3393
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krak-stack/registry",
3
- "version": "0.1.43",
3
+ "version": "0.1.44",
4
4
  "description": "Tree-shakable KrakStack components and Effect services.",
5
5
  "license": "MIT",
6
6
  "repository": {