@schukai/monster 3.86.3 → 3.86.4
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/CHANGELOG.md +8 -0
- package/package.json +1 -1
- package/source/components/datatable/datasource/dom.mjs +3 -12
- package/source/components/datatable/datasource/rest.mjs +30 -31
- package/source/components/datatable/datatable.mjs +47 -7
- package/source/components/datatable/filter-button.mjs +3 -38
- package/source/components/datatable/filter.mjs +0 -1
- package/source/components/datatable/pagination.mjs +128 -10
- package/source/components/datatable/style/datatable.pcss +4 -11
- package/source/components/datatable/style/embedded-pagination.pcss +16 -61
- package/source/components/datatable/style/filter-button.pcss +10 -7
- package/source/components/datatable/style/filter.pcss +1 -1
- package/source/components/datatable/stylesheet/column-bar.mjs +13 -6
- package/source/components/datatable/stylesheet/datatable.mjs +14 -7
- package/source/components/datatable/stylesheet/embedded-pagination.mjs +1 -1
- package/source/components/datatable/stylesheet/filter-button.mjs +1 -1
- package/source/components/datatable/stylesheet/filter.mjs +1 -1
- package/source/components/datatable/stylesheet/pagination.mjs +13 -6
- package/source/types/version.mjs +1 -1
- package/test/cases/monster.mjs +1 -1
- package/test/web/test.html +2 -2
- package/test/web/tests.js +73 -24
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"author":"schukai GmbH","dependencies":{"@floating-ui/dom":"^1.6.12","@popperjs/core":"^2.11.8"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"3.86.
|
|
1
|
+
{"author":"schukai GmbH","dependencies":{"@floating-ui/dom":"^1.6.12","@popperjs/core":"^2.11.8"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"3.86.4"}
|
|
@@ -33,18 +33,6 @@ const dataChangeEventHandlerSymbol = Symbol("dataChangeEventHandler");
|
|
|
33
33
|
/**
|
|
34
34
|
* The Datasource component is a basic class for the datatable component.
|
|
35
35
|
*
|
|
36
|
-
* <img src="./images/dom.png">
|
|
37
|
-
*
|
|
38
|
-
* Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
|
|
39
|
-
*
|
|
40
|
-
* @startuml dom.png
|
|
41
|
-
* skinparam monochrome true
|
|
42
|
-
* skinparam shadowing false
|
|
43
|
-
* HTMLElement <|-- CustomElement
|
|
44
|
-
* CustomElement <|-- Datasource
|
|
45
|
-
* Datasource <|-- Dom
|
|
46
|
-
* @enduml
|
|
47
|
-
*
|
|
48
36
|
* @copyright schukai GmbH
|
|
49
37
|
* @summary A dom datasource
|
|
50
38
|
*/
|
|
@@ -110,6 +98,9 @@ class Dom extends Datasource {
|
|
|
110
98
|
*/
|
|
111
99
|
reload() {}
|
|
112
100
|
|
|
101
|
+
/**
|
|
102
|
+
* @return {void}
|
|
103
|
+
*/
|
|
113
104
|
connectedCallback() {
|
|
114
105
|
super.connectedCallback();
|
|
115
106
|
|
|
@@ -99,36 +99,35 @@ class Rest extends Datasource {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
*/
|
|
102
|
+
* To set the options via the HTML tag, the attribute `data-monster-options` must be used.
|
|
103
|
+
* @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
|
|
104
|
+
*
|
|
105
|
+
* The individual configuration values can be found in the table.
|
|
106
|
+
*
|
|
107
|
+
* @property {Object} templates Template definitions
|
|
108
|
+
* @property {string} templates.main Main template
|
|
109
|
+
* @property {Object} features Feature definitions
|
|
110
|
+
* @property {boolean} features.autoInit If true, the component is initialized automatically
|
|
111
|
+
* @property {boolean} features.filter If true, the component is initialized automatically
|
|
112
|
+
* @property {Object} autoInit Auto init definitions
|
|
113
|
+
* @property {boolean} autoInit.intersectionObserver If true, the intersection observer is initialized automatically
|
|
114
|
+
* @property {boolean} autoInit.oneTime If true, the intersection observer is initialized only once
|
|
115
|
+
* @property {Object} filter Filter definitions
|
|
116
|
+
* @property {string} filter.id The id of the filter control
|
|
117
|
+
* @property {Object} datatable Datatable definitions
|
|
118
|
+
* @property {string} datatable.id The id of the datatable control
|
|
119
|
+
* @property {Object} response Response definitions
|
|
120
|
+
* @property {Object} response.path Path definitions (changed in 3.56.0)
|
|
121
|
+
* @property {string} response.path.message Path to the message (changed in 3.56.0)
|
|
122
|
+
* @property {Object} read Read configuration
|
|
123
|
+
* @property {string} read.url The url of the rest api
|
|
124
|
+
* @property {string} read.method The method of the rest api
|
|
125
|
+
* @property {Object} read.parameters The parameters of the rest api
|
|
126
|
+
* @property {Object} read.parameters.filter The filter of the rest api
|
|
127
|
+
* @property {Object} read.parameters.orderBy The order by of the rest api
|
|
128
|
+
* @property {Object} read.parameters.page The page of the rest api
|
|
129
|
+
* @property {Object} write Write configuration
|
|
130
|
+
*/
|
|
132
131
|
get defaults() {
|
|
133
132
|
const restOptions = new RestAPI().defaults;
|
|
134
133
|
|
|
@@ -175,7 +174,7 @@ class Rest extends Datasource {
|
|
|
175
174
|
* @param {string} page
|
|
176
175
|
* @param {string} query
|
|
177
176
|
* @param {string} orderBy
|
|
178
|
-
* @return {
|
|
177
|
+
* @return {Rest}
|
|
179
178
|
*/
|
|
180
179
|
setParameters({ page, query, orderBy }) {
|
|
181
180
|
const parameters = this.getOption("read.parameters");
|
|
@@ -88,6 +88,12 @@ export { DataTable };
|
|
|
88
88
|
*/
|
|
89
89
|
const gridElementSymbol = Symbol("gridElement");
|
|
90
90
|
|
|
91
|
+
/**
|
|
92
|
+
* @private
|
|
93
|
+
* @type {symbol}
|
|
94
|
+
*/
|
|
95
|
+
const dataControlElementSymbol = Symbol("dataControlElement");
|
|
96
|
+
|
|
91
97
|
/**
|
|
92
98
|
* @private
|
|
93
99
|
* @type {symbol}
|
|
@@ -100,6 +106,12 @@ const gridHeadersElementSymbol = Symbol("gridHeadersElement");
|
|
|
100
106
|
*/
|
|
101
107
|
const columnBarElementSymbol = Symbol("columnBarElement");
|
|
102
108
|
|
|
109
|
+
/**
|
|
110
|
+
* @private
|
|
111
|
+
* @type {symbol}
|
|
112
|
+
*/
|
|
113
|
+
const resizeObserverSymbol = Symbol("resizeObserver");
|
|
114
|
+
|
|
103
115
|
/**
|
|
104
116
|
* The DataTable component is used to show the data from a data source.
|
|
105
117
|
*
|
|
@@ -233,6 +245,30 @@ class DataTable extends CustomElement {
|
|
|
233
245
|
return "monster-datatable";
|
|
234
246
|
}
|
|
235
247
|
|
|
248
|
+
/**
|
|
249
|
+
* @return {void}
|
|
250
|
+
*/
|
|
251
|
+
disconnectedCallback() {
|
|
252
|
+
super.disconnectedCallback();
|
|
253
|
+
if (this?.[resizeObserverSymbol] instanceof ResizeObserver) {
|
|
254
|
+
this[resizeObserverSymbol].disconnect();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* @return {void}
|
|
260
|
+
*/
|
|
261
|
+
connectedCallback() {
|
|
262
|
+
const self = this;
|
|
263
|
+
super.connectedCallback();
|
|
264
|
+
|
|
265
|
+
this[resizeObserverSymbol] = new ResizeObserver((entries) => {
|
|
266
|
+
updateGrid.call(self);
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
this[resizeObserverSymbol].observe(this.parentNode);
|
|
270
|
+
}
|
|
271
|
+
|
|
236
272
|
/**
|
|
237
273
|
* @return void
|
|
238
274
|
*/
|
|
@@ -625,10 +661,6 @@ function updateConfigColumnBar() {
|
|
|
625
661
|
function initEventHandler() {
|
|
626
662
|
const self = this;
|
|
627
663
|
|
|
628
|
-
getWindow().addEventListener("resize", (event) => {
|
|
629
|
-
updateGrid.call(self);
|
|
630
|
-
});
|
|
631
|
-
|
|
632
664
|
self[columnBarElementSymbol].attachObserver(
|
|
633
665
|
new Observer((e) => {
|
|
634
666
|
updateHeaderFromColumnBar.call(self);
|
|
@@ -858,9 +890,13 @@ function updateGrid() {
|
|
|
858
890
|
if (styles !== "") sheet.replaceSync(styles);
|
|
859
891
|
this.shadowRoot.adoptedStyleSheets = [...DataTable.getCSSStyleSheet(), sheet];
|
|
860
892
|
|
|
861
|
-
const bodyWidth =
|
|
893
|
+
const bodyWidth = this.parentNode.clientWidth;
|
|
862
894
|
|
|
863
895
|
const breakpoint = this.getOption("responsive.breakpoint");
|
|
896
|
+
this[dataControlElementSymbol].classList.toggle(
|
|
897
|
+
"small",
|
|
898
|
+
bodyWidth <= breakpoint,
|
|
899
|
+
);
|
|
864
900
|
|
|
865
901
|
if (bodyWidth > breakpoint) {
|
|
866
902
|
this[gridElementSymbol].style.gridTemplateColumns =
|
|
@@ -875,7 +911,7 @@ function updateGrid() {
|
|
|
875
911
|
|
|
876
912
|
/**
|
|
877
913
|
* @private
|
|
878
|
-
* @param {
|
|
914
|
+
* @param {Header[]} headers
|
|
879
915
|
* @param {bool} doFetch
|
|
880
916
|
*/
|
|
881
917
|
function setDataSource({ orderBy }, doFetch) {
|
|
@@ -896,13 +932,17 @@ function setDataSource({ orderBy }, doFetch) {
|
|
|
896
932
|
|
|
897
933
|
/**
|
|
898
934
|
* @private
|
|
899
|
-
* @return {
|
|
935
|
+
* @return {DataTable}
|
|
900
936
|
*/
|
|
901
937
|
function initControlReferences() {
|
|
902
938
|
if (!this.shadowRoot) {
|
|
903
939
|
throw new Error("no shadow-root is defined");
|
|
904
940
|
}
|
|
905
941
|
|
|
942
|
+
this[dataControlElementSymbol] = this.shadowRoot.querySelector(
|
|
943
|
+
"[data-monster-role=control]",
|
|
944
|
+
);
|
|
945
|
+
|
|
906
946
|
this[gridElementSymbol] = this.shadowRoot.querySelector(
|
|
907
947
|
"[data-monster-role=datatable]",
|
|
908
948
|
);
|
|
@@ -20,44 +20,10 @@ import { ToggleButton } from "../host/toggle-button.mjs";
|
|
|
20
20
|
export { FilterButton };
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* <img src="./images/filter-button.png">
|
|
26
|
-
*
|
|
27
|
-
* Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
|
|
28
|
-
*
|
|
29
|
-
* You can create this control either by specifying the HTML tag <monster-filter-button />` directly in the HTML or using
|
|
30
|
-
* Javascript via the `document.createElement('monster-filter-button');` method.
|
|
31
|
-
*
|
|
32
|
-
* ```html
|
|
33
|
-
* <monster-datatable-filter-button></monster-datatable-filter-button>
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* Or you can create this CustomControl directly in Javascript:
|
|
37
|
-
*
|
|
38
|
-
* ```js
|
|
39
|
-
* import '@schukai/component-datatable/source/filter.mjs';
|
|
40
|
-
* document.createElement('monster-datatable-filter-button');
|
|
41
|
-
* ```
|
|
42
|
-
*
|
|
43
|
-
* The Body should have a class "hidden" to ensure that the styles are applied correctly.
|
|
44
|
-
*
|
|
45
|
-
* ```css
|
|
46
|
-
* body.hidden {
|
|
47
|
-
* visibility: hidden;
|
|
48
|
-
* }
|
|
49
|
-
* ```
|
|
50
|
-
*
|
|
51
|
-
* @startuml filter-button.png
|
|
52
|
-
* skinparam monochrome true
|
|
53
|
-
* skinparam shadowing false
|
|
54
|
-
* HTMLElement <|-- CustomElement
|
|
55
|
-
* CustomElement <|-- ToggleButton
|
|
56
|
-
* ToggleButton <|-- FilterButton
|
|
57
|
-
* @enduml
|
|
23
|
+
* A FilterButton is a button that can be used to show the filter.
|
|
58
24
|
*
|
|
59
25
|
* @copyright schukai GmbH
|
|
60
|
-
* @summary A
|
|
26
|
+
* @summary A Button that can be used to show the filter.
|
|
61
27
|
*/
|
|
62
28
|
class FilterButton extends ToggleButton {
|
|
63
29
|
/**
|
|
@@ -86,7 +52,6 @@ class FilterButton extends ToggleButton {
|
|
|
86
52
|
}
|
|
87
53
|
|
|
88
54
|
/**
|
|
89
|
-
*
|
|
90
55
|
* @return {string}
|
|
91
56
|
*/
|
|
92
57
|
static getTag() {
|
|
@@ -94,7 +59,7 @@ class FilterButton extends ToggleButton {
|
|
|
94
59
|
}
|
|
95
60
|
|
|
96
61
|
/**
|
|
97
|
-
* @return {
|
|
62
|
+
* @return {CSSStyleSheet[]}
|
|
98
63
|
*/
|
|
99
64
|
static getCSSStyleSheet() {
|
|
100
65
|
const styles = super.getCSSStyleSheet();
|
|
@@ -17,7 +17,8 @@ import {
|
|
|
17
17
|
CustomElement,
|
|
18
18
|
registerCustomElement,
|
|
19
19
|
} from "../../dom/customelement.mjs";
|
|
20
|
-
import { findElementWithSelectorUpwards } from "../../dom/util.mjs";
|
|
20
|
+
import { findElementWithSelectorUpwards, getWindow } from "../../dom/util.mjs";
|
|
21
|
+
import { DeadMansSwitch } from "../../util/deadmansswitch.mjs";
|
|
21
22
|
import { ThemeStyleSheet } from "../stylesheet/theme.mjs";
|
|
22
23
|
import { ATTRIBUTE_DATASOURCE_SELECTOR } from "./constants.mjs";
|
|
23
24
|
import { Datasource } from "./datasource.mjs";
|
|
@@ -51,6 +52,24 @@ const paginationElementSymbol = Symbol.for("paginationElement");
|
|
|
51
52
|
*/
|
|
52
53
|
const datasourceLinkedElementSymbol = Symbol("datasourceLinkedElement");
|
|
53
54
|
|
|
55
|
+
/**
|
|
56
|
+
* @private
|
|
57
|
+
* @type {symbol}
|
|
58
|
+
*/
|
|
59
|
+
const resizeObserverSymbol = Symbol("resizeObserver");
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @private
|
|
63
|
+
* @type {symbol}
|
|
64
|
+
*/
|
|
65
|
+
const sizeDataSymbol = Symbol("sizeData");
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @private
|
|
69
|
+
* @type {symbol}
|
|
70
|
+
*/
|
|
71
|
+
const debounceSizeSymbol = Symbol("debounceSize");
|
|
72
|
+
|
|
54
73
|
/**
|
|
55
74
|
* The Pagination component
|
|
56
75
|
*
|
|
@@ -148,6 +167,81 @@ class Pagination extends CustomElement {
|
|
|
148
167
|
return "monster-pagination";
|
|
149
168
|
}
|
|
150
169
|
|
|
170
|
+
/**
|
|
171
|
+
* @return {void}
|
|
172
|
+
*/
|
|
173
|
+
disconnectedCallback() {
|
|
174
|
+
super.disconnectedCallback();
|
|
175
|
+
if (this?.[resizeObserverSymbol] instanceof ResizeObserver) {
|
|
176
|
+
this[resizeObserverSymbol].disconnect();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @return {void}
|
|
182
|
+
*/
|
|
183
|
+
connectedCallback() {
|
|
184
|
+
const self = this;
|
|
185
|
+
super.connectedCallback();
|
|
186
|
+
|
|
187
|
+
const parentNode = this.parentNode;
|
|
188
|
+
if (!parentNode) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const parentParentNode = parentNode?.parentNode || parentNode;
|
|
193
|
+
|
|
194
|
+
const parentWidth = parentParentNode.clientWidth;
|
|
195
|
+
const ownWidth = this.clientWidth;
|
|
196
|
+
|
|
197
|
+
this[sizeDataSymbol] = {
|
|
198
|
+
last: {
|
|
199
|
+
parentWidth: parentParentNode.clientWidth || 0,
|
|
200
|
+
ownWidth: this.clientWidth || 0,
|
|
201
|
+
},
|
|
202
|
+
showNumbers: ownWidth < parentWidth,
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
handleDataSourceChanges.call(this);
|
|
206
|
+
|
|
207
|
+
setTimeout(() => {
|
|
208
|
+
this[resizeObserverSymbol] = new ResizeObserver((entries) => {
|
|
209
|
+
if (this[debounceSizeSymbol] instanceof DeadMansSwitch) {
|
|
210
|
+
try {
|
|
211
|
+
this[debounceSizeSymbol].touch();
|
|
212
|
+
return;
|
|
213
|
+
} catch (e) {
|
|
214
|
+
delete this[debounceSizeSymbol];
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
this[debounceSizeSymbol] = new DeadMansSwitch(400, () => {
|
|
219
|
+
queueMicrotask(() => {
|
|
220
|
+
const parentWidth = parentParentNode.clientWidth;
|
|
221
|
+
const ownWidth = this.clientWidth;
|
|
222
|
+
|
|
223
|
+
if (
|
|
224
|
+
this[sizeDataSymbol]?.last?.parentWidth === parentWidth &&
|
|
225
|
+
this[sizeDataSymbol]?.last?.ownWidth === ownWidth
|
|
226
|
+
) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
this[sizeDataSymbol].last = {
|
|
231
|
+
parentWidth: parentWidth,
|
|
232
|
+
ownWidth: ownWidth,
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
this[sizeDataSymbol].showNumbers = ownWidth < parentWidth;
|
|
236
|
+
handleDataSourceChanges.call(this);
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
this[resizeObserverSymbol].observe(this?.parentNode?.parentNode);
|
|
242
|
+
}, 500);
|
|
243
|
+
}
|
|
244
|
+
|
|
151
245
|
/**
|
|
152
246
|
* @return {void}
|
|
153
247
|
*/
|
|
@@ -173,6 +267,7 @@ class Pagination extends CustomElement {
|
|
|
173
267
|
element.datasource.attachObserver(
|
|
174
268
|
new Observer(handleDataSourceChanges.bind(this)),
|
|
175
269
|
);
|
|
270
|
+
|
|
176
271
|
handleDataSourceChanges.call(this);
|
|
177
272
|
}
|
|
178
273
|
}
|
|
@@ -244,6 +339,10 @@ function initEventHandler() {
|
|
|
244
339
|
}
|
|
245
340
|
}
|
|
246
341
|
|
|
342
|
+
if (!(element instanceof HTMLElement)) {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
|
|
247
346
|
let page = null;
|
|
248
347
|
|
|
249
348
|
if (!element.hasAttribute("data-page-no")) {
|
|
@@ -264,7 +363,17 @@ function initEventHandler() {
|
|
|
264
363
|
return;
|
|
265
364
|
}
|
|
266
365
|
|
|
267
|
-
datasource.setParameters
|
|
366
|
+
if (typeof datasource.setParameters !== "function") {
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
datasource.setParameters({ page });
|
|
371
|
+
|
|
372
|
+
if (typeof datasource.reload !== "function") {
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
datasource.reload();
|
|
268
377
|
});
|
|
269
378
|
}
|
|
270
379
|
|
|
@@ -320,11 +429,18 @@ function handleDataSourceChanges() {
|
|
|
320
429
|
this.getOption("currentPage"),
|
|
321
430
|
this.getOption("pages"),
|
|
322
431
|
);
|
|
323
|
-
|
|
432
|
+
|
|
433
|
+
if (this?.[sizeDataSymbol]?.showNumbers !== true) {
|
|
434
|
+
pagination.items = [];
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
getWindow().requestAnimationFrame(() => {
|
|
438
|
+
this.setOption("pagination", pagination);
|
|
439
|
+
});
|
|
324
440
|
}
|
|
325
441
|
|
|
326
442
|
/**
|
|
327
|
-
*
|
|
443
|
+
* @private
|
|
328
444
|
* @param current
|
|
329
445
|
* @param max
|
|
330
446
|
* @return {object}
|
|
@@ -436,17 +552,19 @@ function getTemplate() {
|
|
|
436
552
|
<nav data-monster-role="pagination" role="navigation" aria-label="pagination">
|
|
437
553
|
<ul class="pagination-list" data-monster-insert="items path:pagination.items"
|
|
438
554
|
data-monster-select-this="true">
|
|
439
|
-
<li part="pagination-prev"
|
|
440
|
-
|
|
555
|
+
<li part="pagination-prev" data-monster-role="pagination-prev"><a
|
|
556
|
+
data-monster-role="pagination-prev"
|
|
557
|
+
data-monster-attributes="
|
|
441
558
|
class path:pagination.prevClass | prefix: previous,
|
|
442
559
|
data-page-no path:pagination.prevNo,
|
|
443
560
|
href path:pagination.prevHref | prefix: #"
|
|
444
|
-
|
|
445
|
-
<li part="pagination-next"
|
|
446
|
-
|
|
561
|
+
data-monster-replace="path:labels.previous">Previous</a></li>
|
|
562
|
+
<li part="pagination-next" data-monster-role="pagination-next"><a
|
|
563
|
+
data-monster-role="pagination-next"
|
|
564
|
+
data-monster-attributes="class path:pagination.nextClass | prefix: next,
|
|
447
565
|
data-page-no path:pagination.nextNo,
|
|
448
566
|
href path:pagination.nextHref | prefix: #"
|
|
449
|
-
|
|
567
|
+
data-monster-replace="path:labels.next">Next</a></li>
|
|
450
568
|
</ul>
|
|
451
569
|
</nav>
|
|
452
570
|
</div>
|
|
@@ -18,12 +18,6 @@
|
|
|
18
18
|
@import "../../style/theme.pcss";
|
|
19
19
|
@import "../../style/skeleton.pcss";
|
|
20
20
|
|
|
21
|
-
[data-monster-role="control"] {
|
|
22
|
-
container-type: inline-size ;
|
|
23
|
-
container-name: datatable;
|
|
24
|
-
@mixin text;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
21
|
::slotted(monster-collapse) {
|
|
28
22
|
--monster-color-gradient-1: none;
|
|
29
23
|
--monster-color-gradient-2: none;
|
|
@@ -252,15 +246,14 @@ monster-state[data-monster-role=empty-without-action]::part(action) {
|
|
|
252
246
|
padding: var(--monster-space-7) 0;
|
|
253
247
|
}
|
|
254
248
|
|
|
255
|
-
|
|
256
|
-
@container datatable (max-width: 900px) {
|
|
249
|
+
[data-monster-role="control"].small {
|
|
257
250
|
|
|
258
251
|
|
|
259
|
-
[data-monster-role="datatable-headers"] {
|
|
252
|
+
& [data-monster-role="datatable-headers"] {
|
|
260
253
|
display: none;
|
|
261
254
|
}
|
|
262
255
|
|
|
263
|
-
[data-monster-role="table-container"] {
|
|
256
|
+
& [data-monster-role="table-container"] {
|
|
264
257
|
|
|
265
258
|
& .bar {
|
|
266
259
|
display: flex;
|
|
@@ -285,7 +278,7 @@ monster-state[data-monster-role=empty-without-action]::part(action) {
|
|
|
285
278
|
}
|
|
286
279
|
}
|
|
287
280
|
|
|
288
|
-
::slotted(.monster-button-group) {
|
|
281
|
+
& ::slotted(.monster-button-group) {
|
|
289
282
|
display: flex;
|
|
290
283
|
flex-direction: column !important;
|
|
291
284
|
}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
@import "../../style/control.pcss";
|
|
8
8
|
@import "../../style/property.pcss";
|
|
9
9
|
|
|
10
|
+
|
|
11
|
+
|
|
10
12
|
[data-monster-role=pagination] {
|
|
11
13
|
@mixin text;
|
|
12
14
|
display: flex;
|
|
@@ -15,21 +17,27 @@
|
|
|
15
17
|
|
|
16
18
|
& ul {
|
|
17
19
|
display: flex;
|
|
18
|
-
flex-wrap:
|
|
20
|
+
flex-wrap: nowrap;
|
|
19
21
|
justify-content: center;
|
|
20
22
|
align-items: center;
|
|
21
23
|
list-style: none;
|
|
22
24
|
|
|
23
25
|
padding-left: 0;
|
|
24
26
|
margin: 20px 0;
|
|
27
|
+
|
|
25
28
|
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
& ul li {
|
|
29
32
|
|
|
30
33
|
margin: 0;
|
|
31
|
-
border-left: solid 1px
|
|
34
|
+
border-left: solid 1px var(--monster-theme-control-border-color);
|
|
32
35
|
padding: 0 10px;
|
|
36
|
+
|
|
37
|
+
display: flex;
|
|
38
|
+
align-items: center;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
|
|
33
41
|
|
|
34
42
|
& a, & a:link, & a:visited, & a:hover, & a:active, & a:focus {
|
|
35
43
|
width: max-content;
|
|
@@ -73,7 +81,7 @@
|
|
|
73
81
|
}
|
|
74
82
|
}
|
|
75
83
|
|
|
76
|
-
@mixin viewport-7 {
|
|
84
|
+
@mixin viewport-7 {
|
|
77
85
|
|
|
78
86
|
& ul li {
|
|
79
87
|
padding: 0 2px;
|
|
@@ -92,67 +100,14 @@
|
|
|
92
100
|
}
|
|
93
101
|
|
|
94
102
|
}
|
|
95
|
-
/*
|
|
96
|
-
& [data-monster-error-state=hidden] {
|
|
97
|
-
display: none;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
& [data-monster-loading-state=hidden] {
|
|
101
|
-
display: none;
|
|
102
|
-
}
|
|
103
|
-
*/
|
|
104
|
-
/** & .pagination-loading-state {
|
|
105
|
-
align-items: center;
|
|
106
|
-
display: flex;
|
|
107
103
|
|
|
108
|
-
&.hidden {
|
|
109
|
-
display: none;
|
|
110
|
-
}
|
|
111
104
|
|
|
112
|
-
|
|
105
|
+
}
|
|
113
106
|
|
|
114
|
-
& .pagination-error-state {
|
|
115
|
-
align-items: center;
|
|
116
|
-
display: flex;
|
|
117
107
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
width:2em;
|
|
123
|
-
height:2em;
|
|
124
|
-
margin:0 5px 0 2px;
|
|
108
|
+
@container (min-width: 800px) {
|
|
109
|
+
[data-monster-role=pagination] {
|
|
110
|
+
background-color: red;
|
|
111
|
+
color: red;
|
|
125
112
|
}
|
|
126
|
-
}*/
|
|
127
|
-
/*
|
|
128
|
-
& .pagination-state {
|
|
129
|
-
display: flex !important;
|
|
130
|
-
flex-wrap: nowrap;
|
|
131
|
-
flex-direction: row;
|
|
132
|
-
align-items: center;
|
|
133
|
-
justify-content: center;
|
|
134
|
-
|
|
135
|
-
& [data-monster-error-state] {
|
|
136
|
-
width:2em;
|
|
137
|
-
height:2em;
|
|
138
|
-
margin:0 5px 0 2px;
|
|
139
|
-
|
|
140
|
-
display: flex;
|
|
141
|
-
align-items: center;
|
|
142
|
-
justify-content: center;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
& [data-monster-loading-state] {
|
|
146
|
-
width:2em;
|
|
147
|
-
height:2em;
|
|
148
|
-
margin:0 5px 0 2px;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}*/
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
113
|
}
|
|
158
|
-
|