Skip to content

Commit 1b46a97

Browse files
committed
Remove jQuery from JS
1 parent d8c3a20 commit 1b46a97

File tree

15 files changed

+178
-109
lines changed

15 files changed

+178
-109
lines changed

djangocms_frontend/contrib/card/templates/djangocms_frontend/admin/card_layout.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
{% block extrahead %}
55
{{ block.super }}
6-
<script src="{% static 'djangocms_frontend/js/bundle.grid.js' %}"></script>
6+
<script src="{% static 'djangocms_frontend/js/grid.js' %}"></script>
77
{% endblock %}
88

99
{% block field_sets %}

djangocms_frontend/contrib/grid/templates/djangocms_frontend/admin/grid_column.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
{% block extrahead %}
55
{{ block.super }}
6-
<script src="{% static 'djangocms_frontend/js/bundle.grid.js' %}"></script>
6+
<script src="{% static 'djangocms_frontend/js/grid.js' %}"></script>
77
{% endblock %}
88

99
{% block field_sets %}

djangocms_frontend/contrib/grid/templates/djangocms_frontend/admin/grid_row.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
{% block extrahead %}
55
{{ block.super }}
6-
<script src="{% static 'djangocms_frontend/js/bundle.grid.js' %}"></script>
6+
<script src="{% static 'djangocms_frontend/js/grid.js' %}"></script>
77
{% endblock %}
88

99
{% block field_sets %}{% spaceless %}

djangocms_frontend/contrib/link/templates/djangocms_frontend/admin/link.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
min-width: 160px;
1515
}
1616
</style>
17-
<script src="{% static 'djangocms_frontend/js/bundle.link.js' %}"></script>
1817
{% endblock %}
1918

2019
{% block field_sets %}

djangocms_frontend/static/djangocms_frontend/css/base.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

djangocms_frontend/static/djangocms_frontend/css/button_group.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
/**
2+
* @class GridLayout
3+
* @public
4+
*/
5+
class GridLayout {
6+
/**
7+
* @method constructor
8+
* @param {Object} options
9+
* @param {Array} options.sizes
10+
* @param {Array} options.icons
11+
* @param {Array} options.row
12+
* @param {String} options.reset
13+
* @param {String} options.static
14+
* @param {string} options.selector
15+
*/
16+
constructor(options) {
17+
this.options = options;
18+
19+
this.setHeader();
20+
this.setColumn();
21+
this.setReset();
22+
}
23+
24+
/**
25+
* @method setHeader
26+
*/
27+
setHeader() {
28+
const container = document.querySelectorAll('.form-row.field-xs_col .fieldBox, .form-row.field-row_cols_xs .fieldBox');
29+
const wrapper = wrapper => `<div class="icon-thead">${wrapper}</div>`;
30+
const icons = (icon, title = '') => `
31+
<span class="icon icon-${icon}" title="${title}"></span>
32+
<span class="icon-title">${title}</span>`
33+
34+
for (const icon of this.options.icons) {
35+
const tmp = icons(icon, this.options.sizes[this.options.icons.indexOf(icon)]);
36+
container[this.options.icons.indexOf(icon)].insertAdjacentHTML('afterbegin', wrapper(tmp));
37+
}
38+
}
39+
40+
/**
41+
* @method setColumn
42+
*/
43+
setColumn() {
44+
let template = (text = '', link = '#') =>
45+
'<div class="field-box field-box-label">' +
46+
(link != "#" ? `<a href="${link}" target="_blank" class="d-inline-block text-right">` : '')
47+
+ text
48+
+ (link != "#" ? ' <span class="icon icon-info icon-primary"></span></a>' : "")
49+
+ "</div>";
50+
let container = document.querySelectorAll(this.options.selector);
51+
let links = this.options.links;
52+
53+
Array.from(container).forEach((item, index) => {
54+
item.insertAdjacentHTML('afterbegin', template(this.options.rows[index], links[index]));
55+
});
56+
}
57+
58+
/**
59+
* @method setReset
60+
*/
61+
setReset() {
62+
const container = document.querySelector('.form-row.field-xs_col');
63+
const wrapper = container.closest('fieldset');
64+
const template = (text = this.options.reset) => `
65+
<a href="#" class="btn grid-reset">${text}</a>
66+
`;
67+
const button = document.createElement('div');
68+
button.innerHTML = template();
69+
70+
button.firstElementChild.addEventListener('click', function (event) {
71+
event.preventDefault();
72+
wrapper.querySelectorAll('input').forEach(input => {
73+
input.classList.remove("auto");
74+
input.value = '';
75+
});
76+
wrapper.querySelectorAll('input[type="checkbox"]').forEach(checkbox => {
77+
checkbox.checked = false;
78+
});
79+
});
80+
container.append(button.firstElementChild);
81+
}
82+
}
83+
84+
document.addEventListener('DOMContentLoaded', () => {
85+
// Row plugin
86+
87+
const row = document.querySelector('.djangocms-frontend-row');
88+
const iconTemplate = (icon, title = '') => `<span class="icon icon-${icon}" title="${title}"></span>`
89+
if (row) {
90+
const static_url = row.dataset.static;
91+
92+
new GridLayout({
93+
selector: `
94+
.form-row.field-row_cols_xs
95+
`,
96+
sizes: JSON.parse(row.dataset.sizes),
97+
icons: JSON.parse(row.dataset.icons),
98+
rows: JSON.parse(row.dataset.rows),
99+
links: JSON.parse(row.dataset.links),
100+
static: static_url,
101+
});
102+
const createRow = document.querySelector('.form-row.field-create > div');
103+
104+
if (createRow) {
105+
createRow.insertAdjacentHTML('beforebegin', iconTemplate('columns'));
106+
}
107+
}
108+
109+
// Column plugin
110+
const column = document.querySelector('.djangocms-frontend-column');
111+
if (column) {
112+
const static_url = column.dataset.static;
113+
114+
// Bootstrap 5 Grid Column - Responsive Settings
115+
new GridLayout({
116+
selector: `
117+
.form-row.field-xs_col,
118+
.form-row.field-xs_order,
119+
.form-row.field-xs_offset,
120+
.form-row.field-xs_ms,
121+
.form-row.field-xs_me
122+
`,
123+
sizes: JSON.parse(column.dataset.sizes),
124+
icons: JSON.parse(column.dataset.icons),
125+
rows: JSON.parse(column.dataset.rows),
126+
reset: column.dataset.reset,
127+
links: JSON.parse(column.dataset.links),
128+
static: static_url,
129+
});
130+
}
131+
132+
});

