@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.
- package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +5 -1
- package/dist/cjs/components/src/components/Molecules/Grid/Grid.js +9 -13
- package/dist/cjs/components/src/components/Molecules/List/List.js +9 -13
- package/dist/cjs/components/src/components/Molecules/RadioList/RadioList.js +9 -13
- package/dist/cjs/components/src/components/Molecules/Select/Select.js +9 -13
- package/dist/cjs/components/src/components/Molecules/TabSelection/TabSelection.js +108 -0
- package/dist/cjs/components/src/components/Molecules/TabSelection/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +1 -1
- package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +17 -2
- package/dist/cjs/components/src/components/Organisms/Layout/Layout.js +15 -1
- package/dist/cjs/components/src/components/Organisms/Results/Results.js +3 -3
- package/dist/cjs/components/src/components/Organisms/Toolbar/Toolbar.js +2 -1
- package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +10 -3
- package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +10 -3
- package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +10 -3
- package/dist/cjs/components/src/components/Templates/Search/Search.js +10 -3
- package/dist/cjs/components/src/hooks/useAcRenderedInput.js +14 -3
- package/dist/cjs/components/src/hooks/useCreateController.js +24 -3
- package/dist/cjs/components/src/index.js +1 -0
- package/dist/cjs/components/src/providers/themeComponents.js +1 -0
- package/dist/cjs/components/src/utilities/index.js +1 -0
- package/dist/cjs/components/src/utilities/selectionKey.js +12 -0
- package/dist/cjs/src/Templates/SnapTemplates.js +143 -32
- package/dist/cjs/src/Templates/Stores/LibraryStore.js +2 -0
- package/dist/cjs/src/Templates/Stores/TabManagerStore.js +151 -0
- package/dist/cjs/src/Templates/Stores/TemplateStore.js +22 -0
- package/dist/cjs/src/Templates/Stores/library/languages/es.js +12 -0
- package/dist/cjs/src/Templates/Stores/library/languages/fr.js +12 -0
- package/dist/cjs/src/create/createAutocompleteController.js +6 -1
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +5 -1
- package/dist/esm/components/src/components/Molecules/Grid/Grid.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Grid/Grid.js +10 -14
- package/dist/esm/components/src/components/Molecules/List/List.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/List/List.js +10 -14
- package/dist/esm/components/src/components/Molecules/RadioList/RadioList.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/RadioList/RadioList.js +10 -14
- package/dist/esm/components/src/components/Molecules/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Select/Select.js +10 -14
- package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.d.ts +32 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/TabSelection.js +102 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/TabSelection/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/TemplatesEditor/TemplatesEditor.js +1 -1
- package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts +3 -1
- package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +17 -2
- package/dist/esm/components/src/components/Organisms/Layout/Layout.d.ts +3 -1
- package/dist/esm/components/src/components/Organisms/Layout/Layout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Layout/Layout.js +15 -1
- package/dist/esm/components/src/components/Organisms/Results/Results.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Results/Results.js +3 -3
- package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.d.ts +3 -1
- package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Toolbar/Toolbar.js +2 -1
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +10 -3
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +10 -3
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +10 -3
- package/dist/esm/components/src/components/Templates/Search/Search.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/Search/Search.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/Search/Search.js +10 -3
- package/dist/esm/components/src/hooks/useAcRenderedInput.d.ts +2 -2
- package/dist/esm/components/src/hooks/useAcRenderedInput.d.ts.map +1 -1
- package/dist/esm/components/src/hooks/useAcRenderedInput.js +15 -4
- package/dist/esm/components/src/hooks/useCreateController.d.ts.map +1 -1
- package/dist/esm/components/src/hooks/useCreateController.js +24 -3
- package/dist/esm/components/src/index.d.ts +1 -0
- package/dist/esm/components/src/index.d.ts.map +1 -1
- package/dist/esm/components/src/index.js +1 -0
- package/dist/esm/components/src/providers/langComponents.d.ts +2 -0
- package/dist/esm/components/src/providers/langComponents.d.ts.map +1 -1
- package/dist/esm/components/src/providers/themeComponents.d.ts +41 -7
- package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
- package/dist/esm/components/src/providers/themeComponents.js +1 -0
- package/dist/esm/components/src/utilities/index.d.ts +1 -0
- package/dist/esm/components/src/utilities/index.d.ts.map +1 -1
- package/dist/esm/components/src/utilities/index.js +1 -0
- package/dist/esm/components/src/utilities/selectionKey.d.ts +3 -0
- package/dist/esm/components/src/utilities/selectionKey.d.ts.map +1 -0
- package/dist/esm/components/src/utilities/selectionKey.js +9 -0
- package/dist/esm/src/Templates/SnapTemplates.d.ts +6 -3
- package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
- package/dist/esm/src/Templates/SnapTemplates.js +141 -31
- package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +2 -0
- package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/LibraryStore.js +2 -0
- package/dist/esm/src/Templates/Stores/TabManagerStore.d.ts +29 -0
- package/dist/esm/src/Templates/Stores/TabManagerStore.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/TabManagerStore.js +146 -0
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +24 -3
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateStore.js +22 -0
- package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/library/languages/es.js +12 -0
- package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/library/languages/fr.js +12 -0
- package/dist/esm/src/create/createAutocompleteController.js +6 -1
- package/dist/esm/src/types.d.ts +6 -1
- package/dist/esm/src/types.d.ts.map +1 -1
- 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
|
-
//
|
|
160
|
-
|
|
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
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
//
|
|
105
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
//
|
|
96
|
-
|
|
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
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
//
|
|
139
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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.
|
|
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
|
});
|
package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js
CHANGED
|
@@ -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
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
180
|
+
controllers,
|
|
174
181
|
renderedInputRef,
|
|
175
182
|
renderInput: Boolean(renderInput),
|
|
176
183
|
buttonSelector,
|
package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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,
|
|
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,
|