@airtable/blocks 1.7.0 → 1.9.0-experimental

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 (98) hide show
  1. package/CHANGELOG.md +29 -3
  2. package/dist/cjs/error_utils.js +17 -0
  3. package/dist/cjs/models/base.js +16 -11
  4. package/dist/cjs/models/cursor.js +2 -0
  5. package/dist/cjs/models/field.js +157 -36
  6. package/dist/cjs/models/grouped_record_query_result.js +5 -14
  7. package/dist/cjs/models/linked_records_query_result.js +75 -27
  8. package/dist/cjs/models/mutation_constants.js +3 -1
  9. package/dist/cjs/models/mutations.js +70 -178
  10. package/dist/cjs/models/query_manager.js +327 -0
  11. package/dist/cjs/models/record.js +308 -55
  12. package/dist/cjs/models/record_query_result.js +4 -1
  13. package/dist/cjs/models/record_store.js +554 -765
  14. package/dist/cjs/models/table.js +22 -19
  15. package/dist/cjs/models/table_or_view_query_result.js +480 -414
  16. package/dist/cjs/models/view_data_store.js +243 -269
  17. package/dist/cjs/private_utils.js +50 -0
  18. package/dist/cjs/sdk.js +12 -2
  19. package/dist/cjs/testing/{mock_airtable_interface.js → abstract_mock_airtable_interface.js} +71 -22
  20. package/dist/cjs/types/block_query_spec.js +85 -0
  21. package/dist/cjs/types/field.js +1 -0
  22. package/dist/cjs/types/mutations.js +1 -0
  23. package/dist/cjs/ui/icon_config.js +6 -2
  24. package/dist/cjs/ui/use_global_config.js +1 -1
  25. package/dist/cjs/ui/use_records.js +5 -1
  26. package/dist/cjs/unstable_testing_utils.js +2 -2
  27. package/dist/cjs/watchable.js +123 -71
  28. package/dist/types/src/models/base.d.ts +10 -9
  29. package/dist/types/src/models/base.d.ts.map +1 -1
  30. package/dist/types/src/models/cursor.d.ts +2 -0
  31. package/dist/types/src/models/cursor.d.ts.map +1 -1
  32. package/dist/types/src/models/field.d.ts +71 -9
  33. package/dist/types/src/models/field.d.ts.map +1 -1
  34. package/dist/types/src/models/grouped_record_query_result.d.ts +3 -3
  35. package/dist/types/src/models/grouped_record_query_result.d.ts.map +1 -1
  36. package/dist/types/src/models/linked_records_query_result.d.ts.map +1 -1
  37. package/dist/types/src/models/mutation_constants.d.ts +1 -0
  38. package/dist/types/src/models/mutation_constants.d.ts.map +1 -1
  39. package/dist/types/src/models/mutations.d.ts.map +1 -1
  40. package/dist/types/src/models/query_manager.d.ts +2 -0
  41. package/dist/types/src/models/query_manager.d.ts.map +1 -0
  42. package/dist/types/src/models/record.d.ts +12 -3
  43. package/dist/types/src/models/record.d.ts.map +1 -1
  44. package/dist/types/src/models/record_query_result.d.ts +3 -2
  45. package/dist/types/src/models/record_query_result.d.ts.map +1 -1
  46. package/dist/types/src/models/record_store.d.ts.map +1 -1
  47. package/dist/types/src/models/table.d.ts +8 -10
  48. package/dist/types/src/models/table.d.ts.map +1 -1
  49. package/dist/types/src/models/table_or_view_query_result.d.ts +3 -5
  50. package/dist/types/src/models/table_or_view_query_result.d.ts.map +1 -1
  51. package/dist/types/src/models/view_data_store.d.ts +0 -1
  52. package/dist/types/src/models/view_data_store.d.ts.map +1 -1
  53. package/dist/types/src/models/view_metadata_query_result.d.ts +1 -1
  54. package/dist/types/src/models/view_metadata_query_result.d.ts.map +1 -1
  55. package/dist/types/src/private_utils.d.ts +30 -1
  56. package/dist/types/src/private_utils.d.ts.map +1 -1
  57. package/dist/types/src/sdk.d.ts.map +1 -1
  58. package/dist/types/src/testing/{mock_airtable_interface.d.ts → abstract_mock_airtable_interface.d.ts} +20 -15
  59. package/dist/types/src/testing/abstract_mock_airtable_interface.d.ts.map +1 -0
  60. package/dist/types/src/types/airtable_interface.d.ts +45 -21
  61. package/dist/types/src/types/airtable_interface.d.ts.map +1 -1
  62. package/dist/types/src/types/block_query_spec.d.ts +139 -0
  63. package/dist/types/src/types/block_query_spec.d.ts.map +1 -0
  64. package/dist/types/src/types/field.d.ts +167 -51
  65. package/dist/types/src/types/field.d.ts.map +1 -1
  66. package/dist/types/src/types/mutations.d.ts +46 -3
  67. package/dist/types/src/types/mutations.d.ts.map +1 -1
  68. package/dist/types/src/types/table.d.ts +0 -2
  69. package/dist/types/src/types/table.d.ts.map +1 -1
  70. package/dist/types/src/types/view.d.ts +3 -8
  71. package/dist/types/src/types/view.d.ts.map +1 -1
  72. package/dist/types/src/ui/icon_config.d.ts +7 -3
  73. package/dist/types/src/ui/icon_config.d.ts.map +1 -1
  74. package/dist/types/src/ui/link.d.ts +1 -1
  75. package/dist/types/src/ui/link.d.ts.map +1 -1
  76. package/dist/types/src/ui/use_global_config.d.ts +1 -1
  77. package/dist/types/src/unstable_testing_utils.d.ts +1 -1
  78. package/dist/types/src/unstable_testing_utils.d.ts.map +1 -1
  79. package/dist/types/src/watchable.d.ts.map +1 -1
  80. package/dist/types/stories/helpers/fake_cell_renderer.d.ts.map +1 -1
  81. package/dist/types/stories/helpers/field_type.d.ts.map +1 -1
  82. package/dist/types/stories/helpers/sync_source_options.d.ts +7 -0
  83. package/dist/types/stories/helpers/sync_source_options.d.ts.map +1 -0
  84. package/dist/types/test/airtable_interface_mocks/fixture_data.d.ts +121 -0
  85. package/dist/types/test/airtable_interface_mocks/fixture_data.d.ts.map +1 -0
  86. package/dist/types/test/airtable_interface_mocks/linked_records.d.ts +2 -2
  87. package/dist/types/test/airtable_interface_mocks/linked_records.d.ts.map +1 -1
  88. package/dist/types/test/airtable_interface_mocks/{mock_airtable_interface_internal.d.ts → mock_airtable_interface.d.ts} +26 -18
  89. package/dist/types/test/airtable_interface_mocks/mock_airtable_interface.d.ts.map +1 -0
  90. package/dist/types/test/airtable_interface_mocks/mock_base_data_stores.d.ts +51 -0
  91. package/dist/types/test/airtable_interface_mocks/mock_base_data_stores.d.ts.map +1 -0
  92. package/dist/types/test/airtable_interface_mocks/project_tracker.d.ts +2 -2
  93. package/dist/types/test/airtable_interface_mocks/project_tracker.d.ts.map +1 -1
  94. package/dist/types/test/test_helpers.d.ts +2 -0
  95. package/dist/types/test/test_helpers.d.ts.map +1 -1
  96. package/package.json +3 -1
  97. package/dist/types/src/testing/mock_airtable_interface.d.ts.map +0 -1
  98. package/dist/types/test/airtable_interface_mocks/mock_airtable_interface_internal.d.ts.map +0 -1
