@athoscommerce/snap-preact 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +5 -1
  2. package/dist/cjs/components/src/components/Molecules/Grid/Grid.js +9 -13
  3. package/dist/cjs/components/src/components/Molecules/List/List.js +9 -13
  4. package/dist/cjs/components/src/components/Molecules/RadioList/RadioList.js +9 -13
  5. package/dist/cjs/components/src/components/Molecules/Select/Select.js +9 -13
  6. package/dist/cjs/components/src/components/Molecules/TabSelection/TabSelection.js +108 -0
  7. package/dist/cjs/components/src/components/Molecules/TabSelection/index.js +17 -0
  8. package/dist/cjs/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +1 -1
  9. package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +17 -2
  10. package/dist/cjs/components/src/components/Organisms/Layout/Layout.js +15 -1
  11. package/dist/cjs/components/src/components/Organisms/Results/Results.js +3 -3
  12. package/dist/cjs/components/src/components/Organisms/Toolbar/Toolbar.js +2 -1
  13. package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +10 -3
  14. package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +10 -3
  15. package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +10 -3
  16. package/dist/cjs/components/src/components/Templates/Search/Search.js +10 -3
  17. package/dist/cjs/components/src/hooks/useAcRenderedInput.js +14 -3
  18. package/dist/cjs/components/src/hooks/useCreateController.js +24 -3
  19. package/dist/cjs/components/src/index.js +1 -0
  20. package/dist/cjs/components/src/providers/themeComponents.js +1 -0
  21. package/dist/cjs/components/src/utilities/index.js +1 -0
  22. package/dist/cjs/components/src/utilities/selectionKey.js +12 -0
  23. package/dist/cjs/src/Templates/SnapTemplates.js +143 -32
  24. package/dist/cjs/src/Templates/Stores/LibraryStore.js +2 -0
  25. package/dist/cjs/src/Templates/Stores/TabManagerStore.js +151 -0
  26. package/dist/cjs/src/Templates/Stores/TemplateStore.js +22 -0
  27. package/dist/cjs/src/Templates/Stores/library/languages/es.js +12 -0
  28. package/dist/cjs/src/Templates/Stores/library/languages/fr.js +12 -0
  29. package/dist/cjs/src/create/createAutocompleteController.js +6 -1
  30. package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
  31. package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +5 -1
  32. package/dist/esm/components/src/components/Molecules/Grid/Grid.d.ts.map +1 -1
  33. package/dist/esm/components/src/components/Molecules/Grid/Grid.js +10 -14
  34. package/dist/esm/components/src/components/Molecules/List/List.d.ts.map +1 -1
  35. package/dist/esm/components/src/components/Molecules/List/List.js +10 -14
  36. package/dist/esm/components/src/components/Molecules/RadioList/RadioList.d.ts.map +1 -1
  37. package/dist/esm/components/src/components/Molecules/RadioList/RadioList.js +10 -14
  38. package/dist/esm/components/src/components/Molecules/Select/Select.d.ts.map +1 -1
  39. package/dist/esm/components/src/components/Molecules/Select/Select.js +10 -14
  40. package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.d.ts +32 -0
  41. package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.d.ts.map +1 -0
  42. package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.js +102 -0
  43. package/dist/esm/components/src/components/Molecules/TabSelection/index.d.ts +2 -0
  44. package/dist/esm/components/src/components/Molecules/TabSelection/index.d.ts.map +1 -0
  45. package/dist/esm/components/src/components/Molecules/TabSelection/index.js +1 -0
  46. package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.d.ts.map +1 -1
  47. package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +1 -1
  48. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts +3 -1
  49. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts.map +1 -1
  50. package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +17 -2
  51. package/dist/esm/components/src/components/Organisms/Layout/Layout.d.ts +3 -1
  52. package/dist/esm/components/src/components/Organisms/Layout/Layout.d.ts.map +1 -1
  53. package/dist/esm/components/src/components/Organisms/Layout/Layout.js +15 -1
  54. package/dist/esm/components/src/components/Organisms/Results/Results.d.ts.map +1 -1
  55. package/dist/esm/components/src/components/Organisms/Results/Results.js +3 -3
  56. package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.d.ts +3 -1
  57. package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.d.ts.map +1 -1
  58. package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.js +2 -1
  59. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +2 -0
  60. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
  61. package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +10 -3
  62. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +2 -0
  63. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
  64. package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +10 -3
  65. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +2 -0
  66. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
  67. package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +10 -3
  68. package/dist/esm/components/src/components/Templates/Search/Search.d.ts +2 -0
  69. package/dist/esm/components/src/components/Templates/Search/Search.d.ts.map +1 -1
  70. package/dist/esm/components/src/components/Templates/Search/Search.js +10 -3
  71. package/dist/esm/components/src/hooks/useAcRenderedInput.d.ts +2 -2
  72. package/dist/esm/components/src/hooks/useAcRenderedInput.d.ts.map +1 -1
  73. package/dist/esm/components/src/hooks/useAcRenderedInput.js +15 -4
  74. package/dist/esm/components/src/hooks/useCreateController.d.ts.map +1 -1
  75. package/dist/esm/components/src/hooks/useCreateController.js +24 -3
  76. package/dist/esm/components/src/index.d.ts +1 -0
  77. package/dist/esm/components/src/index.d.ts.map +1 -1
  78. package/dist/esm/components/src/index.js +1 -0
  79. package/dist/esm/components/src/providers/langComponents.d.ts +2 -0
  80. package/dist/esm/components/src/providers/langComponents.d.ts.map +1 -1
  81. package/dist/esm/components/src/providers/themeComponents.d.ts +41 -7
  82. package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
  83. package/dist/esm/components/src/providers/themeComponents.js +1 -0
  84. package/dist/esm/components/src/utilities/index.d.ts +1 -0
  85. package/dist/esm/components/src/utilities/index.d.ts.map +1 -1
  86. package/dist/esm/components/src/utilities/index.js +1 -0
  87. package/dist/esm/components/src/utilities/selectionKey.d.ts +3 -0
  88. package/dist/esm/components/src/utilities/selectionKey.d.ts.map +1 -0
  89. package/dist/esm/components/src/utilities/selectionKey.js +9 -0
  90. package/dist/esm/src/Templates/SnapTemplates.d.ts +6 -3
  91. package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
  92. package/dist/esm/src/Templates/SnapTemplates.js +141 -31
  93. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +2 -0
  94. package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
  95. package/dist/esm/src/Templates/Stores/LibraryStore.js +2 -0
  96. package/dist/esm/src/Templates/Stores/TabManagerStore.d.ts +29 -0
  97. package/dist/esm/src/Templates/Stores/TabManagerStore.d.ts.map +1 -0
  98. package/dist/esm/src/Templates/Stores/TabManagerStore.js +146 -0
  99. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +24 -3
  100. package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
  101. package/dist/esm/src/Templates/Stores/TemplateStore.js +22 -0
  102. package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
  103. package/dist/esm/src/Templates/Stores/library/languages/es.js +12 -0
  104. package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
  105. package/dist/esm/src/Templates/Stores/library/languages/fr.js +12 -0
  106. package/dist/esm/src/create/createAutocompleteController.js +6 -1
  107. package/dist/esm/src/types.d.ts +6 -1
  108. package/dist/esm/src/types.d.ts.map +1 -1
  109. package/package.json +12 -12
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TemplateSelect = void 0;
4
4
  const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
