@payloadcms/ui 4.0.0-internal.cea8867 → 4.0.0-internal.d1cc1d3

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 (319) hide show
  1. package/dist/css/app.css +121 -0
  2. package/dist/css/forms.css +0 -6
  3. package/dist/css/spacing.css +11 -3
  4. package/dist/css/z-index.css +10 -0
  5. package/dist/elements/AddNewRelation/index.css +0 -1
  6. package/dist/elements/AppHeader/index.css +0 -3
  7. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  8. package/dist/elements/AppHeader/index.js +5 -1
  9. package/dist/elements/AppHeader/index.js.map +1 -1
  10. package/dist/elements/ArrayAction/index.d.ts +2 -0
  11. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  12. package/dist/elements/ArrayAction/index.js +65 -24
  13. package/dist/elements/ArrayAction/index.js.map +1 -1
  14. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
  15. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  16. package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
  17. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  18. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  19. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  20. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  21. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  22. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  23. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  24. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  25. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  26. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  27. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  28. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  29. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  30. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  31. package/dist/elements/ClipboardAction/index.js +17 -1
  32. package/dist/elements/ClipboardAction/index.js.map +1 -1
  33. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  34. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  35. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  36. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  37. package/dist/elements/ClipboardAction/types.js.map +1 -1
  38. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  39. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  40. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  41. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  42. package/dist/elements/CodeEditor/index.css +0 -5
  43. package/dist/elements/CommandPalette/index.css +0 -7
  44. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  45. package/dist/elements/CreateDocumentButton/index.js +4 -1
  46. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  47. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  48. package/dist/elements/DatePicker/DatePicker.js +1 -0
  49. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  50. package/dist/elements/DatePicker/index.css +1 -1
  51. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  52. package/dist/elements/DeleteDocument/index.js +16 -1
  53. package/dist/elements/DeleteDocument/index.js.map +1 -1
  54. package/dist/elements/EditMany/DrawerContent.js +2 -2
  55. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  56. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  57. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  58. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  59. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  60. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  61. package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
  62. package/dist/elements/FileManager/FilePreview/index.css +3 -3
  63. package/dist/elements/FileManager/index.css +36 -23
  64. package/dist/elements/FileManager/index.d.ts +1 -1
  65. package/dist/elements/FileManager/index.d.ts.map +1 -1
  66. package/dist/elements/FileManager/index.js +15 -4
  67. package/dist/elements/FileManager/index.js.map +1 -1
  68. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
  69. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  70. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  71. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  72. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  73. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  74. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  75. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
  76. package/dist/elements/InputStepper/index.css +0 -1
  77. package/dist/elements/Locked/index.css +0 -8
  78. package/dist/elements/Locked/index.d.ts.map +1 -1
  79. package/dist/elements/Locked/index.js +70 -64
  80. package/dist/elements/Locked/index.js.map +1 -1
  81. package/dist/elements/MiniCarousel/index.css +39 -37
  82. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  83. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  84. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  85. package/dist/elements/Nav/SidebarTabs/index.css +0 -5
  86. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  87. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  88. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  89. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  90. package/dist/elements/NavGroup/index.css +0 -1
  91. package/dist/elements/PreviewButton/index.d.ts +1 -2
  92. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  93. package/dist/elements/PreviewButton/index.js +11 -5
  94. package/dist/elements/PreviewButton/index.js.map +1 -1
  95. package/dist/elements/PreviewSizes/index.css +8 -9
  96. package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
  97. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts +7 -0
  98. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -0
  99. package/dist/elements/ReactSelect/DefaultMenuPortal.js +120 -0
  100. package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -0
  101. package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
  102. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  103. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +1 -1
  104. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -1
  105. package/dist/elements/ReactSelect/getMenuListStyles.js +13 -5
  106. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -1
  107. package/dist/elements/ReactSelect/getMenuStyles.d.ts +10 -0
  108. package/dist/elements/ReactSelect/getMenuStyles.d.ts.map +1 -0
  109. package/dist/elements/ReactSelect/getMenuStyles.js +21 -0
  110. package/dist/elements/ReactSelect/getMenuStyles.js.map +1 -0
  111. package/dist/elements/ReactSelect/index.css +7 -3
  112. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  113. package/dist/elements/ReactSelect/index.js +24 -101
  114. package/dist/elements/ReactSelect/index.js.map +1 -1
  115. package/dist/elements/ReactSelect/types.d.ts +1 -2
  116. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  117. package/dist/elements/ReactSelect/types.js.map +1 -1
  118. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  119. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  120. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  121. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  122. package/dist/elements/RelationshipTable/index.css +0 -2
  123. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  124. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  125. package/dist/elements/RelationshipTable/index.js +36 -3
  126. package/dist/elements/RelationshipTable/index.js.map +1 -1
  127. package/dist/elements/RenderTitle/index.css +4 -0
  128. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  129. package/dist/elements/RenderTitle/index.js +18 -13
  130. package/dist/elements/RenderTitle/index.js.map +1 -1
  131. package/dist/elements/SelectRow/index.d.ts +4 -3
  132. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  133. package/dist/elements/SelectRow/index.js +10 -7
  134. package/dist/elements/SelectRow/index.js.map +1 -1
  135. package/dist/elements/SidebarToggle/index.css +0 -17
  136. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  137. package/dist/elements/SortColumn/index.js +42 -38
  138. package/dist/elements/SortColumn/index.js.map +1 -1
  139. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  140. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  141. package/dist/elements/Table/OrderableRow.js +17 -1
  142. package/dist/elements/Table/OrderableRow.js.map +1 -1
  143. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  144. package/dist/elements/Table/OrderableTable.js +19 -2
  145. package/dist/elements/Table/OrderableTable.js.map +1 -1
  146. package/dist/elements/Table/index.css +1 -0
  147. package/dist/elements/TableSection/index.css +0 -1
  148. package/dist/elements/Thumbnail/index.d.ts +1 -1
  149. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  150. package/dist/elements/Thumbnail/index.js.map +1 -1
  151. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  152. package/dist/elements/TimezonePicker/index.js +5 -1
  153. package/dist/elements/TimezonePicker/index.js.map +1 -1
  154. package/dist/elements/Tooltip/index.css +15 -34
  155. package/dist/elements/Tooltip/index.d.ts +11 -3
  156. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  157. package/dist/elements/Tooltip/index.js +151 -85
  158. package/dist/elements/Tooltip/index.js.map +1 -1
  159. package/dist/elements/Upload/index.css +0 -5
  160. package/dist/exports/client/index.d.ts +3 -0
  161. package/dist/exports/client/index.d.ts.map +1 -1
  162. package/dist/exports/client/index.js +1 -1
  163. package/dist/exports/client/index.js.map +3 -3
  164. package/dist/exports/layouts.d.ts +1 -0
  165. package/dist/exports/layouts.d.ts.map +1 -1
  166. package/dist/exports/layouts.js +1 -0
  167. package/dist/exports/layouts.js.map +1 -1
  168. package/dist/exports/shared/index.d.ts +1 -0
  169. package/dist/exports/shared/index.d.ts.map +1 -1
  170. package/dist/exports/shared/index.js +2 -2
  171. package/dist/exports/shared/index.js.map +4 -4
  172. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  173. package/dist/fields/Array/ArrayRow.js +97 -160
  174. package/dist/fields/Array/ArrayRow.js.map +1 -1
  175. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  176. package/dist/fields/Blocks/BlockRow.js +134 -195
  177. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  178. package/dist/fields/Blocks/RowActions.d.ts +2 -0
  179. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  180. package/dist/fields/Blocks/RowActions.js +23 -20
  181. package/dist/fields/Blocks/RowActions.js.map +1 -1
  182. package/dist/fields/Blocks/index.js +3 -3
  183. package/dist/fields/Blocks/index.js.map +1 -1
  184. package/dist/fields/Checkbox/Input.d.ts +2 -0
  185. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  186. package/dist/fields/Checkbox/Input.js +32 -26
  187. package/dist/fields/Checkbox/Input.js.map +1 -1
  188. package/dist/fields/Checkbox/index.css +37 -73
  189. package/dist/fields/FieldError/index.css +0 -9
  190. package/dist/fields/FieldError/index.d.ts.map +1 -1
  191. package/dist/fields/FieldError/index.js +19 -9
  192. package/dist/fields/FieldError/index.js.map +1 -1
  193. package/dist/fields/Join/index.css +9 -0
  194. package/dist/fields/Join/index.d.ts.map +1 -1
  195. package/dist/fields/Join/index.js +13 -9
  196. package/dist/fields/Join/index.js.map +1 -1
  197. package/dist/fields/RadioGroup/index.css +0 -7
  198. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  199. package/dist/fields/Relationship/Input.js +32 -14
  200. package/dist/fields/Relationship/Input.js.map +1 -1
  201. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  202. package/dist/fields/Slug/index.css +0 -1
  203. package/dist/fields/Slug/index.d.ts.map +1 -1
  204. package/dist/fields/Slug/index.js +75 -111
  205. package/dist/fields/Slug/index.js.map +1 -1
  206. package/dist/fields/Upload/index.css +19 -4
  207. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  208. package/dist/forms/Form/fieldReducer.js +3 -1
  209. package/dist/forms/Form/fieldReducer.js.map +1 -1
  210. package/dist/forms/Form/index.d.ts.map +1 -1
  211. package/dist/forms/Form/index.js +9 -15
  212. package/dist/forms/Form/index.js.map +1 -1
  213. package/dist/forms/Form/types.d.ts +1 -1
  214. package/dist/forms/Form/types.d.ts.map +1 -1
  215. package/dist/forms/Form/types.js.map +1 -1
  216. package/dist/forms/RenderFields/index.css +16 -2
  217. package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
  218. package/dist/forms/WatchChildErrors/index.js +2 -2
  219. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  220. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  221. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  222. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  223. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
  224. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  225. package/dist/layouts/Root/index.d.ts +1 -1
  226. package/dist/layouts/Root/index.d.ts.map +1 -1
  227. package/dist/layouts/Root/index.js +8 -2
  228. package/dist/layouts/Root/index.js.map +1 -1
  229. package/dist/layouts/Root/viewport.d.ts +1 -0
  230. package/dist/layouts/Root/viewport.d.ts.map +1 -1
  231. package/dist/layouts/Root/viewport.js +4 -1
  232. package/dist/layouts/Root/viewport.js.map +1 -1
  233. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  234. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  235. package/dist/providers/DocumentTitle/index.js +2 -0
  236. package/dist/providers/DocumentTitle/index.js.map +1 -1
  237. package/dist/providers/Embed/index.d.ts +24 -0
  238. package/dist/providers/Embed/index.d.ts.map +1 -0
  239. package/dist/providers/Embed/index.js +105 -0
  240. package/dist/providers/Embed/index.js.map +1 -0
  241. package/dist/providers/FormErrorHandler/index.d.ts +20 -0
  242. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
  243. package/dist/providers/FormErrorHandler/index.js +6 -0
  244. package/dist/providers/FormErrorHandler/index.js.map +1 -0
  245. package/dist/providers/Root/index.d.ts +1 -0
  246. package/dist/providers/Root/index.d.ts.map +1 -1
  247. package/dist/providers/Root/index.js +33 -27
  248. package/dist/providers/Root/index.js.map +1 -1
  249. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  250. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  251. package/dist/providers/SidebarTabs/index.js.map +1 -1
  252. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  253. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  254. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  255. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  256. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  257. package/dist/providers/Theme/index.d.ts +3 -0
  258. package/dist/providers/Theme/index.d.ts.map +1 -1
  259. package/dist/providers/Theme/index.js +107 -95
  260. package/dist/providers/Theme/index.js.map +1 -1
  261. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  262. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  263. package/dist/providers/UploadHandlers/index.js +102 -42
  264. package/dist/providers/UploadHandlers/index.js.map +1 -1
  265. package/dist/styles.css +23 -10
  266. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  267. package/dist/utilities/combineFieldLabel.js +5 -1
  268. package/dist/utilities/combineFieldLabel.js.map +1 -1
  269. package/dist/utilities/generateFieldID.d.ts +1 -1
  270. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  271. package/dist/utilities/generateFieldID.js +2 -2
  272. package/dist/utilities/generateFieldID.js.map +1 -1
  273. package/dist/utilities/getRequestEmbed.d.ts +14 -0
  274. package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
  275. package/dist/utilities/getRequestEmbed.js +10 -0
  276. package/dist/utilities/getRequestEmbed.js.map +1 -0
  277. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  278. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  279. package/dist/utilities/handleServerFunctions.js +17 -37
  280. package/dist/utilities/handleServerFunctions.js.map +1 -1
  281. package/dist/utilities/renderTable.d.ts.map +1 -1
  282. package/dist/utilities/renderTable.js +18 -2
  283. package/dist/utilities/renderTable.js.map +1 -1
  284. package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
  285. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  286. package/dist/utilities/serverFunctionRegistry.js +25 -7
  287. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  288. package/dist/utilities/slugify.d.ts.map +1 -1
  289. package/dist/utilities/slugify.js +49 -6
  290. package/dist/utilities/slugify.js.map +1 -1
  291. package/dist/views/Dashboard/Default/ModularDashboard/index.css +0 -8
  292. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
  293. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  294. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
  295. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  296. package/dist/views/Edit/index.css +61 -53
  297. package/dist/views/HierarchyList/index.css +1 -1
  298. package/dist/views/List/index.css +1 -1
  299. package/dist/views/List/index.d.ts.map +1 -1
  300. package/dist/views/List/index.js +4 -0
  301. package/dist/views/List/index.js.map +1 -1
  302. package/dist/views/Logout/index.d.ts.map +1 -1
  303. package/dist/views/Logout/index.js +11 -0
  304. package/dist/views/Logout/index.js.map +1 -1
  305. package/dist/views/Root/index.d.ts +12 -1
  306. package/dist/views/Root/index.d.ts.map +1 -1
  307. package/dist/views/Root/index.js +10 -3
  308. package/dist/views/Root/index.js.map +1 -1
  309. package/package.json +7 -11
  310. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  311. package/dist/scss/app.scss +0 -183
  312. package/dist/scss/colors.scss +0 -191
  313. package/dist/scss/custom.css +0 -1
  314. package/dist/scss/queries.scss +0 -27
  315. package/dist/scss/styles.scss +0 -9
  316. package/dist/scss/svg.scss +0 -10
  317. package/dist/scss/toastify.scss +0 -61
  318. package/dist/scss/vars.scss +0 -192
  319. package/dist/scss/z-index.scss +0 -9
