PluginProbe
seQura / 3.2.2
seQura v3.2.2
4.3.4 4.3.3 4.3.2 4.3.1 trunk 2.0.0 2.0.10 2.0.11 2.0.12 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 3.0.0 3.0.2 3.0.5 3.0.6 3.0.7 3.1.0 3.1.1 3.2.0 3.2.1 3.2.2 4.0.0 All 30 releases
sequra / assets / js / src / core / PageHeaderComponent.js

PageHeaderComponent.js in seQura 3.2.2, at assets/js/src/core/PageHeaderComponent.js

102 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 if (!window.SequraFE) {
2 window.SequraFE = {};
3 }
4
5 if (!window.SequraFE.components) {
6 window.SequraFE.components = {};
7 }
8
9 (function () {
10 /**
11 * @typedef PageHeaderConfiguration
12 * @property {string?} currentVersion
13 * @property {{versionLabel?: string, versionUrl?: string}?} newVersion
14 * @property {'live' | 'test'} mode
15 * @property {string?} merchantName
16 * @property {Option[]?} stores
17 * @property {{label: string, href: string, isActive?: boolean}[]} menuItems
18 * @property {string} activeStore
19 * @property {(value: string) => void?} onChange
20 */
21
22 /**
23 * @param {PageHeaderConfiguration} config
24 * @constructor
25 */
26 function PageHeaderComponent({
27 currentVersion,
28 newVersion,
29 mode,
30 menuItems,
31 merchantName,
32 stores,
33 activeStore,
34 onChange
35 }) {
36 const generator = SequraFE.elementGenerator;
37
38 const logoAndVersion = generator.createElement('div', 'sqp-page-header', '', null, [
39 generator.createElement('div', 'sqp-header-logo', '', null, [
40 generator.createElementFromHTML(SequraFE.imagesProvider.logo || ''),
41 currentVersion ? generator.createVersionBadge(currentVersion) : []
42 ]),
43 currentVersion && newVersion && newVersion.versionLabel !== currentVersion
44 ? generator.createElement(
45 'a',
46 'sqp-download-version',
47 '',
48 {href: newVersion.versionUrl, download: true, target: "_blank"},
49 [
50 generator.createElement('span', '', 'general.downloadNewVersion'),
51 generator.createElement('span', '', newVersion.versionLabel)
52 ]
53 )
54 : ''
55 ]);
56
57 let controls = [];
58 if (menuItems.length) {
59 controls = generator.createElement('div', 'sqp-menu-items');
60 controls.append(
61 ...menuItems.map((item) =>
62 generator.createButtonLink({
63 className: item.isActive ? 'sqs--active' : '',
64 text: item.label,
65 href: item.href
66 })
67 )
68 );
69 }
70
71 const merchant = generator.createElement('div', 'sqp-header-merchant', '', null, [
72 merchantName ? generator.createElement('div', 'sqp-merchant', '', null, [
73 generator.createElement('span', 'sqp-merchant-label', 'general.merchant'),
74 generator.createElement('span', 'sqp-merchant-name', merchantName)
75 ]) : [],
76 generator.createElement(
77 'span',
78 'sq-mode-badge' + (mode ? ' sqt--' + mode : ''),
79 'general.mode.' + mode.toLowerCase(),
80 null
81 )
82 ]);
83
84 const storeSwitcher = stores.length <= 1 ? [] : generator.createStoreSwitcher({
85 label: 'general.switchStore',
86 value: activeStore,
87 options: stores,
88 onChange: onChange
89 });
90
91 return generator.createElement('div', 'sq-page-header', '', null, [
92 generator.createElement('div', 'sqp-header-top', '', null, [logoAndVersion, controls]),
93 generator.createElement('div', 'sqp-header-bottom', '', null, [merchant, storeSwitcher])
94 ]);
95 }
96
97 SequraFE.components.PageHeader = {
98 /** @param {PageHeaderConfiguration} config */
99 create: (config) => new PageHeaderComponent(config)
100 };
101 })();
102