@krak-stack/registry 0.1.42 → 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
|
-
/**
|
|
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
|
}
|
|
@@ -1339,9 +1339,7 @@ var uiFromState = (state) => ({
|
|
|
1339
1339
|
var sameUiState = (left, right) => left.columnVisibility === right.columnVisibility && left.columnSizing === right.columnSizing && left.rowSelection === right.rowSelection && left.grouping === right.grouping && left.collapsedGroups === right.collapsedGroups && left.view === right.view;
|
|
1340
1340
|
var sameQueryState = (left, right) => left.page === right.page && left.pageSize === right.pageSize && left.globalFilter === right.globalFilter && left.sort === right.sort;
|
|
1341
1341
|
var initialPublicState = (props, uiState) => ({
|
|
1342
|
-
...DEFAULT_QUERY,
|
|
1343
|
-
...props.initialState,
|
|
1344
|
-
...props.state,
|
|
1342
|
+
...queryFromState(props.state ?? { ...DEFAULT_QUERY, ...props.initialState }),
|
|
1345
1343
|
...uiState
|
|
1346
1344
|
});
|
|
1347
1345
|
var buildDataTableModel = (store) => {
|
|
@@ -1378,7 +1376,7 @@ var changeState = (setStore, update) => {
|
|
|
1378
1376
|
if (!sameUiState(uiState, store.state)) {
|
|
1379
1377
|
store.config.onUiStateChange(uiState);
|
|
1380
1378
|
}
|
|
1381
|
-
const state = store.controlledState ? { ...proposed, ...store.controlledState } : proposed;
|
|
1379
|
+
const state = store.controlledState ? { ...proposed, ...queryFromState(store.controlledState) } : proposed;
|
|
1382
1380
|
if (sameDataTableState(state, store.state))
|
|
1383
1381
|
return store;
|
|
1384
1382
|
const next = { ...store, state };
|
|
@@ -1496,6 +1494,7 @@ var renderCell = (row, column, locale = "en", labels = dataTableMessages(locale)
|
|
|
1496
1494
|
return /* @__PURE__ */ jsx14(DataTableListCell, {
|
|
1497
1495
|
...config,
|
|
1498
1496
|
itemActions,
|
|
1497
|
+
onItemClick: config.onItemClick ? (item) => config.onItemClick?.({ item, row: row.data }) : undefined,
|
|
1499
1498
|
items: config.getItems(row.data),
|
|
1500
1499
|
locale,
|
|
1501
1500
|
messages: { [locale]: labels },
|
|
@@ -1508,6 +1507,7 @@ var renderCell = (row, column, locale = "en", labels = dataTableMessages(locale)
|
|
|
1508
1507
|
return /* @__PURE__ */ jsx14(DataTableListCell, {
|
|
1509
1508
|
...config,
|
|
1510
1509
|
itemActions,
|
|
1510
|
+
onItemClick: config.onItemClick ? (item) => config.onItemClick?.({ item, row: row.data }) : undefined,
|
|
1511
1511
|
items: config.getItems(row.data),
|
|
1512
1512
|
locale,
|
|
1513
1513
|
messages: { [locale]: labels },
|
|
@@ -1700,7 +1700,7 @@ var DataTableToolbar = ({
|
|
|
1700
1700
|
}),
|
|
1701
1701
|
store.state.globalFilter ? /* @__PURE__ */ jsx14(Button, {
|
|
1702
1702
|
"aria-label": labels.filter,
|
|
1703
|
-
className: "absolute top-1/2 right-1 size-7 -translate-y-1/2",
|
|
1703
|
+
className: "absolute top-1/2 right-1 size-7 -translate-y-1/2 active:not-aria-[haspopup]:-translate-y-1/2",
|
|
1704
1704
|
onClick: () => update((state) => ({
|
|
1705
1705
|
...state,
|
|
1706
1706
|
globalFilter: undefined,
|
|
@@ -2887,7 +2887,11 @@ var HydratedDataTable = ({
|
|
|
2887
2887
|
labels: dataTableMessages(props.locale, props.messages),
|
|
2888
2888
|
locale: props.locale ?? "en"
|
|
2889
2889
|
};
|
|
2890
|
-
const state = {
|
|
2890
|
+
const state = {
|
|
2891
|
+
...store.state,
|
|
2892
|
+
...uiState,
|
|
2893
|
+
...queryFromState(props.state ?? store.state)
|
|
2894
|
+
};
|
|
2891
2895
|
const modelChanged = store.rowData !== props.rowData || store.columnDefs !== props.columnDefs || !sameDataTableState(store.state, state) || store.config.getRowId !== config.getRowId || store.config.features.pagination !== config.features.pagination;
|
|
2892
2896
|
const next = {
|
|
2893
2897
|
...store,
|
|
@@ -2999,11 +3003,10 @@ var DataTableListCell = (props) => {
|
|
|
2999
3003
|
...resolvedProps
|
|
3000
3004
|
});
|
|
3001
3005
|
}
|
|
3002
|
-
const { actionsLabel, itemActions, ...summaryProps } = resolvedProps;
|
|
3006
|
+
const { actionsLabel, itemActions, onItemClick, ...summaryProps } = resolvedProps;
|
|
3003
3007
|
const labels = dataTableMessages(locale, resolvedProps.messages);
|
|
3004
|
-
const
|
|
3005
|
-
|
|
3006
|
-
if (!itemActions?.length && !overflow) {
|
|
3008
|
+
const hasItems = resolvedProps.items.length > 0;
|
|
3009
|
+
if (!itemActions?.length && !hasItems) {
|
|
3007
3010
|
return /* @__PURE__ */ jsx14(DataTableListSummary, {
|
|
3008
3011
|
...summaryProps
|
|
3009
3012
|
});
|
|
@@ -3017,11 +3020,12 @@ var DataTableListCell = (props) => {
|
|
|
3017
3020
|
children: /* @__PURE__ */ jsx14(DataTableListMenu, {
|
|
3018
3021
|
actions: itemActions ?? [],
|
|
3019
3022
|
display: resolvedProps.display,
|
|
3020
|
-
force:
|
|
3023
|
+
force: hasItems,
|
|
3021
3024
|
label: menuLabel,
|
|
3022
3025
|
items: resolvedProps.items,
|
|
3023
3026
|
locale,
|
|
3024
3027
|
messages: resolvedProps.messages,
|
|
3028
|
+
onItemClick,
|
|
3025
3029
|
trigger: /* @__PURE__ */ jsxs8(Button, {
|
|
3026
3030
|
"aria-label": menuLabel,
|
|
3027
3031
|
className: "h-full w-full min-w-0 justify-between rounded-none px-2 focus-visible:ring-inset",
|
|
@@ -3049,6 +3053,7 @@ var EditableDataTableListCell = ({
|
|
|
3049
3053
|
totalCount,
|
|
3050
3054
|
actionsLabel,
|
|
3051
3055
|
itemActions,
|
|
3056
|
+
onItemClick,
|
|
3052
3057
|
locale = "en",
|
|
3053
3058
|
messages
|
|
3054
3059
|
}) => {
|
|
@@ -3091,6 +3096,7 @@ var EditableDataTableListCell = ({
|
|
|
3091
3096
|
display,
|
|
3092
3097
|
force: true,
|
|
3093
3098
|
items: selected,
|
|
3099
|
+
onItemClick,
|
|
3094
3100
|
label: actionsLabel ?? manageLabel,
|
|
3095
3101
|
locale,
|
|
3096
3102
|
messages,
|
|
@@ -3131,6 +3137,7 @@ var DataTableListMenu = ({
|
|
|
3131
3137
|
locale = "en",
|
|
3132
3138
|
messages,
|
|
3133
3139
|
onAdd,
|
|
3140
|
+
onItemClick,
|
|
3134
3141
|
trigger
|
|
3135
3142
|
}) => {
|
|
3136
3143
|
const entries = items.map((item) => {
|
|
@@ -3158,7 +3165,7 @@ var DataTableListMenu = ({
|
|
|
3158
3165
|
}),
|
|
3159
3166
|
/* @__PURE__ */ jsx14(DropdownMenuContent, {
|
|
3160
3167
|
align: "end",
|
|
3161
|
-
className: "max-h-72 w-
|
|
3168
|
+
className: "max-h-[min(18rem,var(--available-height))] w-72 max-w-[calc(100vw-2rem)]",
|
|
3162
3169
|
onClick: (event) => event.stopPropagation(),
|
|
3163
3170
|
onPointerDown: (event) => event.stopPropagation(),
|
|
3164
3171
|
children: /* @__PURE__ */ jsxs8(DropdownMenuGroup, {
|
|
@@ -3192,8 +3199,12 @@ var DataTableListMenu = ({
|
|
|
3192
3199
|
}, action.id ?? action.name))
|
|
3193
3200
|
})
|
|
3194
3201
|
]
|
|
3195
|
-
}, item.value ?? `${item.label}-${index}`) : /* @__PURE__ */ jsx14(
|
|
3196
|
-
|
|
3202
|
+
}, item.value ?? `${item.label}-${index}`) : /* @__PURE__ */ jsx14(DropdownMenuItem, {
|
|
3203
|
+
closeOnClick: Boolean(onItemClick),
|
|
3204
|
+
onClick: (event) => {
|
|
3205
|
+
event.stopPropagation();
|
|
3206
|
+
onItemClick?.(item);
|
|
3207
|
+
},
|
|
3197
3208
|
children: /* @__PURE__ */ jsx14(DataTableListEntry, {
|
|
3198
3209
|
item,
|
|
3199
3210
|
appearance: display === "icon" ? "detail" : "list"
|
|
@@ -3375,7 +3386,8 @@ var DataTableListEntry = ({
|
|
|
3375
3386
|
});
|
|
3376
3387
|
if (appearance === "list") {
|
|
3377
3388
|
return /* @__PURE__ */ jsx14("span", {
|
|
3378
|
-
className: "truncate",
|
|
3389
|
+
className: "min-w-0 flex-1 truncate",
|
|
3390
|
+
title: item.label,
|
|
3379
3391
|
children: item.label
|
|
3380
3392
|
});
|
|
3381
3393
|
}
|