@airtable/blocks 0.0.0-experimental-3e47d4d04-20250909 → 0.0.0-experimental-446b49015-20251008

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 (449) hide show
  1. package/dist/esm/base/models/base.js +1 -35
  2. package/dist/esm/base/types/airtable_interface.js +1 -3
  3. package/dist/esm/base/ui/block_wrapper.js +131 -96
  4. package/dist/esm/base/ui/cell_renderer.js +5 -176
  5. package/dist/esm/base/ui/global_alert.js +7 -3
  6. package/dist/esm/base/ui/global_css_helpers.js +28 -0
  7. package/dist/esm/base/ui/ui.js +1 -21
  8. package/dist/esm/base/ui/unstable_standalone_ui.js +28 -26
  9. package/dist/esm/base/ui/use_loadable.js +2 -3
  10. package/dist/esm/interface/models/base.js +0 -5
  11. package/dist/esm/interface/models/record_store.js +3 -0
  12. package/dist/esm/interface/types/airtable_interface.js +2 -3
  13. package/dist/esm/interface/ui/block_wrapper.js +45 -54
  14. package/dist/esm/interface/ui/cell_renderer.js +19 -0
  15. package/dist/esm/interface/ui/global_css_helpers.js +17 -0
  16. package/dist/esm/interface/ui/ui.js +1 -1
  17. package/dist/esm/interface/ui/use_custom_properties.js +43 -14
  18. package/dist/esm/shared/models/base_core.js +18 -3
  19. package/dist/esm/shared/private_utils.js +51 -1
  20. package/dist/esm/shared/sdk_core.js +1 -1
  21. package/dist/esm/shared/ui/cell_renderer.js +137 -0
  22. package/dist/esm/shared/ui/use_watchable.js +2 -3
  23. package/dist/types/src/base/models/base.d.ts.map +1 -1
  24. package/dist/types/src/base/types/airtable_interface.d.ts +1 -3
  25. package/dist/types/src/base/types/airtable_interface.d.ts.map +1 -1
  26. package/dist/types/src/base/types/base.d.ts +0 -1
  27. package/dist/types/src/base/types/base.d.ts.map +1 -1
  28. package/dist/types/src/base/ui/block_wrapper.d.ts +2 -16
  29. package/dist/types/src/base/ui/block_wrapper.d.ts.map +1 -1
  30. package/dist/types/src/base/ui/cell_renderer.d.ts +6 -58
  31. package/dist/types/src/base/ui/cell_renderer.d.ts.map +1 -1
  32. package/dist/types/src/base/ui/global_css_helpers.d.ts +4 -0
  33. package/dist/types/src/base/ui/global_css_helpers.d.ts.map +1 -0
  34. package/dist/types/src/base/ui/ui.d.ts +1 -21
  35. package/dist/types/src/base/ui/ui.d.ts.map +1 -1
  36. package/dist/types/src/base/ui/unstable_standalone_ui.d.ts +2 -22
  37. package/dist/types/src/base/ui/unstable_standalone_ui.d.ts.map +1 -1
  38. package/dist/types/src/base/ui/use_loadable.d.ts.map +1 -1
  39. package/dist/types/src/interface/models/base.d.ts.map +1 -1
  40. package/dist/types/src/interface/types/airtable_interface.d.ts +6 -4
  41. package/dist/types/src/interface/types/airtable_interface.d.ts.map +1 -1
  42. package/dist/types/src/interface/ui/block_wrapper.d.ts +1 -4
  43. package/dist/types/src/interface/ui/block_wrapper.d.ts.map +1 -1
  44. package/dist/types/src/interface/ui/cell_renderer.d.ts +19 -0
  45. package/dist/types/src/interface/ui/cell_renderer.d.ts.map +1 -0
  46. package/dist/types/src/interface/ui/global_css_helpers.d.ts +3 -0
  47. package/dist/types/src/interface/ui/global_css_helpers.d.ts.map +1 -0
  48. package/dist/types/src/interface/ui/ui.d.ts +1 -1
  49. package/dist/types/src/interface/ui/ui.d.ts.map +1 -1
  50. package/dist/types/src/interface/ui/use_custom_properties.d.ts +7 -0
  51. package/dist/types/src/interface/ui/use_custom_properties.d.ts.map +1 -1
  52. package/dist/types/src/shared/models/base_core.d.ts.map +1 -1
  53. package/dist/types/src/shared/private_utils.d.ts +9 -1
  54. package/dist/types/src/shared/private_utils.d.ts.map +1 -1
  55. package/dist/types/src/shared/types/base_core.d.ts +1 -0
  56. package/dist/types/src/shared/types/base_core.d.ts.map +1 -1
  57. package/dist/types/src/shared/ui/cell_renderer.d.ts +32 -0
  58. package/dist/types/src/shared/ui/cell_renderer.d.ts.map +1 -0
  59. package/dist/types/src/shared/ui/use_watchable.d.ts.map +1 -1
  60. package/package.json +5 -39
  61. package/dist/esm/base/ui/baymax_utils.js +0 -455
  62. package/dist/esm/base/ui/box.js +0 -77
  63. package/dist/esm/base/ui/button.js +0 -143
  64. package/dist/esm/base/ui/choice_token.js +0 -84
  65. package/dist/esm/base/ui/collaborator_token.js +0 -115
  66. package/dist/esm/base/ui/color_palette.js +0 -185
  67. package/dist/esm/base/ui/color_palette_synced.js +0 -62
  68. package/dist/esm/base/ui/confirmation_dialog.js +0 -96
  69. package/dist/esm/base/ui/control_sizes.js +0 -92
  70. package/dist/esm/base/ui/create_detect_element_resize.js +0 -197
  71. package/dist/esm/base/ui/css_helpers.js +0 -17
  72. package/dist/esm/base/ui/dialog.js +0 -93
  73. package/dist/esm/base/ui/dialog_close_button.js +0 -96
  74. package/dist/esm/base/ui/field_icon.js +0 -37
  75. package/dist/esm/base/ui/field_picker.js +0 -91
  76. package/dist/esm/base/ui/field_picker_synced.js +0 -59
  77. package/dist/esm/base/ui/form_field.js +0 -102
  78. package/dist/esm/base/ui/geometry/geometry.js +0 -9
  79. package/dist/esm/base/ui/geometry/point.js +0 -12
  80. package/dist/esm/base/ui/geometry/rect.js +0 -44
  81. package/dist/esm/base/ui/geometry/size.js +0 -12
  82. package/dist/esm/base/ui/heading.js +0 -125
  83. package/dist/esm/base/ui/icon.js +0 -102
  84. package/dist/esm/base/ui/icon_config.js +0 -423
  85. package/dist/esm/base/ui/input.js +0 -152
  86. package/dist/esm/base/ui/input_synced.js +0 -59
  87. package/dist/esm/base/ui/key_codes.js +0 -66
  88. package/dist/esm/base/ui/label.js +0 -73
  89. package/dist/esm/base/ui/link.js +0 -189
  90. package/dist/esm/base/ui/loader.js +0 -52
  91. package/dist/esm/base/ui/modal.js +0 -135
  92. package/dist/esm/base/ui/model_picker_select.js +0 -50
  93. package/dist/esm/base/ui/popover.js +0 -312
  94. package/dist/esm/base/ui/progress_bar.js +0 -106
  95. package/dist/esm/base/ui/record_card.js +0 -556
  96. package/dist/esm/base/ui/record_card_list.js +0 -292
  97. package/dist/esm/base/ui/select.js +0 -182
  98. package/dist/esm/base/ui/select_and_select_buttons_helpers.js +0 -53
  99. package/dist/esm/base/ui/select_buttons.js +0 -150
  100. package/dist/esm/base/ui/select_buttons_synced.js +0 -55
  101. package/dist/esm/base/ui/select_synced.js +0 -58
  102. package/dist/esm/base/ui/switch.js +0 -160
  103. package/dist/esm/base/ui/switch_synced.js +0 -46
  104. package/dist/esm/base/ui/synced.js +0 -39
  105. package/dist/esm/base/ui/system/all_styles_set.js +0 -86
  106. package/dist/esm/base/ui/system/appearance/appearance_set.js +0 -21
  107. package/dist/esm/base/ui/system/appearance/background_color.js +0 -12
  108. package/dist/esm/base/ui/system/appearance/border.js +0 -48
  109. package/dist/esm/base/ui/system/appearance/border_radius.js +0 -12
  110. package/dist/esm/base/ui/system/appearance/box_shadow.js +0 -12
  111. package/dist/esm/base/ui/system/appearance/opacity.js +0 -12
  112. package/dist/esm/base/ui/system/dimensions/dimensions_set.js +0 -23
  113. package/dist/esm/base/ui/system/dimensions/height.js +0 -12
  114. package/dist/esm/base/ui/system/dimensions/max_height.js +0 -12
  115. package/dist/esm/base/ui/system/dimensions/max_width.js +0 -12
  116. package/dist/esm/base/ui/system/dimensions/min_height.js +0 -12
  117. package/dist/esm/base/ui/system/dimensions/min_width.js +0 -12
  118. package/dist/esm/base/ui/system/dimensions/width.js +0 -12
  119. package/dist/esm/base/ui/system/display.js +0 -13
  120. package/dist/esm/base/ui/system/flex_container/align_content.js +0 -9
  121. package/dist/esm/base/ui/system/flex_container/align_items.js +0 -9
  122. package/dist/esm/base/ui/system/flex_container/flex_container_set.js +0 -23
  123. package/dist/esm/base/ui/system/flex_container/flex_direction.js +0 -9
  124. package/dist/esm/base/ui/system/flex_container/flex_wrap.js +0 -9
  125. package/dist/esm/base/ui/system/flex_container/justify_content.js +0 -9
  126. package/dist/esm/base/ui/system/flex_container/justify_items.js +0 -10
  127. package/dist/esm/base/ui/system/flex_item/align_self.js +0 -9
  128. package/dist/esm/base/ui/system/flex_item/flex.js +0 -9
  129. package/dist/esm/base/ui/system/flex_item/flex_basis.js +0 -9
  130. package/dist/esm/base/ui/system/flex_item/flex_grow.js +0 -9
  131. package/dist/esm/base/ui/system/flex_item/flex_item_set.js +0 -25
  132. package/dist/esm/base/ui/system/flex_item/flex_shrink.js +0 -9
  133. package/dist/esm/base/ui/system/flex_item/justify_self.js +0 -10
  134. package/dist/esm/base/ui/system/flex_item/order.js +0 -9
  135. package/dist/esm/base/ui/system/index.js +0 -96
  136. package/dist/esm/base/ui/system/overflow.js +0 -15
  137. package/dist/esm/base/ui/system/position/bottom.js +0 -17
  138. package/dist/esm/base/ui/system/position/left.js +0 -17
  139. package/dist/esm/base/ui/system/position/position.js +0 -9
  140. package/dist/esm/base/ui/system/position/position_set.js +0 -23
  141. package/dist/esm/base/ui/system/position/right.js +0 -17
  142. package/dist/esm/base/ui/system/position/top.js +0 -17
  143. package/dist/esm/base/ui/system/position/z_index.js +0 -12
  144. package/dist/esm/base/ui/system/spacing/margin.js +0 -65
  145. package/dist/esm/base/ui/system/spacing/padding.js +0 -58
  146. package/dist/esm/base/ui/system/spacing/spacing_set.js +0 -15
  147. package/dist/esm/base/ui/system/typography/font_family.js +0 -12
  148. package/dist/esm/base/ui/system/typography/font_size.js +0 -12
  149. package/dist/esm/base/ui/system/typography/font_style.js +0 -9
  150. package/dist/esm/base/ui/system/typography/font_weight.js +0 -12
  151. package/dist/esm/base/ui/system/typography/letter_spacing.js +0 -12
  152. package/dist/esm/base/ui/system/typography/line_height.js +0 -9
  153. package/dist/esm/base/ui/system/typography/text_align.js +0 -9
  154. package/dist/esm/base/ui/system/typography/text_color.js +0 -12
  155. package/dist/esm/base/ui/system/typography/text_decoration.js +0 -9
  156. package/dist/esm/base/ui/system/typography/text_transform.js +0 -9
  157. package/dist/esm/base/ui/system/typography/typography_set.js +0 -31
  158. package/dist/esm/base/ui/system/utils/csstype.js +0 -1
  159. package/dist/esm/base/ui/system/utils/ensure_numbers_are_within_scale.js +0 -36
  160. package/dist/esm/base/ui/system/utils/get_style_props_for_responsive_prop.js +0 -67
  161. package/dist/esm/base/ui/system/utils/types.js +0 -1
  162. package/dist/esm/base/ui/table_picker.js +0 -64
  163. package/dist/esm/base/ui/table_picker_synced.js +0 -55
  164. package/dist/esm/base/ui/text.js +0 -109
  165. package/dist/esm/base/ui/text_button.js +0 -189
  166. package/dist/esm/base/ui/theme/default_theme/button_variants.js +0 -53
  167. package/dist/esm/base/ui/theme/default_theme/control_sizes.js +0 -96
  168. package/dist/esm/base/ui/theme/default_theme/heading_styles.js +0 -93
  169. package/dist/esm/base/ui/theme/default_theme/index.js +0 -31
  170. package/dist/esm/base/ui/theme/default_theme/input_variants.js +0 -32
  171. package/dist/esm/base/ui/theme/default_theme/link_variants.js +0 -29
  172. package/dist/esm/base/ui/theme/default_theme/select_buttons_variants.js +0 -66
  173. package/dist/esm/base/ui/theme/default_theme/select_variants.js +0 -44
  174. package/dist/esm/base/ui/theme/default_theme/switch_variants.js +0 -78
  175. package/dist/esm/base/ui/theme/default_theme/text_button_variants.js +0 -38
  176. package/dist/esm/base/ui/theme/default_theme/text_styles.js +0 -75
  177. package/dist/esm/base/ui/theme/default_theme/tokens.js +0 -205
  178. package/dist/esm/base/ui/theme/theme_context.js +0 -7
  179. package/dist/esm/base/ui/theme/use_theme.js +0 -4
  180. package/dist/esm/base/ui/tooltip.js +0 -165
  181. package/dist/esm/base/ui/types/aria_props.js +0 -1
  182. package/dist/esm/base/ui/types/data_attributes_prop.js +0 -1
  183. package/dist/esm/base/ui/types/tooltip_anchor_props.js +0 -1
  184. package/dist/esm/base/ui/use_form_field.js +0 -14
  185. package/dist/esm/base/ui/use_styled_system.js +0 -19
  186. package/dist/esm/base/ui/use_text_color_for_background_color.js +0 -9
  187. package/dist/esm/base/ui/view_picker.js +0 -82
  188. package/dist/esm/base/ui/view_picker_synced.js +0 -59
  189. package/dist/esm/base/ui/viewport_constraint.js +0 -120
  190. package/dist/esm/base/ui/with_styled_system.js +0 -120
  191. package/dist/types/src/base/ui/baymax_utils.d.ts +0 -2
  192. package/dist/types/src/base/ui/baymax_utils.d.ts.map +0 -1
  193. package/dist/types/src/base/ui/box.d.ts +0 -35
  194. package/dist/types/src/base/ui/box.d.ts.map +0 -1
  195. package/dist/types/src/base/ui/button.d.ts +0 -86
  196. package/dist/types/src/base/ui/button.d.ts.map +0 -1
  197. package/dist/types/src/base/ui/choice_token.d.ts +0 -49
  198. package/dist/types/src/base/ui/choice_token.d.ts.map +0 -1
  199. package/dist/types/src/base/ui/collaborator_token.d.ts +0 -45
  200. package/dist/types/src/base/ui/collaborator_token.d.ts.map +0 -1
  201. package/dist/types/src/base/ui/color_palette.d.ts +0 -77
  202. package/dist/types/src/base/ui/color_palette.d.ts.map +0 -1
  203. package/dist/types/src/base/ui/color_palette_synced.d.ts +0 -30
  204. package/dist/types/src/base/ui/color_palette_synced.d.ts.map +0 -1
  205. package/dist/types/src/base/ui/confirmation_dialog.d.ts +0 -66
  206. package/dist/types/src/base/ui/confirmation_dialog.d.ts.map +0 -1
  207. package/dist/types/src/base/ui/control_sizes.d.ts +0 -16
  208. package/dist/types/src/base/ui/control_sizes.d.ts.map +0 -1
  209. package/dist/types/src/base/ui/css_helpers.d.ts +0 -6
  210. package/dist/types/src/base/ui/css_helpers.d.ts.map +0 -1
  211. package/dist/types/src/base/ui/dialog.d.ts +0 -58
  212. package/dist/types/src/base/ui/dialog.d.ts.map +0 -1
  213. package/dist/types/src/base/ui/dialog_close_button.d.ts +0 -40
  214. package/dist/types/src/base/ui/dialog_close_button.d.ts.map +0 -1
  215. package/dist/types/src/base/ui/field_icon.d.ts +0 -25
  216. package/dist/types/src/base/ui/field_icon.d.ts.map +0 -1
  217. package/dist/types/src/base/ui/field_picker.d.ts +0 -34
  218. package/dist/types/src/base/ui/field_picker.d.ts.map +0 -1
  219. package/dist/types/src/base/ui/field_picker_synced.d.ts +0 -18
  220. package/dist/types/src/base/ui/field_picker_synced.d.ts.map +0 -1
  221. package/dist/types/src/base/ui/form_field.d.ts +0 -42
  222. package/dist/types/src/base/ui/form_field.d.ts.map +0 -1
  223. package/dist/types/src/base/ui/geometry/geometry.d.ts +0 -3
  224. package/dist/types/src/base/ui/geometry/geometry.d.ts.map +0 -1
  225. package/dist/types/src/base/ui/geometry/point.d.ts +0 -2
  226. package/dist/types/src/base/ui/geometry/point.d.ts.map +0 -1
  227. package/dist/types/src/base/ui/geometry/rect.d.ts +0 -2
  228. package/dist/types/src/base/ui/geometry/rect.d.ts.map +0 -1
  229. package/dist/types/src/base/ui/geometry/size.d.ts +0 -2
  230. package/dist/types/src/base/ui/geometry/size.d.ts.map +0 -1
  231. package/dist/types/src/base/ui/heading.d.ts +0 -64
  232. package/dist/types/src/base/ui/heading.d.ts.map +0 -1
  233. package/dist/types/src/base/ui/icon.d.ts +0 -45
  234. package/dist/types/src/base/ui/icon.d.ts.map +0 -1
  235. package/dist/types/src/base/ui/icon_config.d.ts +0 -424
  236. package/dist/types/src/base/ui/icon_config.d.ts.map +0 -1
  237. package/dist/types/src/base/ui/input.d.ts +0 -120
  238. package/dist/types/src/base/ui/input.d.ts.map +0 -1
  239. package/dist/types/src/base/ui/input_synced.d.ts +0 -18
  240. package/dist/types/src/base/ui/input_synced.d.ts.map +0 -1
  241. package/dist/types/src/base/ui/key_codes.d.ts +0 -2
  242. package/dist/types/src/base/ui/key_codes.d.ts.map +0 -1
  243. package/dist/types/src/base/ui/label.d.ts +0 -35
  244. package/dist/types/src/base/ui/label.d.ts.map +0 -1
  245. package/dist/types/src/base/ui/link.d.ts +0 -84
  246. package/dist/types/src/base/ui/link.d.ts.map +0 -1
  247. package/dist/types/src/base/ui/loader.d.ts +0 -38
  248. package/dist/types/src/base/ui/loader.d.ts.map +0 -1
  249. package/dist/types/src/base/ui/modal.d.ts +0 -54
  250. package/dist/types/src/base/ui/modal.d.ts.map +0 -1
  251. package/dist/types/src/base/ui/model_picker_select.d.ts +0 -19
  252. package/dist/types/src/base/ui/model_picker_select.d.ts.map +0 -1
  253. package/dist/types/src/base/ui/popover.d.ts +0 -106
  254. package/dist/types/src/base/ui/popover.d.ts.map +0 -1
  255. package/dist/types/src/base/ui/progress_bar.d.ts +0 -60
  256. package/dist/types/src/base/ui/progress_bar.d.ts.map +0 -1
  257. package/dist/types/src/base/ui/record_card.d.ts +0 -80
  258. package/dist/types/src/base/ui/record_card.d.ts.map +0 -1
  259. package/dist/types/src/base/ui/record_card_list.d.ts +0 -88
  260. package/dist/types/src/base/ui/record_card_list.d.ts.map +0 -1
  261. package/dist/types/src/base/ui/select.d.ts +0 -82
  262. package/dist/types/src/base/ui/select.d.ts.map +0 -1
  263. package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts +0 -25
  264. package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts.map +0 -1
  265. package/dist/types/src/base/ui/select_buttons.d.ts +0 -56
  266. package/dist/types/src/base/ui/select_buttons.d.ts.map +0 -1
  267. package/dist/types/src/base/ui/select_buttons_synced.d.ts +0 -18
  268. package/dist/types/src/base/ui/select_buttons_synced.d.ts.map +0 -1
  269. package/dist/types/src/base/ui/select_synced.d.ts +0 -18
  270. package/dist/types/src/base/ui/select_synced.d.ts.map +0 -1
  271. package/dist/types/src/base/ui/switch.d.ts +0 -82
  272. package/dist/types/src/base/ui/switch.d.ts.map +0 -1
  273. package/dist/types/src/base/ui/switch_synced.d.ts +0 -18
  274. package/dist/types/src/base/ui/switch_synced.d.ts.map +0 -1
  275. package/dist/types/src/base/ui/synced.d.ts +0 -23
  276. package/dist/types/src/base/ui/synced.d.ts.map +0 -1
  277. package/dist/types/src/base/ui/system/all_styles_set.d.ts +0 -85
  278. package/dist/types/src/base/ui/system/all_styles_set.d.ts.map +0 -1
  279. package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts +0 -14
  280. package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts.map +0 -1
  281. package/dist/types/src/base/ui/system/appearance/background_color.d.ts +0 -12
  282. package/dist/types/src/base/ui/system/appearance/background_color.d.ts.map +0 -1
  283. package/dist/types/src/base/ui/system/appearance/border.d.ts +0 -30
  284. package/dist/types/src/base/ui/system/appearance/border.d.ts.map +0 -1
  285. package/dist/types/src/base/ui/system/appearance/border_radius.d.ts +0 -12
  286. package/dist/types/src/base/ui/system/appearance/border_radius.d.ts.map +0 -1
  287. package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts +0 -12
  288. package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts.map +0 -1
  289. package/dist/types/src/base/ui/system/appearance/opacity.d.ts +0 -12
  290. package/dist/types/src/base/ui/system/appearance/opacity.d.ts.map +0 -1
  291. package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts +0 -15
  292. package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts.map +0 -1
  293. package/dist/types/src/base/ui/system/dimensions/height.d.ts +0 -12
  294. package/dist/types/src/base/ui/system/dimensions/height.d.ts.map +0 -1
  295. package/dist/types/src/base/ui/system/dimensions/max_height.d.ts +0 -12
  296. package/dist/types/src/base/ui/system/dimensions/max_height.d.ts.map +0 -1
  297. package/dist/types/src/base/ui/system/dimensions/max_width.d.ts +0 -12
  298. package/dist/types/src/base/ui/system/dimensions/max_width.d.ts.map +0 -1
  299. package/dist/types/src/base/ui/system/dimensions/min_height.d.ts +0 -12
  300. package/dist/types/src/base/ui/system/dimensions/min_height.d.ts.map +0 -1
  301. package/dist/types/src/base/ui/system/dimensions/min_width.d.ts +0 -12
  302. package/dist/types/src/base/ui/system/dimensions/min_width.d.ts.map +0 -1
  303. package/dist/types/src/base/ui/system/dimensions/width.d.ts +0 -12
  304. package/dist/types/src/base/ui/system/dimensions/width.d.ts.map +0 -1
  305. package/dist/types/src/base/ui/system/display.d.ts +0 -13
  306. package/dist/types/src/base/ui/system/display.d.ts.map +0 -1
  307. package/dist/types/src/base/ui/system/flex_container/align_content.d.ts +0 -12
  308. package/dist/types/src/base/ui/system/flex_container/align_content.d.ts.map +0 -1
  309. package/dist/types/src/base/ui/system/flex_container/align_items.d.ts +0 -12
  310. package/dist/types/src/base/ui/system/flex_container/align_items.d.ts.map +0 -1
  311. package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts +0 -15
  312. package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts.map +0 -1
  313. package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts +0 -12
  314. package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts.map +0 -1
  315. package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts +0 -12
  316. package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts.map +0 -1
  317. package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts +0 -12
  318. package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts.map +0 -1
  319. package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts +0 -12
  320. package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts.map +0 -1
  321. package/dist/types/src/base/ui/system/flex_item/align_self.d.ts +0 -12
  322. package/dist/types/src/base/ui/system/flex_item/align_self.d.ts.map +0 -1
  323. package/dist/types/src/base/ui/system/flex_item/flex.d.ts +0 -12
  324. package/dist/types/src/base/ui/system/flex_item/flex.d.ts.map +0 -1
  325. package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts +0 -12
  326. package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts.map +0 -1
  327. package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts +0 -12
  328. package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts.map +0 -1
  329. package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts +0 -16
  330. package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts.map +0 -1
  331. package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts +0 -12
  332. package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts.map +0 -1
  333. package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts +0 -12
  334. package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts.map +0 -1
  335. package/dist/types/src/base/ui/system/flex_item/order.d.ts +0 -12
  336. package/dist/types/src/base/ui/system/flex_item/order.d.ts.map +0 -1
  337. package/dist/types/src/base/ui/system/index.d.ts +0 -106
  338. package/dist/types/src/base/ui/system/index.d.ts.map +0 -1
  339. package/dist/types/src/base/ui/system/overflow.d.ts +0 -17
  340. package/dist/types/src/base/ui/system/overflow.d.ts.map +0 -1
  341. package/dist/types/src/base/ui/system/position/bottom.d.ts +0 -12
  342. package/dist/types/src/base/ui/system/position/bottom.d.ts.map +0 -1
  343. package/dist/types/src/base/ui/system/position/left.d.ts +0 -12
  344. package/dist/types/src/base/ui/system/position/left.d.ts.map +0 -1
  345. package/dist/types/src/base/ui/system/position/position.d.ts +0 -12
  346. package/dist/types/src/base/ui/system/position/position.d.ts.map +0 -1
  347. package/dist/types/src/base/ui/system/position/position_set.d.ts +0 -15
  348. package/dist/types/src/base/ui/system/position/position_set.d.ts.map +0 -1
  349. package/dist/types/src/base/ui/system/position/right.d.ts +0 -12
  350. package/dist/types/src/base/ui/system/position/right.d.ts.map +0 -1
  351. package/dist/types/src/base/ui/system/position/top.d.ts +0 -12
  352. package/dist/types/src/base/ui/system/position/top.d.ts.map +0 -1
  353. package/dist/types/src/base/ui/system/position/z_index.d.ts +0 -12
  354. package/dist/types/src/base/ui/system/position/z_index.d.ts.map +0 -1
  355. package/dist/types/src/base/ui/system/spacing/margin.d.ts +0 -24
  356. package/dist/types/src/base/ui/system/spacing/margin.d.ts.map +0 -1
  357. package/dist/types/src/base/ui/system/spacing/padding.d.ts +0 -24
  358. package/dist/types/src/base/ui/system/spacing/padding.d.ts.map +0 -1
  359. package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts +0 -11
  360. package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts.map +0 -1
  361. package/dist/types/src/base/ui/system/typography/font_family.d.ts +0 -12
  362. package/dist/types/src/base/ui/system/typography/font_family.d.ts.map +0 -1
  363. package/dist/types/src/base/ui/system/typography/font_size.d.ts +0 -12
  364. package/dist/types/src/base/ui/system/typography/font_size.d.ts.map +0 -1
  365. package/dist/types/src/base/ui/system/typography/font_style.d.ts +0 -12
  366. package/dist/types/src/base/ui/system/typography/font_style.d.ts.map +0 -1
  367. package/dist/types/src/base/ui/system/typography/font_weight.d.ts +0 -12
  368. package/dist/types/src/base/ui/system/typography/font_weight.d.ts.map +0 -1
  369. package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts +0 -12
  370. package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts.map +0 -1
  371. package/dist/types/src/base/ui/system/typography/line_height.d.ts +0 -12
  372. package/dist/types/src/base/ui/system/typography/line_height.d.ts.map +0 -1
  373. package/dist/types/src/base/ui/system/typography/text_align.d.ts +0 -12
  374. package/dist/types/src/base/ui/system/typography/text_align.d.ts.map +0 -1
  375. package/dist/types/src/base/ui/system/typography/text_color.d.ts +0 -16
  376. package/dist/types/src/base/ui/system/typography/text_color.d.ts.map +0 -1
  377. package/dist/types/src/base/ui/system/typography/text_decoration.d.ts +0 -14
  378. package/dist/types/src/base/ui/system/typography/text_decoration.d.ts.map +0 -1
  379. package/dist/types/src/base/ui/system/typography/text_transform.d.ts +0 -12
  380. package/dist/types/src/base/ui/system/typography/text_transform.d.ts.map +0 -1
  381. package/dist/types/src/base/ui/system/typography/typography_set.d.ts +0 -19
  382. package/dist/types/src/base/ui/system/typography/typography_set.d.ts.map +0 -1
  383. package/dist/types/src/base/ui/system/utils/csstype.d.ts +0 -3977
  384. package/dist/types/src/base/ui/system/utils/csstype.d.ts.map +0 -1
  385. package/dist/types/src/base/ui/system/utils/ensure_numbers_are_within_scale.d.ts +0 -2
  386. package/dist/types/src/base/ui/system/utils/ensure_numbers_are_within_scale.d.ts.map +0 -1
  387. package/dist/types/src/base/ui/system/utils/get_style_props_for_responsive_prop.d.ts +0 -2
  388. package/dist/types/src/base/ui/system/utils/get_style_props_for_responsive_prop.d.ts.map +0 -1
  389. package/dist/types/src/base/ui/system/utils/types.d.ts +0 -31
  390. package/dist/types/src/base/ui/system/utils/types.d.ts.map +0 -1
  391. package/dist/types/src/base/ui/table_picker.d.ts +0 -28
  392. package/dist/types/src/base/ui/table_picker.d.ts.map +0 -1
  393. package/dist/types/src/base/ui/table_picker_synced.d.ts +0 -18
  394. package/dist/types/src/base/ui/table_picker_synced.d.ts.map +0 -1
  395. package/dist/types/src/base/ui/text.d.ts +0 -66
  396. package/dist/types/src/base/ui/text.d.ts.map +0 -1
  397. package/dist/types/src/base/ui/text_button.d.ts +0 -83
  398. package/dist/types/src/base/ui/text_button.d.ts.map +0 -1
  399. package/dist/types/src/base/ui/theme/default_theme/button_variants.d.ts +0 -8
  400. package/dist/types/src/base/ui/theme/default_theme/button_variants.d.ts.map +0 -1
  401. package/dist/types/src/base/ui/theme/default_theme/control_sizes.d.ts +0 -107
  402. package/dist/types/src/base/ui/theme/default_theme/control_sizes.d.ts.map +0 -1
  403. package/dist/types/src/base/ui/theme/default_theme/heading_styles.d.ts +0 -11
  404. package/dist/types/src/base/ui/theme/default_theme/heading_styles.d.ts.map +0 -1
  405. package/dist/types/src/base/ui/theme/default_theme/index.d.ts +0 -342
  406. package/dist/types/src/base/ui/theme/default_theme/index.d.ts.map +0 -1
  407. package/dist/types/src/base/ui/theme/default_theme/input_variants.d.ts +0 -5
  408. package/dist/types/src/base/ui/theme/default_theme/input_variants.d.ts.map +0 -1
  409. package/dist/types/src/base/ui/theme/default_theme/link_variants.d.ts +0 -7
  410. package/dist/types/src/base/ui/theme/default_theme/link_variants.d.ts.map +0 -1
  411. package/dist/types/src/base/ui/theme/default_theme/select_buttons_variants.d.ts +0 -8
  412. package/dist/types/src/base/ui/theme/default_theme/select_buttons_variants.d.ts.map +0 -1
  413. package/dist/types/src/base/ui/theme/default_theme/select_variants.d.ts +0 -5
  414. package/dist/types/src/base/ui/theme/default_theme/select_variants.d.ts.map +0 -1
  415. package/dist/types/src/base/ui/theme/default_theme/switch_variants.d.ts +0 -16
  416. package/dist/types/src/base/ui/theme/default_theme/switch_variants.d.ts.map +0 -1
  417. package/dist/types/src/base/ui/theme/default_theme/text_button_variants.d.ts +0 -7
  418. package/dist/types/src/base/ui/theme/default_theme/text_button_variants.d.ts.map +0 -1
  419. package/dist/types/src/base/ui/theme/default_theme/text_styles.d.ts +0 -76
  420. package/dist/types/src/base/ui/theme/default_theme/text_styles.d.ts.map +0 -1
  421. package/dist/types/src/base/ui/theme/default_theme/tokens.d.ts +0 -111
  422. package/dist/types/src/base/ui/theme/default_theme/tokens.d.ts.map +0 -1
  423. package/dist/types/src/base/ui/theme/theme_context.d.ts +0 -342
  424. package/dist/types/src/base/ui/theme/theme_context.d.ts.map +0 -1
  425. package/dist/types/src/base/ui/theme/use_theme.d.ts +0 -342
  426. package/dist/types/src/base/ui/theme/use_theme.d.ts.map +0 -1
  427. package/dist/types/src/base/ui/tooltip.d.ts +0 -64
  428. package/dist/types/src/base/ui/tooltip.d.ts.map +0 -1
  429. package/dist/types/src/base/ui/types/aria_props.d.ts +0 -22
  430. package/dist/types/src/base/ui/types/aria_props.d.ts.map +0 -1
  431. package/dist/types/src/base/ui/types/data_attributes_prop.d.ts +0 -10
  432. package/dist/types/src/base/ui/types/data_attributes_prop.d.ts.map +0 -1
  433. package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts +0 -13
  434. package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts.map +0 -1
  435. package/dist/types/src/base/ui/use_form_field.d.ts +0 -2
  436. package/dist/types/src/base/ui/use_form_field.d.ts.map +0 -1
  437. package/dist/types/src/base/ui/use_styled_system.d.ts +0 -2
  438. package/dist/types/src/base/ui/use_styled_system.d.ts.map +0 -1
  439. package/dist/types/src/base/ui/use_text_color_for_background_color.d.ts +0 -2
  440. package/dist/types/src/base/ui/use_text_color_for_background_color.d.ts.map +0 -1
  441. package/dist/types/src/base/ui/view_picker.d.ts +0 -34
  442. package/dist/types/src/base/ui/view_picker.d.ts.map +0 -1
  443. package/dist/types/src/base/ui/view_picker_synced.d.ts +0 -18
  444. package/dist/types/src/base/ui/view_picker_synced.d.ts.map +0 -1
  445. package/dist/types/src/base/ui/viewport_constraint.d.ts +0 -57
  446. package/dist/types/src/base/ui/viewport_constraint.d.ts.map +0 -1
  447. package/dist/types/src/base/ui/with_styled_system.d.ts +0 -2
  448. package/dist/types/src/base/ui/with_styled_system.d.ts.map +0 -1
  449. package/types/styled-system__core.d.ts +0 -41
