@airtable/blocks 0.0.0-experimental-446b49015-20251008 → 0.0.0-experimental-4f3134f8c-20251016

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.
@@ -1,4 +1,4 @@
1
- import { BaseCore } from '../../shared/models/base_core';
1
+ import { BaseCore, WatchableBaseKeys } from '../../shared/models/base_core';
2
2
  import { Table } from './table';
3
3
  import { RecordStore } from './record_store';
4
4
 
@@ -21,4 +21,19 @@ export class Base extends BaseCore {
21
21
  _constructRecordStore(sdk, tableId) {
22
22
  return new RecordStore(sdk, tableId);
23
23
  }
24
+
25
+ /** @internal */
26
+ _getAllTableDataForEditModeConfiguration() {
27
+ return this._data.allTableDataForEditModeConfiguration;
28
+ }
29
+
30
+ /** @internal */
31
+ __triggerOnChangeForChangedPaths(changedPaths) {
32
+ super.__triggerOnChangeForChangedPaths(changedPaths);
33
+
34
+ // Trigger schema change when allTableDataForEditModeConfiguration changes
35
+ if (changedPaths.allTableDataForEditModeConfiguration) {
36
+ this._onChange(WatchableBaseKeys.schema);
37
+ }
38
+ }
24
39
  }
@@ -55,11 +55,11 @@ import { spawnUnknownSwitchCaseError } from '../../shared/error_utils';
55
55
  *
