@bigbinary/neeto-molecules 5.5.0-beta1 → 5.5.0

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 (191) hide show
  1. package/dist/BrowserSupport.js +116 -51
  2. package/dist/BrowserSupport.js.map +1 -1
  3. package/dist/{Columns-C20zru7a.js → Columns-CpCh1cnJ.js} +6 -4
  4. package/dist/Columns-CpCh1cnJ.js.map +1 -0
  5. package/dist/{ConfigureView-D-2SQf3j.js → ConfigureView-re6uU4Lp.js} +6 -4
  6. package/dist/ConfigureView-re6uU4Lp.js.map +1 -0
  7. package/dist/EmailForm.js +3 -1
  8. package/dist/EmailForm.js.map +1 -1
  9. package/dist/FinderModal.js +14 -1
  10. package/dist/FinderModal.js.map +1 -1
  11. package/dist/FloatingActionMenu.js +175 -55
  12. package/dist/FloatingActionMenu.js.map +1 -1
  13. package/dist/IpRestriction.js +19 -9
  14. package/dist/IpRestriction.js.map +1 -1
  15. package/dist/ProductEmbed.js +35 -23
  16. package/dist/ProductEmbed.js.map +1 -1
  17. package/dist/ShareViaLink.js +4 -4
  18. package/dist/ShareViaLink.js.map +1 -1
  19. package/dist/Sidebar.js +43 -5
  20. package/dist/Sidebar.js.map +1 -1
  21. package/dist/StickyRibbonsContainer.js +27 -18
  22. package/dist/StickyRibbonsContainer.js.map +1 -1
  23. package/dist/cjs/BrowserSupport.js +119 -51
  24. package/dist/cjs/BrowserSupport.js.map +1 -1
  25. package/dist/cjs/{Columns-rqa7goJu.js → Columns-Gcp48xQM.js} +5 -3
  26. package/dist/cjs/Columns-Gcp48xQM.js.map +1 -0
  27. package/dist/cjs/{ConfigureView-CNWEfiae.js → ConfigureView-CAdrpELW.js} +6 -4
  28. package/dist/cjs/ConfigureView-CAdrpELW.js.map +1 -0
  29. package/dist/cjs/EmailForm.js +3 -1
  30. package/dist/cjs/EmailForm.js.map +1 -1
  31. package/dist/cjs/FinderModal.js +14 -1
  32. package/dist/cjs/FinderModal.js.map +1 -1
  33. package/dist/cjs/FloatingActionMenu.js +189 -69
  34. package/dist/cjs/FloatingActionMenu.js.map +1 -1
  35. package/dist/cjs/IpRestriction.js +19 -9
  36. package/dist/cjs/IpRestriction.js.map +1 -1
  37. package/dist/cjs/ProductEmbed.js +34 -22
  38. package/dist/cjs/ProductEmbed.js.map +1 -1
  39. package/dist/cjs/ShareViaLink.js +4 -4
  40. package/dist/cjs/ShareViaLink.js.map +1 -1
  41. package/dist/cjs/Sidebar.js +43 -5
  42. package/dist/cjs/Sidebar.js.map +1 -1
  43. package/dist/cjs/StickyRibbonsContainer.js +29 -20
  44. package/dist/cjs/StickyRibbonsContainer.js.map +1 -1
  45. package/dist/cjs/mail-Di35Ay-Z.js +20 -0
  46. package/dist/cjs/mail-Di35Ay-Z.js.map +1 -0
  47. package/dist/cjs/performanceDiagnostics-CS7NTxaH.js +93 -0
  48. package/dist/cjs/performanceDiagnostics-CS7NTxaH.js.map +1 -0
  49. package/dist/cjs/{phone-number-DVlbgxBG.js → phone-number-BydWe8Mf.js} +22 -3
  50. package/dist/cjs/phone-number-BydWe8Mf.js.map +1 -0
  51. package/dist/cjs/useWhatsNewChangesCount-BVkLLk7f.js +121 -0
  52. package/dist/cjs/useWhatsNewChangesCount-BVkLLk7f.js.map +1 -0
  53. package/dist/cjs/useWhatsNewChangesCount-CyOUS5U3.js +106 -0
  54. package/dist/cjs/useWhatsNewChangesCount-CyOUS5U3.js.map +1 -0
  55. package/dist/cjs/v2/BrowserSupport.js +119 -51
  56. package/dist/cjs/v2/BrowserSupport.js.map +1 -1
  57. package/dist/cjs/v2/Builder.js +17 -13
  58. package/dist/cjs/v2/Builder.js.map +1 -1
  59. package/dist/cjs/v2/CalendarView.js +2 -2
  60. package/dist/cjs/v2/Columns.js +1 -1
  61. package/dist/cjs/v2/ConfigurePageSidebar.js +1 -1
  62. package/dist/cjs/v2/DndTable.js +1 -0
  63. package/dist/cjs/v2/DndTable.js.map +1 -1
  64. package/dist/cjs/v2/DynamicVariables.js +17 -8
  65. package/dist/cjs/v2/DynamicVariables.js.map +1 -1
  66. package/dist/cjs/v2/EmailForm.js +97 -10
  67. package/dist/cjs/v2/EmailForm.js.map +1 -1
  68. package/dist/cjs/v2/EmailPreview.js +1 -1
  69. package/dist/cjs/v2/EmailPreview.js.map +1 -1
  70. package/dist/cjs/v2/Engagements.js +10 -7
  71. package/dist/cjs/v2/Engagements.js.map +1 -1
  72. package/dist/cjs/v2/FinderModal.js +104 -72
  73. package/dist/cjs/v2/FinderModal.js.map +1 -1
  74. package/dist/cjs/v2/FloatingActionMenu.js +267 -110
  75. package/dist/cjs/v2/FloatingActionMenu.js.map +1 -1
  76. package/dist/cjs/v2/IpRestriction.js +17 -7
  77. package/dist/cjs/v2/IpRestriction.js.map +1 -1
  78. package/dist/cjs/v2/MadeWith.js +5 -3
  79. package/dist/cjs/v2/MadeWith.js.map +1 -1
  80. package/dist/cjs/v2/MoreDropdown.js +5 -2
  81. package/dist/cjs/v2/MoreDropdown.js.map +1 -1
  82. package/dist/cjs/v2/OptionFields.js +1 -0
  83. package/dist/cjs/v2/OptionFields.js.map +1 -1
  84. package/dist/cjs/v2/PhoneNumber.js +1 -1
  85. package/dist/cjs/v2/ProductEmbed.js +25 -13
  86. package/dist/cjs/v2/ProductEmbed.js.map +1 -1
  87. package/dist/cjs/v2/SessionEnvironment.js +3 -16
  88. package/dist/cjs/v2/SessionEnvironment.js.map +1 -1
  89. package/dist/cjs/v2/Sidebar.js +95 -32
  90. package/dist/cjs/v2/Sidebar.js.map +1 -1
  91. package/dist/cjs/v2/StickyRibbonsContainer.js +29 -19
  92. package/dist/cjs/v2/StickyRibbonsContainer.js.map +1 -1
  93. package/dist/cjs/v2/SubHeader.js +1 -1
  94. package/dist/cjs/v2/Taxonomy.js +1 -1
  95. package/dist/mail-CkquKByM.js +18 -0
  96. package/dist/mail-CkquKByM.js.map +1 -0
  97. package/dist/performanceDiagnostics-DJcT0dfG.js +88 -0
  98. package/dist/performanceDiagnostics-DJcT0dfG.js.map +1 -0
  99. package/dist/{phone-number-ClrmOx58.js → phone-number-n0BLV3g6.js} +24 -5
  100. package/dist/phone-number-n0BLV3g6.js.map +1 -0
  101. package/dist/useWhatsNewChangesCount-C71JkNHv.js +96 -0
  102. package/dist/useWhatsNewChangesCount-C71JkNHv.js.map +1 -0
  103. package/dist/useWhatsNewChangesCount-CQxhUCpt.js +106 -0
  104. package/dist/useWhatsNewChangesCount-CQxhUCpt.js.map +1 -0
  105. package/dist/v2/BrowserSupport.js +116 -51
  106. package/dist/v2/BrowserSupport.js.map +1 -1
  107. package/dist/v2/Builder.js +17 -13
  108. package/dist/v2/Builder.js.map +1 -1
  109. package/dist/v2/CalendarView.js +2 -2
  110. package/dist/v2/Columns.js +1 -1
  111. package/dist/v2/ConfigurePageSidebar.js +1 -1
  112. package/dist/v2/DndTable.js +1 -0
  113. package/dist/v2/DndTable.js.map +1 -1
  114. package/dist/v2/DynamicVariables.js +18 -9
  115. package/dist/v2/DynamicVariables.js.map +1 -1
  116. package/dist/v2/EmailForm.js +100 -13
  117. package/dist/v2/EmailForm.js.map +1 -1
  118. package/dist/v2/EmailPreview.js +1 -1
  119. package/dist/v2/EmailPreview.js.map +1 -1
  120. package/dist/v2/Engagements.js +10 -7
  121. package/dist/v2/Engagements.js.map +1 -1
  122. package/dist/v2/FinderModal.js +105 -73
  123. package/dist/v2/FinderModal.js.map +1 -1
  124. package/dist/v2/FloatingActionMenu.js +238 -81
  125. package/dist/v2/FloatingActionMenu.js.map +1 -1
  126. package/dist/v2/IpRestriction.js +17 -7
  127. package/dist/v2/IpRestriction.js.map +1 -1
  128. package/dist/v2/MadeWith.js +5 -3
  129. package/dist/v2/MadeWith.js.map +1 -1
  130. package/dist/v2/MoreDropdown.js +5 -2
  131. package/dist/v2/MoreDropdown.js.map +1 -1
  132. package/dist/v2/OptionFields.js +1 -0
  133. package/dist/v2/OptionFields.js.map +1 -1
  134. package/dist/v2/PhoneNumber.js +2 -2
  135. package/dist/v2/ProductEmbed.js +26 -14
  136. package/dist/v2/ProductEmbed.js.map +1 -1
  137. package/dist/v2/SessionEnvironment.js +2 -15
  138. package/dist/v2/SessionEnvironment.js.map +1 -1
  139. package/dist/v2/Sidebar.js +95 -32
  140. package/dist/v2/Sidebar.js.map +1 -1
  141. package/dist/v2/StickyRibbonsContainer.js +27 -17
  142. package/dist/v2/StickyRibbonsContainer.js.map +1 -1
  143. package/dist/v2/SubHeader.js +1 -1
  144. package/dist/v2/Taxonomy.js +1 -1
  145. package/package.json +8 -8
  146. package/src/translations/ar.json +8 -3
  147. package/src/translations/bg.json +8 -3
  148. package/src/translations/ca.json +8 -3
  149. package/src/translations/cs.json +8 -3
  150. package/src/translations/da.json +8 -3
  151. package/src/translations/de.json +8 -3
  152. package/src/translations/en.json +18 -2
  153. package/src/translations/es-MX.json +8 -3
  154. package/src/translations/es.json +8 -3
  155. package/src/translations/et.json +8 -3
  156. package/src/translations/fi.json +8 -3
  157. package/src/translations/fil.json +8 -3
  158. package/src/translations/fr.json +8 -3
  159. package/src/translations/he.json +8 -3
  160. package/src/translations/hi.json +8 -3
  161. package/src/translations/hr.json +8 -3
  162. package/src/translations/hu.json +8 -3
  163. package/src/translations/id.json +8 -3
  164. package/src/translations/it.json +8 -3
  165. package/src/translations/ja.json +8 -3
  166. package/src/translations/ko.json +8 -3
  167. package/src/translations/lv.json +984 -0
  168. package/src/translations/nl.json +8 -3
  169. package/src/translations/pl.json +8 -3
  170. package/src/translations/pt-BR.json +8 -3
  171. package/src/translations/pt.json +8 -3
  172. package/src/translations/ro.json +8 -3
  173. package/src/translations/ru.json +8 -3
  174. package/src/translations/sk.json +8 -3
  175. package/src/translations/sl.json +8 -3
  176. package/src/translations/sv.json +8 -3
  177. package/src/translations/th.json +8 -3
  178. package/src/translations/tr.json +8 -3
  179. package/src/translations/uk.json +8 -3
  180. package/src/translations/vi.json +8 -3
  181. package/src/translations/zh-CN.json +8 -3
  182. package/src/translations/zh-TW.json +8 -3
  183. package/types/BrowserSupport.d.ts +128 -39
  184. package/types/v2/EmailForm.d.ts +1 -0
  185. package/types/v2/EmailFormProvider.d.ts +3 -1
  186. package/dist/Columns-C20zru7a.js.map +0 -1
  187. package/dist/ConfigureView-D-2SQf3j.js.map +0 -1
  188. package/dist/cjs/Columns-rqa7goJu.js.map +0 -1
  189. package/dist/cjs/ConfigureView-CNWEfiae.js.map +0 -1
  190. package/dist/cjs/phone-number-DVlbgxBG.js.map +0 -1
  191. package/dist/phone-number-ClrmOx58.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DndTable.js","sources":["../../src/v2/components/DndTable/constants.js","../../src/v2/components/DndTable/columnLayout.js","../../src/v2/components/DndTable/Row.jsx","../../src/v2/components/DndTable/Table.jsx","../../src/v2/components/DndTable/useDndTable.js"],"sourcesContent":["// @tanstack/react-table's default column size, used when a column declares no\n// width — matches what DataTable falls back to so freeze offsets line up.\nexport const DEFAULT_COLUMN_SIZE = 150;\n\n// Width of DataTable's built-in selection column; the checkbox is frozen ahead\n// of user-frozen columns, so their sticky offset starts after this width.\nexport const SELECTION_COLUMN_SIZE = 56;\n\n// Sticky styling DataTable applies to its own frozen body cells; replicated\n// here because the custom body bypasses DataTable's per-cell rendering.\nexport const PINNED_CELL_CLASS =\n \"sticky z-10 bg-background transition-colors group-hover:bg-muted group-data-[state=selected]:bg-row-selected\";\n\n// Right-edge shadow on the last frozen column, revealed once the scroll\n// container reports horizontal scroll (DataTable owns the scroll group).\nexport const LAST_PINNED_SHADOW_CLASS =\n \"after:pointer-events-none after:absolute after:inset-y-0 after:-right-2 after:w-2 after:bg-gradient-to-r after:from-black/6 after:to-transparent after:opacity-0 after:transition-opacity after:duration-200 after:content-[''] group-data-[scrolled-start]/scroll:after:opacity-100 dark:after:from-white/6\";\n","import { DEFAULT_COLUMN_SIZE, SELECTION_COLUMN_SIZE } from \"./constants\";\n\nconst getColumnId = col => col.key || col.dataIndex;\n\n// Build the body's left-to-right cell order, mirroring DataTable's\n// row.getVisibleCells(): left-pinned (frozen) columns first in pin order, then\n// the \"center\" group — the selection cell followed by the unpinned columns in\n// their original order. Each pinned descriptor carries the sticky offset and\n// size DataTable applies to its own frozen cells so the custom body stays\n// aligned with the (DataTable-rendered) header.\n//\n// Freeze only ever pins to the left: the header menu's toggle manages\n// columnPinning.left exclusively, so right pinning is intentionally unhandled.\n//\n// When freeze is enabled, DataTable force-pins the selection column ahead of\n// everything (resolvedColumnPinning prepends \"_selection\" to left), so the\n// checkbox stays frozen at the far left and user-frozen columns start after its\n// width. That is replicated here — otherwise header and body drift apart.\nconst getBodyColumnLayout = ({\n columnData,\n columnPinning,\n columnSizing = {},\n rowSelection = false,\n enableColumnFreeze = false,\n}) => {\n const leftIds = columnPinning?.left ?? [];\n const leftSet = new Set(leftIds);\n const sizeOf = col =>\n columnSizing[getColumnId(col)] ?? col.width ?? DEFAULT_COLUMN_SIZE;\n const columnById = id => columnData.find(col => getColumnId(col) === id);\n\n // The selection column is frozen alongside the data columns only while the\n // freeze feature is on; without it the checkbox is an ordinary leading cell.\n const isSelectionPinned = rowSelection && enableColumnFreeze;\n\n const leftPinned = [];\n let offset = 0;\n if (isSelectionPinned) {\n leftPinned.push({\n type: \"selection\",\n pinned: \"left\",\n size: SELECTION_COLUMN_SIZE,\n left: 0,\n });\n offset = SELECTION_COLUMN_SIZE;\n }\n\n leftIds.forEach(id => {\n const col = columnById(id);\n if (!col) return;\n const size = sizeOf(col);\n leftPinned.push({ type: \"data\", col, pinned: \"left\", size, left: offset });\n offset += size;\n });\n if (leftPinned.length) {\n leftPinned[leftPinned.length - 1].isLastPinned = true;\n }\n\n const center = [];\n if (rowSelection && !isSelectionPinned) {\n center.push({ type: \"selection\", pinned: false });\n }\n\n columnData.forEach(col => {\n if (!leftSet.has(getColumnId(col))) {\n center.push({ type: \"data\", col, pinned: false });\n }\n });\n\n return [...leftPinned, ...center];\n};\n\nexport { getBodyColumnLayout, getColumnId };\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\n\nconst Row = ({ children, data, index, className, isDroppable, ...rest }) => {\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, index },\n id: `draggable-${rest[\"data-row-key\"]}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, index: index + 1 },\n id: `droppable-${rest[\"data-row-key\"]}`,\n disabled: !isDroppable || isDragging,\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <tr\n {...rest}\n {...attributes}\n {...listeners}\n className={classNames(className, {\n \"border-border hover:bg-muted/50 data-[state=selected]:bg-row-selected w-full min-w-0 cursor-move border-b transition-colors\": true,\n \"bg-muted opacity-50\": isDragging,\n \"bg-primary/10 shadow-sm\": isIndicatorVisible,\n })}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n }}\n >\n {children}\n </tr>\n );\n};\n\nexport default Row;\n","import { useState } from \"react\";\n\nimport { DataTable } from \"@bigbinary/neeto-atoms\";\nimport {\n Checkbox,\n TableBody,\n TableCell,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport {\n DndContext,\n DragOverlay,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\nimport classNames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { T } from \"ramda\";\nimport { createPortal } from \"react-dom\";\n\nimport { getColumnId, getBodyColumnLayout } from \"./columnLayout\";\nimport { PINNED_CELL_CLASS, LAST_PINNED_SHADOW_CLASS } from \"./constants\";\nimport Row from \"./Row\";\n\nconst sensorConfig = { activationConstraint: { distance: 8 } };\n\nconst getRowKey = (row, index) => String(row.id ?? row.key ?? index);\n\nconst buildColumns = columnData =>\n columnData.map(({ key, dataIndex, title, width, sorter, enableSorting }) => ({\n id: key || dataIndex,\n accessorKey: dataIndex,\n header: title,\n ...(width ? { size: width } : {}),\n // antd-style `sorter` flag (or explicit `enableSorting`) toggles the sort\n // affordance per column; leaving both undefined inherits the table default.\n ...(sorter !== undefined || enableSorting !== undefined\n ? { enableSorting: enableSorting ?? Boolean(sorter) }\n : {}),\n }));\n\n// DataTable's SortingState is `[{ id, desc }]`; surface the leading sort to\n// consumers in the friendlier { field, order } shape, or null when cleared.\nconst toSortInfo = sortingState => {\n const [sort] = sortingState;\n\n return sort\n ? { field: sort.id, order: sort.desc ? \"descend\" : \"ascend\" }\n : null;\n};\n\nconst DndTable = ({\n rowData,\n columnData,\n overlayColumnIndex = 0,\n isRowDroppable = T,\n onDrop = noop,\n rowSelection = false,\n selectedRowKeys = [],\n onRowSelect = noop,\n enableSorting = false,\n sorting,\n onSort = noop,\n enableColumnFreeze = false,\n columnPinning,\n onColumnPinningChange = noop,\n currentPageNumber,\n paginationProps,\n // antd tree-data prop carried over from v1; DataTable has no tree rows, so\n // pull it out of ...rest instead of forwarding it.\n childrenColumnName: _childrenColumnName,\n ...rest\n}) => {\n const [dragState, setDragState] = useState(null);\n const sensors = useSensors(useSensor(PointerSensor, sensorConfig));\n\n // Sorting is controlled when a `sorting` prop is supplied, otherwise tracked\n // here so the header arrows stay in sync without consumer wiring.\n const isSortingControlled = sorting !== undefined;\n const [uncontrolledSorting, setUncontrolledSorting] = useState([]);\n const sortingState = isSortingControlled ? sorting : uncontrolledSorting;\n\n const applySorting = updater => {\n const nextSorting =\n typeof updater === \"function\" ? updater(sortingState) : updater;\n if (!isSortingControlled) setUncontrolledSorting(nextSorting);\n onSort(toSortInfo(nextSorting));\n };\n\n // Freeze pins columns to the left. Controlled when a `columnPinning` prop is\n // supplied, otherwise tracked here so the freeze menu works standalone.\n const isPinningControlled = columnPinning !== undefined;\n const [uncontrolledPinning, setUncontrolledPinning] = useState({ left: [] });\n const pinningState = isPinningControlled\n ? columnPinning\n : uncontrolledPinning;\n\n const applyPinning = updater => {\n const nextPinning =\n typeof updater === \"function\" ? updater(pinningState) : updater;\n if (!isPinningControlled) setUncontrolledPinning(nextPinning);\n onColumnPinningChange(nextPinning);\n };\n\n // Column sizing is owned here so frozen-cell offsets in the custom body track\n // live column resizes (DataTable would otherwise keep it internal).\n const [columnSizing, setColumnSizing] = useState({});\n const onColumnSizingChange = updater =>\n setColumnSizing(prev =>\n typeof updater === \"function\" ? updater(prev) : updater\n );\n\n // getRowId stringifies row ids, but consumers may pass numeric selection\n // keys; normalise so selection state matches in both DataTable and the body.\n const selectedKeys = selectedRowKeys.map(String);\n const selectedKeySet = new Set(selectedKeys);\n\n const onDragEnd = ({ active, over }) => {\n setDragState(null);\n if (!active || !over) return;\n\n // Last action wins: a manual reorder supersedes any active sort, so clear\n // it before persisting the drop, leaving the table in manual order.\n if (sortingState.length) applySorting([]);\n onDrop(active.data.current, over.data.current);\n };\n\n const renderOverlay = data => {\n const colData = columnData[overlayColumnIndex];\n const cellValue = data[colData.dataIndex];\n\n return (\n <div className=\"flex px-20\">\n <div className=\"bg-background rounded-lg px-4\">\n {colData.render ? colData.render(cellValue, data) : cellValue}\n </div>\n </div>\n );\n };\n\n const toggleRowSelection = rowItem => {\n const rowKey = getRowKey(rowItem);\n const nextKeys = selectedKeySet.has(rowKey)\n ? selectedKeys.filter(key => key !== rowKey)\n : [...selectedKeys, rowKey];\n const nextKeySet = new Set(nextKeys);\n\n // Pass the rows for the freshly computed selection (nextKeys), matching\n // the keys argument; Set keeps the lookup O(n) over rowData.\n onRowSelect(\n nextKeys,\n rowData.filter(row => nextKeySet.has(getRowKey(row)))\n );\n };\n\n // Cell order mirrors DataTable's header: frozen columns reorder to the left,\n // so the body must reorder its cells the same way to stay column-aligned.\n const columnLayout = getBodyColumnLayout({\n columnData,\n columnPinning: pinningState,\n columnSizing,\n rowSelection,\n enableColumnFreeze,\n });\n\n const pinnedCellProps = ({ pinned, size, left, isLastPinned }) => {\n const isPinned = pinned === \"left\";\n\n return {\n className: classNames({\n [PINNED_CELL_CLASS]: isPinned,\n [LAST_PINNED_SHADOW_CLASS]: isPinned && isLastPinned,\n }),\n style: isPinned\n ? { width: size, minWidth: size, maxWidth: size, left }\n : undefined,\n };\n };\n\n const renderSelectionCell = (descriptor, rowItem) => {\n const rowKey = getRowKey(rowItem);\n const { className, style } = pinnedCellProps(descriptor);\n\n return (\n // Match DataTable's selection header cell padding (it forces !pe-2 while\n // TableCell zeroes pe for checkbox cells) so the body checkbox lines up\n // with the header select-all checkbox.\n <TableCell\n {...{ style }}\n className={classNames(\"!pe-2\", className)}\n key=\"_selection\"\n onClick={e => e.stopPropagation()}\n >\n <div className=\"flex w-full items-center justify-center\">\n <Checkbox\n checked={selectedKeySet.has(rowKey)}\n onCheckedChange={() => toggleRowSelection(rowItem)}\n />\n </div>\n </TableCell>\n );\n };\n\n const renderDataCell = (descriptor, rowItem, index) => {\n const { col } = descriptor;\n\n return (\n <TableCell key={getColumnId(col)} {...pinnedCellProps(descriptor)}>\n {col.render\n ? // Match the antd/v1 render signature (value, record, index); the\n // v1 body rendered through neetoui Table, which passed the row index.\n col.render(rowItem[col.dataIndex], rowItem, index)\n : rowItem[col.dataIndex]}\n </TableCell>\n );\n };\n\n const renderBody = () => (\n <TableBody>\n {rowData.map((rowItem, index) => {\n const rowKey = getRowKey(rowItem, index);\n\n return (\n <Row\n {...{ index }}\n data={rowItem}\n data-row-key={rowKey}\n isDroppable={isRowDroppable(rowItem)}\n key={rowKey}\n >\n {columnLayout.map(descriptor =>\n descriptor.type === \"selection\"\n ? renderSelectionCell(descriptor, rowItem)\n : renderDataCell(descriptor, rowItem, index)\n )}\n </Row>\n );\n })}\n </TableBody>\n );\n\n const dataTableProps = {\n ...rest,\n columns: buildColumns(columnData),\n data: rowData,\n getRowId: getRowKey,\n renderBody,\n enableColumnResize: true,\n enableURLPagination: true,\n // The header three-dot menu surfaces the sort and freeze controls, so turn\n // it on when either is enabled. No hide/reorder handlers are passed, so the\n // menu shows only those actions.\n enableHeaderMenu: enableSorting || enableColumnFreeze,\n // Sorting is driven in controlled mode and URL sync is left off: DataTable's\n // URL params (sort_by/order_by) don't match the app's (sortBy/orderBy), so\n // consumers own ordering via onSort (typically a sorted re-fetch of rowData).\n enableSorting,\n enableURLSort: false,\n sorting: sortingState,\n onSortingChange: applySorting,\n // Freeze: DataTable renders the frozen header; the custom body replicates\n // the sticky cell styling via columnLayout. columnSizing is controlled so\n // those body offsets stay correct as columns are resized.\n enableColumnFreeze,\n columnPinning: pinningState,\n onColumnPinningChange: applyPinning,\n columnSizing,\n onColumnSizingChange,\n enableRowSelection: rowSelection,\n selectedRowKeys: selectedKeys,\n onRowSelect,\n currentPage: currentPageNumber,\n pageSize: paginationProps?.pageSize,\n };\n\n return (\n <DndContext {...{ onDragEnd, sensors }} onDragStart={setDragState}>\n <DataTable {...dataTableProps} />\n {createPortal(\n <DragOverlay modifiers={[restrictToVerticalAxis]}>\n {dragState?.active && renderOverlay(dragState.active.data?.current)}\n </DragOverlay>,\n document.body\n )}\n </DndContext>\n );\n};\n\nDndTable.propTypes = {\n rowData: PropTypes.arrayOf(PropTypes.object).isRequired,\n columnData: PropTypes.arrayOf(PropTypes.object).isRequired,\n overlayColumnIndex: PropTypes.number,\n isRowDroppable: PropTypes.func,\n onDrop: PropTypes.func.isRequired,\n rowSelection: PropTypes.bool,\n selectedRowKeys: PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n ),\n onRowSelect: PropTypes.func,\n enableSorting: PropTypes.bool,\n sorting: PropTypes.arrayOf(\n PropTypes.shape({ id: PropTypes.string, desc: PropTypes.bool })\n ),\n onSort: PropTypes.func,\n enableColumnFreeze: PropTypes.bool,\n columnPinning: PropTypes.shape({ left: PropTypes.arrayOf(PropTypes.string) }),\n onColumnPinningChange: PropTypes.func,\n currentPageNumber: PropTypes.number,\n paginationProps: PropTypes.shape({ pageSize: PropTypes.number }),\n};\n\nexport default DndTable;\n","import { Toastr } from \"@bigbinary/neeto-atoms\";\nimport useStateWithDependency from \"neetocommons/v2/react-utils/useStateWithDependency\";\nimport { path, remove } from \"ramda\";\n\nconst useDndTable = ({ rowData, onUpdate }) => {\n const [rowDataState, setRowDataState] = useStateWithDependency(rowData, [\n rowData,\n ]);\n\n const onDrop = async (active, over) => {\n const stateBefore = rowDataState;\n setRowDataState(remove(active.index, 1));\n\n try {\n await onUpdate(active, over);\n } catch (error) {\n setRowDataState(stateBefore);\n const errors = path([\"response\", \"data\", \"errors\"], error);\n const message = errors && Object.values(errors)[0]?.[0];\n if (message) Toastr.error(message);\n }\n };\n\n return { rowData: rowDataState, onDrop };\n};\n\nexport default useDndTable;\n"],"names":["DEFAULT_COLUMN_SIZE","SELECTION_COLUMN_SIZE","PINNED_CELL_CLASS","LAST_PINNED_SHADOW_CLASS","getColumnId","col","key","dataIndex","getBodyColumnLayout","_ref","_columnPinning$left","columnData","columnPinning","_ref$columnSizing","columnSizing","_ref$rowSelection","rowSelection","_ref$enableColumnFree","enableColumnFreeze","leftIds","left","leftSet","Set","sizeOf","_ref2","_columnSizing$getColu","width","columnById","id","find","isSelectionPinned","leftPinned","offset","push","type","pinned","size","forEach","length","isLastPinned","center","has","concat","Row","children","data","index","className","isDroppable","rest","_objectWithoutProperties","_excluded","_useDraggable","useDraggable","_objectSpread","isDragging","attributes","listeners","setDraggableNodeRef","setNodeRef","_useDroppable","useDroppable","disabled","isOver","setDroppableNodeRef","isIndicatorVisible","_jsx","classNames","ref","node","sensorConfig","activationConstraint","distance","getRowKey","row","_row$id","String","buildColumns","map","title","sorter","enableSorting","accessorKey","header","undefined","Boolean","toSortInfo","sortingState","_sortingState","_slicedToArray","sort","field","order","desc","DndTable","_ref3","_dragState$active$dat","rowData","_ref3$overlayColumnIn","overlayColumnIndex","_ref3$isRowDroppable","isRowDroppable","T","_ref3$onDrop","onDrop","noop","_ref3$rowSelection","_ref3$selectedRowKeys","selectedRowKeys","_ref3$onRowSelect","onRowSelect","_ref3$enableSorting","sorting","_ref3$onSort","onSort","_ref3$enableColumnFre","_ref3$onColumnPinning","onColumnPinningChange","currentPageNumber","paginationProps","childrenColumnName","_useState","useState","_useState2","dragState","setDragState","sensors","useSensors","useSensor","PointerSensor","isSortingControlled","_useState3","_useState4","uncontrolledSorting","setUncontrolledSorting","applySorting","updater","nextSorting","isPinningControlled","_useState5","_useState6","uncontrolledPinning","setUncontrolledPinning","pinningState","applyPinning","nextPinning","_useState7","_useState8","setColumnSizing","onColumnSizingChange","prev","selectedKeys","selectedKeySet","onDragEnd","_ref4","active","over","current","renderOverlay","colData","cellValue","render","toggleRowSelection","rowItem","rowKey","nextKeys","filter","_toConsumableArray","nextKeySet","columnLayout","pinnedCellProps","_ref5","isPinned","_defineProperty","style","minWidth","maxWidth","renderSelectionCell","descriptor","_pinnedCellProps","_createElement","TableCell","onClick","e","stopPropagation","Checkbox","checked","onCheckedChange","renderDataCell","renderBody","TableBody","dataTableProps","columns","getRowId","enableColumnResize","enableURLPagination","enableHeaderMenu","enableURLSort","onSortingChange","enableRowSelection","currentPage","pageSize","_jsxs","DndContext","onDragStart","DataTable","createPortal","DragOverlay","modifiers","restrictToVerticalAxis","document","body","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","useDndTable","onUpdate","_useStateWithDependen","useStateWithDependency","_useStateWithDependen2","rowDataState","setRowDataState","_asyncToGenerator","_callee","stateBefore","_Object$values$","errors","message","_t","_context","remove","path","values","Toastr","error","_x","_x2","apply","arguments"],"mappings":"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"}
