wcs-core 2.14.0 → 2.16.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.
Files changed (83) hide show
  1. package/README.md +7 -38
  2. package/dist/cjs/{helpers-6abce594.js → helpers-3ce2b83e.js} +20 -0
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/{select-arrow-18088ced.js → select-arrow-54b3e7b8.js} +1 -1
  5. package/dist/cjs/wcs-accordion-panel.cjs.entry.js +3 -3
  6. package/dist/cjs/wcs-button.cjs.entry.js +6 -2
  7. package/dist/cjs/wcs-com-nav.cjs.entry.js +18 -0
  8. package/dist/cjs/wcs-dropdown-item.cjs.entry.js +8 -2
  9. package/dist/cjs/wcs-dropdown.cjs.entry.js +38 -2
  10. package/dist/cjs/wcs-galactic-menu.cjs.entry.js +1 -1
  11. package/dist/cjs/wcs-grid.cjs.entry.js +9 -6
  12. package/dist/cjs/wcs-input.cjs.entry.js +2 -2
  13. package/dist/cjs/wcs-label.cjs.entry.js +1 -1
  14. package/dist/cjs/wcs-select_2.cjs.entry.js +4 -3
  15. package/dist/cjs/wcs-tabs.cjs.entry.js +6 -6
  16. package/dist/cjs/wcs-textarea.cjs.entry.js +1 -1
  17. package/dist/cjs/wcs.cjs.js +1 -1
  18. package/dist/collection/components/accordion-panel/accordion-panel.css +9 -0
  19. package/dist/collection/components/accordion-panel/accordion-panel.js +3 -3
  20. package/dist/collection/components/button/button.js +5 -1
  21. package/dist/collection/components/com-nav/com-nav.js +18 -0
  22. package/dist/collection/components/dropdown/dropdown.js +40 -1
  23. package/dist/collection/components/dropdown-item/dropdown-item.css +1 -1
  24. package/dist/collection/components/dropdown-item/dropdown-item.js +13 -1
  25. package/dist/collection/components/grid/grid.js +9 -6
  26. package/dist/collection/components/input/input.js +2 -2
  27. package/dist/collection/components/label/label.css +3 -1
  28. package/dist/collection/components/select/select-arrow.js +1 -1
  29. package/dist/collection/components/select/select.js +2 -1
  30. package/dist/collection/components/tabs/tabs.js +6 -6
  31. package/dist/collection/utils/accessibility.js +3 -0
  32. package/dist/collection/utils/helpers.js +15 -0
  33. package/dist/esm/{helpers-e2993152.js → helpers-374df0ea.js} +16 -1
  34. package/dist/esm/loader.js +1 -1
  35. package/dist/esm/{select-arrow-66a47b7a.js → select-arrow-f24031e4.js} +1 -1
  36. package/dist/esm/wcs-accordion-panel.entry.js +3 -3
  37. package/dist/esm/wcs-button.entry.js +6 -2
  38. package/dist/esm/wcs-com-nav.entry.js +18 -0
  39. package/dist/esm/wcs-dropdown-item.entry.js +8 -2
  40. package/dist/esm/wcs-dropdown.entry.js +38 -2
  41. package/dist/esm/wcs-galactic-menu.entry.js +1 -1
  42. package/dist/esm/wcs-grid.entry.js +9 -6
  43. package/dist/esm/wcs-input.entry.js +2 -2
  44. package/dist/esm/wcs-label.entry.js +1 -1
  45. package/dist/esm/wcs-select_2.entry.js +4 -3
  46. package/dist/esm/wcs-tabs.entry.js +6 -6
  47. package/dist/esm/wcs-textarea.entry.js +1 -1
  48. package/dist/esm/wcs.js +1 -1
  49. package/dist/types/components/button/button.d.ts +1 -0
  50. package/dist/types/components/com-nav/com-nav.d.ts +3 -0
  51. package/dist/types/components/dropdown/dropdown.d.ts +4 -0
  52. package/dist/types/components/dropdown-item/dropdown-item.d.ts +1 -0
  53. package/dist/types/components/grid/grid.d.ts +2 -1
  54. package/dist/types/components/select/select-arrow.d.ts +1 -0
  55. package/dist/types/utils/accessibility.d.ts +1 -0
  56. package/dist/types/utils/helpers.d.ts +5 -0
  57. package/dist/wcs/p-1b8330aa.entry.js +1 -0
  58. package/dist/wcs/p-28822f1f.entry.js +1 -0
  59. package/dist/wcs/p-557e3aa0.entry.js +1 -0
  60. package/dist/wcs/{p-5924d21b.entry.js → p-6585b5f3.entry.js} +1 -1
  61. package/dist/wcs/p-67005182.entry.js +1 -0
  62. package/dist/wcs/p-716ca1ac.entry.js +1 -0
  63. package/dist/wcs/p-8a000290.entry.js +1 -0
  64. package/dist/wcs/{p-a4f8a6b7.entry.js → p-96ee68db.entry.js} +1 -1
  65. package/dist/wcs/p-9f3976ac.entry.js +1 -0
  66. package/dist/wcs/p-a0ec21b0.entry.js +1 -0
  67. package/dist/wcs/p-c09e5b82.js +1 -0
  68. package/dist/wcs/{p-23e6c574.entry.js → p-cfbb66c6.entry.js} +2 -2
  69. package/dist/wcs/p-f5529a4f.js +1 -0
  70. package/dist/wcs/p-f79a36b2.entry.js +1 -0
  71. package/dist/wcs/wcs.esm.js +1 -1
  72. package/package.json +1 -1
  73. package/dist/wcs/p-1421429d.js +0 -1
  74. package/dist/wcs/p-174e238e.entry.js +0 -1
  75. package/dist/wcs/p-1a901934.entry.js +0 -1
  76. package/dist/wcs/p-1cc7a22c.entry.js +0 -1
  77. package/dist/wcs/p-80aafdd9.entry.js +0 -1
  78. package/dist/wcs/p-83651b14.entry.js +0 -1
  79. package/dist/wcs/p-ae70c0ce.entry.js +0 -1
  80. package/dist/wcs/p-b07c8dc4.entry.js +0 -1
  81. package/dist/wcs/p-ba608aa0.entry.js +0 -1
  82. package/dist/wcs/p-cf4d7a83.js +0 -1
  83. package/dist/wcs/p-d639802e.entry.js +0 -1
@@ -14,6 +14,15 @@
14
14
  font-size: 16px;
15
15
  color: var(--wcs-primary);
16
16
  background-color: var(--wcs-light);
17
+ border: none;
18
+ }
19
+ @media (forced-colors: active) {
20
+ :host .header {
21
+ border: 1px solid ButtonBorder;
22
+ }
23
+ }
24
+ :host .header:focus-visible {
25
+ outline: 2px solid var(--wcs-primary);
17
26
  }