@@ -1724,8 +1724,6 @@ function (_AbstractModel) {
1724
1724
  }));
1725
1725
  }
1726
1726
  /**
1727
- * _Beta feature with unstable API. May have breaking changes before release._
1728
- *
1729
1727
  * Checks whether the current user has permission to create a field in this table.
1730
1728
  *
1731
1729
  * Accepts partial input, in the same format as {@link createFieldAsync}.
@@ -1737,6 +1735,7 @@ function (_AbstractModel) {
1737
1735
  * @param name name for the field. must be case-insensitive unique for the table
1738
1736
  * @param type type for the field
1739
1737
  * @param options options for the field. omit for fields without writable options
1738
+ * @param description description for the field. omit to leave blank
1740
1739
  *
1741
1740
  * @example
1742
1741
  * ```js
@@ -1750,7 +1749,7 @@ function (_AbstractModel) {
1750
1749
 
1751
1750
  }, {
1752
1751
  key: "checkPermissionsForCreateField",
1753
- value: function checkPermissionsForCreateField(name, type, options) {
1752
+ value: function checkPermissionsForCreateField(name, type, options, description) {
1754
1753
  return this._sdk.__mutations.checkPermissionsForMutation({
1755
1754
  type: _mutations.MutationTypes.CREATE_SINGLE_FIELD,
1756
1755
  tableId: this.id,
@@ -1761,13 +1760,12 @@ function (_AbstractModel) {
1761
1760
  type: type
1762
1761
  }, options ? {
1763
1762
  options
1764
- } : null) : undefined
1763
+ } : null) : undefined,
1764
+ description
1765
1765
  });
1766
1766
  }
1767
1767
  /**
1768
- * _Beta feature with unstable API. May have breaking changes before release._
1769
- *
1770
- * An alias for `checkPermissionsForCreateField(name, type, options).hasPermission`.
1768
+ * An alias for `checkPermissionsForCreateField(name, type, options, description).hasPermission`.
1771
1769
  *
1772
1770
  * Checks whether the current user has permission to create a field in this table.
1773
1771
  *
@@ -1776,6 +1774,7 @@ function (_AbstractModel) {
1776
1774
  * @param name name for the field. must be case-insensitive unique for the table
1777
1775
  * @param type type for the field
1778
1776
  * @param options options for the field. omit for fields without writable options
1777
+ * @param description description for the field. omit to leave blank
1779
1778
  *
1780
1779
  * @example
1781
1780
  * ```js
@@ -1789,12 +1788,10 @@ function (_AbstractModel) {
1789
1788
 
1790
1789
  }, {
1791
1790
  key: "hasPermissionToCreateField",
1792
- value: function hasPermissionToCreateField(name, type, options) {
1793
- return this.checkPermissionsForCreateField(name, type, options).hasPermission;
1791
+ value: function hasPermissionToCreateField(name, type, options, description) {
1792
+ return this.checkPermissionsForCreateField(name, type, options, description).hasPermission;
1794
1793
  }
1795
1794
  /**
1796
- * _Beta feature with unstable API. May have breaking changes before release._
1797
- *
1798
1795
  * Creates a new field.
1799
1796
  *
1800
1797
  * Similar to creating a field from the Airtable UI, the new field will not be visible
@@ -1813,6 +1810,8 @@ function (_AbstractModel) {
1813
1810
  * @param name name for the field. must be case-insensitive unique
1814
1811
  * @param type type for the field
1815
1812
  * @param options options for the field. omit for fields without writable options
1813
+ * @param description description for the field. is optional and will be `''` if not specified
1814
+ * or if specified as `null`.
1816
1815
  *
1817
1816
  * @example
1818
1817
  * ```js
@@ -1847,7 +1846,7 @@ function (_AbstractModel) {
1847
1846
 
1848
1847
  }, {
1849
1848
  key: "createFieldAsync",
1850
- value: function createFieldAsync(name, type, options) {
1849
+ value: function createFieldAsync(name, type, options, description) {
1851
1850
  var fieldId;
1852
1851
  return _regenerator.default.async(function createFieldAsync$(_context9) {
1853
1852
  while (1) {
@@ -1864,7 +1863,11 @@ function (_AbstractModel) {
1864
1863
  type: type
1865
1864
  }, options ? {
1866
1865
  options
1867
- } : null)
1866
+ } : null),
1867
+ // Coerce undefined to null so that only old SDKs pass "undefined" for description
1868
+ // '' is permitted, as we already set empty descriptions to '' when editing descriptions
1869
+ // from the UI
1870
+ description: description !== null && description !== void 0 ? description : null
1868
1871
  }));
1869
1872
 
1870
1873
  case 3:
@@ -2021,7 +2024,11 @@ function (_AbstractModel) {
2021
2024
  if (didViewSchemaChange) {
2022
2025
  didTableSchemaChange = true;
2023
2026
  }
2024
- }
2027
+ } // We must directly trigger deletions on the recordStore.viewDataStore
2028
+ // because the viewModel might not have been created. (See above comment)
2029
+
2030
+
2031
+ this._recordStore.sendViewDataDeletionIfViewIsDeleted(_viewId);
2025
2032
  }
2026
2033
  } catch (err) {
2027
2034
  _didIteratorError4 = true;
@@ -2106,11 +2113,7 @@ function (_AbstractModel) {
2106
2113
 
2107
2114
 
2108
2115
  this._cachedFieldNamesById = null;
2109
- } // NOTE: Record store onChange triggers must be performed AFTER field onChange triggers to
2110
- // ensure the column type providers are not stale.
2111
-
2112
-
2113
- this._recordStore.triggerOnChangeForDirtyPaths(dirtyPaths);
2116
+ }
2114
2117
 
2115
2118
  return didTableSchemaChange;
2116
2119
  }