@schukai/monster 3.73.9 → 3.75.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/CHANGELOG.md +27 -0
- package/package.json +1 -1
- package/source/components/datatable/change-button.mjs +4 -4
- package/source/components/datatable/columnbar.mjs +2 -2
- package/source/components/datatable/dataset.mjs +2 -2
- package/source/components/datatable/datasource/rest.mjs +8 -8
- package/source/components/datatable/datatable.mjs +6 -6
- package/source/components/datatable/filter/date-range.mjs +6 -6
- package/source/components/datatable/filter/range.mjs +4 -4
- package/source/components/datatable/filter.mjs +4 -4
- package/source/components/datatable/save-button.mjs +4 -4
- package/source/components/datatable/util.mjs +2 -2
- package/source/components/form/api-button.mjs +0 -1
- package/source/components/form/context-error.mjs +0 -1
- package/source/components/form/context-help.mjs +0 -1
- package/source/components/form/message-state-button.mjs +0 -1
- package/source/components/form/popper-button.mjs +0 -1
- package/source/components/form/select.mjs +16 -5
- package/source/components/form/toggle-switch.mjs +0 -3
- package/source/components/form/tree-select.mjs +0 -1
- package/source/components/layout/slider.mjs +649 -0
- package/source/components/layout/style/slider.pcss +114 -0
- package/source/components/layout/stylesheet/slider.mjs +38 -0
- package/source/components/navigation/table-of-content.mjs +0 -1
- package/source/components/tree-menu/dragable-tree-menu.mjs +4 -4
- package/source/components/tree-menu/tree-menu.mjs +6 -6
- package/source/data/datasource/server/restapi.mjs +0 -1
- package/source/dom/events.mjs +1 -1
- package/source/dom/updater.mjs +767 -772
- package/source/monster.mjs +11 -3
- package/source/types/observer.mjs +7 -8
- 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 +243 -202
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
## [3.75.0] - 2024-09-23
|
|
6
|
+
|
|
7
|
+
### Add Features
|
|
8
|
+
|
|
9
|
+
- marker for select filter [#240](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/240)
|
|
10
|
+
### Changes
|
|
11
|
+
|
|
12
|
+
- remove unused files
|
|
13
|
+
- run webtests
|
|
14
|
+
- new development cert
|
|
15
|
+
### Documentation
|
|
16
|
+
|
|
17
|
+
- fix some small issues
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## [3.74.0] - 2024-09-18
|
|
22
|
+
|
|
23
|
+
### Add Features
|
|
24
|
+
|
|
25
|
+
- new slider [#237](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/237)
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
- performance tweak [#235](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/235)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
5
32
|
## [3.73.9] - 2024-09-15
|
|
6
33
|
|
|
7
34
|
### Bug Fixes
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"author":"schukai GmbH","dependencies":{"@floating-ui/dom":"^1.6.11","@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.
|
|
1
|
+
{"author":"schukai GmbH","dependencies":{"@floating-ui/dom":"^1.6.11","@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.75.0"}
|
|
@@ -222,7 +222,7 @@ function initControlReferences() {
|
|
|
222
222
|
);
|
|
223
223
|
|
|
224
224
|
if (this[stateButtonElementSymbol]) {
|
|
225
|
-
|
|
225
|
+
queueMicrotask(() => {
|
|
226
226
|
const states = {
|
|
227
227
|
changed: new State(
|
|
228
228
|
"changed",
|
|
@@ -239,7 +239,7 @@ function initControlReferences() {
|
|
|
239
239
|
"labels.button",
|
|
240
240
|
this.getOption("labels.button"),
|
|
241
241
|
);
|
|
242
|
-
}
|
|
242
|
+
});
|
|
243
243
|
}
|
|
244
244
|
|
|
245
245
|
return this;
|
|
@@ -278,7 +278,7 @@ function getIndex() {
|
|
|
278
278
|
* @private
|
|
279
279
|
*/
|
|
280
280
|
function initEventHandler() {
|
|
281
|
-
|
|
281
|
+
queueMicrotask(() => {
|
|
282
282
|
this[stateButtonElementSymbol].setOption("actions.click", () => {
|
|
283
283
|
const index = getIndex.call(this);
|
|
284
284
|
|
|
@@ -287,7 +287,7 @@ function initEventHandler() {
|
|
|
287
287
|
this[overlayLinkedElementSymbol].open();
|
|
288
288
|
}
|
|
289
289
|
});
|
|
290
|
-
}
|
|
290
|
+
});
|
|
291
291
|
}
|
|
292
292
|
|
|
293
293
|
/**
|
|
@@ -249,12 +249,12 @@ function initEventHandler() {
|
|
|
249
249
|
if (self[settingsLayerElementSymbol].classList.contains("visible")) {
|
|
250
250
|
self[popperInstanceSymbol].update();
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
queueMicrotask(() => {
|
|
253
253
|
document.body.addEventListener(
|
|
254
254
|
"click",
|
|
255
255
|
self[settingsButtonEventHandlerSymbol],
|
|
256
256
|
);
|
|
257
|
-
}
|
|
257
|
+
});
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
});
|
|
@@ -198,7 +198,7 @@ class DataSet extends CustomElement {
|
|
|
198
198
|
return;
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
|
|
201
|
+
queueMicrotask(() => {
|
|
202
202
|
const path = this.getOption("mapping.data");
|
|
203
203
|
const index = this.getOption("mapping.index");
|
|
204
204
|
|
|
@@ -224,7 +224,7 @@ class DataSet extends CustomElement {
|
|
|
224
224
|
this[datasourceLinkedElementSymbol].data = ref;
|
|
225
225
|
|
|
226
226
|
resolve();
|
|
227
|
-
}
|
|
227
|
+
});
|
|
228
228
|
});
|
|
229
229
|
}
|
|
230
230
|
|
|
@@ -234,7 +234,7 @@ class Rest extends Datasource {
|
|
|
234
234
|
datasource: this,
|
|
235
235
|
});
|
|
236
236
|
|
|
237
|
-
|
|
237
|
+
queueMicrotask(() => {
|
|
238
238
|
this[dataSourceSymbol]
|
|
239
239
|
.read()
|
|
240
240
|
.then((response) => {
|
|
@@ -252,7 +252,7 @@ class Rest extends Datasource {
|
|
|
252
252
|
addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, error.toString());
|
|
253
253
|
reject(error);
|
|
254
254
|
});
|
|
255
|
-
}
|
|
255
|
+
});
|
|
256
256
|
});
|
|
257
257
|
}
|
|
258
258
|
|
|
@@ -289,11 +289,11 @@ class Rest extends Datasource {
|
|
|
289
289
|
connectedCallback() {
|
|
290
290
|
super.connectedCallback();
|
|
291
291
|
|
|
292
|
-
|
|
292
|
+
queueMicrotask(() => {
|
|
293
293
|
if (this.getOption("features.filter", false) === true) {
|
|
294
294
|
initFilter.call(this);
|
|
295
295
|
}
|
|
296
|
-
}
|
|
296
|
+
});
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
/**
|
|
@@ -335,7 +335,7 @@ class Rest extends Datasource {
|
|
|
335
335
|
datasource: this,
|
|
336
336
|
});
|
|
337
337
|
|
|
338
|
-
|
|
338
|
+
queueMicrotask(() => {
|
|
339
339
|
this[dataSourceSymbol]
|
|
340
340
|
.write()
|
|
341
341
|
.then((response) => {
|
|
@@ -353,7 +353,7 @@ class Rest extends Datasource {
|
|
|
353
353
|
addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, error.toString());
|
|
354
354
|
reject(error);
|
|
355
355
|
});
|
|
356
|
-
}
|
|
356
|
+
});
|
|
357
357
|
});
|
|
358
358
|
}
|
|
359
359
|
}
|
|
@@ -492,9 +492,9 @@ function initAutoInit() {
|
|
|
492
492
|
return;
|
|
493
493
|
}
|
|
494
494
|
|
|
495
|
-
|
|
495
|
+
queueMicrotask(() => {
|
|
496
496
|
this.fetch().catch(() => {});
|
|
497
|
-
}
|
|
497
|
+
});
|
|
498
498
|
}
|
|
499
499
|
|
|
500
500
|
function initEventHandler() {
|
|
@@ -290,12 +290,12 @@ class DataTable extends CustomElement {
|
|
|
290
290
|
|
|
291
291
|
this[datasourceLinkedElementSymbol] = element;
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
queueMicrotask(() => {
|
|
294
294
|
handleDataSourceChanges.call(this);
|
|
295
295
|
element.datasource.attachObserver(
|
|
296
296
|
new Observer(handleDataSourceChanges.bind(this)),
|
|
297
297
|
);
|
|
298
|
-
}
|
|
298
|
+
});
|
|
299
299
|
}
|
|
300
300
|
|
|
301
301
|
getHostConfig
|
|
@@ -658,7 +658,7 @@ function initEventHandler() {
|
|
|
658
658
|
|
|
659
659
|
headers[index].changeDirection();
|
|
660
660
|
|
|
661
|
-
|
|
661
|
+
queueMicrotask(function () {
|
|
662
662
|
/** hotfix, normally this should be done via the updater, no idea why this is not possible. */
|
|
663
663
|
element.setAttribute(
|
|
664
664
|
ATTRIBUTE_DATATABLE_SORTABLE,
|
|
@@ -666,7 +666,7 @@ function initEventHandler() {
|
|
|
666
666
|
);
|
|
667
667
|
|
|
668
668
|
storeOrderStatement.call(self, true);
|
|
669
|
-
}
|
|
669
|
+
});
|
|
670
670
|
}
|
|
671
671
|
});
|
|
672
672
|
}
|
|
@@ -797,9 +797,9 @@ function initGridAndStructs(hostConfig, headerOrderMap) {
|
|
|
797
797
|
}
|
|
798
798
|
|
|
799
799
|
this.setOption("headers", headers);
|
|
800
|
-
|
|
800
|
+
queueMicrotask(() => {
|
|
801
801
|
storeOrderStatement.call(this, this.getOption("features.autoInit"));
|
|
802
|
-
}
|
|
802
|
+
});
|
|
803
803
|
}
|
|
804
804
|
|
|
805
805
|
/**
|
|
@@ -480,9 +480,9 @@ function initEventHandler() {
|
|
|
480
480
|
|
|
481
481
|
// change the input value if the user change the value of the radio button
|
|
482
482
|
this[inputElementSymbol].addEventListener("change", (event) => {
|
|
483
|
-
|
|
483
|
+
queueMicrotask(() => {
|
|
484
484
|
updatePopperInputsFromMainValue.call(this);
|
|
485
|
-
}
|
|
485
|
+
});
|
|
486
486
|
});
|
|
487
487
|
|
|
488
488
|
// if the user change the value of on of the input fields, we should update the value of the input field
|
|
@@ -514,9 +514,9 @@ function initEventHandler() {
|
|
|
514
514
|
if (event.key === "Escape") {
|
|
515
515
|
hide.call(this);
|
|
516
516
|
|
|
517
|
-
|
|
517
|
+
queueMicrotask(() => {
|
|
518
518
|
this[inputElementSymbol].focus();
|
|
519
|
-
}
|
|
519
|
+
});
|
|
520
520
|
|
|
521
521
|
return;
|
|
522
522
|
}
|
|
@@ -600,10 +600,10 @@ function show() {
|
|
|
600
600
|
clearAndDisableFormGroups.call(this);
|
|
601
601
|
}
|
|
602
602
|
|
|
603
|
-
|
|
603
|
+
queueMicrotask(() => {
|
|
604
604
|
updatePopperInputsFromMainValue.call(this);
|
|
605
605
|
updatePopper.call(this);
|
|
606
|
-
}
|
|
606
|
+
});
|
|
607
607
|
}
|
|
608
608
|
|
|
609
609
|
/**
|
|
@@ -412,9 +412,9 @@ function initEventHandler() {
|
|
|
412
412
|
// if key code esc than hide dialog
|
|
413
413
|
if (event.key === "Escape") {
|
|
414
414
|
hide.call(this);
|
|
415
|
-
|
|
415
|
+
queueMicrotask(() => {
|
|
416
416
|
this[inputElementSymbol].focus();
|
|
417
|
-
}
|
|
417
|
+
});
|
|
418
418
|
|
|
419
419
|
return;
|
|
420
420
|
}
|
|
@@ -438,7 +438,7 @@ function initEventHandler() {
|
|
|
438
438
|
if (radio) {
|
|
439
439
|
radio.checked = true;
|
|
440
440
|
}
|
|
441
|
-
|
|
441
|
+
queueMicrotask(() => {
|
|
442
442
|
// focus the input field
|
|
443
443
|
const input = this[formContainerElementSymbol].querySelector(
|
|
444
444
|
"input[type=radio][value=single] ~ input[name=singleValue]",
|
|
@@ -446,7 +446,7 @@ function initEventHandler() {
|
|
|
446
446
|
if (input) {
|
|
447
447
|
input.focus();
|
|
448
448
|
}
|
|
449
|
-
}
|
|
449
|
+
});
|
|
450
450
|
}
|
|
451
451
|
});
|
|
452
452
|
|
|
@@ -386,14 +386,14 @@ function initControlReferences() {
|
|
|
386
386
|
}
|
|
387
387
|
|
|
388
388
|
function updateFilterSelections() {
|
|
389
|
-
|
|
389
|
+
queueMicrotask(() => {
|
|
390
390
|
const options = this[settingsSymbol].getOptions();
|
|
391
391
|
this[filterSelectElementSymbol].setOption("options", options);
|
|
392
|
-
|
|
392
|
+
queueMicrotask(() => {
|
|
393
393
|
this[filterSelectElementSymbol].value =
|
|
394
394
|
this[settingsSymbol].getSelected();
|
|
395
|
-
}
|
|
396
|
-
}
|
|
395
|
+
});
|
|
396
|
+
});
|
|
397
397
|
}
|
|
398
398
|
|
|
399
399
|
/**
|
|
@@ -260,7 +260,7 @@ function initControlReferences() {
|
|
|
260
260
|
);
|
|
261
261
|
|
|
262
262
|
if (this[stateButtonElementSymbol]) {
|
|
263
|
-
|
|
263
|
+
queueMicrotask(() => {
|
|
264
264
|
const states = {
|
|
265
265
|
changed: new State(
|
|
266
266
|
"changed",
|
|
@@ -278,7 +278,7 @@ function initControlReferences() {
|
|
|
278
278
|
"labels.button",
|
|
279
279
|
this.getOption("labels.button"),
|
|
280
280
|
);
|
|
281
|
-
}
|
|
281
|
+
});
|
|
282
282
|
}
|
|
283
283
|
|
|
284
284
|
return this;
|
|
@@ -288,7 +288,7 @@ function initControlReferences() {
|
|
|
288
288
|
* @private
|
|
289
289
|
*/
|
|
290
290
|
function initEventHandler() {
|
|
291
|
-
|
|
291
|
+
queueMicrotask(() => {
|
|
292
292
|
this[stateButtonElementSymbol].setOption("actions.click", () => {
|
|
293
293
|
this[datasourceLinkedElementSymbol]
|
|
294
294
|
.write()
|
|
@@ -308,7 +308,7 @@ function initEventHandler() {
|
|
|
308
308
|
addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, error.toString());
|
|
309
309
|
});
|
|
310
310
|
});
|
|
311
|
-
}
|
|
311
|
+
});
|
|
312
312
|
}
|
|
313
313
|
|
|
314
314
|
/**
|
|
@@ -277,7 +277,6 @@ const FILTER_POSITION_INLINE = "inline";
|
|
|
277
277
|
* @example /examples/components/form/select-simple
|
|
278
278
|
* @example /examples/components/form/select-with-options
|
|
279
279
|
*
|
|
280
|
-
* @since 1.0.0
|
|
281
280
|
* @copyright schukai GmbH
|
|
282
281
|
* @summary A beautiful select control that can make your life easier and also looks good.
|
|
283
282
|
* @fires monster-options-set
|
|
@@ -297,7 +296,6 @@ class Select extends CustomControl {
|
|
|
297
296
|
/**
|
|
298
297
|
* This method is called by the `instanceof` operator.
|
|
299
298
|
* @returns {Symbol}
|
|
300
|
-
* @since 2.1.0
|
|
301
299
|
*/
|
|
302
300
|
static get [instanceSymbol]() {
|
|
303
301
|
return Symbol.for("@schukai/monster/components/form/select@@instance");
|
|
@@ -336,7 +334,6 @@ class Select extends CustomControl {
|
|
|
336
334
|
* ```
|
|
337
335
|
*
|
|
338
336
|
* @property {string|array} value
|
|
339
|
-
* @since 1.2.0
|
|
340
337
|
* @throws {Error} unsupported type
|
|
341
338
|
*/
|
|
342
339
|
set value(value) {
|
|
@@ -458,6 +455,10 @@ class Select extends CustomControl {
|
|
|
458
455
|
defaultValue: "*",
|
|
459
456
|
mode: FILTER_MODE_DISABLED,
|
|
460
457
|
position: FILTER_POSITION_INLINE,
|
|
458
|
+
marker: {
|
|
459
|
+
open: "{",
|
|
460
|
+
close: "}",
|
|
461
|
+
},
|
|
461
462
|
},
|
|
462
463
|
classes: {
|
|
463
464
|
badge: "monster-badge-primary",
|
|
@@ -721,7 +722,6 @@ class Select extends CustomControl {
|
|
|
721
722
|
* Import Select Options from dataset
|
|
722
723
|
* Not to be confused with the control defaults/options
|
|
723
724
|
*
|
|
724
|
-
* @since 0.16.0
|
|
725
725
|
* @param {array|object|Map|Set} data
|
|
726
726
|
* @return {Select}
|
|
727
727
|
* @throws {Error} map is not iterable
|
|
@@ -1473,7 +1473,18 @@ function filterFromRemote() {
|
|
|
1473
1473
|
);
|
|
1474
1474
|
let url = optionUrl;
|
|
1475
1475
|
if (filterValue.length > 0) {
|
|
1476
|
-
|
|
1476
|
+
const formatter = new Formatter({ filter: filterValue });
|
|
1477
|
+
const openMarker = this.getOption("formatter.marker.open");
|
|
1478
|
+
let closeMarker = this.getOption("formatter.marker.close");
|
|
1479
|
+
if (!closeMarker) {
|
|
1480
|
+
closeMarker = openMarker;
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
if (openMarker && closeMarker) {
|
|
1484
|
+
formatter.setMarker(openMarker, closeMarker);
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
url = formatter.format(optionUrl);
|
|
1477
1488
|
}
|
|
1478
1489
|
|
|
1479
1490
|
this.fetch(url)
|
|
@@ -105,8 +105,6 @@ class ToggleSwitch extends CustomControl {
|
|
|
105
105
|
* @property {string} actions.off=specifies the action for the off state.
|
|
106
106
|
* @property {Object} templates
|
|
107
107
|
* @property {string} templates.main=specifies the main template used by the control.
|
|
108
|
-
*
|
|
109
|
-
* @since 3.57.0
|
|
110
108
|
*/
|
|
111
109
|
get defaults() {
|
|
112
110
|
return Object.assign({}, super.defaults, {
|
|
@@ -317,7 +315,6 @@ class ToggleSwitch extends CustomControl {
|
|
|
317
315
|
/**
|
|
318
316
|
* This method is called by the `instanceof` operator.
|
|
319
317
|
* @returns {symbol}
|
|
320
|
-
* @since 2.1.0
|
|
321
318
|
*/
|
|
322
319
|
static get [instanceSymbol]() {
|
|
323
320
|
return Symbol.for(
|
|
@@ -133,7 +133,6 @@ class TreeSelect extends Select {
|
|
|
133
133
|
* Import Select Options from dataset
|
|
134
134
|
* Not to be confused with the control defaults/options
|
|
135
135
|
*
|
|
136
|
-
* @since 0.16.0
|
|
137
136
|
* @param {array|object|Map|Set} data
|
|
138
137
|
* @return {Select}
|
|
139
138
|
* @throws {Error} map is not iterable
|