@uniformdev/mesh-sdk-react 19.51.1-alpha.10 → 19.51.1-alpha.26

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.
package/dist/index.d.mts CHANGED
@@ -3,7 +3,7 @@ import * as React$1 from 'react';
3
3
  import React__default, { SVGProps, ReactNode, MutableRefObject, ComponentType, PropsWithChildren, HTMLAttributes, AnchorHTMLAttributes } from 'react';
4
4
  import { TDate } from 'timeago.js';
5
5
  import * as _emotion_react from '@emotion/react';
6
- import { Interpolation, Theme } from '@emotion/react';
6
+ import { Interpolation, Theme, SerializedStyles } from '@emotion/react';
7
7
  import * as _uniformdev_mesh_sdk from '@uniformdev/mesh-sdk';
8
8
  import { DynamicInput, MeshLocation, SetValueOptions, EditConnectedDataResponseCancellationContext, DynamicInputs, DataSourceLocationValue, DataTypeLocationValue, BindableTypes } from '@uniformdev/mesh-sdk';
9
9
  export * from '@uniformdev/mesh-sdk';
@@ -441,6 +441,8 @@ declare function useMeshLocation<TLocationType extends MeshLocation['type'], TLo
441
441
  type: TLocationType;
442
442
  }> | Extract<_uniformdev_mesh_sdk.SettingsLocation<TLocationValue>, {
443
443
  type: TLocationType;
444
+ }> | Extract<_uniformdev_mesh_sdk.AIGenerateLocation<TLocationValue>, {
445
+ type: TLocationType;
444
446
  }>, "setValue"> & {
445
447
  setValue: SetLocationValueDispatch<(Extract<_uniformdev_mesh_sdk.DataSourceLocation, {
446
448
  type: TLocationType;
@@ -454,6 +456,8 @@ declare function useMeshLocation<TLocationType extends MeshLocation['type'], TLo
454
456
  type: TLocationType;
455
457
  }> | Extract<_uniformdev_mesh_sdk.SettingsLocation<TLocationValue>, {
456
458
  type: TLocationType;
459
+ }> | Extract<_uniformdev_mesh_sdk.AIGenerateLocation<TLocationValue>, {
460
+ type: TLocationType;
457
461
  }>)["value"], Parameters<(Extract<_uniformdev_mesh_sdk.DataSourceLocation, {
458
462
  type: TLocationType;
459
463
  }> | Extract<_uniformdev_mesh_sdk.DataTypeLocation, {
@@ -466,6 +470,8 @@ declare function useMeshLocation<TLocationType extends MeshLocation['type'], TLo
466
470
  type: TLocationType;
467
471
  }> | Extract<_uniformdev_mesh_sdk.SettingsLocation<TLocationValue>, {
468
472
  type: TLocationType;
473
+ }> | Extract<_uniformdev_mesh_sdk.AIGenerateLocation<TLocationValue>, {
474
+ type: TLocationType;
469
475
  }>)["setValue"]>[0]>;
470
476
  };
471
477
  type SetLocationValueDispatch<TValue, TSetValue = TValue> = (dispatch: SetLocationValueFunction<TValue, TSetValue>) => Promise<void> | void;
@@ -772,7 +778,7 @@ type InputVariablesProps<TEditorContext = unknown> = {
772
778
  /** Enables mutliple lines in the input (\n in the value) */
773
779
  multiLine?: boolean;
774
780
  /** Disables the inline variable selection menu when rendering a variables input */
775
- disableInlineMenu?: boolean;
781
+ disableInlineMenu?: boolean | 'by-label' | 'by-input';
776
782
  /**
777
783
  * Enables clicking a variable reference to edit the variable
778
784
  * Note: automatically disabled if `disabled` or `disableVariables` is set
@@ -803,6 +809,8 @@ type InputVariablesProps<TEditorContext = unknown> = {
803
809
  * * Performing other custom mutations to the variables editor, such as inserting text from a button click.
804
810
  */
805
811
  editorRef?: MutableRefObject<LexicalEditor | null>;
812
+ /** The compact style is similar to the parameters panel */
813
+ styleVariant?: 'default' | 'compact';
806
814
  } & PasteTransformerPluginProps & UseInputVariablesStateProps<TEditorContext>;
807
815
  /**
808
816
  * An input box that enables insertion of 'variables', provided by VariablesProvider,
@@ -870,6 +878,7 @@ type ParameterVariablesProps<TEditorContext = unknown> = {
870
878
  editorRef?: MutableRefObject<LexicalEditor | null>;
871
879
  /** If set the editor will auto-focus on mount */
872
880
  autoFocus?: boolean;
881
+ inputCss?: SerializedStyles;
873
882
  } & UseInputVariablesStateProps<TEditorContext>;
874
883
  /**
875
884
  * An input box that enables insertion of 'variables', provided by VariablesProvider,
@@ -1178,8 +1187,8 @@ type ObjectSearchFilterProps = {
1178
1187
  * @default 'Content Type Select'
1179
1188
  */
1180
1189
  selectLabel?: string;
