brd-ui-kit 0.1.75 → 0.1.76
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/brd-ui-kit.css +1 -1
- package/dist/calendar-B5QCV34E.cjs +2 -0
- package/dist/{calendar-DReGV_22.cjs.map → calendar-B5QCV34E.cjs.map} +1 -1
- package/dist/{calendar-C0DXP3T-.js → calendar-Ba3kHG6w.js} +264 -270
- package/dist/{calendar-C0DXP3T-.js.map → calendar-Ba3kHG6w.js.map} +1 -1
- package/dist/{calendar-locale-CP2pxhFK.cjs → calendar-locale-BHyNJPb2.cjs} +2 -2
- package/dist/{calendar-locale-CP2pxhFK.cjs.map → calendar-locale-BHyNJPb2.cjs.map} +1 -1
- package/dist/{calendar-locale-DJf03PI9.js → calendar-locale-DQ9wj0zF.js} +2 -2
- package/dist/{calendar-locale-DJf03PI9.js.map → calendar-locale-DQ9wj0zF.js.map} +1 -1
- package/dist/chart-9H_9wEfR.cjs +63 -0
- package/dist/{chart-C69jBlXa.cjs.map → chart-9H_9wEfR.cjs.map} +1 -1
- package/dist/{chart-CAPCe8o5.js → chart-DFbmMKiQ.js} +2956 -2951
- package/dist/{chart-CAPCe8o5.js.map → chart-DFbmMKiQ.js.map} +1 -1
- package/dist/components/basic-chart/basic-chart.d.ts +1 -1
- package/dist/components/basic-table/basic-table.d.ts +5 -5
- package/dist/components/data-table/data-table-actions-column.d.ts +3 -3
- package/dist/components/data-table/data-table-bulk-actions.d.ts +3 -3
- package/dist/components/data-table/data-table-column-visibility.d.ts +2 -2
- package/dist/components/data-table/data-table-filter.d.ts +2 -2
- package/dist/components/data-table/data-table-row-actions-column.d.ts +3 -3
- package/dist/components/data-table/use-data-table-editable-rows.d.ts +5 -5
- package/dist/components/input-field/input-field.d.ts +3 -3
- package/dist/components/input-phone/input-phone.d.ts +4 -4
- package/dist/components/popover-modal/popover-modal.d.ts +4 -4
- package/dist/components/select-field/select-field.d.ts +2 -2
- package/dist/components/ui/avatar/avatar.d.ts +7 -7
- package/dist/components/ui/badge/badge.d.ts +2 -2
- package/dist/components/ui/button/button.d.ts +3 -3
- package/dist/components/ui/calendar/calendar.d.ts +6 -6
- package/dist/components/ui/calendar/calendar.styles.d.ts +1 -1
- package/dist/components/ui/card/card.d.ts +13 -13
- package/dist/components/ui/chart/chart.d.ts +23 -21
- package/dist/components/ui/checkbox/checkbox.d.ts +4 -4
- package/dist/components/ui/combobox/combobox.d.ts +6 -6
- package/dist/components/ui/dialog/dialog.d.ts +11 -11
- package/dist/components/ui/drawer/drawer.d.ts +11 -11
- package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +40 -40
- package/dist/components/ui/icon/icon.d.ts +3 -3
- package/dist/components/ui/input/input.d.ts +2 -2
- package/dist/components/ui/input-group/input-group.d.ts +7 -7
- package/dist/components/ui/label/label.d.ts +4 -4
- package/dist/components/ui/pagination/pagination.d.ts +8 -8
- package/dist/components/ui/popover/popover.d.ts +8 -8
- package/dist/components/ui/progress/progress.d.ts +4 -4
- package/dist/components/ui/radio-group/radio-group.d.ts +7 -7
- package/dist/components/ui/select/select.d.ts +11 -11
- package/dist/components/ui/select-calendar-menu/select-calendar-menu.d.ts +4 -4
- package/dist/components/ui/separator/separator.d.ts +4 -4
- package/dist/components/ui/switch/switch.d.ts +4 -4
- package/dist/components/ui/table/table.d.ts +17 -17
- package/dist/components/ui/tabs/tabs.d.ts +8 -8
- package/dist/components/ui/tooltip/tooltip.d.ts +8 -8
- package/dist/components/ui/typography/typography.d.ts +174 -174
- package/dist/components-avatar-uploader-avatar-uploader.cjs +2 -2
- package/dist/components-avatar-uploader-avatar-uploader.cjs.map +1 -1
- package/dist/components-avatar-uploader-avatar-uploader.js +35 -36
- package/dist/components-avatar-uploader-avatar-uploader.js.map +1 -1
- package/dist/components-basic-avatar-basic-avatar.cjs +1 -1
- package/dist/components-basic-avatar-basic-avatar.js +3 -3
- package/dist/components-basic-chart-basic-chart.cjs +2 -2
- package/dist/components-basic-chart-basic-chart.cjs.map +1 -1
- package/dist/components-basic-chart-basic-chart.js +106 -108
- package/dist/components-basic-chart-basic-chart.js.map +1 -1
- package/dist/components-basic-table-basic-table.cjs +2 -2
- package/dist/components-basic-table-basic-table.cjs.map +1 -1
- package/dist/components-basic-table-basic-table.js +232 -231
- package/dist/components-basic-table-basic-table.js.map +1 -1
- package/dist/components-data-table-data-table-actions-column.cjs +1 -1
- package/dist/components-data-table-data-table-actions-column.cjs.map +1 -1
- package/dist/components-data-table-data-table-actions-column.js +5 -6
- package/dist/components-data-table-data-table-actions-column.js.map +1 -1
- package/dist/components-data-table-data-table-bulk-actions.cjs +1 -1
- package/dist/components-data-table-data-table-bulk-actions.cjs.map +1 -1
- package/dist/components-data-table-data-table-bulk-actions.js +9 -9
- package/dist/components-data-table-data-table-bulk-actions.js.map +1 -1
- package/dist/components-data-table-data-table-column-visibility.cjs +1 -1
- package/dist/components-data-table-data-table-column-visibility.cjs.map +1 -1
- package/dist/components-data-table-data-table-column-visibility.js +1 -1
- package/dist/components-data-table-data-table-column-visibility.js.map +1 -1
- package/dist/components-data-table-data-table-filter.cjs +1 -1
- package/dist/components-data-table-data-table-filter.cjs.map +1 -1
- package/dist/components-data-table-data-table-filter.js +15 -15
- package/dist/components-data-table-data-table-filter.js.map +1 -1
- package/dist/components-data-table-data-table-row-actions-column.cjs +1 -1
- package/dist/components-data-table-data-table-row-actions-column.cjs.map +1 -1
- package/dist/components-data-table-data-table-row-actions-column.js +19 -20
- package/dist/components-data-table-data-table-row-actions-column.js.map +1 -1
- package/dist/components-data-table-use-data-table-editable-rows.cjs +1 -1
- package/dist/components-data-table-use-data-table-editable-rows.cjs.map +1 -1
- package/dist/components-data-table-use-data-table-editable-rows.js +88 -90
- package/dist/components-data-table-use-data-table-editable-rows.js.map +1 -1
- package/dist/components-input-contact-input-contact.cjs +1 -1
- package/dist/components-input-contact-input-contact.cjs.map +1 -1
- package/dist/components-input-contact-input-contact.js +8 -8
- package/dist/components-input-field-input-field.cjs +1 -1
- package/dist/components-input-field-input-field.cjs.map +1 -1
- package/dist/components-input-field-input-field.js +18 -19
- package/dist/components-input-field-input-field.js.map +1 -1
- package/dist/components-input-password-input-password.cjs +1 -1
- package/dist/components-input-password-input-password.cjs.map +1 -1
- package/dist/components-input-password-input-password.js +4 -4
- package/dist/components-input-phone-input-phone.cjs.map +1 -1
- package/dist/components-input-phone-input-phone.js.map +1 -1
- package/dist/components-popover-modal-popover-modal.cjs +1 -1
- package/dist/components-popover-modal-popover-modal.cjs.map +1 -1
- package/dist/components-popover-modal-popover-modal.js +40 -29
- package/dist/components-popover-modal-popover-modal.js.map +1 -1
- package/dist/components-select-field-select-field.cjs.map +1 -1
- package/dist/components-select-field-select-field.js.map +1 -1
- package/dist/components-ui-avatar-avatar.cjs +1 -1
- package/dist/components-ui-avatar-avatar.cjs.map +1 -1
- package/dist/components-ui-avatar-avatar.js +12 -13
- package/dist/components-ui-avatar-avatar.js.map +1 -1
- package/dist/components-ui-badge-badge.cjs +1 -1
- package/dist/components-ui-badge-badge.cjs.map +1 -1
- package/dist/components-ui-badge-badge.js +10 -11
- package/dist/components-ui-badge-badge.js.map +1 -1
- package/dist/components-ui-button-button.cjs +1 -1
- package/dist/components-ui-button-button.cjs.map +1 -1
- package/dist/components-ui-button-button.js +10 -11
- package/dist/components-ui-button-button.js.map +1 -1
- package/dist/components-ui-button-button.styles.cjs +4 -4
- package/dist/components-ui-button-button.styles.cjs.map +1 -1
- package/dist/components-ui-button-button.styles.js +4 -4
- package/dist/components-ui-button-button.styles.js.map +1 -1
- package/dist/components-ui-calendar-calendar.cjs +1 -1
- package/dist/components-ui-calendar-calendar.js +1 -1
- package/dist/components-ui-calendar-calendar.styles.cjs +1 -1
- package/dist/components-ui-calendar-calendar.styles.cjs.map +1 -1
- package/dist/components-ui-calendar-calendar.styles.js +1 -1
- package/dist/components-ui-calendar-calendar.styles.js.map +1 -1
- package/dist/components-ui-calendar.cjs +1 -1
- package/dist/components-ui-calendar.js +2 -2
- package/dist/components-ui-card-card.cjs +1 -1
- package/dist/components-ui-card-card.cjs.map +1 -1
- package/dist/components-ui-card-card.js +10 -11
- package/dist/components-ui-card-card.js.map +1 -1
- package/dist/components-ui-chart-chart.cjs +1 -1
- package/dist/components-ui-chart-chart.js +1 -1
- package/dist/components-ui-chart.cjs +1 -1
- package/dist/components-ui-chart.js +1 -1
- package/dist/components-ui-checkbox-checkbox.cjs +1 -1
- package/dist/components-ui-checkbox-checkbox.cjs.map +1 -1
- package/dist/components-ui-checkbox-checkbox.js +11 -12
- package/dist/components-ui-checkbox-checkbox.js.map +1 -1
- package/dist/components-ui-combobox-combobox.cjs +5 -5
- package/dist/components-ui-combobox-combobox.cjs.map +1 -1
- package/dist/components-ui-combobox-combobox.js +1477 -1479
- package/dist/components-ui-combobox-combobox.js.map +1 -1
- package/dist/components-ui-dialog-dialog.cjs +1 -1
- package/dist/components-ui-dialog-dialog.cjs.map +1 -1
- package/dist/components-ui-dialog-dialog.js +4 -5
- package/dist/components-ui-dialog-dialog.js.map +1 -1
- package/dist/components-ui-drawer-drawer.cjs +2 -2
- package/dist/components-ui-drawer-drawer.cjs.map +1 -1
- package/dist/components-ui-drawer-drawer.js +16 -19
- package/dist/components-ui-drawer-drawer.js.map +1 -1
- package/dist/components-ui-dropdown-menu-dropdown-menu.cjs +2 -2
- package/dist/components-ui-dropdown-menu-dropdown-menu.cjs.map +1 -1
- package/dist/components-ui-dropdown-menu-dropdown-menu.js +45 -46
- package/dist/components-ui-dropdown-menu-dropdown-menu.js.map +1 -1
- package/dist/components-ui-icon-icon.cjs +1 -1
- package/dist/components-ui-icon-icon.cjs.map +1 -1
- package/dist/components-ui-icon-icon.js +54 -61733
- package/dist/components-ui-icon-icon.js.map +1 -1
- package/dist/components-ui-input-group-input-group.cjs +1 -1
- package/dist/components-ui-input-group-input-group.cjs.map +1 -1
- package/dist/components-ui-input-group-input-group.js +12 -13
- package/dist/components-ui-input-group-input-group.js.map +1 -1
- package/dist/components-ui-input-input.cjs +1 -1
- package/dist/components-ui-input-input.cjs.map +1 -1
- package/dist/components-ui-input-input.js +2 -3
- package/dist/components-ui-input-input.js.map +1 -1
- package/dist/components-ui-label-label.cjs +1 -1
- package/dist/components-ui-label-label.cjs.map +1 -1
- package/dist/components-ui-label-label.js +1 -1
- package/dist/components-ui-label-label.js.map +1 -1
- package/dist/components-ui-pagination-pagination.cjs +1 -1
- package/dist/components-ui-pagination-pagination.cjs.map +1 -1
- package/dist/components-ui-pagination-pagination.js +0 -1
- package/dist/components-ui-pagination-pagination.js.map +1 -1
- package/dist/components-ui-popover-popover.cjs +1 -1
- package/dist/components-ui-popover-popover.cjs.map +1 -1
- package/dist/components-ui-popover-popover.js +14 -19
- package/dist/components-ui-popover-popover.js.map +1 -1
- package/dist/components-ui-progress-progress.cjs +1 -1
- package/dist/components-ui-progress-progress.cjs.map +1 -1
- package/dist/components-ui-progress-progress.js +1 -1
- package/dist/components-ui-progress-progress.js.map +1 -1
- package/dist/components-ui-radio-group-radio-group.cjs +1 -1
- package/dist/components-ui-radio-group-radio-group.cjs.map +1 -1
- package/dist/components-ui-radio-group-radio-group.js +0 -1
- package/dist/components-ui-radio-group-radio-group.js.map +1 -1
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs +1 -1
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs.map +1 -1
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.js +53 -47
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.js.map +1 -1
- package/dist/components-ui-select-select.cjs +1 -1
- package/dist/components-ui-select-select.cjs.map +1 -1
- package/dist/components-ui-select-select.js +21 -22
- package/dist/components-ui-select-select.js.map +1 -1
- package/dist/components-ui-separator-separator.cjs +1 -1
- package/dist/components-ui-separator-separator.cjs.map +1 -1
- package/dist/components-ui-separator-separator.js +11 -12
- package/dist/components-ui-separator-separator.js.map +1 -1
- package/dist/components-ui-switch-switch.cjs +1 -1
- package/dist/components-ui-switch-switch.cjs.map +1 -1
- package/dist/components-ui-switch-switch.js +6 -7
- package/dist/components-ui-switch-switch.js.map +1 -1
- package/dist/components-ui-table-table.cjs +1 -1
- package/dist/components-ui-table-table.cjs.map +1 -1
- package/dist/components-ui-table-table.js +0 -1
- package/dist/components-ui-table-table.js.map +1 -1
- package/dist/components-ui-tabs-tabs.cjs +2 -2
- package/dist/components-ui-tabs-tabs.cjs.map +1 -1
- package/dist/components-ui-tabs-tabs.js +16 -16
- package/dist/components-ui-tabs-tabs.js.map +1 -1
- package/dist/components-ui-tooltip-tooltip.cjs +1 -1
- package/dist/components-ui-tooltip-tooltip.cjs.map +1 -1
- package/dist/components-ui-tooltip-tooltip.js +9 -10
- package/dist/components-ui-tooltip-tooltip.js.map +1 -1
- package/dist/components-ui-typography-typography.cjs +1 -1
- package/dist/components-ui-typography-typography.cjs.map +1 -1
- package/dist/components-ui-typography-typography.js +7 -7
- package/dist/components-ui-typography-typography.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/package.json +1 -1
- package/dist/calendar-DReGV_22.cjs +0 -2
- package/dist/chart-C69jBlXa.cjs +0 -63
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { jsxs as T, jsx as n } from "react/jsx-runtime";
|
|
2
|
-
import "react";
|
|
3
2
|
import { Button as u } from "./components-ui-button-button.js";
|
|
4
3
|
import "./components-ui-button-button.styles.js";
|
|
5
4
|
import { ConfigurableDropdownMenu as $ } from "./components-ui-dropdown-menu-dropdown-menu.js";
|
|
6
5
|
import { Icon as y } from "./components-ui-icon-icon.js";
|
|
7
6
|
import { cn as k } from "./lib-utils.js";
|
|
8
7
|
import { createDataTableActionsColumn as E } from "./components-data-table-data-table-actions-column.js";
|
|
9
|
-
function
|
|
8
|
+
function m(e, o) {
|
|
10
9
|
if (e.hidden)
|
|
11
10
|
return null;
|
|
12
11
|
if (e.type === "separator")
|
|
@@ -20,7 +19,7 @@ function g(e, o) {
|
|
|
20
19
|
type: "label",
|
|
21
20
|
label: e.label
|
|
22
21
|
};
|
|
23
|
-
const c = e.children?.map((i) =>
|
|
22
|
+
const c = e.children?.map((i) => m(i, o)).filter((i) => i !== null);
|
|
24
23
|
return {
|
|
25
24
|
id: e.id,
|
|
26
25
|
type: "item",
|
|
@@ -35,7 +34,7 @@ function g(e, o) {
|
|
|
35
34
|
onSelect: e.onSelect ? () => e.onSelect?.(o) : void 0
|
|
36
35
|
};
|
|
37
36
|
}
|
|
38
|
-
function
|
|
37
|
+
function O(e = {}) {
|
|
39
38
|
const {
|
|
40
39
|
id: o = "actions",
|
|
41
40
|
header: c,
|
|
@@ -47,15 +46,15 @@ function K(e = {}) {
|
|
|
47
46
|
onSaveEdit: s,
|
|
48
47
|
onCancelEdit: p,
|
|
49
48
|
onDelete: h,
|
|
50
|
-
labels:
|
|
49
|
+
labels: l,
|
|
51
50
|
includeDefaultActions: v = !0
|
|
52
51
|
} = e;
|
|
53
52
|
return E({
|
|
54
53
|
id: o,
|
|
55
54
|
header: c,
|
|
56
|
-
renderCell: ({ row:
|
|
57
|
-
const a = { row:
|
|
58
|
-
if (x ===
|
|
55
|
+
renderCell: ({ row: r, data: C }) => {
|
|
56
|
+
const a = { row: r, data: C };
|
|
57
|
+
if (x === r.id && (s || p))
|
|
59
58
|
return /* @__PURE__ */ T(
|
|
60
59
|
"div",
|
|
61
60
|
{
|
|
@@ -70,7 +69,7 @@ function K(e = {}) {
|
|
|
70
69
|
type: "button",
|
|
71
70
|
variant: "circleGhost",
|
|
72
71
|
size: "icon-md",
|
|
73
|
-
"aria-label":
|
|
72
|
+
"aria-label": l?.saveAriaLabel ?? "Сохранить изменения",
|
|
74
73
|
onClick: () => s(a),
|
|
75
74
|
children: /* @__PURE__ */ n(
|
|
76
75
|
y,
|
|
@@ -88,7 +87,7 @@ function K(e = {}) {
|
|
|
88
87
|
type: "button",
|
|
89
88
|
variant: "circleGhost",
|
|
90
89
|
size: "icon-md",
|
|
91
|
-
"aria-label":
|
|
90
|
+
"aria-label": l?.cancelAriaLabel ?? "Отменить редактирование",
|
|
92
91
|
onClick: () => p(a),
|
|
93
92
|
children: /* @__PURE__ */ n(
|
|
94
93
|
y,
|
|
@@ -106,8 +105,8 @@ function K(e = {}) {
|
|
|
106
105
|
const A = typeof d == "function" ? d(a) : d ?? [], D = [
|
|
107
106
|
...f ? [
|
|
108
107
|
{
|
|
109
|
-
id: `${o}-edit-${
|
|
110
|
-
label:
|
|
108
|
+
id: `${o}-edit-${r.id}`,
|
|
109
|
+
label: l?.edit ?? "Редактировать",
|
|
111
110
|
onSelect: f,
|
|
112
111
|
iconType: "pencil-simple"
|
|
113
112
|
}
|
|
@@ -115,17 +114,17 @@ function K(e = {}) {
|
|
|
115
114
|
...h ? [
|
|
116
115
|
{ type: "separator" },
|
|
117
116
|
{
|
|
118
|
-
id: `${o}-delete-${
|
|
119
|
-
label:
|
|
117
|
+
id: `${o}-delete-${r.id}`,
|
|
118
|
+
label: l?.delete ?? "Удалить",
|
|
120
119
|
iconType: "trash",
|
|
121
120
|
alert: !0,
|
|
122
121
|
onSelect: h
|
|
123
122
|
}
|
|
124
123
|
] : []
|
|
125
|
-
],
|
|
124
|
+
], g = [
|
|
126
125
|
...A,
|
|
127
126
|
...v ? D : []
|
|
128
|
-
].map((t) =>
|
|
127
|
+
].map((t) => m(t, a)).filter((t) => t !== null), S = b ? b(a) : /* @__PURE__ */ n(
|
|
129
128
|
u,
|
|
130
129
|
{
|
|
131
130
|
type: "button",
|
|
@@ -152,11 +151,11 @@ function K(e = {}) {
|
|
|
152
151
|
$,
|
|
153
152
|
{
|
|
154
153
|
trigger: S,
|
|
155
|
-
items:
|
|
154
|
+
items: g.length > 0 ? g : [
|
|
156
155
|
{
|
|
157
|
-
id: `${o}-empty-${
|
|
156
|
+
id: `${o}-empty-${r.id}`,
|
|
158
157
|
type: "item",
|
|
159
|
-
label:
|
|
158
|
+
label: l?.empty ?? "Нет действий",
|
|
160
159
|
readOnly: !0
|
|
161
160
|
}
|
|
162
161
|
],
|
|
@@ -169,6 +168,6 @@ function K(e = {}) {
|
|
|
169
168
|
});
|
|
170
169
|
}
|
|
171
170
|
export {
|
|
172
|
-
|
|
171
|
+
O as createDataTableRowActionsColumn
|
|
173
172
|
};
|
|
174
173
|
//# sourceMappingURL=components-data-table-data-table-row-actions-column.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data-table-data-table-row-actions-column.js","sources":["../src/components/data-table/data-table-row-actions-column.tsx"],"sourcesContent":["import type { ColumnDef, Row } from \"@tanstack/react-table\";\nimport type { IconName } from \"phosphor-strokes-icons/by-name\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n ConfigurableDropdownMenu,\n type DropdownMenuConfigNode,\n} from \"@/components/ui/dropdown-menu\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\n\nimport { createDataTableActionsColumn } from \"./data-table-actions-column\";\n\ntype DataTableRowActionContext<TData> = {\n row: Row<TData>;\n data: TData;\n};\n\ntype DataTableRowActionBase = {\n hidden?: boolean;\n id?: string;\n};\n\ntype DataTableRowActionLabel = DataTableRowActionBase & {\n label: string;\n type: \"label\";\n};\n\ntype DataTableRowActionSeparator = DataTableRowActionBase & {\n type: \"separator\";\n};\n\ntype DataTableRowActionItem<TData> = DataTableRowActionBase & {\n type?: \"item\";\n label: string;\n icon?: React.ReactNode;\n iconType?: IconName;\n shortcut?: string;\n disabled?: boolean;\n readOnly?: boolean;\n alert?: boolean;\n children?: DataTableRowActionNode<TData>[];\n onSelect?: (ctx: DataTableRowActionContext<TData>) => void;\n};\n\ntype DataTableRowActionNode<TData> =\n | DataTableRowActionItem<TData>\n | DataTableRowActionLabel\n | DataTableRowActionSeparator;\n\ntype DataTableRowActionsColumnOptions<TData> = {\n id?: string;\n header?: ColumnDef<TData>[\"header\"];\n align?: \"start\" | \"center\" | \"end\";\n editingRowId?: string | null;\n trigger?: (ctx: DataTableRowActionContext<TData>) => React.ReactNode;\n actions?:\n | DataTableRowActionNode<TData>[]\n | ((ctx: DataTableRowActionContext<TData>) => DataTableRowActionNode<TData>[]);\n onStartEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onSaveEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onCancelEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onDelete?: (ctx: DataTableRowActionContext<TData>) => void;\n includeDefaultActions?: boolean;\n labels?: {\n cancelAriaLabel?: string;\n delete?: string;\n edit?: string;\n empty?: string;\n saveAriaLabel?: string;\n };\n};\n\nfunction mapRowActionNode<TData>(\n item: DataTableRowActionNode<TData>,\n ctx: DataTableRowActionContext<TData>,\n): DropdownMenuConfigNode | null {\n if (item.hidden) {\n return null;\n }\n\n if (item.type === \"separator\") {\n return {\n id: item.id,\n type: \"separator\",\n };\n }\n\n if (item.type === \"label\") {\n return {\n id: item.id,\n type: \"label\",\n label: item.label,\n };\n }\n\n const children = item.children\n ?.map((child) => mapRowActionNode(child, ctx))\n .filter((child): child is DropdownMenuConfigNode => child !== null);\n\n return {\n id: item.id,\n type: \"item\",\n label: item.label,\n disabled: item.disabled,\n readOnly: item.readOnly,\n alert: item.alert,\n icon: item.icon,\n iconType: item.iconType,\n shortcut: item.shortcut,\n children,\n onSelect: item.onSelect ? () => item.onSelect?.(ctx) : undefined,\n };\n}\n\nexport function createDataTableRowActionsColumn<TData>(\n options: DataTableRowActionsColumnOptions<TData> = {},\n): ColumnDef<TData> {\n const {\n id = \"actions\",\n header,\n align = \"end\",\n editingRowId,\n trigger,\n actions,\n onStartEdit,\n onSaveEdit,\n onCancelEdit,\n onDelete,\n labels,\n includeDefaultActions = true,\n } = options;\n\n return createDataTableActionsColumn<TData>({\n id,\n header,\n renderCell: ({ row, data }) => {\n const ctx = { row, data };\n const isEditingRow = editingRowId === row.id;\n\n if (isEditingRow && (onSaveEdit || onCancelEdit)) {\n return (\n <div\n className=\"flex flex-col items-center gap-6\"\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n {onSaveEdit ? (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-md\"\n aria-label={labels?.saveAriaLabel ?? \"Сохранить изменения\"}\n onClick={() => onSaveEdit(ctx)}\n >\n <Icon\n type=\"check-circle\"\n className=\"text-success-text\"\n aria-hidden\n />\n </Button>\n ) : null}\n {onCancelEdit ? (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-md\"\n aria-label={labels?.cancelAriaLabel ?? \"Отменить редактирование\"}\n onClick={() => onCancelEdit(ctx)}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-error-text\"\n aria-hidden\n />\n </Button>\n ) : null}\n </div>\n );\n }\n\n const resolvedActions =\n typeof actions === \"function\" ? actions(ctx) : (actions ?? []);\n const defaultActions: DataTableRowActionNode<TData>[] = [\n ...(onStartEdit\n ? [\n {\n id: `${id}-edit-${row.id}`,\n label: labels?.edit ?? \"Редактировать\",\n onSelect: onStartEdit,\n iconType: \"pencil-simple\",\n } satisfies DataTableRowActionItem<TData>,\n ]\n : []),\n ...(onDelete\n ? [\n { type: \"separator\" } satisfies DataTableRowActionSeparator,\n {\n id: `${id}-delete-${row.id}`,\n label: labels?.delete ?? \"Удалить\",\n iconType: \"trash\",\n alert: true,\n onSelect: onDelete,\n } satisfies DataTableRowActionItem<TData>,\n ]\n : []),\n ];\n\n const menuItems = [\n ...resolvedActions,\n ...(includeDefaultActions ? defaultActions : []),\n ]\n .map((item) => mapRowActionNode(item, ctx))\n .filter((item): item is DropdownMenuConfigNode => item !== null);\n\n const resolvedTrigger = trigger ? (\n trigger(ctx)\n ) : (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-xs\"\n aria-label=\"Открыть действия строки\"\n >\n <Icon\n type=\"dots-three\"\n aria-hidden\n />\n </Button>\n );\n\n return (\n <div\n className={cn(\"flex justify-end\")}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n <ConfigurableDropdownMenu\n trigger={resolvedTrigger}\n items={\n menuItems.length > 0\n ? menuItems\n : [\n {\n id: `${id}-empty-${row.id}`,\n type: \"item\",\n label: labels?.empty ?? \"Нет действий\",\n readOnly: true,\n },\n ]\n }\n contentProps={{ align }}\n />\n </div>\n );\n },\n });\n}\n\nexport type {\n DataTableRowActionContext,\n DataTableRowActionItem,\n DataTableRowActionLabel,\n DataTableRowActionNode,\n DataTableRowActionSeparator,\n DataTableRowActionsColumnOptions,\n};\n"],"names":["mapRowActionNode","item","ctx","children","child","createDataTableRowActionsColumn","options","id","header","align","editingRowId","trigger","actions","onStartEdit","onSaveEdit","onCancelEdit","onDelete","labels","includeDefaultActions","createDataTableActionsColumn","row","data","jsxs","event","jsx","Button","Icon","resolvedActions","defaultActions","menuItems","resolvedTrigger","cn","ConfigurableDropdownMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-data-table-data-table-row-actions-column.js","sources":["../src/components/data-table/data-table-row-actions-column.tsx"],"sourcesContent":["import type { ColumnDef, Row } from \"@tanstack/react-table\";\nimport type { IconName } from \"phosphor-strokes-icons/by-name\";\nimport type { ReactNode } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n ConfigurableDropdownMenu,\n type DropdownMenuConfigNode,\n} from \"@/components/ui/dropdown-menu\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\n\nimport { createDataTableActionsColumn } from \"./data-table-actions-column\";\n\ntype DataTableRowActionContext<TData> = {\n row: Row<TData>;\n data: TData;\n};\n\ntype DataTableRowActionBase = {\n hidden?: boolean;\n id?: string;\n};\n\ntype DataTableRowActionLabel = DataTableRowActionBase & {\n label: string;\n type: \"label\";\n};\n\ntype DataTableRowActionSeparator = DataTableRowActionBase & {\n type: \"separator\";\n};\n\ntype DataTableRowActionItem<TData> = DataTableRowActionBase & {\n type?: \"item\";\n label: string;\n icon?: ReactNode;\n iconType?: IconName;\n shortcut?: string;\n disabled?: boolean;\n readOnly?: boolean;\n alert?: boolean;\n children?: DataTableRowActionNode<TData>[];\n onSelect?: (ctx: DataTableRowActionContext<TData>) => void;\n};\n\ntype DataTableRowActionNode<TData> =\n | DataTableRowActionItem<TData>\n | DataTableRowActionLabel\n | DataTableRowActionSeparator;\n\ntype DataTableRowActionsColumnOptions<TData> = {\n id?: string;\n header?: ColumnDef<TData>[\"header\"];\n align?: \"start\" | \"center\" | \"end\";\n editingRowId?: string | null;\n trigger?: (ctx: DataTableRowActionContext<TData>) => ReactNode;\n actions?:\n | DataTableRowActionNode<TData>[]\n | ((ctx: DataTableRowActionContext<TData>) => DataTableRowActionNode<TData>[]);\n onStartEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onSaveEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onCancelEdit?: (ctx: DataTableRowActionContext<TData>) => void;\n onDelete?: (ctx: DataTableRowActionContext<TData>) => void;\n includeDefaultActions?: boolean;\n labels?: {\n cancelAriaLabel?: string;\n delete?: string;\n edit?: string;\n empty?: string;\n saveAriaLabel?: string;\n };\n};\n\nfunction mapRowActionNode<TData>(\n item: DataTableRowActionNode<TData>,\n ctx: DataTableRowActionContext<TData>,\n): DropdownMenuConfigNode | null {\n if (item.hidden) {\n return null;\n }\n\n if (item.type === \"separator\") {\n return {\n id: item.id,\n type: \"separator\",\n };\n }\n\n if (item.type === \"label\") {\n return {\n id: item.id,\n type: \"label\",\n label: item.label,\n };\n }\n\n const children = item.children\n ?.map((child) => mapRowActionNode(child, ctx))\n .filter((child): child is DropdownMenuConfigNode => child !== null);\n\n return {\n id: item.id,\n type: \"item\",\n label: item.label,\n disabled: item.disabled,\n readOnly: item.readOnly,\n alert: item.alert,\n icon: item.icon,\n iconType: item.iconType,\n shortcut: item.shortcut,\n children,\n onSelect: item.onSelect ? () => item.onSelect?.(ctx) : undefined,\n };\n}\n\nexport function createDataTableRowActionsColumn<TData>(\n options: DataTableRowActionsColumnOptions<TData> = {},\n): ColumnDef<TData> {\n const {\n id = \"actions\",\n header,\n align = \"end\",\n editingRowId,\n trigger,\n actions,\n onStartEdit,\n onSaveEdit,\n onCancelEdit,\n onDelete,\n labels,\n includeDefaultActions = true,\n } = options;\n\n return createDataTableActionsColumn<TData>({\n id,\n header,\n renderCell: ({ row, data }) => {\n const ctx = { row, data };\n const isEditingRow = editingRowId === row.id;\n\n if (isEditingRow && (onSaveEdit || onCancelEdit)) {\n return (\n <div\n className=\"flex flex-col items-center gap-6\"\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n {onSaveEdit ? (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-md\"\n aria-label={labels?.saveAriaLabel ?? \"Сохранить изменения\"}\n onClick={() => onSaveEdit(ctx)}\n >\n <Icon\n type=\"check-circle\"\n className=\"text-success-text\"\n aria-hidden\n />\n </Button>\n ) : null}\n {onCancelEdit ? (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-md\"\n aria-label={labels?.cancelAriaLabel ?? \"Отменить редактирование\"}\n onClick={() => onCancelEdit(ctx)}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-error-text\"\n aria-hidden\n />\n </Button>\n ) : null}\n </div>\n );\n }\n\n const resolvedActions =\n typeof actions === \"function\" ? actions(ctx) : (actions ?? []);\n const defaultActions: DataTableRowActionNode<TData>[] = [\n ...(onStartEdit\n ? [\n {\n id: `${id}-edit-${row.id}`,\n label: labels?.edit ?? \"Редактировать\",\n onSelect: onStartEdit,\n iconType: \"pencil-simple\",\n } satisfies DataTableRowActionItem<TData>,\n ]\n : []),\n ...(onDelete\n ? [\n { type: \"separator\" } satisfies DataTableRowActionSeparator,\n {\n id: `${id}-delete-${row.id}`,\n label: labels?.delete ?? \"Удалить\",\n iconType: \"trash\",\n alert: true,\n onSelect: onDelete,\n } satisfies DataTableRowActionItem<TData>,\n ]\n : []),\n ];\n\n const menuItems = [\n ...resolvedActions,\n ...(includeDefaultActions ? defaultActions : []),\n ]\n .map((item) => mapRowActionNode(item, ctx))\n .filter((item): item is DropdownMenuConfigNode => item !== null);\n\n const resolvedTrigger = trigger ? (\n trigger(ctx)\n ) : (\n <Button\n type=\"button\"\n variant=\"circleGhost\"\n size=\"icon-xs\"\n aria-label=\"Открыть действия строки\"\n >\n <Icon\n type=\"dots-three\"\n aria-hidden\n />\n </Button>\n );\n\n return (\n <div\n className={cn(\"flex justify-end\")}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n role=\"presentation\"\n >\n <ConfigurableDropdownMenu\n trigger={resolvedTrigger}\n items={\n menuItems.length > 0\n ? menuItems\n : [\n {\n id: `${id}-empty-${row.id}`,\n type: \"item\",\n label: labels?.empty ?? \"Нет действий\",\n readOnly: true,\n },\n ]\n }\n contentProps={{ align }}\n />\n </div>\n );\n },\n });\n}\n\nexport type {\n DataTableRowActionContext,\n DataTableRowActionItem,\n DataTableRowActionLabel,\n DataTableRowActionNode,\n DataTableRowActionSeparator,\n DataTableRowActionsColumnOptions,\n};\n"],"names":["mapRowActionNode","item","ctx","children","child","createDataTableRowActionsColumn","options","id","header","align","editingRowId","trigger","actions","onStartEdit","onSaveEdit","onCancelEdit","onDelete","labels","includeDefaultActions","createDataTableActionsColumn","row","data","jsxs","event","jsx","Button","Icon","resolvedActions","defaultActions","menuItems","resolvedTrigger","cn","ConfigurableDropdownMenu"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react");function D(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function M(e,s){return typeof s=="function"?s(e):s}function P(e,s,x){const[E,k]=i.useState(x),p=e!==void 0,g=p?e:E,y=i.useCallback(C=>{const V=M(g,C);p||k(V),s?.(V)},[p,s,g]);return[g,y]}function O({rows:e,getRowId:s,setRows:x,editingRowId:E,onEditingRowIdChange:k,editingValues:p,onEditingValuesChange:g,onRowDelete:y,onRowEditCancel:C,onRowEditSave:V,onRowEditStart:S,onRowsChange:m}){const[a,l]=P(E,k,null),[r,u]=P(p,g,{}),[U,T]=i.useState(!0),f=i.useCallback(t=>e.find(n=>s(n)===t)??null,[s,e]),R=i.useCallback((t,n)=>{T(!1),x?.(t),m?.(n),i.startTransition(()=>{T(!0)})},[m,x]),j=i.useCallback((t,n,c)=>{const o=s(t),b=n.reduce((v,d)=>(v[d]=c?.[d]??D(t[d]),v),{});l(o),u(b),S?.({editableKeys:n,initialValues:b,row:t,rowId:o})},[s,S,l,u]),q=i.useCallback(()=>{const t=a?f(a):null,n=r;l(null),u({}),C?.({editingValues:n,row:t,rowId:a})},[a,r,f,C,l,u]),A=i.useCallback(t=>{const n=f(t);if(!n)return;const c={...n,...r},o=e,b=o.map(d=>s(d)===t?c:d);R(b,{editingValues:r,nextRow:c,nextRows:b,previousRow:n,previousRows:o,rowId:t,type:"edit-save"}),l(null),u({}),V?.({editingValues:r,nextRow:c,previousRow:n,rowId:t})},[R,r,f,s,V,e,l,u]),B=i.useCallback(t=>{const n=f(t);if(!n)return;const c=e,o=c.filter(v=>s(v)!==t);R(o,{nextRows:o,previousRows:c,row:n,rowId:t,type:"delete"}),a===t&&(l(null),u({})),y?.({row:n,rowId:t})},[R,a,f,s,y,e,l,u]);return{autoResetPageIndex:U,cancelEditingRow:q,deleteRow:B,editingRowId:a,editingValues:r,saveEditingRow:A,setEditingValues:u,setEditingRowId:l,startEditingRow:j}}exports.useDataTableEditableRows=O;
|
|
2
2
|
//# sourceMappingURL=components-data-table-use-data-table-editable-rows.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data-table-use-data-table-editable-rows.cjs","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import * as React from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: React.Dispatch<React.SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: React.Dispatch<React.SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: React.SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = React.useCallback(\n (updater: React.SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = React.useState(true);\n\n React.useEffect(() => {\n setAutoResetPageIndex(true);\n }, [rows]);\n\n const findRowById = React.useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = React.useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = React.useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = React.useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = React.useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = React.useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","React","isControlled","setValue","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-data-table-use-data-table-editable-rows.cjs","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import { startTransition, useCallback, useState } from \"react\";\nimport type { Dispatch, SetStateAction } from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: Dispatch<SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: Dispatch<SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = useCallback(\n (updater: SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = useState(true);\n\n const findRowById = useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n startTransition(() => {\n setAutoResetPageIndex(true);\n });\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","useState","isControlled","setValue","useCallback","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startTransition","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"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"}
|
|
@@ -1,156 +1,154 @@
|
|
|
1
|
-
import
|
|
2
|
-
function
|
|
1
|
+
import { useState as B, useCallback as a, startTransition as F } from "react";
|
|
2
|
+
function G(n) {
|
|
3
3
|
return typeof n == "string" ? n : typeof n == "number" || typeof n == "boolean" ? String(n) : "";
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function H(n, s) {
|
|
6
6
|
return typeof s == "function" ? s(n) : s;
|
|
7
7
|
}
|
|
8
|
-
function
|
|
9
|
-
const [
|
|
10
|
-
(
|
|
11
|
-
const
|
|
12
|
-
|
|
8
|
+
function A(n, s, v) {
|
|
9
|
+
const [R, P] = B(v), V = n !== void 0, g = V ? n : R, m = a(
|
|
10
|
+
(y) => {
|
|
11
|
+
const x = H(g, y);
|
|
12
|
+
V || P(x), s?.(x);
|
|
13
13
|
},
|
|
14
|
-
[
|
|
14
|
+
[V, s, g]
|
|
15
15
|
);
|
|
16
|
-
return [
|
|
16
|
+
return [g, m];
|
|
17
17
|
}
|
|
18
|
-
function
|
|
18
|
+
function L({
|
|
19
19
|
rows: n,
|
|
20
20
|
getRowId: s,
|
|
21
|
-
setRows:
|
|
22
|
-
editingRowId:
|
|
23
|
-
onEditingRowIdChange:
|
|
24
|
-
editingValues:
|
|
25
|
-
onEditingValuesChange:
|
|
26
|
-
onRowDelete:
|
|
27
|
-
onRowEditCancel:
|
|
28
|
-
onRowEditSave:
|
|
29
|
-
onRowEditStart:
|
|
30
|
-
onRowsChange:
|
|
21
|
+
setRows: v,
|
|
22
|
+
editingRowId: R,
|
|
23
|
+
onEditingRowIdChange: P,
|
|
24
|
+
editingValues: V,
|
|
25
|
+
onEditingValuesChange: g,
|
|
26
|
+
onRowDelete: m,
|
|
27
|
+
onRowEditCancel: y,
|
|
28
|
+
onRowEditSave: x,
|
|
29
|
+
onRowEditStart: S,
|
|
30
|
+
onRowsChange: T
|
|
31
31
|
}) {
|
|
32
|
-
const [
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
const [l, i] = A(
|
|
33
|
+
R,
|
|
34
|
+
P,
|
|
35
35
|
null
|
|
36
|
-
), [
|
|
37
|
-
d,
|
|
36
|
+
), [r, o] = A(
|
|
38
37
|
V,
|
|
38
|
+
g,
|
|
39
39
|
{}
|
|
40
|
-
), [
|
|
41
|
-
i.useEffect(() => {
|
|
42
|
-
P(!0);
|
|
43
|
-
}, [n]);
|
|
44
|
-
const r = i.useCallback(
|
|
40
|
+
), [C, U] = B(!0), f = a(
|
|
45
41
|
(t) => n.find((e) => s(e) === t) ?? null,
|
|
46
42
|
[s, n]
|
|
47
|
-
),
|
|
43
|
+
), E = a(
|
|
48
44
|
(t, e) => {
|
|
49
|
-
|
|
45
|
+
U(!1), v?.(t), T?.(e), F(() => {
|
|
46
|
+
U(!0);
|
|
47
|
+
});
|
|
50
48
|
},
|
|
51
|
-
[
|
|
52
|
-
),
|
|
53
|
-
(t, e,
|
|
54
|
-
const
|
|
55
|
-
|
|
49
|
+
[T, v]
|
|
50
|
+
), j = a(
|
|
51
|
+
(t, e, u) => {
|
|
52
|
+
const c = s(t), p = e.reduce((b, d) => (b[d] = u?.[d] ?? G(t[d]), b), {});
|
|
53
|
+
i(c), o(p), S?.({
|
|
56
54
|
editableKeys: e,
|
|
57
55
|
initialValues: p,
|
|
58
56
|
row: t,
|
|
59
|
-
rowId:
|
|
57
|
+
rowId: c
|
|
60
58
|
});
|
|
61
59
|
},
|
|
62
|
-
[s,
|
|
63
|
-
),
|
|
64
|
-
const t =
|
|
65
|
-
|
|
60
|
+
[s, S, i, o]
|
|
61
|
+
), q = a(() => {
|
|
62
|
+
const t = l ? f(l) : null, e = r;
|
|
63
|
+
i(null), o({}), y?.({
|
|
66
64
|
editingValues: e,
|
|
67
65
|
row: t,
|
|
68
|
-
rowId:
|
|
66
|
+
rowId: l
|
|
69
67
|
});
|
|
70
68
|
}, [
|
|
71
|
-
a,
|
|
72
|
-
f,
|
|
73
|
-
r,
|
|
74
|
-
E,
|
|
75
69
|
l,
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
r,
|
|
71
|
+
f,
|
|
72
|
+
y,
|
|
73
|
+
i,
|
|
74
|
+
o
|
|
75
|
+
]), z = a(
|
|
78
76
|
(t) => {
|
|
79
|
-
const e =
|
|
77
|
+
const e = f(t);
|
|
80
78
|
if (!e)
|
|
81
79
|
return;
|
|
82
|
-
const
|
|
80
|
+
const u = {
|
|
83
81
|
...e,
|
|
84
|
-
...
|
|
85
|
-
},
|
|
86
|
-
(
|
|
82
|
+
...r
|
|
83
|
+
}, c = n, p = c.map(
|
|
84
|
+
(d) => s(d) === t ? u : d
|
|
87
85
|
);
|
|
88
|
-
|
|
89
|
-
editingValues:
|
|
90
|
-
nextRow:
|
|
86
|
+
E(p, {
|
|
87
|
+
editingValues: r,
|
|
88
|
+
nextRow: u,
|
|
91
89
|
nextRows: p,
|
|
92
90
|
previousRow: e,
|
|
93
|
-
previousRows:
|
|
91
|
+
previousRows: c,
|
|
94
92
|
rowId: t,
|
|
95
93
|
type: "edit-save"
|
|
96
|
-
}),
|
|
97
|
-
editingValues:
|
|
98
|
-
nextRow:
|
|
94
|
+
}), i(null), o({}), x?.({
|
|
95
|
+
editingValues: r,
|
|
96
|
+
nextRow: u,
|
|
99
97
|
previousRow: e,
|
|
100
98
|
rowId: t
|
|
101
99
|
});
|
|
102
100
|
},
|
|
103
101
|
[
|
|
104
|
-
|
|
105
|
-
f,
|
|
102
|
+
E,
|
|
106
103
|
r,
|
|
104
|
+
f,
|
|
107
105
|
s,
|
|
108
|
-
|
|
106
|
+
x,
|
|
109
107
|
n,
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
i,
|
|
109
|
+
o
|
|
112
110
|
]
|
|
113
|
-
),
|
|
111
|
+
), D = a(
|
|
114
112
|
(t) => {
|
|
115
|
-
const e =
|
|
113
|
+
const e = f(t);
|
|
116
114
|
if (!e)
|
|
117
115
|
return;
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
nextRows:
|
|
121
|
-
previousRows:
|
|
116
|
+
const u = n, c = u.filter((b) => s(b) !== t);
|
|
117
|
+
E(c, {
|
|
118
|
+
nextRows: c,
|
|
119
|
+
previousRows: u,
|
|
122
120
|
row: e,
|
|
123
121
|
rowId: t,
|
|
124
122
|
type: "delete"
|
|
125
|
-
}),
|
|
123
|
+
}), l === t && (i(null), o({})), m?.({
|
|
126
124
|
row: e,
|
|
127
125
|
rowId: t
|
|
128
126
|
});
|
|
129
127
|
},
|
|
130
128
|
[
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
129
|
+
E,
|
|
130
|
+
l,
|
|
131
|
+
f,
|
|
134
132
|
s,
|
|
135
|
-
|
|
133
|
+
m,
|
|
136
134
|
n,
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
i,
|
|
136
|
+
o
|
|
139
137
|
]
|
|
140
138
|
);
|
|
141
139
|
return {
|
|
142
|
-
autoResetPageIndex:
|
|
143
|
-
cancelEditingRow:
|
|
144
|
-
deleteRow:
|
|
145
|
-
editingRowId:
|
|
146
|
-
editingValues:
|
|
147
|
-
saveEditingRow:
|
|
148
|
-
setEditingValues:
|
|
149
|
-
setEditingRowId:
|
|
150
|
-
startEditingRow:
|
|
140
|
+
autoResetPageIndex: C,
|
|
141
|
+
cancelEditingRow: q,
|
|
142
|
+
deleteRow: D,
|
|
143
|
+
editingRowId: l,
|
|
144
|
+
editingValues: r,
|
|
145
|
+
saveEditingRow: z,
|
|
146
|
+
setEditingValues: o,
|
|
147
|
+
setEditingRowId: i,
|
|
148
|
+
startEditingRow: j
|
|
151
149
|
};
|
|
152
150
|
}
|
|
153
151
|
export {
|
|
154
|
-
|
|
152
|
+
L as useDataTableEditableRows
|
|
155
153
|
};
|
|
156
154
|
//# sourceMappingURL=components-data-table-use-data-table-editable-rows.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data-table-use-data-table-editable-rows.js","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import * as React from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: React.Dispatch<React.SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: React.Dispatch<React.SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: React.SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = React.useCallback(\n (updater: React.SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = React.useState(true);\n\n React.useEffect(() => {\n setAutoResetPageIndex(true);\n }, [rows]);\n\n const findRowById = React.useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = React.useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = React.useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = React.useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = React.useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = React.useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","React","isControlled","setValue","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-data-table-use-data-table-editable-rows.js","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import { startTransition, useCallback, useState } from \"react\";\nimport type { Dispatch, SetStateAction } from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: Dispatch<SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: Dispatch<SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = useCallback(\n (updater: SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = useState(true);\n\n const findRowById = useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n startTransition(() => {\n setAutoResetPageIndex(true);\n });\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","useState","isControlled","setValue","useCallback","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startTransition","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./brd-ui-kit.css');const r=require("react/jsx-runtime");;/* empty css */const g=require("./lib-utils.cjs");require("class-variance-authority");
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./brd-ui-kit.css');const r=require("react/jsx-runtime");;/* empty css */const g=require("./lib-utils.cjs");require("class-variance-authority");require("./components-ui-badge-badge.styles.cjs");const y=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");require("./components-ui-card-card.cjs");require("./components-ui-checkbox-checkbox.cjs");const s=require("./components-ui-icon-icon.cjs"),v=require("./hooks-usePopupControls.cjs");require("./calendar-B5QCV34E.cjs");require("./components-ui-combobox-combobox.cjs");require("./components-ui-dialog-dialog.cjs");const c=require("react");require("./components-ui-label-label.cjs");require("./components-ui-separator-separator.cjs");require("./components-ui-field-field.styles.cjs");require("./components-ui-input-input.styles.cjs");require("./components-ui-textarea-textarea.cjs");require("./components-ui-input-group-input-group.styles.cjs");require("./components-ui-navigation-item-navigation-item.styles.cjs");require("./components-ui-navigation-menu-navigation-menu.styles.cjs");require("./components-ui-pagination-pagination.cjs");require("./components-ui-progress-progress.cjs");require("./components-ui-radio-group-radio-group.cjs");require("./components-ui-switch-switch.cjs");require("./components-ui-toggle-toggle.styles.cjs");require("./components-ui-toggle-group-toggle-group.cjs");require("./components-ui-table-table.cjs");require("./components-ui-tabs-tabs.cjs");require("./components-ui-tooltip-tooltip.cjs");require("./components-ui-typography-typography.styles.cjs");require("./components-app-pagination-app-pagination.styles.cjs");require("./components-app-sidebar-app-sidebar.styles.cjs");require("./components-data-table-data-table.styles.cjs");require("./components-ui-dropdown-menu-dropdown-menu.styles.cjs");const _=require("./components-input-field-input-field.cjs");require("./components-select-field-select-field.cjs");require("./lodash-kqhtUJfz.cjs");require("./chart-9H_9wEfR.cjs");require("./index-DGxwh2Ms.cjs");require("./index-fTTv8YY8.cjs");const j=require("./components-input-phone-input-phone.cjs"),w=[{label:"Мобильный",icon:"phone"},{label:"Telegram",icon:"telegram-logo"},{label:"WhatsApp",icon:"whats-app-logo-filled"},{label:"Max",icon:"max-logo"},{label:"E-mail",icon:"envelope-simple"}],q=n=>{switch(n){case"max-logo":return{bgColor:"bg-[linear-gradient(135deg,#9933DD_0%,#2831B9_50%,#44CCFF_100%)]"};case"telegram-logo":return{bgColor:"bg-[#289AD2]"};case"whats-app-logo-filled":return{bgColor:"bg-[#00C202]",textColor:"text-[#00C202]"};default:return{}}},a=n=>({wrapper:g.cn(`flex h-5.5 w-5.5 shrink-0 items-center justify-center rounded-sm
|
|
2
2
|
${q(n).bgColor??"bg-primary-inverse-hover-bg"}
|
|
3
3
|
${q(n).textColor??"text-primary-inverse-text"}`),icon:"size-5 shrink-0"}),P=n=>{const{inputProps:h,inputPhoneProps:x,onTypeChange:b,...p}=n,[o,C]=c.useState("phone"),{isOpened:t,openPopup:m,closePopup:u}=v.usePopupControls(),l=c.useRef(null);c.useEffect(()=>{const e=i=>{l.current&&!l.current.contains(i.target)&&u()};return t&&document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[t,u]);const d=e=>{switch(e){case"phone":return"+7 (999) 999-99-99";case"telegram-logo":return"@username";case"whats-app-logo-filled":return"+7 (999) 999-99-99";case"max-logo":return"ID пользователя Max";case"envelope-simple":return"example@mail.com";default:return"Введите значение"}},f=e=>()=>{C(e),b?.(e),u()};return r.jsxs("div",{className:g.cn("relative",n.classes?.container),children:[["telegram-logo","max-logo","envelope-simple"].includes(o)?r.jsx(_.InputField,{...h,...p,date:[{id:"0",position:"inline-start",component:r.jsx(s.Icon,{type:o,size:"medium",classes:a(o)})},{id:"1",position:"inline-end",component:r.jsx(s.Icon,{type:t?"caret-up":"caret-down",size:"medium",className:"cursor-pointer",onClick:m})}],placeholder:d(o)}):r.jsx(j.InputPhone,{...x,...p,date:[{id:"0",position:"inline-start",component:r.jsx(s.Icon,{type:o,size:"medium",classes:a(o)})},{id:"1",position:"inline-end",component:r.jsx(s.Icon,{type:t?"caret-up":"caret-down",size:"medium",className:"cursor-pointer",onClick:m})}],placeholder:d(o)}),t&&r.jsx("div",{className:`border-inp-hover-border bg-primary-bg absolute my-2 flex w-full
|
|
4
4
|
flex-col rounded-xl border`,ref:l,children:w.map(({label:e,icon:i})=>r.jsxs(y.Button,{variant:"ghost",className:"flex w-full justify-start",type:"button",onClick:f(i),children:[r.jsx(s.Icon,{type:i,size:"medium",className:"text-primary-inverse-text",classes:a(i)}),e]},e))})]})};exports.InputContact=P;
|