private/sass/base.scss

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
@charset "utf-8";
22

33
@import "components/variables";
4+
// Navigation
45
@import "components/tabs";
56

6-
// Bootstrap5 (parts)
7-
// @import "import_bootstrap";
87
// our components
98
@import "components/icons";
109
@import "components/button-group";
1110
@import "components/grid-layout";
12-
// @import "components/preview-generator";
1311
@import "components/forms";
1412
@import "components/tooltip";
1513
@import "components/title";

private/sass/button_group.scss

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
@import "components/variables";
22

3-
/*
4-
.btn-check:checked+.btn-outline-secondary.btn-grp {
5-
background: white;
6-
}
7-
8-
*/
93
form .form-row div.frontend-button-group.frontend-button-group-block {
104
display: flex;
115
flex-wrap: wrap;
@@ -57,14 +51,14 @@ form .form-row div.frontend-button-group {
5751

5852
input[type="radio"]:checked + label.btn-grp,
5953
input[type="checkbox"]:checked + label.btn-grp {
60-
outline: 2px solid $cms-primary;
54+
outline: 2px solid $color-secondary;
6155
border-color: white;
6256
border-radius: 0;
6357
}
6458

6559
input[property="text"]:checked + label.btn-grp,
6660
input[property="icon"]:checked + label.btn-grp {
67-
background: $cms-primary;
61+
background: $color-secondary;
6862
}
6963

7064
input[property="opacity"] + label.btn-grp {

private/sass/components/_button-group.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@
1919

2020
// adds basic active effect
2121
.btn.active {
22-
outline: 3px solid $cms-primary;
22+
outline: 3px solid $color-secondary;
2323
border-color: #fff !important;
2424
}
2525

2626
// specific for default classes (used for button-group)
2727
.btn-default.active {
2828
border-radius: 0;
29-
background-color: $cms-primary !important;
29+
background-color: $color-secondary !important;
3030
}
3131
}
3232

0 commit comments

Comments
 (0)