@uniformdev/mesh-sdk-react 20.78.0 → 20.79.1

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
@@ -1638,6 +1638,8 @@ type FilterOptionLeftHandComponentProps = {
1638
1638
  type FilterOption = {
1639
1639
  /** The label for the option */
1640
1640
  label: string;
1641
+ /** Secondary context shown under the label in the filter menu */
1642
+ secondaryLabel?: string;
1641
1643
  /** The value for the option */
1642
1644
  value: string;
1643
1645
  /** The operator options for the option */
@@ -1648,6 +1650,13 @@ type FilterOption = {
1648
1650
  readOnly?: boolean;
1649
1651
  /** Set a disabled state on the input */
1650
1652
  disabled?: boolean;
1653
+ /**
1654
+ * Marks a criteria that may only appear once across the whole filter set (e.g. content/composition
1655
+ * type, workflow). Consumers that build filters interactively (e.g. the modern filter bar) use this
1656
+ * to disable the criteria in "add"/"change" menus while it is already occupied by another row,
1657
+ * deriving occupancy from their live working rows rather than the applied filters.
1658
+ */
1659
+ singleUse?: boolean;
1651
1660
  /**
1652
1661
  * Controls whether the filter's right-hand-side allows bound dynamic tokens.
1653
1662
  *
@@ -1675,7 +1684,13 @@ type FilterOptionGroup = {
1675
1684
  /** The options for the option */
1676
1685
  options?: FilterOption[];
1677
1686
  };
1678
- /** Filter selected and query value props */
1687
+ /**
1688
+ * Filter selected and query value props.
1689
+ *
1690
+ * @deprecated Frozen for legacy SearchAndFilter UI compatibility. New dashboard
1691
+ * code should use the Filter type from the views API; this mesh export is not a
1692
+ * published replacement and will not gain new fields.
1693
+ */
1679
1694
  type Filter = {
1680
1695
  /** The field value selected */
1681
1696
  field: string;
@@ -2120,7 +2135,7 @@ type SearchAndFilterResultContainerProps = {
2120
2135
  hideClearButton?: boolean;
2121
2136
  };
2122
2137
  /** Search and filter results container */
2123
- declare const SearchAndFilterResultContainer: ({ buttonText, clearButtonLabel, calloutTitle, calloutText, onHandleClear, hideClearButton, }: SearchAndFilterResultContainerProps) => _emotion_react_jsx_runtime.JSX.Element | null;
2138
+ declare const SearchAndFilterResultContainer: ({ buttonText, calloutTitle, calloutText, onHandleClear, hideClearButton, }: SearchAndFilterResultContainerProps) => _emotion_react_jsx_runtime.JSX.Element | null;
2124
2139
 
2125
2140
  declare const SearchOnlyContext: React$1.Context<Pick<SearchAndFilterContextProps, "searchTerm" | "setSearchTerm">>;
2126
2141
  type SearchOnlyProviderProps = Pick<SearchAndFilterProviderProps, 'onSearchChange'> & {
package/dist/index.d.ts CHANGED
@@ -1638,6 +1638,8 @@ type FilterOptionLeftHandComponentProps = {
1638
1638
  type FilterOption = {
1639
1639
  /** The label for the option */
1640
1640
  label: string;
1641
+ /** Secondary context shown under the label in the filter menu */
1642
+ secondaryLabel?: string;
1641
1643
  /** The value for the option */
1642
1644
  value: string;
1643
1645
  /** The operator options for the option */
@@ -1648,6 +1650,13 @@ type FilterOption = {
1648
1650
  readOnly?: boolean;
1649
1651
  /** Set a disabled state on the input */
1650
1652
  disabled?: boolean;
1653
+ /**
1654
+ * Marks a criteria that may only appear once across the whole filter set (e.g. content/composition
1655
+ * type, workflow). Consumers that build filters interactively (e.g. the modern filter bar) use this
1656
+ * to disable the criteria in "add"/"change" menus while it is already occupied by another row,
1657
+ * deriving occupancy from their live working rows rather than the applied filters.
1658
+ */
1659
+ singleUse?: boolean;
1651
1660
  /**
1652
1661
  * Controls whether the filter's right-hand-side allows bound dynamic tokens.
1653
1662
  *
@@ -1675,7 +1684,13 @@ type FilterOptionGroup = {
1675
1684
  /** The options for the option */
1676
1685
  options?: FilterOption[];
1677
1686
  };
1678
- /** Filter selected and query value props */
1687
+ /**
1688
+ * Filter selected and query value props.
1689
+ *
1690
+ * @deprecated Frozen for legacy SearchAndFilter UI compatibility. New dashboard
1691
+ * code should use the Filter type from the views API; this mesh export is not a
1692
+ * published replacement and will not gain new fields.
1693
+ */
1679
1694
  type Filter = {
1680
1695
  /** The field value selected */
1681
1696
  field: string;
@@ -2120,7 +2135,7 @@ type SearchAndFilterResultContainerProps = {
2120
2135
  hideClearButton?: boolean;
2121
2136
  };
2122
2137
  /** Search and filter results container */
2123
- declare const SearchAndFilterResultContainer: ({ buttonText, clearButtonLabel, calloutTitle, calloutText, onHandleClear, hideClearButton, }: SearchAndFilterResultContainerProps) => _emotion_react_jsx_runtime.JSX.Element | null;
2138
+ declare const SearchAndFilterResultContainer: ({ buttonText, calloutTitle, calloutText, onHandleClear, hideClearButton, }: SearchAndFilterResultContainerProps) => _emotion_react_jsx_runtime.JSX.Element | null;
2124
2139
 
2125
2140
  declare const SearchOnlyContext: React$1.Context<Pick<SearchAndFilterContextProps, "searchTerm" | "setSearchTerm">>;
2126
2141
  type SearchOnlyProviderProps = Pick<SearchAndFilterProviderProps, 'onSearchChange'> & {
package/dist/index.esm.js CHANGED
@@ -6426,6 +6426,10 @@ var ConditionalInputRow = css22`
6426
6426
  var ConditionalInputRowEmpty = css22`
6427
6427
  flex-wrap: nowrap;
6428
6428
  `;
6429
+ var FilterOptionSecondaryLabel = css22`
6430
+ color: var(--gray-600);
6431
+ font-size: var(--fs-xs);
6432
+ `;
6429
6433
  var SearchInput = css22`
6430
6434
  && {
6431
6435
  max-height: 40px;
@@ -7101,6 +7105,10 @@ var FilterItem = ({
7101
7105
  var _a2;
7102
7106
  onFilterOptionChange((_a2 = e == null ? void 0 : e.value) != null ? _a2 : "");
7103
7107
  },
7108
+ formatOptionLabel: (option, { context }) => /* @__PURE__ */ jsxs34("div", { children: [
7109
+ /* @__PURE__ */ jsx77("div", { children: option.label }),
7110
+ context === "menu" && "secondaryLabel" in option && option.secondaryLabel ? /* @__PURE__ */ jsx77("div", { css: FilterOptionSecondaryLabel, children: option.secondaryLabel }) : null
7111
+ ] }),
7104
7112
  isOptionDisabled: (option) => {
7105
7113
  var _a2;
7106
7114
  return (_a2 = option == null ? void 0 : option.disabled) != null ? _a2 : false;
@@ -7430,11 +7438,10 @@ var FilterItems = ({
7430
7438
  import { VerticalRhythm as VerticalRhythm7 } from "@uniformdev/design-system";
7431
7439
 
7432
7440
  // src/components/SearchAndFilter/SearchAndFilterResultContainer.tsx
7433
- import { Button as Button5, Callout as Callout5, HorizontalRhythm as HorizontalRhythm9, Paragraph } from "@uniformdev/design-system";
7441
+ import { Button as Button5, Callout as Callout5, Paragraph } from "@uniformdev/design-system";
7434
7442
  import { Fragment as Fragment15, jsx as jsx80, jsxs as jsxs37 } from "@emotion/react/jsx-runtime";
7435
7443
  var SearchAndFilterResultContainer = ({
7436
7444
  buttonText,
7437
- clearButtonLabel = "clear",
7438
7445
  calloutTitle,
7439
7446
  calloutText,
7440
7447
  onHandleClear,
@@ -7482,29 +7489,19 @@ var SearchAndFilterResultContainer = ({
7482
7489
  handleResetFilters();
7483
7490
  }
7484
7491
  };
7485
- return /* @__PURE__ */ jsxs37(Fragment15, { children: [
7486
- /* @__PURE__ */ jsxs37(HorizontalRhythm9, { children: [
7487
- /* @__PURE__ */ jsxs37("span", { children: [
7488
- totalResults,
7489
- " results ",
7490
- searchTerm ? `for "${searchTerm}"` : null
7491
- ] }),
7492
- !searchTerm || hideClearButton ? null : /* @__PURE__ */ jsx80(Button5, { buttonType: "ghostDestructive", size: "zero", onClick: handleClearSearch, children: clearButtonLabel })
7493
- ] }),
7494
- totalResults === 0 ? /* @__PURE__ */ jsxs37(Callout5, { title: automateCalloutTitle, type: "note", children: [
7495
- calloutText ? /* @__PURE__ */ jsx80(Paragraph, { children: calloutText }) : null,
7496
- hideClearButton ? null : /* @__PURE__ */ jsx80(
7497
- Button5,
7498
- {
7499
- buttonType: "tertiaryOutline",
7500
- size: "xs",
7501
- onClick: handleClearSearch,
7502
- "data-testid": "clear-search",
7503
- children: clearButtonText
7504
- }
7505
- )
7506
- ] }) : null
7507
- ] });
7492
+ return /* @__PURE__ */ jsx80(Fragment15, { children: totalResults === 0 ? /* @__PURE__ */ jsxs37(Callout5, { title: automateCalloutTitle, type: "note", children: [
7493
+ calloutText ? /* @__PURE__ */ jsx80(Paragraph, { children: calloutText }) : null,
7494
+ hideClearButton ? null : /* @__PURE__ */ jsx80(
7495
+ Button5,
7496
+ {
7497
+ buttonType: "tertiaryOutline",
7498
+ size: "xs",
7499
+ onClick: handleClearSearch,
7500
+ "data-testid": "clear-search",
7501
+ children: clearButtonText
7502
+ }
7503
+ )
7504
+ ] }) : null });
7508
7505
  };
7509
7506
 
7510
7507
  // src/components/SearchAndFilter/SearchAndFilter.tsx
package/dist/index.js CHANGED
@@ -6503,6 +6503,10 @@ var ConditionalInputRow = import_react70.css`
6503
6503
  var ConditionalInputRowEmpty = import_react70.css`
6504
6504
  flex-wrap: nowrap;
6505
6505
  `;
6506
+ var FilterOptionSecondaryLabel = import_react70.css`
6507
+ color: var(--gray-600);
6508
+ font-size: var(--fs-xs);
6509
+ `;
6506
6510
  var SearchInput = import_react70.css`
6507
6511
  && {
6508
6512
  max-height: 40px;
@@ -7164,6 +7168,10 @@ var FilterItem = ({
7164
7168
  var _a2;
7165
7169
  onFilterOptionChange((_a2 = e == null ? void 0 : e.value) != null ? _a2 : "");
7166
7170
  },
7171
+ formatOptionLabel: (option, { context }) => /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { children: [
7172
+ /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { children: option.label }),
7173
+ context === "menu" && "secondaryLabel" in option && option.secondaryLabel ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { css: FilterOptionSecondaryLabel, children: option.secondaryLabel }) : null
7174
+ ] }),
7167
7175
  isOptionDisabled: (option) => {
7168
7176
  var _a2;
7169
7177
  return (_a2 = option == null ? void 0 : option.disabled) != null ? _a2 : false;
@@ -7497,7 +7505,6 @@ var import_design_system49 = require("@uniformdev/design-system");
7497
7505
  var import_jsx_runtime79 = require("@emotion/react/jsx-runtime");
7498
7506
  var SearchAndFilterResultContainer = ({
7499
7507
  buttonText,
7500
- clearButtonLabel = "clear",
7501
7508
  calloutTitle,
7502
7509
  calloutText,
7503
7510
  onHandleClear,
@@ -7545,29 +7552,19 @@ var SearchAndFilterResultContainer = ({
7545
7552
  handleResetFilters();
7546
7553
  }
7547
7554
  };
7548
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_jsx_runtime79.Fragment, { children: [
7549
- /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_design_system49.HorizontalRhythm, { children: [
7550
- /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("span", { children: [
7551
- totalResults,
7552
- " results ",
7553
- searchTerm ? `for "${searchTerm}"` : null
7554
- ] }),
7555
- !searchTerm || hideClearButton ? null : /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_design_system49.Button, { buttonType: "ghostDestructive", size: "zero", onClick: handleClearSearch, children: clearButtonLabel })
7556
- ] }),
7557
- totalResults === 0 ? /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_design_system49.Callout, { title: automateCalloutTitle, type: "note", children: [
7558
- calloutText ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_design_system49.Paragraph, { children: calloutText }) : null,
7559
- hideClearButton ? null : /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
7560
- import_design_system49.Button,
7561
- {
7562
- buttonType: "tertiaryOutline",
7563
- size: "xs",
7564
- onClick: handleClearSearch,
7565
- "data-testid": "clear-search",
7566
- children: clearButtonText
7567
- }
7568
- )
7569
- ] }) : null
7570
- ] });
7555
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_jsx_runtime79.Fragment, { children: totalResults === 0 ? /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_design_system49.Callout, { title: automateCalloutTitle, type: "note", children: [
7556
+ calloutText ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_design_system49.Paragraph, { children: calloutText }) : null,
7557
+ hideClearButton ? null : /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
7558
+ import_design_system49.Button,
7559
+ {
7560
+ buttonType: "tertiaryOutline",
7561
+ size: "xs",
7562
+ onClick: handleClearSearch,
7563
+ "data-testid": "clear-search",
7564
+ children: clearButtonText
7565
+ }
7566
+ )
7567
+ ] }) : null });
7571
7568
  };
7572
7569
 
7573
7570
  // src/components/SearchAndFilter/SearchAndFilter.tsx
package/dist/index.mjs CHANGED
@@ -6426,6 +6426,10 @@ var ConditionalInputRow = css22`
6426
6426
  var ConditionalInputRowEmpty = css22`
6427
6427
  flex-wrap: nowrap;
6428
6428
  `;
6429
+ var FilterOptionSecondaryLabel = css22`
6430
+ color: var(--gray-600);
6431
+ font-size: var(--fs-xs);
6432
+ `;
6429
6433
  var SearchInput = css22`
6430
6434
  && {
6431
6435
  max-height: 40px;
@@ -7101,6 +7105,10 @@ var FilterItem = ({
7101
7105
  var _a2;
7102
7106
  onFilterOptionChange((_a2 = e == null ? void 0 : e.value) != null ? _a2 : "");
7103
7107
  },
7108
+ formatOptionLabel: (option, { context }) => /* @__PURE__ */ jsxs34("div", { children: [
7109
+ /* @__PURE__ */ jsx77("div", { children: option.label }),
7110
+ context === "menu" && "secondaryLabel" in option && option.secondaryLabel ? /* @__PURE__ */ jsx77("div", { css: FilterOptionSecondaryLabel, children: option.secondaryLabel }) : null
7111
+ ] }),
7104
7112
  isOptionDisabled: (option) => {
7105
7113
  var _a2;
7106
7114
  return (_a2 = option == null ? void 0 : option.disabled) != null ? _a2 : false;
@@ -7430,11 +7438,10 @@ var FilterItems = ({
7430
7438
  import { VerticalRhythm as VerticalRhythm7 } from "@uniformdev/design-system";
7431
7439
 
7432
7440
  // src/components/SearchAndFilter/SearchAndFilterResultContainer.tsx
7433
- import { Button as Button5, Callout as Callout5, HorizontalRhythm as HorizontalRhythm9, Paragraph } from "@uniformdev/design-system";
7441
+ import { Button as Button5, Callout as Callout5, Paragraph } from "@uniformdev/design-system";
7434
7442
  import { Fragment as Fragment15, jsx as jsx80, jsxs as jsxs37 } from "@emotion/react/jsx-runtime";
7435
7443
  var SearchAndFilterResultContainer = ({
7436
7444
  buttonText,
7437
- clearButtonLabel = "clear",
7438
7445
  calloutTitle,
7439
7446
  calloutText,
7440
7447
  onHandleClear,
@@ -7482,29 +7489,19 @@ var SearchAndFilterResultContainer = ({
7482
7489
  handleResetFilters();
7483
7490
  }
7484
7491
  };
7485
- return /* @__PURE__ */ jsxs37(Fragment15, { children: [
7486
- /* @__PURE__ */ jsxs37(HorizontalRhythm9, { children: [
7487
- /* @__PURE__ */ jsxs37("span", { children: [
7488
- totalResults,
7489
- " results ",
7490
- searchTerm ? `for "${searchTerm}"` : null
7491
- ] }),
7492
- !searchTerm || hideClearButton ? null : /* @__PURE__ */ jsx80(Button5, { buttonType: "ghostDestructive", size: "zero", onClick: handleClearSearch, children: clearButtonLabel })
7493
- ] }),
7494
- totalResults === 0 ? /* @__PURE__ */ jsxs37(Callout5, { title: automateCalloutTitle, type: "note", children: [
7495
- calloutText ? /* @__PURE__ */ jsx80(Paragraph, { children: calloutText }) : null,
7496
- hideClearButton ? null : /* @__PURE__ */ jsx80(
7497
- Button5,
7498
- {
7499
- buttonType: "tertiaryOutline",
7500
- size: "xs",
7501
- onClick: handleClearSearch,
7502
- "data-testid": "clear-search",
7503
- children: clearButtonText
7504
- }
7505
- )
7506
- ] }) : null
7507
- ] });
7492
+ return /* @__PURE__ */ jsx80(Fragment15, { children: totalResults === 0 ? /* @__PURE__ */ jsxs37(Callout5, { title: automateCalloutTitle, type: "note", children: [
7493
+ calloutText ? /* @__PURE__ */ jsx80(Paragraph, { children: calloutText }) : null,
7494
+ hideClearButton ? null : /* @__PURE__ */ jsx80(
7495
+ Button5,
7496
+ {
7497
+ buttonType: "tertiaryOutline",
7498
+ size: "xs",
7499
+ onClick: handleClearSearch,
7500
+ "data-testid": "clear-search",
7501
+ children: clearButtonText
7502
+ }
7503
+ )
7504
+ ] }) : null });
7508
7505
  };
7509
7506
 
7510
7507
  // src/components/SearchAndFilter/SearchAndFilter.tsx
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/mesh-sdk-react",
3
- "version": "20.78.0",
3
+ "version": "20.79.1",
4
4
  "description": "Uniform Mesh Framework SDK for React",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "./dist/index.js",
@@ -50,10 +50,10 @@
50
50
  "@lexical/selection": "0.49.0",
51
51
  "@lexical/utils": "0.49.0",
52
52
  "@react-icons/all-files": "https://github.com/react-icons/react-icons/releases/download/v5.5.0/react-icons-all-files-5.5.0.tgz",
53
- "@uniformdev/canvas": "20.78.0",
54
- "@uniformdev/design-system": "20.78.0",
55
- "@uniformdev/mesh-sdk": "20.78.0",
56
- "@uniformdev/richtext": "20.78.0",
53
+ "@uniformdev/canvas": "20.79.1",
54
+ "@uniformdev/design-system": "20.79.1",
55
+ "@uniformdev/mesh-sdk": "20.79.1",
56
+ "@uniformdev/richtext": "20.79.1",
57
57
  "dequal": "^2.0.3",
58
58
  "lexical": "0.49.0",
59
59
  "mitt": "3.0.1",
@@ -85,5 +85,5 @@
85
85
  "publishConfig": {
86
86
  "access": "public"
87
87
  },
88
- "gitHead": "22d94ee916bde5e32c96995da69cfe479f87a9c9"
88
+ "gitHead": "a9709918bf00f79101fcc46bda36105626931933"
89
89
  }