@watermarkinsights/ripple 5.19.0-alpha.9 → 5.19.1-alpha.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/dist/cjs/{app-globals-105475f9.js → app-globals-9dcc4582.js} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/priv-option-list.cjs.entry.js +2 -4
- package/dist/cjs/ripple.cjs.js +2 -2
- package/dist/cjs/wm-file.cjs.entry.js +1 -1
- package/dist/cjs/wm-option_2.cjs.entry.js +186 -95
- package/dist/cjs/wm-snackbar.cjs.entry.js +12 -16
- package/dist/cjs/wm-tag-input.cjs.entry.js +20 -11
- package/dist/cjs/wm-textarea.cjs.entry.js +1 -1
- package/dist/cjs/wm-timepicker.cjs.entry.js +2 -2
- package/dist/cjs/wm-toggletip.cjs.entry.js +3 -3
- package/dist/cjs/wm-uploader.cjs.entry.js +16 -12
- package/dist/collection/components/datepickers/datepicker.css +0 -31
- package/dist/collection/components/selects/priv-option-list/priv-option-list.js +2 -4
- package/dist/collection/components/selects/wm-select/wm-select.css +75 -51
- package/dist/collection/components/selects/wm-select/wm-select.js +197 -110
- package/dist/collection/components/wm-file/wm-file.css +3 -2
- package/dist/collection/components/wm-menuitem/wm-menuitem.css +0 -31
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.css +0 -31
- package/dist/collection/components/wm-pagination/wm-pagination.css +0 -31
- package/dist/collection/components/wm-search/wm-search.css +0 -31
- package/dist/collection/components/wm-snackbar/wm-snackbar.css +0 -31
- package/dist/collection/components/wm-snackbar/wm-snackbar.js +12 -16
- package/dist/collection/components/wm-tag-input/wm-tag-input.css +9 -8
- package/dist/collection/components/wm-tag-input/wm-tag-input.js +19 -10
- package/dist/collection/components/wm-textarea/wm-textarea.js +1 -1
- package/dist/collection/components/wm-timepicker/wm-timepicker.css +0 -31
- package/dist/collection/components/wm-timepicker/wm-timepicker.js +2 -2
- package/dist/collection/components/wm-toggletip/wm-toggletip.js +3 -3
- package/dist/collection/components/wm-uploader/wm-uploader.css +2 -33
- package/dist/collection/components/wm-uploader/wm-uploader.js +15 -11
- package/dist/collection/dev/uploader.js +4 -4
- package/dist/esm/{app-globals-d5f43c8e.js → app-globals-ef63936e.js} +1 -1
- package/dist/esm/{chartFunctions-3a54f8ac.js → chartFunctions-613e9c87.js} +1 -1
- package/dist/esm/{functions-669184a6.js → functions-38e392cb.js} +1 -1
- package/dist/esm/{intl-7906e2d7.js → intl-0b8f342e.js} +1 -1
- package/dist/esm/loader.js +2 -2
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/priv-calendar.entry.js +1 -1
- package/dist/esm/priv-chart-popover.entry.js +1 -1
- package/dist/esm/priv-option-list.entry.js +4 -6
- package/dist/esm/ripple.js +2 -2
- package/dist/esm/wm-action-menu_2.entry.js +1 -1
- package/dist/esm/wm-button.entry.js +1 -1
- package/dist/esm/wm-chart.entry.js +3 -3
- package/dist/esm/wm-date-range.entry.js +1 -1
- package/dist/esm/wm-datepicker.entry.js +1 -1
- package/dist/esm/wm-file.entry.js +2 -2
- package/dist/esm/wm-flyout.entry.js +2 -2
- package/dist/esm/wm-input.entry.js +2 -2
- package/dist/esm/wm-line-chart.entry.js +3 -3
- package/dist/esm/wm-modal-pss_3.entry.js +2 -2
- package/dist/esm/wm-modal_3.entry.js +2 -2
- package/dist/esm/wm-navigation_3.entry.js +2 -2
- package/dist/esm/wm-navigator.entry.js +1 -1
- package/dist/esm/wm-nested-select.entry.js +2 -2
- package/dist/esm/wm-optgroup.entry.js +1 -1
- package/dist/esm/wm-option_2.entry.js +188 -97
- package/dist/esm/wm-pagination.entry.js +2 -2
- package/dist/esm/wm-progress-indicator_3.entry.js +2 -2
- package/dist/esm/wm-search.entry.js +2 -2
- package/dist/esm/wm-snackbar.entry.js +14 -18
- package/dist/esm/wm-tab-item_3.entry.js +1 -1
- package/dist/esm/wm-tag-input.entry.js +22 -13
- package/dist/esm/wm-tag-option.entry.js +1 -1
- package/dist/esm/wm-textarea.entry.js +3 -3
- package/dist/esm/wm-timepicker.entry.js +3 -3
- package/dist/esm/wm-toggletip.entry.js +4 -4
- package/dist/esm/wm-uploader.entry.js +18 -14
- package/dist/esm-es5/{app-globals-d5f43c8e.js → app-globals-ef63936e.js} +1 -1
- package/dist/esm-es5/{chartFunctions-3a54f8ac.js → chartFunctions-613e9c87.js} +1 -1
- package/dist/esm-es5/{functions-669184a6.js → functions-38e392cb.js} +1 -1
- package/dist/esm-es5/{intl-7906e2d7.js → intl-0b8f342e.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/priv-calendar.entry.js +1 -1
- package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
- package/dist/esm-es5/priv-option-list.entry.js +1 -1
- package/dist/esm-es5/ripple.js +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
- package/dist/esm-es5/wm-button.entry.js +1 -1
- package/dist/esm-es5/wm-chart.entry.js +1 -1
- package/dist/esm-es5/wm-date-range.entry.js +1 -1
- package/dist/esm-es5/wm-datepicker.entry.js +1 -1
- package/dist/esm-es5/wm-file.entry.js +1 -1
- package/dist/esm-es5/wm-flyout.entry.js +1 -1
- package/dist/esm-es5/wm-input.entry.js +1 -1
- package/dist/esm-es5/wm-line-chart.entry.js +1 -1
- package/dist/esm-es5/wm-modal-pss_3.entry.js +1 -1
- package/dist/esm-es5/wm-modal_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigator.entry.js +1 -1
- package/dist/esm-es5/wm-nested-select.entry.js +1 -1
- package/dist/esm-es5/wm-optgroup.entry.js +1 -1
- package/dist/esm-es5/wm-option_2.entry.js +1 -1
- package/dist/esm-es5/wm-pagination.entry.js +1 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
- package/dist/esm-es5/wm-search.entry.js +1 -1
- package/dist/esm-es5/wm-snackbar.entry.js +1 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
- package/dist/esm-es5/wm-tag-input.entry.js +1 -1
- package/dist/esm-es5/wm-tag-option.entry.js +1 -1
- package/dist/esm-es5/wm-textarea.entry.js +1 -1
- package/dist/esm-es5/wm-timepicker.entry.js +1 -1
- package/dist/esm-es5/wm-toggletip.entry.js +1 -1
- package/dist/esm-es5/wm-uploader.entry.js +1 -1
- package/dist/ripple/{p-6d32911c.system.entry.js → p-00eaa361.system.entry.js} +1 -1
- package/dist/ripple/{p-c85dae6b.entry.js → p-0825151e.entry.js} +1 -1
- package/dist/ripple/{p-7a21aa55.entry.js → p-0a46b050.entry.js} +1 -1
- package/dist/ripple/{p-c70fa14f.entry.js → p-0bce3f83.entry.js} +1 -1
- package/dist/ripple/{p-69b38da5.entry.js → p-118093e1.entry.js} +1 -1
- package/dist/ripple/p-12b27fa7.entry.js +1 -0
- package/dist/ripple/{p-1eb2ec31.system.entry.js → p-1de87de8.system.entry.js} +1 -1
- package/dist/ripple/{p-ec9f782e.entry.js → p-26667070.entry.js} +1 -1
- package/dist/ripple/{p-55cdfcb4.system.entry.js → p-2b7259cb.system.entry.js} +1 -1
- package/dist/ripple/{p-ff6b7376.system.entry.js → p-2db6573e.system.entry.js} +1 -1
- package/dist/ripple/{p-4175c4b0.system.entry.js → p-2f82bfb9.system.entry.js} +1 -1
- package/dist/ripple/{p-6bf103b8.system.entry.js → p-303bf140.system.entry.js} +1 -1
- package/dist/ripple/{p-1efa25b5.system.entry.js → p-3133ce3c.system.entry.js} +1 -1
- package/dist/ripple/{p-9ac6957b.entry.js → p-31bac55d.entry.js} +1 -1
- package/dist/ripple/{p-57f9c7c3.entry.js → p-35d93c19.entry.js} +1 -1
- package/dist/ripple/p-374f46f4.entry.js +1 -0
- package/dist/ripple/{p-21c100d8.entry.js → p-39a4934f.entry.js} +1 -1
- package/dist/ripple/{p-2f10c1fa.system.entry.js → p-3d8754ba.system.entry.js} +1 -1
- package/dist/ripple/{p-92fe0ea4.entry.js → p-41664372.entry.js} +1 -1
- package/dist/ripple/{p-c8dfc321.system.entry.js → p-44cc05f6.system.entry.js} +1 -1
- package/dist/ripple/{p-c73882de.system.entry.js → p-4602304a.system.entry.js} +1 -1
- package/dist/ripple/{p-bb364d6b.entry.js → p-4b8f7d1e.entry.js} +1 -1
- package/dist/ripple/{p-b55883ee.entry.js → p-4d0abf7a.entry.js} +1 -1
- package/dist/ripple/{p-26ab5004.system.entry.js → p-5405df80.system.entry.js} +1 -1
- package/dist/ripple/{p-88a7ccee.system.js → p-608971f2.system.js} +1 -1
- package/dist/ripple/{p-6ec4129b.entry.js → p-60e16c79.entry.js} +1 -1
- package/dist/ripple/{p-561d1898.system.entry.js → p-63233a4b.system.entry.js} +1 -1
- package/dist/ripple/{p-95f19440.system.js → p-65abcbb4.system.js} +1 -1
- package/dist/ripple/{p-65d3f9c4.system.entry.js → p-667fdcbb.system.entry.js} +1 -1
- package/dist/ripple/{p-68e90b50.system.entry.js → p-6a70dc0b.system.entry.js} +1 -1
- package/dist/ripple/p-6f1a160e.system.entry.js +1 -0
- package/dist/ripple/p-6f38976c.entry.js +1 -0
- package/dist/ripple/p-700ca4a0.entry.js +1 -0
- package/dist/ripple/{p-7394f4e9.system.entry.js → p-7134a305.system.entry.js} +1 -1
- package/dist/ripple/{p-047e510d.entry.js → p-7c3bf608.entry.js} +1 -1
- package/dist/ripple/{p-176dcfc0.system.js → p-7edd25f7.system.js} +1 -1
- package/dist/ripple/{p-350f9314.system.entry.js → p-85830dbc.system.entry.js} +1 -1
- package/dist/ripple/{p-ebfa5876.entry.js → p-86a61a2a.entry.js} +1 -1
- package/dist/ripple/{p-009a6e5a.entry.js → p-8e2f3a45.entry.js} +1 -1
- package/dist/ripple/{p-a0ef456d.entry.js → p-8ec6ec53.entry.js} +1 -1
- package/dist/ripple/{p-71cc21a4.entry.js → p-908057b2.entry.js} +1 -1
- package/dist/ripple/{p-dbc3a44d.entry.js → p-9202d9e9.entry.js} +1 -1
- package/dist/ripple/{p-0ae9b6d3.js → p-92c8361f.js} +1 -1
- package/dist/ripple/p-957f13fb.entry.js +1 -0
- package/dist/ripple/{p-1ad6c15b.entry.js → p-9609d8e7.entry.js} +1 -1
- package/dist/ripple/{p-3c9972a6.system.entry.js → p-960d2cf0.system.entry.js} +1 -1
- package/dist/ripple/{p-22d4c7e0.system.entry.js → p-96f86eb4.system.entry.js} +1 -1
- package/dist/ripple/{p-ea10c498.entry.js → p-9e89655f.entry.js} +1 -1
- package/dist/ripple/{p-3fa83eda.js → p-a112a9da.js} +1 -1
- package/dist/ripple/{p-daac445c.system.entry.js → p-a14dee02.system.entry.js} +1 -1
- package/dist/ripple/{p-222624ae.entry.js → p-a5c5c64c.entry.js} +1 -1
- package/dist/ripple/{p-dfa30c3d.entry.js → p-a7cde3fc.entry.js} +1 -1
- package/dist/ripple/{p-acb4d87c.system.entry.js → p-abcdd7be.system.entry.js} +1 -1
- package/dist/ripple/p-aebbb74c.system.js +1 -0
- package/dist/ripple/{p-6a40014e.system.entry.js → p-b1fb99e4.system.entry.js} +1 -1
- package/dist/ripple/{p-91669f66.js → p-b511ebfd.js} +1 -1
- package/dist/ripple/{p-93b6ba69.system.entry.js → p-bde7e77b.system.entry.js} +1 -1
- package/dist/ripple/{p-95ce8c39.entry.js → p-be87d02c.entry.js} +1 -1
- package/dist/ripple/{p-3c958668.system.js → p-bebc63bb.system.js} +1 -1
- package/dist/ripple/{p-c0f4f1ea.system.entry.js → p-c7f3ef7f.system.entry.js} +1 -1
- package/dist/ripple/{p-a6f4dd01.system.entry.js → p-ce9bb8ac.system.entry.js} +1 -1
- package/dist/ripple/{p-1806e50b.js → p-d815809f.js} +1 -1
- package/dist/ripple/{p-fb61a10e.system.entry.js → p-e5c34af5.system.entry.js} +1 -1
- package/dist/ripple/{p-e1a15515.system.entry.js → p-e660d0b8.system.entry.js} +1 -1
- package/dist/ripple/{p-66489ded.entry.js → p-ecd1c2ba.entry.js} +1 -1
- package/dist/ripple/{p-5bf2eb50.system.entry.js → p-f4390a0a.system.entry.js} +1 -1
- package/dist/ripple/{p-ae2520e4.entry.js → p-f91fc18d.entry.js} +1 -1
- package/dist/ripple/{p-1841c319.system.entry.js → p-f9bbb123.system.entry.js} +1 -1
- package/dist/ripple/{p-25c17efe.system.entry.js → p-fbad04d7.system.entry.js} +1 -1
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/ripple/ripple.js +1 -1
- package/dist/types/components/selects/wm-select/wm-select.d.ts +17 -9
- package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +3 -1
- package/package.json +2 -2
- package/dist/ripple/p-03759d86.system.entry.js +0 -1
- package/dist/ripple/p-368f2fe0.system.js +0 -1
- package/dist/ripple/p-8e694216.entry.js +0 -1
- package/dist/ripple/p-9e1ea6e2.entry.js +0 -1
- package/dist/ripple/p-a578f968.entry.js +0 -1
- package/dist/ripple/p-b40454d2.entry.js +0 -1
- package/dist/ripple/p-bb745e54.entry.js +0 -1
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { forceUpdate } from "@stencil/core";
|
|
3
|
-
import { getTextDir,
|
|
3
|
+
import { getTextDir, toBool, handleDisabledAttribute, showTooltip, hideTooltip, debounce, findAllScrollableParents, } from "../../../global/functions";
|
|
4
4
|
import { globalMessages, selectMessages } from "../../../global/intl";
|
|
5
5
|
export class Select {
|
|
6
6
|
constructor() {
|
|
7
|
-
this.
|
|
7
|
+
this.scrollableParents = [];
|
|
8
|
+
this.returnFocus = false;
|
|
9
|
+
this.hasAnchor = CSS.supports("top", "anchor(bottom)"); // for FF polyfill
|
|
8
10
|
//////////////////////////////////////
|
|
9
11
|
// for multiselect button text
|
|
10
12
|
this.overflowCount = 0;
|
|
11
13
|
this.displayedOptions = [];
|
|
14
|
+
this.previousDisplayedOptions = [];
|
|
15
|
+
this.debouncedScroll = debounce(() => {
|
|
16
|
+
if (this.hasAnchor) {
|
|
17
|
+
const popoverRect = this.dropdownEl.getBoundingClientRect();
|
|
18
|
+
const anchorRect = this.buttonEl.getBoundingClientRect();
|
|
19
|
+
// Heuristic: Popover is ABOVE the anchor (it opened upwards)
|
|
20
|
+
this.isUp = popoverRect.bottom < anchorRect.top;
|
|
21
|
+
this.isExpanded = true;
|
|
22
|
+
this.optionListEl.handleInitialFocus(this.elToFocus);
|
|
23
|
+
this.elToFocus = undefined;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.dropdownPosition();
|
|
27
|
+
}
|
|
28
|
+
}, 100);
|
|
29
|
+
this.debouncedResize = debounce(() => {
|
|
30
|
+
this.dropdownPosition();
|
|
31
|
+
}, 100);
|
|
12
32
|
this.disabled = false;
|
|
13
33
|
this.maxHeight = "200px";
|
|
14
34
|
this.label = undefined;
|
|
@@ -22,6 +42,8 @@ export class Select {
|
|
|
22
42
|
this.searchPlaceholder = selectMessages.searchPlaceholder;
|
|
23
43
|
this.allSelectedMessage = selectMessages.allSelected;
|
|
24
44
|
this.isExpanded = false;
|
|
45
|
+
this.isUp = false;
|
|
46
|
+
this.isHidden = false;
|
|
25
47
|
this.announcement = "";
|
|
26
48
|
}
|
|
27
49
|
get childOptions() {
|
|
@@ -40,58 +62,149 @@ export class Select {
|
|
|
40
62
|
//////////////////////////////////////
|
|
41
63
|
handleOptionSelection() {
|
|
42
64
|
if (!this.multiple) {
|
|
43
|
-
this.
|
|
65
|
+
this.returnFocus = true;
|
|
66
|
+
this.dropdownEl.hidePopover();
|
|
44
67
|
}
|
|
45
68
|
}
|
|
46
69
|
handleChildEnter() {
|
|
47
70
|
// only occurs for multiselects. handle the click, then close
|
|
48
|
-
this.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (!
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
this.returnFocus = true;
|
|
72
|
+
this.dropdownEl.hidePopover();
|
|
73
|
+
}
|
|
74
|
+
closeDropdownOnEscape() {
|
|
75
|
+
this.returnFocus = true;
|
|
76
|
+
this.dropdownEl.hidePopover();
|
|
77
|
+
}
|
|
78
|
+
handleBeforeToggle() {
|
|
79
|
+
if (!this.hasAnchor) {
|
|
80
|
+
// Start hidden to prevent flash during positioning calculation
|
|
81
|
+
this.isHidden = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
handleToggle(ev) {
|
|
85
|
+
ev.newState === "open" ? this.open() : this.close();
|
|
86
|
+
}
|
|
87
|
+
dropdownPosition() {
|
|
88
|
+
// polyfill for opening up or down + positioning according to screen
|
|
89
|
+
// (must recalculate on scroll, resize)
|
|
90
|
+
// Using transform for better performance - only affects composite layer, no layout recalculation
|
|
91
|
+
const buttonElRect = this.buttonEl.getBoundingClientRect();
|
|
92
|
+
const spaceAbove = buttonElRect.top;
|
|
93
|
+
const spaceBelow = document.documentElement.clientHeight - buttonElRect.bottom;
|
|
94
|
+
const dropdownHeight = this.dropdownEl.clientHeight;
|
|
95
|
+
// Clear any previously set positioning properties
|
|
96
|
+
this.el.style.removeProperty("--dropdown-translate-y");
|
|
97
|
+
this.el.style.removeProperty("--dropdown-max-height");
|
|
98
|
+
this.el.style.removeProperty("--dropdown-left");
|
|
99
|
+
// Set horizontal position and width to match button
|
|
100
|
+
this.el.style.setProperty("--dropdown-left", buttonElRect.left + "px");
|
|
101
|
+
this.el.style.setProperty("--button-width", buttonElRect.width + "px");
|
|
102
|
+
if (dropdownHeight <= spaceBelow) {
|
|
103
|
+
// Case 1: Enough space below - position dropdown below the button
|
|
104
|
+
this.el.style.setProperty("--dropdown-translate-y", buttonElRect.bottom + "px");
|
|
105
|
+
}
|
|
106
|
+
else if (dropdownHeight <= spaceAbove) {
|
|
107
|
+
// Case 2: Not enough space below, but enough above - position dropdown above the button
|
|
108
|
+
this.el.style.setProperty("--dropdown-translate-y", buttonElRect.top - dropdownHeight + "px");
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// Case 3: Not enough space in either direction - use the larger available space and constrain height
|
|
112
|
+
if (spaceBelow >= spaceAbove) {
|
|
113
|
+
// Use space below and constrain dropdown height
|
|
114
|
+
this.el.style.setProperty("--dropdown-translate-y", buttonElRect.bottom + "px");
|
|
115
|
+
this.el.style.setProperty("--dropdown-max-height", spaceBelow + "px");
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
// Use space above and constrain dropdown height
|
|
119
|
+
this.el.style.setProperty("--dropdown-translate-y", "0px");
|
|
120
|
+
this.el.style.setProperty("--dropdown-max-height", spaceAbove + "px");
|
|
121
|
+
}
|
|
61
122
|
}
|
|
123
|
+
this.isHidden = false;
|
|
62
124
|
}
|
|
63
|
-
|
|
64
|
-
if (!
|
|
65
|
-
|
|
125
|
+
open() {
|
|
126
|
+
if (!this.isExpanded && !this.isDisabled) {
|
|
127
|
+
// polyfill for browsers without anchor() support (FF)
|
|
128
|
+
if (!this.hasAnchor) {
|
|
129
|
+
this.dropdownPosition();
|
|
130
|
+
}
|
|
131
|
+
requestAnimationFrame(() => {
|
|
132
|
+
const popoverRect = this.dropdownEl.getBoundingClientRect();
|
|
133
|
+
const anchorRect = this.buttonEl.getBoundingClientRect();
|
|
134
|
+
// Heuristic: Popover is ABOVE the anchor (it opened upwards)
|
|
135
|
+
this.isUp = popoverRect.top < anchorRect.top;
|
|
136
|
+
this.isExpanded = true;
|
|
137
|
+
this.optionListEl.handleInitialFocus(this.elToFocus);
|
|
138
|
+
this.elToFocus = undefined;
|
|
139
|
+
});
|
|
66
140
|
}
|
|
67
141
|
}
|
|
68
|
-
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
|
|
142
|
+
close() {
|
|
143
|
+
if (this.isExpanded) {
|
|
144
|
+
this.isExpanded = false;
|
|
145
|
+
this.optionListEl.unfocusAll();
|
|
146
|
+
window.setTimeout(() => {
|
|
147
|
+
if (!this.hasAnchor) {
|
|
148
|
+
this.isHidden = true;
|
|
149
|
+
}
|
|
150
|
+
if (this.optionListEl.multiple) {
|
|
151
|
+
this.optionListEl.updateOptionVisibility();
|
|
152
|
+
}
|
|
153
|
+
// clear search field, reset filtered / bolded state of wm-options
|
|
154
|
+
if (this.search) {
|
|
155
|
+
this.optionListEl.clearSearch();
|
|
156
|
+
}
|
|
157
|
+
}, 150);
|
|
158
|
+
if (this.returnFocus) {
|
|
159
|
+
requestAnimationFrame(() => {
|
|
160
|
+
this.buttonEl.focus();
|
|
161
|
+
this.returnFocus = false;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
72
164
|
}
|
|
73
165
|
}
|
|
74
166
|
handleKey(ev) {
|
|
75
167
|
switch (ev.key) {
|
|
76
168
|
case "Tab":
|
|
77
169
|
// if tabbing backwards, close and return focus to button. Otherwise, close but do not redirect focus.
|
|
78
|
-
this.
|
|
170
|
+
if (this.isExpanded && ev.shiftKey) {
|
|
171
|
+
this.returnFocus = true;
|
|
172
|
+
}
|
|
173
|
+
this.dropdownEl.hidePopover();
|
|
79
174
|
break;
|
|
80
175
|
case "ArrowDown":
|
|
81
176
|
if (this.isExpanded === false) {
|
|
82
177
|
ev.preventDefault();
|
|
83
|
-
this.
|
|
178
|
+
this.elToFocus = "next";
|
|
179
|
+
this.dropdownEl.showPopover();
|
|
84
180
|
}
|
|
85
181
|
break;
|
|
86
182
|
case "ArrowUp":
|
|
87
183
|
if (this.isExpanded === false) {
|
|
88
184
|
ev.preventDefault();
|
|
89
|
-
this.
|
|
185
|
+
this.elToFocus = "previous";
|
|
186
|
+
this.dropdownEl.showPopover();
|
|
90
187
|
}
|
|
91
188
|
break;
|
|
92
189
|
}
|
|
93
190
|
}
|
|
191
|
+
handleResize() {
|
|
192
|
+
if (!this.hasAnchor && this.isExpanded) {
|
|
193
|
+
this.isHidden = true;
|
|
194
|
+
this.debouncedResize();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
handleScroll() {
|
|
198
|
+
if (this.isExpanded) {
|
|
199
|
+
this.isHidden = true;
|
|
200
|
+
this.debouncedScroll();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
94
203
|
componentWillLoad() {
|
|
204
|
+
if (!this.hasAnchor) {
|
|
205
|
+
// Start hidden to prevent flash on first load
|
|
206
|
+
this.isHidden = true;
|
|
207
|
+
}
|
|
95
208
|
if (!this.label) {
|
|
96
209
|
console.error("For accessibility purposes, this component requires a label (even if `label-position` is set to `none`).");
|
|
97
210
|
}
|
|
@@ -108,8 +221,6 @@ export class Select {
|
|
|
108
221
|
});
|
|
109
222
|
}
|
|
110
223
|
handleChildChange() {
|
|
111
|
-
// on update of children or children selected state, reset button text and rerender
|
|
112
|
-
this.setButtonText();
|
|
113
224
|
forceUpdate(this.el);
|
|
114
225
|
if (this.multiple) {
|
|
115
226
|
// update state of clone options
|
|
@@ -118,43 +229,19 @@ export class Select {
|
|
|
118
229
|
}
|
|
119
230
|
componentDidLoad() {
|
|
120
231
|
this.wmSelectDidLoad.emit();
|
|
121
|
-
this.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
this.isExpanded = true;
|
|
129
|
-
this.dropdownEl.classList.add("open");
|
|
130
|
-
this.dropdownEl.classList.remove("hidden");
|
|
131
|
-
window.requestAnimationFrame(() => {
|
|
132
|
-
this.optionListEl.handleInitialFocus(optionToSelect);
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
close(returnFocus = true) {
|
|
137
|
-
if (this.isExpanded) {
|
|
138
|
-
this.isExpanded = false;
|
|
139
|
-
this.optionListEl.unfocusAll();
|
|
140
|
-
this.dropdownEl.classList.remove("open");
|
|
141
|
-
window.setTimeout(() => {
|
|
142
|
-
this.dropdownEl.classList.add("hidden");
|
|
143
|
-
if (this.optionListEl.multiple) {
|
|
144
|
-
this.optionListEl.updateOptionVisibility();
|
|
232
|
+
if (!this.hasAnchor) {
|
|
233
|
+
this.scrollableParents = findAllScrollableParents(this.el);
|
|
234
|
+
// Add scroll listeners to all scrollable parents
|
|
235
|
+
this.scrollableParents.forEach((parent) => {
|
|
236
|
+
if (parent === document.documentElement) {
|
|
237
|
+
// For document element, listen to window scroll event
|
|
238
|
+
window.addEventListener("scroll", () => this.handleScroll());
|
|
145
239
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
this.
|
|
149
|
-
}
|
|
150
|
-
// Returns focus to button after popup closes (no need if user is tabbing)
|
|
151
|
-
// Delay is necessary for screenreader to get new expanded state before focus
|
|
152
|
-
// window.requestAnimationFrame is probably enough, but since we are already using setTimeout it may as well be here
|
|
153
|
-
// also UX wise, it makes sense for the button to only be focused after the animation is complete
|
|
154
|
-
if (returnFocus) {
|
|
155
|
-
this.buttonEl.focus();
|
|
240
|
+
else {
|
|
241
|
+
// For regular elements, listen to their scroll event
|
|
242
|
+
parent.addEventListener("scroll", () => this.handleScroll());
|
|
156
243
|
}
|
|
157
|
-
}
|
|
244
|
+
});
|
|
158
245
|
}
|
|
159
246
|
}
|
|
160
247
|
announceError() {
|
|
@@ -168,7 +255,6 @@ export class Select {
|
|
|
168
255
|
handleComponentBlur(ev) {
|
|
169
256
|
// Do not close or emit custom blur event when blurring to an element inside (wm-option)
|
|
170
257
|
if (!this.el.contains(ev.relatedTarget)) {
|
|
171
|
-
this.close(false);
|
|
172
258
|
this.wmSelectBlurred.emit();
|
|
173
259
|
}
|
|
174
260
|
}
|
|
@@ -178,28 +264,6 @@ export class Select {
|
|
|
178
264
|
showTooltip("right", ev.target, this.label);
|
|
179
265
|
}
|
|
180
266
|
}
|
|
181
|
-
setButtonText() {
|
|
182
|
-
this.displayedOptions = this.childOptions.filter((x) => x.selected);
|
|
183
|
-
// handle overflow + counter for multiselect
|
|
184
|
-
if (this.multiple) {
|
|
185
|
-
// this is a fixed measurement accounting for the max width of a 3 character overflow counter
|
|
186
|
-
const overflowCounterWidth = 38;
|
|
187
|
-
const computedStyle = window.getComputedStyle(this.buttonEl);
|
|
188
|
-
// there seems to be no quick way to get an elements width without padding, except for subtracting padding manually
|
|
189
|
-
const paddingLeft = parseInt(computedStyle.getPropertyValue("padding-left").slice(0, -2));
|
|
190
|
-
const paddingRight = parseInt(computedStyle.getPropertyValue("padding-right").slice(0, -2));
|
|
191
|
-
const availableSpace = this.buttonEl.clientWidth - paddingLeft - paddingRight - overflowCounterWidth;
|
|
192
|
-
this.overflowCount = 0;
|
|
193
|
-
this.measurementAreaEl.textContent = this.displayedOptions.map((x) => x.textContent).join(", ");
|
|
194
|
-
let optionsTotalWidth = this.measurementAreaEl.clientWidth;
|
|
195
|
-
while (optionsTotalWidth > availableSpace && this.displayedOptions.length > 1) {
|
|
196
|
-
this.overflowCount++;
|
|
197
|
-
this.displayedOptions.pop();
|
|
198
|
-
this.measurementAreaEl.textContent = this.displayedOptions.map((x) => x.textContent).join(", ");
|
|
199
|
-
optionsTotalWidth = this.measurementAreaEl.clientWidth;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
267
|
announce(message) {
|
|
204
268
|
// \u00A0 is a non-breaking space character, which causes the message to be read as a new one
|
|
205
269
|
if (this.liveRegionEl.textContent === message) {
|
|
@@ -208,6 +272,7 @@ export class Select {
|
|
|
208
272
|
this.announcement = message;
|
|
209
273
|
}
|
|
210
274
|
renderButtonText() {
|
|
275
|
+
this.displayedOptions = this.childOptions.filter((x) => x.selected);
|
|
211
276
|
if (this.multiple && this.displayedOptions.length < 1) {
|
|
212
277
|
return h("span", null, this.placeholder);
|
|
213
278
|
}
|
|
@@ -215,6 +280,28 @@ export class Select {
|
|
|
215
280
|
return this.allSelectedMessage;
|
|
216
281
|
}
|
|
217
282
|
else {
|
|
283
|
+
// handle overflow + counter for multiselect
|
|
284
|
+
// only bother if things have changed
|
|
285
|
+
const hasChanged = this.displayedOptions !== this.previousDisplayedOptions;
|
|
286
|
+
if (this.multiple && hasChanged) {
|
|
287
|
+
// this is a fixed measurement accounting for the max width of a 3 character overflow counter
|
|
288
|
+
const overflowCounterWidth = 38;
|
|
289
|
+
const computedStyle = window.getComputedStyle(this.buttonEl);
|
|
290
|
+
// there seems to be no quick way to get an elements width without padding, except for subtracting padding manually
|
|
291
|
+
const paddingLeft = parseInt(computedStyle.getPropertyValue("padding-left").slice(0, -2));
|
|
292
|
+
const paddingRight = parseInt(computedStyle.getPropertyValue("padding-right").slice(0, -2));
|
|
293
|
+
const availableSpace = this.buttonEl.clientWidth - paddingLeft - paddingRight - overflowCounterWidth;
|
|
294
|
+
this.overflowCount = 0;
|
|
295
|
+
this.measurementAreaEl.textContent = this.displayedOptions.map((x) => x.textContent).join(", ");
|
|
296
|
+
let optionsTotalWidth = this.measurementAreaEl.clientWidth;
|
|
297
|
+
while (optionsTotalWidth > availableSpace && this.displayedOptions.length > 1) {
|
|
298
|
+
this.overflowCount++;
|
|
299
|
+
this.displayedOptions.pop();
|
|
300
|
+
this.measurementAreaEl.textContent = this.displayedOptions.map((x) => x.textContent).join(", ");
|
|
301
|
+
optionsTotalWidth = this.measurementAreaEl.clientWidth;
|
|
302
|
+
}
|
|
303
|
+
this.previousDisplayedOptions = this.displayedOptions;
|
|
304
|
+
}
|
|
218
305
|
return this.displayedOptions.map((x, idx) => (h("span", null, idx > 0 ? ", " : "", x.textContent)));
|
|
219
306
|
}
|
|
220
307
|
}
|
|
@@ -225,18 +312,22 @@ export class Select {
|
|
|
225
312
|
}
|
|
226
313
|
render() {
|
|
227
314
|
const showSubinfo = !this.multiple && this.selectedOptions.length > 0 && this.selectedOptions[0].subinfo;
|
|
228
|
-
|
|
229
|
-
id: "selectbtn",
|
|
230
|
-
["disabled"]: this.isDisabled,
|
|
231
|
-
["aria-controls"]: "list",
|
|
232
|
-
["aria-labelledby"]: "label selectbtn",
|
|
233
|
-
["aria-describedby"]: "error",
|
|
234
|
-
["aria-expanded"]: this.isExpanded ? "true" : "false",
|
|
235
|
-
onClick: () => (this.isExpanded ? this.close() : this.open()),
|
|
236
|
-
};
|
|
237
|
-
return (h(Host, { key: '27f57d30b836eac8dc27ae98a425015d86a0948b', onBlur: (ev) => this.handleComponentBlur(ev) }, h("div", { key: '8f48d8e8d616244350e61d6e81f350640131bbf0', class: `wrapper ${getTextDir()} label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { key: '39d3bcec9b67d671a6bdbb6a3ee738832189ea51', ref: (el) => (this.labelEl = el), class: "label-wrapper" }, h("label", { key: 'b0bb90a215ac20de94afa8dba56e839bdc590dc1', class: "label", id: "label", htmlFor: "selectbtn", onMouseEnter: (ev) => this.handleLabelMouseEnter(ev), onMouseLeave: () => hideTooltip() }, this.label),
|
|
315
|
+
return (h(Host, { key: 'f73046e3e0d19f90e1de9f6c104b186159e08551', onBlur: (ev) => this.handleComponentBlur(ev) }, h("div", { key: '78f69feb04ef0436bb3b7f0bdeb08c67c69aa025', class: `wrapper ${getTextDir()} label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { key: 'a3a54f3c4b01271bb472a2dcaeff653ae37191b8', class: "label-wrapper" }, h("label", { key: 'fac48d7e7a6ee92a6c28bcc6d76aa9b0358cb2fa', class: "label", id: "label", htmlFor: "selectbtn", onMouseEnter: (ev) => this.handleLabelMouseEnter(ev), onMouseLeave: () => hideTooltip() }, this.label),
|
|
238
316
|
// we can't use aria-required because the listbox is in a sub-component and it is not announced
|
|
239
|
-
this.requiredField && (h("span", { key: '
|
|
317
|
+
this.requiredField && (h("span", { key: 'a78da94fc8742122542de24709dae541058aeab1', class: "required" }, h("span", { key: '055fb76d88b0680ede31d3c700a640b5c1cb498f', class: "sr-only" }, globalMessages.requiredField), h("span", { key: 'e1db2d800c6b5789d8a50ce73b02899b4c8cf105', "aria-hidden": "true" }, "*")))), h("div", { key: '9a1b34ee65e711a6bfd55149af12ed03899294cc', class: "button-wrapper" }, h("button", { key: 'b7c86d83006cb532787d3f1df0c9c9f3b54470e7', id: "selectbtn", disabled: this.isDisabled, "aria-labelledby": "label selectbtn", "aria-describedby": "error", popoverTarget: "dropdown", popoverTargetAction: "toggle", class: "displayedoption", ref: (el) => (this.buttonEl = el) }, h("span", { key: 'ed2cc72a353f2bae29fdd5d8ea3f5b5dedc85c6b', class: `overflowcontrol ${showSubinfo ? "hassubinfo" : ""}` }, h("span", { key: 'cd68f6e2d0200649a57bb8f8c9c7ad423c551848', class: "button-text" }, this.renderButtonText()), showSubinfo && h("span", { key: '2501335ceaa6612cd720c71b0ea3c6efb68fa698', class: "subinfo" }, this.selectedOptions[0].subinfo)), h("div", { key: 'dacf8d5e2223a9700854ef4fac3ecabf1c8702a2', class: `expand-icon svg-icon ${this.isExpanded ? "svg-expand-less" : "svg-expand-more"}` }), this.renderOverflowCount(), h("div", { key: '161a40394450b4bac8ac91435a2b03ef9a0f8277', ref: (el) => (this.measurementAreaEl = el), class: "measurement-area", "aria-hidden": "true" })), h("div", { key: 'ed6cdbdfe2d290440b1bd33938b4cee31a70047e',
|
|
318
|
+
// is-open is for the CSS transition in modern browsers
|
|
319
|
+
// hidden is to wait for position calculations in Firefox
|
|
320
|
+
class: `dropdown ${this.isExpanded ? "is-open" : ""} ${this.isHidden ? "hidden" : ""} ${this.isUp ? "upward" : ""}`, id: "dropdown", popover: "auto", ref: (el) => (this.dropdownEl = el),
|
|
321
|
+
// @ts-ignore -- don't tell typescript but we're in the future
|
|
322
|
+
onToggle: (ev) => this.handleToggle(ev) }, h("priv-option-list", { key: '14ab958ca5cb5a3ac3fa970ed138ec5b47089779', ref: (el) => (this.optionListEl = el), multiple: this.multiple, search: this.search, selectAll: this.selectAll, maxHeight: this.maxHeight, searchPlaceholder: this.searchPlaceholder, onOptionListCloseRequested: () => {
|
|
323
|
+
this.dropdownEl.hidePopover();
|
|
324
|
+
}, onOptionListAllSelected: () => {
|
|
325
|
+
this.returnFocus = true;
|
|
326
|
+
this.wmSelectAllSelected.emit();
|
|
327
|
+
}, onOptionListAllDeselected: () => {
|
|
328
|
+
this.returnFocus = true;
|
|
329
|
+
this.wmSelectAllDeselected.emit();
|
|
330
|
+
} }, h("slot", { key: '98699fb0f36674cbae13f226fa923d6228fdad97' }))), h("div", { key: '69a49e6a2fe618bf9ce1a7e08527630a2d48cb8b', id: "error", class: this.errorMessage ? "error-message" : "" }, this.errorMessage), h("div", { key: '374538b9eb797924abfe74049fec191a41ae7501', id: "announcement", "aria-live": "polite", "aria-atomic": "true", class: "sr-only", ref: (el) => (this.liveRegionEl = el) }, this.announcement)))));
|
|
240
331
|
}
|
|
241
332
|
static get is() { return "wm-select"; }
|
|
242
333
|
static get encapsulation() { return "shadow"; }
|
|
@@ -472,6 +563,8 @@ export class Select {
|
|
|
472
563
|
static get states() {
|
|
473
564
|
return {
|
|
474
565
|
"isExpanded": {},
|
|
566
|
+
"isUp": {},
|
|
567
|
+
"isHidden": {},
|
|
475
568
|
"announcement": {}
|
|
476
569
|
};
|
|
477
570
|
}
|
|
@@ -563,28 +656,22 @@ export class Select {
|
|
|
563
656
|
"passive": false
|
|
564
657
|
}, {
|
|
565
658
|
"name": "wmEscKeyPressed",
|
|
566
|
-
"method": "
|
|
659
|
+
"method": "closeDropdownOnEscape",
|
|
567
660
|
"target": undefined,
|
|
568
661
|
"capture": false,
|
|
569
662
|
"passive": false
|
|
570
|
-
}, {
|
|
571
|
-
"name": "wmOptionBlurred",
|
|
572
|
-
"method": "handleOptionBlur",
|
|
573
|
-
"target": undefined,
|
|
574
|
-
"capture": false,
|
|
575
|
-
"passive": false
|
|
576
|
-
}, {
|
|
577
|
-
"name": "click",
|
|
578
|
-
"method": "handleClick",
|
|
579
|
-
"target": "document",
|
|
580
|
-
"capture": true,
|
|
581
|
-
"passive": false
|
|
582
663
|
}, {
|
|
583
664
|
"name": "keydown",
|
|
584
665
|
"method": "handleKey",
|
|
585
666
|
"target": undefined,
|
|
586
667
|
"capture": false,
|
|
587
668
|
"passive": false
|
|
669
|
+
}, {
|
|
670
|
+
"name": "resize",
|
|
671
|
+
"method": "handleResize",
|
|
672
|
+
"target": "window",
|
|
673
|
+
"capture": false,
|
|
674
|
+
"passive": true
|
|
588
675
|
}];
|
|
589
676
|
}
|
|
590
677
|
}
|
|
@@ -915,7 +915,7 @@
|
|
|
915
915
|
min-inline-size: 0;
|
|
916
916
|
flex-grow: 1;
|
|
917
917
|
}
|
|
918
|
-
.file-wrapper .file .left-group:has(.-truncated) {
|
|
918
|
+
.file-wrapper .file .left-group:has(#file-details:not([open]) .-truncated) {
|
|
919
919
|
min-inline-size: fit-content;
|
|
920
920
|
}
|
|
921
921
|
.file-wrapper .file .right-group {
|
|
@@ -957,6 +957,7 @@
|
|
|
957
957
|
display: block;
|
|
958
958
|
font-weight: 600;
|
|
959
959
|
color: var(--wmcolor-interactive);
|
|
960
|
+
list-style-type: none;
|
|
960
961
|
}
|
|
961
962
|
.file-wrapper .file #file-details summary::before {
|
|
962
963
|
position: absolute;
|
|
@@ -969,7 +970,7 @@
|
|
|
969
970
|
.file-wrapper .file #file-details #summary-filename-trunc,
|
|
970
971
|
.file-wrapper .file #file-details #summary-filename-wrap,
|
|
971
972
|
.file-wrapper .file #file-details .file-info {
|
|
972
|
-
margin-inline-start:
|
|
973
|
+
margin-inline-start: 1.5rem;
|
|
973
974
|
}
|
|
974
975
|
.file-wrapper .file #file-details[open] #summary-filename-trunc {
|
|
975
976
|
display: none;
|
|
@@ -860,37 +860,6 @@
|
|
|
860
860
|
mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z'/%3E%3C/svg%3E%0A");
|
|
861
861
|
}
|
|
862
862
|
|
|
863
|
-
/* --------------------------------------
|
|
864
|
-
1. Box-shadow
|
|
865
|
-
-------------------------------------- */
|
|
866
|
-
/* --------------------------------------
|
|
867
|
-
2. Border-radius
|
|
868
|
-
-------------------------------------- */
|
|
869
|
-
/* --------------------------------------
|
|
870
|
-
3. Transforms
|
|
871
|
-
-------------------------------------- */
|
|
872
|
-
/* --------------------------------------
|
|
873
|
-
4. Button Focus
|
|
874
|
-
-------------------------------------- */
|
|
875
|
-
/* --------------------------------------
|
|
876
|
-
5. Flex
|
|
877
|
-
-------------------------------------- */
|
|
878
|
-
/* --------------------------------------
|
|
879
|
-
7. Screen Reader Only
|
|
880
|
-
-------------------------------------- */
|
|
881
|
-
/* --------------------------------------
|
|
882
|
-
8. Label styles
|
|
883
|
-
this mixin includes all the styles for the label
|
|
884
|
-
+ flex rules on the parent container to switch between top and left position
|
|
885
|
-
+ srOnly when label is hidden
|
|
886
|
-
Assumes the following markup:
|
|
887
|
-
div.wrapper[.label-left.invalid] > div.label-wrapper > label.label > span.required
|
|
888
|
-
.wrapper is for the flex rules
|
|
889
|
-
.label-wrapper is to set the height of the label when positioned left so it's the same height as
|
|
890
|
-
the input. It can't be done directly on .label because of possible line wrapping.
|
|
891
|
-
When the label is on top there's no line wrapping at all to ensure proper alignment of inlined elements
|
|
892
|
-
(they can't be aligned on the baseline because of possible description text and error message)
|
|
893
|
-
-------------------------------------- */
|
|
894
863
|
:host(:focus-visible) {
|
|
895
864
|
outline: none;
|
|
896
865
|
}
|
package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.css
CHANGED
|
@@ -860,37 +860,6 @@
|
|
|
860
860
|
mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z'/%3E%3C/svg%3E%0A");
|
|
861
861
|
}
|
|
862
862
|
|
|
863
|
-
/* --------------------------------------
|
|
864
|
-
1. Box-shadow
|
|
865
|
-
-------------------------------------- */
|
|
866
|
-
/* --------------------------------------
|
|
867
|
-
2. Border-radius
|
|
868
|
-
-------------------------------------- */
|
|
869
|
-
/* --------------------------------------
|
|
870
|
-
3. Transforms
|
|
871
|
-
-------------------------------------- */
|
|
872
|
-
/* --------------------------------------
|
|
873
|
-
4. Button Focus
|
|
874
|
-
-------------------------------------- */
|
|
875
|
-
/* --------------------------------------
|
|
876
|
-
5. Flex
|
|
877
|
-
-------------------------------------- */
|
|
878
|
-
/* --------------------------------------
|
|
879
|
-
7. Screen Reader Only
|
|
880
|
-
-------------------------------------- */
|
|
881
|
-
/* --------------------------------------
|
|
882
|
-
8. Label styles
|
|
883
|
-
this mixin includes all the styles for the label
|
|
884
|
-
+ flex rules on the parent container to switch between top and left position
|
|
885
|
-
+ srOnly when label is hidden
|
|
886
|
-
Assumes the following markup:
|
|
887
|
-
div.wrapper[.label-left.invalid] > div.label-wrapper > label.label > span.required
|
|
888
|
-
.wrapper is for the flex rules
|
|
889
|
-
.label-wrapper is to set the height of the label when positioned left so it's the same height as
|
|
890
|
-
the input. It can't be done directly on .label because of possible line wrapping.
|
|
891
|
-
When the label is on top there's no line wrapping at all to ensure proper alignment of inlined elements
|
|
892
|
-
(they can't be aligned on the baseline because of possible description text and error message)
|
|
893
|
-
-------------------------------------- */
|
|
894
863
|
:host * {
|
|
895
864
|
box-sizing: border-box;
|
|
896
865
|
}
|
|
@@ -860,37 +860,6 @@
|
|
|
860
860
|
mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z'/%3E%3C/svg%3E%0A");
|
|
861
861
|
}
|
|
862
862
|
|
|
863
|
-
/* --------------------------------------
|
|
864
|
-
1. Box-shadow
|
|
865
|
-
-------------------------------------- */
|
|
866
|
-
/* --------------------------------------
|
|
867
|
-
2. Border-radius
|
|
868
|
-
-------------------------------------- */
|
|
869
|
-
/* --------------------------------------
|
|
870
|
-
3. Transforms
|
|
871
|
-
-------------------------------------- */
|
|
872
|
-
/* --------------------------------------
|
|
873
|
-
4. Button Focus
|
|
874
|
-
-------------------------------------- */
|
|
875
|
-
/* --------------------------------------
|
|
876
|
-
5. Flex
|
|
877
|
-
-------------------------------------- */
|
|
878
|
-
/* --------------------------------------
|
|
879
|
-
7. Screen Reader Only
|
|
880
|
-
-------------------------------------- */
|
|
881
|
-
/* --------------------------------------
|
|
882
|
-
8. Label styles
|
|
883
|
-
this mixin includes all the styles for the label
|
|
884
|
-
+ flex rules on the parent container to switch between top and left position
|
|
885
|
-
+ srOnly when label is hidden
|
|
886
|
-
Assumes the following markup:
|
|
887
|
-
div.wrapper[.label-left.invalid] > div.label-wrapper > label.label > span.required
|
|
888
|
-
.wrapper is for the flex rules
|
|
889
|
-
.label-wrapper is to set the height of the label when positioned left so it's the same height as
|
|
890
|
-
the input. It can't be done directly on .label because of possible line wrapping.
|
|
891
|
-
When the label is on top there's no line wrapping at all to ensure proper alignment of inlined elements
|
|
892
|
-
(they can't be aligned on the baseline because of possible description text and error message)
|
|
893
|
-
-------------------------------------- */
|
|
894
863
|
:host,
|
|
895
864
|
wm-pagination {
|
|
896
865
|
--wmcolor-pagination-arrow-disabled: var(--wmcolor-interactive-disabled);
|
|
@@ -860,37 +860,6 @@
|
|
|
860
860
|
mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z'/%3E%3C/svg%3E%0A");
|
|
861
861
|
}
|
|
862
862
|
|
|
863
|
-
/* --------------------------------------
|
|
864
|
-
1. Box-shadow
|
|
865
|
-
-------------------------------------- */
|
|
866
|
-
/* --------------------------------------
|
|
867
|
-
2. Border-radius
|
|
868
|
-
-------------------------------------- */
|
|
869
|
-
/* --------------------------------------
|
|
870
|
-
3. Transforms
|
|
871
|
-
-------------------------------------- */
|
|
872
|
-
/* --------------------------------------
|
|
873
|
-
4. Button Focus
|
|
874
|
-
-------------------------------------- */
|
|
875
|
-
/* --------------------------------------
|
|
876
|
-
5. Flex
|
|
877
|
-
-------------------------------------- */
|
|
878
|
-
/* --------------------------------------
|
|
879
|
-
7. Screen Reader Only
|
|
880
|
-
-------------------------------------- */
|
|
881
|
-
/* --------------------------------------
|
|
882
|
-
8. Label styles
|
|
883
|
-
this mixin includes all the styles for the label
|
|
884
|
-
+ flex rules on the parent container to switch between top and left position
|
|
885
|
-
+ srOnly when label is hidden
|
|
886
|
-
Assumes the following markup:
|
|
887
|
-
div.wrapper[.label-left.invalid] > div.label-wrapper > label.label > span.required
|
|
888
|
-
.wrapper is for the flex rules
|
|
889
|
-
.label-wrapper is to set the height of the label when positioned left so it's the same height as
|
|
890
|
-
the input. It can't be done directly on .label because of possible line wrapping.
|
|
891
|
-
When the label is on top there's no line wrapping at all to ensure proper alignment of inlined elements
|
|
892
|
-
(they can't be aligned on the baseline because of possible description text and error message)
|
|
893
|
-
-------------------------------------- */
|
|
894
863
|
:host * {
|
|
895
864
|
box-sizing: border-box;
|
|
896
865
|
}
|