@@ -1,556 +0,0 @@
1
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- /** @module @airtable/blocks/ui: RecordCard */ /** */
3
- import { cx } from 'emotion';
4
- import * as React from 'react';
5
- import { compose } from '@styled-system/core';
6
- import { isNullOrUndefinedOrEmpty, keyBy, uniqBy, has } from '../../shared/private_utils';
7
- import { invariant, spawnError } from '../../shared/error_utils';
8
- import { FieldType } from '../../shared/types/field_core';
9
- import Record from '../models/record';
10
- import useWatchable from '../../shared/ui/use_watchable';
11
- import withHooks from '../../shared/ui/with_hooks';
12
- import { useSdk } from '../../shared/ui/sdk_context';
13
- import colorUtils from '../../shared/color_utils';
14
- import { baymax } from './baymax_utils';
15
- import Box from './box';
16
- import { isCommandModifierKeyEvent } from './key_codes';
17
- import useStyledSystem from './use_styled_system';
18
- import { flexItemSet, positionSet, margin } from './system';
19
- import { splitStyleProps } from './with_styled_system';
20
- import useViewMetadata from './use_view_metadata';
21
- import CellRenderer from './cell_renderer';
22
- import expandRecord from './expand_record';
23
-
24
- // Mirrored from client_server_shared_config_settings
25
- const FALLBACK_RECORD_NAME_FOR_DISPLAY = 'Unnamed record';
26
-
27
- /**
28
- * Style props for the {@link RecordCard} component. Accepts:
29
- * * {@link FlexItemSetProps}
30
- * * {@link MarginProps}
31
- * * {@link PositionSetProps}
32
- *
33
- * @noInheritDoc
34
- */
35
-
36
- const styleParser = compose(flexItemSet, positionSet, margin);
37
- const CARD_PADDING = 12;
38
-
39
- /** @hidden */
40
-
41
- const CellValueAndFieldLabel = _ref => {
42
- let {
43
- record,
44
- cellValue,
45
- field,
46
- width,
47
- renderInvalidCellValue
48
- } = _ref;
49
- useWatchable(field, ['name', 'type', 'options']);
50
- return /*#__PURE__*/React.createElement(Box, {
51
- style: {
52
- verticalAlign: 'top'
53
- },
54
- position: "relative",
55
- display: "inline-block",
56
- margin: 0,
57
- paddingRight: 2,
58
- width: width
59
- }, /*#__PURE__*/React.createElement(Box, {
60
- className: baymax('caps truncate'),
61
- fontSize: "11px",
62
- lineHeight: "13px",
63
- textColor: "#898989"
64
- }, field.name), /*#__PURE__*/React.createElement(CellRenderer, {
65
- record: record,
66
- cellValue: cellValue,
67
- field: field,
68
- shouldWrap: false,
69
- cellClassName: "recordCardCellValue truncate",
70
- cellStyle: {
71
- lineHeight: '16px',
72
- fontSize: '12px'
73
- },
74
- renderInvalidCellValue: renderInvalidCellValue
75
- }));
76
- };
77
-
78
- /**
79
- * Props for the {@link RecordCard} component. Also accepts:
80
- * * {@link RecordCardStyleProps}
81
- *
82
- * @noInheritDoc
83
- * @docsPath UI/components/RecordCard
84
- */
85
-
86
- // TODO(jb): move this stuff into the field model when we decide on an api for it.
87
- const FormulaicFieldTypes = {
88
- [FieldType.FORMULA]: true,
89
- [FieldType.ROLLUP]: true,
90
- [FieldType.MULTIPLE_LOOKUP_VALUES]: true
91
- };
92
- const isFieldFormulaic = field => {
93
- return has(FormulaicFieldTypes, field.type);
94
- };
95
- const getFieldResultType = field => {
96
- if (field.type === FieldType.COUNT) {
97
- return FieldType.NUMBER;
98
- }
99
- if (isFieldFormulaic(field)) {
100
- invariant(field.options, 'options');
101
- const result = field.options.result;
102
- if (typeof result === 'object' && result) {
103
- const resultType = result.type;
104
- invariant(typeof resultType === 'string', 'resultType must be string');
105
- return resultType;
106
- } else {
107
- // Formula is misconfigured.
108
- return FieldType.SINGLE_LINE_TEXT;
109
- }
110
- } else {
111
- return field.type;
112
- }
113
- };
114
-
115
- /**
116
- * @internal
117
- * Given a container size (ie, height of the record card), calculate the height and width of an
118
- * attachment thumbnail image to fit inside the square attachment preview. Left and top margin
119
- * are used to center non-square images.
120
- */
121
- const calculateAttachmentDimensionsAndMargin = (attachment, containerSize) => {
122
- if (!attachment || !attachment.thumbnails || !attachment.thumbnails.large) {
123
- return {};
124
- }
125
- const {
126
- thumbnails: {
127
- large: {
128
- width: thumbWidth,
129
- height: thumbHeight
130
- }
131
- }
132
- } = attachment;
133
- const height = Math.min(containerSize, thumbHeight);
134
- const width = Math.round(thumbWidth * height / thumbHeight);
135
- const marginTop = Math.round((containerSize - height) / 2);
136
- const marginLeft = Math.round((containerSize - width) / 2);
137
- return {
138
- height,
139
- width,
140
- marginTop,
141
- marginLeft
142
- };
143
- };
144
-
145
- /**
146
- * A card component that displays an Airtable record.
147
- *
148
- * [[ Story id="recordcard--example" title="RecordCard example" ]]
149
- *
150
- * @docsPath UI/components/RecordCard
151
- * @component
152
- */
153
- export class RecordCard extends React.Component {
154
- /** @hidden */
155
- static defaultProps = {
156
- width: 568,
157
- height: 80,
158
- className: '',
159
- style: {}
160
- };
161
-
162
- /** @hidden */
163
- constructor(props) {
164
- super(props);
165
- this._onClick = this._onClick.bind(this);
166
- this._validateProps(props);
167
- }
168
- /** @hidden */
169
- UNSAFE_componentWillReceiveProps(nextProps) {
170
- this._validateProps(nextProps);
171
- }
172
- /** @internal */
173
- _validateProps(props) {
174
- const {
175
- record,
176
- view,
177
- fields,
178
- attachmentCoverField
179
- } = props;
180
- if (record && record instanceof Record && record.isDeleted) {
181
- throw spawnError('Record %s is deleted', record.id);
182
- }
183
- if (!record) {
184
- throw spawnError('Must provide record');
185
- }
186
- if (record && record instanceof Record && attachmentCoverField) {
187
- if (attachmentCoverField.parentTable.id !== record.parentTable.id) {
188
- throw spawnError('Attachment cover field %s must have the same parent table as record (record ID %s, table ID %s)', attachmentCoverField.id, record.id, record.parentTable.id);
189
- }
190
- }
191
- if (record && record instanceof Record && fields) {
192
- for (const field of fields) {
193
- if (!field.isDeleted && field.parentTable.id !== record.parentTable.id) {
194
- throw spawnError('Field %s must have the same parent table as record (record ID %s, table ID %s)', field.id, record.id, record.parentTable.id);
195
- }
196
- }
197
- }
198
- if (record && record instanceof Record && view && !view.isDeleted) {
199
- if (view.parentTable.id !== record.parentTable.id) {
200
- throw spawnError('View %s must have the same parent table as record (record ID %s, table ID %s)', view.id, record.id, record.parentTable.id);
201
- }
202
- }
203
- }
204
- /** @internal */
205
- _onClick(e) {
206
- if (this.props.onClick) {
207
- this.props.onClick(e);
208
- }
209
- // Explicitly check if `hasOnClick` is false, which is only set by the Tooltip wrapper.
210
- // When wrapped in Tooltip, `onClick` will always exist because Tooltip supplies it. We use
211
- // `hasOnClick`, to account for whether the user defined their own `onClick`. We only want
212
- // to run this default expandRecord behavior if the user did not supply their own `onClick`.
213
- if (this.props.onClick === undefined || this.props.hasOnClick === false // TODO (stephen): remove tooltip anchor props
214
- ) {
215
- // NOTE: `null` disables the default click behavior.
216
-
217
- const {
218
- record
219
- } = this.props;
220
- const recordModel = record && record instanceof Record ? record : null;
221
- if (recordModel) {
222
- if (isCommandModifierKeyEvent(e) || e.shiftKey) {
223
- // No-op, let the <a> tag handle opening in new tab or window.
224
- } else {
225
- e.preventDefault();
226
- const opts = this.props.expandRecordOptions || {};
227
- expandRecord(recordModel, opts);
228
- }
229
- }
230
- }
231
- }
232
- /** @internal */
233
- _getAttachmentCover(fieldsToUse) {
234
- const attachmentField = this._getAttachmentField(fieldsToUse);
235
- return attachmentField ? this._getFirstAttachmentInField(attachmentField) : null;
236
- }
237
- /** @internal */
238
- _getAttachmentField(fieldsToUse) {
239
- const {
240
- attachmentCoverField
241
- } = this.props;
242
- if (attachmentCoverField && !attachmentCoverField.isDeleted && this._isAttachment(attachmentCoverField)) {
243
- return attachmentCoverField;
244
- } else if (attachmentCoverField === undefined) {
245
- // The attachment field in this case is either coming from the view
246
- // if there is a view, or from the table's arbitrary field ordering
247
- // if there is no view.
248
- // TODO: use the real cover field if the view is gallery or kanban instead of
249
- // the first attachment field
250
- const firstAttachmentFieldInView = fieldsToUse.find(field => {
251
- return this._isAttachment(field);
252
- });
253
- if (firstAttachmentFieldInView === undefined) {
254
- return null;
255
- }
256
- return firstAttachmentFieldInView;
257
- } else {
258
- return null;
259
- }
260
- }
261
- /** @internal */
262
- _isAttachment(field) {
263
- return getFieldResultType(field) === FieldType.MULTIPLE_ATTACHMENTS;
264
- }
265
- /** @internal */
266
- _getCellValue(field) {
267
- const {
268
- record
269
- } = this.props;
270
- if (record && record instanceof Record) {
271
- return record.getCellValue(field.id);
272
- } else {
273
- const cellValue = record[field.id];
274
-
275
- // To validate public cell values, we only have validateCellValueForUpdate
276
- // However, this is not implemented for computed fields (since you can't update them)
277
- // so we just skip the check.
278
- // TODO(emma): actually check this somehow.
279
- if (!field.isComputed) {
280
- const airtableInterface = this.props.sdk.__airtableInterface;
281
- const appInterface = this.props.sdk.__appInterface;
282
- const validationResult = airtableInterface.fieldTypeProvider.validateCellValueForUpdate(appInterface, cellValue, null, field._data);
283
- if (!validationResult.isValid) {
284
- throw spawnError(validationResult.reason);
285
- }
286
- }
287
- return cellValue;
288
- }
289
- }
290
- /** @internal */
291
- _getFirstAttachmentInField(attachmentField) {
292
- let attachmentsInField;
293
- if (attachmentField.type === FieldType.MULTIPLE_LOOKUP_VALUES) {
294
- const cellValue = this._getCellValue(attachmentField);
295
- attachmentsInField = cellValue ? cellValue.map(cv => cv.value) : [];
296
- } else {
297
- attachmentsInField = this._getCellValue(attachmentField);
298
- }
299
- return attachmentsInField && attachmentsInField.length > 0 ? attachmentsInField[0] : null;
300
- }
301
- /** @internal */
302
- _getFields() {
303
- const {
304
- viewMetadata,
305
- fields,
306
- record
307
- } = this.props;
308
- let fieldsToUse;
309
- if (fields) {
310
- fieldsToUse = fields.filter(field => !field.isDeleted);
311
- } else if (viewMetadata && !viewMetadata.isDeleted) {
312
- fieldsToUse = viewMetadata.visibleFields;
313
- } else if (record && record instanceof Record && !record.isDeleted) {
314
- const parentTable = record.parentTable;
315
- fieldsToUse = parentTable.fields;
316
- } else {
317
- console.warn('RecordCard: no fields, view, or record, so rendering an empty card'); // eslint-disable-line no-console
318
- fieldsToUse = [];
319
- }
320
- return uniqBy(fieldsToUse, field => field.id);
321
- }
322
- /** @internal */
323
- _getPossibleFieldsForCard() {
324
- const fields = this._getFields();
325
-
326
- // remove primary field if it exists
327
- return fields.filter(field => {
328
- return !field.isPrimaryField;
329
- });
330
- }
331
- /** @internal */
332
- _getWidthAndFieldIdArray(cellContainerWidth, fieldsToUse) {
333
- const widthAndFieldIdArray = [];
334
- let runningWidth = 0;
335
- const airtableInterface = this.props.sdk.__airtableInterface;
336
- const appInterface = this.props.sdk.__appInterface;
337
- for (const field of fieldsToUse) {
338
- const uiConfig = airtableInterface.fieldTypeProvider.getUiConfig(appInterface, field._data);
339
- const desiredWidth = uiConfig.desiredCellWidthForRecordCard;
340
- if (runningWidth + desiredWidth < cellContainerWidth) {
341
- widthAndFieldIdArray.push({
342
- width: desiredWidth,
343
- fieldId: field.id
344
- });
345
- runningWidth += desiredWidth;
346
- } else {
347
- const minCellWidth = uiConfig.minimumCellWidthForRecordCard;
348
- if (runningWidth + minCellWidth < cellContainerWidth) {
349
- widthAndFieldIdArray.push({
350
- width: minCellWidth,
351
- fieldId: field.id
352
- });
353
- runningWidth += minCellWidth;
354
- } else {
355
- break;
356
- }
357
- }
358
- }
359
- if (runningWidth < cellContainerWidth && widthAndFieldIdArray.length > 0) {
360
- const lastWidthAndFieldId = widthAndFieldIdArray[widthAndFieldIdArray.length - 1];
361
- lastWidthAndFieldId.width += cellContainerWidth - runningWidth;
362
- }
363
- return widthAndFieldIdArray;
364
- }
365
- /** @internal */
366
- _getRecord() {
367
- const {
368
- record
369
- } = this.props;
370
- if (record && record instanceof Record) {
371
- return record;
372
- } else {
373
- return null;
374
- }
375
- }
376
- /** @internal */
377
- _renderCellsAndFieldLabels(attachmentSize, fieldsToUse) {
378
- const {
379
- record,
380
- width,
381
- renderInvalidCellValue
382
- } = this.props;
383
- invariant(typeof width === 'number', 'width in defaultProps');
384
- const cellContainerWidth = width - CARD_PADDING - attachmentSize;
385
- const widthAndFieldIdArray = this._getWidthAndFieldIdArray(cellContainerWidth, fieldsToUse);
386
- const fieldsById = keyBy(fieldsToUse, o => o.id);
387
- return widthAndFieldIdArray.map(widthAndFieldId => {
388
- const field = fieldsById[widthAndFieldId.fieldId];
389
- return /*#__PURE__*/React.createElement(CellValueAndFieldLabel, _extends({
390
- key: field.id,
391
- field: field,
392
- width: widthAndFieldId.width,
393
- renderInvalidCellValue: renderInvalidCellValue
394
- }, record instanceof Record ? {
395
- record
396
- } : {
397
- cellValue: record[field.id]
398
- }));
399
- });
400
- }
401
- /** @hidden */
402
- render() {
403
- const {
404
- record,
405
- view,
406
- width,
407
- height,
408
- onClick,
409
- onMouseEnter,
410
- onMouseLeave,
411
- className,
412
- style
413
- } = this.props;
414
- if (record && record instanceof Record && record.isDeleted) {
415
- return null;
416
- }
417
- const allFields = this._getFields();
418
- const fieldsToUse = this._getPossibleFieldsForCard();
419
- const attachmentObjIfAvailable = this._getAttachmentCover(fieldsToUse);
420
- const hasAttachment = !!attachmentObjIfAvailable;
421
- const hasOnClick = !!onClick || !!this._getRecord();
422
- const containerClasses = cx(baymax('white rounded relative block overflow-hidden'), {
423
- [baymax('pointer cardBoxShadow')]: hasOnClick,
424
- [baymax('stroked1')]: !hasOnClick
425
- }, className);
426
-
427
- // use height as size in order to get square attachment
428
- invariant(typeof height === 'number', 'height in defaultProps');
429
- const attachmentSize = hasAttachment ? height : 0;
430
- let primaryValue;
431
- let isUnnamed;
432
- let recordName;
433
- let recordUrl;
434
- let recordColor;
435
- if (record instanceof Record) {
436
- recordUrl = record.url;
437
- recordName = record.name;
438
- if (view) {
439
- recordColor = record.getColorInView(view);
440
- }
441
- } else {
442
- const primaryField = allFields.length > 0 ? allFields[0].parentTable.primaryField : null;
443
- const primaryCellValue = primaryField ? record[primaryField.id] : null;
444
- recordName = primaryCellValue === null || primaryCellValue === undefined ? null : String(primaryCellValue);
445
- }
446
- if (isNullOrUndefinedOrEmpty(recordName)) {
447
- primaryValue = FALLBACK_RECORD_NAME_FOR_DISPLAY;
448
- isUnnamed = true;
449
- } else {
450
- primaryValue = recordName;
451
- isUnnamed = false;
452
- }
453
- const attachmentDimensionsAndPosition = calculateAttachmentDimensionsAndMargin(attachmentObjIfAvailable, attachmentSize);
454
- return /*#__PURE__*/React.createElement("a", {
455
- href: onClick === undefined && recordUrl ? recordUrl : undefined,
456
- className: containerClasses,
457
- style: {
458
- ...style,
459
- width,
460
- height
461
- },
462
- onClick: this._onClick,
463
- onMouseEnter: onMouseEnter || undefined,
464
- onMouseLeave: onMouseLeave || undefined
465
- }, /*#__PURE__*/React.createElement(Box, {
466
- right: `${attachmentSize}px`,
467
- backgroundColor: "transparent",
468
- padding: `${CARD_PADDING}px`,
469
- position: "absolute",
470
- top: 0,
471
- bottom: 0,
472
- left: 0,
473
- textColor: "dark"
474
- }, /*#__PURE__*/React.createElement(Box, {
475
- className: cx({
476
- unnamed: isUnnamed
477
- }),
478
- fontWeight: 500,
479
- position: "relative",
480
- marginTop: 0,
481
- display: "flex",
482
- alignItems: "center",
483
- lineHeight: 1.5,
484
- height: "18px",
485
- fontSize: "14px"
486
- }, recordColor && /*#__PURE__*/React.createElement(Box, {
487
- width: "6px",
488
- height: "20px",
489
- flex: "none",
490
- marginRight: 1,
491
- borderRadius: "circle",
492
- backgroundColor: colorUtils.getHexForColor(recordColor)
493
- }), /*#__PURE__*/React.createElement(Box, {
494
- className: baymax('truncate'),
495
- flex: "auto"
496
- }, primaryValue)), /*#__PURE__*/React.createElement(Box, {
497
- textColor: "#555555",
498
- position: "absolute",
499
- marginTop: "3px"
500
- }, this._renderCellsAndFieldLabels(attachmentSize, fieldsToUse))), attachmentObjIfAvailable && attachmentObjIfAvailable.thumbnails && attachmentObjIfAvailable.thumbnails.large && /*#__PURE__*/React.createElement(Box, {
501
- className: baymax('noevents'),
502
- style: {
503
- borderTopRightRadius: 2,
504
- borderBottomRightRadius: 2
505
- },
506
- height: `${attachmentSize}px`,
507
- width: `${attachmentSize}px`,
508
- position: "absolute",
509
- right: "0",
510
- overflow: "hidden"
511
- }, /*#__PURE__*/React.createElement("img", {
512
- draggable: false,
513
- height: attachmentDimensionsAndPosition.height,
514
- width: attachmentDimensionsAndPosition.width,
515
- style: {
516
- marginTop: attachmentDimensionsAndPosition.marginTop,
517
- marginLeft: attachmentDimensionsAndPosition.marginLeft
518
- },
519
- src: attachmentObjIfAvailable.thumbnails.large.url
520
- })));
521
- }
522
- }
523
- export default withHooks(RecordCard, props => {
524
- const {
525
- styleProps,
526
- nonStyleProps
527
- } = splitStyleProps(props, styleParser.propNames);
528
- const {
529
- record,
530
- fields,
531
- view,
532
- className
533
- } = nonStyleProps;
534
- const classNameForStyledProps = useStyledSystem(styleProps, styleParser);
535
- const recordModel = record && record instanceof Record ? record : null;
536
- let parentTable = null;
537
- if (recordModel) {
538
- parentTable = recordModel.parentTable;
539
- } else if (fields && fields.length > 0) {
540
- parentTable = fields[0].parentTable;
541
- } else if (view) {
542
- parentTable = view.parentTable;
543
- }
544
- useWatchable(recordModel, ['name', view ? `colorInView:${view.id}` : null]);
545
- // It's safe to watch the record's parentTable since a record's parent table never changes.
546
- useWatchable(parentTable, ['fields']);
547
-
548
- // if a view is supplied, we need to load the field order to use it for rendering the card
549
- const viewMetadata = useViewMetadata(view);
550
- const sdk = useSdk();
551
- return {
552
- viewMetadata,
553
- className: cx(classNameForStyledProps, className),
554
- sdk
555
- };
556
- });