@oxyshop/admin 1.3.32 → 1.3.36
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/lib/index.js
CHANGED
|
@@ -1884,6 +1884,26 @@ $.fn.extend({
|
|
|
1884
1884
|
},
|
|
1885
1885
|
});
|
|
1886
1886
|
|
|
1887
|
+
class FeedCategorySelect {
|
|
1888
|
+
constructor(selector) {
|
|
1889
|
+
this.selectSelector = selector;
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1892
|
+
init() {
|
|
1893
|
+
document.querySelectorAll(this.selectSelector).forEach((selectElement) => {
|
|
1894
|
+
const sourceCode = selectElement.getAttribute('data-source-code');
|
|
1895
|
+
|
|
1896
|
+
$(selectElement).dropdown({
|
|
1897
|
+
apiSettings: {
|
|
1898
|
+
url: `/admin/taxon-select-options/${sourceCode}/{query}`,
|
|
1899
|
+
cache: false,
|
|
1900
|
+
},
|
|
1901
|
+
minCharacters: 2,
|
|
1902
|
+
});
|
|
1903
|
+
});
|
|
1904
|
+
}
|
|
1905
|
+
}
|
|
1906
|
+
|
|
1887
1907
|
class TooltipHelpers {
|
|
1888
1908
|
static init() {
|
|
1889
1909
|
TooltipHelpers.initSyliusShippingMethodTooltip();
|
|
@@ -1926,6 +1946,97 @@ class TooltipHelpers {
|
|
|
1926
1946
|
}
|
|
1927
1947
|
}
|
|
1928
1948
|
|
|
1949
|
+
class AdminSidebarScroller {
|
|
1950
|
+
/**
|
|
1951
|
+
* @param {HTMLElement} adminMenuElement
|
|
1952
|
+
* @param {string} menuItemSelector
|
|
1953
|
+
*/
|
|
1954
|
+
constructor(adminMenuElement, menuItemSelector) {
|
|
1955
|
+
this.adminMenuElement = adminMenuElement;
|
|
1956
|
+
this.menuItemSelector = menuItemSelector;
|
|
1957
|
+
|
|
1958
|
+
Object.freeze(this);
|
|
1959
|
+
}
|
|
1960
|
+
|
|
1961
|
+
scrollToActiveLink() {
|
|
1962
|
+
const activeMenuItem = this.getActiveMenuItem();
|
|
1963
|
+
if (null === activeMenuItem) {
|
|
1964
|
+
return // no active menu item
|
|
1965
|
+
}
|
|
1966
|
+
|
|
1967
|
+
this.scrollToElement(activeMenuItem);
|
|
1968
|
+
}
|
|
1969
|
+
|
|
1970
|
+
/**
|
|
1971
|
+
* @private
|
|
1972
|
+
* @return {HTMLElement}
|
|
1973
|
+
*/
|
|
1974
|
+
getActiveMenuItem() {
|
|
1975
|
+
const currentPathname = location.pathname;
|
|
1976
|
+
const activeItemSelector = `${this.menuItemSelector}[href="${currentPathname}"]`;
|
|
1977
|
+
return this.adminMenuElement.querySelector(activeItemSelector)
|
|
1978
|
+
}
|
|
1979
|
+
|
|
1980
|
+
/**
|
|
1981
|
+
* @private
|
|
1982
|
+
* @param {HTMLElement} elementToScrollTo
|
|
1983
|
+
*/
|
|
1984
|
+
scrollToElement(elementToScrollTo) {
|
|
1985
|
+
// 'scrollIntoViewIfNeeded' is a non-standard browser feature
|
|
1986
|
+
if ('undefined' !== typeof elementToScrollTo.scrollIntoViewIfNeeded) {
|
|
1987
|
+
elementToScrollTo.scrollIntoViewIfNeeded();
|
|
1988
|
+
return
|
|
1989
|
+
}
|
|
1990
|
+
|
|
1991
|
+
elementToScrollTo.scrollIntoView();
|
|
1992
|
+
}
|
|
1993
|
+
}
|
|
1994
|
+
|
|
1995
|
+
class CustomerGroupingRuleConfiguration {
|
|
1996
|
+
/**
|
|
1997
|
+
* @param {string} groupingRuleSelectSelector
|
|
1998
|
+
* @param {string} formGroupSelector
|
|
1999
|
+
*/
|
|
2000
|
+
constructor(groupingRuleSelectSelector, formGroupSelector) {
|
|
2001
|
+
this.groupingRuleSelectSelector = groupingRuleSelectSelector;
|
|
2002
|
+
this.formGroupSelector = formGroupSelector;
|
|
2003
|
+
}
|
|
2004
|
+
|
|
2005
|
+
init() {
|
|
2006
|
+
// Event listener on dynamic elements
|
|
2007
|
+
$(document).on('change', this.groupingRuleSelectSelector, (selectEvent) => {
|
|
2008
|
+
this.toggleRuleConfigurationSection(selectEvent.target);
|
|
2009
|
+
});
|
|
2010
|
+
|
|
2011
|
+
// Show all sections with selected value
|
|
2012
|
+
document.querySelectorAll(this.groupingRuleSelectSelector).forEach((selectElement) => {
|
|
2013
|
+
this.toggleRuleConfigurationSection(selectElement);
|
|
2014
|
+
});
|
|
2015
|
+
}
|
|
2016
|
+
|
|
2017
|
+
toggleRuleConfigurationSection(selectElement) {
|
|
2018
|
+
const selectedRuleCode = selectElement.value;
|
|
2019
|
+
const configurationGroup = selectElement.parentElement.parentElement;
|
|
2020
|
+
|
|
2021
|
+
configurationGroup.querySelectorAll(this.formGroupSelector).forEach((formGroup) => {
|
|
2022
|
+
const groupRuleCode = formGroup.getAttribute('data-grouping-rule-code');
|
|
2023
|
+
const toggleFunction = groupRuleCode === selectedRuleCode ? this.showElement : this.hideElement;
|
|
2024
|
+
|
|
2025
|
+
toggleFunction(formGroup);
|
|
2026
|
+
});
|
|
2027
|
+
}
|
|
2028
|
+
|
|
2029
|
+
/** @private */
|
|
2030
|
+
hideElement(element) {
|
|
2031
|
+
element.classList.add('d-none');
|
|
2032
|
+
}
|
|
2033
|
+
|
|
2034
|
+
/** @private */
|
|
2035
|
+
showElement(element) {
|
|
2036
|
+
element.classList.remove('d-none');
|
|
2037
|
+
}
|
|
2038
|
+
}
|
|
2039
|
+
|
|
1929
2040
|
/**
|
|
1930
2041
|
* CKEditor config
|
|
1931
2042
|
*/
|
|
@@ -2233,4 +2344,18 @@ $(document).ready(() => {
|
|
|
2233
2344
|
* Place here next components
|
|
2234
2345
|
*/
|
|
2235
2346
|
TooltipHelpers.init();
|
|
2347
|
+
|
|
2348
|
+
const feedCategorySelect = new FeedCategorySelect('.ng-feed-category-select');
|
|
2349
|
+
feedCategorySelect.init();
|
|
2350
|
+
|
|
2351
|
+
const customerGroupingRuleConfiguration = new CustomerGroupingRuleConfiguration(
|
|
2352
|
+
'select.ng-grouping-rule-select',
|
|
2353
|
+
'.ng-grouping-rule-configuration'
|
|
2354
|
+
);
|
|
2355
|
+
customerGroupingRuleConfiguration.init();
|
|
2356
|
+
|
|
2357
|
+
// Admin sidebar scroller
|
|
2358
|
+
const adminSidebarElement = document.getElementById('sidebar');
|
|
2359
|
+
const adminSidebarScroller = new AdminSidebarScroller(adminSidebarElement, 'a.item');
|
|
2360
|
+
adminSidebarScroller.scrollToActiveLink();
|
|
2236
2361
|
});
|
package/package.json
CHANGED
package/scss/main.scss
CHANGED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export default class AdminSidebarScroller {
|
|
2
|
+
/**
|
|
3
|
+
* @param {HTMLElement} adminMenuElement
|
|
4
|
+
* @param {string} menuItemSelector
|
|
5
|
+
*/
|
|
6
|
+
constructor(adminMenuElement, menuItemSelector) {
|
|
7
|
+
this.adminMenuElement = adminMenuElement
|
|
8
|
+
this.menuItemSelector = menuItemSelector
|
|
9
|
+
|
|
10
|
+
Object.freeze(this)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
scrollToActiveLink() {
|
|
14
|
+
const activeMenuItem = this.getActiveMenuItem()
|
|
15
|
+
if (null === activeMenuItem) {
|
|
16
|
+
return // no active menu item
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
this.scrollToElement(activeMenuItem)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @private
|
|
24
|
+
* @return {HTMLElement}
|
|
25
|
+
*/
|
|
26
|
+
getActiveMenuItem() {
|
|
27
|
+
const currentPathname = location.pathname
|
|
28
|
+
const activeItemSelector = `${this.menuItemSelector}[href="${currentPathname}"]`
|
|
29
|
+
return this.adminMenuElement.querySelector(activeItemSelector)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @private
|
|
34
|
+
* @param {HTMLElement} elementToScrollTo
|
|
35
|
+
*/
|
|
36
|
+
scrollToElement(elementToScrollTo) {
|
|
37
|
+
// 'scrollIntoViewIfNeeded' is a non-standard browser feature
|
|
38
|
+
if ('undefined' !== typeof elementToScrollTo.scrollIntoViewIfNeeded) {
|
|
39
|
+
elementToScrollTo.scrollIntoViewIfNeeded()
|
|
40
|
+
return
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
elementToScrollTo.scrollIntoView()
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export default class CustomerGroupingRuleConfiguration {
|
|
2
|
+
/**
|
|
3
|
+
* @param {string} groupingRuleSelectSelector
|
|
4
|
+
* @param {string} formGroupSelector
|
|
5
|
+
*/
|
|
6
|
+
constructor(groupingRuleSelectSelector, formGroupSelector) {
|
|
7
|
+
this.groupingRuleSelectSelector = groupingRuleSelectSelector
|
|
8
|
+
this.formGroupSelector = formGroupSelector
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
init() {
|
|
12
|
+
// Event listener on dynamic elements
|
|
13
|
+
$(document).on('change', this.groupingRuleSelectSelector, (selectEvent) => {
|
|
14
|
+
this.toggleRuleConfigurationSection(selectEvent.target)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
// Show all sections with selected value
|
|
18
|
+
document.querySelectorAll(this.groupingRuleSelectSelector).forEach((selectElement) => {
|
|
19
|
+
this.toggleRuleConfigurationSection(selectElement)
|
|
20
|
+
})
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
toggleRuleConfigurationSection(selectElement) {
|
|
24
|
+
const selectedRuleCode = selectElement.value
|
|
25
|
+
const configurationGroup = selectElement.parentElement.parentElement
|
|
26
|
+
|
|
27
|
+
configurationGroup.querySelectorAll(this.formGroupSelector).forEach((formGroup) => {
|
|
28
|
+
const groupRuleCode = formGroup.getAttribute('data-grouping-rule-code')
|
|
29
|
+
const toggleFunction = groupRuleCode === selectedRuleCode ? this.showElement : this.hideElement
|
|
30
|
+
|
|
31
|
+
toggleFunction(formGroup)
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** @private */
|
|
36
|
+
hideElement(element) {
|
|
37
|
+
element.classList.add('d-none')
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** @private */
|
|
41
|
+
showElement(element) {
|
|
42
|
+
element.classList.remove('d-none')
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default class FeedCategorySelect {
|
|
2
|
+
constructor(selector) {
|
|
3
|
+
this.selectSelector = selector
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
init() {
|
|
7
|
+
document.querySelectorAll(this.selectSelector).forEach((selectElement) => {
|
|
8
|
+
const sourceCode = selectElement.getAttribute('data-source-code')
|
|
9
|
+
|
|
10
|
+
$(selectElement).dropdown({
|
|
11
|
+
apiSettings: {
|
|
12
|
+
url: `/admin/taxon-select-options/${sourceCode}/{query}`,
|
|
13
|
+
cache: false,
|
|
14
|
+
},
|
|
15
|
+
minCharacters: 2,
|
|
16
|
+
})
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
}
|
package/src/index.js
CHANGED
|
@@ -6,7 +6,10 @@ import 'sylius-bundle/AdminBundle/Resources/private/js/app'
|
|
|
6
6
|
|
|
7
7
|
// Scripts - components
|
|
8
8
|
import './components/taxonAttributes'
|
|
9
|
+
import FeedCategorySelect from './components/feedCategorySelect'
|
|
9
10
|
import TooltipHelpers from './components/tooltipHelpers'
|
|
11
|
+
import AdminSidebarScroller from './components/adminSidebarScroller'
|
|
12
|
+
import CustomerGroupingRuleConfiguration from './components/customerGroupingRuleConfiguration'
|
|
10
13
|
|
|
11
14
|
// Scripts - plugin
|
|
12
15
|
import './plugins/ckeditor/index'
|
|
@@ -39,4 +42,18 @@ $(document).ready(() => {
|
|
|
39
42
|
* Place here next components
|
|
40
43
|
*/
|
|
41
44
|
TooltipHelpers.init()
|
|
45
|
+
|
|
46
|
+
const feedCategorySelect = new FeedCategorySelect('.ng-feed-category-select')
|
|
47
|
+
feedCategorySelect.init()
|
|
48
|
+
|
|
49
|
+
const customerGroupingRuleConfiguration = new CustomerGroupingRuleConfiguration(
|
|
50
|
+
'select.ng-grouping-rule-select',
|
|
51
|
+
'.ng-grouping-rule-configuration'
|
|
52
|
+
)
|
|
53
|
+
customerGroupingRuleConfiguration.init()
|
|
54
|
+
|
|
55
|
+
// Admin sidebar scroller
|
|
56
|
+
const adminSidebarElement = document.getElementById('sidebar')
|
|
57
|
+
const adminSidebarScroller = new AdminSidebarScroller(adminSidebarElement, 'a.item')
|
|
58
|
+
adminSidebarScroller.scrollToActiveLink()
|
|
42
59
|
})
|