@wix/patterns 1.436.0 → 1.438.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 (545) hide show
  1. package/dist/cjs/components/BulkActionToolbar/BulkActionToolbar.js +14 -12
  2. package/dist/cjs/components/BulkActionToolbar/BulkActionToolbar.js.map +1 -1
  3. package/dist/cjs/components/CardContainer/CardContainer.st.css.js +2 -2
  4. package/dist/cjs/components/CardContainer/CardContainer.st.css.js.map +1 -1
  5. package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js +3 -3
  6. package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js.map +1 -1
  7. package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js +3 -3
  8. package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
  9. package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +3 -3
  10. package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js.map +1 -1
  11. package/dist/cjs/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js +3 -3
  12. package/dist/cjs/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js.map +1 -1
  13. package/dist/cjs/components/Collapse/Collapse.st.css.js +3 -3
  14. package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
  15. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  16. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  17. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
  18. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  19. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
  20. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  21. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.js +11 -9
  22. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.js.map +1 -1
  23. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  24. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
  25. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.js +4 -3
  26. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.js.map +1 -1
  27. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css +2 -1
  28. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
  29. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  30. package/dist/cjs/components/CollectionToolbar/ReorderModeToolbar.js +16 -14
  31. package/dist/cjs/components/CollectionToolbar/ReorderModeToolbar.js.map +1 -1
  32. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
  33. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  34. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  35. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  36. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  37. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
  38. package/dist/cjs/components/CustomFieldModal/CustomFieldForm.js +124 -424
  39. package/dist/cjs/components/CustomFieldModal/CustomFieldForm.js.map +1 -1
  40. package/dist/cjs/components/CustomFieldModal/{CustomFieldFormV2Permissions.js → CustomFieldFormPermissions.js} +6 -6
  41. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPermissions.js.map +1 -0
  42. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.js +72 -32
  43. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.js.map +1 -1
  44. package/dist/cjs/components/CustomFieldModal/CustomFieldModal.js +13 -82
  45. package/dist/cjs/components/CustomFieldModal/CustomFieldModal.js.map +1 -1
  46. package/dist/cjs/components/CustomFieldModal/CustomFieldModal.uni.driver.js +0 -9
  47. package/dist/cjs/components/CustomFieldModal/CustomFieldModal.uni.driver.js.map +1 -1
  48. package/dist/cjs/components/CustomFieldModal/CustomFieldTypeDropdown.js +77 -19
  49. package/dist/cjs/components/CustomFieldModal/CustomFieldTypeDropdown.js.map +1 -1
  50. package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
  51. package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
  52. package/dist/cjs/components/EditableTable/EditableCell.st.css.js +3 -3
  53. package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
  54. package/dist/cjs/components/EditableTable/EditableTableContextMenu.js +12 -11
  55. package/dist/cjs/components/EditableTable/EditableTableContextMenu.js.map +1 -1
  56. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  57. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  58. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  59. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  60. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
  61. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  62. package/dist/cjs/components/EditableTable/cellTypes/array/Edit.st.css.js +3 -3
  63. package/dist/cjs/components/EditableTable/cellTypes/array/Edit.st.css.js.map +1 -1
  64. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
  65. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  66. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
  67. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  68. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  69. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  70. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
  71. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  72. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  73. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  74. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +8 -8
  75. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  76. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +7 -7
  77. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
  78. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
  79. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  80. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  81. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  82. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  83. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  84. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  85. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  86. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js +3 -3
  87. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -1
  88. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  89. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  90. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  91. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  92. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  93. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  94. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  95. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  96. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
  97. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  98. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  99. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  100. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  101. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  102. package/dist/cjs/components/EditableTable/useAddRow.js +16 -22
  103. package/dist/cjs/components/EditableTable/useAddRow.js.map +1 -1
  104. package/dist/cjs/components/EmptyState/CollectionNoResultsState.js +14 -12
  105. package/dist/cjs/components/EmptyState/CollectionNoResultsState.js.map +1 -1
  106. package/dist/cjs/components/EmptyState/EmptyStateBase.js +7 -4
  107. package/dist/cjs/components/EmptyState/EmptyStateBase.js.map +1 -1
  108. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css +8 -0
  109. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +22 -0
  110. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -0
  111. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  112. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  113. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  114. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  115. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  116. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  117. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  118. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  119. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  120. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  121. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  122. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  123. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  124. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  125. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  126. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  127. package/dist/cjs/components/MoreActions/MoreActionsText.js +1 -2
  128. package/dist/cjs/components/MoreActions/MoreActionsText.js.map +1 -1
  129. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.js +2 -2
  130. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.js.map +1 -1
  131. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  132. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  133. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  134. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  135. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  136. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  137. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  138. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  139. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  140. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  141. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  142. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  143. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  144. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  145. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  146. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  147. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  148. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  149. package/dist/cjs/components/SetupWidget/SetupStepRow.js +49 -35
  150. package/dist/cjs/components/SetupWidget/SetupStepRow.js.map +1 -1
  151. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +9 -9
  152. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  153. package/dist/cjs/components/SetupWidget/SetupWidget.uni.driver.js +6 -1
  154. package/dist/cjs/components/SetupWidget/SetupWidget.uni.driver.js.map +1 -1
  155. package/dist/cjs/components/SidePanelModal/SidePanelModal.js +13 -8
  156. package/dist/cjs/components/SidePanelModal/SidePanelModal.js.map +1 -1
  157. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  158. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  159. package/dist/cjs/components/SlidingModal/SlidingModal.js +7 -4
  160. package/dist/cjs/components/SlidingModal/SlidingModal.js.map +1 -1
  161. package/dist/cjs/components/SlidingModal/SlidingModal.st.css +9 -1
  162. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +5 -3
  163. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  164. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +4 -4
  165. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  166. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  167. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  168. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  169. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  170. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  171. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  172. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  173. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  174. package/dist/cjs/components/ToolbarTitle/ToolbarTitle.js +15 -10
  175. package/dist/cjs/components/ToolbarTitle/ToolbarTitle.js.map +1 -1
  176. package/dist/cjs/components/common.st.css.js +4 -4
  177. package/dist/cjs/components/common.st.css.js.map +1 -1
  178. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  179. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  180. package/dist/cjs/state/EditableTable/CellInteractionState.js +2 -0
  181. package/dist/cjs/state/EditableTable/CellInteractionState.js.map +1 -1
  182. package/dist/cjs/state/EditableTable/CellValueState.js +82 -13
  183. package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
  184. package/dist/cjs/state/EditableTable/EditableTableState.js +28 -4
  185. package/dist/cjs/state/EditableTable/EditableTableState.js.map +1 -1
  186. package/dist/cjs/state/EditableTable/MutationState.js +180 -10
  187. package/dist/cjs/state/EditableTable/MutationState.js.map +1 -1
  188. package/dist/cjs/state/EditableTable/utils.js +2 -0
  189. package/dist/cjs/state/EditableTable/utils.js.map +1 -1
  190. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  191. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  192. package/dist/cjs/state/buildEditableFieldColumns.js +8 -1
  193. package/dist/cjs/state/buildEditableFieldColumns.js.map +1 -1
  194. package/dist/cjs/styles.global.css +2 -2
  195. package/dist/cjs/version.js +1 -1
  196. package/dist/cjs/version.js.map +1 -1
  197. package/dist/docs/index.json +39 -39
  198. package/dist/esm/components/BulkActionToolbar/BulkActionToolbar.js +4 -2
  199. package/dist/esm/components/BulkActionToolbar/BulkActionToolbar.js.map +1 -1
  200. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  201. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  202. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  203. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  204. package/dist/esm/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js +2 -2
  205. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  206. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  207. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  208. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  209. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  210. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.js +4 -1
  211. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.js.map +1 -1
  212. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  213. package/dist/esm/components/CollectionToolbar/CollectionToolbar.js +8 -1
  214. package/dist/esm/components/CollectionToolbar/CollectionToolbar.js.map +1 -1
  215. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css +2 -1
  216. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  217. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  218. package/dist/esm/components/CollectionToolbar/ReorderModeToolbar.js +3 -1
  219. package/dist/esm/components/CollectionToolbar/ReorderModeToolbar.js.map +1 -1
  220. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  221. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  222. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  223. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  224. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  225. package/dist/esm/components/CustomFieldModal/CustomFieldForm.js +43 -72
  226. package/dist/esm/components/CustomFieldModal/CustomFieldForm.js.map +1 -1
  227. package/dist/esm/components/CustomFieldModal/{CustomFieldFormV2Permissions.js → CustomFieldFormPermissions.js} +3 -3
  228. package/dist/esm/components/CustomFieldModal/CustomFieldFormPermissions.js.map +1 -0
  229. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.js +22 -14
  230. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.js.map +1 -1
  231. package/dist/esm/components/CustomFieldModal/CustomFieldModal.js +4 -19
  232. package/dist/esm/components/CustomFieldModal/CustomFieldModal.js.map +1 -1
  233. package/dist/esm/components/CustomFieldModal/CustomFieldModal.uni.driver.js +1 -10
  234. package/dist/esm/components/CustomFieldModal/CustomFieldModal.uni.driver.js.map +1 -1
  235. package/dist/esm/components/CustomFieldModal/CustomFieldTypeDropdown.js +64 -15
  236. package/dist/esm/components/CustomFieldModal/CustomFieldTypeDropdown.js.map +1 -1
  237. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  238. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  239. package/dist/esm/components/EditableTable/EditableTableContextMenu.js +3 -2
  240. package/dist/esm/components/EditableTable/EditableTableContextMenu.js.map +1 -1
  241. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  242. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  243. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  244. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  245. package/dist/esm/components/EditableTable/cellTypes/array/Edit.st.css.js +2 -2
  246. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  247. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  248. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  249. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  250. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  251. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  252. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  253. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  254. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  255. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  256. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  257. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  258. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  259. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +2 -2
  260. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  261. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  262. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  263. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  264. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  265. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  266. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  267. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  268. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  269. package/dist/esm/components/EditableTable/useAddRow.js +15 -23
  270. package/dist/esm/components/EditableTable/useAddRow.js.map +1 -1
  271. package/dist/esm/components/EmptyState/CollectionNoResultsState.js +3 -1
  272. package/dist/esm/components/EmptyState/CollectionNoResultsState.js.map +1 -1
  273. package/dist/esm/components/EmptyState/EmptyStateBase.js +3 -2
  274. package/dist/esm/components/EmptyState/EmptyStateBase.js.map +1 -1
  275. package/dist/esm/components/EmptyState/EmptyStateBase.st.css +8 -0
  276. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +15 -0
  277. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js.map +1 -0
  278. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  279. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  280. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  281. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  282. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  283. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  284. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  285. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  286. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  287. package/dist/esm/components/MoreActions/MoreActionsText.js +1 -1
  288. package/dist/esm/components/MoreActions/MoreActionsText.js.map +1 -1
  289. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.js +2 -2
  290. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.js.map +1 -1
  291. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  292. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  293. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  294. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
  295. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  296. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  297. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  298. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  299. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  300. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  301. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  302. package/dist/esm/components/SetupWidget/SetupStepRow.js +14 -18
  303. package/dist/esm/components/SetupWidget/SetupStepRow.js.map +1 -1
  304. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  305. package/dist/esm/components/SetupWidget/SetupWidget.uni.driver.js +9 -2
  306. package/dist/esm/components/SetupWidget/SetupWidget.uni.driver.js.map +1 -1
  307. package/dist/esm/components/SidePanelModal/SidePanelModal.js +10 -7
  308. package/dist/esm/components/SidePanelModal/SidePanelModal.js.map +1 -1
  309. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  310. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  311. package/dist/esm/components/SlidingModal/SlidingModal.js +7 -4
  312. package/dist/esm/components/SlidingModal/SlidingModal.js.map +1 -1
  313. package/dist/esm/components/SlidingModal/SlidingModal.st.css +9 -1
  314. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +3 -3
  315. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  316. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  317. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  318. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  319. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  320. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  321. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  322. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  323. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  324. package/dist/esm/components/ToolbarTitle/ToolbarTitle.js +6 -1
  325. package/dist/esm/components/ToolbarTitle/ToolbarTitle.js.map +1 -1
  326. package/dist/esm/components/common.st.css.js +2 -2
  327. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  328. package/dist/esm/state/EditableTable/CellInteractionState.js +2 -0
  329. package/dist/esm/state/EditableTable/CellInteractionState.js.map +1 -1
  330. package/dist/esm/state/EditableTable/CellValueState.js +83 -12
  331. package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
  332. package/dist/esm/state/EditableTable/EditableTableState.js +28 -4
  333. package/dist/esm/state/EditableTable/EditableTableState.js.map +1 -1
  334. package/dist/esm/state/EditableTable/MutationState.js +168 -10
  335. package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
  336. package/dist/esm/state/EditableTable/utils.js +5 -0
  337. package/dist/esm/state/EditableTable/utils.js.map +1 -1
  338. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  339. package/dist/esm/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  340. package/dist/esm/state/buildEditableFieldColumns.js +7 -0
  341. package/dist/esm/state/buildEditableFieldColumns.js.map +1 -1
  342. package/dist/esm/styles.global.css +2 -2
  343. package/dist/esm/version.js +1 -1
  344. package/dist/types/components/BulkActionToolbar/BulkActionToolbar.d.ts.map +1 -1
  345. package/dist/types/components/CollectionSectionHeader/CollectionSectionHeader.st.css.d.ts.map +1 -1
  346. package/dist/types/components/CollectionTable/CollectionTableWSRTable.d.ts.map +1 -1
  347. package/dist/types/components/CollectionToolbar/CollectionToolbar.d.ts.map +1 -1
  348. package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
  349. package/dist/types/components/CollectionToolbar/ReorderModeToolbar.d.ts.map +1 -1
  350. package/dist/types/components/CollectionToolbar/SearchOrCustomFilter.st.css.d.ts.map +1 -1
  351. package/dist/types/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.d.ts.map +1 -1
  352. package/dist/types/components/CustomFieldModal/CustomFieldForm.d.ts.map +1 -1
  353. package/dist/types/components/CustomFieldModal/CustomFieldFormPermissions.d.ts +10 -0
  354. package/dist/types/components/CustomFieldModal/CustomFieldFormPermissions.d.ts.map +1 -0
  355. package/dist/types/components/CustomFieldModal/CustomFieldFormPiiFields.d.ts +4 -1
  356. package/dist/types/components/CustomFieldModal/CustomFieldFormPiiFields.d.ts.map +1 -1
  357. package/dist/types/components/CustomFieldModal/CustomFieldModal.d.ts.map +1 -1
  358. package/dist/types/components/CustomFieldModal/CustomFieldModal.uni.driver.d.ts +0 -45
  359. package/dist/types/components/CustomFieldModal/CustomFieldModal.uni.driver.d.ts.map +1 -1
  360. package/dist/types/components/CustomFieldModal/CustomFieldTypeDropdown.d.ts.map +1 -1
  361. package/dist/types/components/CustomFieldsWidget/CustomFieldsWidget.uni.driver.d.ts +1 -46
  362. package/dist/types/components/CustomFieldsWidget/CustomFieldsWidget.uni.driver.d.ts.map +1 -1
  363. package/dist/types/components/EditableTable/EditableTable.uni.driver.d.ts +0 -45
  364. package/dist/types/components/EditableTable/EditableTable.uni.driver.d.ts.map +1 -1
  365. package/dist/types/components/EditableTable/EditableTableContextMenu.d.ts.map +1 -1
  366. package/dist/types/components/EditableTable/HeaderActionsPopover.st.css.d.ts.map +1 -1
  367. package/dist/types/components/EditableTable/cellTypes/color/Edit.st.css.d.ts.map +1 -1
  368. package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -1
  369. package/dist/types/components/EditableTable/cellTypes/text/Edit.st.css.d.ts.map +1 -1
  370. package/dist/types/components/EditableTable/cellTypes/url/Edit.st.css.d.ts.map +1 -1
  371. package/dist/types/components/EditableTable/useAddRow.d.ts +1 -0
  372. package/dist/types/components/EditableTable/useAddRow.d.ts.map +1 -1
  373. package/dist/types/components/EmptyState/CollectionNoResultsState.d.ts.map +1 -1
  374. package/dist/types/components/EmptyState/EmptyStateBase.d.ts.map +1 -1
  375. package/dist/types/components/EmptyState/EmptyStateBase.st.css.d.ts +13 -0
  376. package/dist/types/components/EmptyState/EmptyStateBase.st.css.d.ts.map +1 -0
  377. package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
  378. package/dist/types/components/MoreActions/MoreActionsText.d.ts.map +1 -1
  379. package/dist/types/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.d.ts.map +1 -1
  380. package/dist/types/components/NestedTable/NestedTable.uni.driver.d.ts +0 -45
  381. package/dist/types/components/NestedTable/NestedTable.uni.driver.d.ts.map +1 -1
  382. package/dist/types/components/ScrollableContent/ScrollableContent.st.css.d.ts.map +1 -1
  383. package/dist/types/components/SetupWidget/SetupStepRow.d.ts.map +1 -1
  384. package/dist/types/components/SetupWidget/SetupWidget.uni.driver.d.ts +5 -1
  385. package/dist/types/components/SetupWidget/SetupWidget.uni.driver.d.ts.map +1 -1
  386. package/dist/types/components/SidePanelModal/SidePanelModal.d.ts.map +1 -1
  387. package/dist/types/components/SkeletonCard/SkeletonCard.st.css.d.ts.map +1 -1
  388. package/dist/types/components/SlidingModal/SlidingModal.d.ts +2 -0
  389. package/dist/types/components/SlidingModal/SlidingModal.d.ts.map +1 -1
  390. package/dist/types/components/SlidingModal/SlidingModal.st.css.d.ts +3 -1
  391. package/dist/types/components/SlidingModal/SlidingModal.st.css.d.ts.map +1 -1
  392. package/dist/types/components/Table/Table.uni.driver.d.ts +0 -45
  393. package/dist/types/components/Table/Table.uni.driver.d.ts.map +1 -1
  394. package/dist/types/components/TableFolders/TableFolders.uni.driver.d.ts +0 -45
  395. package/dist/types/components/TableFolders/TableFolders.uni.driver.d.ts.map +1 -1
  396. package/dist/types/components/TableGridSwitch/TableGridSwitch.uni.driver.d.ts +0 -45
  397. package/dist/types/components/TableGridSwitch/TableGridSwitch.uni.driver.d.ts.map +1 -1
  398. package/dist/types/components/TabsFilter/TabsFilter.st.css.d.ts.map +1 -1
  399. package/dist/types/components/ToolbarItem/ToolbarItem.st.css.d.ts.map +1 -1
  400. package/dist/types/components/ToolbarItemBox/ToolbarItemBox.st.css.d.ts.map +1 -1
  401. package/dist/types/components/ToolbarTitle/ToolbarTitle.d.ts.map +1 -1
  402. package/dist/types/state/EditableTable/CellInteractionState.d.ts.map +1 -1
  403. package/dist/types/state/EditableTable/CellValueState.d.ts +12 -0
  404. package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
  405. package/dist/types/state/EditableTable/EditableTableState.d.ts.map +1 -1
  406. package/dist/types/state/EditableTable/MutationState.d.ts +37 -1
  407. package/dist/types/state/EditableTable/MutationState.d.ts.map +1 -1
  408. package/dist/types/state/EditableTable/utils.d.ts.map +1 -1
  409. package/dist/types/state/FormPage/FormPageHeader.st.css.d.ts.map +1 -1
  410. package/dist/types/state/buildEditableFieldColumns.d.ts.map +1 -1
  411. package/dist/types/testkit/enzyme.d.ts +0 -225
  412. package/dist/types/testkit/enzyme.d.ts.map +1 -1
  413. package/dist/types/testkit/jsdom.d.ts +2 -315
  414. package/dist/types/testkit/jsdom.d.ts.map +1 -1
  415. package/dist/types/testkit/playwright.d.ts +0 -270
  416. package/dist/types/testkit/playwright.d.ts.map +1 -1
  417. package/dist/types/testkit/puppeteer.d.ts +0 -270
  418. package/dist/types/testkit/puppeteer.d.ts.map +1 -1
  419. package/dist/types/version.d.ts +1 -1
  420. package/package.json +6 -6
  421. package/src/components/BulkActionToolbar/BulkActionToolbar.tsx +4 -2
  422. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  423. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  424. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  425. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  426. package/src/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.ts +2 -2
  427. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  428. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  429. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  430. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  431. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  432. package/src/components/CollectionTable/CollectionTableWSRTable.tsx +3 -0
  433. package/src/components/CollectionToolbar/CollectionToolbar.st.css +2 -1
  434. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  435. package/src/components/CollectionToolbar/CollectionToolbar.tsx +9 -2
  436. package/src/components/CollectionToolbar/ReorderModeToolbar.tsx +6 -1
  437. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  438. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  439. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  440. package/src/components/CustomFieldModal/CustomFieldForm.tsx +98 -244
  441. package/src/components/CustomFieldModal/{CustomFieldFormV2Permissions.tsx → CustomFieldFormPermissions.tsx} +4 -6
  442. package/src/components/CustomFieldModal/CustomFieldFormPiiFields.tsx +75 -39
  443. package/src/components/CustomFieldModal/CustomFieldModal.tsx +5 -69
  444. package/src/components/CustomFieldModal/CustomFieldModal.uni.driver.ts +0 -19
  445. package/src/components/CustomFieldModal/CustomFieldTypeDropdown.tsx +94 -25
  446. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  447. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  448. package/src/components/EditableTable/EditableTableContextMenu.tsx +3 -2
  449. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  450. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  451. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  452. package/src/components/EditableTable/cellTypes/array/Edit.st.css.ts +2 -2
  453. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  454. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  455. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  456. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  457. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  458. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  459. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  460. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  461. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  462. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  463. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  464. package/src/components/EditableTable/cellTypes/object/Edit.st.css.ts +2 -2
  465. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  466. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  467. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  468. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  469. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  470. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  471. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  472. package/src/components/EditableTable/useAddRow.ts +18 -24
  473. package/src/components/EmptyState/CollectionNoResultsState.tsx +8 -2
  474. package/src/components/EmptyState/EmptyStateBase.st.css +8 -0
  475. package/src/components/EmptyState/EmptyStateBase.st.css.ts +25 -0
  476. package/src/components/EmptyState/EmptyStateBase.tsx +12 -1
  477. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  478. package/src/components/Fade/Fade.st.css.ts +2 -2
  479. package/src/components/Heading/Heading.st.css.ts +2 -2
  480. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  481. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  482. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  483. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  484. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  485. package/src/components/MoreActions/MoreActionsText.tsx +0 -1
  486. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  487. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.tsx +2 -2
  488. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  489. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  490. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  491. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  492. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  493. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  494. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  495. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  496. package/src/components/SetupWidget/SetupStepRow.tsx +44 -45
  497. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  498. package/src/components/SetupWidget/SetupWidget.uni.driver.ts +12 -1
  499. package/src/components/SidePanelModal/SidePanelModal.tsx +12 -6
  500. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  501. package/src/components/SlidingModal/SlidingModal.st.css +9 -1
  502. package/src/components/SlidingModal/SlidingModal.st.css.ts +3 -3
  503. package/src/components/SlidingModal/SlidingModal.tsx +9 -2
  504. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  505. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  506. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  507. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  508. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  509. package/src/components/ToolbarTitle/ToolbarTitle.tsx +11 -1
  510. package/src/components/common.st.css.ts +2 -2
  511. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  512. package/src/state/EditableTable/CellInteractionState.ts +2 -0
  513. package/src/state/EditableTable/CellValueState.ts +97 -12
  514. package/src/state/EditableTable/EditableTableState.ts +48 -7
  515. package/src/state/EditableTable/MutationState.ts +194 -13
  516. package/src/state/EditableTable/utils.ts +7 -0
  517. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  518. package/src/state/buildEditableFieldColumns.ts +7 -0
  519. package/src/styles.global.css +2 -2
  520. package/src/version.ts +1 -1
  521. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFieldsV2.js +0 -172
  522. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFieldsV2.js.map +0 -1
  523. package/dist/cjs/components/CustomFieldModal/CustomFieldFormV2.js +0 -341
  524. package/dist/cjs/components/CustomFieldModal/CustomFieldFormV2.js.map +0 -1
  525. package/dist/cjs/components/CustomFieldModal/CustomFieldFormV2Permissions.js.map +0 -1
  526. package/dist/cjs/components/CustomFieldModal/CustomFieldTypeDropdownV2.js +0 -135
  527. package/dist/cjs/components/CustomFieldModal/CustomFieldTypeDropdownV2.js.map +0 -1
  528. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFieldsV2.js +0 -32
  529. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFieldsV2.js.map +0 -1
  530. package/dist/esm/components/CustomFieldModal/CustomFieldFormV2.js +0 -78
  531. package/dist/esm/components/CustomFieldModal/CustomFieldFormV2.js.map +0 -1
  532. package/dist/esm/components/CustomFieldModal/CustomFieldFormV2Permissions.js.map +0 -1
  533. package/dist/esm/components/CustomFieldModal/CustomFieldTypeDropdownV2.js +0 -74
  534. package/dist/esm/components/CustomFieldModal/CustomFieldTypeDropdownV2.js.map +0 -1
  535. package/dist/types/components/CustomFieldModal/CustomFieldFormPiiFieldsV2.d.ts +0 -15
  536. package/dist/types/components/CustomFieldModal/CustomFieldFormPiiFieldsV2.d.ts.map +0 -1
  537. package/dist/types/components/CustomFieldModal/CustomFieldFormV2.d.ts +0 -10
  538. package/dist/types/components/CustomFieldModal/CustomFieldFormV2.d.ts.map +0 -1
  539. package/dist/types/components/CustomFieldModal/CustomFieldFormV2Permissions.d.ts +0 -10
  540. package/dist/types/components/CustomFieldModal/CustomFieldFormV2Permissions.d.ts.map +0 -1
  541. package/dist/types/components/CustomFieldModal/CustomFieldTypeDropdownV2.d.ts +0 -10
  542. package/dist/types/components/CustomFieldModal/CustomFieldTypeDropdownV2.d.ts.map +0 -1
  543. package/src/components/CustomFieldModal/CustomFieldFormPiiFieldsV2.tsx +0 -115
  544. package/src/components/CustomFieldModal/CustomFieldFormV2.tsx +0 -225
  545. package/src/components/CustomFieldModal/CustomFieldTypeDropdownV2.tsx +0 -139
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_bexCore","_ToolbarCollectionState","_TableState","_CellInteractionState","_CellValueState","_ClipboardState","_MutationState","_buildEditableFieldColumns","EditableTableState","constructor","params","_params$extraCellType","_defineProperty2","default","ConditionalModalState","undefined","items","tableState","onAddItemActionComplete","origin","toolbar","toolbarBIReporter","onAddItemClick","columnId","forceDirection","multiple","collection","sort","id","clearResult","ToolbarCollectionState","container","componentType","TableState","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","mutation","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","ref","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","result","reason","isMultiDeleteDisabled","rowKeys","some","key","keyedItems","visibleColumns","itemsToRenderCount","source","collectionFieldsSource","initTask","status","isSuccess","buildEditableFieldColumns","fieldsSource","editableCellFor","c","getKeyedItem","_toIndices","pos","row","findIndex","ki","col","_toPosition","visibleIds","length","find","filter","columns","addItem","afterItemKey","duplicateItem","deleteItems","deletableRowKeys","translate","t","deleteConfirmModal","open","theme","title","content","primaryButtonText","secondaryButtonText","primaryButtonOnClick","resolveCellTypeByColumnId","getCellDisplayValue","getCellValidation","isCellEditable","isColumnEditable","clearCells","cells","handleCellClick","shiftKey","isEditing","isCellEditing","commitEdit","get","res","editOnClick","val","focusCell","startEdit","column","resolved","toggleValue","showEditWhenFocused","value","selectionAnchor","selectRange","handleCellDoubleClick","exports"],"sources":["../../../../src/state/EditableTable/EditableTableState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport {\n CollectionOptimisticActions,\n CollectionState,\n ConditionalModalState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type { KeyedItem, RemoveItemDisabledResult } from '@wix/bex-core';\nimport { ToolbarCollectionState } from '../ToolbarCollectionState';\nimport { TableState } from '../TableState';\nimport { ICollectionComponentState } from '../ICollectionComponentState';\nimport { CellInteractionState } from './CellInteractionState';\nimport { CellValueState } from './CellValueState';\nimport { ClipboardState } from './ClipboardState';\nimport { MutationState } from './MutationState';\nimport type { EditableTableMutationHandlers } from './MutationState';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type { RemoveItemDisabledResult } from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n updateItemDisabled?: boolean;\n removeItemDisabled?: boolean;\n /** Deleting several rows in one operation. Absent = follows `removeItemDisabled`. */\n multiDeleteDisabled?: boolean;\n /** Per-item refinement of `removeItemDisabled`: disables deleting an item\n * even though deleting is generally allowed, optionally with a reason.\n * Must be pure and synchronous. Absent = all items deletable. */\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult;\n}\n\nexport interface EditableTableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n readonly permissions?: EditableTablePermissions<T>;\n readonly mutations: EditableTableMutationHandlers<T>;\n readonly createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>;\n /**\n * Additional cell types to register alongside the built-in ones.\n * Augment `CellTypeConfigMap` to use these types on `EditableColumn.cellType`.\n */\n readonly extraCellTypes?: CellType[];\n}\n\nexport interface EditableTableStatePublicAPI<T, F extends FiltersMap> {\n /** Underlying CollectionState instance */\n readonly collection: CollectionState<T, F>;\n /** Underlying ToolbarCollectionState instance */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /** Reset active filters & sorting and adds new items to the collection */\n onAddItemActionComplete(items: T[]): void;\n /** Sort by column */\n sort: (\n columnId: string,\n params?: { forceDirection?: SortOrder; multiple?: boolean },\n ) => void;\n /** Replace all permission flags and the per-item delete predicate */\n setPermissions(permissions: EditableTablePermissions<T>): void;\n /** Whether deleting the given row is disabled (user-level or per-item) */\n isRowDeleteDisabled(rowKey: string): boolean;\n /** The reason the given row cannot be deleted, when the per-item predicate\n * returned one. `undefined` when the row is deletable or no reason was given. */\n rowDeleteDisabledReason(rowKey: string): string | undefined;\n /** Whether deleting the given rows in one operation is disabled */\n isMultiDeleteDisabled(rowKeys: string[]): boolean;\n}\n\nexport class EditableTableState<T, F extends FiltersMap>\n implements ICollectionComponentState, EditableTableStatePublicAPI<T, F>\n{\n readonly toolbar: ToolbarCollectionState<T, F>;\n readonly tableState: TableState<T, F>;\n\n readonly cellInteraction: CellInteractionState<T, F>;\n readonly cellValue: CellValueState<T, F>;\n readonly clipboard: ClipboardState<T, F>;\n readonly mutation: MutationState<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n updateItemDisabled = false;\n removeItemDisabled = false;\n multiDeleteDisabled = false;\n // Needs an explicit initializer: a declaration-only field is erased at\n // compile time, and makeObservable throws on a property that doesn't exist.\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult = undefined;\n\n _providedColumns: EditableColumn<T>[] = [];\n\n constructor(params: EditableTableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'EditableTable',\n });\n\n this.tableState = new TableState({\n collection: params.collection,\n container: params.container,\n toolbar: this.toolbar,\n });\n\n this.cellValue = new CellValueState<T, F>(\n this,\n new Map(params.extraCellTypes?.map((ct) => [ct.type, ct])),\n );\n\n this.cellInteraction = new CellInteractionState<T, F>(\n (editingValue, cell) => {\n this.cellValue.commitHandler(editingValue, cell);\n },\n this,\n );\n this.clipboard = new ClipboardState<T, F>(this);\n this.mutation = new MutationState<T, F>(\n this,\n params.mutations,\n params.createOptimisticActions,\n );\n makeObservable(this, {\n addItemDisabled: observable,\n updateItemDisabled: observable,\n removeItemDisabled: observable,\n multiDeleteDisabled: observable,\n isRemoveItemDisabled: observable.ref,\n setPermissions: action,\n _providedColumns: observable.ref,\n editableColumns: computed,\n sourceColumns: computed,\n allColumns: computed,\n _columnMap: computed,\n init: action,\n confirmDeleteItems: action,\n });\n\n this.setPermissions(params.permissions ?? {});\n }\n\n setPermissions(permissions: EditableTablePermissions<T>) {\n this.addItemDisabled = permissions.addItemDisabled ?? false;\n this.updateItemDisabled = permissions.updateItemDisabled ?? false;\n this.removeItemDisabled = permissions.removeItemDisabled ?? false;\n this.multiDeleteDisabled =\n permissions.multiDeleteDisabled ?? this.removeItemDisabled;\n this.isRemoveItemDisabled = permissions.isRemoveItemDisabled;\n }\n\n isRowDeleteDisabled(rowKey: string): boolean {\n if (this.removeItemDisabled) {\n return true;\n }\n if (!this.isRemoveItemDisabled) {\n return false;\n }\n const keyed = this._getKeyedItem(rowKey);\n return keyed ? this.isRemoveItemDisabled(keyed.item).disabled : false;\n }\n\n rowDeleteDisabledReason(rowKey: string): string | undefined {\n if (!this.isRemoveItemDisabled) {\n return undefined;\n }\n const keyed = this._getKeyedItem(rowKey);\n const result = keyed ? this.isRemoveItemDisabled(keyed.item) : undefined;\n return result?.disabled ? result.reason : undefined;\n }\n\n isMultiDeleteDisabled(rowKeys: string[]): boolean {\n if (this.multiDeleteDisabled) {\n return true;\n }\n return rowKeys.some((key) => this.isRowDeleteDisabled(key));\n }\n\n get collection() {\n return this.tableState.collection;\n }\n\n get keyedItems() {\n return this.tableState.keyedItems;\n }\n\n get visibleColumns() {\n return this.tableState.visibleColumns;\n }\n\n get itemsToRenderCount() {\n return this.tableState.itemsToRenderCount;\n }\n\n /** Editable columns built from the wired fields source, once it loads. */\n get sourceColumns(): EditableColumn<T>[] {\n const source = this.toolbar.collectionFieldsSource;\n if (!source || !source.initTask.status.isSuccess) {\n return [];\n }\n return buildEditableFieldColumns(\n source.fieldsSource,\n source.editableCellFor,\n ) as EditableColumn<T>[];\n }\n\n /**\n * Consumer columns plus the columns built from the fields source, merged the\n * same way the toolbar merges its columns (ToolbarCollectionState.columns).\n * Consumer and source columns are expected to be disjoint by id.\n */\n get allColumns(): EditableColumn<T>[] {\n return [...this._providedColumns, ...this.sourceColumns];\n }\n\n get _columnMap(): Map<string, EditableColumn<T>> {\n return new Map(this.allColumns.map((c) => [c.id, c]));\n }\n\n _getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n return this.collection.getKeyedItem(key);\n }\n\n _toIndices(pos: Cell): { row: number; col: number } | null {\n const row = this.keyedItems.findIndex((ki) => ki.key === pos.rowKey);\n const col = this.editableColumns.findIndex((c) => c.id === pos.columnId);\n return row === -1 || col === -1 ? null : { row, col };\n }\n\n _toPosition(row: number, col: number): Cell | null {\n const ki = this.keyedItems[row];\n const c = this.editableColumns[col];\n return ki && c ? { rowKey: ki.key, columnId: c.id } : null;\n }\n\n onAddItemActionComplete = (items: T[]) => {\n return this.tableState.onAddItemActionComplete(items);\n };\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n get editableColumns(): EditableColumn<T>[] {\n const visibleIds = this.visibleColumns.map((c) => c.id);\n if (!visibleIds.length) {\n return this.allColumns;\n }\n return visibleIds\n .map((id) => this.allColumns.find((c) => c.id === id))\n .filter((c): c is EditableColumn<T> => c !== undefined);\n }\n\n init(columns: EditableColumn<T>[]) {\n this._providedColumns = columns;\n return this.mutation.init();\n }\n\n addItem(afterItemKey?: string): string {\n return this.mutation.addItem(afterItemKey);\n }\n\n duplicateItem(rowKey: string) {\n this.mutation.duplicateItem(rowKey);\n }\n\n deleteItems(rowKeys: string[]) {\n this.mutation.deleteItems(rowKeys);\n }\n\n confirmDeleteItems(rowKeys: string[]) {\n // The context menu disables blocked deletes; this filter is the barrier\n // for callers that bypass the UI gate.\n const deletableRowKeys = rowKeys.filter(\n (key) => !this.isRowDeleteDisabled(key),\n );\n if (!deletableRowKeys.length) {\n return;\n }\n const { translate: t } = this.collection;\n this.deleteConfirmModal.open({\n theme: 'destructive',\n title: t('cairo.deleteModal.title'),\n content: t('cairo.deleteModal.body'),\n primaryButtonText: t('cairo.delete.button'),\n secondaryButtonText: t('cairo.cancel.button'),\n primaryButtonOnClick: () => {\n this.deleteItems(deletableRowKeys);\n },\n });\n }\n\n resolveCellTypeByColumnId(columnId: string) {\n return this.cellValue.resolveCellTypeByColumnId(columnId);\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n return this.cellValue.getCellDisplayValue(rowKey, columnId);\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n return this.cellValue.getCellValidation(rowKey, columnId);\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isCellEditable(rowKey, columnId);\n }\n\n isColumnEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isColumnEditable(rowKey, columnId);\n }\n\n clearCells(cells: Cell[]) {\n this.cellValue.clearCells(cells);\n }\n\n handleCellClick(rowKey: string, columnId: string, shiftKey: boolean) {\n if (this.cellInteraction.isEditing) {\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n // Click landed inside the active editor — let the editor handle it.\n return;\n }\n // Shift-click while editing: ignore — extending a range selection during\n // an active edit is not a meaningful action.\n if (shiftKey) {\n return;\n }\n // Plain click on a different cell: commit the edit and move focus.\n this.cellInteraction.commitEdit();\n\n // If the target cell wants edit-on-click, enter edit directly.\n const col = this._columnMap.get(columnId);\n const res = col ? this.resolveCellTypeByColumnId(col.id) : null;\n if (res?.editOnClick) {\n const val = this.getCellDisplayValue(rowKey, columnId);\n if (res.editOnClick(val) && this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n // Toggle/showEditWhenFocused cells: click focuses the cell and shows the\n // EditComponent affordance. Keyboard navigation remains active.\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n if (resolved?.editOnClick) {\n const value = this.getCellDisplayValue(rowKey, columnId);\n if (\n resolved.editOnClick(value) &&\n this.isCellEditable(rowKey, columnId)\n ) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n if (shiftKey && this.cellInteraction.selectionAnchor) {\n this.cellInteraction.selectRange(this.cellInteraction.selectionAnchor, {\n rowKey,\n columnId,\n });\n } else {\n this.cellInteraction.focusCell(rowKey, columnId);\n }\n }\n\n handleCellDoubleClick(rowKey: string, columnId: string) {\n if (this.updateItemDisabled) {\n return;\n }\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n // Toggle-value cells (e.g. boolean) activate on single click, not double-click.\n // Entering edit mode on double-click would apply the editing box-shadow\n // without any EditComponent being shown, causing a visual border glitch.\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n return;\n }\n if (this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.startEdit(rowKey, columnId, 'doubleClick');\n }\n }\n\n sort = (\n columnId: string,\n {\n forceDirection,\n multiple,\n }: { forceDirection?: SortOrder; multiple?: boolean } = {},\n ) => {\n this.collection.sort(\n { id: columnId },\n { forceDirection, clearResult: true, multiple },\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_bexCore","_ToolbarCollectionState","_TableState","_CellInteractionState","_CellValueState","_ClipboardState","_MutationState","_buildEditableFieldColumns","TableStateWithDraftRows","TableState","constructor","params","mergeDraftRows","_defineProperty2","default","_mergeDraftRows","keyedItems","collection","result","showEmptyState","toolbar","multi","length","EditableTableState","_params$extraCellType","ConditionalModalState","undefined","items","tableState","onAddItemActionComplete","origin","toolbarBIReporter","onAddItemClick","columnId","forceDirection","multiple","sort","id","clearResult","ToolbarCollectionState","container","componentType","mutation","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","ref","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","reason","isMultiDeleteDisabled","rowKeys","some","key","visibleColumns","itemsToRenderCount","source","collectionFieldsSource","initTask","status","isSuccess","buildEditableFieldColumns","fieldsSource","editableCellFor","c","getKeyedItem","find","ki","_toIndices","pos","row","findIndex","col","_toPosition","visibleIds","filter","columns","disposeMutation","flushDrafts","addItem","afterItemKey","duplicateItem","deleteItems","deletableRowKeys","translate","t","deleteConfirmModal","open","theme","title","content","primaryButtonText","secondaryButtonText","primaryButtonOnClick","resolveCellTypeByColumnId","getCellDisplayValue","getCellValidation","isCellEditable","isColumnEditable","clearCells","cells","handleCellClick","shiftKey","isEditing","isCellEditing","commitEdit","get","res","editOnClick","val","focusCell","startEdit","column","resolved","toggleValue","showEditWhenFocused","value","selectionAnchor","selectRange","handleCellDoubleClick","exports"],"sources":["../../../../src/state/EditableTable/EditableTableState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport {\n CollectionOptimisticActions,\n CollectionState,\n ConditionalModalState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type { KeyedItem, RemoveItemDisabledResult } from '@wix/bex-core';\nimport { ToolbarCollectionState } from '../ToolbarCollectionState';\nimport { TableState } from '../TableState';\nimport type { TableStateParams } from '../TableState';\nimport { ICollectionComponentState } from '../ICollectionComponentState';\nimport { CellInteractionState } from './CellInteractionState';\nimport { CellValueState } from './CellValueState';\nimport { ClipboardState } from './ClipboardState';\nimport { MutationState } from './MutationState';\nimport type { EditableTableMutationHandlers } from './MutationState';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type { RemoveItemDisabledResult } from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n updateItemDisabled?: boolean;\n removeItemDisabled?: boolean;\n /** Deleting several rows in one operation. Absent = follows `removeItemDisabled`. */\n multiDeleteDisabled?: boolean;\n /** Per-item refinement of `removeItemDisabled`: disables deleting an item\n * even though deleting is generally allowed, optionally with a reason.\n * Must be pure and synchronous. Absent = all items deletable. */\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult;\n}\n\nexport interface EditableTableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n readonly permissions?: EditableTablePermissions<T>;\n readonly mutations: EditableTableMutationHandlers<T>;\n readonly createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>;\n /**\n * Additional cell types to register alongside the built-in ones.\n * Augment `CellTypeConfigMap` to use these types on `EditableColumn.cellType`.\n */\n readonly extraCellTypes?: CellType[];\n}\n\nexport interface EditableTableStatePublicAPI<T, F extends FiltersMap> {\n /** Underlying CollectionState instance */\n readonly collection: CollectionState<T, F>;\n /** Underlying ToolbarCollectionState instance */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /** Reset active filters & sorting and adds new items to the collection */\n onAddItemActionComplete(items: T[]): void;\n /** Sort by column */\n sort: (\n columnId: string,\n params?: { forceDirection?: SortOrder; multiple?: boolean },\n ) => void;\n /** Replace all permission flags and the per-item delete predicate */\n setPermissions(permissions: EditableTablePermissions<T>): void;\n /** Whether deleting the given row is disabled (user-level or per-item) */\n isRowDeleteDisabled(rowKey: string): boolean;\n /** The reason the given row cannot be deleted, when the per-item predicate\n * returned one. `undefined` when the row is deletable or no reason was given. */\n rowDeleteDisabledReason(rowKey: string): string | undefined;\n /** Whether deleting the given rows in one operation is disabled */\n isMultiDeleteDisabled(rowKeys: string[]): boolean;\n}\n\n/**\n * Draft rows (added locally, not yet created on the server) are not part of\n * the collection result. This TableState merges them into the rendered list,\n * so everything that renders rows — the WDS table and the virtualizer — sees\n * them, and a table whose only rows are drafts does not show the empty state.\n */\nclass TableStateWithDraftRows<T, F extends FiltersMap> extends TableState<\n T,\n F\n> {\n private readonly _mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[];\n\n constructor(\n params: TableStateParams<T, F>,\n mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[],\n ) {\n super(params);\n this._mergeDraftRows = mergeDraftRows;\n }\n\n get keyedItems() {\n return this._mergeDraftRows(this.collection.result.keyedItems);\n }\n\n get showEmptyState() {\n return this.toolbar.multi.showEmptyState && this.keyedItems.length === 0;\n }\n}\n\nexport class EditableTableState<T, F extends FiltersMap>\n implements ICollectionComponentState, EditableTableStatePublicAPI<T, F>\n{\n readonly toolbar: ToolbarCollectionState<T, F>;\n readonly tableState: TableState<T, F>;\n\n readonly cellInteraction: CellInteractionState<T, F>;\n readonly cellValue: CellValueState<T, F>;\n readonly clipboard: ClipboardState<T, F>;\n readonly mutation: MutationState<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n updateItemDisabled = false;\n removeItemDisabled = false;\n multiDeleteDisabled = false;\n // Needs an explicit initializer: a declaration-only field is erased at\n // compile time, and makeObservable throws on a property that doesn't exist.\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult = undefined;\n\n _providedColumns: EditableColumn<T>[] = [];\n\n constructor(params: EditableTableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'EditableTable',\n });\n\n this.tableState = new TableStateWithDraftRows(\n {\n collection: params.collection,\n container: params.container,\n toolbar: this.toolbar,\n },\n (keyedItems) => this.mutation._mergeDraftRows(keyedItems),\n );\n\n this.cellValue = new CellValueState<T, F>(\n this,\n new Map(params.extraCellTypes?.map((ct) => [ct.type, ct])),\n );\n\n this.cellInteraction = new CellInteractionState<T, F>(\n (editingValue, cell) => {\n this.cellValue.commitHandler(editingValue, cell);\n },\n this,\n );\n this.clipboard = new ClipboardState<T, F>(this);\n this.mutation = new MutationState<T, F>(\n this,\n params.mutations,\n params.createOptimisticActions,\n );\n makeObservable(this, {\n addItemDisabled: observable,\n updateItemDisabled: observable,\n removeItemDisabled: observable,\n multiDeleteDisabled: observable,\n isRemoveItemDisabled: observable.ref,\n setPermissions: action,\n _providedColumns: observable.ref,\n editableColumns: computed,\n sourceColumns: computed,\n allColumns: computed,\n _columnMap: computed,\n init: action,\n confirmDeleteItems: action,\n });\n\n this.setPermissions(params.permissions ?? {});\n }\n\n setPermissions(permissions: EditableTablePermissions<T>) {\n this.addItemDisabled = permissions.addItemDisabled ?? false;\n this.updateItemDisabled = permissions.updateItemDisabled ?? false;\n this.removeItemDisabled = permissions.removeItemDisabled ?? false;\n this.multiDeleteDisabled =\n permissions.multiDeleteDisabled ?? this.removeItemDisabled;\n this.isRemoveItemDisabled = permissions.isRemoveItemDisabled;\n }\n\n isRowDeleteDisabled(rowKey: string): boolean {\n if (this.removeItemDisabled) {\n return true;\n }\n if (!this.isRemoveItemDisabled) {\n return false;\n }\n const keyed = this._getKeyedItem(rowKey);\n return keyed ? this.isRemoveItemDisabled(keyed.item).disabled : false;\n }\n\n rowDeleteDisabledReason(rowKey: string): string | undefined {\n if (!this.isRemoveItemDisabled) {\n return undefined;\n }\n const keyed = this._getKeyedItem(rowKey);\n const result = keyed ? this.isRemoveItemDisabled(keyed.item) : undefined;\n return result?.disabled ? result.reason : undefined;\n }\n\n isMultiDeleteDisabled(rowKeys: string[]): boolean {\n if (this.multiDeleteDisabled) {\n return true;\n }\n return rowKeys.some((key) => this.isRowDeleteDisabled(key));\n }\n\n get collection() {\n return this.tableState.collection;\n }\n\n get keyedItems() {\n return this.tableState.keyedItems;\n }\n\n get visibleColumns() {\n return this.tableState.visibleColumns;\n }\n\n get itemsToRenderCount() {\n return this.tableState.itemsToRenderCount;\n }\n\n /** Editable columns built from the wired fields source, once it loads. */\n get sourceColumns(): EditableColumn<T>[] {\n const source = this.toolbar.collectionFieldsSource;\n if (!source || !source.initTask.status.isSuccess) {\n return [];\n }\n return buildEditableFieldColumns(\n source.fieldsSource,\n source.editableCellFor,\n ) as EditableColumn<T>[];\n }\n\n /**\n * Consumer columns plus the columns built from the fields source, merged the\n * same way the toolbar merges its columns (ToolbarCollectionState.columns).\n * Consumer and source columns are expected to be disjoint by id.\n */\n get allColumns(): EditableColumn<T>[] {\n return [...this._providedColumns, ...this.sourceColumns];\n }\n\n get _columnMap(): Map<string, EditableColumn<T>> {\n return new Map(this.allColumns.map((c) => [c.id, c]));\n }\n\n _getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n // Draft rows are not in the collection — fall back to the merged list.\n return (\n this.collection.getKeyedItem(key) ??\n this.keyedItems.find((ki) => ki.key === key)\n );\n }\n\n _toIndices(pos: Cell): { row: number; col: number } | null {\n const row = this.keyedItems.findIndex((ki) => ki.key === pos.rowKey);\n const col = this.editableColumns.findIndex((c) => c.id === pos.columnId);\n return row === -1 || col === -1 ? null : { row, col };\n }\n\n _toPosition(row: number, col: number): Cell | null {\n const ki = this.keyedItems[row];\n const c = this.editableColumns[col];\n return ki && c ? { rowKey: ki.key, columnId: c.id } : null;\n }\n\n onAddItemActionComplete = (items: T[]) => {\n return this.tableState.onAddItemActionComplete(items);\n };\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n get editableColumns(): EditableColumn<T>[] {\n const visibleIds = this.visibleColumns.map((c) => c.id);\n if (!visibleIds.length) {\n return this.allColumns;\n }\n return visibleIds\n .map((id) => this.allColumns.find((c) => c.id === id))\n .filter((c): c is EditableColumn<T> => c !== undefined);\n }\n\n init(columns: EditableColumn<T>[]) {\n this._providedColumns = columns;\n const disposeMutation = this.mutation.init();\n return () => {\n this.cellValue.flushDrafts();\n disposeMutation();\n };\n }\n\n addItem(afterItemKey?: string): string {\n return this.mutation.addItem(afterItemKey);\n }\n\n duplicateItem(rowKey: string) {\n this.mutation.duplicateItem(rowKey);\n }\n\n deleteItems(rowKeys: string[]) {\n this.mutation.deleteItems(rowKeys);\n }\n\n confirmDeleteItems(rowKeys: string[]) {\n // The context menu disables blocked deletes; this filter is the barrier\n // for callers that bypass the UI gate.\n const deletableRowKeys = rowKeys.filter(\n (key) => !this.isRowDeleteDisabled(key),\n );\n if (!deletableRowKeys.length) {\n return;\n }\n const { translate: t } = this.collection;\n this.deleteConfirmModal.open({\n theme: 'destructive',\n title: t('cairo.deleteModal.title'),\n content: t('cairo.deleteModal.body'),\n primaryButtonText: t('cairo.delete.button'),\n secondaryButtonText: t('cairo.cancel.button'),\n primaryButtonOnClick: () => {\n this.deleteItems(deletableRowKeys);\n },\n });\n }\n\n resolveCellTypeByColumnId(columnId: string) {\n return this.cellValue.resolveCellTypeByColumnId(columnId);\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n return this.cellValue.getCellDisplayValue(rowKey, columnId);\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n return this.cellValue.getCellValidation(rowKey, columnId);\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isCellEditable(rowKey, columnId);\n }\n\n isColumnEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isColumnEditable(rowKey, columnId);\n }\n\n clearCells(cells: Cell[]) {\n this.cellValue.clearCells(cells);\n }\n\n handleCellClick(rowKey: string, columnId: string, shiftKey: boolean) {\n if (this.cellInteraction.isEditing) {\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n // Click landed inside the active editor — let the editor handle it.\n return;\n }\n // Shift-click while editing: ignore — extending a range selection during\n // an active edit is not a meaningful action.\n if (shiftKey) {\n return;\n }\n // Plain click on a different cell: commit the edit and move focus.\n this.cellInteraction.commitEdit();\n\n // If the target cell wants edit-on-click, enter edit directly.\n const col = this._columnMap.get(columnId);\n const res = col ? this.resolveCellTypeByColumnId(col.id) : null;\n if (res?.editOnClick) {\n const val = this.getCellDisplayValue(rowKey, columnId);\n if (res.editOnClick(val) && this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n // Toggle/showEditWhenFocused cells: click focuses the cell and shows the\n // EditComponent affordance. Keyboard navigation remains active.\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n if (resolved?.editOnClick) {\n const value = this.getCellDisplayValue(rowKey, columnId);\n if (\n resolved.editOnClick(value) &&\n this.isCellEditable(rowKey, columnId)\n ) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n if (shiftKey && this.cellInteraction.selectionAnchor) {\n this.cellInteraction.selectRange(this.cellInteraction.selectionAnchor, {\n rowKey,\n columnId,\n });\n } else {\n this.cellInteraction.focusCell(rowKey, columnId);\n }\n }\n\n handleCellDoubleClick(rowKey: string, columnId: string) {\n if (this.updateItemDisabled) {\n return;\n }\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n // Toggle-value cells (e.g. boolean) activate on single click, not double-click.\n // Entering edit mode on double-click would apply the editing box-shadow\n // without any EditComponent being shown, causing a visual border glitch.\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n return;\n }\n if (this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.startEdit(rowKey, columnId, 'doubleClick');\n }\n }\n\n sort = (\n columnId: string,\n {\n forceDirection,\n multiple,\n }: { forceDirection?: SortOrder; multiple?: boolean } = {},\n ) => {\n this.collection.sort(\n { id: columnId },\n { forceDirection, clearResult: true, multiple },\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,11 +4,25 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  exports.__esModule = true;
5
5
  exports.MutationState = void 0;
6
6
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _mobx = require("mobx");
7
8
  class MutationState {
8
9
  constructor(parent, handlers, createOptimisticActions) {
9
10
  (0, _defineProperty2.default)(this, "_handlers", void 0);
10
11
  (0, _defineProperty2.default)(this, "_optimisticActions", void 0);
11
12
  (0, _defineProperty2.default)(this, "_parent", void 0);
13
+ /**
14
+ * Rows added locally and not yet created on the server, by row key.
15
+ * `afterItemKey` is the key of the row directly above the draft
16
+ * (undefined = top of the list). `addItem` keeps this exact, so at most
17
+ * one draft is anchored on any given row.
18
+ */
19
+ (0, _defineProperty2.default)(this, "_drafts", new Map());
20
+ /**
21
+ * Row keys of creates still in flight. Their rows are already in the
22
+ * collection result (optimistic patch), but their keys change when the
23
+ * server responds, so nothing may anchor on them.
24
+ */
25
+ (0, _defineProperty2.default)(this, "_pendingCreateKeys", new Set());
12
26
  (0, _defineProperty2.default)(this, "_submitCreate", async items => {
13
27
  const createdItems = await this._handlers.submitCreate(items);
14
28
  if (!createdItems) {
@@ -17,25 +31,125 @@ class MutationState {
17
31
  const {
18
32
  itemKey
19
33
  } = this._parent.collection;
20
- createdItems.forEach((createdItem, index) => {
21
- const submittedItem = items[index];
22
- if (!submittedItem) {
23
- return;
24
- }
25
- this._parent.cellInteraction.replaceRowKey(itemKey(submittedItem), itemKey(createdItem));
34
+ (0, _mobx.runInAction)(() => {
35
+ createdItems.forEach((createdItem, index) => {
36
+ const submittedItem = items[index];
37
+ if (!submittedItem) {
38
+ return;
39
+ }
40
+ const oldKey = itemKey(submittedItem);
41
+ const newKey = itemKey(createdItem);
42
+ this._pendingCreateKeys.delete(oldKey);
43
+ // The server assigned the row a new key — drafts anchored on the
44
+ // old key must follow the row under its new key.
45
+ for (const [rowKey, draft] of this._drafts) {
46
+ if (draft.afterItemKey === oldKey) {
47
+ this._drafts.set(rowKey, {
48
+ ...draft,
49
+ afterItemKey: newKey
50
+ });
51
+ }
52
+ }
53
+ this._parent.cellInteraction.replaceRowKey(oldKey, newKey);
54
+ });
26
55
  });
27
56
  return createdItems;
28
57
  });
29
58
  this._parent = parent;
30
59
  this._handlers = handlers;
31
60
  this._optimisticActions = createOptimisticActions(parent.collection);
61
+ (0, _mobx.makeObservable)(this, {
62
+ _drafts: _mobx.observable.shallow,
63
+ addItem: _mobx.action,
64
+ commitNewRow: _mobx.action,
65
+ deleteItems: _mobx.action
66
+ });
32
67
  }
33
68
  init() {
34
69
  return this._optimisticActions.init();
35
70
  }
71
+
72
+ /**
73
+ * Merge draft rows into the collection's keyed items for rendering.
74
+ * Every draft renders directly below the row it is anchored on, so a
75
+ * draft anchored on another draft follows it down the list. Drafts whose
76
+ * anchor left the list (filtered out, deleted) stay visible at the end.
77
+ */
78
+ _mergeDraftRows(keyedItems) {
79
+ if (this._drafts.size === 0) {
80
+ return keyedItems;
81
+ }
82
+ const draftBelow = new Map();
83
+ for (const [rowKey, draft] of this._drafts) {
84
+ draftBelow.set(draft.afterItemKey, {
85
+ key: rowKey,
86
+ item: draft.item
87
+ });
88
+ }
89
+ const merged = [];
90
+ const pushDraftsBelow = rowKey => {
91
+ let anchorKey = rowKey;
92
+ let draft = draftBelow.get(anchorKey);
93
+ while (draft) {
94
+ draftBelow.delete(anchorKey);
95
+ merged.push({
96
+ item: draft.item,
97
+ key: draft.key,
98
+ id: draft.key,
99
+ index: merged.length,
100
+ pageIndex: -1,
101
+ indexWithinPage: -1
102
+ });
103
+ anchorKey = draft.key;
104
+ draft = draftBelow.get(anchorKey);
105
+ }
106
+ };
107
+ pushDraftsBelow(undefined);
108
+ for (const keyedItem of keyedItems) {
109
+ merged.push(keyedItem);
110
+ pushDraftsBelow(keyedItem.key);
111
+ }
112
+ for (const anchorKey of [...draftBelow.keys()]) {
113
+ pushDraftsBelow(anchorKey);
114
+ }
115
+ return merged;
116
+ }
36
117
  addItem(afterItemKey) {
37
118
  const newItem = this._handlers.createItem();
38
- this._optimisticActions.createOne(newItem, {
119
+ const rowKey = this._parent.collection.itemKey(newItem);
120
+ // The new row lands directly below its anchor, pushing down whichever
121
+ // draft sat there — that draft is now anchored on the new row.
122
+ for (const [key, draft] of this._drafts) {
123
+ if (draft.afterItemKey === afterItemKey) {
124
+ this._drafts.set(key, {
125
+ ...draft,
126
+ afterItemKey: rowKey
127
+ });
128
+ }
129
+ }
130
+ this._drafts.set(rowKey, {
131
+ item: newItem,
132
+ afterItemKey
133
+ });
134
+ return rowKey;
135
+ }
136
+ isLocalNewRow(rowKey) {
137
+ return this._drafts.has(rowKey);
138
+ }
139
+
140
+ /** Create a local new row on the server, with its edited values merged in. */
141
+ commitNewRow(rowKey, item) {
142
+ const draft = this._drafts.get(rowKey);
143
+ if (!draft) {
144
+ return;
145
+ }
146
+
147
+ // The create's optimistic patch can only anchor on a real server row —
148
+ // not a draft, not another row created through this table's patches.
149
+ const afterItemKey = this._serverAnchorFor(rowKey);
150
+ this._drafts.delete(rowKey);
151
+ this._pendingCreateKeys.add(rowKey);
152
+ this._optimisticActions.createOne(item, {
39
153
  submit: this._submitCreate,
40
154
  afterItemKey,
41
155
  successToast: 'Item created',
@@ -49,7 +163,6 @@ class MutationState {
49
163
  }
50
164
  })
51
165
  });
52
- return this._parent.collection.itemKey(newItem);
53
166
  }
54
167
  duplicateItem(rowKey) {
55
168
  const keyedItem = this._parent.keyedItems.find(ki => ki.key === rowKey);
@@ -72,9 +185,10 @@ class MutationState {
72
185
  break;
73
186
  }
74
187
  }
188
+ this._pendingCreateKeys.add(newId);
75
189
  this._optimisticActions.createOne(duplicate, {
76
190
  submit: this._submitCreate,
77
- afterItemKey: keyedItem.key,
191
+ afterItemKey: rowKey,
78
192
  successToast: 'Item duplicated',
79
193
  errorToast: (_err, {
80
194
  retry
@@ -88,7 +202,30 @@ class MutationState {
88
202
  });
89
203
  }
90
204
  deleteItems(rowKeys) {
91
- const items = rowKeys.map(key => {
205
+ const deleted = new Set(rowKeys);
206
+
207
+ // Surviving drafts anchored on a deleted row move up to the nearest
208
+ // surviving row, so they don't fall to the end of the list.
209
+ for (const [rowKey, draft] of this._drafts) {
210
+ if (deleted.has(rowKey) || draft.afterItemKey == null || !deleted.has(draft.afterItemKey)) {
211
+ continue;
212
+ }
213
+ this._drafts.set(rowKey, {
214
+ ...draft,
215
+ afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted)
216
+ });
217
+ }
218
+ const serverRowKeys = [];
219
+ for (const rowKey of rowKeys) {
220
+ if (this._drafts.has(rowKey)) {
221
+ // Never created on the server — dropping the draft is the whole
222
+ // delete.
223
+ this._drafts.delete(rowKey);
224
+ } else {
225
+ serverRowKeys.push(rowKey);
226
+ }
227
+ }
228
+ const items = serverRowKeys.map(key => {
92
229
  var _this$_parent$keyedIt;
93
230
  return (_this$_parent$keyedIt = this._parent.keyedItems.find(ki => ki.key === key)) == null ? void 0 : _this$_parent$keyedIt.item;
94
231
  }).filter(item => item != null);
@@ -128,6 +265,39 @@ class MutationState {
128
265
  })
129
266
  });
130
267
  }
268
+
269
+ /**
270
+ * Nearest row above `rowKey` that a create can anchor on: a server row
271
+ * that is not a draft and not itself a created row still living as an
272
+ * optimistic patch. Anchoring one create on another strands the new row
273
+ * at the top of the table — the core merge repositions created patches
274
+ * newest-first, so the anchor moves away after the new row is placed.
275
+ */
276
+ _serverAnchorFor(rowKey) {
277
+ const keyedItems = this._parent.keyedItems;
278
+ const start = keyedItems.findIndex(ki => ki.key === rowKey);
279
+ for (let i = start - 1; i >= 0; i--) {
280
+ const key = keyedItems[i].key;
281
+ if (!this._drafts.has(key) && !this._pendingCreateKeys.has(key) && !this._isPatchCreatedRow(key)) {
282
+ return key;
283
+ }
284
+ }
285
+ return undefined;
286
+ }
287
+ _isPatchCreatedRow(key) {
288
+ return this._optimisticActions.state.patches.some(patch => patch.actionType === 'createMany' && patch.patchedItems.has(key));
289
+ }
290
+ _survivingAnchorAbove(key, deleted) {
291
+ const keyedItems = this._parent.keyedItems;
292
+ const start = keyedItems.findIndex(ki => ki.key === key);
293
+ for (let i = start - 1; i >= 0; i--) {
294
+ const k = keyedItems[i].key;
295
+ if (!deleted.has(k)) {
296
+ return k;
297
+ }
298
+ }
299
+ return undefined;
300
+ }
131
301
  }
132
302
  exports.MutationState = MutationState;
133
303
  //# sourceMappingURL=MutationState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","forEach","createdItem","index","submittedItem","cellInteraction","replaceRowKey","_optimisticActions","init","addItem","afterItemKey","newItem","createItem","createOne","submit","_submitCreate","successToast","errorToast","_err","retry","message","action","onClick","text","duplicateItem","rowKey","keyedItem","keyedItems","find","ki","key","sourceItem","item","newId","sourceId","duplicate","k","Object","keys","String","deleteItems","rowKeys","map","_this$_parent$keyedIt","filter","length","deleteMany","submitDelete","updateItems","updatedItems","updateMany","keepPosition","submitUpdate","exports"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import type {\n CollectionOptimisticActions,\n CollectionState,\n FiltersMap,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (items: T[]) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n addItem(afterItemKey?: string): string {\n const newItem = this._handlers.createItem();\n this._optimisticActions.createOne(newItem, {\n submit: this._submitCreate,\n afterItemKey,\n successToast: 'Item created',\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to create item',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n return this._parent.collection.itemKey(newItem);\n }\n\n duplicateItem(rowKey: string) {\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._submitCreate,\n afterItemKey: keyedItem.key,\n successToast: 'Item duplicated',\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to duplicate item',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const items = rowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast:\n items.length === 1 ? 'Item deleted' : `${items.length} items deleted`,\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to delete items',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n updateItems(updatedItems: T[]) {\n if (updatedItems.length === 0) {\n return;\n }\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n submit: this._handlers.submitUpdate,\n successToast:\n updatedItems.length === 1\n ? 'Item updated'\n : `${updatedItems.length} items updated`,\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to update items',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n this._parent.cellInteraction.replaceRowKey(\n itemKey(submittedItem),\n itemKey(createdItem),\n );\n });\n\n return createdItems;\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","Map","Set","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","runInAction","forEach","createdItem","index","submittedItem","oldKey","newKey","_pendingCreateKeys","delete","rowKey","draft","_drafts","afterItemKey","set","cellInteraction","replaceRowKey","_optimisticActions","makeObservable","observable","shallow","addItem","action","commitNewRow","deleteItems","init","_mergeDraftRows","keyedItems","size","draftBelow","key","item","merged","pushDraftsBelow","anchorKey","get","push","id","length","pageIndex","indexWithinPage","undefined","keyedItem","keys","newItem","createItem","isLocalNewRow","has","_serverAnchorFor","add","createOne","submit","_submitCreate","successToast","errorToast","_err","retry","message","onClick","text","duplicateItem","find","ki","sourceItem","newId","sourceId","duplicate","k","Object","String","rowKeys","deleted","_survivingAnchorAbove","serverRowKeys","map","_this$_parent$keyedIt","filter","deleteMany","submitDelete","updateItems","updatedItems","updateMany","keepPosition","submitUpdate","start","findIndex","i","_isPatchCreatedRow","state","patches","some","patch","actionType","patchedItems","exports"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n CollectionOptimisticActions,\n CollectionState,\n FiltersMap,\n KeyedItem,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (items: T[]) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n /**\n * Rows added locally and not yet created on the server, by row key.\n * `afterItemKey` is the key of the row directly above the draft\n * (undefined = top of the list). `addItem` keeps this exact, so at most\n * one draft is anchored on any given row.\n */\n readonly _drafts = new Map<string, { item: T; afterItemKey?: string }>();\n\n /**\n * Row keys of creates still in flight. Their rows are already in the\n * collection result (optimistic patch), but their keys change when the\n * server responds, so nothing may anchor on them.\n */\n private readonly _pendingCreateKeys = new Set<string>();\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n makeObservable(this, {\n _drafts: observable.shallow,\n addItem: action,\n commitNewRow: action,\n deleteItems: action,\n });\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n /**\n * Merge draft rows into the collection's keyed items for rendering.\n * Every draft renders directly below the row it is anchored on, so a\n * draft anchored on another draft follows it down the list. Drafts whose\n * anchor left the list (filtered out, deleted) stay visible at the end.\n */\n _mergeDraftRows(keyedItems: KeyedItem<T>[]): KeyedItem<T>[] {\n if (this._drafts.size === 0) {\n return keyedItems;\n }\n\n const draftBelow = new Map<string | undefined, { key: string; item: T }>();\n for (const [rowKey, draft] of this._drafts) {\n draftBelow.set(draft.afterItemKey, { key: rowKey, item: draft.item });\n }\n\n const merged: KeyedItem<T>[] = [];\n const pushDraftsBelow = (rowKey: string | undefined) => {\n let anchorKey = rowKey;\n let draft = draftBelow.get(anchorKey);\n while (draft) {\n draftBelow.delete(anchorKey);\n merged.push({\n item: draft.item,\n key: draft.key,\n id: draft.key,\n index: merged.length,\n pageIndex: -1,\n indexWithinPage: -1,\n });\n anchorKey = draft.key;\n draft = draftBelow.get(anchorKey);\n }\n };\n\n pushDraftsBelow(undefined);\n for (const keyedItem of keyedItems) {\n merged.push(keyedItem);\n pushDraftsBelow(keyedItem.key);\n }\n for (const anchorKey of [...draftBelow.keys()]) {\n pushDraftsBelow(anchorKey);\n }\n return merged;\n }\n\n addItem(afterItemKey?: string): string {\n const newItem = this._handlers.createItem();\n const rowKey = this._parent.collection.itemKey(newItem);\n // The new row lands directly below its anchor, pushing down whichever\n // draft sat there — that draft is now anchored on the new row.\n for (const [key, draft] of this._drafts) {\n if (draft.afterItemKey === afterItemKey) {\n this._drafts.set(key, { ...draft, afterItemKey: rowKey });\n }\n }\n this._drafts.set(rowKey, { item: newItem, afterItemKey });\n return rowKey;\n }\n\n isLocalNewRow(rowKey: string): boolean {\n return this._drafts.has(rowKey);\n }\n\n /** Create a local new row on the server, with its edited values merged in. */\n commitNewRow(rowKey: string, item: T) {\n const draft = this._drafts.get(rowKey);\n if (!draft) {\n return;\n }\n\n // The create's optimistic patch can only anchor on a real server row —\n // not a draft, not another row created through this table's patches.\n const afterItemKey = this._serverAnchorFor(rowKey);\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._submitCreate,\n afterItemKey,\n successToast: 'Item created',\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to create item',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n duplicateItem(rowKey: string) {\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._pendingCreateKeys.add(newId);\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._submitCreate,\n afterItemKey: rowKey,\n successToast: 'Item duplicated',\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to duplicate item',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const deleted = new Set(rowKeys);\n\n // Surviving drafts anchored on a deleted row move up to the nearest\n // surviving row, so they don't fall to the end of the list.\n for (const [rowKey, draft] of this._drafts) {\n if (\n deleted.has(rowKey) ||\n draft.afterItemKey == null ||\n !deleted.has(draft.afterItemKey)\n ) {\n continue;\n }\n this._drafts.set(rowKey, {\n ...draft,\n afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted),\n });\n }\n\n const serverRowKeys: string[] = [];\n for (const rowKey of rowKeys) {\n if (this._drafts.has(rowKey)) {\n // Never created on the server — dropping the draft is the whole\n // delete.\n this._drafts.delete(rowKey);\n } else {\n serverRowKeys.push(rowKey);\n }\n }\n\n const items = serverRowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast:\n items.length === 1 ? 'Item deleted' : `${items.length} items deleted`,\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to delete items',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n updateItems(updatedItems: T[]) {\n if (updatedItems.length === 0) {\n return;\n }\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n submit: this._handlers.submitUpdate,\n successToast:\n updatedItems.length === 1\n ? 'Item updated'\n : `${updatedItems.length} items updated`,\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to update items',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n /**\n * Nearest row above `rowKey` that a create can anchor on: a server row\n * that is not a draft and not itself a created row still living as an\n * optimistic patch. Anchoring one create on another strands the new row\n * at the top of the table — the core merge repositions created patches\n * newest-first, so the anchor moves away after the new row is placed.\n */\n private _serverAnchorFor(rowKey: string): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === rowKey);\n for (let i = start - 1; i >= 0; i--) {\n const key = keyedItems[i].key;\n if (\n !this._drafts.has(key) &&\n !this._pendingCreateKeys.has(key) &&\n !this._isPatchCreatedRow(key)\n ) {\n return key;\n }\n }\n return undefined;\n }\n\n private _isPatchCreatedRow(key: string): boolean {\n return this._optimisticActions.state.patches.some(\n (patch) =>\n patch.actionType === 'createMany' && patch.patchedItems.has(key),\n );\n }\n\n private _survivingAnchorAbove(\n key: string,\n deleted: Set<string>,\n ): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === key);\n for (let i = start - 1; i >= 0; i--) {\n const k = keyedItems[i].key;\n if (!deleted.has(k)) {\n return k;\n }\n }\n return undefined;\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n runInAction(() => {\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n const oldKey = itemKey(submittedItem);\n const newKey = itemKey(createdItem);\n this._pendingCreateKeys.delete(oldKey);\n // The server assigned the row a new key — drafts anchored on the\n // old key must follow the row under its new key.\n for (const [rowKey, draft] of this._drafts) {\n if (draft.afterItemKey === oldKey) {\n this._drafts.set(rowKey, { ...draft, afterItemKey: newKey });\n }\n }\n this._parent.cellInteraction.replaceRowKey(oldKey, newKey);\n });\n });\n\n return createdItems;\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -44,6 +44,8 @@ function checkValidationRule(rule, value) {
44
44
  return typeof value === 'string' && rule.value.test(value);
45
45
  case 'custom':
46
46
  return rule.validate(value);
47
+ case 'specificValues':
48
+ return value == null || value === '' || typeof value === 'string' && rule.values.some(option => option.id === value);
47
49
  default:
48
50
  return true;
49
51
  }
@@ -1 +1 @@
1
- {"version":3,"names":["cellKey","rowKey","columnId","parseCellKey","key","idx","indexOf","slice","noBorder","exports","top","bottom","left","right","validResult","valid","checkValidationRule","rule","value","type","length","test","validate","runCellValidation","rules","typeValidate","translate","errors","push","message","typeError"],"sources":["../../../../src/state/EditableTable/utils.ts"],"sourcesContent":["import type { Translate } from '@wix/bex-core';\nimport type {\n Cell,\n CellBorder,\n ValidationResult,\n ValidationRule,\n} from './types';\n\nexport function cellKey(rowKey: string, columnId: string): string {\n return `${rowKey}:${columnId}`;\n}\n\nexport function parseCellKey(key: string): Cell | null {\n const idx = key.indexOf(':');\n if (idx === -1) {\n return null;\n }\n return { rowKey: key.slice(0, idx), columnId: key.slice(idx + 1) };\n}\n\nexport const noBorder: CellBorder = {\n top: false,\n bottom: false,\n left: false,\n right: false,\n};\n\nexport const validResult: ValidationResult = { valid: true };\n\nfunction checkValidationRule(rule: ValidationRule, value: any): boolean {\n switch (rule.type) {\n case 'required':\n return value != null && value !== '';\n case 'min':\n return typeof value === 'number' && value >= rule.value;\n case 'max':\n return typeof value === 'number' && value <= rule.value;\n case 'minLength':\n return typeof value === 'string' && value.length >= rule.value;\n case 'maxLength':\n return typeof value === 'string' && value.length <= rule.value;\n case 'pattern':\n return typeof value === 'string' && rule.value.test(value);\n case 'custom':\n return rule.validate(value);\n default:\n return true;\n }\n}\n\nexport function runCellValidation(\n value: any,\n rules?: ValidationRule[],\n typeValidate?: (\n value: any,\n rules?: ValidationRule[],\n translate?: Translate,\n ) => string | null,\n translate?: Translate,\n): ValidationResult {\n const errors: string[] = [];\n\n if (rules) {\n for (const rule of rules) {\n if (!checkValidationRule(rule, value)) {\n errors.push(rule.message);\n }\n }\n }\n\n if (typeValidate) {\n const typeError = typeValidate(value, rules, translate);\n if (typeError) {\n errors.push(typeError);\n }\n }\n\n return errors.length === 0 ? validResult : { valid: false, errors };\n}\n"],"mappings":";;;;;;;;AAQO,SAASA,OAAOA,CAACC,MAAc,EAAEC,QAAgB,EAAU;EAChE,OAAO,GAAGD,MAAM,IAAIC,QAAQ,EAAE;AAChC;AAEO,SAASC,YAAYA,CAACC,GAAW,EAAe;EACrD,MAAMC,GAAG,GAAGD,GAAG,CAACE,OAAO,CAAC,GAAG,CAAC;EAC5B,IAAID,GAAG,KAAK,CAAC,CAAC,EAAE;IACd,OAAO,IAAI;EACb;EACA,OAAO;IAAEJ,MAAM,EAAEG,GAAG,CAACG,KAAK,CAAC,CAAC,EAAEF,GAAG,CAAC;IAAEH,QAAQ,EAAEE,GAAG,CAACG,KAAK,CAACF,GAAG,GAAG,CAAC;EAAE,CAAC;AACpE;AAEO,MAAMG,QAAoB,GAAAC,OAAA,CAAAD,QAAA,GAAG;EAClCE,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE,KAAK;EACbC,IAAI,EAAE,KAAK;EACXC,KAAK,EAAE;AACT,CAAC;AAEM,MAAMC,WAA6B,GAAAL,OAAA,CAAAK,WAAA,GAAG;EAAEC,KAAK,EAAE;AAAK,CAAC;AAE5D,SAASC,mBAAmBA,CAACC,IAAoB,EAAEC,KAAU,EAAW;EACtE,QAAQD,IAAI,CAACE,IAAI;IACf,KAAK,UAAU;MACb,OAAOD,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE;IACtC,KAAK,KAAK;MACR,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,IAAID,IAAI,CAACC,KAAK;IACzD,KAAK,KAAK;MACR,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,IAAID,IAAI,CAACC,KAAK;IACzD,KAAK,WAAW;MACd,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACE,MAAM,IAAIH,IAAI,CAACC,KAAK;IAChE,KAAK,WAAW;MACd,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACE,MAAM,IAAIH,IAAI,CAACC,KAAK;IAChE,KAAK,SAAS;MACZ,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAID,IAAI,CAACC,KAAK,CAACG,IAAI,CAACH,KAAK,CAAC;IAC5D,KAAK,QAAQ;MACX,OAAOD,IAAI,CAACK,QAAQ,CAACJ,KAAK,CAAC;IAC7B;MACE,OAAO,IAAI;EACf;AACF;AAEO,SAASK,iBAAiBA,CAC/BL,KAAU,EACVM,KAAwB,EACxBC,YAIkB,EAClBC,SAAqB,EACH;EAClB,MAAMC,MAAgB,GAAG,EAAE;EAE3B,IAAIH,KAAK,EAAE;IACT,KAAK,MAAMP,IAAI,IAAIO,KAAK,EAAE;MACxB,IAAI,CAACR,mBAAmB,CAACC,IAAI,EAAEC,KAAK,CAAC,EAAE;QACrCS,MAAM,CAACC,IAAI,CAACX,IAAI,CAACY,OAAO,CAAC;MAC3B;IACF;EACF;EAEA,IAAIJ,YAAY,EAAE;IAChB,MAAMK,SAAS,GAAGL,YAAY,CAACP,KAAK,EAAEM,KAAK,EAAEE,SAAS,CAAC;IACvD,IAAII,SAAS,EAAE;MACbH,MAAM,CAACC,IAAI,CAACE,SAAS,CAAC;IACxB;EACF;EAEA,OAAOH,MAAM,CAACP,MAAM,KAAK,CAAC,GAAGN,WAAW,GAAG;IAAEC,KAAK,EAAE,KAAK;IAAEY;EAAO,CAAC;AACrE","ignoreList":[]}
1
+ {"version":3,"names":["cellKey","rowKey","columnId","parseCellKey","key","idx","indexOf","slice","noBorder","exports","top","bottom","left","right","validResult","valid","checkValidationRule","rule","value","type","length","test","validate","values","some","option","id","runCellValidation","rules","typeValidate","translate","errors","push","message","typeError"],"sources":["../../../../src/state/EditableTable/utils.ts"],"sourcesContent":["import type { Translate } from '@wix/bex-core';\nimport type {\n Cell,\n CellBorder,\n ValidationResult,\n ValidationRule,\n} from './types';\n\nexport function cellKey(rowKey: string, columnId: string): string {\n return `${rowKey}:${columnId}`;\n}\n\nexport function parseCellKey(key: string): Cell | null {\n const idx = key.indexOf(':');\n if (idx === -1) {\n return null;\n }\n return { rowKey: key.slice(0, idx), columnId: key.slice(idx + 1) };\n}\n\nexport const noBorder: CellBorder = {\n top: false,\n bottom: false,\n left: false,\n right: false,\n};\n\nexport const validResult: ValidationResult = { valid: true };\n\nfunction checkValidationRule(rule: ValidationRule, value: any): boolean {\n switch (rule.type) {\n case 'required':\n return value != null && value !== '';\n case 'min':\n return typeof value === 'number' && value >= rule.value;\n case 'max':\n return typeof value === 'number' && value <= rule.value;\n case 'minLength':\n return typeof value === 'string' && value.length >= rule.value;\n case 'maxLength':\n return typeof value === 'string' && value.length <= rule.value;\n case 'pattern':\n return typeof value === 'string' && rule.value.test(value);\n case 'custom':\n return rule.validate(value);\n case 'specificValues':\n return (\n value == null ||\n value === '' ||\n (typeof value === 'string' &&\n rule.values.some((option) => option.id === value))\n );\n default:\n return true;\n }\n}\n\nexport function runCellValidation(\n value: any,\n rules?: ValidationRule[],\n typeValidate?: (\n value: any,\n rules?: ValidationRule[],\n translate?: Translate,\n ) => string | null,\n translate?: Translate,\n): ValidationResult {\n const errors: string[] = [];\n\n if (rules) {\n for (const rule of rules) {\n if (!checkValidationRule(rule, value)) {\n errors.push(rule.message);\n }\n }\n }\n\n if (typeValidate) {\n const typeError = typeValidate(value, rules, translate);\n if (typeError) {\n errors.push(typeError);\n }\n }\n\n return errors.length === 0 ? validResult : { valid: false, errors };\n}\n"],"mappings":";;;;;;;;AAQO,SAASA,OAAOA,CAACC,MAAc,EAAEC,QAAgB,EAAU;EAChE,OAAO,GAAGD,MAAM,IAAIC,QAAQ,EAAE;AAChC;AAEO,SAASC,YAAYA,CAACC,GAAW,EAAe;EACrD,MAAMC,GAAG,GAAGD,GAAG,CAACE,OAAO,CAAC,GAAG,CAAC;EAC5B,IAAID,GAAG,KAAK,CAAC,CAAC,EAAE;IACd,OAAO,IAAI;EACb;EACA,OAAO;IAAEJ,MAAM,EAAEG,GAAG,CAACG,KAAK,CAAC,CAAC,EAAEF,GAAG,CAAC;IAAEH,QAAQ,EAAEE,GAAG,CAACG,KAAK,CAACF,GAAG,GAAG,CAAC;EAAE,CAAC;AACpE;AAEO,MAAMG,QAAoB,GAAAC,OAAA,CAAAD,QAAA,GAAG;EAClCE,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE,KAAK;EACbC,IAAI,EAAE,KAAK;EACXC,KAAK,EAAE;AACT,CAAC;AAEM,MAAMC,WAA6B,GAAAL,OAAA,CAAAK,WAAA,GAAG;EAAEC,KAAK,EAAE;AAAK,CAAC;AAE5D,SAASC,mBAAmBA,CAACC,IAAoB,EAAEC,KAAU,EAAW;EACtE,QAAQD,IAAI,CAACE,IAAI;IACf,KAAK,UAAU;MACb,OAAOD,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE;IACtC,KAAK,KAAK;MACR,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,IAAID,IAAI,CAACC,KAAK;IACzD,KAAK,KAAK;MACR,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,IAAID,IAAI,CAACC,KAAK;IACzD,KAAK,WAAW;MACd,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACE,MAAM,IAAIH,IAAI,CAACC,KAAK;IAChE,KAAK,WAAW;MACd,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACE,MAAM,IAAIH,IAAI,CAACC,KAAK;IAChE,KAAK,SAAS;MACZ,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAID,IAAI,CAACC,KAAK,CAACG,IAAI,CAACH,KAAK,CAAC;IAC5D,KAAK,QAAQ;MACX,OAAOD,IAAI,CAACK,QAAQ,CAACJ,KAAK,CAAC;IAC7B,KAAK,gBAAgB;MACnB,OACEA,KAAK,IAAI,IAAI,IACbA,KAAK,KAAK,EAAE,IACX,OAAOA,KAAK,KAAK,QAAQ,IACxBD,IAAI,CAACM,MAAM,CAACC,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACC,EAAE,KAAKR,KAAK,CAAE;IAExD;MACE,OAAO,IAAI;EACf;AACF;AAEO,SAASS,iBAAiBA,CAC/BT,KAAU,EACVU,KAAwB,EACxBC,YAIkB,EAClBC,SAAqB,EACH;EAClB,MAAMC,MAAgB,GAAG,EAAE;EAE3B,IAAIH,KAAK,EAAE;IACT,KAAK,MAAMX,IAAI,IAAIW,KAAK,EAAE;MACxB,IAAI,CAACZ,mBAAmB,CAACC,IAAI,EAAEC,KAAK,CAAC,EAAE;QACrCa,MAAM,CAACC,IAAI,CAACf,IAAI,CAACgB,OAAO,CAAC;MAC3B;IACF;EACF;EAEA,IAAIJ,YAAY,EAAE;IAChB,MAAMK,SAAS,GAAGL,YAAY,CAACX,KAAK,EAAEU,KAAK,EAAEE,SAAS,CAAC;IACvD,IAAII,SAAS,EAAE;MACbH,MAAM,CAACC,IAAI,CAACE,SAAS,CAAC;IACxB;EACF;EAEA,OAAOH,MAAM,CAACX,MAAM,KAAK,CAAC,GAAGN,WAAW,GAAG;IAAEC,KAAK,EAAE,KAAK;IAAEgB;EAAO,CAAC;AACrE","ignoreList":[]}
@@ -5,14 +5,14 @@ exports.vars = exports.style = exports.stVars = exports.st = exports.namespace =
5
5
  var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
6
6
  // @ts-nocheck
7
7
 
8
- var _namespace_ = "FormPageHeader411580285";
8
+ var _namespace_ = "FormPageHeader3437938474";
9
9
  var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
10
10
  var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
11
11
  var style = exports.style = _style_;
12
12
  var st = exports.st = _style_;
13
13
  var namespace = exports.namespace = _namespace_;
14
14
  var classes = exports.classes = {
15
- "root": "FormPageHeader411580285__root"
15
+ "root": "FormPageHeader3437938474__root"
16
16
  };
17
17
  var keyframes = exports.keyframes = {};
18
18
  var layers = exports.layers = {};
@@ -1 +1 @@
1
- {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"FormPageHeader411580285\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"FormPageHeader411580285__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,yBAAyB;AAC3C,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAA+B,CAAC;AACtD,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"FormPageHeader3437938474\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"FormPageHeader3437938474__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,0BAA0B;AAC5C,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAAgC,CAAC;AACvD,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -23,7 +23,7 @@ function hasEditor(field, customCell) {
23
23
  return field.type !== 'CUSTOM' && field.type !== 'UNKNOWN' && !NEEDS_TYPE_CONFIG.has(field.type);
24
24
  }
25
25
  function toValidationRules(field) {
26
- var _v$numberRange, _v$numberRange2, _v$stringLengthRange, _v$stringLengthRange2;
26
+ var _v$numberRange, _v$numberRange2, _v$stringLengthRange, _v$stringLengthRange2, _v$specificValues;
27
27
  const v = field.validation;
28
28
  if (!v) {
29
29
  return [];
@@ -63,6 +63,13 @@ function toValidationRules(field) {
63
63
  message: ''
64
64
  });
65
65
  }
66
+ if ((_v$specificValues = v.specificValues) != null && _v$specificValues.length) {
67
+ rules.push({
68
+ type: 'specificValues',
69
+ values: v.specificValues,
70
+ message: `${field.displayName} must be one of the allowed values`
71
+ });
72
+ }
66
73
  return rules;
67
74
  }
68
75
 
@@ -1 +1 @@
1
- {"version":3,"names":["_bexCore","require","_fieldTypeToCellType","NEEDS_TYPE_CONFIG","Set","hasEditor","field","customCell","EditComponent","type","has","toValidationRules","_v$numberRange","_v$numberRange2","_v$stringLengthRange","_v$stringLengthRange2","v","validation","rules","required","push","message","displayName","numberRange","min","value","max","stringLengthRange","minLength","maxLength","synthesizeCellConfig","definition","_definition$value","editableTable","valueValidate","validate","buildEditableFieldColumns","source","editableCellFor","canWrite","setCellValue","fields","map","_definition$capabilit","_field$capabilities","id","columnIdForField","resolveFieldTypeDefinition","undefined","sourceCell","cellType","FIELD_TYPE_TO_CELL_TYPE","editable","isSystem","typeConfig","title","name","isPrimary","hideable","sortable","capabilities","length","getValue","item","getCellValue","setValue"],"sources":["../../../src/state/buildEditableFieldColumns.ts"],"sourcesContent":["import type {\n Field,\n FieldsSource,\n FieldTypeDefinition,\n PatternsFieldType,\n ValidationRule,\n} from '@wix/bex-core';\nimport { resolveFieldTypeDefinition } from '@wix/bex-core';\nimport type { CellType, EditableColumn } from './EditableTable/types';\nimport { FIELD_TYPE_TO_CELL_TYPE } from './EditableTable/fieldTypeToCellType';\nimport type { EditableCellUpgrade } from './CollectionFieldsSourceState';\n\n// Types whose editable cell needs typeConfig the projection can't supply yet\n// (referenced collection, address shape). Until that lands, they render as a\n// read-only 'object' cell rather than a broken editor.\nconst NEEDS_TYPE_CONFIG = new Set<PatternsFieldType>([\n 'REFERENCE',\n 'MULTI_REFERENCE',\n 'ADDRESS',\n]);\n\n/**\n * Whether this column has a usable inline editor. Read-only cases:\n * `NEEDS_TYPE_CONFIG` types are downgraded to a display cell, `UNKNOWN` has no\n * editor, and a `CUSTOM` field is only editable through a definition that\n * supplies an EditComponent. Everything else keeps its cell type's own editor —\n * including OBJECT / ARRAY, whose cells edit as JSON.\n */\nfunction hasEditor(field: Field, customCell?: Omit<CellType, 'type'>): boolean {\n if (customCell) {\n return !!customCell.EditComponent;\n }\n return (\n field.type !== 'CUSTOM' &&\n field.type !== 'UNKNOWN' &&\n !NEEDS_TYPE_CONFIG.has(field.type)\n );\n}\n\nfunction toValidationRules(field: Field): ValidationRule[] {\n const v = field.validation;\n if (!v) {\n return [];\n }\n const rules: ValidationRule[] = [];\n if (v.required) {\n rules.push({\n type: 'required',\n message: `${field.displayName} is required`,\n });\n }\n if (v.numberRange?.min != null) {\n rules.push({ type: 'min', value: v.numberRange.min, message: '' });\n }\n if (v.numberRange?.max != null) {\n rules.push({ type: 'max', value: v.numberRange.max, message: '' });\n }\n if (v.stringLengthRange?.minLength != null) {\n rules.push({\n type: 'minLength',\n value: v.stringLengthRange.minLength,\n message: '',\n });\n }\n if (v.stringLengthRange?.maxLength != null) {\n rules.push({\n type: 'maxLength',\n value: v.stringLengthRange.maxLength,\n message: '',\n });\n }\n return rules;\n}\n\n// The inline-custom cell config for a resolved definition: its editableTable\n// slot, with the definition's value-level validation layered in when the slot\n// doesn't validate itself.\nfunction synthesizeCellConfig(\n definition: FieldTypeDefinition,\n): Omit<CellType, 'type'> {\n const editableTable = definition.editableTable!;\n const valueValidate = definition.value?.validate;\n const validate =\n valueValidate &&\n ((value: unknown, rules?: ValidationRule[]) => valueValidate(value, rules));\n return { ...editableTable, validate };\n}\n\n/**\n * Projects a FieldsSource's fields into EditableTable columns: a cell type by\n * field type, value read/write through the source, validation from the field,\n * and the flags the header reads for its disable rules. A cell is editable only\n * when the source can write it back (setCellValue) and the field isn't a system\n * field. A CUSTOM field renders through its definition's editableTable slot as\n * an inline custom cell; without one it falls back to a read-only object cell.\n */\nexport function buildEditableFieldColumns(\n source: FieldsSource,\n editableCellFor?: (field: Field) => EditableCellUpgrade | undefined,\n): EditableColumn<Record<string, unknown>>[] {\n const canWrite = typeof source.setCellValue === 'function';\n return source.fields.map((field) => {\n const id = source.columnIdForField(field);\n const definition = resolveFieldTypeDefinition(source, field);\n const customCell = definition?.editableTable\n ? synthesizeCellConfig(definition)\n : undefined;\n // A source-supplied cell wins over the downgrade: it carries the typeConfig\n // that made the type read-only here in the first place.\n const sourceCell = customCell\n ? undefined\n : NEEDS_TYPE_CONFIG.has(field.type)\n ? editableCellFor?.(field)\n : undefined;\n const cellType = customCell\n ? 'custom'\n : sourceCell?.cellType ??\n (NEEDS_TYPE_CONFIG.has(field.type)\n ? 'object'\n : FIELD_TYPE_TO_CELL_TYPE[field.type] ?? 'object');\n const validation = toValidationRules(field);\n const editable =\n canWrite &&\n !field.isSystem &&\n (!!sourceCell || hasEditor(field, customCell));\n return {\n id,\n cellType,\n ...(customCell && { typeConfig: customCell }),\n ...(sourceCell && { typeConfig: sourceCell.typeConfig }),\n field,\n title: field.displayName,\n name: field.displayName,\n isPrimary: field.isPrimary,\n isSystem: field.isSystem,\n hideable: true,\n sortable:\n definition?.capabilities?.sortable ??\n field.capabilities?.sortable ??\n false,\n editable,\n validation: validation.length ? validation : undefined,\n getValue: (item) => source.getCellValue(item, field),\n setValue: editable\n ? (item, value) =>\n source.setCellValue!(item, field, value) as Record<string, unknown>\n : undefined,\n } as EditableColumn<Record<string, unknown>>;\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_bexCore","require","_fieldTypeToCellType","NEEDS_TYPE_CONFIG","Set","hasEditor","field","customCell","EditComponent","type","has","toValidationRules","_v$numberRange","_v$numberRange2","_v$stringLengthRange","_v$stringLengthRange2","_v$specificValues","v","validation","rules","required","push","message","displayName","numberRange","min","value","max","stringLengthRange","minLength","maxLength","specificValues","length","values","synthesizeCellConfig","definition","_definition$value","editableTable","valueValidate","validate","buildEditableFieldColumns","source","editableCellFor","canWrite","setCellValue","fields","map","_definition$capabilit","_field$capabilities","id","columnIdForField","resolveFieldTypeDefinition","undefined","sourceCell","cellType","FIELD_TYPE_TO_CELL_TYPE","editable","isSystem","typeConfig","title","name","isPrimary","hideable","sortable","capabilities","getValue","item","getCellValue","setValue"],"sources":["../../../src/state/buildEditableFieldColumns.ts"],"sourcesContent":["import type {\n Field,\n FieldsSource,\n FieldTypeDefinition,\n PatternsFieldType,\n ValidationRule,\n} from '@wix/bex-core';\nimport { resolveFieldTypeDefinition } from '@wix/bex-core';\nimport type { CellType, EditableColumn } from './EditableTable/types';\nimport { FIELD_TYPE_TO_CELL_TYPE } from './EditableTable/fieldTypeToCellType';\nimport type { EditableCellUpgrade } from './CollectionFieldsSourceState';\n\n// Types whose editable cell needs typeConfig the projection can't supply yet\n// (referenced collection, address shape). Until that lands, they render as a\n// read-only 'object' cell rather than a broken editor.\nconst NEEDS_TYPE_CONFIG = new Set<PatternsFieldType>([\n 'REFERENCE',\n 'MULTI_REFERENCE',\n 'ADDRESS',\n]);\n\n/**\n * Whether this column has a usable inline editor. Read-only cases:\n * `NEEDS_TYPE_CONFIG` types are downgraded to a display cell, `UNKNOWN` has no\n * editor, and a `CUSTOM` field is only editable through a definition that\n * supplies an EditComponent. Everything else keeps its cell type's own editor —\n * including OBJECT / ARRAY, whose cells edit as JSON.\n */\nfunction hasEditor(field: Field, customCell?: Omit<CellType, 'type'>): boolean {\n if (customCell) {\n return !!customCell.EditComponent;\n }\n return (\n field.type !== 'CUSTOM' &&\n field.type !== 'UNKNOWN' &&\n !NEEDS_TYPE_CONFIG.has(field.type)\n );\n}\n\nfunction toValidationRules(field: Field): ValidationRule[] {\n const v = field.validation;\n if (!v) {\n return [];\n }\n const rules: ValidationRule[] = [];\n if (v.required) {\n rules.push({\n type: 'required',\n message: `${field.displayName} is required`,\n });\n }\n if (v.numberRange?.min != null) {\n rules.push({ type: 'min', value: v.numberRange.min, message: '' });\n }\n if (v.numberRange?.max != null) {\n rules.push({ type: 'max', value: v.numberRange.max, message: '' });\n }\n if (v.stringLengthRange?.minLength != null) {\n rules.push({\n type: 'minLength',\n value: v.stringLengthRange.minLength,\n message: '',\n });\n }\n if (v.stringLengthRange?.maxLength != null) {\n rules.push({\n type: 'maxLength',\n value: v.stringLengthRange.maxLength,\n message: '',\n });\n }\n if (v.specificValues?.length) {\n rules.push({\n type: 'specificValues',\n values: v.specificValues,\n message: `${field.displayName} must be one of the allowed values`,\n });\n }\n return rules;\n}\n\n// The inline-custom cell config for a resolved definition: its editableTable\n// slot, with the definition's value-level validation layered in when the slot\n// doesn't validate itself.\nfunction synthesizeCellConfig(\n definition: FieldTypeDefinition,\n): Omit<CellType, 'type'> {\n const editableTable = definition.editableTable!;\n const valueValidate = definition.value?.validate;\n const validate =\n valueValidate &&\n ((value: unknown, rules?: ValidationRule[]) => valueValidate(value, rules));\n return { ...editableTable, validate };\n}\n\n/**\n * Projects a FieldsSource's fields into EditableTable columns: a cell type by\n * field type, value read/write through the source, validation from the field,\n * and the flags the header reads for its disable rules. A cell is editable only\n * when the source can write it back (setCellValue) and the field isn't a system\n * field. A CUSTOM field renders through its definition's editableTable slot as\n * an inline custom cell; without one it falls back to a read-only object cell.\n */\nexport function buildEditableFieldColumns(\n source: FieldsSource,\n editableCellFor?: (field: Field) => EditableCellUpgrade | undefined,\n): EditableColumn<Record<string, unknown>>[] {\n const canWrite = typeof source.setCellValue === 'function';\n return source.fields.map((field) => {\n const id = source.columnIdForField(field);\n const definition = resolveFieldTypeDefinition(source, field);\n const customCell = definition?.editableTable\n ? synthesizeCellConfig(definition)\n : undefined;\n // A source-supplied cell wins over the downgrade: it carries the typeConfig\n // that made the type read-only here in the first place.\n const sourceCell = customCell\n ? undefined\n : NEEDS_TYPE_CONFIG.has(field.type)\n ? editableCellFor?.(field)\n : undefined;\n const cellType = customCell\n ? 'custom'\n : sourceCell?.cellType ??\n (NEEDS_TYPE_CONFIG.has(field.type)\n ? 'object'\n : FIELD_TYPE_TO_CELL_TYPE[field.type] ?? 'object');\n const validation = toValidationRules(field);\n const editable =\n canWrite &&\n !field.isSystem &&\n (!!sourceCell || hasEditor(field, customCell));\n return {\n id,\n cellType,\n ...(customCell && { typeConfig: customCell }),\n ...(sourceCell && { typeConfig: sourceCell.typeConfig }),\n field,\n title: field.displayName,\n name: field.displayName,\n isPrimary: field.isPrimary,\n isSystem: field.isSystem,\n hideable: true,\n sortable:\n definition?.capabilities?.sortable ??\n field.capabilities?.sortable ??\n false,\n editable,\n validation: validation.length ? validation : undefined,\n getValue: (item) => source.getCellValue(item, field),\n setValue: editable\n ? (item, value) =>\n source.setCellValue!(item, field, value) as Record<string, unknown>\n : undefined,\n } as EditableColumn<Record<string, unknown>>;\n });\n}\n"],"mappings":"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","ignoreList":[]}