@schukai/monster 3.64.0 → 3.65.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 +32 -0
- package/example/components/form/button.mjs +1 -1
- package/example/components/form/field-set.mjs +4 -0
- package/example/components/form/select.mjs +1 -1
- package/package.json +2 -1
- package/source/components/datatable/datatable/header.mjs +228 -221
- package/source/components/datatable/style/dataset.pcss +1 -0
- package/source/components/datatable/style/datatable.pcss +1 -0
- package/source/components/datatable/stylesheet/change-button.mjs +8 -4
- package/source/components/datatable/stylesheet/column-bar.mjs +8 -4
- package/source/components/datatable/stylesheet/dataset.mjs +9 -5
- package/source/components/datatable/stylesheet/datasource.mjs +8 -4
- package/source/components/datatable/stylesheet/datatable.mjs +9 -5
- package/source/components/datatable/stylesheet/embedded-pagination.mjs +8 -4
- package/source/components/datatable/stylesheet/filter-button.mjs +8 -4
- package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +8 -4
- package/source/components/datatable/stylesheet/filter-date-range.mjs +8 -4
- package/source/components/datatable/stylesheet/filter-range.mjs +8 -4
- package/source/components/datatable/stylesheet/filter.mjs +8 -4
- package/source/components/datatable/stylesheet/pagination.mjs +8 -4
- package/source/components/datatable/stylesheet/save-button.mjs +8 -4
- package/source/components/datatable/stylesheet/select-filter.mjs +8 -4
- package/source/components/datatable/stylesheet/status.mjs +8 -4
- package/source/components/form/button.mjs +263 -281
- package/source/components/form/field-set.mjs +300 -0
- package/source/components/form/popper.mjs +13 -480
- package/source/components/form/style/field-set.pcss +13 -0
- package/source/components/form/stylesheet/action-button.mjs +8 -4
- package/source/components/form/stylesheet/api-button.mjs +8 -4
- package/source/components/form/stylesheet/button-bar.mjs +9 -5
- package/source/components/form/stylesheet/button.mjs +8 -4
- package/source/components/form/stylesheet/confirm-button.mjs +9 -5
- package/source/components/form/stylesheet/context-error.mjs +8 -4
- package/source/components/form/stylesheet/context-help.mjs +8 -4
- package/source/components/form/stylesheet/field-set.mjs +31 -0
- package/source/components/form/stylesheet/form.mjs +9 -5
- package/source/components/form/stylesheet/message-state-button.mjs +8 -4
- package/source/components/form/stylesheet/popper-button.mjs +8 -4
- package/source/components/form/stylesheet/select.mjs +8 -4
- package/source/components/form/stylesheet/state-button.mjs +8 -4
- package/source/components/form/stylesheet/toggle-switch.mjs +8 -4
- package/source/components/form/stylesheet/tree-select.mjs +8 -4
- package/source/components/host/collapse.mjs +14 -516
- package/source/components/host/config-manager.mjs +9 -2
- package/source/components/host/constants.mjs +9 -4
- package/source/components/host/details.mjs +14 -253
- package/source/components/host/stylesheet/call-button.mjs +8 -4
- package/source/components/host/stylesheet/config-manager.mjs +8 -4
- package/source/components/host/stylesheet/host.mjs +9 -5
- package/source/components/host/stylesheet/overlay.mjs +9 -5
- package/source/components/host/stylesheet/toggle-button.mjs +8 -4
- package/source/components/host/stylesheet/viewer.mjs +8 -4
- package/source/components/layout/collapse.mjs +542 -0
- package/source/components/layout/details.mjs +271 -0
- package/source/components/layout/panel.mjs +6 -0
- package/source/components/layout/popper.mjs +476 -0
- package/source/components/{host → layout}/stylesheet/collapse.mjs +8 -4
- package/source/components/{host → layout}/stylesheet/details.mjs +8 -4
- package/source/components/layout/stylesheet/panel.mjs +8 -4
- package/source/components/{form → layout}/stylesheet/popper.mjs +8 -4
- package/source/components/layout/stylesheet/split-panel.mjs +8 -4
- package/source/components/layout/stylesheet/tabs.mjs +8 -4
- package/source/components/layout/stylesheet/width-toggle.mjs +8 -4
- package/source/components/layout/tabs.mjs +3 -3
- package/source/components/layout/width-toggle.mjs +3 -3
- package/source/components/navigation/style/table-of-content.pcss +84 -0
- package/source/components/navigation/stylesheet/table-of-content.mjs +31 -0
- package/source/components/navigation/table-of-content.mjs +418 -0
- package/source/components/notify/stylesheet/message.mjs +8 -4
- package/source/components/notify/stylesheet/notify.mjs +8 -4
- package/source/components/state/stylesheet/log.mjs +8 -4
- package/source/components/state/stylesheet/state.mjs +9 -5
- package/source/components/style/link.pcss +0 -1
- package/source/components/style/mixin/typography.pcss +7 -7
- package/source/components/style/typography.pcss +1 -1
- package/source/components/stylesheet/badge.mjs +8 -4
- package/source/components/stylesheet/border.mjs +8 -4
- package/source/components/stylesheet/button.mjs +8 -4
- package/source/components/stylesheet/card.mjs +8 -4
- package/source/components/stylesheet/color.mjs +8 -4
- package/source/components/stylesheet/common.mjs +8 -4
- package/source/components/stylesheet/control.mjs +8 -4
- package/source/components/stylesheet/data-grid.mjs +8 -4
- package/source/components/stylesheet/display.mjs +8 -4
- package/source/components/stylesheet/floating-ui.mjs +8 -4
- package/source/components/stylesheet/form.mjs +8 -4
- package/source/components/stylesheet/host.mjs +8 -4
- package/source/components/stylesheet/icons.mjs +8 -4
- package/source/components/stylesheet/link.mjs +8 -4
- package/source/components/stylesheet/mixin/badge.mjs +31 -0
- package/source/components/stylesheet/mixin/button.mjs +31 -0
- package/source/components/stylesheet/mixin/form.mjs +31 -0
- package/source/components/stylesheet/mixin/hover.mjs +31 -0
- package/source/components/stylesheet/mixin/icon.mjs +31 -0
- package/source/components/stylesheet/mixin/media.mjs +31 -0
- package/source/components/stylesheet/mixin/property.mjs +31 -0
- package/source/components/stylesheet/mixin/skeleton.mjs +31 -0
- package/source/components/stylesheet/mixin/spinner.mjs +31 -0
- package/source/components/stylesheet/mixin/typography.mjs +31 -0
- package/source/components/stylesheet/normalize.mjs +8 -4
- package/source/components/stylesheet/popper.mjs +8 -4
- package/source/components/stylesheet/property.mjs +8 -4
- package/source/components/stylesheet/ripple.mjs +8 -4
- package/source/components/stylesheet/skeleton.mjs +8 -4
- package/source/components/stylesheet/space.mjs +8 -4
- package/source/components/stylesheet/spinner.mjs +8 -4
- package/source/components/stylesheet/table.mjs +8 -4
- package/source/components/stylesheet/theme.mjs +8 -4
- package/source/components/stylesheet/typography.mjs +9 -5
- package/source/components/tree-menu/stylesheet/tree-menu.mjs +8 -4
- package/source/dom/ready.mjs +10 -4
- package/source/monster.mjs +17 -80
- package/source/types/proxyobserver.mjs +4 -2
- package/source/types/version.mjs +1 -1
- package/test/cases/monster.mjs +1 -1
- package/test/web/tests.js +4 -4
- package/source/components/form/form-field.mjs +0 -341
- package/source/components/form/style/form-field.pcss +0 -4
- package/source/components/form/stylesheet/form-field.mjs +0 -27
- /package/source/components/{host → layout}/style/collapse.pcss +0 -0
- /package/source/components/{host → layout}/style/details.pcss +0 -0
- /package/source/components/{form → layout}/style/popper.pcss +0 -0
|
@@ -1,528 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
3
|
-
*
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
assembleMethodSymbol,
|
|
8
|
-
CustomElement,
|
|
9
|
-
getSlottedElements,
|
|
10
|
-
registerCustomElement,
|
|
11
|
-
} from "../../dom/customelement.mjs";
|
|
12
|
-
import { CollapseStyleSheet } from "./stylesheet/collapse.mjs";
|
|
13
|
-
import { fireCustomEvent } from "../../dom/events.mjs";
|
|
14
|
-
import { getDocument } from "../../dom/util.mjs";
|
|
15
|
-
import { addAttributeToken } from "../../dom/attributes.mjs";
|
|
16
|
-
import { ATTRIBUTE_ERRORMESSAGE } from "../../dom/constants.mjs";
|
|
17
|
-
import { Host } from "./host.mjs";
|
|
18
|
-
import { generateUniqueConfigKey } from "./util.mjs";
|
|
19
|
-
import { DeadMansSwitch } from "../../util/deadmansswitch.mjs";
|
|
20
|
-
import { instanceSymbol } from "../../constants.mjs";
|
|
21
|
-
|
|
22
|
-
export { Collapse, nameSymbol };
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* @private
|
|
26
|
-
* @type {symbol}
|
|
27
|
-
*/
|
|
28
|
-
const timerCallbackSymbol = Symbol("timerCallback");
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* @private
|
|
32
|
-
* @type {symbol}
|
|
33
|
-
*/
|
|
34
|
-
const detailsElementSymbol = Symbol("detailsElement");
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @private
|
|
38
|
-
* @type {symbol}
|
|
39
|
-
*/
|
|
40
|
-
const controlElementSymbol = Symbol("controlElement");
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* local symbol
|
|
44
|
-
* @private
|
|
45
|
-
* @type {symbol}
|
|
46
|
-
*/
|
|
47
|
-
const resizeObserverSymbol = Symbol("resizeObserver");
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* @private
|
|
51
|
-
* @type {symbol}
|
|
52
|
-
*/
|
|
53
|
-
const detailsSlotElementSymbol = Symbol("detailsSlotElement");
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @private
|
|
57
|
-
* @type {symbol}
|
|
58
|
-
*/
|
|
59
|
-
const detailsContainerElementSymbol = Symbol("detailsContainerElement");
|
|
60
|
-
/**
|
|
61
|
-
|
|
62
|
-
* @private
|
|
63
|
-
* @type {symbol}
|
|
64
|
-
*/
|
|
65
|
-
const detailsDecoElementSymbol = Symbol("detailsDecoElement");
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @private
|
|
69
|
-
* @type {symbol}
|
|
70
|
-
*/
|
|
71
|
-
const nameSymbol = Symbol("name");
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* The Collapse component is used to show a details.
|
|
75
|
-
*
|
|
76
|
-
* <img src="./images/collapse.png">
|
|
77
|
-
*
|
|
78
|
-
* Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
|
|
79
|
-
*
|
|
80
|
-
* You can create this control either by specifying the HTML tag <monster-collapse />` directly in the HTML or using
|
|
81
|
-
* Javascript via the `document.createElement('monster-collapse');` method.
|
|
82
|
-
*
|
|
83
|
-
* ```html
|
|
84
|
-
* <monster-collapse></monster-collapse>
|
|
85
|
-
* ```
|
|
86
|
-
*
|
|
87
|
-
* Or you can create this CustomControl directly in Javascript:
|
|
88
|
-
*
|
|
89
|
-
* ```js
|
|
90
|
-
* import '@schukai/monster/source/components/host/collapse.mjs';
|
|
91
|
-
* document.createElement('monster-collapse');
|
|
92
|
-
* ```
|
|
2
|
+
* Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
93
4
|
*
|
|
94
|
-
*
|
|
5
|
+
* This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
|
|
6
|
+
* The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
95
7
|
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* }
|
|
100
|
-
* ```
|
|
101
|
-
*
|
|
102
|
-
* @startuml collapse.png
|
|
103
|
-
* skinparam monochrome true
|
|
104
|
-
* skinparam shadowing false
|
|
105
|
-
* HTMLElement <|-- CustomElement
|
|
106
|
-
* CustomElement <|-- Collapse
|
|
107
|
-
* @enduml
|
|
108
|
-
*
|
|
109
|
-
* @copyright schukai GmbH
|
|
110
|
-
* @memberOf Monster.Components.Host
|
|
111
|
-
* @summary A simple collapse component
|
|
112
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-before-open
|
|
113
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-open
|
|
114
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-before-close
|
|
115
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-closed
|
|
116
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-adjust-height
|
|
8
|
+
* For those who do not wish to adhere to the AGPLv3, a commercial license is available.
|
|
9
|
+
* Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
|
|
10
|
+
* For more information about purchasing a commercial license, please contact schukai GmbH.
|
|
117
11
|
*/
|
|
118
|
-
class Collapse extends CustomElement {
|
|
119
|
-
/**
|
|
120
|
-
* This method is called by the `instanceof` operator.
|
|
121
|
-
* @returns {symbol}
|
|
122
|
-
*/
|
|
123
|
-
static get [instanceSymbol]() {
|
|
124
|
-
return Symbol.for("@schukai/component-host/collapse@@instance");
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
*
|
|
129
|
-
*/
|
|
130
|
-
constructor() {
|
|
131
|
-
super();
|
|
132
|
-
// the name is only used for the host config and the event name
|
|
133
|
-
this[nameSymbol] = "collapse";
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* To set the options via the html tag the attribute `data-monster-options` must be used.
|
|
138
|
-
* @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
|
|
139
|
-
*
|
|
140
|
-
* The individual configuration values can be found in the table.
|
|
141
|
-
*
|
|
142
|
-
* @property {Object} templates Template definitions
|
|
143
|
-
* @property {string} templates.main Main template
|
|
144
|
-
* @property {Object} classes CSS classes
|
|
145
|
-
* @property {string} classes.container CSS class for the container
|
|
146
|
-
* @property {Object} features Feature configuration
|
|
147
|
-
* @property {boolean} features.accordion Enable accordion mode
|
|
148
|
-
* @property {boolean} features.persistState Enable persist state (Host and Config-Manager required)
|
|
149
|
-
* @property {boolean} features.useScrollValues Use scroll values (scrollHeight) instead of clientHeight for the height calculation
|
|
150
|
-
*/
|
|
151
|
-
get defaults() {
|
|
152
|
-
return Object.assign({}, super.defaults, {
|
|
153
|
-
templates: {
|
|
154
|
-
main: getTemplate(),
|
|
155
|
-
},
|
|
156
|
-
classes: {
|
|
157
|
-
container: "padding",
|
|
158
|
-
},
|
|
159
|
-
features: {
|
|
160
|
-
accordion: true,
|
|
161
|
-
persistState: true,
|
|
162
|
-
useScrollValues: false,
|
|
163
|
-
},
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
*
|
|
169
|
-
* @returns {Monster.Components.Host.Collapse}
|
|
170
|
-
*/
|
|
171
|
-
[assembleMethodSymbol]() {
|
|
172
|
-
super[assembleMethodSymbol]();
|
|
173
|
-
initControlReferences.call(this);
|
|
174
|
-
initStateFromHostConfig.call(this);
|
|
175
|
-
initResizeObserver.call(this);
|
|
176
|
-
initEventHandler.call(this);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
*
|
|
181
|
-
*/
|
|
182
|
-
connectedCallback() {
|
|
183
|
-
super.connectedCallback();
|
|
184
|
-
updateResizeObserverObservation.call(this);
|
|
185
|
-
// this[resizeObserverSymbol].observe(getDocument().body);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
*
|
|
190
|
-
*/
|
|
191
|
-
disconnectedCallback() {
|
|
192
|
-
super.disconnectedCallback();
|
|
193
|
-
//this[resizeObserverSymbol].disconnect();
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
*
|
|
198
|
-
* @returns {Monster.Components.Host.Collapse}
|
|
199
|
-
*/
|
|
200
|
-
toggle() {
|
|
201
|
-
if (this[detailsElementSymbol].classList.contains("active")) {
|
|
202
|
-
this.close();
|
|
203
|
-
} else {
|
|
204
|
-
this.open();
|
|
205
|
-
}
|
|
206
|
-
return this;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
*
|
|
211
|
-
* @returns {boolean}
|
|
212
|
-
*/
|
|
213
|
-
isClosed() {
|
|
214
|
-
return !this[detailsElementSymbol].classList.contains("active");
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
*
|
|
219
|
-
* @returns {boolean}
|
|
220
|
-
*/
|
|
221
|
-
isOpen() {
|
|
222
|
-
return !this.isClosed();
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
*
|
|
227
|
-
* @returns {Monster.Components.Host.Collapse}
|
|
228
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-before-open
|
|
229
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-open
|
|
230
|
-
*/
|
|
231
|
-
open() {
|
|
232
|
-
let node;
|
|
233
|
-
if (this[detailsElementSymbol].classList.contains("active")) {
|
|
234
|
-
return this;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
fireCustomEvent(this, "monster-" + this[nameSymbol] + "-before-open", {});
|
|
238
|
-
|
|
239
|
-
adjustHeight.call(this);
|
|
240
|
-
this[detailsElementSymbol].classList.add("active");
|
|
241
|
-
|
|
242
|
-
if (this.getOption("features.accordion") === true) {
|
|
243
|
-
node = this;
|
|
244
|
-
while (node.nextElementSibling instanceof Collapse) {
|
|
245
|
-
node = node.nextElementSibling;
|
|
246
|
-
node.close();
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
node = this;
|
|
250
|
-
while (node.previousElementSibling instanceof Collapse) {
|
|
251
|
-
node = node.previousElementSibling;
|
|
252
|
-
node.close();
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
setTimeout(() => {
|
|
257
|
-
setTimeout(() => {
|
|
258
|
-
updateStateConfig.call(this);
|
|
259
|
-
fireCustomEvent(this, "monster-" + this[nameSymbol] + "-open", {});
|
|
260
|
-
setTimeout(() => {
|
|
261
|
-
this[controlElementSymbol].classList.remove("overflow-hidden");
|
|
262
|
-
}, 500);
|
|
263
|
-
}, 0);
|
|
264
|
-
}, 0);
|
|
265
|
-
|
|
266
|
-
return this;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
*
|
|
271
|
-
* @returns {Monster.Components.Host.Collapse}
|
|
272
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-before-close
|
|
273
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-closed
|
|
274
|
-
*/
|
|
275
|
-
close() {
|
|
276
|
-
if (!this[detailsElementSymbol].classList.contains("active")) {
|
|
277
|
-
return this;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
fireCustomEvent(this, "monster-" + this[nameSymbol] + "-before-close", {});
|
|
281
|
-
this[controlElementSymbol].classList.add("overflow-hidden");
|
|
282
12
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
setTimeout(() => {
|
|
286
|
-
updateStateConfig.call(this);
|
|
287
|
-
fireCustomEvent(this, "monster-" + this[nameSymbol] + "-closed", {});
|
|
288
|
-
}, 0);
|
|
289
|
-
}, 0);
|
|
290
|
-
|
|
291
|
-
return this;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
*
|
|
296
|
-
* @return {string}
|
|
297
|
-
*/
|
|
298
|
-
static getTag() {
|
|
299
|
-
return "monster-collapse";
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
/**
|
|
303
|
-
* @return {Array<CSSStyleSheet>}
|
|
304
|
-
*/
|
|
305
|
-
static getCSSStyleSheet() {
|
|
306
|
-
return [CollapseStyleSheet];
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
/**
|
|
310
|
-
* This method is called when the element is inserted into a document, including into a shadow tree.
|
|
311
|
-
* @return {Monster.Components.Host.Collapse}
|
|
312
|
-
* @fires Monster.Components.Host.Collapse.event:monster-collapse-adjust-height
|
|
313
|
-
*/
|
|
314
|
-
adjustHeight() {
|
|
315
|
-
adjustHeight.call(this);
|
|
316
|
-
return this;
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
function adjustHeight() {
|
|
321
|
-
let height = 0;
|
|
322
|
-
|
|
323
|
-
if (this[detailsContainerElementSymbol]) {
|
|
324
|
-
if (this.getOption("features.useScrollValues")) {
|
|
325
|
-
height += this[detailsContainerElementSymbol].scrollHeight;
|
|
326
|
-
} else {
|
|
327
|
-
height += this[detailsContainerElementSymbol].clientHeight;
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
if (this[detailsDecoElementSymbol]) {
|
|
332
|
-
if (this.getOption("features.useScrollValues")) {
|
|
333
|
-
height += this[detailsDecoElementSymbol].scrollHeight;
|
|
334
|
-
} else {
|
|
335
|
-
height += this[detailsDecoElementSymbol].clientHeight + 1;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
if (height === 0) {
|
|
340
|
-
if (this.getOption("features.useScrollValues")) {
|
|
341
|
-
height = this[detailsElementSymbol].scrollHeight;
|
|
342
|
-
} else {
|
|
343
|
-
height = this[detailsElementSymbol].clientHeight;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
if (height === 0) {
|
|
347
|
-
height = "auto";
|
|
348
|
-
}
|
|
349
|
-
} else {
|
|
350
|
-
height += "px";
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
this[detailsElementSymbol].style.setProperty(
|
|
354
|
-
"--monster-height",
|
|
355
|
-
height,
|
|
356
|
-
"important",
|
|
357
|
-
);
|
|
358
|
-
fireCustomEvent(this, "monster-" + this[nameSymbol] + "-adjust-height", {});
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
function updateResizeObserverObservation() {
|
|
362
|
-
this[resizeObserverSymbol].disconnect();
|
|
363
|
-
|
|
364
|
-
const slottedNodes = getSlottedElements.call(this);
|
|
365
|
-
slottedNodes.forEach((node) => {
|
|
366
|
-
this[resizeObserverSymbol].observe(node);
|
|
367
|
-
});
|
|
368
|
-
|
|
369
|
-
if (this[detailsContainerElementSymbol]) {
|
|
370
|
-
this[resizeObserverSymbol].observe(this[detailsContainerElementSymbol]);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
this.adjustHeight();
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
/**
|
|
377
|
-
* @private
|
|
378
|
-
*/
|
|
379
|
-
function initEventHandler() {
|
|
380
|
-
if (!this.shadowRoot) {
|
|
381
|
-
throw new Error("no shadow-root is defined");
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
initSlotChangedHandler.call(this);
|
|
385
|
-
return this;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
function initSlotChangedHandler() {
|
|
389
|
-
this[detailsSlotElementSymbol].addEventListener("slotchange", () => {
|
|
390
|
-
updateResizeObserverObservation.call(this);
|
|
391
|
-
});
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/**
|
|
395
|
-
* @private
|
|
396
|
-
* @return {Select}
|
|
397
|
-
* @throws {Error} no shadow-root is defined
|
|
398
|
-
*/
|
|
399
|
-
function initControlReferences() {
|
|
400
|
-
if (!this.shadowRoot) {
|
|
401
|
-
throw new Error("no shadow-root is defined");
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
this[controlElementSymbol] = this.shadowRoot.querySelector(
|
|
405
|
-
"[data-monster-role=control]",
|
|
406
|
-
);
|
|
407
|
-
this[detailsElementSymbol] = this.shadowRoot.querySelector(
|
|
408
|
-
"[data-monster-role=detail]",
|
|
409
|
-
);
|
|
410
|
-
this[detailsSlotElementSymbol] = this.shadowRoot.querySelector("slot");
|
|
411
|
-
this[detailsContainerElementSymbol] = this.shadowRoot.querySelector(
|
|
412
|
-
"[data-monster-role=container]",
|
|
413
|
-
);
|
|
414
|
-
this[detailsDecoElementSymbol] = this.shadowRoot.querySelector(
|
|
415
|
-
"[data-monster-role=deco]",
|
|
416
|
-
);
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/**
|
|
420
|
-
* @private
|
|
421
|
-
* @returns {string}
|
|
422
|
-
*/
|
|
423
|
-
function getConfigKey() {
|
|
424
|
-
return generateUniqueConfigKey(this[nameSymbol], this.id, "state");
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
/**
|
|
428
|
-
* @private
|
|
429
|
-
*/
|
|
430
|
-
function updateStateConfig() {
|
|
431
|
-
if (!this.getOption("features.persistState")) {
|
|
432
|
-
return;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
if (!this[detailsElementSymbol]) {
|
|
436
|
-
return;
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
const document = getDocument();
|
|
440
|
-
const host = document.querySelector("monster-host");
|
|
441
|
-
if (!(host && this.id)) {
|
|
442
|
-
return;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
const configKey = getConfigKey.call(this);
|
|
446
|
-
|
|
447
|
-
try {
|
|
448
|
-
host.setConfig(configKey, this.isOpen());
|
|
449
|
-
} catch (error) {
|
|
450
|
-
addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, String(error));
|
|
451
|
-
}
|
|
452
|
-
}
|
|
13
|
+
import { Collapse as NewCollapse } from "../layout/collapse.mjs";
|
|
14
|
+
export { Collapse };
|
|
453
15
|
|
|
454
16
|
/**
|
|
455
|
-
* @
|
|
456
|
-
* @
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
if (!this.getOption("features.persistState")) {
|
|
460
|
-
return Promise.resolve({});
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
const document = getDocument();
|
|
464
|
-
const host = document.querySelector("monster-host");
|
|
465
|
-
|
|
466
|
-
if (!(host && this.id)) {
|
|
467
|
-
return Promise.resolve({});
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
const configKey = getConfigKey.call(this);
|
|
471
|
-
return host
|
|
472
|
-
.getConfig(configKey)
|
|
473
|
-
.then((state) => {
|
|
474
|
-
if (state === true) {
|
|
475
|
-
this.open();
|
|
476
|
-
} else {
|
|
477
|
-
this.close();
|
|
478
|
-
}
|
|
479
|
-
})
|
|
480
|
-
.catch((error) => {
|
|
481
|
-
addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, error.toString());
|
|
482
|
-
});
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
/**
|
|
486
|
-
* @private
|
|
17
|
+
* @since 1.10.0
|
|
18
|
+
* @copyright schukai GmbH
|
|
19
|
+
* @memberOf Monster.Components.Form
|
|
20
|
+
* @deprecated since 3.64.0 use {@link Monster.Components.Layout.Collapse}
|
|
487
21
|
*/
|
|
488
|
-
|
|
489
|
-
// against flickering
|
|
490
|
-
this[resizeObserverSymbol] = new ResizeObserver((entries) => {
|
|
491
|
-
if (this[timerCallbackSymbol] instanceof DeadMansSwitch) {
|
|
492
|
-
try {
|
|
493
|
-
this[timerCallbackSymbol].touch();
|
|
494
|
-
return;
|
|
495
|
-
} catch (e) {
|
|
496
|
-
delete this[timerCallbackSymbol];
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
this[timerCallbackSymbol] = new DeadMansSwitch(200, () => {
|
|
501
|
-
checkAndRearrangeContent.call(this);
|
|
502
|
-
});
|
|
503
|
-
});
|
|
504
|
-
}
|
|
22
|
+
class Collapse extends NewCollapse {
|
|
505
23
|
|
|
506
|
-
function checkAndRearrangeContent() {
|
|
507
|
-
this.adjustHeight();
|
|
508
24
|
}
|
|
509
25
|
|
|
510
|
-
/**
|
|
511
|
-
* @private
|
|
512
|
-
* @return {string}
|
|
513
|
-
*/
|
|
514
|
-
function getTemplate() {
|
|
515
|
-
// language=HTML
|
|
516
|
-
return `
|
|
517
|
-
<div data-monster-role="control" part="control" class="overflow-hidden">
|
|
518
|
-
<div data-monster-role="detail">
|
|
519
|
-
<div data-monster-attributes="class path:classes.container" part="container"
|
|
520
|
-
data-monster-role="container">
|
|
521
|
-
<slot></slot>
|
|
522
|
-
</div>
|
|
523
|
-
<div class="deco-line" data-monster-role="deco"></div>
|
|
524
|
-
</div>
|
|
525
|
-
</div>`;
|
|
526
|
-
}
|
|
527
26
|
|
|
528
|
-
registerCustomElement(Collapse);
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
3
|
-
*
|
|
2
|
+
* Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
|
|
6
|
+
* The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
7
|
+
*
|
|
8
|
+
* For those who do not wish to adhere to the AGPLv3, a commercial license is available.
|
|
9
|
+
* Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
|
|
10
|
+
* For more information about purchasing a commercial license, please contact schukai GmbH.
|
|
4
11
|
*/
|
|
5
12
|
|
|
6
13
|
import {
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright schukai GmbH and
|
|
3
|
-
* Node module: @schukai/
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
|
|
6
|
+
* The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
7
|
+
*
|
|
8
|
+
* For those who do not wish to adhere to the AGPLv3, a commercial license is available.
|
|
9
|
+
* Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
|
|
10
|
+
* For more information about purchasing a commercial license, please contact schukai GmbH.
|
|
6
11
|
*/
|
|
7
12
|
|
|
8
13
|
import { ATTRIBUTE_PREFIX } from "../../dom/constants.mjs";
|