18
27
  :host .header-action {
19
28
  display: flex;
@@ -29,12 +29,12 @@ export class AccordionPanel {
29
29
  }
30
30
  render() {
31
31
  return (h(Host, null,
32
- h("div", { class: "header", onClick: () => this.open = !this.open },
32
+ h("button", { "aria-expanded": this.open ? "true" : "false", "aria-controls": "content", class: "header", onClick: () => this.open = !this.open },
33
33
  h("slot", { name: "header" }),
34
- h("div", { class: "header-action" },
34
+ h("span", { class: "header-action" },
35
35
  !this.hideActionText && (h("span", null, this.open ? 'Fermez' : 'Ouvrez')),
36
36
  h(SelectArrow, { up: this.open }))),
37
- h("div", { class: "content" },
37
+ h("div", { class: "content", id: "content" },
38
38
  h("slot", { name: "content" }))));
39
39
  }
40
40
  static get is() { return "wcs-accordion-panel"; }
@@ -49,6 +49,7 @@ export class Button {
49
49
  }
50
50
  componentDidLoad() {
51
51
  this.mdcRipple = new MDCRipple(this.el.shadowRoot.querySelector('.wcs-inner-button'));
52
+ this.el.focus = () => this.el.shadowRoot.querySelector(this.getTagName()).focus();
52
53
  }
53
54
  enabledRippleEffect() {
54
55
  this.mdcRipple.disabled = false;
@@ -56,6 +57,9 @@ export class Button {
56
57
  disabledRippleEffect() {
57
58
  this.mdcRipple.disabled = true;
58
59
  }
60
+ getTagName() {
61
+ return this.href !== undefined ? 'a' : 'button';
62
+ }
59
63
  onRippleChange() {
60
64
  if (this.ripple) {
61
65
  this.enabledRippleEffect();
@@ -65,7 +69,7 @@ export class Button {
65
69
  }
66
70
  }
67
71
  render() {
68
- const TagType = this.href !== undefined ? 'a' : 'button';
72
+ const TagType = this.getTagName();
69
73
  const attrs = this.href !== undefined
70
74
  ? { href: this.href, role: 'button' }
71
75
  : { type: this.type };
@@ -2,6 +2,7 @@ import { Component, Host, h, Prop, Element, State, Listen } from '@stencil/core'
2
2
  export class ComNav {
3
3
  constructor() {
4
4
  this.mobileMenuOpen = false;
5
+ this.hasAlreadyRegisteredClickHandlerOnSlottedLink = false;
5
6
  }
6
7
  mobileMenuIconClick() {
7
8
  this.mobileMenuOpen = !this.mobileMenuOpen;
@@ -23,6 +24,23 @@ export class ComNav {
23
24
  });
24
25
  this.resizeObserver.observe(document.body);
25
26
  }
27
+ componentDidRender() {
28
+ this.registerHandlerToCloseMobileMenuOnClickOnSlottedLinkTag();
29
+ }
30
+ registerHandlerToCloseMobileMenuOnClickOnSlottedLinkTag() {
31
+ if (this.hasAlreadyRegisteredClickHandlerOnSlottedLink)
32
+ return;
33
+ const mainSlot = this.el.shadowRoot.querySelector('slot:not([name])');
34
+ if (mainSlot) {
35
+ this.hasAlreadyRegisteredClickHandlerOnSlottedLink = true;
36
+ // If the user click on a `a` tag, we close the mobile menu overlay.
37
+ mainSlot.assignedElements().filter(e => e.tagName === 'A').forEach(a => {
38
+ a.addEventListener('click', _ => {
39
+ this.mobileMenuOpen = false;
40
+ });
41
+ });
42
+ }
43
+ }
26
44
  //region Handlers for mobile menu overlay visibility
27
45
  //
28
46
  // In mobile mode, we have only one global drawer to display the menu, that why we have to listen the clicks events
@@ -1,7 +1,8 @@
1
1
  import { Component, Element, h, Host, Listen, Prop, State, Watch } from '@stencil/core';
2
2
  import { SelectArrow } from '../select/select-arrow';
3
3
  import { createPopper } from '@popperjs/core';
4
- import { clickTargetIsElementOrChildren } from '../../utils/helpers';
4
+ import { clickTargetIsElementOrChildren, isEscapeKey, isKeydown, isKeyup } from '../../utils/helpers';
5
+ import { isElementFocused } from "../../utils/accessibility";
5
6
  export class Dropdown {
6
7
  constructor() {
7
8
  /** Hides the arrow in the button */
@@ -63,6 +64,38 @@ export class Dropdown {
63
64
  dropdownItemClick(_) {
64
65
  this.expanded = false;
65
66
  }
67
+ onKeyDown(evt) {
68
+ if (this.expanded && (isKeydown(evt) || isKeyup(evt))) {
69
+ const items = Array.from(this.el.querySelectorAll('wcs-dropdown-item'));
70
+ const currentFocusedItemIndex = items.findIndex(item => isElementFocused(item));
71
+ // If the dropdown is expended by the user, but no item is focused and the keydown is pressed
72
+ if (currentFocusedItemIndex === -1 && isKeydown(evt)) {
73
+ this.focusFirstItemIfPresent(items);
74
+ }
75
+ else {
76
+ this.moveFocusedItemByDirection(items, currentFocusedItemIndex, isKeydown(evt) ? 'down' : 'up');
77
+ }
78
+ }
79
+ if (this.expanded && isEscapeKey(evt)) {
80
+ this.closeOverlayAndFocusButton();
81
+ }
82
+ }
83
+ focusFirstItemIfPresent(items) {
84
+ if (items[0]) {
85
+ items[0].focus();
86
+ }
87
+ }
88
+ moveFocusedItemByDirection(items, currentFocusedItemIndex, direction) {
89
+ const itemToFocus = items[(currentFocusedItemIndex) + (direction === 'down' ? 1 : -1)];
90
+ if (itemToFocus) {
91
+ itemToFocus.focus();
92
+ }
93
+ }
94
+ closeOverlayAndFocusButton() {
95
+ this.expanded = !this.expanded;
96
+ const wcsButton = this.el.shadowRoot.querySelector('wcs-button');
97
+ wcsButton.focus();
98
+ }
66
99
  componentDidRender() {
67
100
  if (this.popper) {
68
101
  this.popper.update();
@@ -217,5 +250,11 @@ export class Dropdown {
217
250
  "target": undefined,
218
251
  "capture": false,
219
252
  "passive": false
253
+ }, {
254
+ "name": "keydown",
255
+ "method": "onKeyDown",
256
+ "target": undefined,
257
+ "capture": false,
258
+ "passive": false
220
259
  }]; }
221
260
  }
@@ -7,7 +7,7 @@ wcs-dropdown-item {
7
7
  line-height: 42px;
8
8
  }
9
9
 
10
- wcs-dropdown-item:hover {
10
+ wcs-dropdown-item:hover, wcs-dropdown-item:focus {
11
11
  color: var(--wcs-primary);
12
12
  background-color: var(--wcs-light);
13
13
  }
@@ -1,10 +1,16 @@
1
1
  import { Component, h, Event, Listen, Host } from '@stencil/core';
2
+ import { isEnterKey, isSpaceKey } from "../../utils/helpers";
2
3
  export class DropdownItem {
3
4
  onMouseDown(_) {
4
5
  this.wcsDropdownItemClick.emit();
5
6
  }
7
+ onKeyDown(evt) {
8
+ if (isSpaceKey(evt) || isEnterKey(evt)) {
9
+ this.wcsDropdownItemClick.emit();
10
+ }
11
+ }
6
12
  render() {
7
- return (h(Host, { slot: "item" },
13
+ return (h(Host, { slot: "item", tabindex: "0" },
8
14
  h("slot", null)));
9
15
  }
10
16
  static get is() { return "wcs-dropdown-item"; }
@@ -36,5 +42,11 @@ export class DropdownItem {
36
42
  "target": undefined,
37
43
  "capture": false,
38
44
  "passive": true
45
+ }, {
46
+ "name": "keydown",
47
+ "method": "onKeyDown",
48
+ "target": undefined,
49
+ "capture": false,
50
+ "passive": false
39
51
  }]; }
40
52
  }
@@ -19,6 +19,7 @@ export class Grid {
19
19
  }
20
20
  onDataChange(newValue) {
21
21
  this.updateGridRows(newValue);
22
+ this.refreshSort(false);
22
23
  }
23
24
  onSelectedItemsPropertyChange(newValue) {
24
25
  this.updateSelectionWithValues(newValue);
@@ -83,19 +84,21 @@ export class Grid {
83
84
  if (this.selectedItems) {
84
85
  this.updateSelectionWithValues(this.selectedItems);
85
86
  }
86
- this.applyInitialSortConfig();
87
+ this.refreshSort(true);
87
88
  }
88
89
  /**
89
90
  * Handle existing column's filters (defined before the grid is instantiated)
90
91
  * @private
91
92
  */
92
- applyInitialSortConfig() {
93
+ refreshSort(refreshOthersColmumnsSortOrderState) {
93
94
  const [first, ...other] = this.columns.filter(c => c.sortOrder !== 'none');
94
- // We keep only one active sorted column
95
- other === null || other === void 0 ? void 0 : other.forEach(o => o.sortOrder = 'none');
96
95
  if (first && !this.serverMode) {
97
96
  this.sortBy(first);
98
97
  }
98
+ refreshOthersColmumnsSortOrderState && this.disableSortOrderForColumns(other);
99
+ }
100
+ disableSortOrderForColumns(columns) {
101
+ columns === null || columns === void 0 ? void 0 : columns.forEach(c => c.sortOrder = 'none');
99
102
  }
100
103
  getGridColumnsFromTemplate() {
101
104
  const slotted = this.el.shadowRoot.querySelector('slot[name="grid-column"]');
@@ -109,7 +112,7 @@ export class Grid {
109
112
  if (event.detail.order === 'none')
110
113
  return;
111
114
  // We keep only one active sort column
112
- this.columns.filter(c => c !== event.detail.column).forEach(c => c.sortOrder = 'none');
115
+ this.disableSortOrderForColumns(this.columns.filter(c => c !== event.detail.column));
113
116
  if (this.serverMode)
114
117
  return;
115
118
  this.sortBy(event.detail.column);
@@ -138,7 +141,7 @@ export class Grid {
138
141
  */
139
142
  updatePageIndex() {
140
143
  if (!this.serverMode && this.paginationEl) {
141
- if (this.paginationEl.currentPage + 1 > this.paginationEl.pageCount) {
144
+ if (this.paginationEl.pageCount > 0 && this.paginationEl.currentPage + 1 > this.paginationEl.pageCount) {
142
145
  this.paginationEl.currentPage = this.paginationEl.pageCount - 1;
143
146
  }
144
147
  this.paginationEl.itemsCount = this.data.length;
@@ -214,11 +214,11 @@ export class Input {
214
214
  label.id = labelId;
215
215
  }
216
216
  return (h(Host, { "aria-disabled": this.disabled ? 'true' : null, "data-has-prefix": !!this.prefixLabel, "data-has-suffix": !!this.suffixLabel },
217
- this.prefixLabel ? (h("span", { class: "prefix" }, this.prefixLabel)) : null,
217
+ this.prefixLabel ? (h("span", { class: "prefix", part: "prefix" }, this.prefixLabel)) : null,
218
218
  this.icon ? (h("wcs-mat-icon", { icon: this.icon, size: "m" })) : null,
219
219
  h("input", Object.assign({ class: "native-input", ref: input => this.nativeInput = input, "aria-labelledby": label ? labelId : null, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.passwordReveal ? 'text' : this.type, value: value, onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown }, this.inheritedAttributes)),
220
220
  this.type === "password" ? (h("wcs-mat-icon", { class: "toggle_password", icon: this.iconPassword, size: "m", onClick: () => this.passwordRevealIconClick() })) : null,
221
- this.suffixLabel ? (h("span", { class: "suffix" }, this.suffixLabel)) : null));
221
+ this.suffixLabel ? (h("span", { class: "suffix", part: "suffix" }, this.suffixLabel)) : null));
222
222
  }
223
223
  static get is() { return "wcs-input"; }
224
224
  static get encapsulation() { return "shadow"; }
@@ -6,7 +6,7 @@
6
6
  :host([required])::after {
7
7
  font-weight: 500;
8
8
  color: var(--wcs-red);
9
- content: "*";
9
+ content: " *";
10
10
  }
11
11
 
12
12
  label {
@@ -14,5 +14,7 @@ label {
14
14
  align-items: center;
15
15
  }
16
16
  label ::slotted(wcs-mat-icon) {
17
+ display: inline;
18
+ vertical-align: middle;
17
19
  margin-left: calc(var(--wcs-base-margin) / 2);
18
20
  }
@@ -13,7 +13,7 @@ import { h } from '@stencil/core';
13
13
  from="20,35 50,65 80,35"></animate>
14
14
  </polyline>
15
15
  </svg> */
16
- export const SelectArrow = ({ up }) => (h("svg", { style: { marginLeft: 'auto' }, xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24" },
16
+ export const SelectArrow = ({ up, ariaLabel }) => (h("svg", { "aria-hidden": ariaLabel ? false : "true", role: "img", "aria-label": ariaLabel ? ariaLabel : false, style: { marginLeft: 'auto' }, xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24" },
17
17
  h("style", { type: "text/css" }, `
18
18
  .arrow-group {
19
19
  transform-origin: 50% 50%;
@@ -289,7 +289,8 @@ export class Select {
289
289
  onMouseDown(event) {
290
290
  const clickOnScroll = isElement(event.target)
291
291
  && (event.offsetX > event.target.clientWidth
292
- || event.offsetY > event.target.clientHeight);
292
+ || event.offsetY > event.target.clientHeight // If the click il located bellow the component height the click happen in the overlay
293
+ || event.offsetY < 0); // If the click is made above the component
293
294
  const clickOnRemoveChip = event.composedPath()
294
295
  .filter(x => {
295
296
  const el = x;
@@ -79,6 +79,7 @@ export class Tabs {
79
79
  }
80
80
  }
81
81
  handleKeyDown(ev, tabIndex) {
82
+ var _a, _b;
82
83
  const target = ev.target;
83
84
  switch (ev.key) {
84
85
  case ' ':
@@ -89,16 +90,14 @@ export class Tabs {
89
90
  break;
90
91
  }
91
92
  case 'ArrowLeft': {
92
- if (target.previousElementSibling
93
- && target.previousElementSibling.classList.contains('wcs-tab-header')) {
93
+ if ((_a = target.previousElementSibling) === null || _a === void 0 ? void 0 : _a.classList.contains('wcs-tab-header')) {
94
94
  target.previousElementSibling.focus();
95
95
  ev.preventDefault();
96
96
  }
97
97
  break;
98
98
  }
99
99
  case 'ArrowRight': {
100
- if (target.nextElementSibling
101
- && target.nextElementSibling.classList.contains('wcs-tab-header')) {
100
+ if ((_b = target.nextElementSibling) === null || _b === void 0 ? void 0 : _b.classList.contains('wcs-tab-header')) {
102
101
  target.nextElementSibling.focus();
103
102
  ev.preventDefault();
104
103
  }
@@ -114,13 +113,14 @@ export class Tabs {
114
113
  });
115
114
  }
116
115
  get tabs() {
116
+ var _a;
117
117
  const tabsEl = this.el.shadowRoot.querySelector('.wcs-tabs');
118
118
  // FIXME: problem with this selector being too greedy in ff < 63
119
119
  const tabs = this.el.shadowRoot.querySelectorAll('.wcs-tabs > wcs-tab');
120
120
  return tabs.length !== 0
121
121
  ? tabs
122
- : tabsEl.querySelector('slot')
123
- ? tabsEl.querySelector('slot').assignedElements()
122
+ : (tabsEl === null || tabsEl === void 0 ? void 0 : tabsEl.querySelector('slot'))
123
+ ? (_a = tabsEl === null || tabsEl === void 0 ? void 0 : tabsEl.querySelector('slot')) === null || _a === void 0 ? void 0 : _a.assignedElements()
124
124
  : [];
125
125
  }
126
126
  selectTabAndEmitChangeEvent(index) {
@@ -0,0 +1,3 @@
1
+ export function isElementFocused(element) {
2
+ return element === document.activeElement;
3
+ }
@@ -73,3 +73,18 @@ export const clickTargetIsElementOrChildren = (mouseEvent, element) => {
73
73
  return mouseEvent.target instanceof Node
74
74
  && element.contains(mouseEvent.target);
75
75
  };
76
+ export function isKeyup(evt) {
77
+ return evt.code === 'ArrowUp';
78
+ }
79
+ export function isKeydown(evt) {
80
+ return evt.code === 'ArrowDown';
81
+ }
82
+ export function isEscapeKey(evt) {
83
+ return evt.code === 'Escape';
84
+ }
85
+ export function isSpaceKey(evt) {
86
+ return evt.code === 'Space';
87
+ }
88
+ export function isEnterKey(evt) {
89
+ return evt.code === 'Enter';
90
+ }
@@ -73,5 +73,20 @@ const clickTargetIsElementOrChildren = (mouseEvent, element) => {
73
73
  return mouseEvent.target instanceof Node
74
74
  && element.contains(mouseEvent.target);
75
75
  };
76
+ function isKeyup(evt) {
77
+ return evt.code === 'ArrowUp';
78
+ }
79
+ function isKeydown(evt) {
80
+ return evt.code === 'ArrowDown';
81
+ }
82
+ function isEscapeKey(evt) {
83
+ return evt.code === 'Escape';
84
+ }
85
+ function isSpaceKey(evt) {
86
+ return evt.code === 'Space';
87
+ }
88
+ function isEnterKey(evt) {
89
+ return evt.code === 'Enter';
90
+ }
76
91
 
77
- export { clickInsideElement as a, isElement as b, clickTargetIsElementOrChildren as c, debounceEvent as d, findItemLabel as f, hasShadowDom as h, inheritAttributes as i, raf as r };
92
+ export { isKeyup as a, isEscapeKey as b, clickTargetIsElementOrChildren as c, isSpaceKey as d, isEnterKey as e, clickInsideElement as f, debounceEvent as g, inheritAttributes as h, isKeydown as i, findItemLabel as j, isElement as k, hasShadowDom as l, raf as r };
@@ -10,7 +10,7 @@ const patchEsm = () => {
10
10
  const defineCustomElements = (win, options) => {
11
11
  if (typeof window === 'undefined') return Promise.resolve();
12
12
  return patchEsm().then(() => {
13
- return bootstrapLazy([["wcs-editable-field",[[1,"wcs-editable-field",{"type":[1],"label":[1],"readonly":[4],"value":[1032],"validateFn":[16],"formatFn":[16],"errorMsg":[1,"error-msg"],"currentState":[32],"isError":[32]},[[8,"click","onWindowClickEvent"]]]]],["wcs-grid",[[1,"wcs-grid",{"serverMode":[4,"server-mode"],"data":[16],"loading":[4],"selectionConfig":[1,"selection-config"],"selectedItems":[8,"selected-items"],"wcsGridPaginationId":[1,"wcs-grid-pagination-id"],"rowIdPath":[1,"row-id-path"],"columns":[32],"paginationEl":[32],"rows":[32]},[[0,"wcsHiddenChange","onHiddenColumnChange"],[0,"wcsSortChange","sortChangeEventHandler"],[0,"wcsGridPaginationChange","paginationChangeEventHandler"],[8,"wcsGridPaginationChange","paginationChangeEventHandlerOutside"]]]]],["wcs-grid-pagination",[[1,"wcs-grid-pagination",{"availablePageSizes":[16],"currentPage":[2,"current-page"],"pageSize":[2,"page-size"],"itemsCount":[2,"items-count"],"pageCount":[2,"page-count"]}]]],["wcs-horizontal-stepper",[[1,"wcs-horizontal-stepper",{"currentStep":[1026,"current-step"],"steps":[16],"mode":[1],"checkOnComplete":[4,"check-on-complete"],"buttonMode":[32],"internalCurrentStep":[32],"previous":[64],"next":[64]}]]],["wcs-modal",[[4,"wcs-modal",{"withoutBackdrop":[516,"without-backdrop"],"show":[516],"showCloseButton":[516,"show-close-button"],"size":[1],"hideActions":[516,"hide-actions"]},[[4,"keydown","onKeyDown"]]]]],["wcs-dropdown",[[1,"wcs-dropdown",{"noArrow":[4,"no-arrow"],"mode":[1],"shape":[1],"disabled":[4],"placement":[1],"expanded":[32]},[[8,"click","onWindowClickEvent"],[0,"wcsDropdownItemClick","dropdownItemClick"]]]]],["wcs-galactic-menu",[[1,"wcs-galactic-menu",{"text":[1],"showPopoverMenu":[32]},[[8,"click","onWindowClickEvent"]]]]],["wcs-input",[[1,"wcs-input",{"fireFocusEvents":[4,"fire-focus-events"],"accept":[1],"autocapitalize":[1],"autocomplete":[1],"autocorrect":[1],"autofocus":[4],"clearInput":[4,"clear-input"],"clearOnEdit":[4,"clear-on-edit"],"debounce":[2],"prefixLabel":[1,"prefix-label"],"suffixLabel":[1,"suffix-label"],"disabled":[4],"enterkeyhint":[1],"icon":[1],"inputmode":[1],"max":[1],"maxlength":[2],"min":[1],"minlength":[2],"multiple":[4],"name":[1],"pattern":[1],"placeholder":[1],"readonly":[4],"required":[4],"spellcheck":[4],"state":[513],"step":[1],"size":[2],"type":[1],"value":[1032],"hasFocus":[32],"passwordReveal":[32],"setFocus":[64],"setBlur":[64],"getInputElement":[64]}]]],["wcs-textarea",[[1,"wcs-textarea",{"fireFocusEvents":[4,"fire-focus-events"],"autocapitalize":[1],"autofocus":[4],"clearOnEdit":[1028,"clear-on-edit"],"debounce":[2],"disabled":[4],"icon":[1],"inputmode":[1],"enterkeyhint":[1],"maxlength":[2],"minlength":[2],"name":[1],"placeholder":[1],"readonly":[4],"required":[4],"spellcheck":[4],"state":[513],"cols":[2],"rows":[2],"wrap":[1],"autoGrow":[4,"auto-grow"],"value":[1025],"hasFocus":[32],"fitContent":[64],"setFocus":[64],"setBlur":[64],"getInputElement":[64]}]]],["wcs-accordion",[[1,"wcs-accordion",{"hideActionText":[516,"hide-action-text"],"highlight":[516],"groupContentWithHeader":[516,"group-content-with-header"]},[[0,"wcsOpenChange","wcsOpenChangeHandler"]]]]],["wcs-accordion-content",[[1,"wcs-accordion-content"]]],["wcs-accordion-header",[[1,"wcs-accordion-header"]]],["wcs-accordion-panel",[[1,"wcs-accordion-panel",{"open":[1540],"hideActionText":[516,"hide-action-text"],"highlight":[516],"groupContentWithHeader":[516,"group-content-with-header"],"close":[64]}]]],["wcs-action-bar",[[1,"wcs-action-bar",{"gutter":[4],"hasTabs":[32]}]]],["wcs-app",[[1,"wcs-app"]]],["wcs-badge",[[1,"wcs-badge",{"shape":[1],"color":[1]}]]],["wcs-card",[[1,"wcs-card",{"mode":[1537]}]]],["wcs-card-body",[[1,"wcs-card-body"]]],["wcs-com-nav",[[1,"wcs-com-nav",{"appName":[1,"app-name"],"mobileMenuOpen":[32],"currentActiveSizing":[32]},[[0,"wcsClickOnFinalAction","onClickOnFinalAction"],[0,"wcsCategoryItemClicked","onClickOnFinalActionCat"]]]]],["wcs-com-nav-category",[[1,"wcs-com-nav-category",{"label":[1],"categoryOpen":[32],"close":[64],"open":[64]},[[8,"click","onWindowClickEvent"],[8,"wcsCategoryOpened","onSubmenuOpened"]]]]],["wcs-com-nav-submenu",[[1,"wcs-com-nav-submenu",{"label":[1],"panelTitle":[1,"panel-title"],"panelDescription":[1,"panel-description"],"menuOpen":[32],"close":[64],"open":[64]},[[8,"click","onWindowClickEvent"],[8,"wcsSubmenuOpened","onSubmenuOpened"],[0,"wcsCategoryItemClicked","wcsCategoryItemClickedHandler"]]]]],["wcs-divider",[[1,"wcs-divider"]]],["wcs-dropdown-divider",[[1,"wcs-dropdown-divider"]]],["wcs-dropdown-header",[[1,"wcs-dropdown-header"]]],["wcs-dropdown-item",[[4,"wcs-dropdown-item",null,[[1,"mousedown","onMouseDown"]]]]],["wcs-field",[[1,"wcs-field"]]],["wcs-field-content",[[1,"wcs-field-content"]]],["wcs-field-label",[[1,"wcs-field-label"]]],["wcs-footer",[[1,"wcs-footer"]]],["wcs-galactic",[[1,"wcs-galactic",{"text":[1],"show":[32]}]]],["wcs-grid-column",[[1,"wcs-grid-column",{"path":[1],"name":[1],"sort":[4],"sortFn":[16],"formatter":[16],"sortOrder":[1025,"sort-order"],"width":[1],"customCells":[4,"custom-cells"],"hidden":[4]}]]],["wcs-grid-custom-cell",[[1,"wcs-grid-custom-cell",{"columnId":[1,"column-id"],"rowId":[8,"row-id"]}]]],["wcs-header",[[1,"wcs-header"]]],["wcs-hint",[[1,"wcs-hint",{"small":[1540]}]]],["wcs-icon",[[0,"wcs-icon",{"icon":[1],"size":[1]}]]],["wcs-label",[[1,"wcs-label",{"required":[516]}]]],["wcs-list-item",[[1,"wcs-list-item",{"activated":[1028]}]]],["wcs-list-item-properties",[[1,"wcs-list-item-properties"]]],["wcs-list-item-property",[[1,"wcs-list-item-property"]]],["wcs-nav",[[1,"wcs-nav"]]],["wcs-nav-item",[[4,"wcs-nav-item",{"text":[513],"href":[513]}]]],["wcs-progress-radial",[[1,"wcs-progress-radial",{"size":[2],"showLabel":[4,"show-label"],"value":[2]}]]],["wcs-radio-group",[[1,"wcs-radio-group",{"value":[8],"name":[520],"mode":[513]},[[0,"wcsRadioClick","selectedOptionChanged"]]]]],["wcs-switch",[[1,"wcs-switch",{"name":[1],"checked":[516],"labelAlignment":[513,"label-alignment"],"disabled":[4]}]]],["wcs-tab",[[1,"wcs-tab",{"header":[513],"itemKey":[8,"item-key"]}]]],["wcs-tabs",[[1,"wcs-tabs",{"align":[513],"selectedIndex":[2,"selected-index"],"selectedKey":[8,"selected-key"],"headersOnly":[4,"headers-only"],"gutter":[4],"headers":[32],"currentActiveTabIndex":[32]},[[0,"tabLoaded","onTabLoaded"]]]]],["wcs-tooltip",[[1,"wcs-tooltip",{"for":[1],"position":[513],"interactive":[4],"maxWidth":[8,"max-width"],"delay":[2],"duration":[2],"trigger":[1],"theme":[1],"content":[1],"hide":[64],"show":[64],"disable":[64],"enable":[64]}]]],["wcs-progress-bar",[[1,"wcs-progress-bar",{"small":[4],"showLabel":[4,"show-label"],"value":[2]}]]],["wcs-radio",[[1,"wcs-radio",{"mode":[513],"value":[1544],"label":[1537],"checked":[1540],"disabled":[1028]}]]],["wcs-select_2",[[4,"wcs-select-option",{"disabled":[1540],"selected":[1540],"value":[8],"chipColor":[1,"chip-color"],"chipBackgroundColor":[1,"chip-background-color"],"multiple":[1540]},[[1,"mousedown","onMouseDown"]]],[1,"wcs-select",{"value":[1032],"placeholder":[1537],"disabled":[1028],"multiple":[516],"chips":[516],"name":[1],"compareWith":[16],"expanded":[32],"hasLoaded":[32],"displayText":[32],"focused":[32],"overlayDirection":[32],"open":[64],"close":[64]},[[1,"mousedown","onMouseDown"],[8,"click","onWindowClickEvent"],[0,"wcsSelectOptionClick","selectedOptionChanged"]]]]],["wcs-error_2",[[1,"wcs-error"],[1,"wcs-form-field",{"isError":[1540,"is-error"],"hasPrefix":[32],"hasSuffix":[32],"spiedElement":[32]}]]],["wcs-spinner",[[1,"wcs-spinner",{"mode":[513]}]]],["wcs-button",[[1,"wcs-button",{"type":[1025],"href":[1],"disabled":[516],"ripple":[4],"shape":[513],"mode":[513]},[[0,"click","onClick"]]]]],["wcs-checkbox",[[1,"wcs-checkbox",{"name":[1],"indeterminate":[1540],"checked":[1540],"labelAlignment":[1537,"label-alignment"],"disabled":[4]}]]],["wcs-mat-icon",[[1,"wcs-mat-icon",{"icon":[1],"size":[1],"family":[1],"familyFile":[32],"familyClass":[32]}]]]], options);
13
+ return bootstrapLazy([["wcs-editable-field",[[1,"wcs-editable-field",{"type":[1],"label":[1],"readonly":[4],"value":[1032],"validateFn":[16],"formatFn":[16],"errorMsg":[1,"error-msg"],"currentState":[32],"isError":[32]},[[8,"click","onWindowClickEvent"]]]]],["wcs-grid",[[1,"wcs-grid",{"serverMode":[4,"server-mode"],"data":[16],"loading":[4],"selectionConfig":[1,"selection-config"],"selectedItems":[8,"selected-items"],"wcsGridPaginationId":[1,"wcs-grid-pagination-id"],"rowIdPath":[1,"row-id-path"],"columns":[32],"paginationEl":[32],"rows":[32]},[[0,"wcsHiddenChange","onHiddenColumnChange"],[0,"wcsSortChange","sortChangeEventHandler"],[0,"wcsGridPaginationChange","paginationChangeEventHandler"],[8,"wcsGridPaginationChange","paginationChangeEventHandlerOutside"]]]]],["wcs-grid-pagination",[[1,"wcs-grid-pagination",{"availablePageSizes":[16],"currentPage":[2,"current-page"],"pageSize":[2,"page-size"],"itemsCount":[2,"items-count"],"pageCount":[2,"page-count"]}]]],["wcs-horizontal-stepper",[[1,"wcs-horizontal-stepper",{"currentStep":[1026,"current-step"],"steps":[16],"mode":[1],"checkOnComplete":[4,"check-on-complete"],"buttonMode":[32],"internalCurrentStep":[32],"previous":[64],"next":[64]}]]],["wcs-modal",[[4,"wcs-modal",{"withoutBackdrop":[516,"without-backdrop"],"show":[516],"showCloseButton":[516,"show-close-button"],"size":[1],"hideActions":[516,"hide-actions"]},[[4,"keydown","onKeyDown"]]]]],["wcs-dropdown",[[1,"wcs-dropdown",{"noArrow":[4,"no-arrow"],"mode":[1],"shape":[1],"disabled":[4],"placement":[1],"expanded":[32]},[[8,"click","onWindowClickEvent"],[0,"wcsDropdownItemClick","dropdownItemClick"],[0,"keydown","onKeyDown"]]]]],["wcs-galactic-menu",[[1,"wcs-galactic-menu",{"text":[1],"showPopoverMenu":[32]},[[8,"click","onWindowClickEvent"]]]]],["wcs-input",[[1,"wcs-input",{"fireFocusEvents":[4,"fire-focus-events"],"accept":[1],"autocapitalize":[1],"autocomplete":[1],"autocorrect":[1],"autofocus":[4],"clearInput":[4,"clear-input"],"clearOnEdit":[4,"clear-on-edit"],"debounce":[2],"prefixLabel":[1,"prefix-label"],"suffixLabel":[1,"suffix-label"],"disabled":[4],"enterkeyhint":[1],"icon":[1],"inputmode":[1],"max":[1],"maxlength":[2],"min":[1],"minlength":[2],"multiple":[4],"name":[1],"pattern":[1],"placeholder":[1],"readonly":[4],"required":[4],"spellcheck":[4],"state":[513],"step":[1],"size":[2],"type":[1],"value":[1032],"hasFocus":[32],"passwordReveal":[32],"setFocus":[64],"setBlur":[64],"getInputElement":[64]}]]],["wcs-textarea",[[1,"wcs-textarea",{"fireFocusEvents":[4,"fire-focus-events"],"autocapitalize":[1],"autofocus":[4],"clearOnEdit":[1028,"clear-on-edit"],"debounce":[2],"disabled":[4],"icon":[1],"inputmode":[1],"enterkeyhint":[1],"maxlength":[2],"minlength":[2],"name":[1],"placeholder":[1],"readonly":[4],"required":[4],"spellcheck":[4],"state":[513],"cols":[2],"rows":[2],"wrap":[1],"autoGrow":[4,"auto-grow"],"value":[1025],"hasFocus":[32],"fitContent":[64],"setFocus":[64],"setBlur":[64],"getInputElement":[64]}]]],["wcs-accordion",[[1,"wcs-accordion",{"hideActionText":[516,"hide-action-text"],"highlight":[516],"groupContentWithHeader":[516,"group-content-with-header"]},[[0,"wcsOpenChange","wcsOpenChangeHandler"]]]]],["wcs-accordion-content",[[1,"wcs-accordion-content"]]],["wcs-accordion-header",[[1,"wcs-accordion-header"]]],["wcs-accordion-panel",[[1,"wcs-accordion-panel",{"open":[1540],"hideActionText":[516,"hide-action-text"],"highlight":[516],"groupContentWithHeader":[516,"group-content-with-header"],"close":[64]}]]],["wcs-action-bar",[[1,"wcs-action-bar",{"gutter":[4],"hasTabs":[32]}]]],["wcs-app",[[1,"wcs-app"]]],["wcs-badge",[[1,"wcs-badge",{"shape":[1],"color":[1]}]]],["wcs-card",[[1,"wcs-card",{"mode":[1537]}]]],["wcs-card-body",[[1,"wcs-card-body"]]],["wcs-com-nav",[[1,"wcs-com-nav",{"appName":[1,"app-name"],"mobileMenuOpen":[32],"currentActiveSizing":[32]},[[0,"wcsClickOnFinalAction","onClickOnFinalAction"],[0,"wcsCategoryItemClicked","onClickOnFinalActionCat"]]]]],["wcs-com-nav-category",[[1,"wcs-com-nav-category",{"label":[1],"categoryOpen":[32],"close":[64],"open":[64]},[[8,"click","onWindowClickEvent"],[8,"wcsCategoryOpened","onSubmenuOpened"]]]]],["wcs-com-nav-submenu",[[1,"wcs-com-nav-submenu",{"label":[1],"panelTitle":[1,"panel-title"],"panelDescription":[1,"panel-description"],"menuOpen":[32],"close":[64],"open":[64]},[[8,"click","onWindowClickEvent"],[8,"wcsSubmenuOpened","onSubmenuOpened"],[0,"wcsCategoryItemClicked","wcsCategoryItemClickedHandler"]]]]],["wcs-divider",[[1,"wcs-divider"]]],["wcs-dropdown-divider",[[1,"wcs-dropdown-divider"]]],["wcs-dropdown-header",[[1,"wcs-dropdown-header"]]],["wcs-dropdown-item",[[4,"wcs-dropdown-item",null,[[1,"mousedown","onMouseDown"],[0,"keydown","onKeyDown"]]]]],["wcs-field",[[1,"wcs-field"]]],["wcs-field-content",[[1,"wcs-field-content"]]],["wcs-field-label",[[1,"wcs-field-label"]]],["wcs-footer",[[1,"wcs-footer"]]],["wcs-galactic",[[1,"wcs-galactic",{"text":[1],"show":[32]}]]],["wcs-grid-column",[[1,"wcs-grid-column",{"path":[1],"name":[1],"sort":[4],"sortFn":[16],"formatter":[16],"sortOrder":[1025,"sort-order"],"width":[1],"customCells":[4,"custom-cells"],"hidden":[4]}]]],["wcs-grid-custom-cell",[[1,"wcs-grid-custom-cell",{"columnId":[1,"column-id"],"rowId":[8,"row-id"]}]]],["wcs-header",[[1,"wcs-header"]]],["wcs-hint",[[1,"wcs-hint",{"small":[1540]}]]],["wcs-icon",[[0,"wcs-icon",{"icon":[1],"size":[1]}]]],["wcs-label",[[1,"wcs-label",{"required":[516]}]]],["wcs-list-item",[[1,"wcs-list-item",{"activated":[1028]}]]],["wcs-list-item-properties",[[1,"wcs-list-item-properties"]]],["wcs-list-item-property",[[1,"wcs-list-item-property"]]],["wcs-nav",[[1,"wcs-nav"]]],["wcs-nav-item",[[4,"wcs-nav-item",{"text":[513],"href":[513]}]]],["wcs-progress-radial",[[1,"wcs-progress-radial",{"size":[2],"showLabel":[4,"show-label"],"value":[2]}]]],["wcs-radio-group",[[1,"wcs-radio-group",{"value":[8],"name":[520],"mode":[513]},[[0,"wcsRadioClick","selectedOptionChanged"]]]]],["wcs-switch",[[1,"wcs-switch",{"name":[1],"checked":[516],"labelAlignment":[513,"label-alignment"],"disabled":[4]}]]],["wcs-tab",[[1,"wcs-tab",{"header":[513],"itemKey":[8,"item-key"]}]]],["wcs-tabs",[[1,"wcs-tabs",{"align":[513],"selectedIndex":[2,"selected-index"],"selectedKey":[8,"selected-key"],"headersOnly":[4,"headers-only"],"gutter":[4],"headers":[32],"currentActiveTabIndex":[32]},[[0,"tabLoaded","onTabLoaded"]]]]],["wcs-tooltip",[[1,"wcs-tooltip",{"for":[1],"position":[513],"interactive":[4],"maxWidth":[8,"max-width"],"delay":[2],"duration":[2],"trigger":[1],"theme":[1],"content":[1],"hide":[64],"show":[64],"disable":[64],"enable":[64]}]]],["wcs-progress-bar",[[1,"wcs-progress-bar",{"small":[4],"showLabel":[4,"show-label"],"value":[2]}]]],["wcs-radio",[[1,"wcs-radio",{"mode":[513],"value":[1544],"label":[1537],"checked":[1540],"disabled":[1028]}]]],["wcs-select_2",[[4,"wcs-select-option",{"disabled":[1540],"selected":[1540],"value":[8],"chipColor":[1,"chip-color"],"chipBackgroundColor":[1,"chip-background-color"],"multiple":[1540]},[[1,"mousedown","onMouseDown"]]],[1,"wcs-select",{"value":[1032],"placeholder":[1537],"disabled":[1028],"multiple":[516],"chips":[516],"name":[1],"compareWith":[16],"expanded":[32],"hasLoaded":[32],"displayText":[32],"focused":[32],"overlayDirection":[32],"open":[64],"close":[64]},[[1,"mousedown","onMouseDown"],[8,"click","onWindowClickEvent"],[0,"wcsSelectOptionClick","selectedOptionChanged"]]]]],["wcs-error_2",[[1,"wcs-error"],[1,"wcs-form-field",{"isError":[1540,"is-error"],"hasPrefix":[32],"hasSuffix":[32],"spiedElement":[32]}]]],["wcs-spinner",[[1,"wcs-spinner",{"mode":[513]}]]],["wcs-button",[[1,"wcs-button",{"type":[1025],"href":[1],"disabled":[516],"ripple":[4],"shape":[513],"mode":[513]},[[0,"click","onClick"]]]]],["wcs-checkbox",[[1,"wcs-checkbox",{"name":[1],"indeterminate":[1540],"checked":[1540],"labelAlignment":[1537,"label-alignment"],"disabled":[4]}]]],["wcs-mat-icon",[[1,"wcs-mat-icon",{"icon":[1],"size":[1],"family":[1],"familyFile":[32],"familyClass":[32]}]]]], options);
14
14
  });
15
15
  };
16
16
 
@@ -14,7 +14,7 @@ import { h } from './index-2a90353f.js';
14
14
  from="20,35 50,65 80,35"></animate>
15
15
  </polyline>
16
16
  </svg> */
17
- const SelectArrow = ({ up }) => (h("svg", { style: { marginLeft: 'auto' }, xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24" },
17
+ const SelectArrow = ({ up, ariaLabel }) => (h("svg", { "aria-hidden": ariaLabel ? false : "true", role: "img", "aria-label": ariaLabel ? ariaLabel : false, style: { marginLeft: 'auto' }, xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24" },
18
18
  h("style", { type: "text/css" }, `
19
19
  .arrow-group {
20
20
  transform-origin: 50% 50%;
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-2a90353f.js';
2
- import { S as SelectArrow } from './select-arrow-66a47b7a.js';
2
+ import { S as SelectArrow } from './select-arrow-f24031e4.js';
3
3
 
4
- const accordionPanelCss = ":host{display:flex;flex-direction:column;cursor:pointer;margin-bottom:16px}:host .header{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-radius:7px;font-weight:500;font-size:16px;color:var(--wcs-primary);background-color:var(--wcs-light)}:host .header-action{display:flex;align-items:center;user-select:none}:host .header-action .arrow{fill:var(--wcs-primary)}:host .content{display:none}:host([open]){margin-bottom:0}:host([open]) .content{display:block}:host([open]):host([group-content-with-header]) .header{border-radius:7px 7px 0 0;padding-bottom:0}:host([open]):host([group-content-with-header]) .content{border-radius:0 0 7px 7px;margin-bottom:14px;background-color:var(--wcs-light)}:host([open]):host([highlight]) .header{background-color:var(--wcs-primary);color:var(--wcs-light)}:host([open]):host([highlight]) .arrow{fill:var(--wcs-light)}:host([open]):host([highlight]):host([group-content-with-header]) .content{background-color:var(--wcs-primary);color:var(--wcs-light)}";
4
+ const accordionPanelCss = ":host{display:flex;flex-direction:column;cursor:pointer;margin-bottom:16px}:host .header{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-radius:7px;font-weight:500;font-size:16px;color:var(--wcs-primary);background-color:var(--wcs-light);border:none}@media (forced-colors: active){:host .header{border:1px solid ButtonBorder}}:host .header:focus-visible{outline:2px solid var(--wcs-primary)}:host .header-action{display:flex;align-items:center;user-select:none}:host .header-action .arrow{fill:var(--wcs-primary)}:host .content{display:none}:host([open]){margin-bottom:0}:host([open]) .content{display:block}:host([open]):host([group-content-with-header]) .header{border-radius:7px 7px 0 0;padding-bottom:0}:host([open]):host([group-content-with-header]) .content{border-radius:0 0 7px 7px;margin-bottom:14px;background-color:var(--wcs-light)}:host([open]):host([highlight]) .header{background-color:var(--wcs-primary);color:var(--wcs-light)}:host([open]):host([highlight]) .arrow{fill:var(--wcs-light)}:host([open]):host([highlight]):host([group-content-with-header]) .content{background-color:var(--wcs-primary);color:var(--wcs-light)}";
5
5
 
6
6
  let AccordionPanel = class {
7
7
  constructor(hostRef) {
@@ -33,7 +33,7 @@ let AccordionPanel = class {
33
33
  this.open = false;
34
34
  }
35
35
  render() {
36
- return (h(Host, null, h("div", { class: "header", onClick: () => this.open = !this.open }, h("slot", { name: "header" }), h("div", { class: "header-action" }, !this.hideActionText && (h("span", null, this.open ? 'Fermez' : 'Ouvrez')), h(SelectArrow, { up: this.open }))), h("div", { class: "content" }, h("slot", { name: "content" }))));
36
+ return (h(Host, null, h("button", { "aria-expanded": this.open ? "true" : "false", "aria-controls": "content", class: "header", onClick: () => this.open = !this.open }, h("slot", { name: "header" }), h("span", { class: "header-action" }, !this.hideActionText && (h("span", null, this.open ? 'Fermez' : 'Ouvrez')), h(SelectArrow, { up: this.open }))), h("div", { class: "content", id: "content" }, h("slot", { name: "content" }))));
37
37
  }
38
38
  static get watchers() { return {
39
39
  "open": ["openChange"]
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, h, g as getElement } from './index-2a90353f.js';
2
- import { h as hasShadowDom } from './helpers-e2993152.js';
2
+ import { l as hasShadowDom } from './helpers-374df0ea.js';
3
3
  import { M as MDCRipple } from './component-6b4d470f.js';
4
4
 
5
5
  const buttonCss = "@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;position:relative;outline:none;overflow:hidden}.mdc-ripple-surface::before,.mdc-ripple-surface::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface::before,.mdc-ripple-surface::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-upgraded--unbounded::before,.mdc-ripple-upgraded--unbounded::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{top:var(--mdc-ripple-top, calc(50% - 50%));left:var(--mdc-ripple-left, calc(50% - 50%));width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface::before,.mdc-ripple-surface::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-ripple-surface:hover::before,.mdc-ripple-surface.mdc-ripple-surface--hover::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}:host{display:inline-block;--wcs-button-padding:calc(var(--wcs-padding) / 2) var(--wcs-padding);--wcs-button-color:var(--wcs-contrast, var(--wcs-white, white));--wcs-button-background-color:var(--wcs-base, var(--wcs-primary, #0088CE));--wcs-button-ripple-color:var(--wcs-contrast, var(--wcs-white, white));--wcs-button-border-radius:var(--wcs-border-radius);--wcs-button-border-color:var(--wcs-base)}:host([mode=clear]){--wcs-button-border-color:transparent}:host([mode=clear]) .wcs-inner-button{box-shadow:none}:host([mode=clear]),:host([mode=stroked]){--wcs-button-color:var(--wcs-base);--wcs-button-background-color:transparent}:host([mode=clear]) .wcs-inner-button::before,:host([mode=clear]) .wcs-inner-button::after,:host([mode=stroked]) .wcs-inner-button::before,:host([mode=stroked]) .wcs-inner-button::after{--wcs-button-ripple-color:var(--wcs-base)}:host([shape=small]){--wcs-button-padding:2px 16px}:host([shape=small]) .wcs-inner-button{min-width:var(--wcs-button-min-width, unset);min-height:var(--wcs-button-min-height, unset)}:host([shape=round]){--wcs-button-padding:0;--wcs-button-border-radius:50%}:host([shape=round]) .wcs-inner-button{min-width:var(--wcs-button-min-width, 42px);min-height:var(--wcs-button-min-height, 42px)}:host([shape=square]){--wcs-button-padding:0}:host([shape=square]) .wcs-inner-button{min-width:var(--wcs-button-min-width, 42px);min-height:var(--wcs-button-min-height, 42px)}:host([shape=normal]){--wcs-button-padding:calc(var(--wcs-padding) / 2 + 1px) calc(var(--wcs-padding))}:host([shape=normal]) .wcs-inner-button{min-width:var(--wcs-button-min-width, unset);min-height:var(--wcs-button-min-height, unset)}:host([mode=stroked]) .wcs-inner-button{box-shadow:inset 0 0 0 1px var(--wcs-button-border-color)}:host([disabled]){--wcs-button-color:var(--wcs-text-disabled);--wcs-button-background-color:var(--wcs-light)}:host([disabled]) .wcs-inner-button{--wcs-button-border-color:var(--wcs-light);opacity:1;cursor:default;pointer-events:none}:host([disabled]):host([mode=clear]),:host([disabled]):host([disabled]){--wcs-button-background-color:transparent}.wcs-inner-button{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;display:flex;align-items:center;justify-content:center;width:100%;font-family:var(--wcs-font-sans-serif);background-color:var(--wcs-button-background-color);color:var(--wcs-button-color);padding:var(--wcs-button-padding);border-radius:var(--wcs-button-border-radius);border:none;overflow:hidden;outline:0;text-transform:none;margin:0;cursor:pointer;font-weight:500;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;font-size:1rem;line-height:1.5;transition:color 175ms ease-in-out, background-color 175ms ease-in-out, box-shadow 175ms cubic-bezier(0.4, 0, 0.2, 1)}.wcs-inner-button::before,.wcs-inner-button::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.wcs-inner-button::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.wcs-inner-button::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.wcs-inner-button.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.wcs-inner-button.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.wcs-inner-button.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.wcs-inner-button.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.wcs-inner-button.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.wcs-inner-button::before,.wcs-inner-button::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.wcs-inner-button.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.wcs-inner-button:hover::before,.wcs-inner-button.mdc-ripple-surface--hover::before{opacity:0.1;opacity:var(--mdc-ripple-hover-opacity, 0.1)}.wcs-inner-button.mdc-ripple-upgraded--background-focused::before,.wcs-inner-button:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.2;opacity:var(--mdc-ripple-focus-opacity, 0.2)}.wcs-inner-button:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.wcs-inner-button:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.3;opacity:var(--mdc-ripple-press-opacity, 0.3)}.wcs-inner-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.3)}.wcs-inner-button::before,.wcs-inner-button::after{background-color:white;background-color:var(--mdc-ripple-color, white)}.wcs-inner-button::before,.wcs-inner-button::after{background-color:var(--wcs-button-ripple-color)}.wcs-inner-button:focus{box-shadow:0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 2px 1px -1px rgba(0, 0, 0, 0.12), 0 1px 3px 0 rgba(0, 0, 0, 0.2)}.wcs-inner-button:hover{box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2)}a{text-decoration:none;box-sizing:border-box}button::-moz-focus-inner,a::-moz-focus-inner{border:0}";
@@ -50,6 +50,7 @@ let Button = class {
50
50
  }
51
51
  componentDidLoad() {
52
52
  this.mdcRipple = new MDCRipple(this.el.shadowRoot.querySelector('.wcs-inner-button'));
53
+ this.el.focus = () => this.el.shadowRoot.querySelector(this.getTagName()).focus();
53
54
  }
54
55
  enabledRippleEffect() {
55
56
  this.mdcRipple.disabled = false;
@@ -57,6 +58,9 @@ let Button = class {
57
58
  disabledRippleEffect() {
58
59
  this.mdcRipple.disabled = true;
59
60
  }
61
+ getTagName() {
62
+ return this.href !== undefined ? 'a' : 'button';
63
+ }
60
64
  onRippleChange() {
61
65
  if (this.ripple) {
62
66
  this.enabledRippleEffect();
@@ -66,7 +70,7 @@ let Button = class {
66
70
  }
67
71
  }
68
72
  render() {
69
- const TagType = this.href !== undefined ? 'a' : 'button';
73
+ const TagType = this.getTagName();
70
74
  const attrs = this.href !== undefined
71
75
  ? { href: this.href, role: 'button' }
72
76
  : { type: this.type };
@@ -6,6 +6,7 @@ let ComNav = class {
6
6
  constructor(hostRef) {
7
7
  registerInstance(this, hostRef);
8
8
  this.mobileMenuOpen = false;
9
+ this.hasAlreadyRegisteredClickHandlerOnSlottedLink = false;
9
10
  }
10
11
  mobileMenuIconClick() {
11
12
  this.mobileMenuOpen = !this.mobileMenuOpen;
@@ -27,6 +28,23 @@ let ComNav = class {
27
28
  });
28
29
  this.resizeObserver.observe(document.body);
29
30
  }
31
+ componentDidRender() {
32
+ this.registerHandlerToCloseMobileMenuOnClickOnSlottedLinkTag();
33
+ }
34
+ registerHandlerToCloseMobileMenuOnClickOnSlottedLinkTag() {
35
+ if (this.hasAlreadyRegisteredClickHandlerOnSlottedLink)
36
+ return;
37
+ const mainSlot = this.el.shadowRoot.querySelector('slot:not([name])');
38
+ if (mainSlot) {
39
+ this.hasAlreadyRegisteredClickHandlerOnSlottedLink = true;
40
+ // If the user click on a `a` tag, we close the mobile menu overlay.
41
+ mainSlot.assignedElements().filter(e => e.tagName === 'A').forEach(a => {
42
+ a.addEventListener('click', _ => {
43
+ this.mobileMenuOpen = false;
44
+ });
45
+ });
46
+ }
47
+ }
30
48
  //region Handlers for mobile menu overlay visibility
31
49
  //
32
50
  // In mobile mode, we have only one global drawer to display the menu, that why we have to listen the clicks events
@@ -1,6 +1,7 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-2a90353f.js';
2
+ import { d as isSpaceKey, e as isEnterKey } from './helpers-374df0ea.js';
2
3
 
3
- const dropdownItemCss = "wcs-dropdown-item{display:block;padding:0 var(--wcs-padding);font-weight:500;cursor:pointer;height:42px;line-height:42px}wcs-dropdown-item:hover{color:var(--wcs-primary);background-color:var(--wcs-light)}";
4
+ const dropdownItemCss = "wcs-dropdown-item{display:block;padding:0 var(--wcs-padding);font-weight:500;cursor:pointer;height:42px;line-height:42px}wcs-dropdown-item:hover,wcs-dropdown-item:focus{color:var(--wcs-primary);background-color:var(--wcs-light)}";
4
5
 
5
6
  let DropdownItem = class {
6
7
  constructor(hostRef) {
@@ -10,8 +11,13 @@ let DropdownItem = class {
10
11
  onMouseDown(_) {
11
12
  this.wcsDropdownItemClick.emit();
12
13
  }
14
+ onKeyDown(evt) {
15
+ if (isSpaceKey(evt) || isEnterKey(evt)) {
16
+ this.wcsDropdownItemClick.emit();
17
+ }
18
+ }
13
19
  render() {
14
- return (h(Host, { slot: "item" }, h("slot", null)));
20
+ return (h(Host, { slot: "item", tabindex: "0" }, h("slot", null)));
15
21
  }
16
22
  };
17
23
  DropdownItem.style = dropdownItemCss;