@jobber/components 6.90.1 → 6.90.3

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.
@@ -441,7 +441,6 @@ interface AutocompleteRebuiltBaseProps<Value extends OptionLike, Multiple extend
441
441
  readonly customRenderLoading?: React.ReactNode;
442
442
  /**
443
443
  * Custom equality for option to value mapping.
444
- * TODO: decide if we wanna keep this
445
444
  */
446
445
  readonly isOptionEqualToValue?: (option: Value, value: Value) => boolean;
447
446
  }
@@ -67,8 +67,8 @@ function buildItemsForGroup(group, optionsFilter) {
67
67
  const filtered = optionsFilter ? optionsFilter(group.options) : group.options;
68
68
  const actions = (_a = group.actions) !== null && _a !== void 0 ? _a : [];
69
69
  const result = [];
70
- const sectionHasContent = isSection && (filtered.length > 0 || actions.length > 0);
71
- if (sectionHasContent) {
70
+ // Only render a section header when that section has at least one option after filtering
71
+ if (isSection && filtered.length > 0) {
72
72
  result.push({
73
73
  kind: "section",
74
74
  section: group,
@@ -80,7 +80,8 @@ function buildItemsForGroup(group, optionsFilter) {
80
80
  value: o,
81
81
  })));
82
82
  }
83
- if (actions.length > 0) {
83
+ // Only render actions for a group when that group has at least one option after filtering
84
+ if (actions.length > 0 && filtered.length > 0) {
84
85
  result.push(...actions.map(action => ({
85
86
  kind: "action",
86
87
  action,
@@ -1323,6 +1324,12 @@ function mapToOptions(items) {
1323
1324
  // Casts the Generics to the forward ref so autocomplete works as expected for consumers
1324
1325
  const Autocomplete$1 = React.forwardRef(AutocompleteInternal);
1325
1326
 
1327
+ // Convenience builder helpers (optional usage)
1328
+ // Helper to improve inference from inline menu literals
1329
+ function defineMenu(menu) {
1330
+ return menu;
1331
+ }
1332
+
1326
1333
  function isNewAutocompleteProps(props) {
1327
1334
  return props.version === 2;
1328
1335
  }
@@ -1341,6 +1348,7 @@ exports.BaseAutocompleteMenuWrapper = BaseAutocompleteMenuWrapper;
1341
1348
  exports.BaseMenuGroupOption = BaseMenuGroupOption;
1342
1349
  exports.BaseMenuOption = BaseMenuOption;
1343
1350
  exports.MenuOption = MenuOption;
1351
+ exports.defineMenu = defineMenu;
1344
1352
  exports.getRequestedIndexChange = getRequestedIndexChange;
1345
1353
  exports.isOptionGroup = isOptionGroup;
1346
1354
  exports.isOptionSelected = isOptionSelected;
@@ -3,7 +3,7 @@ import type { AnyOption, AutocompleteLegacyProps, AutocompleteRebuiltProps, Extr
3
3
  import type { InputTextRef } from "../InputText";
4
4
  export type { OptionLike } from "./Autocomplete.types";
5
5
  export { type MenuOptionProps, BaseMenuOption, type BaseMenuOptionProps, MenuOption, BaseMenuGroupOption, type BaseMenuGroupOptionProps, } from "./Option";
6
- export { type AnyOption, type AutocompleteProps, type BaseOption, type CustomOptionsMenuProp, type GroupOption, type OptionCollection, type Option, } from "./Autocomplete.types";
6
+ export { type AnyOption, type AutocompleteProps, type BaseOption, type CustomOptionsMenuProp, type GroupOption, type OptionCollection, type Option, type MenuItem, type MenuSection, type MenuOptions, type MenuHeader, type MenuFooter, type MenuAction, type ExtraProps, defineMenu, } from "./Autocomplete.types";
7
7
  export { KeyboardAction, getRequestedIndexChange, useKeyboardNavigation, useCustomKeyboardNavigation, } from "./useKeyboardNavigation";
8
8
  export { useRepositionMenu } from "./useRepositionMenu";
9
9
  export { BaseAutocompleteMenuWrapper, useAutocompleteMenu, } from "./Menu/MenuWrapper";
@@ -65,8 +65,8 @@ function buildItemsForGroup(group, optionsFilter) {
65
65
  const filtered = optionsFilter ? optionsFilter(group.options) : group.options;
66
66
  const actions = (_a = group.actions) !== null && _a !== void 0 ? _a : [];
67
67
  const result = [];
68
- const sectionHasContent = isSection && (filtered.length > 0 || actions.length > 0);
69
- if (sectionHasContent) {
68
+ // Only render a section header when that section has at least one option after filtering
69
+ if (isSection && filtered.length > 0) {
70
70
  result.push({
71
71
  kind: "section",
72
72
  section: group,
@@ -78,7 +78,8 @@ function buildItemsForGroup(group, optionsFilter) {
78
78
  value: o,
79
79
  })));
80
80
  }
81
- if (actions.length > 0) {
81
+ // Only render actions for a group when that group has at least one option after filtering
82
+ if (actions.length > 0 && filtered.length > 0) {
82
83
  result.push(...actions.map(action => ({
83
84
  kind: "action",
84
85
  action,
@@ -1321,6 +1322,12 @@ function mapToOptions(items) {
1321
1322
  // Casts the Generics to the forward ref so autocomplete works as expected for consumers
1322
1323
  const Autocomplete$1 = forwardRef(AutocompleteInternal);
1323
1324
 
1325
+ // Convenience builder helpers (optional usage)
1326
+ // Helper to improve inference from inline menu literals
1327
+ function defineMenu(menu) {
1328
+ return menu;
1329
+ }
1330
+
1324
1331
  function isNewAutocompleteProps(props) {
1325
1332
  return props.version === 2;
1326
1333
  }
@@ -1334,4 +1341,4 @@ const AutocompleteForwarded = forwardRef(AutocompleteShim);
1334
1341
  AutocompleteForwarded.displayName = "Autocomplete";
1335
1342
  const Autocomplete = AutocompleteForwarded;
1336
1343
 
1337
- export { Autocomplete, BaseAutocompleteMenuWrapper, BaseMenuGroupOption, BaseMenuOption, KeyboardAction, MenuOption, getRequestedIndexChange, isOptionGroup, isOptionSelected, useAutocompleteMenu, useCustomKeyboardNavigation, useKeyboardNavigation, useRepositionMenu };
1344
+ export { Autocomplete, BaseAutocompleteMenuWrapper, BaseMenuGroupOption, BaseMenuOption, KeyboardAction, MenuOption, defineMenu, getRequestedIndexChange, isOptionGroup, isOptionSelected, useAutocompleteMenu, useCustomKeyboardNavigation, useKeyboardNavigation, useRepositionMenu };
@@ -42,11 +42,11 @@ function SortIcon({ direction }) {
42
42
  var styles = {"container":"_1-DPmbxOkZ8-","tableElement":"kJeYcsgg700-","header":"_5d2OcsTVgzU-","headerCell":"LTx0tCU3F2I-","sortableButton":"WTQCrd2d8nw-","focusArea":"RipbH3rRU-E-","row":"sJQbtw-NEHU-","cell":"_1UpLYTK64uY-","footer":"qe-6UrAFLTo-","actions":"_2fZsLSaNPnI-","rowActions":"pElxuwpGmCI-","pagination":"thJ-CSoe0ps-","spinning":"EBpmC7cZzCs-"};
43
43
 
44
44
  function DataTableActions(props) {
45
- return (React.createElement("div", Object.assign({ className: classnames(styles.actions, props.className) }, props), props.children));
45
+ return (React.createElement("div", Object.assign({}, props, { className: classnames(styles.actions, props.className) }), props.children));
46
46
  }
47
47
 
48
48
  function DataTableBody(props) {
49
- return (React.createElement("tbody", Object.assign({ className: classnames(props.className) }, props), props.children));
49
+ return (React.createElement("tbody", Object.assign({}, props, { className: classnames(props.className) }), props.children));
50
50
  }
51
51
 
52
52
  const DataTableCell = React.forwardRef((props, ref) => {
@@ -55,18 +55,18 @@ const DataTableCell = React.forwardRef((props, ref) => {
55
55
  DataTableCell.displayName = "DataTableCell";
56
56
 
57
57
  function DataTableContainer(props) {
58
- return (React.createElement("div", Object.assign({ className: classnames(styles.container, props.className) }, props), props.children));
58
+ return (React.createElement("div", Object.assign({}, props, { className: classnames(styles.container, props.className) }), props.children));
59
59
  }
60
60
 
61
61
  function DataTableFooter(_a) {
62
62
  var { children, className, colSpan } = _a, props = tslib_es6.__rest(_a, ["children", "className", "colSpan"]);
63
- return (React.createElement("tfoot", Object.assign({ className: classnames(styles.footer, className) }, props),
63
+ return (React.createElement("tfoot", Object.assign({}, props, { className: classnames(styles.footer, className) }),
64
64
  React.createElement("tr", null,
65
65
  React.createElement("td", { colSpan: colSpan }, children))));
66
66
  }
67
67
 
68
68
  function DataTableHeader(props) {
69
- return (React.createElement("thead", Object.assign({ className: classnames(styles.header, props.className) }, props),
69
+ return (React.createElement("thead", Object.assign({}, props, { className: classnames(styles.header, props.className) }),
70
70
  React.createElement("tr", null, props.children)));
71
71
  }
72
72
 
@@ -77,7 +77,7 @@ DataTableHeaderCell.displayName = "DataTableHeaderCell";
77
77
 
78
78
  function DataTablePagination(_a) {
79
79
  var { children, className } = _a, props = tslib_es6.__rest(_a, ["children", "className"]);
80
- return (React.createElement("div", Object.assign({ className: classnames(styles.pagination, className) }, props), children));
80
+ return (React.createElement("div", Object.assign({}, props, { className: classnames(styles.pagination, className) }), children));
81
81
  }
82
82
 
83
83
  function DataTablePaginationButton({ direction, onClick, disabled = false, ariaLabel, }) {
@@ -86,7 +86,7 @@ function DataTablePaginationButton({ direction, onClick, disabled = false, ariaL
86
86
  }
87
87
 
88
88
  const DataTableRow = React.forwardRef((props, ref) => {
89
- return (React.createElement("tr", Object.assign({ className: classnames(styles.row, props.className), ref: ref }, props), props.children));
89
+ return (React.createElement("tr", Object.assign({}, props, { className: classnames(styles.row, props.className), ref: ref }), props.children));
90
90
  });
91
91
  DataTableRow.displayName = "DataTableRow";
92
92
 
@@ -108,7 +108,7 @@ function DataTableSortableHeader(props) {
108
108
  }
109
109
 
110
110
  function DataTableTable(props) {
111
- return (React.createElement("table", Object.assign({ className: classnames(styles.tableElement, props.className) }, props), props.children));
111
+ return (React.createElement("table", Object.assign({}, props, { className: classnames(styles.tableElement, props.className) }), props.children));
112
112
  }
113
113
 
114
114
  exports.DataTableActions = DataTableActions;
@@ -40,11 +40,11 @@ function SortIcon({ direction }) {
40
40
  var styles = {"container":"_1-DPmbxOkZ8-","tableElement":"kJeYcsgg700-","header":"_5d2OcsTVgzU-","headerCell":"LTx0tCU3F2I-","sortableButton":"WTQCrd2d8nw-","focusArea":"RipbH3rRU-E-","row":"sJQbtw-NEHU-","cell":"_1UpLYTK64uY-","footer":"qe-6UrAFLTo-","actions":"_2fZsLSaNPnI-","rowActions":"pElxuwpGmCI-","pagination":"thJ-CSoe0ps-","spinning":"EBpmC7cZzCs-"};
41
41
 
42
42
  function DataTableActions(props) {
43
- return (React__default.createElement("div", Object.assign({ className: classnames(styles.actions, props.className) }, props), props.children));
43
+ return (React__default.createElement("div", Object.assign({}, props, { className: classnames(styles.actions, props.className) }), props.children));
44
44
  }
45
45
 
46
46
  function DataTableBody(props) {
47
- return (React__default.createElement("tbody", Object.assign({ className: classnames(props.className) }, props), props.children));
47
+ return (React__default.createElement("tbody", Object.assign({}, props, { className: classnames(props.className) }), props.children));
48
48
  }
49
49
 
50
50
  const DataTableCell = forwardRef((props, ref) => {
@@ -53,18 +53,18 @@ const DataTableCell = forwardRef((props, ref) => {
53
53
  DataTableCell.displayName = "DataTableCell";
54
54
 
55
55
  function DataTableContainer(props) {
56
- return (React__default.createElement("div", Object.assign({ className: classnames(styles.container, props.className) }, props), props.children));
56
+ return (React__default.createElement("div", Object.assign({}, props, { className: classnames(styles.container, props.className) }), props.children));
57
57
  }
58
58
 
59
59
  function DataTableFooter(_a) {
60
60
  var { children, className, colSpan } = _a, props = __rest(_a, ["children", "className", "colSpan"]);
61
- return (React__default.createElement("tfoot", Object.assign({ className: classnames(styles.footer, className) }, props),
61
+ return (React__default.createElement("tfoot", Object.assign({}, props, { className: classnames(styles.footer, className) }),
62
62
  React__default.createElement("tr", null,
63
63
  React__default.createElement("td", { colSpan: colSpan }, children))));
64
64
  }
65
65
 
66
66
  function DataTableHeader(props) {
67
- return (React__default.createElement("thead", Object.assign({ className: classnames(styles.header, props.className) }, props),
67
+ return (React__default.createElement("thead", Object.assign({}, props, { className: classnames(styles.header, props.className) }),
68
68
  React__default.createElement("tr", null, props.children)));
69
69
  }
70
70
 
@@ -75,7 +75,7 @@ DataTableHeaderCell.displayName = "DataTableHeaderCell";
75
75
 
76
76
  function DataTablePagination(_a) {
77
77
  var { children, className } = _a, props = __rest(_a, ["children", "className"]);
78
- return (React__default.createElement("div", Object.assign({ className: classnames(styles.pagination, className) }, props), children));
78
+ return (React__default.createElement("div", Object.assign({}, props, { className: classnames(styles.pagination, className) }), children));
79
79
  }
80
80
 
81
81
  function DataTablePaginationButton({ direction, onClick, disabled = false, ariaLabel, }) {
@@ -84,7 +84,7 @@ function DataTablePaginationButton({ direction, onClick, disabled = false, ariaL
84
84
  }
85
85
 
86
86
  const DataTableRow = forwardRef((props, ref) => {
87
- return (React__default.createElement("tr", Object.assign({ className: classnames(styles.row, props.className), ref: ref }, props), props.children));
87
+ return (React__default.createElement("tr", Object.assign({}, props, { className: classnames(styles.row, props.className), ref: ref }), props.children));
88
88
  });
89
89
  DataTableRow.displayName = "DataTableRow";
90
90
 
@@ -106,7 +106,7 @@ function DataTableSortableHeader(props) {
106
106
  }
107
107
 
108
108
  function DataTableTable(props) {
109
- return (React__default.createElement("table", Object.assign({ className: classnames(styles.tableElement, props.className) }, props), props.children));
109
+ return (React__default.createElement("table", Object.assign({}, props, { className: classnames(styles.tableElement, props.className) }), props.children));
110
110
  }
111
111
 
112
112
  export { DataTableActions as D, SortIcon as S, SortDirection as a, DataTableBody as b, DataTableCell as c, DataTableContainer as d, DataTableFooter as e, DataTableHeader as f, DataTableHeaderCell as g, DataTablePagination as h, DataTablePaginationButton as i, DataTableRow as j, DataTableRowActions as k, DataTableSortableHeader as l, DataTableTable as m };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "6.90.1",
3
+ "version": "6.90.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -541,5 +541,5 @@
541
541
  "> 1%",
542
542
  "IE 10"
543
543
  ],
544
- "gitHead": "76dba59612902bceb1b3999f85dbbc643294cf5e"
544
+ "gitHead": "e93994a2cb7cb82cc0e2b1e67ef2e09c98bebb1f"
545
545
  }