@@ -49,7 +49,6 @@
49
49
  }
50
50
 
51
51
  .table-section__content {
52
- padding: 0 calc(var(--spacer-3) - var(--spacer-2));
53
52
  padding-bottom: var(--spacer-2);
54
53
  }
55
54
 
@@ -9,7 +9,7 @@ export type ThumbnailProps = {
9
9
  height?: number;
10
10
  imageCacheTag?: false | string;
11
11
  size?: 'expand' | 'large' | 'medium' | 'none' | 'small';
12
- uploadConfig?: SanitizedCollectionConfig['upload'];
12
+ uploadConfig?: Omit<SanitizedCollectionConfig['upload'], 'uploadInstructions'>;
13
13
  width?: number;
14
14
  };
15
15
  export declare const Thumbnail: React.FC<ThumbnailProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Thumbnail/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,CAAA;AAIpB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAMxD,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC9B,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IACvD,YAAY,CAAC,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2C9C,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;CACjE,CAAA;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,qBAmChE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Thumbnail/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,CAAA;AAIpB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAMxD,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC9B,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IACvD,YAAY,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2C9C,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;CACjE,CAAA;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,qBAmChE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","baseClass","File","appendCacheTag","ShimmerEffect","Thumbnail","props","className","doc","filename","fileSrc","height","imageCacheTag","size","width","fileExists","setFileExists","useState","undefined","classNames","join","src","useMemo","useEffect","img","Image","onload","onerror","_jsxs","_jsx","alt","ThumbnailComponent"],"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.css'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { File } from '../../graphics/File/index.js'\nimport { appendCacheTag } from '../../utilities/appendCacheTag.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n height?: number\n imageCacheTag?: false | string\n size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n uploadConfig?: SanitizedCollectionConfig['upload']\n width?: number\n}\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const {\n className = '',\n doc: { filename } = {},\n fileSrc,\n height,\n imageCacheTag,\n size,\n width,\n } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n const src = React.useMemo(\n () => (fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null),\n [fileSrc, imageCacheTag],\n )\n\n React.useEffect(() => {\n if (!src) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = src\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [src])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} height={height} src={src} width={width} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n\ntype ThumbnailComponentProps = {\n readonly alt?: string\n readonly className?: string\n readonly filename: string\n readonly fileSrc: string\n readonly imageCacheTag?: false | string\n readonly size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n}\nexport function ThumbnailComponent(props: ThumbnailComponentProps) {\n const { alt, className = '', filename, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n const src = React.useMemo(\n () => (fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null),\n [fileSrc, imageCacheTag],\n )\n\n React.useEffect(() => {\n if (!src) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = src\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [src])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={alt || filename} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","baseClass","File","appendCacheTag","ShimmerEffect","Thumbnail","props","className","doc","filename","fileSrc","height","imageCacheTag","size","width","fileExists","setFileExists","useState","undefined","classNames","join","src","useMemo","useEffect","img","Image","onload","onerror","_jsxs","_jsx","alt","ThumbnailComponent"],"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.css'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { File } from '../../graphics/File/index.js'\nimport { appendCacheTag } from '../../utilities/appendCacheTag.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n height?: number\n imageCacheTag?: false | string\n size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n uploadConfig?: Omit<SanitizedCollectionConfig['upload'], 'uploadInstructions'>\n width?: number\n}\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const {\n className = '',\n doc: { filename } = {},\n fileSrc,\n height,\n imageCacheTag,\n size,\n width,\n } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n const src = React.useMemo(\n () => (fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null),\n [fileSrc, imageCacheTag],\n )\n\n React.useEffect(() => {\n if (!src) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = src\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [src])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} height={height} src={src} width={width} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n\ntype ThumbnailComponentProps = {\n readonly alt?: string\n readonly className?: string\n readonly filename: string\n readonly fileSrc: string\n readonly imageCacheTag?: false | string\n readonly size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n}\nexport function ThumbnailComponent(props: ThumbnailComponentProps) {\n const { alt, className = '', filename, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n const src = React.useMemo(\n () => (fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null),\n [fileSrc, imageCacheTag],\n )\n\n React.useEffect(() => {\n if (!src) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = src\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [src])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={alt || filename} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAIlB,SAASC,IAAI,QAAQ;AACrB,SAASC,cAAc,QAAQ;AAC/B,SAASC,aAAa,QAAQ;AAc9B,OAAO,MAAMC,SAAA,GAAuCC,KAAA;EAClD,MAAM;IACJC,SAAA,GAAY,EAAE;IACdC,GAAA,EAAK;MAAEC;IAAQ,CAAE,GAAG,CAAC,CAAC;IACtBC,OAAO;IACPC,MAAM;IACNC,aAAa;IACbC,IAAI;IACJC;EAAK,CACN,GAAGR,KAAA;EACJ,MAAM,CAACS,UAAA,EAAYC,aAAA,CAAc,GAAGhB,KAAA,CAAMiB,QAAQ,CAACC,SAAA;EAEnD,MAAMC,UAAA,GAAa,CAAClB,SAAA,EAAW,GAAGA,SAAA,UAAmBY,IAAA,IAAQ,UAAU,EAAEN,SAAA,CAAU,CAACa,IAAI,CAAC;EAEzF,MAAMC,GAAA,GAAMrB,KAAA,CAAMsB,OAAO,CACvB,MAAOZ,OAAA,GAAUP,cAAA,CAAeO,OAAA,EAASE,aAAA,IAAiB,MAC1D,CAACF,OAAA,EAASE,aAAA,CAAc;EAG1BZ,KAAA,CAAMuB,SAAS,CAAC;IACd,IAAI,CAACF,GAAA,EAAK;MACRL,aAAA,CAAc;MACd;IACF;IACAA,aAAA,CAAcE,SAAA;IAEd,MAAMM,GAAA,GAAM,IAAIC,KAAA;IAChBD,GAAA,CAAIH,GAAG,GAAGA,GAAA;IACVG,GAAA,CAAIE,MAAM,GAAG;MACXV,aAAA,CAAc;IAChB;IACAQ,GAAA,CAAIG,OAAO,GAAG;MACZX,aAAA,CAAc;IAChB;EACF,GAAG,CAACK,GAAA,CAAI;EAER,oBACEO,KAAA,CAAC;IAAIrB,SAAA,EAAWY,UAAA;eACbJ,UAAA,KAAeG,SAAA,iBAAaW,IAAA,CAACzB,aAAA;MAAcO,MAAA,EAAO;QAClDI,UAAA,iBAAcc,IAAA,CAAC;MAAIC,GAAA,EAAKrB,QAAA;MAAoBE,MAAA,EAAQA,MAAA;MAAQU,GAAA,EAAKA,GAAA;MAAKP,KAAA,EAAOA;QAC7EC,UAAA,KAAe,sBAASc,IAAA,CAAC3B,IAAA;;AAGhC;AAUA,OAAO,SAAS6B,mBAAmBzB,KAA8B;EAC/D,MAAM;IAAEwB,GAAG;IAAEvB,SAAA,GAAY,EAAE;IAAEE,QAAQ;IAAEC,OAAO;IAAEE,aAAa;IAAEC;EAAI,CAAE,GAAGP,KAAA;EACxE,MAAM,CAACS,UAAA,EAAYC,aAAA,CAAc,GAAGhB,KAAA,CAAMiB,QAAQ,CAACC,SAAA;EAEnD,MAAMC,UAAA,GAAa,CAAClB,SAAA,EAAW,GAAGA,SAAA,UAAmBY,IAAA,IAAQ,UAAU,EAAEN,SAAA,CAAU,CAACa,IAAI,CAAC;EAEzF,MAAMC,GAAA,GAAMrB,KAAA,CAAMsB,OAAO,CACvB,MAAOZ,OAAA,GAAUP,cAAA,CAAeO,OAAA,EAASE,aAAA,IAAiB,MAC1D,CAACF,OAAA,EAASE,aAAA,CAAc;EAG1BZ,KAAA,CAAMuB,SAAS,CAAC;IACd,IAAI,CAACF,GAAA,EAAK;MACRL,aAAA,CAAc;MACd;IACF;IACAA,aAAA,CAAcE,SAAA;IAEd,MAAMM,GAAA,GAAM,IAAIC,KAAA;IAChBD,GAAA,CAAIH,GAAG,GAAGA,GAAA;IACVG,GAAA,CAAIE,MAAM,GAAG;MACXV,aAAA,CAAc;IAChB;IACAQ,GAAA,CAAIG,OAAO,GAAG;MACZX,aAAA,CAAc;IAChB;EACF,GAAG,CAACK,GAAA,CAAI;EAER,oBACEO,KAAA,CAAC;IAAIrB,SAAA,EAAWY,UAAA;eACbJ,UAAA,KAAeG,SAAA,iBAAaW,IAAA,CAACzB,aAAA;MAAcO,MAAA,EAAO;QAClDI,UAAA,iBAAcc,IAAA,CAAC;MAAIC,GAAA,EAAKA,GAAA,IAAOrB,QAAA;MAAUY,GAAA,EAAKA;QAC9CN,UAAA,KAAe,sBAASc,IAAA,CAAC3B,IAAA;;AAGhC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TimezonePicker/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQvC,OAAO,aAAa,CAAA;AAgEpB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuE1C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TimezonePicker/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQvC,OAAO,aAAa,CAAA;AAqEpB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuE1C,CAAA"}
@@ -15,8 +15,12 @@ const SmallDropdownIndicator = props => {
15
15
  innerProps: {
16
16
  ref,
17
17
  ...restInnerProps
18
- }
18
+ },
19
+ isDisabled
19
20
  } = props;
21
+ if (isDisabled) {
22
+ return null;
23
+ }
20
24
  return /*#__PURE__*/_jsx("button", {
21
25
  className: "timezone-picker__dropdown-indicator",
22
26
  ref: ref,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useMemo","components","rsComponents","CheckIcon","ChevronIcon","CircledXIcon","useTranslation","ReactSelect","formatOptions","SmallDropdownIndicator","props","innerProps","ref","restInnerProps","_jsx","className","onKeyDown","e","key","type","size","SmallClearIndicator","clearValue","stopPropagation","role","tabIndex","TimezoneOption","children","_jsxs","Option","TimezonePicker","id","onChange","onChangeFromProps","options","optionsFromProps","readOnly","readOnlyFromProps","required","selectedTimezone","selectedTimezoneFromProps","t","find","value","Boolean","length","classNames","menu","menuList","ClearIndicator","DropdownIndicator","customProps","menuPortalTheme","disabled","inputId","isClearable","isCreatable","val","placeholder","styles","control","base","flexWrap","option","alignItems","display","gap","minWidth"],"sources":["../../../src/elements/TimezonePicker/index.tsx"],"sourcesContent":["'use client'\n\nimport type { OptionObject } from 'payload'\nimport type React from 'react'\nimport type { JSX } from 'react'\nimport type {\n ClearIndicatorProps,\n DropdownIndicatorProps,\n OptionProps,\n StylesConfig,\n} from 'react-select'\n\nimport { useMemo } from 'react'\nimport { components as rsComponents } from 'react-select'\n\nimport type { Option as OptionType } from '../ReactSelect/types.js'\nimport type { Props } from './types.js'\n\nimport { CheckIcon } from '../../icons/Check/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { CircledXIcon } from '../../icons/CircledX/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport { formatOptions } from '../WhereBuilder/Condition/Select/formatOptions.js'\nimport './index.css'\n\nconst SmallDropdownIndicator: React.FC<\n {\n innerProps: JSX.IntrinsicElements['button']\n } & DropdownIndicatorProps<OptionType, true>\n> = (props) => {\n const {\n innerProps: { ref, ...restInnerProps },\n } = props\n\n return (\n <button\n className=\"timezone-picker__dropdown-indicator\"\n ref={ref}\n {...restInnerProps}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.key = ' '\n }\n }}\n type=\"button\"\n >\n <ChevronIcon size={16} />\n </button>\n )\n}\n\nconst SmallClearIndicator: React.FC<ClearIndicatorProps<OptionType, true>> = (props) => {\n const {\n clearValue,\n innerProps: { ref, ...restInnerProps },\n } = props\n\n return (\n <div\n className=\"timezone-picker__clear-indicator\"\n ref={typeof ref === 'string' ? null : ref}\n {...restInnerProps}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n clearValue()\n e.stopPropagation()\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n <CircledXIcon size={24} />\n </div>\n )\n}\n\nconst TimezoneOption: React.FC<OptionProps<OptionType, false>> = (props) => {\n const { children } = props\n\n return (\n <rsComponents.Option {...props}>\n <CheckIcon className=\"timezone-picker__option-check\" size={16} />\n <span className=\"timezone-picker__option-label\">{children}</span>\n </rsComponents.Option>\n )\n}\n\nexport const TimezonePicker: React.FC<Props> = (props) => {\n const {\n id,\n onChange: onChangeFromProps,\n options: optionsFromProps,\n readOnly: readOnlyFromProps,\n required,\n selectedTimezone: selectedTimezoneFromProps,\n } = props\n\n const { t } = useTranslation()\n\n const options = formatOptions(optionsFromProps)\n\n const selectedTimezone = useMemo(() => {\n return options.find((t) => {\n const value = typeof t === 'string' ? t : t.value\n return value === selectedTimezoneFromProps\n })\n }, [options, selectedTimezoneFromProps])\n\n const readOnly = Boolean(readOnlyFromProps) || options.length === 1\n\n return (\n <div className=\"timezone-picker-wrapper\">\n <span className=\"timezone-picker__label\">\n {t('general:timezone')}\n {required && <span className=\"timezone-picker__required\">*</span>}\n </span>\n <ReactSelect\n className=\"timezone-picker\"\n classNames={{\n menu: () => 'timezone-picker__menu',\n menuList: () => 'timezone-picker__menu-list',\n }}\n components={{\n ClearIndicator: SmallClearIndicator,\n DropdownIndicator: SmallDropdownIndicator,\n Option: TimezoneOption,\n }}\n customProps={{ menuPortalTheme: 'dark' }}\n disabled={readOnly}\n inputId={id}\n isClearable={!required}\n isCreatable={false}\n onChange={(val: OptionObject) => {\n if (onChangeFromProps) {\n onChangeFromProps(val?.value || '')\n }\n }}\n options={options}\n placeholder={t('general:none')}\n styles={\n {\n control: (base) => ({\n ...base,\n flexWrap: 'nowrap',\n }),\n option: (base) => ({\n ...base,\n alignItems: 'center',\n display: 'flex',\n gap: 'var(--spacer-1)',\n minWidth: 0,\n }),\n } as StylesConfig<OptionType>\n }\n value={selectedTimezone}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useMemo","components","rsComponents","CheckIcon","ChevronIcon","CircledXIcon","useTranslation","ReactSelect","formatOptions","SmallDropdownIndicator","props","innerProps","ref","restInnerProps","isDisabled","_jsx","className","onKeyDown","e","key","type","size","SmallClearIndicator","clearValue","stopPropagation","role","tabIndex","TimezoneOption","children","_jsxs","Option","TimezonePicker","id","onChange","onChangeFromProps","options","optionsFromProps","readOnly","readOnlyFromProps","required","selectedTimezone","selectedTimezoneFromProps","t","find","value","Boolean","length","classNames","menu","menuList","ClearIndicator","DropdownIndicator","customProps","menuPortalTheme","disabled","inputId","isClearable","isCreatable","val","placeholder","styles","control","base","flexWrap","option","alignItems","display","gap","minWidth"],"sources":["../../../src/elements/TimezonePicker/index.tsx"],"sourcesContent":["'use client'\n\nimport type { OptionObject } from 'payload'\nimport type React from 'react'\nimport type { JSX } from 'react'\nimport type {\n ClearIndicatorProps,\n DropdownIndicatorProps,\n OptionProps,\n StylesConfig,\n} from 'react-select'\n\nimport { useMemo } from 'react'\nimport { components as rsComponents } from 'react-select'\n\nimport type { Option as OptionType } from '../ReactSelect/types.js'\nimport type { Props } from './types.js'\n\nimport { CheckIcon } from '../../icons/Check/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { CircledXIcon } from '../../icons/CircledX/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport { formatOptions } from '../WhereBuilder/Condition/Select/formatOptions.js'\nimport './index.css'\n\nconst SmallDropdownIndicator: React.FC<\n {\n innerProps: JSX.IntrinsicElements['button']\n } & DropdownIndicatorProps<OptionType, true>\n> = (props) => {\n const {\n innerProps: { ref, ...restInnerProps },\n isDisabled,\n } = props\n\n if (isDisabled) {\n return null\n }\n\n return (\n <button\n className=\"timezone-picker__dropdown-indicator\"\n ref={ref}\n {...restInnerProps}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.key = ' '\n }\n }}\n type=\"button\"\n >\n <ChevronIcon size={16} />\n </button>\n )\n}\n\nconst SmallClearIndicator: React.FC<ClearIndicatorProps<OptionType, true>> = (props) => {\n const {\n clearValue,\n innerProps: { ref, ...restInnerProps },\n } = props\n\n return (\n <div\n className=\"timezone-picker__clear-indicator\"\n ref={typeof ref === 'string' ? null : ref}\n {...restInnerProps}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n clearValue()\n e.stopPropagation()\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n <CircledXIcon size={24} />\n </div>\n )\n}\n\nconst TimezoneOption: React.FC<OptionProps<OptionType, false>> = (props) => {\n const { children } = props\n\n return (\n <rsComponents.Option {...props}>\n <CheckIcon className=\"timezone-picker__option-check\" size={16} />\n <span className=\"timezone-picker__option-label\">{children}</span>\n </rsComponents.Option>\n )\n}\n\nexport const TimezonePicker: React.FC<Props> = (props) => {\n const {\n id,\n onChange: onChangeFromProps,\n options: optionsFromProps,\n readOnly: readOnlyFromProps,\n required,\n selectedTimezone: selectedTimezoneFromProps,\n } = props\n\n const { t } = useTranslation()\n\n const options = formatOptions(optionsFromProps)\n\n const selectedTimezone = useMemo(() => {\n return options.find((t) => {\n const value = typeof t === 'string' ? t : t.value\n return value === selectedTimezoneFromProps\n })\n }, [options, selectedTimezoneFromProps])\n\n const readOnly = Boolean(readOnlyFromProps) || options.length === 1\n\n return (\n <div className=\"timezone-picker-wrapper\">\n <span className=\"timezone-picker__label\">\n {t('general:timezone')}\n {required && <span className=\"timezone-picker__required\">*</span>}\n </span>\n <ReactSelect\n className=\"timezone-picker\"\n classNames={{\n menu: () => 'timezone-picker__menu',\n menuList: () => 'timezone-picker__menu-list',\n }}\n components={{\n ClearIndicator: SmallClearIndicator,\n DropdownIndicator: SmallDropdownIndicator,\n Option: TimezoneOption,\n }}\n customProps={{ menuPortalTheme: 'dark' }}\n disabled={readOnly}\n inputId={id}\n isClearable={!required}\n isCreatable={false}\n onChange={(val: OptionObject) => {\n if (onChangeFromProps) {\n onChangeFromProps(val?.value || '')\n }\n }}\n options={options}\n placeholder={t('general:none')}\n styles={\n {\n control: (base) => ({\n ...base,\n flexWrap: 'nowrap',\n }),\n option: (base) => ({\n ...base,\n alignItems: 'center',\n display: 'flex',\n gap: 'var(--spacer-1)',\n minWidth: 0,\n }),\n } as StylesConfig<OptionType>\n }\n value={selectedTimezone}\n />\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAYA,SAASA,OAAO,QAAQ;AACxB,SAASC,UAAA,IAAcC,YAAY,QAAQ;AAK3C,SAASC,SAAS,QAAQ;AAC1B,SAASC,WAAW,QAAQ;AAC5B,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,WAAW,QAAQ;AAC5B,SAASC,aAAa,QAAQ;AAC9B,OAAO;AAEP,MAAMC,sBAAA,GAIDC,KAAA;EACH,MAAM;IACJC,UAAA,EAAY;MAAEC,GAAG;MAAE,GAAGC;IAAA,CAAgB;IACtCC;EAAU,CACX,GAAGJ,KAAA;EAEJ,IAAII,UAAA,EAAY;IACd,OAAO;EACT;EAEA,oBACEC,IAAA,CAAC;IACCC,SAAA,EAAU;IACVJ,GAAA,EAAKA,GAAA;IACJ,GAAGC,cAAc;IAClBI,SAAA,EAAYC,CAAA;MACV,IAAIA,CAAA,CAAEC,GAAG,KAAK,SAAS;QACrBD,CAAA,CAAEC,GAAG,GAAG;MACV;IACF;IACAC,IAAA,EAAK;cAEL,aAAAL,IAAA,CAACX,WAAA;MAAYiB,IAAA,EAAM;;;AAGzB;AAEA,MAAMC,mBAAA,GAAwEZ,KAAA;EAC5E,MAAM;IACJa,UAAU;IACVZ,UAAA,EAAY;MAAEC,GAAG;MAAE,GAAGC;IAAA;EAAgB,CACvC,GAAGH,KAAA;EAEJ,oBACEK,IAAA,CAAC;IACCC,SAAA,EAAU;IACVJ,GAAA,EAAK,OAAOA,GAAA,KAAQ,WAAW,OAAOA,GAAA;IACrC,GAAGC,cAAc;IAClBI,SAAA,EAAYC,CAAA;MACV,IAAIA,CAAA,CAAEC,GAAG,KAAK,SAAS;QACrBI,UAAA;QACAL,CAAA,CAAEM,eAAe;MACnB;IACF;IACAC,IAAA,EAAK;IACLC,QAAA,EAAU;cAEV,aAAAX,IAAA,CAACV,YAAA;MAAagB,IAAA,EAAM;;;AAG1B;AAEA,MAAMM,cAAA,GAA4DjB,KAAA;EAChE,MAAM;IAAEkB;EAAQ,CAAE,GAAGlB,KAAA;EAErB,oBACEmB,KAAA,CAAC3B,YAAA,CAAa4B,MAAM;IAAE,GAAGpB,KAAK;4BAC5BK,IAAA,CAACZ,SAAA;MAAUa,SAAA,EAAU;MAAgCK,IAAA,EAAM;qBAC3DN,IAAA,CAAC;MAAKC,SAAA,EAAU;gBAAiCY;;;AAGvD;AAEA,OAAO,MAAMG,cAAA,GAAmCrB,KAAA;EAC9C,MAAM;IACJsB,EAAE;IACFC,QAAA,EAAUC,iBAAiB;IAC3BC,OAAA,EAASC,gBAAgB;IACzBC,QAAA,EAAUC,iBAAiB;IAC3BC,QAAQ;IACRC,gBAAA,EAAkBC;EAAyB,CAC5C,GAAG/B,KAAA;EAEJ,MAAM;IAAEgC;EAAC,CAAE,GAAGpC,cAAA;EAEd,MAAM6B,OAAA,GAAU3B,aAAA,CAAc4B,gBAAA;EAE9B,MAAMI,gBAAA,GAAmBxC,OAAA,CAAQ;IAC/B,OAAOmC,OAAA,CAAQQ,IAAI,CAAED,GAAA;MACnB,MAAME,KAAA,GAAQ,OAAOF,GAAA,KAAM,WAAWA,GAAA,GAAIA,GAAA,CAAEE,KAAK;MACjD,OAAOA,KAAA,KAAUH,yBAAA;IACnB;EACF,GAAG,CAACN,OAAA,EAASM,yBAAA,CAA0B;EAEvC,MAAMJ,QAAA,GAAWQ,OAAA,CAAQP,iBAAA,KAAsBH,OAAA,CAAQW,MAAM,KAAK;EAElE,oBACEjB,KAAA,CAAC;IAAIb,SAAA,EAAU;4BACba,KAAA,CAAC;MAAKb,SAAA,EAAU;iBACb0B,CAAA,CAAE,qBACFH,QAAA,iBAAYxB,IAAA,CAAC;QAAKC,SAAA,EAAU;kBAA4B;;qBAE3DD,IAAA,CAACR,WAAA;MACCS,SAAA,EAAU;MACV+B,UAAA,EAAY;QACVC,IAAA,EAAMA,CAAA,KAAM;QACZC,QAAA,EAAUA,CAAA,KAAM;MAClB;MACAhD,UAAA,EAAY;QACViD,cAAA,EAAgB5B,mBAAA;QAChB6B,iBAAA,EAAmB1C,sBAAA;QACnBqB,MAAA,EAAQH;MACV;MACAyB,WAAA,EAAa;QAAEC,eAAA,EAAiB;MAAO;MACvCC,QAAA,EAAUjB,QAAA;MACVkB,OAAA,EAASvB,EAAA;MACTwB,WAAA,EAAa,CAACjB,QAAA;MACdkB,WAAA,EAAa;MACbxB,QAAA,EAAWyB,GAAA;QACT,IAAIxB,iBAAA,EAAmB;UACrBA,iBAAA,CAAkBwB,GAAA,EAAKd,KAAA,IAAS;QAClC;MACF;MACAT,OAAA,EAASA,OAAA;MACTwB,WAAA,EAAajB,CAAA,CAAE;MACfkB,MAAA,EACE;QACEC,OAAA,EAAUC,IAAA,KAAU;UAClB,GAAGA,IAAI;UACPC,QAAA,EAAU;QACZ;QACAC,MAAA,EAASF,MAAA,KAAU;UACjB,GAAGA,MAAI;UACPG,UAAA,EAAY;UACZC,OAAA,EAAS;UACTC,GAAA,EAAK;UACLC,QAAA,EAAU;QACZ;MACF;MAEFxB,KAAA,EAAOJ;;;AAIf","ignoreList":[]}
@@ -4,15 +4,18 @@
4
4
  --caret-height: 7px;
5
5
  --caret-offset: 4px;
6
6
  --caret-border-color: var(--color-border);
7
- --tooltip-x: -50%;
8
7
  --tooltip-caret-x: 0px;
8
+ --tooltip-caret-y: 0px;
9
9
  --tooltip-max-width: none;
10
10
 
11
+ position: fixed;
12
+ top: 0;
13
+ left: 0;
14
+ z-index: var(--z-portal-element);
15
+ pointer-events: none;
16
+
11
17
  opacity: 0;
12
18
  background-color: var(--color-bg-tooltip);
13
- position: absolute;
14
- z-index: 3;
15
- left: 50%;
16
19
  max-width: var(--tooltip-max-width);
17
20
  padding: var(--spacer-1);
18
21
  color: var(--color-text-ontooltip);
@@ -26,6 +29,11 @@
26
29
  box-shadow: var(--elevation-300-tooltip);
27
30
  visibility: hidden;
28
31
 
32
+ &[data-wrap] {
33
+ white-space: normal;
34
+ overflow-wrap: break-word;
35
+ }
36
+
29
37
  &.field-error {
30
38
  background-color: var(--color-bg-danger);
31
39
  color: var(--color-text-ondanger);
@@ -51,11 +59,6 @@
51
59
  }
52
60
  }
53
61
 
54
- .tooltip--wrap {
55
- white-space: normal;
56
- overflow-wrap: break-word;
57
- }
58
-
59
62
  .tooltip__caret {
60
63
  position: absolute;
61
64
  pointer-events: none;
@@ -76,7 +79,6 @@
76
79
  .tooltip--show {
77
80
  visibility: visible;
78
81
  opacity: 1;
79
- transition: opacity 0.2s ease-in-out;
80
82
  cursor: default;
81
83
  }
82
84
 
@@ -94,13 +96,6 @@
94
96
  }
95
97
 
96
98
  .tooltip--position-top {
97
- top: 0;
98
- transform: translate3d(
99
- var(--tooltip-x),
100
- calc(-100% - var(--caret-height) - var(--caret-offset) + 1px),
101
- 0
102
- );
103
-
104
99
  .tooltip__caret {
105
100
  --color-border: var(--ramp-grey-700);
106
101
  top: calc(100% - 0.5px);
@@ -112,13 +107,6 @@
112
107
  }
113
108
 
114
109
  .tooltip--position-bottom {
115
- top: 100%;
116
- transform: translate3d(
117
- var(--tooltip-x),
118
- calc(var(--caret-height) + var(--caret-offset) - 1px),
119
- 0
120
- );
121
-
122
110
  .tooltip__caret {
123
111
  bottom: calc(100% - 0.5px);
124
112
  transform: rotate(180deg);
@@ -134,28 +122,21 @@
134
122
  }
135
123
 
136
124
  .tooltip--position-left {
137
- top: 50%;
138
- left: 0;
139
- transform: translate3d(calc(-100% - var(--caret-height) - var(--caret-offset)), -50%, 0);
140
-
141
125
  .tooltip__caret {
142
126
  top: calc(50% + 0.5px);
143
127
  left: calc(100% - 0.5px);
144
- transform: translateY(calc(1 * var(--caret-width) / 2)) rotate(-90deg);
128
+ transform: translateY(calc(1 * var(--caret-width) / 2 + var(--tooltip-caret-y)))
129
+ rotate(-90deg);
145
130
  transform-origin: top left;
146
131
  }
147
132
  }
148
133
 
149
134
  .tooltip--position-right {
150
- top: 50%;
151
- left: 100%;
152
- transform: translate3d(calc(var(--caret-height) + var(--caret-offset)), -50%, 0);
153
-
154
135
  .tooltip__caret {
155
136
  top: calc(50% + 0.5px);
156
137
  left: unset;
157
138
  right: calc(100% - 0.5px);
158
- transform: translateY(calc(1 * var(--caret-width) / 2)) rotate(90deg);
139
+ transform: translateY(calc(1 * var(--caret-width) / 2 + var(--tooltip-caret-y))) rotate(90deg);
159
140
  transform-origin: top right;
160
141
  }
161
142
  }
@@ -1,17 +1,25 @@
1
1
  import React from 'react';
2
2
  import './index.css';
3
+ type Side = 'bottom' | 'left' | 'right' | 'top';
3
4
  export type Props = {
4
5
  alignCaret?: 'center' | 'left' | 'right';
5
- boundingRef?: React.RefObject<HTMLElement | null>;
6
6
  children: React.ReactNode;
7
7
  className?: string;
8
8
  delay?: number;
9
- position?: 'bottom' | 'left' | 'right' | 'top';
9
+ /**
10
+ * Applied to the portaled tooltip element, so it can be located independent of its
11
+ * position in the DOM (e.g. by tests).
12
+ */
13
+ id?: string;
14
+ position?: Side;
10
15
  show?: boolean;
11
16
  /**
12
- * If the tooltip position should not change depending on if the toolbar is outside the boundingRef. @default false
17
+ * Disables adaptive placement: the tooltip always renders on `position` (or its
18
+ * default) instead of flipping to whichever side has room. It does not affect
19
+ * portaling - every tooltip is portaled to `document.body` regardless. @default false
13
20
  */
14
21
  staticPositioning?: boolean;
15
22
  };
16
23
  export declare const Tooltip: React.FC<Props>;
24
+ export {};
17
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Tooltip/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAGhF,OAAO,aAAa,CAAA;AAwBpB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IACxC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACjD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAA;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAsBD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsJnC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Tooltip/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoE,MAAM,OAAO,CAAA;AAGxF,OAAO,aAAa,CAAA;AAOpB,KAAK,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAA;AAE/C,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAwCD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAyOnC,CAAA"}
@@ -2,24 +2,13 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
- import React, { useCallback, useEffect, useLayoutEffect, useState } from 'react';
6
- import { useIntersect } from '../../hooks/useIntersect.js';
5
+ import { autoUpdate, computePosition, flip, hide, offset, shift, size } from '@floating-ui/dom';
6
+ import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
7
+ import { createPortal } from 'react-dom';
7
8
  import './index.css';
8
- // Breathing room (px) between a shifted tooltip and its clipping edge. Maps to `--spacer-1`.
9
9
  const EDGE_GUTTER = 4;
10
- const getClipBoundary = el => {
11
- let current = el?.parentElement || null;
12
- while (current) {
13
- const {
14
- overflowX
15
- } = window.getComputedStyle(current);
16
- if (overflowX === 'auto' || overflowX === 'clip' || overflowX === 'hidden' || overflowX === 'scroll') {
17
- return current.getBoundingClientRect();
18
- }
19
- current = current.parentElement;
20
- }
21
- return null;
22
- };
10
+ const TOP_BOTTOM_OFFSET = 10;
11
+ const LEFT_RIGHT_OFFSET = 11;
23
12
  const TooltipCaret = () => {
24
13
  const $ = _c(2);
25
14
  const clipId = React.useId();
@@ -55,10 +44,24 @@ const TooltipCaret = () => {
55
44
  }
56
45
  return t0;
57
46
  };
47
+ const isTriggerHidden = element => {
48
+ if (typeof element.checkVisibility === 'function') {
49
+ return !element.checkVisibility();
50
+ }
51
+ // Fallback for browsers without `checkVisibility`: an element collapsed by a
52
+ // `display: none` ancestor has no client rects.
53
+ return element.getClientRects().length === 0;
54
+ };
55
+ const toPlacement = (side, alignCaret) => {
56
+ if (side === 'left' || side === 'right' || alignCaret === 'center') {
57
+ return side;
58
+ }
59
+ return `${side}-${alignCaret === 'left' ? 'start' : 'end'}`;
60
+ };
58
61
  export const Tooltip = props => {
59
62
  const {
63
+ id,
60
64
  alignCaret = 'center',
61
- boundingRef,
62
65
  children,
63
66
  className,
64
67
  delay = 500,
@@ -66,15 +69,16 @@ export const Tooltip = props => {
66
69
  show: showFromProps = true,
67
70
  staticPositioning = false
68
71
  } = props;
69
- const [show, setShow] = React.useState(showFromProps);
70
- const [position, setPosition] = React.useState('top');
71
- const [shiftX, setShiftX] = useState(0);
72
- const [maxWidth, setMaxWidth] = useState(null);
73
- const [ref, intersectionEntry, node] = useIntersect({
74
- root: boundingRef?.current || null,
75
- rootMargin: '-145px 0px 0px 100px',
76
- threshold: 0
77
- }, staticPositioning);
72
+ const generatedID = React.useId();
73
+ const tooltipID = id || generatedID;
74
+ const [show, setShow] = useState(showFromProps);
75
+ const [isMounted, setIsMounted] = useState(false);
76
+ const [placement, setPlacement] = useState(positionFromProps || 'top');
77
+ // A hidden marker rendered where the tooltip used to live in the DOM, so its
78
+ // parent element can be used as the floating-ui reference for the portaled tooltip.
79
+ const triggerMarkerRef = useRef(null);
80
+ const floatingRef = useRef(null);
81
+ const updateTokenRef = useRef(0);
78
82
  useEffect(() => {
79
83
  let timerID;
80
84
  // do not use the delay on transition-out
@@ -91,83 +95,145 @@ export const Tooltip = props => {
91
95
  }
92
96
  };
93
97
  }, [showFromProps, delay]);
98
+ // Keep the tooltip mounted for the duration of its fade-out transition so the
99
+ // portal doesn't disappear abruptly when `show` flips back to false.
94
100
  useEffect(() => {
95
- if (staticPositioning) {
101
+ if (show) {
102
+ setIsMounted(true);
96
103
  return;
97
104
  }
98
- setPosition(intersectionEntry?.isIntersecting ? 'top' : 'bottom');
99
- }, [intersectionEntry, staticPositioning]);
100
- // Keep a horizontally-centered tooltip (top/bottom) inside its boundary by
101
- // shifting it inward by exactly the amount it would overflow. The hidden
102
- // measuring aside (`node`) provides the natural, unshifted geometry.
103
- const computeShift = useCallback(() => {
104
- const usesHorizontalCenter = (positionFromProps || position) === 'top' || (positionFromProps || position) === 'bottom';
105
- if (staticPositioning || !node || !usesHorizontalCenter) {
106
- setShiftX(0);
107
- setMaxWidth(null);
105
+ // Matches the `.tooltip--show` opacity transition duration.
106
+ const timeoutID = setTimeout(() => setIsMounted(false), 200);
107
+ return () => {
108
+ clearTimeout(timeoutID);
109
+ };
110
+ }, [show]);
111
+ const updatePosition = useCallback(async () => {
112
+ const trigger = triggerMarkerRef.current?.parentElement;
113
+ const floatingElement = floatingRef.current;
114
+ if (!trigger || !floatingElement) {
108
115
  return;
109
116
  }
110
- const rect = node.getBoundingClientRect();
111
- const boundary = boundingRef?.current?.getBoundingClientRect() ?? getClipBoundary(node) ?? undefined;
112
- const leftEdge = (boundary?.left ?? 0) + EDGE_GUTTER;
113
- const rightEdge = (boundary?.right ?? window.innerWidth) - EDGE_GUTTER;
114
- const available = rightEdge - leftEdge;
115
- // When the tooltip can't fit even at full boundary width, cap it so it wraps.
116
- const nextMaxWidth = rect.width > available ? available : null;
117
- setMaxWidth(nextMaxWidth);
118
- // Compute the shift against the clamped box, kept centered on the anchor.
119
- const center = rect.left + rect.width / 2;
120
- const effectiveWidth = nextMaxWidth ?? rect.width;
121
- const effectiveLeft = center - effectiveWidth / 2;
122
- const effectiveRight = center + effectiveWidth / 2;
123
- let shift = 0;
124
- if (effectiveRight > rightEdge) {
125
- shift = rightEdge - effectiveRight;
126
- }
127
- if (effectiveLeft + shift < leftEdge) {
128
- shift = leftEdge - effectiveLeft;
117
+ const token = ++updateTokenRef.current;
118
+ const boundary = 'clippingAncestors';
119
+ const canFlip = !staticPositioning && !positionFromProps;
120
+ const {
121
+ middlewareData,
122
+ placement: resolvedPlacement,
123
+ x,
124
+ y
125
+ } = await computePosition(trigger, floatingElement, {
126
+ middleware: [offset(({
127
+ placement: currentPlacement
128
+ }) => currentPlacement.startsWith('left') || currentPlacement.startsWith('right') ? LEFT_RIGHT_OFFSET : TOP_BOTTOM_OFFSET), ...(canFlip ? [flip({
129
+ boundary,
130
+ padding: EDGE_GUTTER
131
+ })] : []), ...(staticPositioning ? [] : [shift({
132
+ boundary,
133
+ padding: EDGE_GUTTER
134
+ }), size({
135
+ apply({
136
+ availableWidth,
137
+ elements
138
+ }) {
139
+ const shouldWrap = elements.floating.scrollWidth > availableWidth;
140
+ elements.floating.toggleAttribute('data-wrap', shouldWrap);
141
+ elements.floating.style.setProperty('--tooltip-max-width', shouldWrap ? `${Math.floor(availableWidth)}px` : '');
142
+ },
143
+ boundary,
144
+ padding: EDGE_GUTTER
145
+ })]), hide({
146
+ boundary: 'clippingAncestors'
147
+ })],
148
+ placement: toPlacement(positionFromProps || 'top', alignCaret),
149
+ strategy: 'fixed'
150
+ });
151
+ // A newer call already applied a fresher position - discard this stale result.
152
+ if (token !== updateTokenRef.current) {
153
+ return;
129
154
  }
130
- setShiftX(shift);
131
- }, [boundingRef, node, position, positionFromProps, staticPositioning]);
155
+ const hidden = isTriggerHidden(trigger) || Boolean(middlewareData.hide?.referenceHidden);
156
+ Object.assign(floatingElement.style, {
157
+ left: `${x}px`,
158
+ top: `${y}px`,
159
+ visibility: hidden ? 'hidden' : ''
160
+ });
161
+ const resolvedSide = resolvedPlacement.split('-')[0];
162
+ const isHorizontalSide = resolvedSide === 'left' || resolvedSide === 'right';
163
+ const shiftX = !isHorizontalSide && alignCaret === 'center' ? middlewareData.shift?.x || 0 : 0;
164
+ const shiftY = isHorizontalSide ? middlewareData.shift?.y || 0 : 0;
165
+ floatingElement.style.setProperty('--tooltip-caret-x', shiftX ? `${-shiftX}px` : '0px');
166
+ floatingElement.style.setProperty('--tooltip-caret-y', shiftY ? `${-shiftY}px` : '0px');
167
+ setPlacement(resolvedSide);
168
+ }, [alignCaret, positionFromProps, staticPositioning]);
169
+ const setFloatingElement = useCallback(element => {
170
+ floatingRef.current = element;
171
+ void updatePosition();
172
+ }, [updatePosition]);
173
+ // While mounted, let floating-ui keep the portaled tooltip aligned to its trigger
174
+ // as the page scrolls, the trigger resizes or moves, or a hidden ancestor becomes
175
+ // visible again - instead of manually re-measuring on window scroll/resize alone.
132
176
  useLayoutEffect(() => {
133
- if (!show) {
177
+ const trigger_0 = triggerMarkerRef.current?.parentElement;
178
+ const floatingElement_0 = floatingRef.current;
179
+ if (!isMounted || !trigger_0 || !floatingElement_0) {
134
180
  return;
135
181
  }
136
- computeShift();
137
- window.addEventListener('resize', computeShift);
182
+ const cleanupAutoUpdate = autoUpdate(trigger_0, floatingElement_0, updatePosition, {
183
+ elementResize: 'ResizeObserver' in window
184
+ });
185
+ // autoUpdate's own layout-shift tracking gives up once the trigger's rect
186
+ // collapses to zero (e.g. behind a `display: none` ancestor), so it can't
187
+ // tell when the trigger becomes visible again. Watch for that separately.
188
+ const visibilityObserver = typeof IntersectionObserver === 'function' ? new IntersectionObserver(() => void updatePosition(), {
189
+ threshold: 0
190
+ }) : null;
191
+ visibilityObserver?.observe(trigger_0);
192
+ const visualViewport = window.visualViewport;
193
+ visualViewport?.addEventListener('resize', updatePosition);
194
+ visualViewport?.addEventListener('scroll', updatePosition);
195
+ return () => {
196
+ cleanupAutoUpdate();
197
+ visibilityObserver?.disconnect();
198
+ visualViewport?.removeEventListener('resize', updatePosition);
199
+ visualViewport?.removeEventListener('scroll', updatePosition);
200
+ };
201
+ }, [isMounted, updatePosition]);
202
+ useEffect(() => {
203
+ const trigger_1 = triggerMarkerRef.current?.parentElement;
204
+ if (!show || !trigger_1) {
205
+ return;
206
+ }
207
+ const describedByIDs = trigger_1.getAttribute('aria-describedby')?.split(' ') || [];
208
+ if (!describedByIDs.includes(tooltipID)) {
209
+ trigger_1.setAttribute('aria-describedby', [...describedByIDs, tooltipID].join(' '));
210
+ }
138
211
  return () => {
139
- window.removeEventListener('resize', computeShift);
212
+ const remainingIDs = (trigger_1.getAttribute('aria-describedby')?.split(' ') || []).filter(describedByID => describedByID !== tooltipID);
213
+ if (remainingIDs.length) {
214
+ trigger_1.setAttribute('aria-describedby', remainingIDs.join(' '));
215
+ } else {
216
+ trigger_1.removeAttribute('aria-describedby');
217
+ }
140
218
  };
141
- }, [show, computeShift]);
142
- // The first aside is always on top. The purpose of that is that it can reliably be used for the interaction observer (as it's not moving around), to calculate the position of the actual tooltip.
219
+ }, [show, tooltipID]);
143
220
  return /*#__PURE__*/_jsxs(React.Fragment, {
144
- children: [!staticPositioning && /*#__PURE__*/_jsxs("aside", {
221
+ children: [/*#__PURE__*/_jsx("span", {
145
222
  "aria-hidden": "true",
146
- className: ['tooltip', className, `tooltip--caret-${alignCaret}`, 'tooltip--position-top'].filter(Boolean).join(' '),
147
- ref: ref,
223
+ ref: triggerMarkerRef,
148
224
  style: {
149
- opacity: '0'
150
- },
151
- children: [/*#__PURE__*/_jsx(TooltipCaret, {}), /*#__PURE__*/_jsx("div", {
152
- className: "tooltip-content",
153
- children: children
154
- })]
155
- }), /*#__PURE__*/_jsxs("aside", {
156
- className: ['tooltip', className, show && 'tooltip--show', maxWidth && 'tooltip--wrap', `tooltip--caret-${alignCaret}`, `tooltip--position-${positionFromProps || position}`].filter(Boolean).join(' '),
157
- style: {
158
- ...(maxWidth ? {
159
- '--tooltip-max-width': `${maxWidth}px`
160
- } : {}),
161
- ...(shiftX ? {
162
- '--tooltip-caret-x': `${-shiftX}px`,
163
- '--tooltip-x': `calc(-50% + ${shiftX}px)`
164
- } : {})
165
- },
225
+ display: 'none'
226
+ }
227
+ }), isMounted && /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs("aside", {
228
+ className: ['tooltip', className, show && 'tooltip--show', `tooltip--caret-${alignCaret}`, `tooltip--position-${placement}`].filter(Boolean).join(' '),
229
+ id: tooltipID,
230
+ ref: setFloatingElement,
231
+ role: "tooltip",
166
232
  children: [/*#__PURE__*/_jsx(TooltipCaret, {}), /*#__PURE__*/_jsx("div", {
167
233
  className: "tooltip-content",
168
234
  children: children
169
235
  })]
170
- })]
236
+ }), document.body)]
171
237
  });
172
238
  };
173
239
  //# sourceMappingURL=index.js.map