5
5
  const mobx_react_lite_1 = require("mobx-react-lite");
6
+ const snap_controller_1 = require("@athoscommerce/snap-controller");
6
7
  const providers_1 = require("../../../providers");
7
8
  exports.TemplateSelect = (0, mobx_react_lite_1.observer)((properties) => {
8
9
  const { snap, templatesStore, target, controller, ...otherProps } = properties;
@@ -19,6 +20,9 @@ exports.TemplateSelect = (0, mobx_react_lite_1.observer)((properties) => {
19
20
  const error = `Theme "${target.theme.name}" not found in library for target "${target.selector}"`;
20
21
  controller.log.error(error);
21
22
  }
23
+ const tabManager = controller.type === snap_controller_1.ControllerTypes.search || controller.type === snap_controller_1.ControllerTypes.autocomplete
24
+ ? templatesStore.getTabManager(controller.type, snap.controllers)
25
+ : undefined;
22
26
  // ensuring that theme and component are ready to render
23
- return !loading && theme && Component ? ((0, jsx_runtime_1.jsx)(providers_1.SnapProvider, { snap: snap, children: (0, jsx_runtime_1.jsx)(providers_1.ThemeProvider, { theme: theme, children: (0, jsx_runtime_1.jsx)(providers_1.ControllerProvider, { controller: controller, children: (0, jsx_runtime_1.jsx)("div", { className: "ss__template-select", children: (0, jsx_runtime_1.jsx)(Component, { controller: controller, ...otherProps }) }) }) }) })) : null;
27
+ return !loading && theme && Component ? ((0, jsx_runtime_1.jsx)(providers_1.SnapProvider, { snap: snap, children: (0, jsx_runtime_1.jsx)(providers_1.ThemeProvider, { theme: theme, children: (0, jsx_runtime_1.jsx)(providers_1.ControllerProvider, { controller: controller, children: (0, jsx_runtime_1.jsx)("div", { className: "ss__template-select", children: (0, jsx_runtime_1.jsx)(Component, { controller: controller, tabManager: tabManager, name: tabManager?.active?.id ? tabManager?.active?.id.toLowerCase() : undefined, ...otherProps }) }) }) }) })) : null;
24
28
  });
@@ -156,22 +156,18 @@ exports.Grid = (0, mobx_react_lite_1.observer)((properties) => {
156
156
  }
157
157
  // selection state
158
158
  const [selection, setSelection] = (0, hooks_1.useState)(selected || []);
159
- // original selection state
160
- const [originalSelected] = (0, hooks_1.useState)(selected || []);
159
+ // last 'selected' prop seen - comparing against the previous prop rather than the mount time
160
+ // prop keeps a selection made here from being reverted while the store catches up, without
161
+ // missing a 'selected' change back to a value it has held before
162
+ const [prevSelected, setPrevSelected] = (0, hooks_1.useState)(() => (0, utilities_1.selectionKey)(selected));
161
163
  // reset selection if 'selected' prop changes
162
- try {
163
- if (selected) {
164
- const originalSelectedstr = JSON.stringify(originalSelected);
165
- const selectedstr = JSON.stringify(selected);
166
- const selectionstr = JSON.stringify(selection);
167
- if (originalSelectedstr !== selectedstr && selectedstr !== selectionstr) {
168
- setSelection(selected);
169
- }
164
+ if (selected) {
165
+ const selectedKey = (0, utilities_1.selectionKey)(selected);
166
+ if (selectedKey !== prevSelected) {
167
+ setPrevSelected(selectedKey);
168
+ setSelection(selected);
170
169
  }
171
170
  }
172
- catch (e) {
173
- // noop
174
- }
175
171
  const makeSelection = (e, option) => {
176
172
  if (multiSelect) {
177
173
  let newArray;
@@ -101,22 +101,18 @@ exports.List = (0, mobx_react_lite_1.observer)((properties) => {
101
101
  }
102
102
  // selection state
103
103
  const [selection, setSelection] = (0, hooks_1.useState)(selected || []);
104
- // original selection state
105
- const [originalSelected] = (0, hooks_1.useState)(selected || []);
104
+ // last 'selected' prop seen - comparing against the previous prop rather than the mount time
105
+ // prop keeps a selection made here from being reverted while the store catches up, without
106
+ // missing a 'selected' change back to a value it has held before
107
+ const [prevSelected, setPrevSelected] = (0, hooks_1.useState)(() => (0, utilities_1.selectionKey)(selected));
106
108
  // reset selection if 'selected' prop changes
107
- try {
108
- if (selected) {
109
- const originalSelectedstr = JSON.stringify(originalSelected);
110
- const selectedstr = JSON.stringify(selected);
111
- const selectionstr = JSON.stringify(selection);
112
- if (originalSelectedstr !== selectedstr && selectedstr !== selectionstr) {
113
- setSelection(selected);
114
- }
109
+ if (selected) {
110
+ const selectedKey = (0, utilities_1.selectionKey)(selected);
111
+ if (selectedKey !== prevSelected) {
112
+ setPrevSelected(selectedKey);
113
+ setSelection(selected);
115
114
  }
116
115
  }
117
- catch (e) {
118
- // noop
119
- }
120
116
  const makeSelection = (e, option) => {
121
117
  let newArray;
122
118
  if (multiSelect) {
@@ -92,22 +92,18 @@ exports.RadioList = (0, mobx_react_lite_1.observer)((properties) => {
92
92
  const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
93
93
  // selection state
94
94
  const [selection, setSelection] = (0, react_2.useState)(selected);
95
- // original selection state
96
- const [originalSelected] = (0, react_2.useState)(selected);
95
+ // last 'selected' prop seen - comparing against the previous prop rather than the mount time
96
+ // prop keeps a selection made here from being reverted while the store catches up, without
97
+ // missing a 'selected' change back to a value it has held before
98
+ const [prevSelected, setPrevSelected] = (0, react_2.useState)(() => (0, utilities_1.selectionKey)(selected));
97
99
  // reset selection if 'selected' prop changes
98
- try {
99
- if (selected) {
100
- const originalSelectedstr = JSON.stringify(originalSelected);
101
- const selectedstr = JSON.stringify(selected);
102
- const selectionstr = JSON.stringify(selection);
103
- if (originalSelectedstr !== selectedstr && selectedstr !== selectionstr) {
104
- setSelection(selected);
105
- }
100
+ if (selected) {
101
+ const selectedKey = (0, utilities_1.selectionKey)(selected);
102
+ if (selectedKey !== prevSelected) {
103
+ setPrevSelected(selectedKey);
104
+ setSelection(selected);
106
105
  }
107
106
  }
108
- catch (e) {
109
- // noop
110
- }
111
107
  const makeSelection = (e, option) => {
112
108
  if (onSelect) {
113
109
  onSelect(e, option);
@@ -135,22 +135,18 @@ exports.Select = (0, mobx_react_lite_1.observer)((properties) => {
135
135
  const [open, setOpen] = (0, hooks_1.useState)(Boolean(startOpen));
136
136
  // selection state
137
137
  const [selection, setSelection] = (0, hooks_1.useState)(selected);
138
- // original selection state
139
- const [originalSelected] = (0, hooks_1.useState)(selected);
138
+ // last 'selected' prop seen - comparing against the previous prop rather than the mount time
139
+ // prop keeps a selection made here from being reverted while the store catches up, without
140
+ // missing a 'selected' change back to a value it has held before
141
+ const [prevSelected, setPrevSelected] = (0, hooks_1.useState)(() => (0, utilities_1.selectionKey)(selected));
140
142
  // reset selection if 'selected' prop changes
141
- try {
142
- if (selected) {
143
- const originalSelectedstr = JSON.stringify(originalSelected);
144
- const selectedstr = JSON.stringify(selected);
145
- const selectionstr = JSON.stringify(selection);
146
- if (originalSelectedstr !== selectedstr && selectedstr !== selectionstr) {
147
- setSelection(selected);
148
- }
143
+ if (selected) {
144
+ const selectedKey = (0, utilities_1.selectionKey)(selected);
145
+ if (selectedKey !== prevSelected) {
146
+ setPrevSelected(selectedKey);
147
+ setSelection(selected);
149
148
  }
150
149
  }
151
- catch (e) {
152
- // noop
153
- }
154
150
  if (selection && clearSelection) {
155
151
  options = [
156
152
  {
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TabSelection = void 0;
7
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
8
+ const react_1 = require("@emotion/react");
9
+ const classnames_1 = __importDefault(require("classnames"));
10
+ const mobx_react_lite_1 = require("mobx-react-lite");
11
+ const deepmerge_1 = __importDefault(require("deepmerge"));
12
+ const providers_1 = require("../../../providers");
13
+ const utilities_1 = require("../../../utilities");
14
+ const hooks_1 = require("../../../hooks");
15
+ const Button_1 = require("../../Atoms/Button");
16
+ const defaultStyles = () => {
17
+ return (0, react_1.css)({
18
+ '.ss__tab-selection__title': {
19
+ textAlign: 'center',
20
+ },
21
+ '.ss__tab-selection__tabs': {
22
+ display: 'flex',
23
+ gap: '10px',
24
+ textAlign: 'center',
25
+ alignItems: 'center',
26
+ alignContent: 'center',
27
+ justifyContent: 'center',
28
+ },
29
+ '.ss__tab-selection__button--active': {
30
+ fontWeight: 'bold',
31
+ },
32
+ '.ss__tab-selection__button__count': {
33
+ marginLeft: '5px',
34
+ },
35
+ });
36
+ };
37
+ exports.TabSelection = (0, mobx_react_lite_1.observer)((properties) => {
38
+ const globalTheme = (0, providers_1.useTheme)();
39
+ const globalTreePath = (0, providers_1.useTreePath)();
40
+ const defaultProps = {
41
+ treePath: globalTreePath,
42
+ showResultCount: true,
43
+ enableEmptyTabs: false,
44
+ };
45
+ const props = (0, utilities_1.mergeProps)('tabSelection', globalTheme, defaultProps, properties);
46
+ const { tabManager, titleText, showResultCount, enableEmptyTabs, onTabClick, disableStyles, className, internalClassName, treePath } = props;
47
+ const { overrideElement, shouldRenderDefault } = (0, hooks_1.useCustomComponentOverride)('tabSelection', props);
48
+ if (!shouldRenderDefault) {
49
+ return overrideElement;
50
+ }
51
+ if (!tabManager || !tabManager.tabs?.length) {
52
+ return null;
53
+ }
54
+ const subProps = {
55
+ button: {
56
+ // inherited props
57
+ ...(0, utilities_1.defined)({
58
+ disableStyles,
59
+ }),
60
+ theme: props.theme,
61
+ treePath,
62
+ },
63
+ };
64
+ function getResultCount(controller) {
65
+ const store = controller.store;
66
+ return store?.loaded ? store.pagination?.totalResults : undefined;
67
+ }
68
+ const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
69
+ //initialize lang
70
+ const defaultLang = {
71
+ title: {
72
+ value: titleText,
73
+ },
74
+ tabList: {
75
+ attributes: {
76
+ 'aria-label': 'Result tabs',
77
+ },
78
+ },
79
+ };
80
+ //deep merge with props.lang - scoped per key, each is resolved against different data
81
+ const langs = (0, deepmerge_1.default)(defaultLang, { title: props.lang?.title || {}, tabList: props.lang?.tabList || {} });
82
+ const mergedLang = (0, hooks_1.useLang)(langs, { tabManager }, { activeBreakpoint: globalTheme?.activeBreakpoint });
83
+ return ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsxs)("div", { ...styling, className: (0, classnames_1.default)('ss__tab-selection', className, internalClassName), children: [titleText || props.lang?.title?.value ? (0, jsx_runtime_1.jsx)("h4", { className: "ss__tab-selection__title", ...mergedLang.title?.all }) : null, (0, jsx_runtime_1.jsx)("div", { className: "ss__tab-selection__tabs", role: "tablist", ...mergedLang.tabList?.attributes, children: tabManager.tabs.map((tab) => {
84
+ const active = tabManager.active?.id === tab.id;
85
+ const resultCount = getResultCount(tab.controller);
86
+ const disabled = !enableEmptyTabs && !active && resultCount === 0;
87
+ const label = tab.label || tab.id;
88
+ const displayedCount = showResultCount ? resultCount : undefined;
89
+ const defaultTabLang = {
90
+ tabButton: {
91
+ value: label,
92
+ attributes: {
93
+ 'aria-label': typeof displayedCount == 'number' ? `${label}, ${displayedCount} results` : label,
94
+ },
95
+ },
96
+ };
97
+ const tabLangs = (0, deepmerge_1.default)(defaultTabLang, { tabButton: props.lang?.tabButton || {} });
98
+ const tabLang = (0, hooks_1.useLang)(tabLangs, { tab, resultCount, active }, { activeBreakpoint: globalTheme?.activeBreakpoint });
99
+ return ((0, jsx_runtime_1.jsxs)(Button_1.Button, { ...subProps.button, internalClassName: (0, classnames_1.default)('ss__tab-selection__button', `ss__tab-selection__button--${tab.id}`, {
100
+ 'ss__tab-selection__button--active': active,
101
+ }), disabled: disabled,
102
+ // @ts-ignore - role and aria-selected are valid props for Button, but not defined in ButtonProps
103
+ role: "tab", "aria-selected": active, ...tabLang.tabButton?.attributes, onClick: (e) => {
104
+ onTabClick && onTabClick(e, tab);
105
+ tabManager.setActive(tab.id);
106
+ }, children: [(0, jsx_runtime_1.jsx)("span", { className: "ss__tab-selection__button__label", ...tabLang.tabButton?.value }), typeof displayedCount == 'number' ? (0, jsx_runtime_1.jsxs)("span", { className: "ss__tab-selection__button__count", children: ["(", displayedCount, ")"] }) : null] }, tab.id));
107
+ }) })] }) }));
108
+ });
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./TabSelection"), exports);
@@ -325,5 +325,5 @@ exports.TemplatesEditor = (0, mobx_react_lite_1.observer)((properties) => {
325
325
  return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('tab', { active: editorStore.storedState.activeTab === tab }), onClick: () => {
326
326
  editorStore.switchTabs(tab);
327
327
  }, children: tab }, i));
328
- }) }), (0, jsx_runtime_1.jsxs)("div", { className: "tab-view", children: [(0, jsx_runtime_1.jsx)("div", { className: "tab-view-shadow" }), (0, jsx_runtime_1.jsxs)("div", { className: "tab-view-content", children: [editorStore.storedState.activeTab === 'templates' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h1", { children: "Search" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { editorStore: editorStore, data: 0, feature: "targets/search" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { editorStore: editorStore, data: snap.controllers.search, feature: "controllers/search" }), (0, jsx_runtime_1.jsx)("h1", { children: "Autocomplete" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { editorStore: editorStore, data: 0, feature: "targets/autocomplete" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { editorStore: editorStore, data: snap.controllers.autocomplete, feature: "controllers/autocomplete" })] })) : (''), editorStore.storedState.activeTab === 'configuration' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { title: "Project Configuration", editorStore: editorStore, feature: "templates/config" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { title: "Theme Configuration", editorStore: editorStore, feature: "templates/theme" })] })) : ('')] }), (0, jsx_runtime_1.jsx)("div", { className: "tab-view-shadow bottom" })] })] }), (0, jsx_runtime_1.jsx)("footer", {})] }) }));
328
+ }) }), (0, jsx_runtime_1.jsxs)("div", { className: "tab-view", children: [(0, jsx_runtime_1.jsx)("div", { className: "tab-view-shadow" }), (0, jsx_runtime_1.jsxs)("div", { className: "tab-view-content", children: [editorStore.storedState.activeTab === 'templates' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h1", { children: "Search" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { editorStore: editorStore, data: 0, feature: "targets/search" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { editorStore: editorStore, data: snap.getTemplateController('search'), feature: "controllers/search" }), (0, jsx_runtime_1.jsx)("h1", { children: "Autocomplete" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { editorStore: editorStore, data: 0, feature: "targets/autocomplete" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { editorStore: editorStore, data: snap.getTemplateController('autocomplete'), feature: "controllers/autocomplete" })] })) : (''), editorStore.storedState.activeTab === 'configuration' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { title: "Project Configuration", editorStore: editorStore, feature: "templates/config" }), (0, jsx_runtime_1.jsx)(AbstractedControls_1.AbstractedControls, { title: "Theme Configuration", editorStore: editorStore, feature: "templates/theme" })] })) : ('')] }), (0, jsx_runtime_1.jsx)("div", { className: "tab-view-shadow bottom" })] })] }), (0, jsx_runtime_1.jsx)("footer", {})] }) }));
329
329
  });
@@ -24,6 +24,7 @@ const TermsList_1 = require("../TermsList");
24
24
  const Terms_1 = require("../../Molecules/Terms");
25
25
  const FacetsHorizontal_1 = require("../FacetsHorizontal");
26
26
  const Button_1 = require("../../Atoms/Button");
27
+ const TabSelection_1 = require("../../Molecules/TabSelection");
27
28
  const createRecommendationTemplate_1 = require("../../../hooks/createRecommendationTemplate");
28
29
  const defaultStyles = ({ controller, input, viewportMaxHeight, width, theme, column1, column2, column3, column4, }) => {
29
30
  let inputViewportOffsetBottom = 0;
@@ -186,7 +187,7 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
186
187
  width: '150px',
187
188
  },
188
189
  column3: {
189
- layout: [['content'], ['_', 'button.see-more']],
190
+ layout: [['tabSelection'], ['content'], ['_', 'button.see-more']],
190
191
  width: 'auto',
191
192
  alignContent: 'space-between',
192
193
  },
@@ -280,7 +281,7 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
280
281
  input = document.querySelector(input);
281
282
  }
282
283
  }
283
- const { facetsTitle, contentTitle, column1, column2, column3, column4, onReset, excludeBanners, resultComponent, templates, disableStyles, className, internalClassName, controller, } = props;
284
+ const { facetsTitle, contentTitle, column1, column2, column3, column4, onReset, excludeBanners, resultComponent, templates, disableStyles, className, internalClassName, controller, tabManager, } = props;
284
285
  let layout = props.layout;
285
286
  const subProps = {
286
287
  button: {
@@ -382,6 +383,17 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
382
383
  theme: props.theme,
383
384
  treePath: properties.treePath,
384
385
  },
386
+ tabSelection: {
387
+ // default props
388
+ tabManager,
389
+ // inherited props
390
+ ...(0, utilities_1.defined)({
391
+ disableStyles,
392
+ }),
393
+ // component theme overrides
394
+ theme: props.theme,
395
+ treePath: properties.treePath,
396
+ },
385
397
  };
386
398
  const { search, terms, trending, results, merchandising, pagination, filters, facets, state, loading, loaded } = controller.store;
387
399
  const history = controller.store.history || [];
@@ -520,6 +532,9 @@ exports.AutocompleteLayout = (0, mobx_react_lite_1.observer)((properties) => {
520
532
  if (module == 'no-results' && showResults) {
521
533
  return ((0, jsx_runtime_1.jsx)("div", { className: "ss__autocomplete__content", children: results.length == 0 && !loading ? ((0, jsx_runtime_1.jsxs)("div", { className: "ss__autocomplete__content__no-results", children: [(0, jsx_runtime_1.jsx)("div", { className: "ss__autocomplete__content__no-results__text", ...mergedLang.noResultsText?.all }), RecommendationTemplateComponent && recsController?.store?.loaded ? ((0, jsx_runtime_1.jsx)("div", { className: "ss__autocomplete__content__no-results__recommendations", children: (0, jsx_runtime_1.jsx)(RecommendationTemplateComponent, { controller: recsController, title: recsController.store?.profile?.display?.templateParameters?.title, resultComponent: RecommendationTemplateResultComponent, name: 'noResultsRecommendations', treePath: properties.treePath }) })) : null] })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {})) }));
522
534
  }
535
+ if (module == 'tabSelection') {
536
+ return tabManager ? (0, jsx_runtime_1.jsx)(TabSelection_1.TabSelection, { ...subProps.tabSelection, tabManager: tabManager }) : null;
537
+ }
523
538
  if (module == '_') {
524
539
  return (0, jsx_runtime_1.jsx)("div", { className: "ss__autocomplete__separator" });
525
540
  }
@@ -24,6 +24,7 @@ const snap_store_mobx_1 = require("@athoscommerce/snap-store-mobx");
24
24
  const Facets_1 = require("../Facets");
25
25
  const FacetsHorizontal_1 = require("../FacetsHorizontal");
26
26
  const Breadcrumbs_1 = require("../../Atoms/Breadcrumbs");
27
+ const TabSelection_1 = require("../../Molecules/TabSelection");
27
28
  const defaultStyles = ({}) => {
28
29
  return (0, react_1.css)({
29
30
  display: 'flex',
@@ -56,7 +57,7 @@ exports.Layout = (0, mobx_react_lite_1.observer)((properties) => {
56
57
  treePath: globalTreePath,
57
58
  };
58
59
  const props = (0, utilities_1.mergeProps)('layout', globalTheme, defaultProps, properties);
59
- const { controller, toggleSideBarButton, disableStyles, className, internalClassName, layout } = props;
60
+ const { controller, toggleSideBarButton, disableStyles, className, internalClassName, layout, tabManager } = props;
60
61
  delete props.treePath;
61
62
  const styling = (0, utilities_1.mergeStyles)(props, defaultStyles);
62
63
  const subProps = {
@@ -206,6 +207,17 @@ exports.Layout = (0, mobx_react_lite_1.observer)((properties) => {
206
207
  theme: props?.theme,
207
208
  treePath: properties.treePath,
208
209
  },
210
+ TabSelection: {
211
+ // default props
212
+ tabManager,
213
+ // inherited props
214
+ ...(0, utilities_1.defined)({
215
+ disableStyles,
216
+ }),
217
+ // component theme overrides
218
+ theme: props?.theme,
219
+ treePath: properties.treePath,
220
+ },
209
221
  };
210
222
  const ToggleSideBarButton = toggleSideBarButton;
211
223
  const hasResults = controller.store.pagination.totalResults > 0;
@@ -213,6 +225,8 @@ exports.Layout = (0, mobx_react_lite_1.observer)((properties) => {
213
225
  switch (module) {
214
226
  case 'searchHeader':
215
227
  return (0, jsx_runtime_1.jsx)(SearchHeader_1.SearchHeader, { ...subProps.SearchHeader });
228
+ case 'tabSelection':
229
+ return tabManager ? (0, jsx_runtime_1.jsx)(TabSelection_1.TabSelection, { ...subProps.TabSelection, tabManager: tabManager }) : null;
216
230
  case 'filterSummary':
217
231
  if (hasResults) {
218
232
  return (0, jsx_runtime_1.jsx)(FilterSummary_1.FilterSummary, { ...subProps.FilterSummary });
@@ -141,14 +141,14 @@ exports.Results = (0, mobx_react_lite_1.observer)((properties) => {
141
141
  return results?.length ? ((0, jsx_runtime_1.jsx)(providers_1.CacheProvider, { children: (0, jsx_runtime_1.jsx)("div", { ...styling, className: (0, classnames_1.default)('ss__results', `ss__results-${props.layout}`, className, internalClassName), children: results.map((result) => (() => {
142
142
  switch (result.type) {
143
143
  case snap_store_mobx_1.ContentType.BANNER:
144
- return (0, react_1.createElement)(InlineBanner_1.InlineBanner, { ...subProps.inlineBanner, key: result.id, banner: result, layout: props.layout });
144
+ return ((0, react_1.createElement)(InlineBanner_1.InlineBanner, { ...subProps.inlineBanner, key: `${controller?.id ? `${controller?.id}-` : ''}${result.id}`, banner: result, layout: props.layout }));
145
145
  default:
146
146
  if (shouldWaitForNamedResultComponent) {
147
147
  return null;
148
148
  }
149
149
  if (resolvedResultComponent && controller) {
150
150
  return ((0, jsx_runtime_1.jsx)(ResultTracker_1.ResultTracker, { result: result, controller: controller, children: (0, utilities_1.cloneWithProps)(resolvedResultComponent, {
151
- key: result.id,
151
+ key: `${controller?.id ? `${controller?.id}-` : ''}${result.id}`,
152
152
  controller,
153
153
  result: result,
154
154
  theme: mergedResultComponentTheme,
@@ -156,7 +156,7 @@ exports.Results = (0, mobx_react_lite_1.observer)((properties) => {
156
156
  }) }));
157
157
  }
158
158
  else {
159
- return ((0, jsx_runtime_1.jsx)(TrackedResultComponent, { ...subProps.result, result: result, layout: props.layout, controller: controller }, result.id));
159
+ return ((0, jsx_runtime_1.jsx)(TrackedResultComponent, { ...subProps.result, result: result, layout: props.layout, controller: controller }, `${controller?.id ? `${controller?.id}-` : ''}${result.id}`));
160
160
  }
161
161
  }
162
162
  })()) }) })) : null;
@@ -23,7 +23,7 @@ exports.Toolbar = (0, mobx_react_lite_1.observer)((properties) => {
23
23
  layout: ['button.sidebar-toggle', 'filterSummary', 'paginationInfo', 'sortBy', 'perPage', 'pagination'],
24
24
  };
25
25
  const props = (0, utilities_1.mergeProps)('toolbar', globalTheme, defaultProps, properties);
26
- const { controller, toggleSideBarButton, disableStyles, className, internalClassName, treePath, layout } = props;
26
+ const { controller, toggleSideBarButton, disableStyles, className, internalClassName, treePath, layout, tabManager } = props;
27
27
  const { overrideElement, shouldRenderDefault } = (0, hooks_1.useCustomComponentOverride)('toolbar', props);
28
28
  if (!shouldRenderDefault) {
29
29
  return overrideElement;
@@ -33,6 +33,7 @@ exports.Toolbar = (0, mobx_react_lite_1.observer)((properties) => {
33
33
  Layout: {
34
34
  // default props
35
35
  internalClassName: 'ss__toolbar__layout',
36
+ tabManager: tabManager,
36
37
  // inherited props
37
38
  ...(0, utilities_1.defined)({
38
39
  toggleSideBarButton,
@@ -77,7 +77,13 @@ exports.AutocompleteFixed = (0, mobx_react_lite_1.observer)((properties) => {
77
77
  if (!buttonSelector && input) {
78
78
  buttonSelector = input;
79
79
  }
80
- const { layout, disableStyles, controller, renderInput, overlayColor, className, internalClassName, offset, treePath } = props;
80
+ const { layout, disableStyles, renderInput, overlayColor, className, internalClassName, offset, treePath, tabManager } = props;
81
+ let controller = props.controller;
82
+ let controllers = [controller];
83
+ if (tabManager && tabManager.active) {
84
+ controller = tabManager.active?.controller;
85
+ controllers = tabManager.tabs.map((tab) => tab.controller);
86
+ }
81
87
  const renderedInputRef = (0, hooks_1.useRef)(null);
82
88
  // Sync active state with controller's focusedInput.
83
89
  // When the controller unfocuses (e.g. document click), close the autocomplete
@@ -93,7 +99,7 @@ exports.AutocompleteFixed = (0, mobx_react_lite_1.observer)((properties) => {
93
99
  return () => {
94
100
  controller.eventManager.events['focusChange']?.remove(onFocusChange);
95
101
  };
96
- }, []);
102
+ }, [controller]);
97
103
  const reset = () => {
98
104
  controller.setFocused();
99
105
  setActive(false);
@@ -103,6 +109,7 @@ exports.AutocompleteFixed = (0, mobx_react_lite_1.observer)((properties) => {
103
109
  // default props
104
110
  layout: layout,
105
111
  onReset: () => reset(),
112
+ tabManager,
106
113
  // inherited props
107
114
  ...(0, utilities_1.defined)({
108
115
  disableStyles,
@@ -201,7 +208,7 @@ exports.AutocompleteFixed = (0, mobx_react_lite_1.observer)((properties) => {
201
208
  if (input) {
202
209
  _input = (0, useAcRenderedInput_1.useAcRenderedInput)({
203
210
  input: input,
204
- controller,
211
+ controllers,
205
212
  renderedInputRef,
206
213
  renderInput: Boolean(renderInput),
207
214
  buttonSelector,
@@ -89,7 +89,13 @@ exports.AutocompleteModal = (0, mobx_react_lite_1.observer)((properties) => {
89
89
  if (!buttonSelector && input) {
90
90
  buttonSelector = input;
91
91
  }
92
- const { layout, disableStyles, overlayColor, controller, renderInput, className, internalClassName, treePath } = props;
92
+ const { layout, disableStyles, overlayColor, renderInput, className, internalClassName, treePath, tabManager } = props;
93
+ let controller = props.controller;
94
+ let controllers = [controller];
95
+ if (tabManager && tabManager.active) {
96
+ controller = tabManager.active?.controller;
97
+ controllers = tabManager.tabs.map((tab) => tab.controller);
98
+ }
93
99
  const renderedInputRef = (0, hooks_1.useRef)(null);
94
100
  // Sync active state with controller's focusedInput.
95
101
  // When the controller unfocuses (e.g. document click), close the autocomplete
@@ -105,7 +111,7 @@ exports.AutocompleteModal = (0, mobx_react_lite_1.observer)((properties) => {
105
111
  return () => {
106
112
  controller.eventManager.events['focusChange']?.remove(onFocusChange);
107
113
  };
108
- }, []);
114
+ }, [controller]);
109
115
  const reset = () => {
110
116
  controller.setFocused();
111
117
  setActive(false);
@@ -115,6 +121,7 @@ exports.AutocompleteModal = (0, mobx_react_lite_1.observer)((properties) => {
115
121
  // default props
116
122
  layout: layout,
117
123
  onReset: () => reset(),
124
+ tabManager,
118
125
  // inherited props
119
126
  ...(0, utilities_1.defined)({
120
127
  disableStyles,
@@ -170,7 +177,7 @@ exports.AutocompleteModal = (0, mobx_react_lite_1.observer)((properties) => {
170
177
  if (input) {
171
178
  _input = (0, useAcRenderedInput_1.useAcRenderedInput)({
172
179
  input: input,
173
- controller,
180
+ controllers,
174
181
  renderedInputRef,
175
182
  renderInput: Boolean(renderInput),
176
183
  buttonSelector,
@@ -35,7 +35,7 @@ exports.AutocompleteSlideout = (0, mobx_react_lite_1.observer)((properties) => {
35
35
  const defaultProps = {
36
36
  slideDirection: 'left',
37
37
  overlayColor: 'rgba(0,0,0,0.8)',
38
- layout: [['button.see-more'], ['termsList'], ['content']],
38
+ layout: [['button.see-more'], ['termsList'], ['tabSelection'], ['content']],
39
39
  width: '500px',
40
40
  renderInput: true,
41
41
  };
@@ -54,7 +54,13 @@ exports.AutocompleteSlideout = (0, mobx_react_lite_1.observer)((properties) => {
54
54
  if (!buttonSelector && input) {
55
55
  buttonSelector = input;
56
56
  }
57
- const { layout, disableStyles, slideDirection, controller, overlayColor, renderInput, className, internalClassName, treePath, width } = props;
57
+ const { layout, disableStyles, slideDirection, overlayColor, renderInput, className, internalClassName, treePath, width, tabManager } = props;
58
+ let controller = props.controller;
59
+ let controllers = [controller];
60
+ if (tabManager && tabManager.active) {
61
+ controller = tabManager.active?.controller;
62
+ controllers = tabManager.tabs.map((tab) => tab.controller);
63
+ }
58
64
  const renderedInputRef = (0, hooks_1.useRef)(null);
59
65
  const reset = () => {
60
66
  setActive(false);
@@ -65,6 +71,7 @@ exports.AutocompleteSlideout = (0, mobx_react_lite_1.observer)((properties) => {
65
71
  // default props
66
72
  onReset: () => reset(),
67
73
  layout: layout,
74
+ tabManager,
68
75
  // inherited props
69
76
  ...(0, utilities_1.defined)({
70
77
  disableStyles,
@@ -124,7 +131,7 @@ exports.AutocompleteSlideout = (0, mobx_react_lite_1.observer)((properties) => {
124
131
  });
125
132
  _input = (0, useAcRenderedInput_1.useAcRenderedInput)({
126
133
  input: input,
127
- controller,
134
+ controllers,
128
135
  renderedInputRef,
129
136
  renderInput: Boolean(renderInput),
130
137
  buttonSelector,
@@ -69,13 +69,17 @@ exports.Search = (0, mobx_react_lite_1.observer)((properties) => {
69
69
  treePath: globalTreePath,
70
70
  };
71
71
  const props = (0, utilities_1.mergeProps)(properties.alias || 'search', globalTheme, defaultProps, properties);
72
- const { disableStyles, className, internalClassName, controller, hideSidebar, toggleSidebarButtonText, hideTopToolbar, hideMiddleToolbar, hideBottomToolbar, resultComponent, hideToggleSidebarButton, mobileDisplayAt, toggleSidebarStartClosed, treePath, alias, } = props;
72
+ const { disableStyles, className, internalClassName, hideSidebar, toggleSidebarButtonText, hideTopToolbar, tabManager, hideMiddleToolbar, hideBottomToolbar, resultComponent, hideToggleSidebarButton, mobileDisplayAt, toggleSidebarStartClosed, treePath, alias, } = props;
73
+ let controller = props.controller;
73
74
  let classNamePrefix = 'ss__search';
74
75
  if (props.alias) {
75
76
  classNamePrefix = `ss__${(0, componentNameToClassName_1.componentNameToClassName)(props.alias)}`;
76
77
  }
77
78
  // handle selected layoutOptions - must always call to preserve hook order
78
79
  (0, useLayoutOptions_1.useLayoutOptions)(props, globalTheme);
80
+ if (tabManager && tabManager.active) {
81
+ controller = tabManager.active?.controller;
82
+ }
79
83
  const store = controller.store;
80
84
  const isMobile = (0, hooks_2.useMediaQuery)(mobileDisplayAt ? (typeof mobileDisplayAt == 'boolean' ? `(min-width: 0px)` : `(max-width: ${mobileDisplayAt})`) : `(max-width: 0px)`);
81
85
  const [sidebarOpenState, setSidebarOpenState] = (0, hooks_1.useState)(Boolean(alias !== 'searchHorizontal' && !toggleSidebarStartClosed && !isMobile));
@@ -136,6 +140,7 @@ exports.Search = (0, mobx_react_lite_1.observer)((properties) => {
136
140
  internalClassName: `${classNamePrefix}__header-section__toolbar--top-toolbar`,
137
141
  layout: [['banner.header'], ['searchHeader', '_']],
138
142
  toggleSideBarButton: { ...toggleSidebarButtonProps },
143
+ tabManager: tabManager,
139
144
  ...(0, utilities_1.defined)({
140
145
  disableStyles,
141
146
  }),
@@ -147,9 +152,10 @@ exports.Search = (0, mobx_react_lite_1.observer)((properties) => {
147
152
  name: 'middle',
148
153
  internalClassName: `${classNamePrefix}__content__toolbar--middle-toolbar`,
149
154
  layout: isMobile
150
- ? [['paginationInfo', '_'], ['button.sidebar-toggle', '_', 'sortBy'], ['banner.banner']]
151
- : [['sortBy', 'perPage', '_', 'paginationInfo'], ['banner.banner']],
155
+ ? [['tabSelection'], ['paginationInfo', '_'], ['button.sidebar-toggle', '_', 'sortBy'], ['banner.banner']]
156
+ : [['tabSelection'], ['sortBy', 'perPage', '_', 'paginationInfo'], ['banner.banner']],
152
157
  toggleSideBarButton: { ...toggleSidebarButtonProps },
158
+ tabManager: tabManager,
153
159
  // inherited props
154
160
  ...(0, utilities_1.defined)({
155
161
  disableStyles,
@@ -163,6 +169,7 @@ exports.Search = (0, mobx_react_lite_1.observer)((properties) => {
163
169
  internalClassName: `${classNamePrefix}__content__toolbar--bottom-toolbar`,
164
170
  layout: [['banner.footer'], ['_', 'pagination', '_']],
165
171
  toggleSideBarButton: { ...toggleSidebarButtonProps },
172
+ tabManager: tabManager,
166
173
  // inherited props
167
174
  ...(0, utilities_1.defined)({
168
175
  disableStyles,