1181
- /** sets the select input options */
1182
- selectOptions: Array<{
1190
+ /** sets the select input options, if empty - only keyword search field will be rendered */
1191
+ selectOptions?: Array<{
1183
1192
  id: string;
1184
1193
  name?: string;
1185
1194
  label: string;
@@ -1195,7 +1204,7 @@ type ObjectSearchFilterProps = {
1195
1204
  };
1196
1205
  /**
1197
1206
  * @description Object search filter is an opinionated filter that has pre-defined query and setQuery functions
1198
- * that can be extended with custom fuctions
1207
+ * that can be extended with custom functions
1199
1208
  * @example <ObjectSearchFilter selectOptions={[{ id: 'id value', name: 'name value'}]} /> */
1200
1209
  declare const ObjectSearchFilter: ({ requireContentType, typeSelectorAllTypesOptionText, searchInputName, searchInputPlaceholderText, selectLabel, selectOptions, }: ObjectSearchFilterProps) => _emotion_react_types_jsx_namespace.EmotionJSX.Element;
1201
1210
 
@@ -1300,7 +1309,8 @@ declare function useObjectSearchContext<TExtraSearchFilters = unknown, TExtraIte
1300
1309
  type ObjectSearchListItemProps = SelectedItemProps & {
1301
1310
  /** sets the content type value, this is normally used for subtitles e.g. Kitchens */
1302
1311
  contentType?: string | string[];
1303
- /** sets image parameters */
1312
+ /** sets image parameters
1313
+ * @deprecated Please use imageUrl to make it compatible with */
1304
1314
  image?: {
1305
1315
  /** sets the src valuue */
1306
1316
  src: string;
@@ -1315,6 +1325,7 @@ type ObjectSearchListItemProps = SelectedItemProps & {
1315
1325
  */
1316
1326
  height?: number;
1317
1327
  };
1328
+ imageUrl?: string;
1318
1329
  /** sets the function call on the role="button" wrapping element */
1319
1330
  onSelect?: (data?: Record<string, unknown>) => void;
1320
1331
  /** allows child components within the popover data */
@@ -1331,7 +1342,7 @@ type ObjectSearchListItemProps = SelectedItemProps & {
1331
1342
  /**
1332
1343
  * @description entry search list item is an opinionated UI component best used for initial retrieved results
1333
1344
  * @example <ObjectSearchListItem id="my-result-item" title="title" popoverData={<p>some data info</p>}><div>example of uncontrolled content</div></ObjectSearchListItem> */
1334
- declare const ObjectSearchListItem: ({ id, title, contentType, image, popoverData, onSelect, isMulti, disabled, children, }: ObjectSearchListItemProps) => _emotion_react_types_jsx_namespace.EmotionJSX.Element;
1345
+ declare const ObjectSearchListItem: ({ id, title, contentType, image, imageUrl, popoverData, onSelect, isMulti, disabled, children, }: ObjectSearchListItemProps) => _emotion_react_types_jsx_namespace.EmotionJSX.Element;
1335
1346
  /**
1336
1347
  * An opinionated loading skeleton component best used with ObjectSearchListItem
1337
1348
  * @example <ObjectSearchListItemLoadingSkeleton />
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import * as React$1 from 'react';
3
3
  import React__default, { SVGProps, ReactNode, MutableRefObject, ComponentType, PropsWithChildren, HTMLAttributes, AnchorHTMLAttributes } from 'react';
4
4
  import { TDate } from 'timeago.js';
5
5
  import * as _emotion_react from '@emotion/react';
6
- import { Interpolation, Theme } from '@emotion/react';
6
+ import { Interpolation, Theme, SerializedStyles } from '@emotion/react';
7
7
  import * as _uniformdev_mesh_sdk from '@uniformdev/mesh-sdk';
8
8
  import { DynamicInput, MeshLocation, SetValueOptions, EditConnectedDataResponseCancellationContext, DynamicInputs, DataSourceLocationValue, DataTypeLocationValue, BindableTypes } from '@uniformdev/mesh-sdk';
9
9
  export * from '@uniformdev/mesh-sdk';
@@ -441,6 +441,8 @@ declare function useMeshLocation<TLocationType extends MeshLocation['type'], TLo
441
441
  type: TLocationType;
442
442
  }> | Extract<_uniformdev_mesh_sdk.SettingsLocation<TLocationValue>, {
443
443
  type: TLocationType;
444
+ }> | Extract<_uniformdev_mesh_sdk.AIGenerateLocation<TLocationValue>, {
445
+ type: TLocationType;
444
446
  }>, "setValue"> & {
445
447
  setValue: SetLocationValueDispatch<(Extract<_uniformdev_mesh_sdk.DataSourceLocation, {
446
448
  type: TLocationType;
@@ -454,6 +456,8 @@ declare function useMeshLocation<TLocationType extends MeshLocation['type'], TLo
454
456
  type: TLocationType;
455
457
  }> | Extract<_uniformdev_mesh_sdk.SettingsLocation<TLocationValue>, {
456
458
  type: TLocationType;
459
+ }> | Extract<_uniformdev_mesh_sdk.AIGenerateLocation<TLocationValue>, {
460
+ type: TLocationType;
457
461
  }>)["value"], Parameters<(Extract<_uniformdev_mesh_sdk.DataSourceLocation, {
458
462
  type: TLocationType;
459
463
  }> | Extract<_uniformdev_mesh_sdk.DataTypeLocation, {
@@ -466,6 +470,8 @@ declare function useMeshLocation<TLocationType extends MeshLocation['type'], TLo
466
470
  type: TLocationType;
467
471
  }> | Extract<_uniformdev_mesh_sdk.SettingsLocation<TLocationValue>, {
468
472
  type: TLocationType;
473
+ }> | Extract<_uniformdev_mesh_sdk.AIGenerateLocation<TLocationValue>, {
474
+ type: TLocationType;
469
475
  }>)["setValue"]>[0]>;
470
476
  };
471
477
  type SetLocationValueDispatch<TValue, TSetValue = TValue> = (dispatch: SetLocationValueFunction<TValue, TSetValue>) => Promise<void> | void;
@@ -772,7 +778,7 @@ type InputVariablesProps<TEditorContext = unknown> = {
772
778
  /** Enables mutliple lines in the input (\n in the value) */
773
779
  multiLine?: boolean;
774
780
  /** Disables the inline variable selection menu when rendering a variables input */
775
- disableInlineMenu?: boolean;
781
+ disableInlineMenu?: boolean | 'by-label' | 'by-input';
776
782
  /**
777
783
  * Enables clicking a variable reference to edit the variable
778
784
  * Note: automatically disabled if `disabled` or `disableVariables` is set
@@ -803,6 +809,8 @@ type InputVariablesProps<TEditorContext = unknown> = {
803
809
  * * Performing other custom mutations to the variables editor, such as inserting text from a button click.
804
810
  */
805
811
  editorRef?: MutableRefObject<LexicalEditor | null>;
812
+ /** The compact style is similar to the parameters panel */
813
+ styleVariant?: 'default' | 'compact';
806
814
  } & PasteTransformerPluginProps & UseInputVariablesStateProps<TEditorContext>;
807
815
  /**
808
816
  * An input box that enables insertion of 'variables', provided by VariablesProvider,
@@ -870,6 +878,7 @@ type ParameterVariablesProps<TEditorContext = unknown> = {
870
878
  editorRef?: MutableRefObject<LexicalEditor | null>;
871
879
  /** If set the editor will auto-focus on mount */
872
880
  autoFocus?: boolean;
881
+ inputCss?: SerializedStyles;
873
882
  } & UseInputVariablesStateProps<TEditorContext>;
874
883
  /**
875
884
  * An input box that enables insertion of 'variables', provided by VariablesProvider,
@@ -1178,8 +1187,8 @@ type ObjectSearchFilterProps = {
1178
1187
  * @default 'Content Type Select'
1179
1188
  */
1180
1189
  selectLabel?: string;
1181
- /** sets the select input options */
1182
- selectOptions: Array<{
1190
+ /** sets the select input options, if empty - only keyword search field will be rendered */
1191
+ selectOptions?: Array<{
1183
1192
  id: string;
1184
1193
  name?: string;
1185
1194
  label: string;
@@ -1195,7 +1204,7 @@ type ObjectSearchFilterProps = {
1195
1204
  };
1196
1205
  /**
1197
1206
  * @description Object search filter is an opinionated filter that has pre-defined query and setQuery functions
1198
- * that can be extended with custom fuctions
1207
+ * that can be extended with custom functions
1199
1208
  * @example <ObjectSearchFilter selectOptions={[{ id: 'id value', name: 'name value'}]} /> */
1200
1209
  declare const ObjectSearchFilter: ({ requireContentType, typeSelectorAllTypesOptionText, searchInputName, searchInputPlaceholderText, selectLabel, selectOptions, }: ObjectSearchFilterProps) => _emotion_react_types_jsx_namespace.EmotionJSX.Element;
1201
1210
 
@@ -1300,7 +1309,8 @@ declare function useObjectSearchContext<TExtraSearchFilters = unknown, TExtraIte
1300
1309
  type ObjectSearchListItemProps = SelectedItemProps & {
1301
1310
  /** sets the content type value, this is normally used for subtitles e.g. Kitchens */
1302
1311
  contentType?: string | string[];
1303
- /** sets image parameters */
1312
+ /** sets image parameters
1313
+ * @deprecated Please use imageUrl to make it compatible with */
1304
1314
  image?: {
1305
1315
  /** sets the src valuue */
1306
1316
  src: string;
@@ -1315,6 +1325,7 @@ type ObjectSearchListItemProps = SelectedItemProps & {
1315
1325
  */
1316
1326
  height?: number;
1317
1327
  };
1328
+ imageUrl?: string;
1318
1329
  /** sets the function call on the role="button" wrapping element */
1319
1330
  onSelect?: (data?: Record<string, unknown>) => void;
1320
1331
  /** allows child components within the popover data */
@@ -1331,7 +1342,7 @@ type ObjectSearchListItemProps = SelectedItemProps & {
1331
1342
  /**
1332
1343
  * @description entry search list item is an opinionated UI component best used for initial retrieved results
1333
1344
  * @example <ObjectSearchListItem id="my-result-item" title="title" popoverData={<p>some data info</p>}><div>example of uncontrolled content</div></ObjectSearchListItem> */
1334
- declare const ObjectSearchListItem: ({ id, title, contentType, image, popoverData, onSelect, isMulti, disabled, children, }: ObjectSearchListItemProps) => _emotion_react_types_jsx_namespace.EmotionJSX.Element;
1345
+ declare const ObjectSearchListItem: ({ id, title, contentType, image, imageUrl, popoverData, onSelect, isMulti, disabled, children, }: ObjectSearchListItemProps) => _emotion_react_types_jsx_namespace.EmotionJSX.Element;
1335
1346
  /**
1336
1347
  * An opinionated loading skeleton component best used with ObjectSearchListItem
1337
1348
  * @example <ObjectSearchListItemLoadingSkeleton />
package/dist/index.esm.js CHANGED
@@ -3740,6 +3740,7 @@ function VariablesPlugin({
3740
3740
  /* @__PURE__ */ jsx32(
3741
3741
  "div",
3742
3742
  {
3743
+ "data-auto-resize-opt-in": true,
3743
3744
  css: css20`
3744
3745
  box-shadow: var(--shadow-base);
3745
3746
  border-radius: var(--rounded-base);
@@ -4075,6 +4076,11 @@ var input = css21`
4075
4076
  margin: 0;
4076
4077
  }
4077
4078
  `;
4079
+ var inputCompact = css21`
4080
+ border: 1px solid var(--white);
4081
+ padding-block: var(--spacing-sm);
4082
+ font-size: var(--fs-sm);
4083
+ `;
4078
4084
 
4079
4085
  // src/components/Variables/toolbox/InputVariablesProvider.tsx
4080
4086
  import * as React10 from "react";
@@ -4598,12 +4604,12 @@ function InputVariables(props) {
4598
4604
  getEditorContext,
4599
4605
  disabled,
4600
4606
  editorRef,
4601
- filterVariable
4607
+ filterVariable,
4608
+ styleVariant = "default"
4602
4609
  } = props;
4603
4610
  const [finalId] = useState12(id != null ? id : () => v42());
4604
4611
  const { dispatch, canDispatch, isEditing } = useVariables(true);
4605
4612
  const { disableVariablesForReals, hadVariablesInValue, sharedMenuProps } = useInputVariablesState(props);
4606
- const disableInlineVariablesForReals = disableVariablesForReals || disableInlineMenu;
4607
4613
  const useInputWithNoVariables = Boolean(inputWhenNoVariables && !hadVariablesInValue);
4608
4614
  const input3 = /* @__PURE__ */ jsxs23(
4609
4615
  "div",
@@ -4618,7 +4624,7 @@ function InputVariables(props) {
4618
4624
  InputVariablesOverlayMenu,
4619
4625
  {
4620
4626
  ...sharedMenuProps,
4621
- disabled: disableInlineVariablesForReals,
4627
+ disabled: disableVariablesForReals || disableInlineMenu === true || disableInlineMenu === "by-input",
4622
4628
  replaceValueOnVariableInsert: useInputWithNoVariables,
4623
4629
  useInputWhenNoVariables: useInputWithNoVariables,
4624
4630
  children: /* @__PURE__ */ jsx39(
@@ -4628,7 +4634,7 @@ function InputVariables(props) {
4628
4634
  "aria-label": ariaLabel,
4629
4635
  "data-testid": dataTestId ? dataTestId : "input-container",
4630
4636
  "data-text-value": value,
4631
- css: input
4637
+ css: [input, styleVariant === "compact" ? inputCompact : null]
4632
4638
  }
4633
4639
  )
4634
4640
  }
@@ -4652,7 +4658,7 @@ function InputVariables(props) {
4652
4658
  },
4653
4659
  id: finalId,
4654
4660
  isActive: hadVariablesInValue,
4655
- disableVariables: disableVariablesForReals,
4661
+ disableVariables: disableVariablesForReals || disableInlineMenu === "by-label",
4656
4662
  children: input3
4657
4663
  }
4658
4664
  );
@@ -4969,7 +4975,8 @@ function ParameterVariables(props) {
4969
4975
  getEditorContext,
4970
4976
  disabled,
4971
4977
  editorRef,
4972
- filterVariable
4978
+ filterVariable,
4979
+ inputCss
4973
4980
  } = props;
4974
4981
  const { dispatch, canDispatch, isEditing } = useVariables(true);
4975
4982
  const { disableVariablesForReals, hadVariablesInValue, sharedMenuProps, hasVariablesInValue } = useInputVariablesState(props);
@@ -5011,7 +5018,8 @@ function ParameterVariables(props) {
5011
5018
  "data-text-value": value,
5012
5019
  css: [
5013
5020
  input2,
5014
- typeof multiLine === "number" ? inputMultiLine(multiLine) : multiLine === true ? inputMultiLine(4) : css24``
5021
+ typeof multiLine === "number" ? inputMultiLine(multiLine) : multiLine === true ? inputMultiLine(4) : css24``,
5022
+ inputCss != null ? inputCss : css24``
5015
5023
  ]
5016
5024
  }
5017
5025
  ) }),
@@ -6287,7 +6295,7 @@ var ObjectSearchContainer = ({
6287
6295
 
6288
6296
  // src/components/ObjectSearch/ObjectSearchFilter.tsx
6289
6297
  import { InputKeywordSearch as InputKeywordSearch2, InputSelect as InputSelect6 } from "@uniformdev/design-system";
6290
- import { useState as useState16 } from "react";
6298
+ import { useMemo as useMemo15, useState as useState16 } from "react";
6291
6299
 
6292
6300
  // src/components/ObjectSearch/styles/ObjectSearchFilterContainer.styles.ts
6293
6301
  import { css as css32 } from "@emotion/react";
@@ -6303,9 +6311,6 @@ var ObjectSearchFilterContainer = css32`
6303
6311
  display: grid;
6304
6312
  gap: var(--spacing-base);
6305
6313
  `;
6306
- var ObjectSearchFilterDropdownAndTextSearch = css32`
6307
- grid-template-columns: 0.5fr 1fr;
6308
- `;
6309
6314
  var ObjectSearchFilterGrid = (gridColumns) => css32`
6310
6315
  display: grid;
6311
6316
  grid-template-columns: ${gridColumns};
@@ -6333,35 +6338,51 @@ var ObjectSearchFilter = ({
6333
6338
  });
6334
6339
  onSetQuery({ ...query, ...value });
6335
6340
  };
6336
- return /* @__PURE__ */ jsxs35("fieldset", { css: [ObjectSearchFilterContainer, ObjectSearchFilterDropdownAndTextSearch], children: [
6337
- /* @__PURE__ */ jsx60(
6338
- InputSelect6,
6339
- {
6340
- label: selectLabel,
6341
- showLabel: false,
6342
- onChange: (e) => handleFilterChange({ contentType: e.target.value }),
6343
- options: [
6344
- ...!requireContentType ? [{ value: "any", label: typeSelectorAllTypesOptionText }] : [],
6345
- ...selectOptions ? selectOptions.map((option) => {
6346
- var _a;
6347
- return { name: option == null ? void 0 : option.name, label: (_a = option.label) != null ? _a : option == null ? void 0 : option.name, id: option.id };
6348
- }) : []
6349
- ],
6350
- value: query.contentType
6351
- }
6352
- ),
6353
- /* @__PURE__ */ jsx60(
6354
- InputKeywordSearch2,
6355
- {
6356
- inputFieldName: searchInputName,
6357
- placeholder: searchInputPlaceholderText,
6358
- onSearchTextChanged: (e) => handleFilterChange({ keyword: e }),
6359
- disabledFieldSubmission: true,
6360
- onClear: () => handleFilterChange({ keyword: "" }),
6361
- value: searchState.keyword
6362
- }
6363
- )
6364
- ] });
6341
+ const memoizedSelectOptions = useMemo15(() => {
6342
+ if (!requireContentType && !(selectOptions == null ? void 0 : selectOptions.length)) {
6343
+ return [];
6344
+ }
6345
+ return [
6346
+ ...!requireContentType ? [{ value: "any", label: typeSelectorAllTypesOptionText }] : [],
6347
+ ...selectOptions ? selectOptions.map((option) => {
6348
+ var _a;
6349
+ return { name: option == null ? void 0 : option.name, label: (_a = option.label) != null ? _a : option == null ? void 0 : option.name, id: option.id };
6350
+ }) : []
6351
+ ];
6352
+ }, [requireContentType, typeSelectorAllTypesOptionText, selectOptions]);
6353
+ const shouldRenderSelect = memoizedSelectOptions.length > 0;
6354
+ return /* @__PURE__ */ jsxs35(
6355
+ "fieldset",
6356
+ {
6357
+ css: [
6358
+ ObjectSearchFilterContainer,
6359
+ ObjectSearchFilterGrid(shouldRenderSelect ? "1fr 2fr" : "1fr")
6360
+ ],
6361
+ children: [
6362
+ memoizedSelectOptions.length ? /* @__PURE__ */ jsx60(
6363
+ InputSelect6,
6364
+ {
6365
+ label: selectLabel,
6366
+ showLabel: false,
6367
+ onChange: (e) => handleFilterChange({ contentType: e.target.value }),
6368
+ options: memoizedSelectOptions,
6369
+ value: query.contentType
6370
+ }
6371
+ ) : null,
6372
+ /* @__PURE__ */ jsx60(
6373
+ InputKeywordSearch2,
6374
+ {
6375
+ inputFieldName: searchInputName,
6376
+ placeholder: searchInputPlaceholderText,
6377
+ onSearchTextChanged: (e) => handleFilterChange({ keyword: e }),
6378
+ disabledFieldSubmission: true,
6379
+ onClear: () => handleFilterChange({ keyword: "" }),
6380
+ value: searchState.keyword
6381
+ }
6382
+ )
6383
+ ]
6384
+ }
6385
+ );
6365
6386
  };
6366
6387
 
6367
6388
  // src/components/ObjectSearch/ObjectSearchFilterContainer.tsx
@@ -6420,6 +6441,10 @@ var ObjectListItemHeadingGroup = css33`
6420
6441
  align-items: center;
6421
6442
  display: grid;
6422
6443
  `;
6444
+ var ObjectListItemThumbnail = css33`
6445
+ width: 30px;
6446
+ object-fit: contain;
6447
+ `;
6423
6448
  var ObjectListItemTitle = css33`
6424
6449
  color: var(--brand-secondary-1);
6425
6450
  display: block;
@@ -6453,6 +6478,7 @@ var ObjectSearchListItem = ({
6453
6478
  title,
6454
6479
  contentType,
6455
6480
  image,
6481
+ imageUrl,
6456
6482
  popoverData,
6457
6483
  onSelect,
6458
6484
  isMulti = false,
@@ -6464,7 +6490,7 @@ var ObjectSearchListItem = ({
6464
6490
  const handleSelectItem = () => {
6465
6491
  var _a;
6466
6492
  const extraData = (_a = onSelect == null ? void 0 : onSelect()) != null ? _a : {};
6467
- const selectedItem = { id, title, contentType, image, popoverData, ...extraData };
6493
+ const selectedItem = { id, title, contentType, imageUrl, image, popoverData, ...extraData };
6468
6494
  if (isMulti) {
6469
6495
  return onSelectItem(selectedItem);
6470
6496
  }
@@ -6476,6 +6502,7 @@ var ObjectSearchListItem = ({
6476
6502
  {
6477
6503
  role: "listitem",
6478
6504
  css: [ObjectListItemContainer, disabled ? ObjectListItemContainerDisabled : void 0],
6505
+ "data-testid": "list-item",
6479
6506
  children: [
6480
6507
  /* @__PURE__ */ jsxs37(
6481
6508
  "div",
@@ -6485,10 +6512,11 @@ var ObjectSearchListItem = ({
6485
6512
  css: ObjectListItemControlledContent,
6486
6513
  "aria-disabled": disabled,
6487
6514
  children: [
6488
- !image ? null : /* @__PURE__ */ jsx62("img", { ...image, loading: (image == null ? void 0 : image.width) && image.height ? "lazy" : "eager" }),
6515
+ !imageUrl ? null : /* @__PURE__ */ jsx62("img", { src: imageUrl, alt: `Thumbnail for ${title}`, css: ObjectListItemThumbnail }),
6516
+ !image || imageUrl ? null : /* @__PURE__ */ jsx62("img", { ...image, loading: (image == null ? void 0 : image.width) && image.height ? "lazy" : "eager" }),
6489
6517
  /* @__PURE__ */ jsxs37("div", { role: "heading", css: ObjectListItemHeadingGroup, children: [
6490
6518
  !contentType ? null : /* @__PURE__ */ jsx62("span", { css: ObjectListItemSubtitle, children: formatedContentType }),
6491
- /* @__PURE__ */ jsx62("span", { css: ObjectListItemTitle, children: title })
6519
+ /* @__PURE__ */ jsx62("span", { css: ObjectListItemTitle, "data-testid": "title", children: title })
6492
6520
  ] })
6493
6521
  ]
6494
6522
  }
@@ -6985,7 +7013,7 @@ var QueryFilter = ({
6985
7013
  };
6986
7014
 
6987
7015
  // src/components/ParamTypeDynamicDataProvider.tsx
6988
- import { useEffect as useEffect17, useMemo as useMemo15, useRef as useRef15 } from "react";
7016
+ import { useEffect as useEffect17, useMemo as useMemo16, useRef as useRef15 } from "react";
6989
7017
  import { jsx as jsx67 } from "@emotion/react/jsx-runtime";
6990
7018
  function ParamTypeDynamicDataProvider(props) {
6991
7019
  const { children } = props;
@@ -6994,7 +7022,7 @@ function ParamTypeDynamicDataProvider(props) {
6994
7022
  } = useMeshLocation("paramType");
6995
7023
  const dynamicInputsAsVariables = useDynamicInputsAsVariables(dynamicInputs);
6996
7024
  const connectedDataAsVariables = useConnectedDataAsVariables(connectedData);
6997
- const variables = useMemo15(
7025
+ const variables = useMemo16(
6998
7026
  () => ({ ...connectedDataAsVariables, ...dynamicInputsAsVariables }),
6999
7027
  [dynamicInputsAsVariables, connectedDataAsVariables]
7000
7028
  );
package/dist/index.js CHANGED
@@ -3918,6 +3918,7 @@ function VariablesPlugin({
3918
3918
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3919
3919
  "div",
3920
3920
  {
3921
+ "data-auto-resize-opt-in": true,
3921
3922
  css: import_react37.css`
3922
3923
  box-shadow: var(--shadow-base);
3923
3924
  border-radius: var(--rounded-base);
@@ -4253,6 +4254,11 @@ var input = import_react41.css`
4253
4254
  margin: 0;
4254
4255
  }
4255
4256
  `;
4257
+ var inputCompact = import_react41.css`
4258
+ border: 1px solid var(--white);
4259
+ padding-block: var(--spacing-sm);
4260
+ font-size: var(--fs-sm);
4261
+ `;
4256
4262
 
4257
4263
  // src/components/Variables/toolbox/InputVariablesProvider.tsx
4258
4264
  var React10 = __toESM(require("react"));
@@ -4764,12 +4770,12 @@ function InputVariables(props) {
4764
4770
  getEditorContext,
4765
4771
  disabled,
4766
4772
  editorRef,
4767
- filterVariable
4773
+ filterVariable,
4774
+ styleVariant = "default"
4768
4775
  } = props;
4769
4776
  const [finalId] = (0, import_react49.useState)(id != null ? id : () => (0, import_uuid2.v4)());
4770
4777
  const { dispatch, canDispatch, isEditing } = useVariables(true);
4771
4778
  const { disableVariablesForReals, hadVariablesInValue, sharedMenuProps } = useInputVariablesState(props);
4772
- const disableInlineVariablesForReals = disableVariablesForReals || disableInlineMenu;
4773
4779
  const useInputWithNoVariables = Boolean(inputWhenNoVariables && !hadVariablesInValue);
4774
4780
  const input3 = /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
4775
4781
  "div",
@@ -4784,7 +4790,7 @@ function InputVariables(props) {
4784
4790
  InputVariablesOverlayMenu,
4785
4791
  {
4786
4792
  ...sharedMenuProps,
4787
- disabled: disableInlineVariablesForReals,
4793
+ disabled: disableVariablesForReals || disableInlineMenu === true || disableInlineMenu === "by-input",
4788
4794
  replaceValueOnVariableInsert: useInputWithNoVariables,
4789
4795
  useInputWhenNoVariables: useInputWithNoVariables,
4790
4796
  children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
@@ -4794,7 +4800,7 @@ function InputVariables(props) {
4794
4800
  "aria-label": ariaLabel,
4795
4801
  "data-testid": dataTestId ? dataTestId : "input-container",
4796
4802
  "data-text-value": value,
4797
- css: input
4803
+ css: [input, styleVariant === "compact" ? inputCompact : null]
4798
4804
  }
4799
4805
  )
4800
4806
  }
@@ -4818,7 +4824,7 @@ function InputVariables(props) {
4818
4824
  },
4819
4825
  id: finalId,
4820
4826
  isActive: hadVariablesInValue,
4821
- disableVariables: disableVariablesForReals,
4827
+ disableVariables: disableVariablesForReals || disableInlineMenu === "by-label",
4822
4828
  children: input3
4823
4829
  }
4824
4830
  );
@@ -5135,7 +5141,8 @@ function ParameterVariables(props) {
5135
5141
  getEditorContext,
5136
5142
  disabled,
5137
5143
  editorRef,
5138
- filterVariable
5144
+ filterVariable,
5145
+ inputCss
5139
5146
  } = props;
5140
5147
  const { dispatch, canDispatch, isEditing } = useVariables(true);
5141
5148
  const { disableVariablesForReals, hadVariablesInValue, sharedMenuProps, hasVariablesInValue } = useInputVariablesState(props);
@@ -5177,7 +5184,8 @@ function ParameterVariables(props) {
5177
5184
  "data-text-value": value,
5178
5185
  css: [
5179
5186
  input2,
5180
- typeof multiLine === "number" ? inputMultiLine(multiLine) : multiLine === true ? inputMultiLine(4) : import_react54.css``
5187
+ typeof multiLine === "number" ? inputMultiLine(multiLine) : multiLine === true ? inputMultiLine(4) : import_react54.css``,
5188
+ inputCss != null ? inputCss : import_react54.css``
5181
5189
  ]
5182
5190
  }
5183
5191
  ) }),
@@ -6434,9 +6442,6 @@ var ObjectSearchFilterContainer = import_react66.css`
6434
6442
  display: grid;
6435
6443
  gap: var(--spacing-base);
6436
6444
  `;
6437
- var ObjectSearchFilterDropdownAndTextSearch = import_react66.css`
6438
- grid-template-columns: 0.5fr 1fr;
6439
- `;
6440
6445
  var ObjectSearchFilterGrid = (gridColumns) => import_react66.css`
6441
6446
  display: grid;
6442
6447
  grid-template-columns: ${gridColumns};
@@ -6464,35 +6469,51 @@ var ObjectSearchFilter = ({
6464
6469
  });
6465
6470
  onSetQuery({ ...query, ...value });
6466
6471
  };
6467
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("fieldset", { css: [ObjectSearchFilterContainer, ObjectSearchFilterDropdownAndTextSearch], children: [
6468
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
6469
- import_design_system33.InputSelect,
6470
- {
6471
- label: selectLabel,
6472
- showLabel: false,
6473
- onChange: (e) => handleFilterChange({ contentType: e.target.value }),
6474
- options: [
6475
- ...!requireContentType ? [{ value: "any", label: typeSelectorAllTypesOptionText }] : [],
6476
- ...selectOptions ? selectOptions.map((option) => {
6477
- var _a;
6478
- return { name: option == null ? void 0 : option.name, label: (_a = option.label) != null ? _a : option == null ? void 0 : option.name, id: option.id };
6479
- }) : []
6480
- ],
6481
- value: query.contentType
6482
- }
6483
- ),
6484
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
6485
- import_design_system33.InputKeywordSearch,
6486
- {
6487
- inputFieldName: searchInputName,
6488
- placeholder: searchInputPlaceholderText,
6489
- onSearchTextChanged: (e) => handleFilterChange({ keyword: e }),
6490
- disabledFieldSubmission: true,
6491
- onClear: () => handleFilterChange({ keyword: "" }),
6492
- value: searchState.keyword
6493
- }
6494
- )
6495
- ] });
6472
+ const memoizedSelectOptions = (0, import_react67.useMemo)(() => {
6473
+ if (!requireContentType && !(selectOptions == null ? void 0 : selectOptions.length)) {
6474
+ return [];
6475
+ }
6476
+ return [
6477
+ ...!requireContentType ? [{ value: "any", label: typeSelectorAllTypesOptionText }] : [],
6478
+ ...selectOptions ? selectOptions.map((option) => {
6479
+ var _a;
6480
+ return { name: option == null ? void 0 : option.name, label: (_a = option.label) != null ? _a : option == null ? void 0 : option.name, id: option.id };
6481
+ }) : []
6482
+ ];
6483
+ }, [requireContentType, typeSelectorAllTypesOptionText, selectOptions]);
6484
+ const shouldRenderSelect = memoizedSelectOptions.length > 0;
6485
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
6486
+ "fieldset",
6487
+ {
6488
+ css: [
6489
+ ObjectSearchFilterContainer,
6490
+ ObjectSearchFilterGrid(shouldRenderSelect ? "1fr 2fr" : "1fr")
6491
+ ],
6492
+ children: [
6493
+ memoizedSelectOptions.length ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
6494
+ import_design_system33.InputSelect,
6495
+ {
6496
+ label: selectLabel,
6497
+ showLabel: false,
6498
+ onChange: (e) => handleFilterChange({ contentType: e.target.value }),
6499
+ options: memoizedSelectOptions,
6500
+ value: query.contentType
6501
+ }
6502
+ ) : null,
6503
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
6504
+ import_design_system33.InputKeywordSearch,
6505
+ {
6506
+ inputFieldName: searchInputName,
6507
+ placeholder: searchInputPlaceholderText,
6508
+ onSearchTextChanged: (e) => handleFilterChange({ keyword: e }),
6509
+ disabledFieldSubmission: true,
6510
+ onClear: () => handleFilterChange({ keyword: "" }),
6511
+ value: searchState.keyword
6512
+ }
6513
+ )
6514
+ ]
6515
+ }
6516
+ );
6496
6517
  };
6497
6518
 
6498
6519
  // src/components/ObjectSearch/ObjectSearchFilterContainer.tsx
@@ -6551,6 +6572,10 @@ var ObjectListItemHeadingGroup = import_react68.css`
6551
6572
  align-items: center;
6552
6573
  display: grid;
6553
6574
  `;
6575
+ var ObjectListItemThumbnail = import_react68.css`
6576
+ width: 30px;
6577
+ object-fit: contain;
6578
+ `;
6554
6579
  var ObjectListItemTitle = import_react68.css`
6555
6580
  color: var(--brand-secondary-1);
6556
6581
  display: block;
@@ -6584,6 +6609,7 @@ var ObjectSearchListItem = ({
6584
6609
  title,
6585
6610
  contentType,
6586
6611
  image,
6612
+ imageUrl,
6587
6613
  popoverData,
6588
6614
  onSelect,
6589
6615
  isMulti = false,
@@ -6595,7 +6621,7 @@ var ObjectSearchListItem = ({
6595
6621
  const handleSelectItem = () => {
6596
6622
  var _a;
6597
6623
  const extraData = (_a = onSelect == null ? void 0 : onSelect()) != null ? _a : {};
6598
- const selectedItem = { id, title, contentType, image, popoverData, ...extraData };
6624
+ const selectedItem = { id, title, contentType, imageUrl, image, popoverData, ...extraData };
6599
6625
  if (isMulti) {
6600
6626
  return onSelectItem(selectedItem);
6601
6627
  }
@@ -6607,6 +6633,7 @@ var ObjectSearchListItem = ({
6607
6633
  {
6608
6634
  role: "listitem",
6609
6635
  css: [ObjectListItemContainer, disabled ? ObjectListItemContainerDisabled : void 0],
6636
+ "data-testid": "list-item",
6610
6637
  children: [
6611
6638
  /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
6612
6639
  "div",
@@ -6616,10 +6643,11 @@ var ObjectSearchListItem = ({
6616
6643
  css: ObjectListItemControlledContent,
6617
6644
  "aria-disabled": disabled,
6618
6645
  children: [
6619
- !image ? null : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("img", { ...image, loading: (image == null ? void 0 : image.width) && image.height ? "lazy" : "eager" }),
6646
+ !imageUrl ? null : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("img", { src: imageUrl, alt: `Thumbnail for ${title}`, css: ObjectListItemThumbnail }),
6647
+ !image || imageUrl ? null : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("img", { ...image, loading: (image == null ? void 0 : image.width) && image.height ? "lazy" : "eager" }),
6620
6648
  /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { role: "heading", css: ObjectListItemHeadingGroup, children: [
6621
6649
  !contentType ? null : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { css: ObjectListItemSubtitle, children: formatedContentType }),
6622
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { css: ObjectListItemTitle, children: title })
6650
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { css: ObjectListItemTitle, "data-testid": "title", children: title })
6623
6651
  ] })
6624
6652
  ]
6625
6653
  }
package/dist/index.mjs CHANGED
@@ -3740,6 +3740,7 @@ function VariablesPlugin({
3740
3740
  /* @__PURE__ */ jsx32(
3741
3741
  "div",
3742
3742
  {
3743
+ "data-auto-resize-opt-in": true,
3743
3744
  css: css20`
3744
3745
  box-shadow: var(--shadow-base);
3745
3746
  border-radius: var(--rounded-base);
@@ -4075,6 +4076,11 @@ var input = css21`
4075
4076
  margin: 0;
4076
4077
  }
4077
4078
  `;
4079
+ var inputCompact = css21`
4080
+ border: 1px solid var(--white);
4081
+ padding-block: var(--spacing-sm);
4082
+ font-size: var(--fs-sm);
4083
+ `;
4078
4084
 
4079
4085
  // src/components/Variables/toolbox/InputVariablesProvider.tsx
4080
4086
  import * as React10 from "react";
@@ -4598,12 +4604,12 @@ function InputVariables(props) {
4598
4604
  getEditorContext,
4599
4605
  disabled,
4600
4606
  editorRef,
4601
- filterVariable
4607
+ filterVariable,
4608
+ styleVariant = "default"
4602
4609
  } = props;
4603
4610
  const [finalId] = useState12(id != null ? id : () => v42());
4604
4611
  const { dispatch, canDispatch, isEditing } = useVariables(true);
4605
4612
  const { disableVariablesForReals, hadVariablesInValue, sharedMenuProps } = useInputVariablesState(props);
4606
- const disableInlineVariablesForReals = disableVariablesForReals || disableInlineMenu;
4607
4613
  const useInputWithNoVariables = Boolean(inputWhenNoVariables && !hadVariablesInValue);
4608
4614
  const input3 = /* @__PURE__ */ jsxs23(
4609
4615
  "div",
@@ -4618,7 +4624,7 @@ function InputVariables(props) {
4618
4624
  InputVariablesOverlayMenu,
4619
4625
  {
4620
4626
  ...sharedMenuProps,
4621
- disabled: disableInlineVariablesForReals,
4627
+ disabled: disableVariablesForReals || disableInlineMenu === true || disableInlineMenu === "by-input",
4622
4628
  replaceValueOnVariableInsert: useInputWithNoVariables,
4623
4629
  useInputWhenNoVariables: useInputWithNoVariables,
4624
4630
  children: /* @__PURE__ */ jsx39(
@@ -4628,7 +4634,7 @@ function InputVariables(props) {
4628
4634
  "aria-label": ariaLabel,
4629
4635
  "data-testid": dataTestId ? dataTestId : "input-container",
4630
4636
  "data-text-value": value,
4631
- css: input
4637
+ css: [input, styleVariant === "compact" ? inputCompact : null]
4632
4638
  }
4633
4639
  )
4634
4640
  }
@@ -4652,7 +4658,7 @@ function InputVariables(props) {
4652
4658
  },
4653
4659
  id: finalId,
4654
4660
  isActive: hadVariablesInValue,
4655
- disableVariables: disableVariablesForReals,
4661
+ disableVariables: disableVariablesForReals || disableInlineMenu === "by-label",
4656
4662
  children: input3
4657
4663
  }
4658
4664
  );
@@ -4969,7 +4975,8 @@ function ParameterVariables(props) {
4969
4975
  getEditorContext,
4970
4976
  disabled,
4971
4977
  editorRef,
4972
- filterVariable
4978
+ filterVariable,
4979
+ inputCss
4973
4980
  } = props;
4974
4981
  const { dispatch, canDispatch, isEditing } = useVariables(true);
4975
4982
  const { disableVariablesForReals, hadVariablesInValue, sharedMenuProps, hasVariablesInValue } = useInputVariablesState(props);
@@ -5011,7 +5018,8 @@ function ParameterVariables(props) {
5011
5018
  "data-text-value": value,
5012
5019
  css: [
5013
5020
  input2,
5014
- typeof multiLine === "number" ? inputMultiLine(multiLine) : multiLine === true ? inputMultiLine(4) : css24``
5021
+ typeof multiLine === "number" ? inputMultiLine(multiLine) : multiLine === true ? inputMultiLine(4) : css24``,
5022
+ inputCss != null ? inputCss : css24``
5015
5023
  ]
5016
5024
  }
5017
5025
  ) }),
@@ -6287,7 +6295,7 @@ var ObjectSearchContainer = ({
6287
6295
 
6288
6296
  // src/components/ObjectSearch/ObjectSearchFilter.tsx
6289
6297
  import { InputKeywordSearch as InputKeywordSearch2, InputSelect as InputSelect6 } from "@uniformdev/design-system";
6290
- import { useState as useState16 } from "react";
6298
+ import { useMemo as useMemo15, useState as useState16 } from "react";
6291
6299
 
6292
6300
  // src/components/ObjectSearch/styles/ObjectSearchFilterContainer.styles.ts
6293
6301
  import { css as css32 } from "@emotion/react";
@@ -6303,9 +6311,6 @@ var ObjectSearchFilterContainer = css32`
6303
6311
  display: grid;
6304
6312
  gap: var(--spacing-base);
6305
6313
  `;
6306
- var ObjectSearchFilterDropdownAndTextSearch = css32`
6307
- grid-template-columns: 0.5fr 1fr;
6308
- `;
6309
6314
  var ObjectSearchFilterGrid = (gridColumns) => css32`
6310
6315
  display: grid;
6311
6316
  grid-template-columns: ${gridColumns};
@@ -6333,35 +6338,51 @@ var ObjectSearchFilter = ({
6333
6338
  });
6334
6339
  onSetQuery({ ...query, ...value });
6335
6340
  };
6336
- return /* @__PURE__ */ jsxs35("fieldset", { css: [ObjectSearchFilterContainer, ObjectSearchFilterDropdownAndTextSearch], children: [
6337
- /* @__PURE__ */ jsx60(
6338
- InputSelect6,
6339
- {
6340
- label: selectLabel,
6341
- showLabel: false,
6342
- onChange: (e) => handleFilterChange({ contentType: e.target.value }),
6343
- options: [
6344
- ...!requireContentType ? [{ value: "any", label: typeSelectorAllTypesOptionText }] : [],
6345
- ...selectOptions ? selectOptions.map((option) => {
6346
- var _a;
6347
- return { name: option == null ? void 0 : option.name, label: (_a = option.label) != null ? _a : option == null ? void 0 : option.name, id: option.id };
6348
- }) : []
6349
- ],
6350
- value: query.contentType
6351
- }
6352
- ),
6353
- /* @__PURE__ */ jsx60(
6354
- InputKeywordSearch2,
6355
- {
6356
- inputFieldName: searchInputName,
6357
- placeholder: searchInputPlaceholderText,
6358
- onSearchTextChanged: (e) => handleFilterChange({ keyword: e }),
6359
- disabledFieldSubmission: true,
6360
- onClear: () => handleFilterChange({ keyword: "" }),
6361
- value: searchState.keyword
6362
- }
6363
- )
6364
- ] });
6341
+ const memoizedSelectOptions = useMemo15(() => {
6342
+ if (!requireContentType && !(selectOptions == null ? void 0 : selectOptions.length)) {
6343
+ return [];
6344
+ }
6345
+ return [
6346
+ ...!requireContentType ? [{ value: "any", label: typeSelectorAllTypesOptionText }] : [],
6347
+ ...selectOptions ? selectOptions.map((option) => {
6348
+ var _a;
6349
+ return { name: option == null ? void 0 : option.name, label: (_a = option.label) != null ? _a : option == null ? void 0 : option.name, id: option.id };
6350
+ }) : []
6351
+ ];
6352
+ }, [requireContentType, typeSelectorAllTypesOptionText, selectOptions]);
6353
+ const shouldRenderSelect = memoizedSelectOptions.length > 0;
6354
+ return /* @__PURE__ */ jsxs35(
6355
+ "fieldset",
6356
+ {
6357
+ css: [
6358
+ ObjectSearchFilterContainer,
6359
+ ObjectSearchFilterGrid(shouldRenderSelect ? "1fr 2fr" : "1fr")
6360
+ ],
6361
+ children: [
6362
+ memoizedSelectOptions.length ? /* @__PURE__ */ jsx60(
6363
+ InputSelect6,
6364
+ {
6365
+ label: selectLabel,
6366
+ showLabel: false,
6367
+ onChange: (e) => handleFilterChange({ contentType: e.target.value }),
6368
+ options: memoizedSelectOptions,
6369
+ value: query.contentType
6370
+ }
6371
+ ) : null,
6372
+ /* @__PURE__ */ jsx60(
6373
+ InputKeywordSearch2,
6374
+ {
6375
+ inputFieldName: searchInputName,
6376
+ placeholder: searchInputPlaceholderText,
6377
+ onSearchTextChanged: (e) => handleFilterChange({ keyword: e }),
6378
+ disabledFieldSubmission: true,
6379
+ onClear: () => handleFilterChange({ keyword: "" }),
6380
+ value: searchState.keyword
6381
+ }
6382
+ )
6383
+ ]
6384
+ }
6385
+ );
6365
6386
  };
6366
6387
 
6367
6388
  // src/components/ObjectSearch/ObjectSearchFilterContainer.tsx
@@ -6420,6 +6441,10 @@ var ObjectListItemHeadingGroup = css33`
6420
6441
  align-items: center;
6421
6442
  display: grid;
6422
6443
  `;
6444
+ var ObjectListItemThumbnail = css33`
6445
+ width: 30px;
6446
+ object-fit: contain;
6447
+ `;
6423
6448
  var ObjectListItemTitle = css33`
6424
6449
  color: var(--brand-secondary-1);
6425
6450
  display: block;
@@ -6453,6 +6478,7 @@ var ObjectSearchListItem = ({
6453
6478
  title,
6454
6479
  contentType,
6455
6480
  image,
6481
+ imageUrl,
6456
6482
  popoverData,
6457
6483
  onSelect,
6458
6484
  isMulti = false,
@@ -6464,7 +6490,7 @@ var ObjectSearchListItem = ({
6464
6490
  const handleSelectItem = () => {
6465
6491
  var _a;
6466
6492
  const extraData = (_a = onSelect == null ? void 0 : onSelect()) != null ? _a : {};
6467
- const selectedItem = { id, title, contentType, image, popoverData, ...extraData };
6493
+ const selectedItem = { id, title, contentType, imageUrl, image, popoverData, ...extraData };
6468
6494
  if (isMulti) {
6469
6495
  return onSelectItem(selectedItem);
6470
6496
  }
@@ -6476,6 +6502,7 @@ var ObjectSearchListItem = ({
6476
6502
  {
6477
6503
  role: "listitem",
6478
6504
  css: [ObjectListItemContainer, disabled ? ObjectListItemContainerDisabled : void 0],
6505
+ "data-testid": "list-item",
6479
6506
  children: [
6480
6507
  /* @__PURE__ */ jsxs37(
6481
6508
  "div",
@@ -6485,10 +6512,11 @@ var ObjectSearchListItem = ({
6485
6512
  css: ObjectListItemControlledContent,
6486
6513
  "aria-disabled": disabled,
6487
6514
  children: [
6488
- !image ? null : /* @__PURE__ */ jsx62("img", { ...image, loading: (image == null ? void 0 : image.width) && image.height ? "lazy" : "eager" }),
6515
+ !imageUrl ? null : /* @__PURE__ */ jsx62("img", { src: imageUrl, alt: `Thumbnail for ${title}`, css: ObjectListItemThumbnail }),
6516
+ !image || imageUrl ? null : /* @__PURE__ */ jsx62("img", { ...image, loading: (image == null ? void 0 : image.width) && image.height ? "lazy" : "eager" }),
6489
6517
  /* @__PURE__ */ jsxs37("div", { role: "heading", css: ObjectListItemHeadingGroup, children: [
6490
6518
  !contentType ? null : /* @__PURE__ */ jsx62("span", { css: ObjectListItemSubtitle, children: formatedContentType }),
6491
- /* @__PURE__ */ jsx62("span", { css: ObjectListItemTitle, children: title })
6519
+ /* @__PURE__ */ jsx62("span", { css: ObjectListItemTitle, "data-testid": "title", children: title })
6492
6520
  ] })
6493
6521
  ]
6494
6522
  }
@@ -6985,7 +7013,7 @@ var QueryFilter = ({
6985
7013
  };
6986
7014
 
6987
7015
  // src/components/ParamTypeDynamicDataProvider.tsx
6988
- import { useEffect as useEffect17, useMemo as useMemo15, useRef as useRef15 } from "react";
7016
+ import { useEffect as useEffect17, useMemo as useMemo16, useRef as useRef15 } from "react";
6989
7017
  import { jsx as jsx67 } from "@emotion/react/jsx-runtime";
6990
7018
  function ParamTypeDynamicDataProvider(props) {
6991
7019
  const { children } = props;
@@ -6994,7 +7022,7 @@ function ParamTypeDynamicDataProvider(props) {
6994
7022
  } = useMeshLocation("paramType");
6995
7023
  const dynamicInputsAsVariables = useDynamicInputsAsVariables(dynamicInputs);
6996
7024
  const connectedDataAsVariables = useConnectedDataAsVariables(connectedData);
6997
- const variables = useMemo15(
7025
+ const variables = useMemo16(
6998
7026
  () => ({ ...connectedDataAsVariables, ...dynamicInputsAsVariables }),
6999
7027
  [dynamicInputsAsVariables, connectedDataAsVariables]
7000
7028
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/mesh-sdk-react",
3
- "version": "19.51.1-alpha.10+ee32ab8b6",
3
+ "version": "19.51.1-alpha.26+87b6d6f43",
4
4
  "description": "Uniform Mesh Framework SDK for React",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "./dist/index.js",
@@ -50,9 +50,9 @@
50
50
  "@lexical/selection": "^0.12.0",
51
51
  "@lexical/utils": "^0.12.0",
52
52
  "@react-icons/all-files": "https://github.com/react-icons/react-icons/releases/download/v4.10.1/react-icons-all-files-4.10.1.tgz",
53
- "@uniformdev/canvas": "19.51.1-alpha.10+ee32ab8b6",
54
- "@uniformdev/design-system": "19.51.1-alpha.10+ee32ab8b6",
55
- "@uniformdev/mesh-sdk": "19.51.1-alpha.10+ee32ab8b6",
53
+ "@uniformdev/canvas": "19.51.1-alpha.26+87b6d6f43",
54
+ "@uniformdev/design-system": "19.51.1-alpha.26+87b6d6f43",
55
+ "@uniformdev/mesh-sdk": "19.51.1-alpha.26+87b6d6f43",
56
56
  "dequal": "^2.0.3",
57
57
  "lexical": "^0.12.0",
58
58
  "mitt": "^3.0.0",
@@ -86,5 +86,5 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "gitHead": "ee32ab8b66da53e39f0714b708d5cd2ec49592bd"
89
+ "gitHead": "87b6d6f43ac5ed3bf05fbdba51dc239e04601dd1"
90
90
  }