56
56
  * function getCustomProperties(base: Base) {
57
57
  * const table = base.tables[0];
58
- * const numberFields = table.fields.filter(field => field.type === FieldType.NUMBER);
58
+ * const isNumberField = (field: {id: FieldId, config: FieldConfig}) => field.config.type === FieldType.NUMBER;
59
59
  * return [
60
60
  * {key: 'title', label: 'Title', type: 'string', defaultValue: 'Chart'},
61
- * {key: 'xAxis', label: 'X-axis', type: 'field', table, possibleValues: numberFields},
62
- * {key: 'yAxis', label: 'Y-axis', type: 'field', table, possibleValues: numberFields},
61
+ * {key: 'xAxis', label: 'X-axis', type: 'field', table, shouldFieldBeAllowed: isNumberField},
62
+ * {key: 'yAxis', label: 'Y-axis', type: 'field', table, shouldFieldBeAllowed: isNumberField},
63
63
  * {key: 'color', label: 'Color', type: 'enum', possibleValues: [{value: 'red', label: 'Red'}, {value: 'blue', label: 'Blue'}, {value: 'green', label: 'Green'}], defaultValue: 'red'},
64
64
  * {key: 'showLegend', label: 'Show Legend', type: 'boolean', defaultValue: true},
65
65
  * ];
@@ -99,7 +99,7 @@ export function useCustomProperties(getCustomProperties) {
99
99
  if (hasError) {
100
100
  return;
101
101
  }
102
- const customPropertiesForAirtableInterface = customProperties.map(convertBlockPageElementCustomPropertyToBlockInstallationPageElementCustomPropertyForAirtableInterface);
102
+ const customPropertiesForAirtableInterface = customProperties.map(customProperty => convertBlockPageElementCustomPropertyToBlockInstallationPageElementCustomPropertyForAirtableInterface(sdk.base._getAllTableDataForEditModeConfiguration(), (fieldData, fieldNamesById) => sdk.__airtableInterface.fieldTypeProvider.getConfig(sdk.__appInterface, fieldData, fieldNamesById), customProperty));
103
103
  sdk.setCustomPropertiesAsync(customPropertiesForAirtableInterface).catch(error => {
104
104
  setErrorState({
105
105
  error
@@ -114,7 +114,7 @@ export function useCustomProperties(getCustomProperties) {
114
114
  }
115
115
 
116
116
  /** @internal */
117
- function convertBlockPageElementCustomPropertyToBlockInstallationPageElementCustomPropertyForAirtableInterface(property) {
117
+ function convertBlockPageElementCustomPropertyToBlockInstallationPageElementCustomPropertyForAirtableInterface(allTableDataForEditModeConfiguration, getFieldConfig, property) {
118
118
  switch (property.type) {
119
119
  case 'boolean':
120
120
  return {
@@ -139,14 +139,43 @@ function convertBlockPageElementCustomPropertyToBlockInstallationPageElementCust
139
139
  defaultValue: property.defaultValue
140
140
  };
141
141
  case 'field':
142
- return {
143
- key: property.key,
144
- label: property.label,
145
- type: BlockInstallationPageElementCustomPropertyTypeForAirtableInterface.FIELD_ID,
146
- tableId: property.table.id,
147
- possibleValues: property.possibleValues?.map(field => field.id),
148
- defaultValue: property.defaultValue?.id
149
- };
142
+ {
143
+ let possibleValues;
144
+ if (!allTableDataForEditModeConfiguration) {
145
+ // When not in edit mode, we don't have the full table schema to properly compute
146
+ // which fields are "possible" (allowed) for this custom property. But that's ok since
147
+ // Hyperbase only uses the possibleValues to render the custom properties inspector,
148
+ // so it's only relevant when in edit mode.
149
+ possibleValues = undefined;
150
+ } else if (property.possibleValues) {
151
+ possibleValues = property.possibleValues.map(field => field.id);
152
+ } else if (property.shouldFieldBeAllowed) {
153
+ const shouldFieldBeAllowed = property.shouldFieldBeAllowed;
154
+ const tableData = allTableDataForEditModeConfiguration[property.table.id];
155
+ if (!tableData) {
156
+ possibleValues = [];
157
+ } else {
158
+ const fieldNamesById = Object.fromEntries(Object.entries(tableData.fieldsById).map(_ref => {
159
+ let [id, field] = _ref;
160
+ return [id, field.name];
161
+ }));
162
+ possibleValues = Object.values(tableData.fieldsById).filter(field => shouldFieldBeAllowed({
163
+ id: field.id,
164
+ config: getFieldConfig(field, fieldNamesById)
165
+ })).map(field => field.id);
166
+ }
167
+ } else {
168
+ possibleValues = undefined;
169
+ }
170
+ return {
171
+ key: property.key,
172
+ label: property.label,
173
+ type: BlockInstallationPageElementCustomPropertyTypeForAirtableInterface.FIELD_ID,
174
+ tableId: property.table.id,
175
+ possibleValues,
176
+ defaultValue: property.defaultValue?.id
177
+ };
178
+ }
150
179
  case 'table':
151
180
  return {
152
181
  key: property.key,
@@ -189,8 +218,26 @@ function getCustomPropertyValue(base, globalConfig, property) {
189
218
  {
190
219
  if (typeof rawValue === 'string' && property.table === base.getTableById(property.table.id)) {
191
220
  const fieldModel = property.table.fields.find(field => field.id === rawValue);
192
- if (fieldModel && (!property.possibleValues || property.possibleValues.includes(fieldModel))) {
193
- return fieldModel;
221
+ if (fieldModel) {
222
+ if (property.possibleValues) {
223
+ if (property.possibleValues.includes(fieldModel)) {
224
+ return fieldModel;
225
+ }
226
+ return defaultValue;
227
+ } else if (property.shouldFieldBeAllowed) {
228
+ if (property.shouldFieldBeAllowed({
229
+ id: fieldModel.id,
230
+ config: {
231
+ type: fieldModel.type,
232
+ options: fieldModel.options
233
+ }
234
+ })) {
235
+ return fieldModel;
236
+ }
237
+ return defaultValue;
238
+ } else {
239
+ return fieldModel;
240
+ }
194
241
  }
195
242
  }
196
243
  return defaultValue;
@@ -24,7 +24,7 @@ export class BlockSdkCore {
24
24
  * @hidden
25
25
  */
26
26
  // @ts-ignore
27
- static VERSION = "0.0.0-experimental-446b49015-20251008";
27
+ static VERSION = "0.0.0-experimental-4f3134f8c-20251016";
28
28
 
29
29
  /** Storage for this block installation's configuration. */
30
30
 
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/interface/models/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAC,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAMrD;;;;;;;GAOG;AACH,qBAAa,IAAK,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;CAWnD"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/interface/models/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAA8C,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAC,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAOrD;;;;;;;GAOG;AACH,qBAAa,IAAK,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;CA0BnD"}
@@ -1,8 +1,7 @@
1
1
  import { type AirtableInterfaceCore, type SdkInitDataCore } from '../../shared/types/airtable_interface_core';
2
2
  import { type InterfaceSdkMode } from '../../sdk_mode';
3
- import { type BaseDataCore } from '../../shared/types/base_core';
4
3
  import { type TableId, type PageId, type FieldId, type RecordId } from '../../shared/types/hyper_ids';
5
- import { type TableData } from './table';
4
+ import { type BaseData } from './base';
6
5
  /** @hidden */
7
6
  export declare enum BlockRunContextType {
8
7
  PAGE_ELEMENT_IN_QUERY_CONTAINER = "pageElementInQueryContainer"
@@ -18,7 +17,7 @@ export type BlockRunContext = PageElementInQueryContainerBlockRunContextType;
18
17
  /** @hidden */
19
18
  export interface SdkInitData extends SdkInitDataCore {
20
19
  runContext: BlockRunContext;
21
- baseData: BaseDataCore<TableData>;
20
+ baseData: BaseData;
22
21
  }
23
22
  /** @hidden */
24
23
  export interface IdGenerator {
@@ -1 +1 @@
1
- {"version":3,"file":"airtable_interface.d.ts","sourceRoot":"","sources":["../../../../../src/interface/types/airtable_interface.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACvB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAC,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AACpG,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AAIvC,cAAc;AACd,oBAAY,mBAAmB;IAC3B,+BAA+B,gCAAgC;CAClE;AAED,cAAc;AACd,MAAM,WAAW,8CAA8C;IAC3D,IAAI,EAAE,mBAAmB,CAAC,+BAA+B,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB,EAAE,OAAO,CAAC;CACpC;AAED,cAAc;AACd,MAAM,MAAM,eAAe,GAAG,8CAA8C,CAAC;AAE7E,cAAc;AACd,MAAM,WAAW,WAAY,SAAQ,eAAe;IAChD,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;CACrC;AAED,cAAc;AACd,MAAM,WAAW,WAAW;IACxB,gBAAgB,IAAI,MAAM,CAAC;CAC9B;AAID,cAAc;AACd,oBAAY,kEAAkE;IAC1E,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,YAAY;IACpB,QAAQ,YAAY;CACvB;AAID,cAAc;AACd,MAAM,MAAM,8DAA8D,GAAG;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACjB,GAAG,CACE;IACI,IAAI,EAAE,kEAAkE,CAAC,OAAO,CAAC;IACjF,YAAY,EAAE,OAAO,CAAC;CACzB,GACD;IACI,IAAI,EAAE,kEAAkE,CAAC,MAAM,CAAC;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACI,IAAI,EAAE,kEAAkE,CAAC,IAAI,CAAC;IAC9E,cAAc,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACI,IAAI,EAAE,kEAAkE,CAAC,QAAQ,CAAC;IAClF,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,GACD;IACI,IAAI,EAAE,kEAAkE,CAAC,QAAQ,CAAC;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CACN,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB,CAAC,gBAAgB,CAAC;IAC9E,WAAW,EAAE,WAAW,CAAC;IAEzB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,wBAAwB,CACpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC;QAAC,OAAO,EAAE,aAAa,CAAC;YAAC,EAAE,EAAE,QAAQ,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC,CAAA;KAAC,CAAC,CAAC;IACnE,wBAAwB,CACpB,UAAU,EAAE,KAAK,CAAC,8DAA8D,CAAC,GAClF,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB"}
1
+ {"version":3,"file":"airtable_interface.d.ts","sourceRoot":"","sources":["../../../../../src/interface/types/airtable_interface.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACvB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAC,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AACpG,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAIrC,cAAc;AACd,oBAAY,mBAAmB;IAC3B,+BAA+B,gCAAgC;CAClE;AAED,cAAc;AACd,MAAM,WAAW,8CAA8C;IAC3D,IAAI,EAAE,mBAAmB,CAAC,+BAA+B,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB,EAAE,OAAO,CAAC;CACpC;AAED,cAAc;AACd,MAAM,MAAM,eAAe,GAAG,8CAA8C,CAAC;AAE7E,cAAc;AACd,MAAM,WAAW,WAAY,SAAQ,eAAe;IAChD,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACtB;AAED,cAAc;AACd,MAAM,WAAW,WAAW;IACxB,gBAAgB,IAAI,MAAM,CAAC;CAC9B;AAID,cAAc;AACd,oBAAY,kEAAkE;IAC1E,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,YAAY;IACpB,QAAQ,YAAY;CACvB;AAID,cAAc;AACd,MAAM,MAAM,8DAA8D,GAAG;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACjB,GAAG,CACE;IACI,IAAI,EAAE,kEAAkE,CAAC,OAAO,CAAC;IACjF,YAAY,EAAE,OAAO,CAAC;CACzB,GACD;IACI,IAAI,EAAE,kEAAkE,CAAC,MAAM,CAAC;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACI,IAAI,EAAE,kEAAkE,CAAC,IAAI,CAAC;IAC9E,cAAc,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACI,IAAI,EAAE,kEAAkE,CAAC,QAAQ,CAAC;IAClF,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,GACD;IACI,IAAI,EAAE,kEAAkE,CAAC,QAAQ,CAAC;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CACN,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB,CAAC,gBAAgB,CAAC;IAC9E,WAAW,EAAE,WAAW,CAAC;IAEzB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,wBAAwB,CACpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC;QAAC,OAAO,EAAE,aAAa,CAAC;YAAC,EAAE,EAAE,QAAQ,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC,CAAA;KAAC,CAAC,CAAC;IACnE,wBAAwB,CACpB,UAAU,EAAE,KAAK,CAAC,8DAA8D,CAAC,GAClF,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB"}
@@ -1,7 +1,23 @@
1
1
  import { type BaseDataCore, type BasePermissionDataCore } from '../../shared/types/base_core';
2
+ import { type ObjectMap } from '../../shared/private_utils';
3
+ import { type PrivateColumnType } from '../../shared/types/field_core';
4
+ import { type FieldId, type TableId } from '../../shared/types/hyper_ids';
2
5
  import { type TableData, type TablePermissionData } from './table';
3
6
  /** @hidden */
4
7
  export interface BaseData extends BaseDataCore<TableData> {
8
+ allTableDataForEditModeConfiguration?: ObjectMap<TableId, {
9
+ id: TableId;
10
+ name: string;
11
+ primaryFieldId: FieldId;
12
+ fieldsById: ObjectMap<FieldId, {
13
+ id: FieldId;
14
+ name: string;
15
+ type: PrivateColumnType;
16
+ typeOptions: {
17
+ [key: string]: unknown;
18
+ } | null | undefined;
19
+ }>;
20
+ }>;
5
21
  }
6
22
  /** @hidden */
7
23
  export interface BasePermissionData extends BasePermissionDataCore<TablePermissionData> {
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/interface/types/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAE,KAAK,sBAAsB,EAAC,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAEjE,cAAc;AACd,MAAM,WAAW,QAAS,SAAQ,YAAY,CAAC,SAAS,CAAC;CAAG;AAE5D,cAAc;AACd,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB,CAAC,mBAAmB,CAAC;CAAG"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/interface/types/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAE,KAAK,sBAAsB,EAAC,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAC,KAAK,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,OAAO,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAEjE,cAAc;AACd,MAAM,WAAW,QAAS,SAAQ,YAAY,CAAC,SAAS,CAAC;IACrD,oCAAoC,CAAC,EAAE,SAAS,CAC5C,OAAO,EACP;QACI,EAAE,EAAE,OAAO,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,OAAO,CAAC;QACxB,UAAU,EAAE,SAAS,CACjB,OAAO,EACP;YACI,EAAE,EAAE,OAAO,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,iBAAiB,CAAC;YACxB,WAAW,EAAE;gBAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;aAAC,GAAG,IAAI,GAAG,SAAS,CAAC;SAC5D,CACJ,CAAC;KACL,CACJ,CAAC;CACL;AAED,cAAc;AACd,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB,CAAC,mBAAmB,CAAC;CAAG"}
@@ -1,6 +1,8 @@
1
1
  import { type Table } from '../models/table';
2
2
  import { type Base } from '../models/base';
3
3
  import { type Field } from '../models/field';
4
+ import { type FieldConfig } from '../models/models';
5
+ import { type FieldId } from '../../shared/types/hyper_ids';
4
6
  /**
5
7
  * An object that represents a custom property that a block can set.
6
8
  *
@@ -45,8 +47,13 @@ type BlockPageElementCustomProperty = {
45
47
  } | {
46
48
  type: 'field';
47
49
  table: Table;
48
- /** If not provided, all visible fields in the table will be shown in the dropdown. */
50
+ /** @deprecated Prefer `shouldFieldBeAllowed` instead. If not provided, all visible fields in the table will be shown in the dropdown. */
49
51
  possibleValues?: Array<Field>;
52
+ /** If provided, it will be used to filter the fields in the dropdown. */
53
+ shouldFieldBeAllowed?: (field: {
54
+ id: FieldId;
55
+ config: FieldConfig;
56
+ }) => boolean;
50
57
  defaultValue?: Field;
51
58
  } | {
52
59
  type: 'table';
@@ -70,11 +77,11 @@ type BlockPageElementCustomProperty = {
70
77
  *
71
78
  * function getCustomProperties(base: Base) {
72
79
  * const table = base.tables[0];
73
- * const numberFields = table.fields.filter(field => field.type === FieldType.NUMBER);
80
+ * const isNumberField = (field: {id: FieldId, config: FieldConfig}) => field.config.type === FieldType.NUMBER;
74
81
  * return [
75
82
  * {key: 'title', label: 'Title', type: 'string', defaultValue: 'Chart'},
76
- * {key: 'xAxis', label: 'X-axis', type: 'field', table, possibleValues: numberFields},
77
- * {key: 'yAxis', label: 'Y-axis', type: 'field', table, possibleValues: numberFields},
83
+ * {key: 'xAxis', label: 'X-axis', type: 'field', table, shouldFieldBeAllowed: isNumberField},
84
+ * {key: 'yAxis', label: 'Y-axis', type: 'field', table, shouldFieldBeAllowed: isNumberField},
78
85
  * {key: 'color', label: 'Color', type: 'enum', possibleValues: [{value: 'red', label: 'Red'}, {value: 'blue', label: 'Blue'}, {value: 'green', label: 'Green'}], defaultValue: 'red'},
79
86
  * {key: 'showLegend', label: 'Show Legend', type: 'boolean', defaultValue: true},
80
87
  * ];
@@ -1 +1 @@
1
- {"version":3,"file":"use_custom_properties.d.ts","sourceRoot":"","sources":["../../../../../src/interface/ui/use_custom_properties.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,KAAK,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAC,KAAK,IAAI,EAAC,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAC,KAAK,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAQ3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,KAAK,8BAA8B,GAAG;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,CAC/D;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAC,GACxC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAC,GACvC;IACI,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACI,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,sFAAsF;IACtF,cAAc,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC;CACxB,GACD;IACI,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,KAAK,CAAC;CACxB,CACN,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,mBAAmB,CAC/B,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,8BAA8B,CAAC,GAC3E;IAAC,wBAAwB,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IAAC,UAAU,EAAE;QAAC,KAAK,EAAE,KAAK,CAAA;KAAC,GAAG,IAAI,CAAA;CAAC,CAkDzF"}
1
+ {"version":3,"file":"use_custom_properties.d.ts","sourceRoot":"","sources":["../../../../../src/interface/ui/use_custom_properties.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,KAAK,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAC,KAAK,IAAI,EAAC,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAC,KAAK,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAC,KAAK,OAAO,EAAC,MAAM,8BAA8B,CAAC;AAY1D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,KAAK,8BAA8B,GAAG;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,CAC/D;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAC,GACxC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAC,GACvC;IACI,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACI,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,yIAAyI;IACzI,cAAc,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAC,KAAK,OAAO,CAAC;IAC9E,YAAY,CAAC,EAAE,KAAK,CAAC;CACxB,GACD;IACI,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,KAAK,CAAC;CACxB,CACN,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,mBAAmB,CAC/B,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,8BAA8B,CAAC,GAC3E;IAAC,wBAAwB,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IAAC,UAAU,EAAE;QAAC,KAAK,EAAE,KAAK,CAAA;KAAC,GAAG,IAAI,CAAA;CAAC,CA2DzF"}
@@ -35,7 +35,7 @@ export interface FieldTypeConfig {
35
35
  export interface FieldTypeProviderCore {
36
36
  isComputed(fieldData: FieldDataCore): boolean;
37
37
  validateCellValueForUpdate(appInterface: AppInterface, newCellValue: unknown, currentCellValue: unknown, fieldData: FieldDataCore): CellValueValidationResult;
38
- getConfig(appInterface: AppInterface, fieldData: FieldDataCore, fieldNamesById: ObjectMap<FieldId, string>): FieldTypeConfig;
38
+ getConfig(appInterface: AppInterface, fieldData: Pick<FieldDataCore, 'type' | 'typeOptions'>, fieldNamesById: ObjectMap<FieldId, string>): FieldTypeConfig;
39
39
  convertStringToCellValue(appInterface: AppInterface, string: string, fieldData: FieldDataCore, opts?: {
40
40
  parseDateCellValueInColumnTimeZone?: boolean;
41
41
  }): unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"airtable_interface_core.d.ts","sourceRoot":"","sources":["../../../../../src/shared/types/airtable_interface_core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"airtable_interface_core.d.ts","sourceRoot":"","sources":["../../../../../src/shared/types/airtable_interface_core.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@airtable/blocks",
3
- "version": "0.0.0-experimental-446b49015-20251008",
3
+ "version": "0.0.0-experimental-4f3134f8c-20251016",
4
4
  "description": "Airtable Blocks SDK",
5
5
  "type": "module",
6
6
  "repository": {