@schukai/monster 4.148.8 → 4.149.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/package.json +1 -1
- package/source/components/accessibility/stylesheet/locale-picker.mjs +61 -1
- package/source/components/content/image-editor.mjs +79 -11
- package/source/components/content/style/copy.pcss +1 -1
- package/source/components/content/stylesheet/camera-capture.mjs +1 -1
- package/source/components/content/stylesheet/copy.mjs +1 -1
- package/source/components/content/stylesheet/fetch-box.mjs +1 -1
- package/source/components/content/stylesheet/viewer.mjs +61 -1
- package/source/components/data/kpi-tile.mjs +5 -3
- package/source/components/data/metric-graph.mjs +22 -20
- package/source/components/data/metric.mjs +20 -18
- package/source/components/data/style/kpi-tile.pcss +65 -43
- package/source/components/data/style/metric-graph.pcss +35 -18
- package/source/components/data/style/metric.pcss +35 -28
- package/source/components/data/stylesheet/kpi-tile.mjs +61 -1
- package/source/components/data/stylesheet/metric-graph.mjs +61 -1
- package/source/components/data/stylesheet/metric.mjs +61 -1
- package/source/components/datatable/columnbar.mjs +4 -2
- package/source/components/datatable/datatable.mjs +73 -15
- package/source/components/datatable/filter/date-range.mjs +61 -61
- package/source/components/datatable/filter/date-time.mjs +5 -1
- package/source/components/datatable/filter/range.mjs +3 -3
- package/source/components/datatable/filter/select-operator.mjs +7 -1
- package/source/components/datatable/filter/text-operator.mjs +11 -3
- package/source/components/datatable/filter.mjs +16 -0
- package/source/components/datatable/pagination.mjs +2 -2
- package/source/components/datatable/style/column-bar.pcss +115 -23
- package/source/components/datatable/style/datatable.pcss +257 -29
- package/source/components/datatable/style/embedded-pagination.pcss +63 -34
- package/source/components/datatable/style/filter-button.pcss +1 -1
- package/source/components/datatable/style/filter-controls-defaults.pcss +49 -3
- package/source/components/datatable/style/filter-select.pcss +4 -1
- package/source/components/datatable/style/filter.pcss +18 -1
- package/source/components/datatable/stylesheet/change-button.mjs +61 -1
- package/source/components/datatable/stylesheet/column-bar.mjs +69 -1
- package/source/components/datatable/stylesheet/dataset.mjs +61 -1
- package/source/components/datatable/stylesheet/datatable.mjs +71 -1
- 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-controls-defaults.mjs +1 -1
- package/source/components/datatable/stylesheet/filter-select.mjs +61 -1
- package/source/components/datatable/stylesheet/filter.mjs +61 -1
- package/source/components/datatable/stylesheet/pagination.mjs +67 -1
- package/source/components/datatable/stylesheet/save-button.mjs +61 -1
- package/source/components/datatable/stylesheet/status.mjs +61 -1
- package/source/components/form/action-button.mjs +2 -1
- package/source/components/form/button-bar.mjs +7 -2
- package/source/components/form/context-error.mjs +4 -3
- package/source/components/form/context-help.mjs +10 -4
- package/source/components/form/context-hint.mjs +1 -1
- package/source/components/form/context-info.mjs +1 -1
- package/source/components/form/context-note.mjs +1 -1
- package/source/components/form/context-success.mjs +1 -1
- package/source/components/form/context-warning.mjs +1 -1
- package/source/components/form/control-bar.mjs +300 -14
- package/source/components/form/credential-button.mjs +4 -2
- package/source/components/form/digits.mjs +28 -1
- package/source/components/form/field-set.mjs +30 -0
- package/source/components/form/login.mjs +13 -10
- package/source/components/form/password.mjs +6 -0
- package/source/components/form/popper-button.mjs +1 -1
- package/source/components/form/quantity.mjs +14 -6
- package/source/components/form/register-wizard.mjs +46 -26
- package/source/components/form/select.mjs +17 -10
- package/source/components/form/sheet.mjs +13 -2
- package/source/components/form/style/action-button.pcss +131 -5
- package/source/components/form/style/button-bar.pcss +204 -3
- package/source/components/form/style/control-bar.pcss +254 -26
- package/source/components/form/style/digits.pcss +7 -6
- package/source/components/form/style/input-group.pcss +65 -1
- package/source/components/form/style/login.pcss +1 -1
- package/source/components/form/style/mixin/field-set-layout.pcss +8 -0
- package/source/components/form/style/password.pcss +25 -1
- package/source/components/form/style/popper-button.pcss +1 -0
- package/source/components/form/style/quantity.pcss +11 -20
- package/source/components/form/style/select.pcss +52 -7
- package/source/components/form/style/sheet.pcss +70 -1
- package/source/components/form/style/state-button.pcss +5 -2
- package/source/components/form/style/toggle-switch.pcss +7 -4
- package/source/components/form/stylesheet/action-button.mjs +63 -1
- package/source/components/form/stylesheet/button-bar.mjs +153 -1
- package/source/components/form/stylesheet/button.mjs +61 -1
- package/source/components/form/stylesheet/control-bar.mjs +163 -1
- package/source/components/form/stylesheet/digits.mjs +1 -1
- package/source/components/form/stylesheet/field-layout.mjs +1 -1
- package/source/components/form/stylesheet/field-set.mjs +1 -1
- package/source/components/form/stylesheet/form.mjs +1 -1
- package/source/components/form/stylesheet/input-group.mjs +15 -1
- package/source/components/form/stylesheet/login.mjs +1 -1
- package/source/components/form/stylesheet/password.mjs +7 -1
- package/source/components/form/stylesheet/popper-button.mjs +61 -1
- package/source/components/form/stylesheet/quantity.mjs +1 -1
- package/source/components/form/stylesheet/register-wizard.mjs +1 -1
- package/source/components/form/stylesheet/select.mjs +3 -1
- package/source/components/form/stylesheet/sheet.mjs +1 -1
- package/source/components/form/stylesheet/state-button.mjs +3 -1
- package/source/components/form/stylesheet/toggle-switch.mjs +1 -1
- package/source/components/form/stylesheet/wizard.mjs +1 -1
- package/source/components/form/util/floating-ui.mjs +35 -7
- package/source/components/host/call-button.mjs +3 -1
- package/source/components/host/stylesheet/call-button.mjs +61 -1
- package/source/components/host/stylesheet/host.mjs +1 -1
- package/source/components/host/stylesheet/toggle-button.mjs +61 -1
- package/source/components/layout/full-screen.mjs +31 -23
- package/source/components/layout/iframe.mjs +5 -1
- package/source/components/layout/popper.mjs +34 -4
- package/source/components/layout/style/full-screen.pcss +94 -23
- package/source/components/layout/style/split-panel.pcss +57 -5
- package/source/components/layout/style/tabs.pcss +277 -47
- package/source/components/layout/style/vertical-tabs.pcss +147 -0
- package/source/components/layout/stylesheet/collapse.mjs +61 -1
- package/source/components/layout/stylesheet/details.mjs +61 -1
- package/source/components/layout/stylesheet/full-screen.mjs +23 -1
- package/source/components/layout/stylesheet/overlay.mjs +1 -1
- package/source/components/layout/stylesheet/panel.mjs +1 -1
- package/source/components/layout/stylesheet/slider.mjs +1 -1
- package/source/components/layout/stylesheet/split-panel.mjs +17 -1
- package/source/components/layout/stylesheet/tabs.mjs +97 -1
- package/source/components/layout/stylesheet/vertical-tabs.mjs +33 -95
- package/source/components/layout/tabs.mjs +63 -0
- package/source/components/layout/vertical-tabs.mjs +63 -0
- package/source/components/navigation/stylesheet/site-navigation.mjs +1 -1
- package/source/components/navigation/stylesheet/table-of-content.mjs +1 -1
- package/source/components/navigation/stylesheet/wizard-navigation.mjs +1 -1
- package/source/components/navigation/table-of-content.mjs +13 -0
- package/source/components/notify/style/notify.pcss +1 -2
- package/source/components/notify/stylesheet/message.mjs +1 -1
- package/source/components/notify/stylesheet/notify.mjs +1 -1
- package/source/components/state/style/log.pcss +1 -0
- package/source/components/state/style/state.pcss +5 -1
- package/source/components/state/stylesheet/log.mjs +1 -1
- package/source/components/state/stylesheet/state.mjs +7 -1
- package/source/components/style/button.css +61 -205
- package/source/components/style/button.pcss +78 -34
- package/source/components/style/common.css +1 -170
- package/source/components/style/common.pcss +5 -9
- package/source/components/style/form.css +1 -49
- package/source/components/style/form.pcss +24 -6
- package/source/components/style/link.css +1 -39
- package/source/components/style/link.pcss +8 -16
- package/source/components/style/mixin/button.pcss +19 -10
- package/source/components/style/mixin/property.pcss +8 -0
- package/source/components/style/mixin/skeleton.pcss +11 -5
- package/source/components/style/normalize.css +1 -144
- package/source/components/style/normalize.pcss +5 -5
- package/source/components/style/property.css +1 -387
- package/source/components/style/skeleton.css +1 -198
- package/source/components/style/skeleton.pcss +8 -2
- package/source/components/style/theme-modern.css +74 -0
- package/source/components/style/theme-modern.pcss +498 -0
- package/source/components/stylesheet/button.mjs +61 -1
- package/source/components/stylesheet/common.mjs +1 -1
- package/source/components/stylesheet/form.mjs +1 -1
- package/source/components/stylesheet/link.mjs +1 -1
- package/source/components/stylesheet/normalize.mjs +1 -1
- package/source/components/stylesheet/property.mjs +1 -1
- package/source/components/stylesheet/skeleton.mjs +1 -1
- package/source/components/stylesheet/theme-modern.mjs +110 -0
- package/source/components/time/stylesheet/day.mjs +61 -1
- package/source/components/time/stylesheet/month-calendar.mjs +61 -1
- package/source/components/time/timeline/stylesheet/appointment.mjs +61 -1
- package/source/components/time/timeline/stylesheet/segment.mjs +61 -1
- package/source/components/tree-menu/style/tree-menu.pcss +26 -37
- package/source/components/tree-menu/stylesheet/tree-menu.mjs +1 -1
- package/source/dom/customelement.mjs +105 -40
- package/source/dom/updater.mjs +381 -119
- package/test/cases/components/content/image-editor.mjs +19 -0
- package/test/cases/components/datatable/accessibility-defaults.mjs +112 -0
- package/test/cases/components/datatable/filter-availability.mjs +37 -0
- package/test/cases/components/datatable/filter-date-range-layout.mjs +40 -0
- package/test/cases/components/datatable/filter-select-operator.mjs +118 -0
- package/test/cases/components/datatable/mobile-layout.mjs +203 -0
- package/test/cases/components/datatable/responsive-breakpoint.mjs +41 -0
- package/test/cases/components/datatable/selection.mjs +149 -0
- package/test/cases/components/form/action-button-style.mjs +85 -0
- package/test/cases/components/form/button-bar.mjs +222 -3
- package/test/cases/components/form/context-theme-colors.mjs +59 -0
- package/test/cases/components/form/control-bar.mjs +228 -3
- package/test/cases/components/form/control-heights.mjs +103 -0
- package/test/cases/components/form/digits-accessibility.mjs +65 -0
- package/test/cases/components/form/field-set.mjs +54 -0
- package/test/cases/components/form/floating-ui.mjs +74 -0
- package/test/cases/components/form/input-group.mjs +61 -28
- package/test/cases/components/form/login.mjs +47 -0
- package/test/cases/components/form/password.mjs +63 -0
- package/test/cases/components/form/popper-button.mjs +30 -15
- package/test/cases/components/form/quantity-accessibility.mjs +46 -0
- package/test/cases/components/form/register-wizard.mjs +79 -0
- package/test/cases/components/form/select.mjs +94 -2
- package/test/cases/components/form/sheet.mjs +56 -2
- package/test/cases/components/host/toggle-button.mjs +50 -0
- package/test/cases/components/layout/full-screen.mjs +60 -0
- package/test/cases/components/layout/iframe-accessibility.mjs +44 -0
- package/test/cases/components/layout/popper.mjs +128 -0
- package/test/cases/components/layout/slit-panel.mjs +30 -1
- package/test/cases/components/layout/tabs.mjs +93 -0
- package/test/cases/components/navigation/table-of-content.mjs +18 -0
- package/test/cases/components/state/state-style.mjs +31 -0
- package/test/cases/components/style/action-menu.mjs +74 -0
- package/test/cases/components/style/form-controls.mjs +37 -0
- package/test/cases/components/style/kpi-tile.mjs +60 -0
- package/test/cases/components/style/legacy-theme-compatibility.mjs +137 -0
- package/test/cases/components/style/metric-layout.mjs +94 -0
- package/test/cases/components/style/skeleton.mjs +69 -0
- package/test/cases/components/style/theme-component-catalog.mjs +853 -0
- package/test/cases/components/style/theme-modern.mjs +439 -0
- package/test/cases/components/style/theme-review-regressions.mjs +41 -0
- package/test/cases/dom/customelement.mjs +136 -1
- package/test/cases/dom/updater.mjs +174 -0
|
@@ -70,6 +70,12 @@ const toggleSwitchElementSymbol = Symbol("toggleSwitchElement");
|
|
|
70
70
|
*/
|
|
71
71
|
const extendedSwitchElementSymbol = Symbol("extendedSwitchElement");
|
|
72
72
|
|
|
73
|
+
/**
|
|
74
|
+
* @private
|
|
75
|
+
* @type {string}
|
|
76
|
+
*/
|
|
77
|
+
const ATTRIBUTE_CHOICE_LABEL = "data-monster-field-set-choice-label";
|
|
78
|
+
|
|
73
79
|
/**
|
|
74
80
|
* A field set control that can be used to group form elements.
|
|
75
81
|
*
|
|
@@ -99,6 +105,7 @@ class FieldSet extends CustomControl {
|
|
|
99
105
|
initControlReferences.call(this);
|
|
100
106
|
initEventHandler.call(this);
|
|
101
107
|
updateExtendedFields.call(this);
|
|
108
|
+
updateChoiceLabels.call(this);
|
|
102
109
|
updateColumns.call(this);
|
|
103
110
|
return this;
|
|
104
111
|
}
|
|
@@ -333,6 +340,23 @@ function updateExtendedFields() {
|
|
|
333
340
|
}
|
|
334
341
|
}
|
|
335
342
|
|
|
343
|
+
/**
|
|
344
|
+
* Keep native checkbox and radio labels visually grouped without changing the
|
|
345
|
+
* established split layout for ordinary field labels.
|
|
346
|
+
*
|
|
347
|
+
* @private
|
|
348
|
+
*/
|
|
349
|
+
function updateChoiceLabels() {
|
|
350
|
+
const labels = getSlottedElements.call(this, "label");
|
|
351
|
+
for (const label of labels) {
|
|
352
|
+
const isChoiceLabel =
|
|
353
|
+
label.querySelector(
|
|
354
|
+
':scope > input:is([type="checkbox"], [type="radio"])',
|
|
355
|
+
) instanceof HTMLInputElement;
|
|
356
|
+
label.toggleAttribute(ATTRIBUTE_CHOICE_LABEL, isChoiceLabel);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
336
360
|
/**
|
|
337
361
|
* @private
|
|
338
362
|
*/
|
|
@@ -351,6 +375,12 @@ function updateColumns() {
|
|
|
351
375
|
* @fires monster-field-set-clicked
|
|
352
376
|
*/
|
|
353
377
|
function initEventHandler() {
|
|
378
|
+
for (const slot of this.shadowRoot.querySelectorAll("slot")) {
|
|
379
|
+
slot.addEventListener("slotchange", () => {
|
|
380
|
+
updateChoiceLabels.call(this);
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
|
|
354
384
|
this[toggleSwitchElementSymbol].setOption(
|
|
355
385
|
"labels.toggleSwitchOn",
|
|
356
386
|
this.getOption("labels.toggleSwitchOn"),
|
|
@@ -1918,19 +1918,21 @@ function getTemplate() {
|
|
|
1918
1918
|
collapse:field-set-login-collapse"
|
|
1919
1919
|
part="login-field-set">
|
|
1920
1920
|
<slot name="login-header"></slot>
|
|
1921
|
-
<label part="login-label" data-monster-replace="path:labels.username"></label>
|
|
1922
|
-
<input part="login-username"
|
|
1921
|
+
<label for="monster-login-username" part="login-label" data-monster-replace="path:labels.username"></label>
|
|
1922
|
+
<input id="monster-login-username" part="login-username"
|
|
1923
1923
|
data-monster-attributes="placeholder path:placeholder.username, autocomplete path:autocomplete.username"
|
|
1924
1924
|
type="text" name="username" autofocus>
|
|
1925
|
-
<div
|
|
1925
|
+
<div style="grid-column: 1 / -1"
|
|
1926
|
+
data-monster-attributes="class path:classes.usernameInvalid"></div>
|
|
1926
1927
|
<label part="login-password-label" data-monster-replace="path:labels.password"></label>
|
|
1927
1928
|
<monster-password
|
|
1928
|
-
data-monster-attributes="data-monster-option-placeholder path:placeholder.password, data-monster-option-autocomplete path:autocomplete.password"
|
|
1929
|
+
data-monster-attributes="data-monster-option-placeholder path:placeholder.password, data-monster-option-autocomplete path:autocomplete.password, data-monster-option-labels-input path:labels.password"
|
|
1929
1930
|
exportparts="input-group:input-group-password,
|
|
1930
1931
|
control:input-group-password-control,
|
|
1931
1932
|
input:input-group-password-input" part="login-password"
|
|
1932
1933
|
data-monster-bind="path:password"></monster-password>
|
|
1933
|
-
<div
|
|
1934
|
+
<div style="grid-column: 1 / -1"
|
|
1935
|
+
data-monster-attributes="class path:classes.passwordInvalid"></div>
|
|
1934
1936
|
<monster-message-state-button id="loginButton"
|
|
1935
1937
|
part="login-button"
|
|
1936
1938
|
data-monster-attributes="data-monster-option-classes-button path:classes.button"
|
|
@@ -1965,14 +1967,15 @@ function getTemplate() {
|
|
|
1965
1967
|
content:field-set-forgot-password-content,
|
|
1966
1968
|
collapse:field-set-forgot-password-collapse">
|
|
1967
1969
|
<slot name="forgot-password-header"></slot>
|
|
1968
|
-
<label part="forgot-password-label" data-monster-replace="path:labels.mailAddress"></label>
|
|
1969
|
-
<input type="email" name="email"
|
|
1970
|
+
<label for="monster-login-email" part="forgot-password-label" data-monster-replace="path:labels.mailAddress"></label>
|
|
1971
|
+
<input id="monster-login-email" type="email" name="email"
|
|
1970
1972
|
part="field-set-forgot-password-email"
|
|
1971
1973
|
data-monster-attributes="accesskey path:accessKeys.username,
|
|
1972
1974
|
placeholder path:placeholder.email,
|
|
1973
1975
|
autocomplete path:autocomplete.email"
|
|
1974
1976
|
>
|
|
1975
|
-
<div
|
|
1977
|
+
<div style="grid-column: 1 / -1"
|
|
1978
|
+
data-monster-attributes="class path:classes.emailInvalid"></div>
|
|
1976
1979
|
<monster-message-state-button id="requestLinkButton"
|
|
1977
1980
|
part="request-link-button"
|
|
1978
1981
|
data-monster-attributes="data-monster-option-classes-button path:classes.button"
|
|
@@ -2011,7 +2014,7 @@ function getTemplate() {
|
|
|
2011
2014
|
<slot name="second-factor-header"></slot>
|
|
2012
2015
|
<label part="second-factor-label" data-monster-replace="path:labels.secondFactor"></label>
|
|
2013
2016
|
<div>
|
|
2014
|
-
<monster-digits data-monster-attributes="data-monster-option-digits path:digits"
|
|
2017
|
+
<monster-digits data-monster-attributes="data-monster-option-digits path:digits, data-monster-option-labels-group path:labels.secondFactor"
|
|
2015
2018
|
part="second-factor-digits-control"
|
|
2016
2019
|
id="secondFactorControl"></monster-digits>
|
|
2017
2020
|
</div>
|
|
@@ -2053,7 +2056,7 @@ function getTemplate() {
|
|
|
2053
2056
|
<label part="digits-label" data-monster-replace="path:labels.digits"></label>
|
|
2054
2057
|
<div>
|
|
2055
2058
|
<monster-digits part="digits-control"
|
|
2056
|
-
data-monster-attributes="data-monster-option-digits path:digits"
|
|
2059
|
+
data-monster-attributes="data-monster-option-digits path:digits, data-monster-option-labels-group path:labels.digits"
|
|
2057
2060
|
id="digitsControl"></monster-digits>
|
|
2058
2061
|
</div>
|
|
2059
2062
|
<monster-message-state-button id="digitsButton"
|
|
@@ -115,6 +115,8 @@ class Password extends CustomControl {
|
|
|
115
115
|
* @property {string} autocomplete="off" The autocomplete state of the input field
|
|
116
116
|
* @property {string} inputmode="text" The inputmode state of the input field
|
|
117
117
|
* @property {Object} aria Aria attributes
|
|
118
|
+
* @property {Object} labels Accessible labels
|
|
119
|
+
* @property {string} labels.input="Password" Label for the native password input
|
|
118
120
|
* @property {boolean} aria.required=false The required state of the input field
|
|
119
121
|
* @property {string} aria.placeholder="" The placeholder of the input field
|
|
120
122
|
* @property {boolean} disabled=false Disabled state
|
|
@@ -142,6 +144,9 @@ class Password extends CustomControl {
|
|
|
142
144
|
required: false,
|
|
143
145
|
placeholder: "",
|
|
144
146
|
},
|
|
147
|
+
labels: {
|
|
148
|
+
input: "Password",
|
|
149
|
+
},
|
|
145
150
|
disabled: false,
|
|
146
151
|
value: null,
|
|
147
152
|
|
|
@@ -261,6 +266,7 @@ function getTemplate() {
|
|
|
261
266
|
required path:required,
|
|
262
267
|
autocomplete path:autocomplete,
|
|
263
268
|
inputmode path:inputmode,
|
|
269
|
+
aria-label path:labels.input,
|
|
264
270
|
aria-required path:aria.required,
|
|
265
271
|
aria-placeholder path:aria.placeholder">
|
|
266
272
|
<svg viewBox="0 0 16 16" data-monster-role="visible-icon" class="hidden">
|
|
@@ -103,6 +103,10 @@ class Quantity extends CustomControl {
|
|
|
103
103
|
* @property {string} templateMapping.plus Icon (SVG-Path) Plus
|
|
104
104
|
* @property {string} templateMapping.minus Icon (SVG-Path) Minus
|
|
105
105
|
* @property {Object} classes CSS classes
|
|
106
|
+
* @property {Object} labels Accessible labels
|
|
107
|
+
* @property {string} labels.input="Quantity" Label for the numeric input
|
|
108
|
+
* @property {string} labels.decrement="Decrease quantity" Label for the decrement button
|
|
109
|
+
* @property {string} labels.increment="Increase quantity" Label for the increment button
|
|
106
110
|
* @property {string} classes.button Button class (e.g. monster-button-outline-primary)
|
|
107
111
|
* @property {string} classes.input Additional class for input
|
|
108
112
|
* @property {Object} features Feature toggles
|
|
@@ -125,12 +129,17 @@ class Quantity extends CustomControl {
|
|
|
125
129
|
plus: `
|
|
126
130
|
<path d="M8 1a1 1 0 0 1 1 1v5h5a1 1 0 1 1 0 2H9v5a1 1 0 1 1-2 0V9H2a1 1 0 1 1 0-2h5V2a1 1 0 0 1 1-1z"/>`,
|
|
127
131
|
minus: `
|
|
128
|
-
<path d="M2
|
|
132
|
+
<path d="M2 7h12v2H2z"/>`,
|
|
129
133
|
},
|
|
130
134
|
classes: {
|
|
131
135
|
button: "monster-button-outline-primary",
|
|
132
136
|
input: "",
|
|
133
137
|
},
|
|
138
|
+
labels: {
|
|
139
|
+
input: "Quantity",
|
|
140
|
+
decrement: "Decrease quantity",
|
|
141
|
+
increment: "Increase quantity",
|
|
142
|
+
},
|
|
134
143
|
features: {
|
|
135
144
|
editable: true,
|
|
136
145
|
hold: true,
|
|
@@ -341,9 +350,8 @@ function getTemplate() {
|
|
|
341
350
|
<monster-input-group part="input-group">
|
|
342
351
|
<button type="button"
|
|
343
352
|
part="decrement-button"
|
|
344
|
-
data-monster-attributes="class path:classes.button"
|
|
345
353
|
data-monster-role="decrement"
|
|
346
|
-
aria-label
|
|
354
|
+
data-monster-attributes="class path:classes.button, aria-label path:labels.decrement">
|
|
347
355
|
<svg viewBox="0 0 16 16" aria-hidden="true" fill="currentColor"
|
|
348
356
|
>\${minus}</svg>
|
|
349
357
|
</button>
|
|
@@ -353,14 +361,14 @@ function getTemplate() {
|
|
|
353
361
|
data-monster-attributes="
|
|
354
362
|
class path:classes.input,
|
|
355
363
|
placeholder path:placeholder,
|
|
356
|
-
inputmode path:inputmode
|
|
364
|
+
inputmode path:inputmode,
|
|
365
|
+
aria-label path:labels.input"
|
|
357
366
|
autocomplete="off" />
|
|
358
367
|
|
|
359
368
|
<button type="button"
|
|
360
369
|
part="increment-button"
|
|
361
|
-
data-monster-attributes="class path:classes.button"
|
|
362
370
|
data-monster-role="increment"
|
|
363
|
-
aria-label
|
|
371
|
+
data-monster-attributes="class path:classes.button, aria-label path:labels.increment">
|
|
364
372
|
<svg viewBox="0 0 16 16" aria-hidden="true" fill="currentColor">\${plus}</svg>
|
|
365
373
|
</button>
|
|
366
374
|
</monster-input-group>
|
|
@@ -250,6 +250,7 @@ class RegisterWizard extends CustomElement {
|
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
[assembleMethodSymbol]() {
|
|
253
|
+
ensureLabels.call(this);
|
|
253
254
|
super[assembleMethodSymbol]();
|
|
254
255
|
this[currentStepSymbol] = 0;
|
|
255
256
|
this[completedSymbol] = false;
|
|
@@ -265,12 +266,14 @@ class RegisterWizard extends CustomElement {
|
|
|
265
266
|
applyPasswordConfirmVisibility.call(this);
|
|
266
267
|
applyProfileFeatureVisibility.call(this);
|
|
267
268
|
applyAddressLayout.call(this);
|
|
268
|
-
ensureLabels.call(this);
|
|
269
269
|
applyFieldLabels.call(this);
|
|
270
270
|
updateWizardLabels.call(this);
|
|
271
271
|
updateStepVisibility.call(this);
|
|
272
272
|
loadConsentTopics.call(this);
|
|
273
273
|
goToStep.call(this, 0, true);
|
|
274
|
+
setTimeout(() => {
|
|
275
|
+
applyFieldLabels.call(this);
|
|
276
|
+
}, 0);
|
|
274
277
|
return this;
|
|
275
278
|
}
|
|
276
279
|
|
|
@@ -1247,8 +1250,11 @@ function ensureLabels() {
|
|
|
1247
1250
|
this.setOption("labels", fallback);
|
|
1248
1251
|
return;
|
|
1249
1252
|
}
|
|
1250
|
-
const
|
|
1251
|
-
|
|
1253
|
+
for (const [key, value] of Object.entries(fallback)) {
|
|
1254
|
+
if (current[key] === undefined) {
|
|
1255
|
+
this.setOption(`labels.${key}`, value);
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1252
1258
|
}
|
|
1253
1259
|
|
|
1254
1260
|
function applyFieldLabels() {
|
|
@@ -1297,66 +1303,81 @@ function applyFieldLabels() {
|
|
|
1297
1303
|
'[data-monster-role~="country-label"]',
|
|
1298
1304
|
labels.country,
|
|
1299
1305
|
);
|
|
1306
|
+
setLabelText.call(
|
|
1307
|
+
this,
|
|
1308
|
+
'[data-monster-role="consents-title"]',
|
|
1309
|
+
labels.consentsTitle,
|
|
1310
|
+
);
|
|
1300
1311
|
|
|
1301
1312
|
setInputMeta.call(
|
|
1302
1313
|
this,
|
|
1303
1314
|
this[emailInputSymbol],
|
|
1304
1315
|
labels.emailPlaceholder,
|
|
1305
1316
|
labels.emailAria,
|
|
1317
|
+
this.getOption("autocomplete.email"),
|
|
1306
1318
|
);
|
|
1307
1319
|
setInputMeta.call(
|
|
1308
1320
|
this,
|
|
1309
1321
|
this[passwordConfirmInputSymbol],
|
|
1310
1322
|
labels.passwordConfirmPlaceholder,
|
|
1311
1323
|
labels.passwordConfirmAria,
|
|
1324
|
+
this.getOption("autocomplete.passwordConfirm"),
|
|
1312
1325
|
);
|
|
1313
1326
|
setInputMeta.call(
|
|
1314
1327
|
this,
|
|
1315
1328
|
this[profileInputsSymbol]?.firstName,
|
|
1316
1329
|
labels.firstNamePlaceholder,
|
|
1317
1330
|
labels.firstNameAria,
|
|
1331
|
+
this.getOption("autocomplete.firstName"),
|
|
1318
1332
|
);
|
|
1319
1333
|
setInputMeta.call(
|
|
1320
1334
|
this,
|
|
1321
1335
|
this[profileInputsSymbol]?.lastName,
|
|
1322
1336
|
labels.lastNamePlaceholder,
|
|
1323
1337
|
labels.lastNameAria,
|
|
1338
|
+
this.getOption("autocomplete.lastName"),
|
|
1324
1339
|
);
|
|
1325
1340
|
setInputMeta.call(
|
|
1326
1341
|
this,
|
|
1327
1342
|
this[profileInputsSymbol]?.birthDate,
|
|
1328
1343
|
null,
|
|
1329
1344
|
labels.birthDateAria,
|
|
1345
|
+
this.getOption("autocomplete.birthDate"),
|
|
1330
1346
|
);
|
|
1331
1347
|
setInputMeta.call(
|
|
1332
1348
|
this,
|
|
1333
1349
|
this[profileInputsSymbol]?.nationality,
|
|
1334
1350
|
labels.nationalityPlaceholder,
|
|
1335
1351
|
labels.nationalityAria,
|
|
1352
|
+
this.getOption("autocomplete.nationality"),
|
|
1336
1353
|
);
|
|
1337
1354
|
setInputMeta.call(
|
|
1338
1355
|
this,
|
|
1339
1356
|
this[addressInputsSymbol]?.street,
|
|
1340
1357
|
labels.streetPlaceholder,
|
|
1341
1358
|
labels.streetAria,
|
|
1359
|
+
this.getOption("autocomplete.street"),
|
|
1342
1360
|
);
|
|
1343
1361
|
setInputMeta.call(
|
|
1344
1362
|
this,
|
|
1345
1363
|
this[addressInputsSymbol]?.zip,
|
|
1346
1364
|
labels.zipPlaceholder,
|
|
1347
1365
|
labels.zipAria,
|
|
1366
|
+
this.getOption("autocomplete.zip"),
|
|
1348
1367
|
);
|
|
1349
1368
|
setInputMeta.call(
|
|
1350
1369
|
this,
|
|
1351
1370
|
this[addressInputsSymbol]?.city,
|
|
1352
1371
|
labels.cityPlaceholder,
|
|
1353
1372
|
labels.cityAria,
|
|
1373
|
+
this.getOption("autocomplete.city"),
|
|
1354
1374
|
);
|
|
1355
1375
|
setInputMeta.call(
|
|
1356
1376
|
this,
|
|
1357
1377
|
this[addressInputsSymbol]?.country,
|
|
1358
1378
|
labels.countryPlaceholder,
|
|
1359
1379
|
labels.countryAria,
|
|
1380
|
+
this.getOption("autocomplete.country"),
|
|
1360
1381
|
);
|
|
1361
1382
|
}
|
|
1362
1383
|
|
|
@@ -1376,7 +1397,7 @@ function setLabelText(selector, text) {
|
|
|
1376
1397
|
element.textContent = text || "";
|
|
1377
1398
|
}
|
|
1378
1399
|
|
|
1379
|
-
function setInputMeta(element, placeholder, aria) {
|
|
1400
|
+
function setInputMeta(element, placeholder, aria, autocomplete) {
|
|
1380
1401
|
if (!element) {
|
|
1381
1402
|
return;
|
|
1382
1403
|
}
|
|
@@ -1386,6 +1407,9 @@ function setInputMeta(element, placeholder, aria) {
|
|
|
1386
1407
|
if (aria) {
|
|
1387
1408
|
element.setAttribute("aria-label", aria);
|
|
1388
1409
|
}
|
|
1410
|
+
if (autocomplete) {
|
|
1411
|
+
element.setAttribute("autocomplete", autocomplete);
|
|
1412
|
+
}
|
|
1389
1413
|
}
|
|
1390
1414
|
|
|
1391
1415
|
async function loadConsentTopics() {
|
|
@@ -1799,8 +1823,8 @@ function getTemplate() {
|
|
|
1799
1823
|
<div data-monster-role="content" part="content">
|
|
1800
1824
|
<section data-monster-role="panel" data-step="email" part="panel panel-email">
|
|
1801
1825
|
<monster-field-set data-monster-role="field-set-email" part="field-set field-set-email">
|
|
1802
|
-
<label data-monster-role="field-label email-label"
|
|
1803
|
-
|
|
1826
|
+
<label data-monster-role="field-label email-label"
|
|
1827
|
+
part="field-label email-label"></label>
|
|
1804
1828
|
<input data-monster-role="email-input" part="input input-email"
|
|
1805
1829
|
type="text" name="email"
|
|
1806
1830
|
data-monster-attributes="placeholder path:labels.emailPlaceholder, autocomplete path:autocomplete.email, aria-label path:labels.emailAria" />
|
|
@@ -1817,14 +1841,14 @@ function getTemplate() {
|
|
|
1817
1841
|
|
|
1818
1842
|
<section data-monster-role="panel" data-step="password" part="panel panel-password">
|
|
1819
1843
|
<monster-field-set data-monster-role="field-set-password" part="field-set field-set-password">
|
|
1820
|
-
<label data-monster-role="field-label password-label"
|
|
1821
|
-
|
|
1844
|
+
<label data-monster-role="field-label password-label"
|
|
1845
|
+
part="field-label password-label"></label>
|
|
1822
1846
|
<monster-password data-monster-role="password-input" part="input input-password"
|
|
1823
|
-
data-monster-attributes="data-monster-option-autocomplete path:autocomplete.password,
|
|
1847
|
+
data-monster-attributes="data-monster-option-autocomplete path:autocomplete.password, data-monster-option-labels-input path:labels.passwordAria"></monster-password>
|
|
1824
1848
|
<label data-monster-role="field-label password-confirm-label"
|
|
1825
1849
|
part="field-label password-confirm-label"
|
|
1826
1850
|
data-monster-attributes="class path:features.confirmPassword | ?::hidden"
|
|
1827
|
-
|
|
1851
|
+
></label>
|
|
1828
1852
|
<input data-monster-role="password-confirm-input" part="input input-password-confirm"
|
|
1829
1853
|
type="password" name="passwordConfirm"
|
|
1830
1854
|
data-monster-attributes="class path:features.confirmPassword | ?::hidden, placeholder path:labels.passwordConfirmPlaceholder, autocomplete path:autocomplete.passwordConfirm, aria-label path:labels.passwordConfirmAria" />
|
|
@@ -1842,25 +1866,25 @@ function getTemplate() {
|
|
|
1842
1866
|
|
|
1843
1867
|
<section data-monster-role="panel" data-step="profile" part="panel panel-profile">
|
|
1844
1868
|
<monster-field-set data-monster-role="field-set-profile" part="field-set field-set-profile">
|
|
1845
|
-
<label data-monster-role="field-label first-name-label"
|
|
1846
|
-
|
|
1869
|
+
<label data-monster-role="field-label first-name-label"
|
|
1870
|
+
part="field-label first-name-label"></label>
|
|
1847
1871
|
<input data-monster-role="first-name-input" part="input input-first-name"
|
|
1848
1872
|
type="text" name="firstName"
|
|
1849
1873
|
data-monster-attributes="placeholder path:labels.firstNamePlaceholder, autocomplete path:autocomplete.firstName, aria-label path:labels.firstNameAria" />
|
|
1850
|
-
<label data-monster-role="field-label last-name-label"
|
|
1851
|
-
|
|
1874
|
+
<label data-monster-role="field-label last-name-label"
|
|
1875
|
+
part="field-label last-name-label"></label>
|
|
1852
1876
|
<input data-monster-role="last-name-input" part="input input-last-name"
|
|
1853
1877
|
type="text" name="lastName"
|
|
1854
1878
|
data-monster-attributes="placeholder path:labels.lastNamePlaceholder, autocomplete path:autocomplete.lastName, aria-label path:labels.lastNameAria" />
|
|
1855
1879
|
<label data-monster-role="field-label birth-date-label" part="field-label birth-date-label"
|
|
1856
1880
|
data-monster-attributes="class path:features.showBirthDate | ?::hidden"
|
|
1857
|
-
|
|
1881
|
+
></label>
|
|
1858
1882
|
<input data-monster-role="birth-date-input" part="input input-birth-date"
|
|
1859
1883
|
type="text" name="birthDate"
|
|
1860
1884
|
data-monster-attributes="class path:features.showBirthDate | ?::hidden, autocomplete path:autocomplete.birthDate, aria-label path:labels.birthDateAria" />
|
|
1861
1885
|
<label data-monster-role="field-label nationality-label" part="field-label nationality-label"
|
|
1862
1886
|
data-monster-attributes="class path:features.showNationality | ?::hidden"
|
|
1863
|
-
|
|
1887
|
+
></label>
|
|
1864
1888
|
<input data-monster-role="nationality-input" part="input input-nationality"
|
|
1865
1889
|
type="text" name="nationality"
|
|
1866
1890
|
data-monster-attributes="class path:features.showNationality | ?::hidden, placeholder path:labels.nationalityPlaceholder, autocomplete path:autocomplete.nationality, aria-label path:labels.nationalityAria" />
|
|
@@ -1879,29 +1903,25 @@ function getTemplate() {
|
|
|
1879
1903
|
<section data-monster-role="panel" data-step="address" part="panel panel-address">
|
|
1880
1904
|
<monster-field-set data-monster-role="field-set-address" part="field-set field-set-address">
|
|
1881
1905
|
<label data-monster-role="field-label street-label" part="field-label street-label"
|
|
1882
|
-
class="grid-start-1"
|
|
1883
|
-
data-monster-replace="path:labels.street"></label>
|
|
1906
|
+
class="grid-start-1"></label>
|
|
1884
1907
|
<input data-monster-role="street-input" part="input input-street"
|
|
1885
1908
|
class="grid-start-2 grid-span-full"
|
|
1886
1909
|
type="text" name="street"
|
|
1887
1910
|
data-monster-attributes="placeholder path:labels.streetPlaceholder, autocomplete path:autocomplete.street, aria-label path:labels.streetAria" />
|
|
1888
1911
|
<label data-monster-role="field-label zip-label" part="field-label zip-label"
|
|
1889
|
-
class="grid-start-1"
|
|
1890
|
-
data-monster-replace="path:labels.zip"></label>
|
|
1912
|
+
class="grid-start-1"></label>
|
|
1891
1913
|
<input data-monster-role="zip-input" part="input input-zip"
|
|
1892
1914
|
class="grid-start-2"
|
|
1893
1915
|
type="text" name="zip"
|
|
1894
1916
|
data-monster-attributes="placeholder path:labels.zipPlaceholder, autocomplete path:autocomplete.zip, aria-label path:labels.zipAria" />
|
|
1895
1917
|
<label data-monster-role="field-label city-label" part="field-label city-label"
|
|
1896
|
-
class="grid-start-3"
|
|
1897
|
-
data-monster-replace="path:labels.city"></label>
|
|
1918
|
+
class="grid-start-3"></label>
|
|
1898
1919
|
<input data-monster-role="city-input" part="input input-city"
|
|
1899
1920
|
class="grid-start-4"
|
|
1900
1921
|
type="text" name="city"
|
|
1901
1922
|
data-monster-attributes="placeholder path:labels.cityPlaceholder, autocomplete path:autocomplete.city, aria-label path:labels.cityAria" />
|
|
1902
1923
|
<label data-monster-role="field-label country-label" part="field-label country-label"
|
|
1903
|
-
class="grid-start-1"
|
|
1904
|
-
data-monster-replace="path:labels.country"></label>
|
|
1924
|
+
class="grid-start-1"></label>
|
|
1905
1925
|
<input data-monster-role="country-input" part="input input-country"
|
|
1906
1926
|
class="grid-start-2 grid-span-full"
|
|
1907
1927
|
type="text" name="country"
|
|
@@ -1920,8 +1940,8 @@ function getTemplate() {
|
|
|
1920
1940
|
|
|
1921
1941
|
<section data-monster-role="panel" data-step="consents" part="panel panel-consents">
|
|
1922
1942
|
<monster-field-set data-monster-role="field-set-consents" part="field-set field-set-consents">
|
|
1923
|
-
<div data-monster-role="consents-title"
|
|
1924
|
-
|
|
1943
|
+
<div data-monster-role="consents-title"
|
|
1944
|
+
part="consents-title"></div>
|
|
1925
1945
|
<div data-monster-role="consents-list" part="consents-list"></div>
|
|
1926
1946
|
<slot name="consents-fields"></slot>
|
|
1927
1947
|
</monster-field-set>
|
|
@@ -962,7 +962,7 @@ class Select extends CustomControl {
|
|
|
962
962
|
|
|
963
963
|
new Processing(() => {
|
|
964
964
|
gatherState.call(this);
|
|
965
|
-
focusFilter.call(this);
|
|
965
|
+
focusFilter.call(this, { preventScroll: true });
|
|
966
966
|
})
|
|
967
967
|
.run()
|
|
968
968
|
.catch((e) => {
|
|
@@ -3793,6 +3793,10 @@ function getSelectPopperPositionOptions() {
|
|
|
3793
3793
|
popperOptions.placement = getDefaultSelectPopperPositionProfile().placement;
|
|
3794
3794
|
}
|
|
3795
3795
|
|
|
3796
|
+
if (!isString(popperOptions.strategy)) {
|
|
3797
|
+
popperOptions.strategy = getDefaultSelectPopperPositionProfile().strategy;
|
|
3798
|
+
}
|
|
3799
|
+
|
|
3796
3800
|
popperOptions.adaptiveSize = false;
|
|
3797
3801
|
popperOptions.hideWhenReferenceHidden = true;
|
|
3798
3802
|
|
|
@@ -3820,6 +3824,7 @@ function getSelectPopperPositionOptions() {
|
|
|
3820
3824
|
function getDefaultSelectPopperPositionProfile() {
|
|
3821
3825
|
return {
|
|
3822
3826
|
placement: "bottom-start",
|
|
3827
|
+
strategy: "fixed",
|
|
3823
3828
|
middleware: ["flip", "offset:4", "shift:crossAxis", "size"],
|
|
3824
3829
|
};
|
|
3825
3830
|
}
|
|
@@ -3903,7 +3908,7 @@ function activateCurrentOption(direction) {
|
|
|
3903
3908
|
}
|
|
3904
3909
|
}
|
|
3905
3910
|
if (found === false) {
|
|
3906
|
-
focusFilter.call(this);
|
|
3911
|
+
focusFilter.call(this, { preventScroll: true });
|
|
3907
3912
|
}
|
|
3908
3913
|
}
|
|
3909
3914
|
}
|
|
@@ -5130,7 +5135,7 @@ function show() {
|
|
|
5130
5135
|
|
|
5131
5136
|
setTotalText.call(this);
|
|
5132
5137
|
|
|
5133
|
-
focusFilter.call(this);
|
|
5138
|
+
focusFilter.call(this, { preventScroll: true });
|
|
5134
5139
|
|
|
5135
5140
|
if (shouldLazyLoadOptions.call(this)) {
|
|
5136
5141
|
if (this[lazyLoadRequestSymbol] instanceof Promise) {
|
|
@@ -5277,7 +5282,7 @@ function show() {
|
|
|
5277
5282
|
} else {
|
|
5278
5283
|
initTotal.call(self);
|
|
5279
5284
|
}
|
|
5280
|
-
focusFilter.call(this);
|
|
5285
|
+
focusFilter.call(this, { preventScroll: true });
|
|
5281
5286
|
return performSelectLayoutCycle
|
|
5282
5287
|
.call(this, SELECT_LAYOUT_REASON_ALL)
|
|
5283
5288
|
.then(() => {
|
|
@@ -6026,12 +6031,14 @@ function getTemplate() {
|
|
|
6026
6031
|
<div part="options" data-monster-role="options" data-monster-insert="options path:options"
|
|
6027
6032
|
tabindex="-1"></div>
|
|
6028
6033
|
</div>
|
|
6029
|
-
<
|
|
6030
|
-
|
|
6031
|
-
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
|
|
6034
|
+
<div part="pagination-footer" data-monster-role="pagination-footer">
|
|
6035
|
+
<div part="remote-info"
|
|
6036
|
+
data-monster-role="remote-info"
|
|
6037
|
+
data-monster-attributes="class path:classes.remoteInfo"
|
|
6038
|
+
data-monster-replace="path:messages.total"></div>
|
|
6039
|
+
<monster-pagination data-monster-role="pagination" part="pagination"
|
|
6040
|
+
data-monster-option-layout-mode="compact"></monster-pagination>
|
|
6041
|
+
</div>
|
|
6035
6042
|
<div part="no-options" data-monster-role="no-options"
|
|
6036
6043
|
data-monster-attributes="class path:classes.noOptions"
|
|
6037
6044
|
data-monster-replace="path:messages.emptyOptions"></div>
|
|
@@ -80,7 +80,12 @@ class Sheet extends CustomControl {
|
|
|
80
80
|
get defaults() {
|
|
81
81
|
return Object.assign({}, super.defaults, {
|
|
82
82
|
templates: { main: getTemplate() },
|
|
83
|
-
labels:
|
|
83
|
+
labels: Object.assign(
|
|
84
|
+
{
|
|
85
|
+
cell: "Column {column}, row {row}",
|
|
86
|
+
},
|
|
87
|
+
getTranslations(),
|
|
88
|
+
),
|
|
84
89
|
classes: {
|
|
85
90
|
button: "monster-button-outline-primary",
|
|
86
91
|
},
|
|
@@ -636,6 +641,12 @@ function buildCell(row, column, cells, isLastColumn) {
|
|
|
636
641
|
input.autocomplete = "off";
|
|
637
642
|
input.inputMode = "text";
|
|
638
643
|
input.placeholder = this.getOption("cell.placeholder", "");
|
|
644
|
+
input.setAttribute(
|
|
645
|
+
"aria-label",
|
|
646
|
+
String(this.getOption("labels.cell", "Column {column}, row {row}"))
|
|
647
|
+
.replaceAll("{column}", String(column.label ?? column.id))
|
|
648
|
+
.replaceAll("{row}", String(row.label ?? row.id)),
|
|
649
|
+
);
|
|
639
650
|
const value =
|
|
640
651
|
typeof cells === "function"
|
|
641
652
|
? cells(row.id, column.id)
|
|
@@ -1790,7 +1801,7 @@ function showContextMenu(clientX, clientY) {
|
|
|
1790
1801
|
const wrapper = this[gridWrapperSymbol];
|
|
1791
1802
|
if (!menu || !wrapper) return;
|
|
1792
1803
|
menu.hidden = false;
|
|
1793
|
-
menu.style.display = "
|
|
1804
|
+
menu.style.display = "flex";
|
|
1794
1805
|
const wrapperRect = wrapper.getBoundingClientRect();
|
|
1795
1806
|
const offsetX = clientX - wrapperRect.left + wrapper.scrollLeft;
|
|
1796
1807
|
const offsetY = clientY - wrapperRect.top + wrapper.scrollTop;
|