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.
Files changed (230) hide show
  1. package/dist/brd-ui-kit.css +1 -1
  2. package/dist/calendar-B5QCV34E.cjs +2 -0
  3. package/dist/{calendar-DReGV_22.cjs.map → calendar-B5QCV34E.cjs.map} +1 -1
  4. package/dist/{calendar-C0DXP3T-.js → calendar-Ba3kHG6w.js} +264 -270
  5. package/dist/{calendar-C0DXP3T-.js.map → calendar-Ba3kHG6w.js.map} +1 -1
  6. package/dist/{calendar-locale-CP2pxhFK.cjs → calendar-locale-BHyNJPb2.cjs} +2 -2
  7. package/dist/{calendar-locale-CP2pxhFK.cjs.map → calendar-locale-BHyNJPb2.cjs.map} +1 -1
  8. package/dist/{calendar-locale-DJf03PI9.js → calendar-locale-DQ9wj0zF.js} +2 -2
  9. package/dist/{calendar-locale-DJf03PI9.js.map → calendar-locale-DQ9wj0zF.js.map} +1 -1
  10. package/dist/chart-9H_9wEfR.cjs +63 -0
  11. package/dist/{chart-C69jBlXa.cjs.map → chart-9H_9wEfR.cjs.map} +1 -1
  12. package/dist/{chart-CAPCe8o5.js → chart-DFbmMKiQ.js} +2956 -2951
  13. package/dist/{chart-CAPCe8o5.js.map → chart-DFbmMKiQ.js.map} +1 -1
  14. package/dist/components/basic-chart/basic-chart.d.ts +1 -1
  15. package/dist/components/basic-table/basic-table.d.ts +5 -5
  16. package/dist/components/data-table/data-table-actions-column.d.ts +3 -3
  17. package/dist/components/data-table/data-table-bulk-actions.d.ts +3 -3
  18. package/dist/components/data-table/data-table-column-visibility.d.ts +2 -2
  19. package/dist/components/data-table/data-table-filter.d.ts +2 -2
  20. package/dist/components/data-table/data-table-row-actions-column.d.ts +3 -3
  21. package/dist/components/data-table/use-data-table-editable-rows.d.ts +5 -5
  22. package/dist/components/input-field/input-field.d.ts +3 -3
  23. package/dist/components/input-phone/input-phone.d.ts +4 -4
  24. package/dist/components/popover-modal/popover-modal.d.ts +4 -4
  25. package/dist/components/select-field/select-field.d.ts +2 -2
  26. package/dist/components/ui/avatar/avatar.d.ts +7 -7
  27. package/dist/components/ui/badge/badge.d.ts +2 -2
  28. package/dist/components/ui/button/button.d.ts +3 -3
  29. package/dist/components/ui/calendar/calendar.d.ts +6 -6
  30. package/dist/components/ui/calendar/calendar.styles.d.ts +1 -1
  31. package/dist/components/ui/card/card.d.ts +13 -13
  32. package/dist/components/ui/chart/chart.d.ts +23 -21
  33. package/dist/components/ui/checkbox/checkbox.d.ts +4 -4
  34. package/dist/components/ui/combobox/combobox.d.ts +6 -6
  35. package/dist/components/ui/dialog/dialog.d.ts +11 -11
  36. package/dist/components/ui/drawer/drawer.d.ts +11 -11
  37. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +40 -40
  38. package/dist/components/ui/icon/icon.d.ts +3 -3
  39. package/dist/components/ui/input/input.d.ts +2 -2
  40. package/dist/components/ui/input-group/input-group.d.ts +7 -7
  41. package/dist/components/ui/label/label.d.ts +4 -4
  42. package/dist/components/ui/pagination/pagination.d.ts +8 -8
  43. package/dist/components/ui/popover/popover.d.ts +8 -8
  44. package/dist/components/ui/progress/progress.d.ts +4 -4
  45. package/dist/components/ui/radio-group/radio-group.d.ts +7 -7
  46. package/dist/components/ui/select/select.d.ts +11 -11
  47. package/dist/components/ui/select-calendar-menu/select-calendar-menu.d.ts +4 -4
  48. package/dist/components/ui/separator/separator.d.ts +4 -4
  49. package/dist/components/ui/switch/switch.d.ts +4 -4
  50. package/dist/components/ui/table/table.d.ts +17 -17
  51. package/dist/components/ui/tabs/tabs.d.ts +8 -8
  52. package/dist/components/ui/tooltip/tooltip.d.ts +8 -8
  53. package/dist/components/ui/typography/typography.d.ts +174 -174
  54. package/dist/components-avatar-uploader-avatar-uploader.cjs +2 -2
  55. package/dist/components-avatar-uploader-avatar-uploader.cjs.map +1 -1
  56. package/dist/components-avatar-uploader-avatar-uploader.js +35 -36
  57. package/dist/components-avatar-uploader-avatar-uploader.js.map +1 -1
  58. package/dist/components-basic-avatar-basic-avatar.cjs +1 -1
  59. package/dist/components-basic-avatar-basic-avatar.js +3 -3
  60. package/dist/components-basic-chart-basic-chart.cjs +2 -2
  61. package/dist/components-basic-chart-basic-chart.cjs.map +1 -1
  62. package/dist/components-basic-chart-basic-chart.js +106 -108
  63. package/dist/components-basic-chart-basic-chart.js.map +1 -1
  64. package/dist/components-basic-table-basic-table.cjs +2 -2
  65. package/dist/components-basic-table-basic-table.cjs.map +1 -1
  66. package/dist/components-basic-table-basic-table.js +232 -231
  67. package/dist/components-basic-table-basic-table.js.map +1 -1
  68. package/dist/components-data-table-data-table-actions-column.cjs +1 -1
  69. package/dist/components-data-table-data-table-actions-column.cjs.map +1 -1
  70. package/dist/components-data-table-data-table-actions-column.js +5 -6
  71. package/dist/components-data-table-data-table-actions-column.js.map +1 -1
  72. package/dist/components-data-table-data-table-bulk-actions.cjs +1 -1
  73. package/dist/components-data-table-data-table-bulk-actions.cjs.map +1 -1
  74. package/dist/components-data-table-data-table-bulk-actions.js +9 -9
  75. package/dist/components-data-table-data-table-bulk-actions.js.map +1 -1
  76. package/dist/components-data-table-data-table-column-visibility.cjs +1 -1
  77. package/dist/components-data-table-data-table-column-visibility.cjs.map +1 -1
  78. package/dist/components-data-table-data-table-column-visibility.js +1 -1
  79. package/dist/components-data-table-data-table-column-visibility.js.map +1 -1
  80. package/dist/components-data-table-data-table-filter.cjs +1 -1
  81. package/dist/components-data-table-data-table-filter.cjs.map +1 -1
  82. package/dist/components-data-table-data-table-filter.js +15 -15
  83. package/dist/components-data-table-data-table-filter.js.map +1 -1
  84. package/dist/components-data-table-data-table-row-actions-column.cjs +1 -1
  85. package/dist/components-data-table-data-table-row-actions-column.cjs.map +1 -1
  86. package/dist/components-data-table-data-table-row-actions-column.js +19 -20
  87. package/dist/components-data-table-data-table-row-actions-column.js.map +1 -1
  88. package/dist/components-data-table-use-data-table-editable-rows.cjs +1 -1
  89. package/dist/components-data-table-use-data-table-editable-rows.cjs.map +1 -1
  90. package/dist/components-data-table-use-data-table-editable-rows.js +88 -90
  91. package/dist/components-data-table-use-data-table-editable-rows.js.map +1 -1
  92. package/dist/components-input-contact-input-contact.cjs +1 -1
  93. package/dist/components-input-contact-input-contact.cjs.map +1 -1
  94. package/dist/components-input-contact-input-contact.js +8 -8
  95. package/dist/components-input-field-input-field.cjs +1 -1
  96. package/dist/components-input-field-input-field.cjs.map +1 -1
  97. package/dist/components-input-field-input-field.js +18 -19
  98. package/dist/components-input-field-input-field.js.map +1 -1
  99. package/dist/components-input-password-input-password.cjs +1 -1
  100. package/dist/components-input-password-input-password.cjs.map +1 -1
  101. package/dist/components-input-password-input-password.js +4 -4
  102. package/dist/components-input-phone-input-phone.cjs.map +1 -1
  103. package/dist/components-input-phone-input-phone.js.map +1 -1
  104. package/dist/components-popover-modal-popover-modal.cjs +1 -1
  105. package/dist/components-popover-modal-popover-modal.cjs.map +1 -1
  106. package/dist/components-popover-modal-popover-modal.js +40 -29
  107. package/dist/components-popover-modal-popover-modal.js.map +1 -1
  108. package/dist/components-select-field-select-field.cjs.map +1 -1
  109. package/dist/components-select-field-select-field.js.map +1 -1
  110. package/dist/components-ui-avatar-avatar.cjs +1 -1
  111. package/dist/components-ui-avatar-avatar.cjs.map +1 -1
  112. package/dist/components-ui-avatar-avatar.js +12 -13
  113. package/dist/components-ui-avatar-avatar.js.map +1 -1
  114. package/dist/components-ui-badge-badge.cjs +1 -1
  115. package/dist/components-ui-badge-badge.cjs.map +1 -1
  116. package/dist/components-ui-badge-badge.js +10 -11
  117. package/dist/components-ui-badge-badge.js.map +1 -1
  118. package/dist/components-ui-button-button.cjs +1 -1
  119. package/dist/components-ui-button-button.cjs.map +1 -1
  120. package/dist/components-ui-button-button.js +10 -11
  121. package/dist/components-ui-button-button.js.map +1 -1
  122. package/dist/components-ui-button-button.styles.cjs +4 -4
  123. package/dist/components-ui-button-button.styles.cjs.map +1 -1
  124. package/dist/components-ui-button-button.styles.js +4 -4
  125. package/dist/components-ui-button-button.styles.js.map +1 -1
  126. package/dist/components-ui-calendar-calendar.cjs +1 -1
  127. package/dist/components-ui-calendar-calendar.js +1 -1
  128. package/dist/components-ui-calendar-calendar.styles.cjs +1 -1
  129. package/dist/components-ui-calendar-calendar.styles.cjs.map +1 -1
  130. package/dist/components-ui-calendar-calendar.styles.js +1 -1
  131. package/dist/components-ui-calendar-calendar.styles.js.map +1 -1
  132. package/dist/components-ui-calendar.cjs +1 -1
  133. package/dist/components-ui-calendar.js +2 -2
  134. package/dist/components-ui-card-card.cjs +1 -1
  135. package/dist/components-ui-card-card.cjs.map +1 -1
  136. package/dist/components-ui-card-card.js +10 -11
  137. package/dist/components-ui-card-card.js.map +1 -1
  138. package/dist/components-ui-chart-chart.cjs +1 -1
  139. package/dist/components-ui-chart-chart.js +1 -1
  140. package/dist/components-ui-chart.cjs +1 -1
  141. package/dist/components-ui-chart.js +1 -1
  142. package/dist/components-ui-checkbox-checkbox.cjs +1 -1
  143. package/dist/components-ui-checkbox-checkbox.cjs.map +1 -1
  144. package/dist/components-ui-checkbox-checkbox.js +11 -12
  145. package/dist/components-ui-checkbox-checkbox.js.map +1 -1
  146. package/dist/components-ui-combobox-combobox.cjs +5 -5
  147. package/dist/components-ui-combobox-combobox.cjs.map +1 -1
  148. package/dist/components-ui-combobox-combobox.js +1477 -1479
  149. package/dist/components-ui-combobox-combobox.js.map +1 -1
  150. package/dist/components-ui-dialog-dialog.cjs +1 -1
  151. package/dist/components-ui-dialog-dialog.cjs.map +1 -1
  152. package/dist/components-ui-dialog-dialog.js +4 -5
  153. package/dist/components-ui-dialog-dialog.js.map +1 -1
  154. package/dist/components-ui-drawer-drawer.cjs +2 -2
  155. package/dist/components-ui-drawer-drawer.cjs.map +1 -1
  156. package/dist/components-ui-drawer-drawer.js +16 -19
  157. package/dist/components-ui-drawer-drawer.js.map +1 -1
  158. package/dist/components-ui-dropdown-menu-dropdown-menu.cjs +2 -2
  159. package/dist/components-ui-dropdown-menu-dropdown-menu.cjs.map +1 -1
  160. package/dist/components-ui-dropdown-menu-dropdown-menu.js +45 -46
  161. package/dist/components-ui-dropdown-menu-dropdown-menu.js.map +1 -1
  162. package/dist/components-ui-icon-icon.cjs +1 -1
  163. package/dist/components-ui-icon-icon.cjs.map +1 -1
  164. package/dist/components-ui-icon-icon.js +54 -61733
  165. package/dist/components-ui-icon-icon.js.map +1 -1
  166. package/dist/components-ui-input-group-input-group.cjs +1 -1
  167. package/dist/components-ui-input-group-input-group.cjs.map +1 -1
  168. package/dist/components-ui-input-group-input-group.js +12 -13
  169. package/dist/components-ui-input-group-input-group.js.map +1 -1
  170. package/dist/components-ui-input-input.cjs +1 -1
  171. package/dist/components-ui-input-input.cjs.map +1 -1
  172. package/dist/components-ui-input-input.js +2 -3
  173. package/dist/components-ui-input-input.js.map +1 -1
  174. package/dist/components-ui-label-label.cjs +1 -1
  175. package/dist/components-ui-label-label.cjs.map +1 -1
  176. package/dist/components-ui-label-label.js +1 -1
  177. package/dist/components-ui-label-label.js.map +1 -1
  178. package/dist/components-ui-pagination-pagination.cjs +1 -1
  179. package/dist/components-ui-pagination-pagination.cjs.map +1 -1
  180. package/dist/components-ui-pagination-pagination.js +0 -1
  181. package/dist/components-ui-pagination-pagination.js.map +1 -1
  182. package/dist/components-ui-popover-popover.cjs +1 -1
  183. package/dist/components-ui-popover-popover.cjs.map +1 -1
  184. package/dist/components-ui-popover-popover.js +14 -19
  185. package/dist/components-ui-popover-popover.js.map +1 -1
  186. package/dist/components-ui-progress-progress.cjs +1 -1
  187. package/dist/components-ui-progress-progress.cjs.map +1 -1
  188. package/dist/components-ui-progress-progress.js +1 -1
  189. package/dist/components-ui-progress-progress.js.map +1 -1
  190. package/dist/components-ui-radio-group-radio-group.cjs +1 -1
  191. package/dist/components-ui-radio-group-radio-group.cjs.map +1 -1
  192. package/dist/components-ui-radio-group-radio-group.js +0 -1
  193. package/dist/components-ui-radio-group-radio-group.js.map +1 -1
  194. package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs +1 -1
  195. package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs.map +1 -1
  196. package/dist/components-ui-select-calendar-menu-select-calendar-menu.js +53 -47
  197. package/dist/components-ui-select-calendar-menu-select-calendar-menu.js.map +1 -1
  198. package/dist/components-ui-select-select.cjs +1 -1
  199. package/dist/components-ui-select-select.cjs.map +1 -1
  200. package/dist/components-ui-select-select.js +21 -22
  201. package/dist/components-ui-select-select.js.map +1 -1
  202. package/dist/components-ui-separator-separator.cjs +1 -1
  203. package/dist/components-ui-separator-separator.cjs.map +1 -1
  204. package/dist/components-ui-separator-separator.js +11 -12
  205. package/dist/components-ui-separator-separator.js.map +1 -1
  206. package/dist/components-ui-switch-switch.cjs +1 -1
  207. package/dist/components-ui-switch-switch.cjs.map +1 -1
  208. package/dist/components-ui-switch-switch.js +6 -7
  209. package/dist/components-ui-switch-switch.js.map +1 -1
  210. package/dist/components-ui-table-table.cjs +1 -1
  211. package/dist/components-ui-table-table.cjs.map +1 -1
  212. package/dist/components-ui-table-table.js +0 -1
  213. package/dist/components-ui-table-table.js.map +1 -1
  214. package/dist/components-ui-tabs-tabs.cjs +2 -2
  215. package/dist/components-ui-tabs-tabs.cjs.map +1 -1
  216. package/dist/components-ui-tabs-tabs.js +16 -16
  217. package/dist/components-ui-tabs-tabs.js.map +1 -1
  218. package/dist/components-ui-tooltip-tooltip.cjs +1 -1
  219. package/dist/components-ui-tooltip-tooltip.cjs.map +1 -1
  220. package/dist/components-ui-tooltip-tooltip.js +9 -10
  221. package/dist/components-ui-tooltip-tooltip.js.map +1 -1
  222. package/dist/components-ui-typography-typography.cjs +1 -1
  223. package/dist/components-ui-typography-typography.cjs.map +1 -1
  224. package/dist/components-ui-typography-typography.js +7 -7
  225. package/dist/components-ui-typography-typography.js.map +1 -1
  226. package/dist/index.cjs +1 -1
  227. package/dist/index.js +2 -2
  228. package/package.json +1 -1
  229. package/dist/calendar-DReGV_22.cjs +0 -2
  230. 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 g(e, o) {
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) => g(i, o)).filter((i) => i !== null);
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 K(e = {}) {
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: r,
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: l, data: C }) => {
57
- const a = { row: l, data: C };
58
- if (x === l.id && (s || p))
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": r?.saveAriaLabel ?? "Сохранить изменения",
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": r?.cancelAriaLabel ?? "Отменить редактирование",
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-${l.id}`,
110
- label: r?.edit ?? "Редактировать",
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-${l.id}`,
119
- label: r?.delete ?? "Удалить",
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
- ], m = [
124
+ ], g = [
126
125
  ...A,
127
126
  ...v ? D : []
128
- ].map((t) => g(t, a)).filter((t) => t !== null), S = b ? b(a) : /* @__PURE__ */ n(
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: m.length > 0 ? m : [
154
+ items: g.length > 0 ? g : [
156
155
  {
157
- id: `${o}-empty-${l.id}`,
156
+ id: `${o}-empty-${r.id}`,
158
157
  type: "item",
159
- label: r?.empty ?? "Нет действий",
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
- K as createDataTableRowActionsColumn
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 U=require("react");function q(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const b=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,b.get?b:{enumerable:!0,get:()=>t[i]})}}return n.default=t,Object.freeze(n)}const c=q(U);function z(t){return typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):""}function A(t,n){return typeof n=="function"?n(t):n}function j(t,n,i){const[b,E]=c.useState(i),y=t!==void 0,V=y?t:b,R=c.useCallback(x=>{const m=A(V,x);y||E(m),n?.(m)},[y,n,V]);return[V,R]}function B({rows:t,getRowId:n,setRows:i,editingRowId:b,onEditingRowIdChange:E,editingValues:y,onEditingValuesChange:V,onRowDelete:R,onRowEditCancel:x,onRowEditSave:m,onRowEditStart:S,onRowsChange:k}){const[r,l]=j(b,E,null),[f,u]=j(y,V,{}),[P,O]=c.useState(!0);c.useEffect(()=>{O(!0)},[t]);const d=c.useCallback(e=>t.find(s=>n(s)===e)??null,[n,t]),C=c.useCallback((e,s)=>{O(!1),i?.(e),k?.(s)},[k,i]),T=c.useCallback((e,s,o)=>{const a=n(e),p=s.reduce((v,g)=>(v[g]=o?.[g]??z(e[g]),v),{});l(a),u(p),S?.({editableKeys:s,initialValues:p,row:e,rowId:a})},[n,S,l,u]),D=c.useCallback(()=>{const e=r?d(r):null,s=f;l(null),u({}),x?.({editingValues:s,row:e,rowId:r})},[r,f,d,x,l,u]),_=c.useCallback(e=>{const s=d(e);if(!s)return;const o={...s,...f},a=t,p=a.map(g=>n(g)===e?o:g);C(p,{editingValues:f,nextRow:o,nextRows:p,previousRow:s,previousRows:a,rowId:e,type:"edit-save"}),l(null),u({}),m?.({editingValues:f,nextRow:o,previousRow:s,rowId:e})},[C,f,d,n,m,t,l,u]),M=c.useCallback(e=>{const s=d(e);if(!s)return;const o=t,a=o.filter(v=>n(v)!==e);C(a,{nextRows:a,previousRows:o,row:s,rowId:e,type:"delete"}),r===e&&(l(null),u({})),R?.({row:s,rowId:e})},[C,r,d,n,R,t,l,u]);return{autoResetPageIndex:P,cancelEditingRow:D,deleteRow:M,editingRowId:r,editingValues:f,saveEditingRow:_,setEditingValues:u,setEditingRowId:l,startEditingRow:T}}exports.useDataTableEditableRows=B;
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":"mYAyDA,SAASA,EAAiBC,EAAgB,CACxC,OAAI,OAAOA,GAAU,SACZA,EAGL,OAAOA,GAAU,UAAY,OAAOA,GAAU,UACzC,OAAOA,CAAK,EAGd,EACT,CAEA,SAASC,EAAoBC,EAAsBC,EAAsC,CACvF,OAAO,OAAOA,GAAY,WACrBA,EAAoCD,CAAa,EAClDC,CACN,CAEA,SAASC,EACPC,EACAC,EACAC,EACA,CACA,KAAM,CAACC,EAAmBC,CAAoB,EAAIC,EAAM,SAASH,CAAY,EACvEI,EAAeN,IAAoB,OACnCL,EAAQW,EAAeN,EAAkBG,EAEzCI,EAAWF,EAAM,YACpBP,GAAyC,CACxC,MAAMU,EAAYZ,EAAaD,EAAOG,CAAO,EAExCQ,GACHF,EAAqBI,CAAS,EAGhCP,IAAWO,CAAS,CACtB,EACA,CAACF,EAAcL,EAAUN,CAAK,CAAA,EAGhC,MAAO,CAACA,EAAOY,CAAQ,CACzB,CAEA,SAASE,EAAgC,CACvC,KAAAC,EACA,SAAAC,EACA,QAAAC,EACA,aAAcC,EACd,qBAAAC,EACA,cAAeC,EACf,sBAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,cAAAC,EACA,eAAAC,EACA,aAAAC,CACF,EAA2C,CACzC,KAAM,CAACC,EAAcC,CAAe,EAAIxB,EACtCc,EACAC,EACA,IAAA,EAEI,CAACU,EAAeC,CAAgB,EAAI1B,EACxCgB,EACAC,EACA,CAAA,CAAC,EAEG,CAACU,EAAoBC,CAAqB,EAAItB,EAAM,SAAS,EAAI,EAEvEA,EAAM,UAAU,IAAM,CACpBsB,EAAsB,EAAI,CAC5B,EAAG,CAACjB,CAAI,CAAC,EAET,MAAMkB,EAAcvB,EAAM,YACvBwB,GAAkBnB,EAAK,KAAMoB,GAAQnB,EAASmB,CAAG,IAAMD,CAAK,GAAK,KAClE,CAAClB,EAAUD,CAAI,CAAA,EAGXqB,EAAmB1B,EAAM,YAC7B,CAAC2B,EAAmBC,IAA2C,CAC7DN,EAAsB,EAAK,EAC3Bf,IAAUoB,CAAQ,EAClBX,IAAeY,CAAK,CACtB,EACA,CAACZ,EAAcT,CAAO,CAAA,EAGlBsB,EAAkB7B,EAAM,YAC5B,CACEyB,EACAK,EACAC,IACG,CACH,MAAMP,EAAQlB,EAASmB,CAAG,EACpBO,EAAgBF,EAAa,OAAuB,CAACG,EAAaC,KACtED,EAAYC,CAAG,EAAIH,IAAYG,CAAG,GAAK7C,EAAiBoC,EAAIS,CAAG,CAAC,EACzDD,GACN,CAAA,CAAE,EAELf,EAAgBM,CAAK,EACrBJ,EAAiBY,CAAa,EAC9BjB,IAAiB,CACf,aAAAe,EACA,cAAAE,EACA,IAAAP,EACA,MAAAD,CAAA,CACD,CACH,EACA,CAAClB,EAAUS,EAAgBG,EAAiBE,CAAgB,CAAA,EAGxDe,EAAmBnC,EAAM,YAAY,IAAM,CAC/C,MAAMyB,EAAMR,EAAeM,EAAYN,CAAY,EAAI,KACjDmB,EAAoBjB,EAE1BD,EAAgB,IAAI,EACpBE,EAAiB,CAAA,CAAE,EACnBP,IAAkB,CAChB,cAAeuB,EACf,IAAAX,EACA,MAAOR,CAAA,CACR,CACH,EAAG,CACDA,EACAE,EACAI,EACAV,EACAK,EACAE,CAAA,CACD,EAEKiB,EAAiBrC,EAAM,YAC1BwB,GAAkB,CACjB,MAAMc,EAAcf,EAAYC,CAAK,EAErC,GAAI,CAACc,EACH,OAGF,MAAMC,EAAU,CACd,GAAGD,EACH,GAAGnB,CAAA,EAECqB,EAAenC,EACfsB,EAAWa,EAAa,IAAKf,GACjCnB,EAASmB,CAAG,IAAMD,EAAQe,EAAUd,CAAA,EAYtCC,EAAiBC,EAV8B,CAC7C,cAAAR,EACA,QAAAoB,EACA,SAAAZ,EACA,YAAAW,EACA,aAAAE,EACA,MAAAhB,EACA,KAAM,WAAA,CAGwB,EAChCN,EAAgB,IAAI,EACpBE,EAAiB,CAAA,CAAE,EACnBN,IAAgB,CACd,cAAAK,EACA,QAAAoB,EACA,YAAAD,EACA,MAAAd,CAAA,CACD,CACH,EACA,CACEE,EACAP,EACAI,EACAjB,EACAQ,EACAT,EACAa,EACAE,CAAA,CACF,EAGIqB,EAAYzC,EAAM,YACrBwB,GAAkB,CACjB,MAAMC,EAAMF,EAAYC,CAAK,EAE7B,GAAI,CAACC,EACH,OAGF,MAAMe,EAAenC,EACfsB,EAAWa,EAAa,OAAQE,GAASpC,EAASoC,CAAI,IAAMlB,CAAK,EASvEE,EAAiBC,EAR8B,CAC7C,SAAAA,EACA,aAAAa,EACA,IAAAf,EACA,MAAAD,EACA,KAAM,QAAA,CAGwB,EAE5BP,IAAiBO,IACnBN,EAAgB,IAAI,EACpBE,EAAiB,CAAA,CAAE,GAGrBR,IAAc,CACZ,IAAAa,EACA,MAAAD,CAAA,CACD,CACH,EACA,CACEE,EACAT,EACAM,EACAjB,EACAM,EACAP,EACAa,EACAE,CAAA,CACF,EAGF,MAAO,CACL,mBAAAC,EACA,iBAAAc,EACA,UAAAM,EACA,aAAAxB,EACA,cAAAE,EACA,eAAAkB,EACA,iBAAAjB,EACA,gBAAAF,EACA,gBAAAW,CAAA,CAEJ"}
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 * as i from "react";
2
- function z(n) {
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 D(n, s) {
5
+ function H(n, s) {
6
6
  return typeof s == "function" ? s(n) : s;
7
7
  }
8
- function U(n, s, C) {
9
- const [k, m] = i.useState(C), d = n !== void 0, V = d ? n : k, v = i.useCallback(
10
- (E) => {
11
- const g = D(V, E);
12
- d || m(g), s?.(g);
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
- [d, s, V]
14
+ [V, s, g]
15
15
  );
16
- return [V, v];
16
+ return [g, m];
17
17
  }
18
- function F({
18
+ function L({
19
19
  rows: n,
20
20
  getRowId: s,
21
- setRows: C,
22
- editingRowId: k,
23
- onEditingRowIdChange: m,
24
- editingValues: d,
25
- onEditingValuesChange: V,
26
- onRowDelete: v,
27
- onRowEditCancel: E,
28
- onRowEditSave: g,
29
- onRowEditStart: y,
30
- onRowsChange: S
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 [a, l] = U(
33
- k,
34
- m,
32
+ const [l, i] = A(
33
+ R,
34
+ P,
35
35
  null
36
- ), [f, u] = U(
37
- d,
36
+ ), [r, o] = A(
38
37
  V,
38
+ g,
39
39
  {}
40
- ), [A, P] = i.useState(!0);
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
- ), R = i.useCallback(
43
+ ), E = a(
48
44
  (t, e) => {
49
- P(!1), C?.(t), S?.(e);
45
+ U(!1), v?.(t), T?.(e), F(() => {
46
+ U(!0);
47
+ });
50
48
  },
51
- [S, C]
52
- ), B = i.useCallback(
53
- (t, e, c) => {
54
- const o = s(t), p = e.reduce((x, b) => (x[b] = c?.[b] ?? z(t[b]), x), {});
55
- l(o), u(p), y?.({
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: o
57
+ rowId: c
60
58
  });
61
59
  },
62
- [s, y, l, u]
63
- ), T = i.useCallback(() => {
64
- const t = a ? r(a) : null, e = f;
65
- l(null), u({}), E?.({
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: a
66
+ rowId: l
69
67
  });
70
68
  }, [
71
- a,
72
- f,
73
- r,
74
- E,
75
69
  l,
76
- u
77
- ]), j = i.useCallback(
70
+ r,
71
+ f,
72
+ y,
73
+ i,
74
+ o
75
+ ]), z = a(
78
76
  (t) => {
79
- const e = r(t);
77
+ const e = f(t);
80
78
  if (!e)
81
79
  return;
82
- const c = {
80
+ const u = {
83
81
  ...e,
84
- ...f
85
- }, o = n, p = o.map(
86
- (b) => s(b) === t ? c : b
82
+ ...r
83
+ }, c = n, p = c.map(
84
+ (d) => s(d) === t ? u : d
87
85
  );
88
- R(p, {
89
- editingValues: f,
90
- nextRow: c,
86
+ E(p, {
87
+ editingValues: r,
88
+ nextRow: u,
91
89
  nextRows: p,
92
90
  previousRow: e,
93
- previousRows: o,
91
+ previousRows: c,
94
92
  rowId: t,
95
93
  type: "edit-save"
96
- }), l(null), u({}), g?.({
97
- editingValues: f,
98
- nextRow: c,
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
- R,
105
- f,
102
+ E,
106
103
  r,
104
+ f,
107
105
  s,
108
- g,
106
+ x,
109
107
  n,
110
- l,
111
- u
108
+ i,
109
+ o
112
110
  ]
113
- ), q = i.useCallback(
111
+ ), D = a(
114
112
  (t) => {
115
- const e = r(t);
113
+ const e = f(t);
116
114
  if (!e)
117
115
  return;
118
- const c = n, o = c.filter((x) => s(x) !== t);
119
- R(o, {
120
- nextRows: o,
121
- previousRows: c,
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
- }), a === t && (l(null), u({})), v?.({
123
+ }), l === t && (i(null), o({})), m?.({
126
124
  row: e,
127
125
  rowId: t
128
126
  });
129
127
  },
130
128
  [
131
- R,
132
- a,
133
- r,
129
+ E,
130
+ l,
131
+ f,
134
132
  s,
135
- v,
133
+ m,
136
134
  n,
137
- l,
138
- u
135
+ i,
136
+ o
139
137
  ]
140
138
  );
141
139
  return {
142
- autoResetPageIndex: A,
143
- cancelEditingRow: T,
144
- deleteRow: q,
145
- editingRowId: a,
146
- editingValues: f,
147
- saveEditingRow: j,
148
- setEditingValues: u,
149
- setEditingRowId: l,
150
- startEditingRow: B
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
- F as useDataTableEditableRows
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");const c=require("react");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");require("./calendar-DReGV_22.cjs");require("./components-ui-combobox-combobox.cjs");require("./components-ui-dialog-dialog.cjs");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");const v=require("./hooks-usePopupControls.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-C69jBlXa.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
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;