1
+ {"version":3,"file":"DndTable.js","sources":["../../src/v2/components/DndTable/constants.js","../../src/v2/components/DndTable/columnLayout.js","../../src/v2/components/DndTable/Row.jsx","../../src/v2/components/DndTable/Table.jsx","../../src/v2/components/DndTable/useDndTable.js"],"sourcesContent":["// @tanstack/react-table's default column size, used when a column declares no\n// width — matches what DataTable falls back to so freeze offsets line up.\nexport const DEFAULT_COLUMN_SIZE = 150;\n\n// Width of DataTable's built-in selection column; the checkbox is frozen ahead\n// of user-frozen columns, so their sticky offset starts after this width.\nexport const SELECTION_COLUMN_SIZE = 56;\n\n// Sticky styling DataTable applies to its own frozen body cells; replicated\n// here because the custom body bypasses DataTable's per-cell rendering.\nexport const PINNED_CELL_CLASS =\n \"sticky z-10 bg-background transition-colors group-hover:bg-muted group-data-[state=selected]:bg-row-selected\";\n\n// Right-edge shadow on the last frozen column, revealed once the scroll\n// container reports horizontal scroll (DataTable owns the scroll group).\nexport const LAST_PINNED_SHADOW_CLASS =\n \"after:pointer-events-none after:absolute after:inset-y-0 after:-right-2 after:w-2 after:bg-gradient-to-r after:from-black/6 after:to-transparent after:opacity-0 after:transition-opacity after:duration-200 after:content-[''] group-data-[scrolled-start]/scroll:after:opacity-100 dark:after:from-white/6\";\n","import { DEFAULT_COLUMN_SIZE, SELECTION_COLUMN_SIZE } from \"./constants\";\n\nconst getColumnId = col => col.key || col.dataIndex;\n\n// Build the body's left-to-right cell order, mirroring DataTable's\n// row.getVisibleCells(): left-pinned (frozen) columns first in pin order, then\n// the \"center\" group — the selection cell followed by the unpinned columns in\n// their original order. Each pinned descriptor carries the sticky offset and\n// size DataTable applies to its own frozen cells so the custom body stays\n// aligned with the (DataTable-rendered) header.\n//\n// Freeze only ever pins to the left: the header menu's toggle manages\n// columnPinning.left exclusively, so right pinning is intentionally unhandled.\n//\n// When freeze is enabled, DataTable force-pins the selection column ahead of\n// everything (resolvedColumnPinning prepends \"_selection\" to left), so the\n// checkbox stays frozen at the far left and user-frozen columns start after its\n// width. That is replicated here — otherwise header and body drift apart.\nconst getBodyColumnLayout = ({\n columnData,\n columnPinning,\n columnSizing = {},\n rowSelection = false,\n enableColumnFreeze = false,\n}) => {\n const leftIds = columnPinning?.left ?? [];\n const leftSet = new Set(leftIds);\n const sizeOf = col =>\n columnSizing[getColumnId(col)] ?? col.width ?? DEFAULT_COLUMN_SIZE;\n const columnById = id => columnData.find(col => getColumnId(col) === id);\n\n // The selection column is frozen alongside the data columns only while the\n // freeze feature is on; without it the checkbox is an ordinary leading cell.\n const isSelectionPinned = rowSelection && enableColumnFreeze;\n\n const leftPinned = [];\n let offset = 0;\n if (isSelectionPinned) {\n leftPinned.push({\n type: \"selection\",\n pinned: \"left\",\n size: SELECTION_COLUMN_SIZE,\n left: 0,\n });\n offset = SELECTION_COLUMN_SIZE;\n }\n\n leftIds.forEach(id => {\n const col = columnById(id);\n if (!col) return;\n const size = sizeOf(col);\n leftPinned.push({ type: \"data\", col, pinned: \"left\", size, left: offset });\n offset += size;\n });\n if (leftPinned.length) {\n leftPinned[leftPinned.length - 1].isLastPinned = true;\n }\n\n const center = [];\n if (rowSelection && !isSelectionPinned) {\n center.push({ type: \"selection\", pinned: false });\n }\n\n columnData.forEach(col => {\n if (!leftSet.has(getColumnId(col))) {\n center.push({ type: \"data\", col, pinned: false });\n }\n });\n\n return [...leftPinned, ...center];\n};\n\nexport { getBodyColumnLayout, getColumnId };\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\n\nconst Row = ({ children, data, index, className, isDroppable, ...rest }) => {\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, index },\n id: `draggable-${rest[\"data-row-key\"]}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, index: index + 1 },\n id: `droppable-${rest[\"data-row-key\"]}`,\n disabled: !isDroppable || isDragging,\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <tr\n {...rest}\n {...attributes}\n {...listeners}\n className={classNames(className, {\n \"border-border hover:bg-muted/50 data-[state=selected]:bg-row-selected w-full min-w-0 cursor-move border-b transition-colors\": true,\n \"bg-muted opacity-50\": isDragging,\n \"bg-primary/10 shadow-sm\": isIndicatorVisible,\n })}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n }}\n >\n {children}\n </tr>\n );\n};\n\nexport default Row;\n","import { useState } from \"react\";\n\nimport { DataTable } from \"@bigbinary/neeto-atoms\";\nimport {\n Checkbox,\n TableBody,\n TableCell,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport {\n DndContext,\n DragOverlay,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\nimport classNames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { T } from \"ramda\";\nimport { createPortal } from \"react-dom\";\n\nimport { getColumnId, getBodyColumnLayout } from \"./columnLayout\";\nimport { PINNED_CELL_CLASS, LAST_PINNED_SHADOW_CLASS } from \"./constants\";\nimport Row from \"./Row\";\n\nconst sensorConfig = { activationConstraint: { distance: 8 } };\n\nconst getRowKey = (row, index) => String(row.id ?? row.key ?? index);\n\nconst buildColumns = columnData =>\n columnData.map(({ key, dataIndex, title, width, sorter, enableSorting }) => ({\n id: key || dataIndex,\n accessorKey: dataIndex,\n header: title,\n ...(width ? { size: width } : {}),\n // antd-style `sorter` flag (or explicit `enableSorting`) toggles the sort\n // affordance per column; leaving both undefined inherits the table default.\n ...(sorter !== undefined || enableSorting !== undefined\n ? { enableSorting: enableSorting ?? Boolean(sorter) }\n : {}),\n }));\n\n// DataTable's SortingState is `[{ id, desc }]`; surface the leading sort to\n// consumers in the friendlier { field, order } shape, or null when cleared.\nconst toSortInfo = sortingState => {\n const [sort] = sortingState;\n\n return sort\n ? { field: sort.id, order: sort.desc ? \"descend\" : \"ascend\" }\n : null;\n};\n\nconst DndTable = ({\n rowData,\n columnData,\n overlayColumnIndex = 0,\n isRowDroppable = T,\n onDrop = noop,\n rowSelection = false,\n selectedRowKeys = [],\n onRowSelect = noop,\n enableSorting = false,\n sorting,\n onSort = noop,\n enableColumnFreeze = false,\n columnPinning,\n onColumnPinningChange = noop,\n currentPageNumber,\n paginationProps,\n // antd tree-data prop carried over from v1; DataTable has no tree rows, so\n // pull it out of ...rest instead of forwarding it.\n childrenColumnName: _childrenColumnName,\n ...rest\n}) => {\n const [dragState, setDragState] = useState(null);\n const sensors = useSensors(useSensor(PointerSensor, sensorConfig));\n\n // Sorting is controlled when a `sorting` prop is supplied, otherwise tracked\n // here so the header arrows stay in sync without consumer wiring.\n const isSortingControlled = sorting !== undefined;\n const [uncontrolledSorting, setUncontrolledSorting] = useState([]);\n const sortingState = isSortingControlled ? sorting : uncontrolledSorting;\n\n const applySorting = updater => {\n const nextSorting =\n typeof updater === \"function\" ? updater(sortingState) : updater;\n if (!isSortingControlled) setUncontrolledSorting(nextSorting);\n onSort(toSortInfo(nextSorting));\n };\n\n // Freeze pins columns to the left. Controlled when a `columnPinning` prop is\n // supplied, otherwise tracked here so the freeze menu works standalone.\n const isPinningControlled = columnPinning !== undefined;\n const [uncontrolledPinning, setUncontrolledPinning] = useState({ left: [] });\n const pinningState = isPinningControlled\n ? columnPinning\n : uncontrolledPinning;\n\n const applyPinning = updater => {\n const nextPinning =\n typeof updater === \"function\" ? updater(pinningState) : updater;\n if (!isPinningControlled) setUncontrolledPinning(nextPinning);\n onColumnPinningChange(nextPinning);\n };\n\n // Column sizing is owned here so frozen-cell offsets in the custom body track\n // live column resizes (DataTable would otherwise keep it internal).\n const [columnSizing, setColumnSizing] = useState({});\n const onColumnSizingChange = updater =>\n setColumnSizing(prev =>\n typeof updater === \"function\" ? updater(prev) : updater\n );\n\n // getRowId stringifies row ids, but consumers may pass numeric selection\n // keys; normalise so selection state matches in both DataTable and the body.\n const selectedKeys = selectedRowKeys.map(String);\n const selectedKeySet = new Set(selectedKeys);\n\n const onDragEnd = ({ active, over }) => {\n setDragState(null);\n if (!active || !over) return;\n\n // Last action wins: a manual reorder supersedes any active sort, so clear\n // it before persisting the drop, leaving the table in manual order.\n if (sortingState.length) applySorting([]);\n onDrop(active.data.current, over.data.current);\n };\n\n const renderOverlay = data => {\n const colData = columnData[overlayColumnIndex];\n const cellValue = data[colData.dataIndex];\n\n return (\n <div className=\"flex px-20\">\n <div className=\"bg-background rounded-lg px-4\">\n {colData.render ? colData.render(cellValue, data) : cellValue}\n </div>\n </div>\n );\n };\n\n const toggleRowSelection = rowItem => {\n const rowKey = getRowKey(rowItem);\n const nextKeys = selectedKeySet.has(rowKey)\n ? selectedKeys.filter(key => key !== rowKey)\n : [...selectedKeys, rowKey];\n const nextKeySet = new Set(nextKeys);\n\n // Pass the rows for the freshly computed selection (nextKeys), matching\n // the keys argument; Set keeps the lookup O(n) over rowData.\n onRowSelect(\n nextKeys,\n rowData.filter(row => nextKeySet.has(getRowKey(row)))\n );\n };\n\n // Cell order mirrors DataTable's header: frozen columns reorder to the left,\n // so the body must reorder its cells the same way to stay column-aligned.\n const columnLayout = getBodyColumnLayout({\n columnData,\n columnPinning: pinningState,\n columnSizing,\n rowSelection,\n enableColumnFreeze,\n });\n\n const pinnedCellProps = ({ pinned, size, left, isLastPinned }) => {\n const isPinned = pinned === \"left\";\n\n return {\n className: classNames({\n [PINNED_CELL_CLASS]: isPinned,\n [LAST_PINNED_SHADOW_CLASS]: isPinned && isLastPinned,\n }),\n style: isPinned\n ? { width: size, minWidth: size, maxWidth: size, left }\n : undefined,\n };\n };\n\n const renderSelectionCell = (descriptor, rowItem) => {\n const rowKey = getRowKey(rowItem);\n const { className, style } = pinnedCellProps(descriptor);\n\n return (\n // Match DataTable's selection header cell padding (it forces !pe-2 while\n // TableCell zeroes pe for checkbox cells) so the body checkbox lines up\n // with the header select-all checkbox.\n <TableCell\n {...{ style }}\n className={classNames(\"!pe-2\", className)}\n key=\"_selection\"\n onClick={e => e.stopPropagation()}\n >\n <div className=\"flex w-full items-center justify-center\">\n <Checkbox\n checked={selectedKeySet.has(rowKey)}\n data-testid=\"row-selection-checkbox\"\n onCheckedChange={() => toggleRowSelection(rowItem)}\n />\n </div>\n </TableCell>\n );\n };\n\n const renderDataCell = (descriptor, rowItem, index) => {\n const { col } = descriptor;\n\n return (\n <TableCell key={getColumnId(col)} {...pinnedCellProps(descriptor)}>\n {col.render\n ? // Match the antd/v1 render signature (value, record, index); the\n // v1 body rendered through neetoui Table, which passed the row index.\n col.render(rowItem[col.dataIndex], rowItem, index)\n : rowItem[col.dataIndex]}\n </TableCell>\n );\n };\n\n const renderBody = () => (\n <TableBody>\n {rowData.map((rowItem, index) => {\n const rowKey = getRowKey(rowItem, index);\n\n return (\n <Row\n {...{ index }}\n data={rowItem}\n data-row-key={rowKey}\n isDroppable={isRowDroppable(rowItem)}\n key={rowKey}\n >\n {columnLayout.map(descriptor =>\n descriptor.type === \"selection\"\n ? renderSelectionCell(descriptor, rowItem)\n : renderDataCell(descriptor, rowItem, index)\n )}\n </Row>\n );\n })}\n </TableBody>\n );\n\n const dataTableProps = {\n ...rest,\n columns: buildColumns(columnData),\n data: rowData,\n getRowId: getRowKey,\n renderBody,\n enableColumnResize: true,\n enableURLPagination: true,\n // The header three-dot menu surfaces the sort and freeze controls, so turn\n // it on when either is enabled. No hide/reorder handlers are passed, so the\n // menu shows only those actions.\n enableHeaderMenu: enableSorting || enableColumnFreeze,\n // Sorting is driven in controlled mode and URL sync is left off: DataTable's\n // URL params (sort_by/order_by) don't match the app's (sortBy/orderBy), so\n // consumers own ordering via onSort (typically a sorted re-fetch of rowData).\n enableSorting,\n enableURLSort: false,\n sorting: sortingState,\n onSortingChange: applySorting,\n // Freeze: DataTable renders the frozen header; the custom body replicates\n // the sticky cell styling via columnLayout. columnSizing is controlled so\n // those body offsets stay correct as columns are resized.\n enableColumnFreeze,\n columnPinning: pinningState,\n onColumnPinningChange: applyPinning,\n columnSizing,\n onColumnSizingChange,\n enableRowSelection: rowSelection,\n selectedRowKeys: selectedKeys,\n onRowSelect,\n currentPage: currentPageNumber,\n pageSize: paginationProps?.pageSize,\n };\n\n return (\n <DndContext {...{ onDragEnd, sensors }} onDragStart={setDragState}>\n <DataTable {...dataTableProps} />\n {createPortal(\n <DragOverlay modifiers={[restrictToVerticalAxis]}>\n {dragState?.active && renderOverlay(dragState.active.data?.current)}\n </DragOverlay>,\n document.body\n )}\n </DndContext>\n );\n};\n\nDndTable.propTypes = {\n rowData: PropTypes.arrayOf(PropTypes.object).isRequired,\n columnData: PropTypes.arrayOf(PropTypes.object).isRequired,\n overlayColumnIndex: PropTypes.number,\n isRowDroppable: PropTypes.func,\n onDrop: PropTypes.func.isRequired,\n rowSelection: PropTypes.bool,\n selectedRowKeys: PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n ),\n onRowSelect: PropTypes.func,\n enableSorting: PropTypes.bool,\n sorting: PropTypes.arrayOf(\n PropTypes.shape({ id: PropTypes.string, desc: PropTypes.bool })\n ),\n onSort: PropTypes.func,\n enableColumnFreeze: PropTypes.bool,\n columnPinning: PropTypes.shape({ left: PropTypes.arrayOf(PropTypes.string) }),\n onColumnPinningChange: PropTypes.func,\n currentPageNumber: PropTypes.number,\n paginationProps: PropTypes.shape({ pageSize: PropTypes.number }),\n};\n\nexport default DndTable;\n","import { Toastr } from \"@bigbinary/neeto-atoms\";\nimport useStateWithDependency from \"neetocommons/v2/react-utils/useStateWithDependency\";\nimport { path, remove } from \"ramda\";\n\nconst useDndTable = ({ rowData, onUpdate }) => {\n const [rowDataState, setRowDataState] = useStateWithDependency(rowData, [\n rowData,\n ]);\n\n const onDrop = async (active, over) => {\n const stateBefore = rowDataState;\n setRowDataState(remove(active.index, 1));\n\n try {\n await onUpdate(active, over);\n } catch (error) {\n setRowDataState(stateBefore);\n const errors = path([\"response\", \"data\", \"errors\"], error);\n const message = errors && Object.values(errors)[0]?.[0];\n if (message) Toastr.error(message);\n }\n };\n\n return { rowData: rowDataState, onDrop };\n};\n\nexport default useDndTable;\n"],"names":["DEFAULT_COLUMN_SIZE","SELECTION_COLUMN_SIZE","PINNED_CELL_CLASS","LAST_PINNED_SHADOW_CLASS","getColumnId","col","key","dataIndex","getBodyColumnLayout","_ref","_columnPinning$left","columnData","columnPinning","_ref$columnSizing","columnSizing","_ref$rowSelection","rowSelection","_ref$enableColumnFree","enableColumnFreeze","leftIds","left","leftSet","Set","sizeOf","_ref2","_columnSizing$getColu","width","columnById","id","find","isSelectionPinned","leftPinned","offset","push","type","pinned","size","forEach","length","isLastPinned","center","has","concat","Row","children","data","index","className","isDroppable","rest","_objectWithoutProperties","_excluded","_useDraggable","useDraggable","_objectSpread","isDragging","attributes","listeners","setDraggableNodeRef","setNodeRef","_useDroppable","useDroppable","disabled","isOver","setDroppableNodeRef","isIndicatorVisible","_jsx","classNames","ref","node","sensorConfig","activationConstraint","distance","getRowKey","row","_row$id","String","buildColumns","map","title","sorter","enableSorting","accessorKey","header","undefined","Boolean","toSortInfo","sortingState","_sortingState","_slicedToArray","sort","field","order","desc","DndTable","_ref3","_dragState$active$dat","rowData","_ref3$overlayColumnIn","overlayColumnIndex","_ref3$isRowDroppable","isRowDroppable","T","_ref3$onDrop","onDrop","noop","_ref3$rowSelection","_ref3$selectedRowKeys","selectedRowKeys","_ref3$onRowSelect","onRowSelect","_ref3$enableSorting","sorting","_ref3$onSort","onSort","_ref3$enableColumnFre","_ref3$onColumnPinning","onColumnPinningChange","currentPageNumber","paginationProps","childrenColumnName","_useState","useState","_useState2","dragState","setDragState","sensors","useSensors","useSensor","PointerSensor","isSortingControlled","_useState3","_useState4","uncontrolledSorting","setUncontrolledSorting","applySorting","updater","nextSorting","isPinningControlled","_useState5","_useState6","uncontrolledPinning","setUncontrolledPinning","pinningState","applyPinning","nextPinning","_useState7","_useState8","setColumnSizing","onColumnSizingChange","prev","selectedKeys","selectedKeySet","onDragEnd","_ref4","active","over","current","renderOverlay","colData","cellValue","render","toggleRowSelection","rowItem","rowKey","nextKeys","filter","_toConsumableArray","nextKeySet","columnLayout","pinnedCellProps","_ref5","isPinned","_defineProperty","style","minWidth","maxWidth","renderSelectionCell","descriptor","_pinnedCellProps","_createElement","TableCell","onClick","e","stopPropagation","Checkbox","checked","onCheckedChange","renderDataCell","renderBody","TableBody","dataTableProps","columns","getRowId","enableColumnResize","enableURLPagination","enableHeaderMenu","enableURLSort","onSortingChange","enableRowSelection","currentPage","pageSize","_jsxs","DndContext","onDragStart","DataTable","createPortal","DragOverlay","modifiers","restrictToVerticalAxis","document","body","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","useDndTable","onUpdate","_useStateWithDependen","useStateWithDependency","_useStateWithDependen2","rowDataState","setRowDataState","_asyncToGenerator","_callee","stateBefore","_Object$values$","errors","message","_t","_context","remove","path","values","Toastr","error","_x","_x2","apply","arguments"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
3
  import { DropdownMenu, Typography, cn, Button } from '@bigbinary/neeto-atoms';
4
- import { findBy, noop } from '@bigbinary/neeto-cist';
4
+ import { findBy, _truncate, noop } from '@bigbinary/neeto-cist';
5
5
  import { joinHyphenCase } from '@bigbinary/neeto-commons-frontend/v2/utils/general';
6
6
  import { mergeLeft, uniqBy, prop, isEmpty } from 'ramda';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -31,6 +31,8 @@ const __iconNode = [
31
31
  ];
32
32
  const Braces = createLucideIcon("braces", __iconNode);
33
33
 
34
+ var MAX_LABEL_LENGTH = 100;
35
+
34
36
  var parseVariables = function parseVariables() {
35
37
  var variableArr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
36
38
  var uncategorized = [];
@@ -138,14 +140,21 @@ var DynamicVariables = function DynamicVariables(_ref) {
138
140
  className: "flex flex-wrap items-center gap-2",
139
141
  "data-testid": joinHyphenCase("dynamic-variables-list", label),
140
142
  children: variables.map(function (item) {
141
- return /*#__PURE__*/jsx("button", {
142
- className: "border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none",
143
- "data-testid": joinHyphenCase("dynamic-variables-list-item", item.label),
144
- onClick: function onClick() {
145
- return onVariableClick(item);
146
- },
147
- children: item.label
148
- }, item.label);
143
+ var _item$label;
144
+ return /*#__PURE__*/jsxs("div", {
145
+ className: "group relative max-w-full",
146
+ children: [/*#__PURE__*/jsx(DropdownMenu.MenuItem, {
147
+ className: "border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary max-w-full cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none [&>span]:[overflow-wrap:anywhere] [&>span]:whitespace-normal",
148
+ "data-testid": joinHyphenCase("dynamic-variables-list-item", item.label),
149
+ onClick: function onClick() {
150
+ return onVariableClick(item);
151
+ },
152
+ children: _truncate(item.label, MAX_LABEL_LENGTH)
153
+ }), ((_item$label = item.label) === null || _item$label === void 0 ? void 0 : _item$label.length) > MAX_LABEL_LENGTH && /*#__PURE__*/jsx("span", {
154
+ className: "bg-popover text-popover-foreground border-border pointer-events-none absolute end-0 bottom-full z-50 mb-1 hidden w-80 rounded-md border p-2 text-xs shadow-md group-focus-within:block group-hover:block",
155
+ children: item.label
156
+ })]
157
+ }, item.key);
149
158
  })
150
159
  })]
151
160
  }, label);
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicVariables.js","sources":["../../node_modules/lucide-react/dist/esm/icons/braces.mjs","../../src/v2/components/DynamicVariables/utils.js","../../src/v2/components/DynamicVariables/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.24.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\", key: \"ezmyqa\" }\n ],\n [\n \"path\",\n {\n d: \"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\",\n key: \"e1hn23\"\n }\n ]\n];\nconst Braces = createLucideIcon(\"braces\", __iconNode);\n\nexport { __iconNode, Braces as default };\n//# sourceMappingURL=braces.mjs.map\n","import { findBy } from \"neetocist\";\nimport { prop, isEmpty, uniqBy, mergeLeft } from \"ramda\";\n\nexport const parseVariables = (variableArr = []) => {\n const uncategorized = [];\n const groupedVariables = [];\n const categorySet = new Set();\n\n variableArr.forEach(variable => {\n const { category, label, variables } = variable;\n if (category && variables) {\n const parsedVariables = variables.map(\n mergeLeft({ category, categoryLabel: label })\n );\n\n if (!categorySet.has(category)) {\n categorySet.add(category);\n groupedVariables.push({ label, variables: parsedVariables });\n } else {\n const existingGroup = findBy({ label }, groupedVariables);\n\n existingGroup.variables = uniqBy(\n prop(\"key\"),\n existingGroup.variables.concat(parsedVariables)\n );\n }\n } else {\n uncategorized.push(variable);\n }\n });\n\n if (!isEmpty(uncategorized)) {\n groupedVariables.push({\n label: !isEmpty(groupedVariables) ? \"Others\" : null,\n variables: uncategorized,\n });\n }\n\n return groupedVariables;\n};\n","import { Button, cn, DropdownMenu, Typography } from \"@bigbinary/neeto-atoms\";\nimport { Braces } from \"lucide-react\";\nimport { noop } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/v2/utils/general\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\n\nimport { parseVariables } from \"./utils\";\n\nconst DynamicVariables = ({\n onVariableClick = noop,\n variables = [],\n buttonProps,\n ...dropdownProps\n}) => {\n if (isEmpty(variables)) return null;\n\n const parsedVariables = parseVariables(variables);\n\n return (\n // End-aligned with collision padding: the trigger usually sits at the\n // content's right edge (e.g. the editor's variables button), so a\n // start-aligned panel would hang past the viewport and get clipped.\n <DropdownMenu\n position=\"bottom-end\"\n customTarget={\n // The inline-flex wrapper keeps the popper anchor button-sized;\n // otherwise the trigger element can stretch with its container and\n // end-align the panel far past the visible button.\n <div className=\"inline-flex\">\n <Button\n data-testid=\"dynamic-variables-button\"\n icon={Braces}\n size=\"icon\"\n variant=\"outline\"\n {...buttonProps}\n />\n </div>\n }\n {...dropdownProps}\n dropdownProps={{\n collisionPadding: 8,\n ...dropdownProps?.dropdownProps,\n // w-max frees the popup from the content wrapper's default\n // trigger-width lock (which clips the chip grid via its\n // overflow-x-hidden). Merge it last so a consumer's className\n // (e.g. SubjectField's overflow-y-auto) augments rather than\n // clobbers the width.\n className: cn(\"w-max\", dropdownProps?.dropdownProps?.className),\n }}\n >\n {/* Groups own their label-to-chips gap; the outer column spaces the\n groups themselves (the editor's old h6-based margin rule no longer\n matches now that the label is a caption span). */}\n <div\n className=\"flex max-w-[22.5rem] min-w-64 flex-col gap-3 p-3\"\n data-testid=\"dynamic-variables-list\"\n >\n {parsedVariables.map(({ label, variables }) => (\n <div className=\"flex flex-col gap-1.5\" key={label}>\n {label && (\n <div className=\"flex flex-row items-center gap-x-2\">\n {/* Group label, not a heading: caption keeps the v1 12px;\n medium weight so the uppercase run still reads muted. */}\n <Typography\n className=\"uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"medium\"\n >\n {label}\n </Typography>\n <hr className=\"border-border flex flex-grow\" />\n </div>\n )}\n <div\n className=\"flex flex-wrap items-center gap-2\"\n data-testid={joinHyphenCase(\"dynamic-variables-list\", label)}\n >\n {variables.map(item => (\n <button\n className=\"border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none\"\n key={item.label}\n data-testid={joinHyphenCase(\n \"dynamic-variables-list-item\",\n item.label\n )}\n onClick={() => onVariableClick(item)}\n >\n {item.label}\n </button>\n ))}\n </div>\n </div>\n ))}\n </div>\n </DropdownMenu>\n );\n};\n\nDynamicVariables.propTypes = {\n onVariableClick: PropTypes.func,\n variables: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, key: PropTypes.string })\n ),\n};\n\nexport default DynamicVariables;\n"],"names":["parseVariables","variableArr","arguments","length","undefined","uncategorized","groupedVariables","categorySet","Set","forEach","variable","category","label","variables","parsedVariables","map","mergeLeft","categoryLabel","has","add","push","existingGroup","findBy","uniqBy","prop","concat","isEmpty","DynamicVariables","_ref","_dropdownProps$dropdo","_ref$onVariableClick","onVariableClick","noop","_ref$variables","buttonProps","dropdownProps","_objectWithoutProperties","_excluded","_jsx","DropdownMenu","_objectSpread","position","customTarget","className","children","Button","icon","Braces","size","variant","collisionPadding","cn","_ref2","_jsxs","Typography","color","weight","joinHyphenCase","item","onClick"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"DynamicVariables.js","sources":["../../node_modules/lucide-react/dist/esm/icons/braces.mjs","../../src/v2/components/DynamicVariables/constants.js","../../src/v2/components/DynamicVariables/utils.js","../../src/v2/components/DynamicVariables/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.24.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\", key: \"ezmyqa\" }\n ],\n [\n \"path\",\n {\n d: \"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\",\n key: \"e1hn23\"\n }\n ]\n];\nconst Braces = createLucideIcon(\"braces\", __iconNode);\n\nexport { __iconNode, Braces as default };\n//# sourceMappingURL=braces.mjs.map\n","export const MAX_LABEL_LENGTH = 100;\n","import { findBy } from \"neetocist\";\nimport { prop, isEmpty, uniqBy, mergeLeft } from \"ramda\";\n\nexport const parseVariables = (variableArr = []) => {\n const uncategorized = [];\n const groupedVariables = [];\n const categorySet = new Set();\n\n variableArr.forEach(variable => {\n const { category, label, variables } = variable;\n if (category && variables) {\n const parsedVariables = variables.map(\n mergeLeft({ category, categoryLabel: label })\n );\n\n if (!categorySet.has(category)) {\n categorySet.add(category);\n groupedVariables.push({ label, variables: parsedVariables });\n } else {\n const existingGroup = findBy({ label }, groupedVariables);\n\n existingGroup.variables = uniqBy(\n prop(\"key\"),\n existingGroup.variables.concat(parsedVariables)\n );\n }\n } else {\n uncategorized.push(variable);\n }\n });\n\n if (!isEmpty(uncategorized)) {\n groupedVariables.push({\n label: !isEmpty(groupedVariables) ? \"Others\" : null,\n variables: uncategorized,\n });\n }\n\n return groupedVariables;\n};\n","import { Button, cn, DropdownMenu, Typography } from \"@bigbinary/neeto-atoms\";\nimport { Braces } from \"lucide-react\";\nimport { noop, _truncate } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/v2/utils/general\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\n\nimport { MAX_LABEL_LENGTH } from \"./constants\";\nimport { parseVariables } from \"./utils\";\n\nconst DynamicVariables = ({\n onVariableClick = noop,\n variables = [],\n buttonProps,\n ...dropdownProps\n}) => {\n if (isEmpty(variables)) return null;\n\n const parsedVariables = parseVariables(variables);\n\n return (\n // End-aligned with collision padding: the trigger usually sits at the\n // content's right edge (e.g. the editor's variables button), so a\n // start-aligned panel would hang past the viewport and get clipped.\n <DropdownMenu\n position=\"bottom-end\"\n customTarget={\n // The inline-flex wrapper keeps the popper anchor button-sized;\n // otherwise the trigger element can stretch with its container and\n // end-align the panel far past the visible button.\n <div className=\"inline-flex\">\n <Button\n data-testid=\"dynamic-variables-button\"\n icon={Braces}\n size=\"icon\"\n variant=\"outline\"\n {...buttonProps}\n />\n </div>\n }\n {...dropdownProps}\n dropdownProps={{\n collisionPadding: 8,\n ...dropdownProps?.dropdownProps,\n // w-max frees the popup from the content wrapper's default\n // trigger-width lock (which clips the chip grid via its\n // overflow-x-hidden). Merge it last so a consumer's className\n // (e.g. SubjectField's overflow-y-auto) augments rather than\n // clobbers the width.\n className: cn(\"w-max\", dropdownProps?.dropdownProps?.className),\n }}\n >\n {/* Groups own their label-to-chips gap; the outer column spaces the\n groups themselves (the editor's old h6-based margin rule no longer\n matches now that the label is a caption span). */}\n <div\n className=\"flex max-w-[22.5rem] min-w-64 flex-col gap-3 p-3\"\n data-testid=\"dynamic-variables-list\"\n >\n {parsedVariables.map(({ label, variables }) => (\n <div className=\"flex flex-col gap-1.5\" key={label}>\n {label && (\n <div className=\"flex flex-row items-center gap-x-2\">\n {/* Group label, not a heading: caption keeps the v1 12px;\n medium weight so the uppercase run still reads muted. */}\n <Typography\n className=\"uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"medium\"\n >\n {label}\n </Typography>\n <hr className=\"border-border flex flex-grow\" />\n </div>\n )}\n <div\n className=\"flex flex-wrap items-center gap-2\"\n data-testid={joinHyphenCase(\"dynamic-variables-list\", label)}\n >\n {variables.map(item => (\n <div className=\"group relative max-w-full\" key={item.key}>\n <DropdownMenu.MenuItem\n className=\"border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary max-w-full cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none [&>span]:[overflow-wrap:anywhere] [&>span]:whitespace-normal\"\n data-testid={joinHyphenCase(\n \"dynamic-variables-list-item\",\n item.label\n )}\n onClick={() => onVariableClick(item)}\n >\n {_truncate(item.label, MAX_LABEL_LENGTH)}\n </DropdownMenu.MenuItem>\n {item.label?.length > MAX_LABEL_LENGTH && (\n <span className=\"bg-popover text-popover-foreground border-border pointer-events-none absolute end-0 bottom-full z-50 mb-1 hidden w-80 rounded-md border p-2 text-xs shadow-md group-focus-within:block group-hover:block\">\n {item.label}\n </span>\n )}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </DropdownMenu>\n );\n};\n\nDynamicVariables.propTypes = {\n onVariableClick: PropTypes.func,\n variables: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, key: PropTypes.string })\n ),\n};\n\nexport default DynamicVariables;\n"],"names":["MAX_LABEL_LENGTH","parseVariables","variableArr","arguments","length","undefined","uncategorized","groupedVariables","categorySet","Set","forEach","variable","category","label","variables","parsedVariables","map","mergeLeft","categoryLabel","has","add","push","existingGroup","findBy","uniqBy","prop","concat","isEmpty","DynamicVariables","_ref","_dropdownProps$dropdo","_ref$onVariableClick","onVariableClick","noop","_ref$variables","buttonProps","dropdownProps","_objectWithoutProperties","_excluded","_jsx","DropdownMenu","_objectSpread","position","customTarget","className","children","Button","icon","Braces","size","variant","collisionPadding","cn","_ref2","_jsxs","Typography","color","weight","joinHyphenCase","item","_item$label","MenuItem","onClick","_truncate","key"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,10 +1,10 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
- import { createContext, useState, useContext, createElement } from 'react';
2
+ import { createContext, useEffect, useState, useContext, createElement } from 'react';
3
3
  import { Input as Input$1, Button, Tooltip } from '@bigbinary/neeto-atoms';
4
4
  import { Select, Input, RadioGroup, ActionBlock, BlockNavigation, Switch, Form } from '@bigbinary/neeto-atoms/formik';
5
5
  import classnames from 'classnames';
6
- import { useFormikContext, Field } from 'formik';
7
- import { isPresent, isNotEmpty, notEqualsDeep, noop } from '@bigbinary/neeto-cist';
6
+ import { useFormikContext, useField, Field } from 'formik';
7
+ import { isPresent, isNotEmpty, findBy, notEqualsDeep, noop } from '@bigbinary/neeto-cist';
8
8
  import FormikEditor from '@bigbinary/neeto-editor/v2/FormikEditor';
9
9
  import { prop, equals, pluck, isEmpty } from 'ramda';
10
10
  import { useTranslation } from 'react-i18next';
@@ -15,6 +15,8 @@ import _typeof from '@babel/runtime/helpers/typeof';
15
15
  import { jsx, jsxs } from 'react/jsx-runtime';
16
16
  import SendToFields from './SendToFields.js';
17
17
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
18
+ import { FieldSet, FieldLegend } from '@bigbinary/neeto-atoms/primitives';
19
+ import { M as Mail } from '../mail-CkquKByM.js';
18
20
  import { withEventTargetValue } from '@bigbinary/neeto-commons-frontend/v2/utils/general';
19
21
  import DynamicVariables from './DynamicVariables.js';
20
22
  import Header from './Header.js';
@@ -31,7 +33,6 @@ import '../_commonjsHelpers-BFTU3MAI.js';
31
33
  import 'stream';
32
34
  import '@babel/runtime/helpers/objectWithoutProperties';
33
35
  import './Breadcrumbs.js';
34
- import '@bigbinary/neeto-atoms/primitives';
35
36
  import 'react-router-dom';
36
37
  import './HelpPopover.js';
37
38
  import '../circle-question-mark-B807GLZf.js';
@@ -97,22 +98,24 @@ var EDITOR_ADDONS = ["highlight", "emoji", "code-block", "block-quote", "image-u
97
98
  var EmailFormContext = /*#__PURE__*/createContext({
98
99
  showSendToField: false,
99
100
  showSendToAsRadio: false,
101
+ showSendToAsSelect: false,
100
102
  showReplyToField: false,
101
103
  showCcField: false,
102
104
  showBccField: false
103
105
  });
104
106
 
105
- function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
106
- function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
107
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
108
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
107
109
  var getValidationSchema = function getValidationSchema(_ref) {
108
110
  var showSendToField = _ref.showSendToField,
109
111
  showReplyToField = _ref.showReplyToField,
110
112
  showSendToAsRadio = _ref.showSendToAsRadio,
113
+ showSendToAsSelect = _ref.showSendToAsSelect,
111
114
  customValidations = _ref.customValidations,
112
115
  maxEmails = _ref.maxEmails;
113
116
  var schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();
114
117
  if (showSendToField) {
115
- schema = schema.concat(showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : sendToFieldValidation(maxEmails));
118
+ schema = schema.concat(showSendToAsRadio || showSendToAsSelect ? SEND_TO_ID_FIELD_VALIDATION : sendToFieldValidation(maxEmails));
116
119
  }
117
120
  if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);
118
121
  var isYupObject = customValidations.type === "object";
@@ -127,10 +130,10 @@ var getValidationSchema = function getValidationSchema(_ref) {
127
130
  var getReplyToFieldLabelProps = function getReplyToFieldLabelProps(_ref2) {
128
131
  var popoverProps = _ref2.popoverProps;
129
132
  return {
130
- helpIconProps: _objectSpread$3({
133
+ helpIconProps: _objectSpread$4({
131
134
  className: "reply-to-help-icon"
132
135
  }, isPresent(popoverProps) ? {
133
- popoverProps: _objectSpread$3(_objectSpread$3({}, popoverProps), {}, {
136
+ popoverProps: _objectSpread$4(_objectSpread$4({}, popoverProps), {}, {
134
137
  description: popoverProps.description || t("neetoMolecules.emailForm.tooltips.replyTo")
135
138
  })
136
139
  } : {
@@ -228,6 +231,77 @@ var SendToField = function SendToField(_ref) {
228
231
  });
229
232
  };
230
233
 
234
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
235
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
236
+ var renderOptionLabel = function renderOptionLabel(_ref) {
237
+ var label = _ref.label;
238
+ return /*#__PURE__*/jsxs("span", {
239
+ className: "flex min-w-0 items-center gap-2",
240
+ children: [/*#__PURE__*/jsx(Mail, {
241
+ "aria-hidden": true,
242
+ className: "text-muted-foreground size-4 shrink-0"
243
+ }), /*#__PURE__*/jsx("span", {
244
+ className: "truncate",
245
+ title: label,
246
+ children: label
247
+ })]
248
+ });
249
+ };
250
+ var SendToQuestionField = function SendToQuestionField(_ref2) {
251
+ var options = _ref2.options;
252
+ var _useTranslation = useTranslation(),
253
+ t = _useTranslation.t;
254
+ var _useField = useField("sendToId"),
255
+ _useField2 = _slicedToArray(_useField, 3),
256
+ field = _useField2[0],
257
+ meta = _useField2[1],
258
+ setValue = _useField2[2].setValue;
259
+ var singleOptionValue = options.length === 1 ? options[0].value : undefined;
260
+ var selectedOption = findBy({
261
+ value: field.value
262
+ }, options);
263
+ useEffect(function () {
264
+ if (singleOptionValue !== undefined && field.value !== singleOptionValue) {
265
+ setValue(singleOptionValue);
266
+ }
267
+ }, [field.value, setValue, singleOptionValue]);
268
+ var fieldProps = {
269
+ required: true,
270
+ label: t("neetoMolecules.emailForm.labels.getEmailAddressFrom"),
271
+ labelProps: {
272
+ className: "text-muted-foreground font-normal [&>.text-destructive]:hidden"
273
+ },
274
+ className: "grid items-center gap-3 sm:grid-cols-[auto_minmax(0,1fr)]",
275
+ size: "large"
276
+ };
277
+ return /*#__PURE__*/jsxs(FieldSet, {
278
+ className: "w-full gap-3 p-0",
279
+ "data-testid": "send-to-id",
280
+ children: [/*#__PURE__*/jsxs(FieldLegend, {
281
+ className: "flex items-center gap-2",
282
+ variant: "label",
283
+ children: [t("neetoMolecules.emailForm.labels.sendTo"), /*#__PURE__*/jsx("span", {
284
+ "aria-hidden": true,
285
+ className: "text-destructive",
286
+ children: "*"
287
+ })]
288
+ }), options.length === 1 ? /*#__PURE__*/jsx(Input$1, _objectSpread$3(_objectSpread$3({}, fieldProps), {}, {
289
+ readOnly: true,
290
+ error: meta.touched ? meta.error : undefined,
291
+ prefix: /*#__PURE__*/jsx(Mail, {
292
+ "aria-hidden": true
293
+ }),
294
+ value: (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || ""
295
+ })) : /*#__PURE__*/jsx(Select, _objectSpread$3(_objectSpread$3({}, _objectSpread$3(_objectSpread$3({}, fieldProps), {}, {
296
+ options: options
297
+ })), {}, {
298
+ formatOptionLabel: renderOptionLabel,
299
+ isSearchable: false,
300
+ name: "sendToId"
301
+ }))]
302
+ });
303
+ };
304
+
231
305
  var SubjectField = function SubjectField(_ref) {
232
306
  var name = _ref.name,
233
307
  text = _ref.text,
@@ -317,6 +391,7 @@ var EmailForm = function EmailForm(_ref) {
317
391
  var _useContext = useContext(EmailFormContext),
318
392
  showSendToField = _useContext.showSendToField,
319
393
  showSendToAsRadio = _useContext.showSendToAsRadio,
394
+ showSendToAsSelect = _useContext.showSendToAsSelect,
320
395
  showReplyToField = _useContext.showReplyToField,
321
396
  showCcField = _useContext.showCcField,
322
397
  showBccField = _useContext.showBccField;
@@ -332,8 +407,9 @@ var EmailForm = function EmailForm(_ref) {
332
407
  });
333
408
  var disabled = equals(normalizedValues, normalizedDefaultValues);
334
409
  var sendToFieldOptions = (sendToFieldProps === null || sendToFieldProps === void 0 ? void 0 : sendToFieldProps.options) || sendToOptions;
335
- var showSendToRadioField = showSendToField && showSendToAsRadio && isNotEmpty(sendToFieldOptions);
336
- var showSendToTextField = showSendToField && !showSendToRadioField;
410
+ var showSendToSelectField = showSendToField && showSendToAsSelect;
411
+ var showSendToRadioField = showSendToField && showSendToAsRadio && !showSendToSelectField && isNotEmpty(sendToFieldOptions);
412
+ var showSendToTextField = showSendToField && !showSendToSelectField && !showSendToRadioField;
337
413
  return /*#__PURE__*/jsxs("div", {
338
414
  "data-testid": "email-form",
339
415
  className: classnames("flex flex-1 flex-col items-start gap-2 !pb-0", _defineProperty({}, className, className)),
@@ -341,7 +417,9 @@ var EmailForm = function EmailForm(_ref) {
341
417
  className: "w-full grow",
342
418
  children: showFields && /*#__PURE__*/jsxs("div", {
343
419
  className: "flex w-full flex-col items-start justify-start gap-5",
344
- children: [showSendToRadioField && /*#__PURE__*/jsx(RadioGroup, {
420
+ children: [showSendToSelectField && /*#__PURE__*/jsx(SendToQuestionField, {
421
+ options: sendToFieldOptions
422
+ }), showSendToRadioField && /*#__PURE__*/jsx(RadioGroup, {
345
423
  className: "pb-2",
346
424
  "data-testid": "send-to-id",
347
425
  label: t("neetoMolecules.emailForm.labels.sendTo"),
@@ -451,8 +529,12 @@ var EmailFormComponent = function EmailFormComponent(_ref) {
451
529
  showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
452
530
  _ref$showSendToAsRadi = _ref.showSendToAsRadio,
453
531
  showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
532
+ _ref$showSendToAsSele = _ref.showSendToAsSelect,
533
+ showSendToAsSelect = _ref$showSendToAsSele === void 0 ? false : _ref$showSendToAsSele,
454
534
  _ref$blockNavigation = _ref.blockNavigation,
455
535
  blockNavigation = _ref$blockNavigation === void 0 ? true : _ref$blockNavigation,
536
+ _ref$blockNavigationP = _ref.blockNavigationProps,
537
+ blockNavigationProps = _ref$blockNavigationP === void 0 ? {} : _ref$blockNavigationP,
456
538
  _ref$showCcField = _ref.showCcField,
457
539
  showCcField = _ref$showCcField === void 0 ? false : _ref$showCcField,
458
540
  _ref$showBccField = _ref.showBccField,
@@ -489,6 +571,7 @@ var EmailFormComponent = function EmailFormComponent(_ref) {
489
571
  showCcField: showCcField,
490
572
  showReplyToField: showReplyToField,
491
573
  showSendToAsRadio: showSendToAsRadio,
574
+ showSendToAsSelect: showSendToAsSelect,
492
575
  showSendToField: showSendToField,
493
576
  validationSchema: validationSchema,
494
577
  children: function children(_ref2) {
@@ -499,7 +582,7 @@ var EmailFormComponent = function EmailFormComponent(_ref) {
499
582
  className: "flex h-[calc(100dvh-64px)] flex-grow flex-col overflow-y-auto lg:flex-row",
500
583
  children: [/*#__PURE__*/jsxs("div", {
501
584
  className: "flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto",
502
- children: [blockNavigation && /*#__PURE__*/jsx(BlockNavigation, {}), isNotEmpty(headerProps) && /*#__PURE__*/jsx(Header, _objectSpread$1({
585
+ children: [blockNavigation && /*#__PURE__*/jsx(BlockNavigation, _objectSpread$1({}, blockNavigationProps)), isNotEmpty(headerProps) && /*#__PURE__*/jsx(Header, _objectSpread$1({
503
586
  className: "px-0",
504
587
  size: "small"
505
588
  }, headerProps)), isNotEmpty(switchProps) && /*#__PURE__*/jsx("div", {
@@ -554,6 +637,8 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
554
637
  showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
555
638
  _ref$showSendToAsRadi = _ref.showSendToAsRadio,
556
639
  showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
640
+ _ref$showSendToAsSele = _ref.showSendToAsSelect,
641
+ showSendToAsSelect = _ref$showSendToAsSele === void 0 ? false : _ref$showSendToAsSele,
557
642
  _ref$showCcField = _ref.showCcField,
558
643
  showCcField = _ref$showCcField === void 0 ? false : _ref$showCcField,
559
644
  _ref$showBccField = _ref.showBccField,
@@ -566,6 +651,7 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
566
651
  value: {
567
652
  showSendToField: showSendToField,
568
653
  showSendToAsRadio: showSendToAsRadio,
654
+ showSendToAsSelect: showSendToAsSelect,
569
655
  showReplyToField: showReplyToField,
570
656
  showCcField: showCcField,
571
657
  showBccField: showBccField
@@ -577,6 +663,7 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
577
663
  showSendToField: showSendToField,
578
664
  showReplyToField: showReplyToField,
579
665
  showSendToAsRadio: showSendToAsRadio,
666
+ showSendToAsSelect: showSendToAsSelect,
580
667
  customValidations: customValidations,
581
668
  maxEmails: maxEmails
582
669
  }),