@dso-toolkit/core 62.14.0 → 62.15.1

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 (96) hide show
  1. package/dist/cjs/dso-advanced-select.cjs.entry.js +3 -2
  2. package/dist/cjs/dso-advanced-select.cjs.entry.js.map +1 -1
  3. package/dist/cjs/dso-alert_7.cjs.entry.js +2 -1
  4. package/dist/cjs/dso-alert_7.cjs.entry.js.map +1 -1
  5. package/dist/cjs/dso-dropdown-menu.cjs.entry.js +56 -73
  6. package/dist/cjs/dso-dropdown-menu.cjs.entry.js.map +1 -1
  7. package/dist/cjs/dso-helpcenter-panel.cjs.entry.js +2 -1
  8. package/dist/cjs/dso-helpcenter-panel.cjs.entry.js.map +1 -1
  9. package/dist/cjs/dso-icon.cjs.entry.js +12 -0
  10. package/dist/cjs/dso-icon.cjs.entry.js.map +1 -1
  11. package/dist/cjs/dso-list-button.cjs.entry.js +2 -1
  12. package/dist/cjs/dso-list-button.cjs.entry.js.map +1 -1
  13. package/dist/cjs/dso-progress-indicator.cjs.entry.js +2 -7
  14. package/dist/cjs/dso-progress-indicator.cjs.entry.js.map +1 -1
  15. package/dist/cjs/dso-toolkit.cjs.js +1 -1
  16. package/dist/cjs/{focus-trap.esm-1633a28f.js → focus-trap.esm-6cff35a7.js} +16 -584
  17. package/dist/cjs/focus-trap.esm-6cff35a7.js.map +1 -0
  18. package/dist/cjs/index.esm-970bc106.js +578 -0
  19. package/dist/cjs/index.esm-970bc106.js.map +1 -0
  20. package/dist/cjs/loader.cjs.js +1 -1
  21. package/dist/collection/components/dropdown-menu/dropdown-menu.js +69 -72
  22. package/dist/collection/components/dropdown-menu/dropdown-menu.js.map +1 -1
  23. package/dist/collection/components/icon/icon.js +2 -0
  24. package/dist/collection/components/icon/icon.js.map +1 -1
  25. package/dist/collection/components/progress-indicator/progress-indicator.css +7 -3
  26. package/dist/collection/components/progress-indicator/progress-indicator.js +1 -6
  27. package/dist/collection/components/progress-indicator/progress-indicator.js.map +1 -1
  28. package/dist/components/dropdown-menu.js +56 -73
  29. package/dist/components/dropdown-menu.js.map +1 -1
  30. package/dist/components/dso-advanced-select.js +2 -1
  31. package/dist/components/dso-advanced-select.js.map +1 -1
  32. package/dist/components/dso-autosuggest.js +7 -1
  33. package/dist/components/dso-autosuggest.js.map +1 -1
  34. package/dist/components/focus-trap.esm.js +2 -569
  35. package/dist/components/focus-trap.esm.js.map +1 -1
  36. package/dist/components/icon.js +12 -0
  37. package/dist/components/icon.js.map +1 -1
  38. package/dist/components/index.esm.js +572 -0
  39. package/dist/components/index.esm.js.map +1 -0
  40. package/dist/components/progress-indicator.js +9 -8
  41. package/dist/components/progress-indicator.js.map +1 -1
  42. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  43. package/dist/dso-toolkit/dso-toolkit.esm.js.map +1 -1
  44. package/dist/dso-toolkit/p-1b8d34a6.entry.js +2 -0
  45. package/dist/dso-toolkit/{p-5595d073.entry.js.map → p-1b8d34a6.entry.js.map} +1 -1
  46. package/dist/dso-toolkit/p-36ddddf4.entry.js +2 -0
  47. package/dist/dso-toolkit/{p-0ebbcbef.entry.js.map → p-36ddddf4.entry.js.map} +1 -1
  48. package/dist/dso-toolkit/{p-eeacda43.entry.js → p-46955cda.entry.js} +2 -2
  49. package/dist/dso-toolkit/p-46955cda.entry.js.map +1 -0
  50. package/dist/dso-toolkit/p-69231fe7.entry.js +2 -0
  51. package/dist/dso-toolkit/p-69231fe7.entry.js.map +1 -0
  52. package/dist/dso-toolkit/p-86133aa5.js +6 -0
  53. package/dist/dso-toolkit/p-86133aa5.js.map +1 -0
  54. package/dist/dso-toolkit/p-8dbb7ece.entry.js +2 -0
  55. package/dist/dso-toolkit/p-8dbb7ece.entry.js.map +1 -0
  56. package/dist/dso-toolkit/p-e3655ae6.entry.js +2 -0
  57. package/dist/dso-toolkit/{p-e32f287e.entry.js.map → p-e3655ae6.entry.js.map} +1 -1
  58. package/dist/dso-toolkit/p-eb7275e9.entry.js +2 -0
  59. package/dist/dso-toolkit/{p-1faa1497.entry.js.map → p-eb7275e9.entry.js.map} +1 -1
  60. package/dist/dso-toolkit/p-fbb226aa.js +6 -0
  61. package/dist/dso-toolkit/p-fbb226aa.js.map +1 -0
  62. package/dist/esm/dso-advanced-select.entry.js +2 -1
  63. package/dist/esm/dso-advanced-select.entry.js.map +1 -1
  64. package/dist/esm/dso-alert_7.entry.js +2 -1
  65. package/dist/esm/dso-alert_7.entry.js.map +1 -1
  66. package/dist/esm/dso-dropdown-menu.entry.js +55 -72
  67. package/dist/esm/dso-dropdown-menu.entry.js.map +1 -1
  68. package/dist/esm/dso-helpcenter-panel.entry.js +2 -1
  69. package/dist/esm/dso-helpcenter-panel.entry.js.map +1 -1
  70. package/dist/esm/dso-icon.entry.js +12 -0
  71. package/dist/esm/dso-icon.entry.js.map +1 -1
  72. package/dist/esm/dso-list-button.entry.js +2 -1
  73. package/dist/esm/dso-list-button.entry.js.map +1 -1
  74. package/dist/esm/dso-progress-indicator.entry.js +2 -7
  75. package/dist/esm/dso-progress-indicator.entry.js.map +1 -1
  76. package/dist/esm/dso-toolkit.js +1 -1
  77. package/dist/esm/{focus-trap.esm-22fb5633.js → focus-trap.esm-d8deb1f0.js} +3 -570
  78. package/dist/esm/focus-trap.esm-d8deb1f0.js.map +1 -0
  79. package/dist/esm/index.esm-7e16e884.js +572 -0
  80. package/dist/esm/index.esm-7e16e884.js.map +1 -0
  81. package/dist/esm/loader.js +1 -1
  82. package/dist/types/components/dropdown-menu/dropdown-menu.d.ts +4 -5
  83. package/package.json +2 -2
  84. package/dist/cjs/focus-trap.esm-1633a28f.js.map +0 -1
  85. package/dist/dso-toolkit/p-0ebbcbef.entry.js +0 -2
  86. package/dist/dso-toolkit/p-1faa1497.entry.js +0 -2
  87. package/dist/dso-toolkit/p-5595d073.entry.js +0 -2
  88. package/dist/dso-toolkit/p-55dec51f.entry.js +0 -2
  89. package/dist/dso-toolkit/p-55dec51f.entry.js.map +0 -1
  90. package/dist/dso-toolkit/p-56136f3c.entry.js +0 -2
  91. package/dist/dso-toolkit/p-56136f3c.entry.js.map +0 -1
  92. package/dist/dso-toolkit/p-9c0f67c8.js +0 -10
  93. package/dist/dso-toolkit/p-9c0f67c8.js.map +0 -1
  94. package/dist/dso-toolkit/p-e32f287e.entry.js +0 -2
  95. package/dist/dso-toolkit/p-eeacda43.entry.js.map +0 -1
  96. package/dist/esm/focus-trap.esm-22fb5633.js.map +0 -1
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-2556c4c6.js');
6
- const focusTrap_esm = require('./focus-trap.esm-1633a28f.js');
7
- const getActiveElement = require('./get-active-element-618f7b1f.js');
6
+ const index_esm = require('./index.esm-970bc106.js');
8
7
  const hasOverflow = require('./has-overflow-27e20400.js');
8
+ const getActiveElement = require('./get-active-element-618f7b1f.js');
9
9
  const v4 = require('./v4-c23234d2.js');
10
10
 
11
11
  const dropdownMenuCss = ":host(:focus){outline:none}:host{display:inline-block}";
@@ -13,29 +13,13 @@ const dropdownMenuCss = ":host(:focus){outline:none}:host{display:inline-block}"
13
13
  const DropdownMenu = class {
14
14
  constructor(hostRef) {
15
15
  index.registerInstance(this, hostRef);
16
- this.keyDownListener = (event) => {
17
- if (event.defaultPrevented) {
16
+ this.focusOutListener = (event) => {
17
+ if (!(event.relatedTarget instanceof HTMLElement)) {
18
18
  return;
19
19
  }
20
- switch (event.key) {
21
- case "ArrowDown":
22
- this.tabInPopup(1);
23
- break;
24
- case "ArrowUp":
25
- this.tabInPopup(-1);
26
- break;
27
- case "Escape":
28
- this.escape();
29
- break;
30
- case " ":
31
- if (event.target instanceof HTMLElement) {
32
- event.target.click();
33
- }
34
- break;
35
- default:
36
- return;
20
+ if (!this.tabbables(true).includes(event.relatedTarget)) {
21
+ this.open = false;
37
22
  }
38
- event.preventDefault();
39
23
  };
40
24
  this.escape = () => {
41
25
  this.button.focus();
@@ -73,32 +57,6 @@ const DropdownMenu = class {
73
57
  watchStrategy() {
74
58
  this.setStrategy();
75
59
  }
76
- createTrap() {
77
- var _a, _b;
78
- this.trap = focusTrap_esm.createFocusTrap(this.host, {
79
- clickOutsideDeactivates: () => {
80
- var _a;
81
- this.open = false;
82
- (_a = this.trap) === null || _a === void 0 ? void 0 : _a.deactivate();
83
- delete this.trap;
84
- return true;
85
- },
86
- escapeDeactivates: (event) => {
87
- var _a;
88
- if (event instanceof KeyboardEvent) {
89
- this.open = false;
90
- (_a = this.trap) === null || _a === void 0 ? void 0 : _a.deactivate();
91
- delete this.trap;
92
- }
93
- return true;
94
- },
95
- tabbableOptions: {
96
- getShadowRoot: true,
97
- },
98
- setReturnFocus: (_a = this.button) !== null && _a !== void 0 ? _a : false,
99
- initialFocus: (_b = this.button) !== null && _b !== void 0 ? _b : false,
100
- }).activate();
101
- }
102
60
  setStrategy() {
103
61
  if (!this.popper) {
104
62
  return;
@@ -131,8 +89,9 @@ const DropdownMenu = class {
131
89
  }
132
90
  return button;
133
91
  }
134
- get tabbables() {
135
- return focusTrap_esm.tabbable(this.host).filter((e) => e !== this.button);
92
+ tabbables(withButton) {
93
+ const tabbables = index_esm.tabbable(this.host);
94
+ return withButton ? tabbables : tabbables.filter((element) => element !== this.button);
136
95
  }
137
96
  componentDidLoad() {
138
97
  this.button.setAttribute("aria-haspopup", "menu");
@@ -182,55 +141,79 @@ const DropdownMenu = class {
182
141
  });
183
142
  }
184
143
  componentDidRender() {
185
- var _a, _b;
144
+ var _a;
186
145
  this.setStrategy();
187
146
  if (this.open) {
188
147
  (_a = this.popper) === null || _a === void 0 ? void 0 : _a.update();
189
- this.createTrap();
190
- }
191
- else {
192
- (_b = this.trap) === null || _b === void 0 ? void 0 : _b.deactivate();
193
- delete this.trap;
194
148
  }
195
149
  for (const li of Array.from(this.host.getElementsByTagName("li"))) {
196
- for (const tab of focusTrap_esm.tabbable(li)) {
150
+ for (const tab of index_esm.tabbable(li)) {
197
151
  tab.setAttribute("role", this.checkable ? "menuitemradio" : "menuitem");
198
152
  if (this.checkable) {
199
153
  tab.setAttribute("aria-checked", li.classList.contains("dso-checked").toString());
200
154
  }
201
155
  }
202
156
  }
203
- this.host.removeEventListener("keydown", this.keyDownListener);
204
157
  this.button.setAttribute("aria-expanded", this.open ? "true" : "false");
205
- if (this.open) {
206
- this.host.addEventListener("keydown", this.keyDownListener);
158
+ }
159
+ onClick(event) {
160
+ if (!(event.target instanceof HTMLElement)) {
161
+ return;
162
+ }
163
+ if (this.open && (!this.host.contains(event.target) || this.tabbables(false).includes(event.target))) {
164
+ this.open = false;
207
165
  }
208
- this.tabbables.forEach((focusableElement) => {
209
- focusableElement.removeEventListener("click", this.escape);
210
- if (this.open) {
211
- focusableElement.addEventListener("click", this.escape);
212
- }
213
- });
214
166
  }
215
167
  disconnectedCallback() {
216
168
  var _a;
217
169
  (_a = this.popper) === null || _a === void 0 ? void 0 : _a.destroy();
218
170
  }
219
- tabInPopup(direction) {
171
+ keyDownListener(event) {
172
+ if (event.defaultPrevented || !this.open) {
173
+ return;
174
+ }
175
+ switch (event.key) {
176
+ case "Tab":
177
+ if (event.shiftKey) {
178
+ this.tabInPopup(this.tabbables(true), -1);
179
+ }
180
+ else {
181
+ this.tabInPopup(this.tabbables(true), 1);
182
+ }
183
+ break;
184
+ case "ArrowDown":
185
+ this.tabInPopup(this.tabbables(false), 1);
186
+ break;
187
+ case "ArrowUp":
188
+ this.tabInPopup(this.tabbables(false), -1);
189
+ break;
190
+ case "Escape":
191
+ this.escape();
192
+ break;
193
+ case " ":
194
+ if (event.target instanceof HTMLElement) {
195
+ event.target.click();
196
+ }
197
+ break;
198
+ default:
199
+ return;
200
+ }
201
+ event.preventDefault();
202
+ }
203
+ tabInPopup(tabbables, direction) {
220
204
  var _a;
221
- const tabs = this.tabbables;
222
- const currentIndex = tabs.findIndex((e) => e === getActiveElement.getActiveElement());
205
+ const currentIndex = tabbables.findIndex((e) => e === getActiveElement.getActiveElement());
223
206
  let nextIndex = currentIndex + direction;
224
- if (nextIndex >= tabs.length) {
207
+ if (nextIndex >= tabbables.length) {
225
208
  nextIndex = 0;
226
209
  }
227
210
  else if (nextIndex < 0) {
228
- nextIndex = tabs.length - 1;
211
+ nextIndex = tabbables.length - 1;
229
212
  }
230
- (_a = tabs[nextIndex]) === null || _a === void 0 ? void 0 : _a.focus();
213
+ (_a = tabbables[nextIndex]) === null || _a === void 0 ? void 0 : _a.focus();
231
214
  }
232
215
  render() {
233
- return (index.h(index.Host, { tabindex: this.open ? "-1" : undefined }, index.h("slot", { name: "toggle" }), index.h("div", { hidden: !this.open }, index.h("slot", null))));
216
+ return (index.h(index.Host, { onFocusout: this.focusOutListener }, index.h("slot", { name: "toggle" }), index.h("div", { hidden: !this.open }, index.h("slot", null))));
234
217
  }
235
218
  get host() { return index.getElement(this); }
236
219
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"dso-dropdown-menu.entry.cjs.js","mappings":"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","names":["createFocusTrap","hasOverflow","tabbable","uuidv4","createPopper","getActiveElement","h","Host"],"sources":["src/components/dropdown-menu/dropdown-menu.scss?tag=dso-dropdown-menu&encapsulation=shadow","src/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/components/dropdown-menu\";\r\n\r\n:host(:focus) {\r\n outline: none;\r\n}\r\n\r\n:host {\r\n @include dropdown-menu.root();\r\n}\r\n","import { createPopper, Placement, Instance as PopperInstance } from \"@popperjs/core\";\r\nimport { h, Component, Element, Host, Prop, Watch } from \"@stencil/core\";\r\nimport { FocusableElement, tabbable } from \"tabbable\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { createFocusTrap, FocusTrap } from \"focus-trap\";\r\n\r\nimport { getActiveElement } from \"../../utils/get-active-element\";\r\nimport { hasOverflow } from \"../../utils/has-overflow\";\r\n\r\n@Component({\r\n tag: \"dso-dropdown-menu\",\r\n styleUrl: \"dropdown-menu.scss\",\r\n shadow: true,\r\n})\r\nexport class DropdownMenu {\r\n private trap?: FocusTrap;\r\n /**\r\n * Whether the menu is open or closed.\r\n * This attribute is reflected and mutable.\r\n */\r\n @Prop({ reflect: true, mutable: true })\r\n open = false;\r\n\r\n /**\r\n * Alignment of the dropdown\r\n */\r\n @Prop()\r\n dropdownAlign: \"left\" | \"right\" = \"left\";\r\n\r\n /**\r\n * Space between button and dropdown options\r\n */\r\n @Prop()\r\n dropdownOptionsOffset = 2;\r\n\r\n /**\r\n * Whether the menu is checkable.\r\n */\r\n @Prop()\r\n checkable = false;\r\n\r\n /**\r\n * Selector for the element the dropdown options should not be overflowing.\r\n */\r\n @Prop()\r\n boundary?: string;\r\n\r\n /**\r\n * Force placement of dropdown.\r\n *\r\n * This property overrides `dropdownAlign`.\r\n */\r\n @Prop()\r\n placement?: Placement;\r\n\r\n /**\r\n * Set position strategy of dropdown options\r\n */\r\n @Prop()\r\n strategy: \"auto\" | \"absolute\" | \"fixed\" = \"auto\";\r\n\r\n @Watch(\"placement\")\r\n @Watch(\"dropdownAlign\")\r\n watchPosition() {\r\n if (!this.popper) {\r\n return;\r\n }\r\n\r\n this.popper.setOptions({\r\n placement: this.placement || (this.dropdownAlign === \"right\" ? \"bottom-end\" : \"bottom-start\"),\r\n });\r\n }\r\n\r\n @Watch(\"dropdownOptionsOffset\")\r\n watchOptionsOffset() {\r\n this.popper?.setOptions({\r\n modifiers: [\r\n {\r\n name: \"offset\",\r\n options: {\r\n offset: [0, this.dropdownOptionsOffset],\r\n },\r\n },\r\n ],\r\n });\r\n }\r\n\r\n @Watch(\"strategy\")\r\n watchStrategy() {\r\n this.setStrategy();\r\n }\r\n\r\n private createTrap() {\r\n this.trap = createFocusTrap(this.host, {\r\n clickOutsideDeactivates: () => {\r\n this.open = false;\r\n this.trap?.deactivate();\r\n delete this.trap;\r\n\r\n return true;\r\n },\r\n escapeDeactivates: (event) => {\r\n if (event instanceof KeyboardEvent) {\r\n this.open = false;\r\n this.trap?.deactivate();\r\n delete this.trap;\r\n }\r\n\r\n return true;\r\n },\r\n tabbableOptions: {\r\n getShadowRoot: true,\r\n },\r\n setReturnFocus: this.button ?? false,\r\n initialFocus: this.button ?? false,\r\n }).activate();\r\n }\r\n\r\n private setStrategy() {\r\n if (!this.popper) {\r\n return;\r\n }\r\n\r\n if (this.strategy === \"absolute\" || this.strategy === \"fixed\") {\r\n this.popper.setOptions({\r\n strategy: this.strategy,\r\n });\r\n\r\n return;\r\n }\r\n\r\n let element: Element | null = this.host;\r\n\r\n const boundary = this.boundary || document;\r\n\r\n while (element && element.parentNode !== boundary) {\r\n element = element.parentNode instanceof ShadowRoot ? element.parentNode.host : element.parentElement;\r\n if (element !== null && hasOverflow(element)) {\r\n this.popper.setOptions({\r\n strategy: \"fixed\",\r\n });\r\n\r\n return;\r\n }\r\n }\r\n\r\n this.popper.setOptions({\r\n strategy: \"absolute\",\r\n });\r\n }\r\n\r\n @Element()\r\n host!: HTMLDsoDropdownMenuElement;\r\n\r\n private popper: PopperInstance | undefined;\r\n\r\n get button(): HTMLButtonElement {\r\n const button = this.host.querySelector('button[slot=\"toggle\"]');\r\n\r\n if (!(button instanceof HTMLButtonElement)) {\r\n throw new ReferenceError(\"Mandatory toggle button not found\");\r\n }\r\n\r\n return button;\r\n }\r\n\r\n get tabbables(): FocusableElement[] {\r\n return tabbable(this.host).filter((e) => e !== this.button);\r\n }\r\n\r\n componentDidLoad() {\r\n this.button.setAttribute(\"aria-haspopup\", \"menu\");\r\n this.button.setAttribute(\"aria-expanded\", \"false\");\r\n if (!this.button.id) {\r\n this.button.id = uuidv4();\r\n }\r\n\r\n this.button.addEventListener(\"click\", () => {\r\n this.open = !this.open;\r\n });\r\n\r\n const options = this.host.querySelector(\".dso-dropdown-options\");\r\n if (!options) {\r\n throw new ReferenceError(\"Dropdown options not found\");\r\n }\r\n\r\n options.setAttribute(\"role\", \"menu\");\r\n options.setAttribute(\"aria-labelledby\", this.button.id);\r\n\r\n for (const ul of Array.from(this.host.getElementsByTagName(\"ul\"))) {\r\n ul.setAttribute(\"role\", \"group\");\r\n for (const li of Array.from(ul.getElementsByTagName(\"li\"))) {\r\n li.setAttribute(\"role\", \"none\");\r\n }\r\n }\r\n\r\n if (this.popper) {\r\n return;\r\n }\r\n\r\n const dropdownOptionsElement = this.host.querySelector(\".dso-dropdown-options\");\r\n\r\n if (!(dropdownOptionsElement instanceof HTMLElement)) {\r\n throw new Error(\"dropdown options element is not instanceof HTMLElement\");\r\n }\r\n\r\n this.popper = createPopper(this.button, dropdownOptionsElement, {\r\n placement: this.placement || (this.dropdownAlign === \"right\" ? \"bottom-end\" : \"bottom-start\"),\r\n modifiers: [\r\n {\r\n name: \"offset\",\r\n options: {\r\n offset: [0, this.dropdownOptionsOffset],\r\n },\r\n },\r\n {\r\n name: \"preventOverflow\",\r\n options: {\r\n boundary: this.boundary ? document.querySelector(this.boundary) : null,\r\n },\r\n enabled: this.boundary !== undefined,\r\n },\r\n ],\r\n });\r\n }\r\n\r\n componentDidRender() {\r\n this.setStrategy();\r\n if (this.open) {\r\n this.popper?.update();\r\n this.createTrap();\r\n } else {\r\n this.trap?.deactivate();\r\n\r\n delete this.trap;\r\n }\r\n\r\n for (const li of Array.from(this.host.getElementsByTagName(\"li\"))) {\r\n for (const tab of tabbable(li)) {\r\n tab.setAttribute(\"role\", this.checkable ? \"menuitemradio\" : \"menuitem\");\r\n\r\n if (this.checkable) {\r\n tab.setAttribute(\"aria-checked\", li.classList.contains(\"dso-checked\").toString());\r\n }\r\n }\r\n }\r\n\r\n this.host.removeEventListener(\"keydown\", this.keyDownListener);\r\n this.button.setAttribute(\"aria-expanded\", this.open ? \"true\" : \"false\");\r\n if (this.open) {\r\n this.host.addEventListener(\"keydown\", this.keyDownListener);\r\n }\r\n\r\n this.tabbables.forEach((focusableElement) => {\r\n focusableElement.removeEventListener(\"click\", this.escape);\r\n if (this.open) {\r\n focusableElement.addEventListener(\"click\", this.escape);\r\n }\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.popper?.destroy();\r\n }\r\n\r\n private keyDownListener = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n this.tabInPopup(1);\r\n break;\r\n\r\n case \"ArrowUp\":\r\n this.tabInPopup(-1);\r\n break;\r\n\r\n case \"Escape\":\r\n this.escape();\r\n break;\r\n\r\n case \" \":\r\n if (event.target instanceof HTMLElement) {\r\n event.target.click();\r\n }\r\n\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private tabInPopup(direction: number) {\r\n const tabs = this.tabbables;\r\n const currentIndex = tabs.findIndex((e) => e === getActiveElement());\r\n\r\n let nextIndex = currentIndex + direction;\r\n if (nextIndex >= tabs.length) {\r\n nextIndex = 0;\r\n } else if (nextIndex < 0) {\r\n nextIndex = tabs.length - 1;\r\n }\r\n\r\n tabs[nextIndex]?.focus();\r\n }\r\n\r\n private escape = () => {\r\n this.button.focus();\r\n this.open = false;\r\n };\r\n\r\n render() {\r\n return (\r\n <Host tabindex={this.open ? \"-1\" : undefined}>\r\n <slot name=\"toggle\" />\r\n <div hidden={!this.open}>\r\n <slot />\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-dropdown-menu.entry.cjs.js","mappings":"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","names":["hasOverflow","tabbable","uuidv4","createPopper","getActiveElement","h","Host"],"sources":["src/components/dropdown-menu/dropdown-menu.scss?tag=dso-dropdown-menu&encapsulation=shadow","src/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/components/dropdown-menu\";\r\n\r\n:host(:focus) {\r\n outline: none;\r\n}\r\n\r\n:host {\r\n @include dropdown-menu.root();\r\n}\r\n","import { createPopper, Placement, Instance as PopperInstance } from \"@popperjs/core\";\r\nimport { h, Component, Element, Host, Prop, Watch, Listen } from \"@stencil/core\";\r\nimport { FocusableElement, tabbable } from \"tabbable\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\n\r\nimport { hasOverflow } from \"../../utils/has-overflow\";\r\nimport { getActiveElement } from \"../../utils/get-active-element\";\r\n\r\n@Component({\r\n tag: \"dso-dropdown-menu\",\r\n styleUrl: \"dropdown-menu.scss\",\r\n shadow: true,\r\n})\r\nexport class DropdownMenu {\r\n /**\r\n * Whether the menu is open or closed.\r\n * This attribute is reflected and mutable.\r\n */\r\n @Prop({ reflect: true, mutable: true })\r\n open = false;\r\n\r\n /**\r\n * Alignment of the dropdown\r\n */\r\n @Prop()\r\n dropdownAlign: \"left\" | \"right\" = \"left\";\r\n\r\n /**\r\n * Space between button and dropdown options\r\n */\r\n @Prop()\r\n dropdownOptionsOffset = 2;\r\n\r\n /**\r\n * Whether the menu is checkable.\r\n */\r\n @Prop()\r\n checkable = false;\r\n\r\n /**\r\n * Selector for the element the dropdown options should not be overflowing.\r\n */\r\n @Prop()\r\n boundary?: string;\r\n\r\n /**\r\n * Force placement of dropdown.\r\n *\r\n * This property overrides `dropdownAlign`.\r\n */\r\n @Prop()\r\n placement?: Placement;\r\n\r\n /**\r\n * Set position strategy of dropdown options\r\n */\r\n @Prop()\r\n strategy: \"auto\" | \"absolute\" | \"fixed\" = \"auto\";\r\n\r\n @Watch(\"placement\")\r\n @Watch(\"dropdownAlign\")\r\n watchPosition() {\r\n if (!this.popper) {\r\n return;\r\n }\r\n\r\n this.popper.setOptions({\r\n placement: this.placement || (this.dropdownAlign === \"right\" ? \"bottom-end\" : \"bottom-start\"),\r\n });\r\n }\r\n\r\n @Watch(\"dropdownOptionsOffset\")\r\n watchOptionsOffset() {\r\n this.popper?.setOptions({\r\n modifiers: [\r\n {\r\n name: \"offset\",\r\n options: {\r\n offset: [0, this.dropdownOptionsOffset],\r\n },\r\n },\r\n ],\r\n });\r\n }\r\n\r\n @Watch(\"strategy\")\r\n watchStrategy() {\r\n this.setStrategy();\r\n }\r\n\r\n private setStrategy() {\r\n if (!this.popper) {\r\n return;\r\n }\r\n\r\n if (this.strategy === \"absolute\" || this.strategy === \"fixed\") {\r\n this.popper.setOptions({\r\n strategy: this.strategy,\r\n });\r\n\r\n return;\r\n }\r\n\r\n let element: Element | null = this.host;\r\n\r\n const boundary = this.boundary || document;\r\n\r\n while (element && element.parentNode !== boundary) {\r\n element = element.parentNode instanceof ShadowRoot ? element.parentNode.host : element.parentElement;\r\n if (element !== null && hasOverflow(element)) {\r\n this.popper.setOptions({\r\n strategy: \"fixed\",\r\n });\r\n\r\n return;\r\n }\r\n }\r\n\r\n this.popper.setOptions({\r\n strategy: \"absolute\",\r\n });\r\n }\r\n\r\n @Element()\r\n host!: HTMLDsoDropdownMenuElement;\r\n\r\n private popper: PopperInstance | undefined;\r\n\r\n get button(): HTMLButtonElement {\r\n const button = this.host.querySelector('button[slot=\"toggle\"]');\r\n\r\n if (!(button instanceof HTMLButtonElement)) {\r\n throw new ReferenceError(\"Mandatory toggle button not found\");\r\n }\r\n\r\n return button;\r\n }\r\n\r\n private tabbables(withButton: boolean): FocusableElement[] {\r\n const tabbables = tabbable(this.host);\r\n\r\n return withButton ? tabbables : tabbables.filter((element) => element !== this.button);\r\n }\r\n\r\n componentDidLoad() {\r\n this.button.setAttribute(\"aria-haspopup\", \"menu\");\r\n this.button.setAttribute(\"aria-expanded\", \"false\");\r\n if (!this.button.id) {\r\n this.button.id = uuidv4();\r\n }\r\n\r\n this.button.addEventListener(\"click\", () => {\r\n this.open = !this.open;\r\n });\r\n\r\n const options = this.host.querySelector(\".dso-dropdown-options\");\r\n if (!options) {\r\n throw new ReferenceError(\"Dropdown options not found\");\r\n }\r\n\r\n options.setAttribute(\"role\", \"menu\");\r\n options.setAttribute(\"aria-labelledby\", this.button.id);\r\n\r\n for (const ul of Array.from(this.host.getElementsByTagName(\"ul\"))) {\r\n ul.setAttribute(\"role\", \"group\");\r\n for (const li of Array.from(ul.getElementsByTagName(\"li\"))) {\r\n li.setAttribute(\"role\", \"none\");\r\n }\r\n }\r\n\r\n if (this.popper) {\r\n return;\r\n }\r\n\r\n const dropdownOptionsElement = this.host.querySelector(\".dso-dropdown-options\");\r\n\r\n if (!(dropdownOptionsElement instanceof HTMLElement)) {\r\n throw new Error(\"dropdown options element is not instanceof HTMLElement\");\r\n }\r\n\r\n this.popper = createPopper(this.button, dropdownOptionsElement, {\r\n placement: this.placement || (this.dropdownAlign === \"right\" ? \"bottom-end\" : \"bottom-start\"),\r\n modifiers: [\r\n {\r\n name: \"offset\",\r\n options: {\r\n offset: [0, this.dropdownOptionsOffset],\r\n },\r\n },\r\n {\r\n name: \"preventOverflow\",\r\n options: {\r\n boundary: this.boundary ? document.querySelector(this.boundary) : null,\r\n },\r\n enabled: this.boundary !== undefined,\r\n },\r\n ],\r\n });\r\n }\r\n\r\n componentDidRender() {\r\n this.setStrategy();\r\n if (this.open) {\r\n this.popper?.update();\r\n }\r\n\r\n for (const li of Array.from(this.host.getElementsByTagName(\"li\"))) {\r\n for (const tab of tabbable(li)) {\r\n tab.setAttribute(\"role\", this.checkable ? \"menuitemradio\" : \"menuitem\");\r\n\r\n if (this.checkable) {\r\n tab.setAttribute(\"aria-checked\", li.classList.contains(\"dso-checked\").toString());\r\n }\r\n }\r\n }\r\n\r\n this.button.setAttribute(\"aria-expanded\", this.open ? \"true\" : \"false\");\r\n }\r\n\r\n @Listen(\"click\", { target: \"window\" })\r\n onClick(event: MouseEvent) {\r\n if (!(event.target instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n if (this.open && (!this.host.contains(event.target) || this.tabbables(false).includes(event.target))) {\r\n this.open = false;\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n this.popper?.destroy();\r\n }\r\n\r\n private focusOutListener = (event: FocusEvent) => {\r\n if (!(event.relatedTarget instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n if (!this.tabbables(true).includes(event.relatedTarget)) {\r\n this.open = false;\r\n }\r\n };\r\n\r\n @Listen(\"keydown\", { target: \"window\" })\r\n keyDownListener(event: KeyboardEvent) {\r\n if (event.defaultPrevented || !this.open) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"Tab\":\r\n if (event.shiftKey) {\r\n this.tabInPopup(this.tabbables(true), -1);\r\n } else {\r\n this.tabInPopup(this.tabbables(true), 1);\r\n }\r\n\r\n break;\r\n case \"ArrowDown\":\r\n this.tabInPopup(this.tabbables(false), 1);\r\n break;\r\n\r\n case \"ArrowUp\":\r\n this.tabInPopup(this.tabbables(false), -1);\r\n break;\r\n\r\n case \"Escape\":\r\n this.escape();\r\n break;\r\n\r\n case \" \":\r\n if (event.target instanceof HTMLElement) {\r\n event.target.click();\r\n }\r\n\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n\r\n private tabInPopup(tabbables: FocusableElement[], direction: number) {\r\n const currentIndex = tabbables.findIndex((e) => e === getActiveElement());\r\n\r\n let nextIndex = currentIndex + direction;\r\n if (nextIndex >= tabbables.length) {\r\n nextIndex = 0;\r\n } else if (nextIndex < 0) {\r\n nextIndex = tabbables.length - 1;\r\n }\r\n\r\n tabbables[nextIndex]?.focus();\r\n }\r\n\r\n private escape = () => {\r\n this.button.focus();\r\n this.open = false;\r\n };\r\n\r\n render() {\r\n return (\r\n <Host onFocusout={this.focusOutListener}>\r\n <slot name=\"toggle\" />\r\n <div hidden={!this.open}>\r\n <slot />\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -3,7 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-2556c4c6.js');
6
- const focusTrap_esm = require('./focus-trap.esm-1633a28f.js');
6
+ const focusTrap_esm = require('./focus-trap.esm-6cff35a7.js');
7
+ require('./index.esm-970bc106.js');
7
8
 
8
9
  const helpcenterPanelCss = ":host {\n display: block;\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n.wrapper {\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n visibility: hidden;\n width: 100%;\n}\n.wrapper.visible {\n visibility: visible;\n}\n\n.dimscreen {\n background-color: #000;\n height: 100%;\n opacity: 0.4;\n width: 100%;\n}\n\n.open-button {\n display: inline-block;\n font-size: 1em;\n font-weight: 500;\n margin-bottom: 0;\n text-decoration: none;\n touch-action: manipulation;\n text-align: left;\n user-select: none;\n vertical-align: middle;\n background-color: #39870c;\n border-color: #39870c;\n color: #fff;\n border-width: 1px;\n border-style: solid;\n border-radius: 4px;\n line-height: 1.5;\n min-width: 56px;\n padding: 11px 15px;\n border: 0;\n bottom: 16px;\n font-family: Asap, sans-serif;\n position: fixed;\n right: 16px;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);\n}\n.open-button:focus, .open-button:focus-visible {\n outline-offset: 2px;\n}\n.open-button:active {\n outline: 0;\n}\n.open-button:hover {\n background-color: #275937;\n border-color: #275937;\n color: #fff;\n}\n.open-button:active {\n background-color: #173521;\n border-color: #173521;\n color: #fff;\n}\n.open-button[disabled], .open-button[disabled]:hover {\n background-color: #afcf9d;\n border-color: #afcf9d;\n color: #fff;\n}\n.open-button.dso-small {\n line-height: 1rem;\n}\n.open-button.dso-small dso-icon,\n.open-button.dso-small svg.di, .open-button.dso-small.extern::after, .open-button.dso-small.download::after, .open-button.dso-small.dso-spinner::before {\n margin-bottom: -4px;\n margin-top: -4px;\n}\n.open-button.dso-small.dso-spinner-left::before {\n height: 16px;\n width: 16px;\n}\n.open-button.dso-small.dso-spinner-right::after {\n height: 16px;\n width: 16px;\n}\n.open-button dso-icon,\n.open-button svg.di {\n margin-left: -8px;\n margin-right: 8px;\n}\n.open-button span + dso-icon,\n.open-button span + svg.di {\n margin-left: 8px;\n margin-right: -8px;\n}\n.open-button.dso-spinner-left[disabled], .open-button.dso-spinner-right[disabled] {\n background-color: #39870c;\n border-color: #39870c;\n color: #fff;\n}\n.open-button.dso-spinner-left::before {\n background-image: url(\"data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %23fff; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n content: \"\";\n display: inline-block;\n height: 24px;\n vertical-align: top;\n width: 24px;\n margin-right: 8px;\n}\n.open-button.dso-spinner-right::after {\n background-image: url(\"data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %23fff; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n content: \"\";\n display: inline-block;\n height: 24px;\n vertical-align: top;\n width: 24px;\n margin-left: 8px;\n}\n.open-button:hover {\n cursor: pointer;\n}\n.open-button.open {\n display: none;\n}\n\n.close-button {\n display: inline-block;\n font-size: 1em;\n font-weight: 500;\n margin-bottom: 0;\n text-decoration: none;\n touch-action: manipulation;\n text-align: left;\n user-select: none;\n vertical-align: middle;\n background-color: #fff;\n border-color: #39870c;\n color: #39870c;\n border-width: 1px;\n border-style: solid;\n border-radius: 4px;\n line-height: 1.5;\n min-width: 56px;\n padding: 11px 15px;\n border-right: 0;\n border-top: 0;\n border-radius: 0 0 0 8px;\n height: 40px;\n min-width: 40px;\n padding: 0;\n position: fixed;\n right: 0;\n width: 40px;\n top: 0;\n}\n.close-button:focus, .close-button:focus-visible {\n outline-offset: 2px;\n}\n.close-button:active {\n outline: 0;\n}\n.close-button:hover {\n background-color: #39870c;\n border-color: #39870c;\n color: #fff;\n}\n.close-button:active {\n background-color: #275937;\n border-color: #275937;\n color: #fff;\n}\n.close-button[disabled], .close-button[disabled]:hover {\n background-color: #fff;\n border-color: #afcf9d;\n color: #afcf9d;\n}\n.close-button.dso-small {\n line-height: 1rem;\n}\n.close-button.dso-small dso-icon,\n.close-button.dso-small svg.di, .close-button.dso-small.extern::after, .close-button.dso-small.download::after, .close-button.dso-small.dso-spinner::before {\n margin-bottom: -4px;\n margin-top: -4px;\n}\n.close-button.dso-small.dso-spinner-left::before {\n height: 16px;\n width: 16px;\n}\n.close-button.dso-small.dso-spinner-right::after {\n height: 16px;\n width: 16px;\n}\n.close-button dso-icon,\n.close-button svg.di {\n margin-left: -8px;\n margin-right: 8px;\n}\n.close-button span + dso-icon,\n.close-button span + svg.di {\n margin-left: 8px;\n margin-right: -8px;\n}\n.close-button.dso-spinner-left[disabled], .close-button.dso-spinner-right[disabled] {\n background-color: #fff;\n border-color: #39870c;\n color: #39870c;\n}\n.close-button.dso-spinner-left::before {\n background-image: url(\"data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %2339870c; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n content: \"\";\n display: inline-block;\n height: 24px;\n vertical-align: top;\n width: 24px;\n margin-right: 8px;\n}\n.close-button.dso-spinner-left:not([disabled]):hover::before {\n background-image: url(\"data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %23fff; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n content: \"\";\n display: inline-block;\n height: 24px;\n vertical-align: top;\n width: 24px;\n margin-right: 8px;\n}\n.close-button.dso-spinner-left:not([disabled]).dso-small:hover::before {\n height: 16px;\n width: 16px;\n}\n.close-button.dso-spinner-right::after {\n background-image: url(\"data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %2339870c; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n content: \"\";\n display: inline-block;\n height: 24px;\n vertical-align: top;\n width: 24px;\n margin-left: 8px;\n}\n.close-button.dso-spinner-right:not([disabled]):hover::after {\n background-image: url(\"data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %23fff; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n content: \"\";\n display: inline-block;\n height: 24px;\n vertical-align: top;\n width: 24px;\n margin-left: 8px;\n}\n.close-button.dso-spinner-right:not([disabled]).dso-small:hover::after {\n height: 16px;\n width: 16px;\n}\n.close-button dso-icon {\n margin-left: 0;\n margin-right: 0;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n}\n.close-button:hover, .close-button:active, .close-button:focus {\n cursor: pointer;\n}\n.close-button.close {\n display: none;\n}\n\n.iframe-container {\n background-color: #fff;\n border: 0;\n border-left: 1px solid #ccc;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.4);\n height: 100%;\n position: absolute;\n top: 0;\n transition: right 0.5s;\n}\n@media screen and (max-width: 480px) {\n .iframe-container {\n right: -320px;\n width: 320px;\n }\n}\n@media screen and (min-width: 481px) and (max-width: 767px) {\n .iframe-container {\n right: -480px;\n width: 480px;\n }\n}\n@media screen and (min-width: 768px) {\n .iframe-container {\n right: -640px;\n width: 640px;\n }\n}\n.iframe-container.open {\n right: 0;\n}\n\niframe {\n border: 0;\n height: 100%;\n width: 100%;\n}";
9
10
 
@@ -1 +1 @@
1
- {"file":"dso-helpcenter-panel.entry.cjs.js","mappings":";;;;;;;AAAA,MAAM,kBAAkB,GAAG,mwWAAmwW;;ACI9xW,MAAM,4BAA4B,GAAG,GAAG,CAAC;MAO5B,eAAe;;;IAWlB,iBAAY,GAAG,KAAK,CAAC;IAsErB,cAAS,GAAG;MAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;MAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;MACzB,UAAU,CAAC;QACT,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;OACtB,CAAC,CAAC;MACH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACpB,UAAU,CAAC;UACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB,EAAE,4BAA4B,CAAC,CAAC;OAClC;KACF,CAAC;IAEM,eAAU,GAAG;MACnB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;MACtB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;MAC1B,UAAU,CAAC;QACT,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;OAC5B,EAAE,4BAA4B,CAAC,CAAC;KAClC,CAAC;iBAnFM,YAAY;;sBASe,QAAQ;kBAGhB,OAAO;sBAGH,OAAO;sBAGzB,KAAK;;EAGlB,QAAQ,CAAC,GAAW;IAClB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE;MACpD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;KACtB;GACF;EAGD,WAAW,CAAC,MAAwB;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,MAAM,KAAK,MAAM,EAAE;MACrB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;MAE9C,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,GAAG,EAAE;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;OAC3B;KACF;SAAM;MACL,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;KACxC;GACF;EAGD,eAAe,CAAC,KAAoB;IAClC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;MACpD,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;GACF;EAEO,UAAU;;IAChB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;MAC7B,OAAO;KACR;IAED,IAAI,CAAC,IAAI,GAAGA,6BAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE;MACpD,iBAAiB,EAAE,IAAI;MACvB,eAAe,EAAE;QACf,aAAa,EAAE,IAAI;OACpB;MACD,cAAc,EAAE,MAAA,IAAI,CAAC,iBAAiB,mCAAI,KAAK;MAC/C,YAAY,EAAE,MAAA,IAAI,CAAC,kBAAkB,mCAAI,KAAK;KAC/C,CAAC,CAAC,QAAQ,EAAE,CAAC;GACf;EAuBD,kBAAkB;;IAChB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;MAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;MAC/C,MAAA,IAAI,CAAC,IAAI,0CAAE,UAAU,EAAE,CAAC;MAExB,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;GACF;EAED,MAAM;IACJ,QACEC,8BACEA,oBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,IAAI,CAAC,SAAS,EACvB,KAAK,EAAE,eAAe,IAAI,CAAC,MAAM,EAAE,mBACpB,IAAI,CAAC,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,mBAC1C,QAAQ,mBACR,mBAAmB,EACjC,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAEpDA,sBAAU,IAAI,EAAC,MAAM,GAAY,EACjCA,sBAAO,IAAI,CAAC,KAAK,CAAQ,CAClB,EACTA,iBACE,EAAE,EAAC,mBAAmB,EACtB,KAAK,EAAE,WAAW,IAAI,CAAC,UAAU,EAAE,gBACxB,aAAa,EACxB,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,IAEtDA,iBAAK,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,IAAI,CAAC,UAAU,GAAI,EACnDA,iBAAK,KAAK,EAAE,oBAAoB,IAAI,CAAC,UAAU,EAAE,eAAY,QAAQ,IAClE,IAAI,CAAC,UAAU,IACdA,oBACE,GAAG,EAAE,IAAI,CAAC,SAAS,EACnB,QAAQ,EAAC,GAAG,EACZ,MAAM,EAAE;QACN,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;OAC1B,GACD,KAEFA,oBAAO,CACR,CACG,EACNA,oBACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,gBAAgB,IAAI,CAAC,MAAM,EAAE,EACpC,OAAO,EAAE,IAAI,CAAC,UAAU,mBACT,IAAI,CAAC,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,mBAC1C,mBAAmB,EACjC,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAErDA,sBAAU,IAAI,EAAC,OAAO,GAAY,EAClCA,kBAAM,KAAK,EAAC,SAAS,cAAe,CAC7B,CACL,CACL,EACH;GACH;;;;;;;;;;","names":["createFocusTrap","h"],"sources":["src/components/helpcenter-panel/helpcenter-panel.scss?tag=dso-helpcenter-panel&encapsulation=shadow","src/components/helpcenter-panel/helpcenter-panel.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/typography\";\r\n@use \"~dso-toolkit/src/variables/media-query-breakpoints\";\r\n@use \"~dso-toolkit/src/components/button\";\r\n\r\n:host {\r\n display: block;\r\n}\r\n\r\n.sr-only {\r\n @include utilities.sr-only();\r\n}\r\n\r\n.wrapper {\r\n height: 100%;\r\n left: 0;\r\n position: fixed;\r\n top: 0;\r\n visibility: hidden;\r\n width: 100%;\r\n\r\n &.visible {\r\n visibility: visible;\r\n }\r\n}\r\n\r\n.dimscreen {\r\n background-color: colors.$zwart;\r\n height: 100%;\r\n opacity: 0.4;\r\n width: 100%;\r\n}\r\n\r\n.open-button {\r\n @include button.primary($modifiers: false);\r\n\r\n border: 0;\r\n bottom: units.$u2;\r\n font-family: typography.$font-family-base;\r\n position: fixed;\r\n right: units.$u2;\r\n box-shadow: 0 4px 8px 0 rgb(0 0 0 / 20%);\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n\r\n &.open {\r\n display: none;\r\n }\r\n}\r\n\r\n.close-button {\r\n @include button.secondary($modifiers: false);\r\n\r\n border-right: 0;\r\n border-top: 0;\r\n border-radius: 0 0 0 units.$u1;\r\n height: units.$u5;\r\n min-width: units.$u5;\r\n padding: 0;\r\n position: fixed;\r\n right: 0;\r\n width: units.$u5;\r\n top: 0;\r\n\r\n dso-icon {\r\n margin-left: 0;\r\n margin-right: 0;\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n cursor: pointer;\r\n }\r\n\r\n &.close {\r\n display: none;\r\n }\r\n}\r\n\r\n.iframe-container {\r\n background-color: colors.$wit;\r\n border: 0;\r\n border-left: 1px solid colors.$grijs-20;\r\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.4);\r\n height: 100%;\r\n position: absolute;\r\n top: 0;\r\n transition: right 0.5s;\r\n\r\n @media screen and (max-width: media-query-breakpoints.$screen-xs-min) {\r\n right: -320px;\r\n width: 320px;\r\n }\r\n\r\n @media screen and (min-width: (media-query-breakpoints.$screen-xs-min + 1)) and (max-width: media-query-breakpoints.$screen-xs-max) {\r\n right: -480px;\r\n width: 480px;\r\n }\r\n\r\n @media screen and (min-width: media-query-breakpoints.$screen-sm-min) {\r\n right: -640px;\r\n width: 640px;\r\n }\r\n\r\n &.open {\r\n right: 0;\r\n }\r\n}\r\n\r\niframe {\r\n border: 0;\r\n height: 100%;\r\n width: 100%;\r\n}\r\n","import { h, Component, Fragment, Prop, State, Watch, Listen } from \"@stencil/core\";\r\n\r\nimport { createFocusTrap, FocusTrap } from \"focus-trap\";\r\n\r\nconst maxCssTransitionMilliseconds = 500;\r\n\r\n@Component({\r\n tag: \"dso-helpcenter-panel\",\r\n styleUrl: \"helpcenter-panel.scss\",\r\n shadow: true,\r\n})\r\nexport class HelpcenterPanel {\r\n private iframeUrl?: string;\r\n\r\n private trap?: FocusTrap;\r\n\r\n private panelWrapperElement?: HTMLDivElement;\r\n\r\n private openButtonElement?: HTMLButtonElement;\r\n\r\n private closeButtonElement?: HTMLButtonElement;\r\n\r\n private iframeLoaded = false;\r\n\r\n /**\r\n * The label on the help button that activates the Helpcenter.\r\n */\r\n @Prop()\r\n label = \"Hulp nodig\";\r\n\r\n /**\r\n * The URL that's loaded when the Helpcenter opens.\r\n */\r\n @Prop()\r\n url!: string;\r\n\r\n @State()\r\n visibility: \"visible\" | \"hidden\" = \"hidden\";\r\n\r\n @State()\r\n isOpen: \"open\" | \"close\" = \"close\";\r\n\r\n @State()\r\n slideState: \"open\" | \"close\" = \"close\";\r\n\r\n @State()\r\n loadIframe = false;\r\n\r\n @Watch(\"url\")\r\n watchUrl(url: string) {\r\n if (this.isOpen === \"open\" && this.iframeUrl !== url) {\r\n this.iframeUrl = url;\r\n }\r\n }\r\n\r\n @Watch(\"isOpen\")\r\n watchIsOpen(isOpen: \"open\" | \"close\") {\r\n const body = document.querySelector(\"body\");\r\n\r\n if (isOpen === \"open\") {\r\n body?.style.setProperty(\"overflow\", \"hidden\");\r\n\r\n if (this.iframeUrl !== this.url) {\r\n this.iframeUrl = this.url;\r\n }\r\n } else {\r\n body?.style.removeProperty(\"overflow\");\r\n }\r\n }\r\n\r\n @Listen(\"keydown\", { target: \"window\" })\r\n keyDownListener(event: KeyboardEvent) {\r\n if (event.key === \"Escape\" && this.isOpen === \"open\") {\r\n this.closeClick();\r\n }\r\n }\r\n\r\n private createTrap() {\r\n if (!this.panelWrapperElement) {\r\n return;\r\n }\r\n\r\n this.trap = createFocusTrap(this.panelWrapperElement, {\r\n allowOutsideClick: true,\r\n tabbableOptions: {\r\n getShadowRoot: true,\r\n },\r\n setReturnFocus: this.openButtonElement ?? false,\r\n initialFocus: this.closeButtonElement ?? false,\r\n }).activate();\r\n }\r\n\r\n private openClick = () => {\r\n this.visibility = \"visible\";\r\n this.slideState = \"open\";\r\n setTimeout(() => {\r\n this.isOpen = \"open\";\r\n });\r\n if (!this.loadIframe) {\r\n setTimeout(() => {\r\n this.loadIframe = true;\r\n }, maxCssTransitionMilliseconds);\r\n }\r\n };\r\n\r\n private closeClick = () => {\r\n this.isOpen = \"close\";\r\n this.slideState = \"close\";\r\n setTimeout(() => {\r\n this.visibility = \"hidden\";\r\n }, maxCssTransitionMilliseconds);\r\n };\r\n\r\n componentDidRender() {\r\n if (this.isOpen === \"open\" && this.iframeLoaded && !this.trap) {\r\n this.createTrap();\r\n } else if (this.isOpen === \"close\" && this.trap) {\r\n this.trap?.deactivate();\r\n\r\n delete this.trap;\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <button\r\n type=\"button\"\r\n onClick={this.openClick}\r\n class={`open-button ${this.isOpen}`}\r\n aria-expanded={this.isOpen === \"open\" ? \"true\" : \"false\"}\r\n aria-haspopup=\"dialog\"\r\n aria-controls=\"dso-panel-wrapper\"\r\n ref={(element) => (this.openButtonElement = element)}\r\n >\r\n <dso-icon icon=\"help\"></dso-icon>\r\n <span>{this.label}</span>\r\n </button>\r\n <div\r\n id=\"dso-panel-wrapper\"\r\n class={`wrapper ${this.visibility}`}\r\n aria-label=\"helpcentrum\"\r\n role=\"dialog\"\r\n ref={(element) => (this.panelWrapperElement = element)}\r\n >\r\n <div class=\"dimscreen\" onClick={this.closeClick} />\r\n <div class={`iframe-container ${this.slideState}`} aria-live=\"polite\">\r\n {this.loadIframe ? (\r\n <iframe\r\n src={this.iframeUrl}\r\n tabindex=\"0\"\r\n onLoad={() => {\r\n this.createTrap();\r\n this.iframeLoaded = true;\r\n }}\r\n />\r\n ) : (\r\n <div />\r\n )}\r\n </div>\r\n <button\r\n type=\"button\"\r\n class={`close-button ${this.isOpen}`}\r\n onClick={this.closeClick}\r\n aria-expanded={this.isOpen === \"open\" ? \"true\" : \"false\"}\r\n aria-controls=\"dso-panel-wrapper\"\r\n ref={(element) => (this.closeButtonElement = element)}\r\n >\r\n <dso-icon icon=\"times\"></dso-icon>\r\n <span class=\"sr-only\">sluiten</span>\r\n </button>\r\n </div>\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-helpcenter-panel.entry.cjs.js","mappings":"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","names":["createFocusTrap","h"],"sources":["src/components/helpcenter-panel/helpcenter-panel.scss?tag=dso-helpcenter-panel&encapsulation=shadow","src/components/helpcenter-panel/helpcenter-panel.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/typography\";\r\n@use \"~dso-toolkit/src/variables/media-query-breakpoints\";\r\n@use \"~dso-toolkit/src/components/button\";\r\n\r\n:host {\r\n display: block;\r\n}\r\n\r\n.sr-only {\r\n @include utilities.sr-only();\r\n}\r\n\r\n.wrapper {\r\n height: 100%;\r\n left: 0;\r\n position: fixed;\r\n top: 0;\r\n visibility: hidden;\r\n width: 100%;\r\n\r\n &.visible {\r\n visibility: visible;\r\n }\r\n}\r\n\r\n.dimscreen {\r\n background-color: colors.$zwart;\r\n height: 100%;\r\n opacity: 0.4;\r\n width: 100%;\r\n}\r\n\r\n.open-button {\r\n @include button.primary($modifiers: false);\r\n\r\n border: 0;\r\n bottom: units.$u2;\r\n font-family: typography.$font-family-base;\r\n position: fixed;\r\n right: units.$u2;\r\n box-shadow: 0 4px 8px 0 rgb(0 0 0 / 20%);\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n\r\n &.open {\r\n display: none;\r\n }\r\n}\r\n\r\n.close-button {\r\n @include button.secondary($modifiers: false);\r\n\r\n border-right: 0;\r\n border-top: 0;\r\n border-radius: 0 0 0 units.$u1;\r\n height: units.$u5;\r\n min-width: units.$u5;\r\n padding: 0;\r\n position: fixed;\r\n right: 0;\r\n width: units.$u5;\r\n top: 0;\r\n\r\n dso-icon {\r\n margin-left: 0;\r\n margin-right: 0;\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n cursor: pointer;\r\n }\r\n\r\n &.close {\r\n display: none;\r\n }\r\n}\r\n\r\n.iframe-container {\r\n background-color: colors.$wit;\r\n border: 0;\r\n border-left: 1px solid colors.$grijs-20;\r\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.4);\r\n height: 100%;\r\n position: absolute;\r\n top: 0;\r\n transition: right 0.5s;\r\n\r\n @media screen and (max-width: media-query-breakpoints.$screen-xs-min) {\r\n right: -320px;\r\n width: 320px;\r\n }\r\n\r\n @media screen and (min-width: (media-query-breakpoints.$screen-xs-min + 1)) and (max-width: media-query-breakpoints.$screen-xs-max) {\r\n right: -480px;\r\n width: 480px;\r\n }\r\n\r\n @media screen and (min-width: media-query-breakpoints.$screen-sm-min) {\r\n right: -640px;\r\n width: 640px;\r\n }\r\n\r\n &.open {\r\n right: 0;\r\n }\r\n}\r\n\r\niframe {\r\n border: 0;\r\n height: 100%;\r\n width: 100%;\r\n}\r\n","import { h, Component, Fragment, Prop, State, Watch, Listen } from \"@stencil/core\";\r\n\r\nimport { createFocusTrap, FocusTrap } from \"focus-trap\";\r\n\r\nconst maxCssTransitionMilliseconds = 500;\r\n\r\n@Component({\r\n tag: \"dso-helpcenter-panel\",\r\n styleUrl: \"helpcenter-panel.scss\",\r\n shadow: true,\r\n})\r\nexport class HelpcenterPanel {\r\n private iframeUrl?: string;\r\n\r\n private trap?: FocusTrap;\r\n\r\n private panelWrapperElement?: HTMLDivElement;\r\n\r\n private openButtonElement?: HTMLButtonElement;\r\n\r\n private closeButtonElement?: HTMLButtonElement;\r\n\r\n private iframeLoaded = false;\r\n\r\n /**\r\n * The label on the help button that activates the Helpcenter.\r\n */\r\n @Prop()\r\n label = \"Hulp nodig\";\r\n\r\n /**\r\n * The URL that's loaded when the Helpcenter opens.\r\n */\r\n @Prop()\r\n url!: string;\r\n\r\n @State()\r\n visibility: \"visible\" | \"hidden\" = \"hidden\";\r\n\r\n @State()\r\n isOpen: \"open\" | \"close\" = \"close\";\r\n\r\n @State()\r\n slideState: \"open\" | \"close\" = \"close\";\r\n\r\n @State()\r\n loadIframe = false;\r\n\r\n @Watch(\"url\")\r\n watchUrl(url: string) {\r\n if (this.isOpen === \"open\" && this.iframeUrl !== url) {\r\n this.iframeUrl = url;\r\n }\r\n }\r\n\r\n @Watch(\"isOpen\")\r\n watchIsOpen(isOpen: \"open\" | \"close\") {\r\n const body = document.querySelector(\"body\");\r\n\r\n if (isOpen === \"open\") {\r\n body?.style.setProperty(\"overflow\", \"hidden\");\r\n\r\n if (this.iframeUrl !== this.url) {\r\n this.iframeUrl = this.url;\r\n }\r\n } else {\r\n body?.style.removeProperty(\"overflow\");\r\n }\r\n }\r\n\r\n @Listen(\"keydown\", { target: \"window\" })\r\n keyDownListener(event: KeyboardEvent) {\r\n if (event.key === \"Escape\" && this.isOpen === \"open\") {\r\n this.closeClick();\r\n }\r\n }\r\n\r\n private createTrap() {\r\n if (!this.panelWrapperElement) {\r\n return;\r\n }\r\n\r\n this.trap = createFocusTrap(this.panelWrapperElement, {\r\n allowOutsideClick: true,\r\n tabbableOptions: {\r\n getShadowRoot: true,\r\n },\r\n setReturnFocus: this.openButtonElement ?? false,\r\n initialFocus: this.closeButtonElement ?? false,\r\n }).activate();\r\n }\r\n\r\n private openClick = () => {\r\n this.visibility = \"visible\";\r\n this.slideState = \"open\";\r\n setTimeout(() => {\r\n this.isOpen = \"open\";\r\n });\r\n if (!this.loadIframe) {\r\n setTimeout(() => {\r\n this.loadIframe = true;\r\n }, maxCssTransitionMilliseconds);\r\n }\r\n };\r\n\r\n private closeClick = () => {\r\n this.isOpen = \"close\";\r\n this.slideState = \"close\";\r\n setTimeout(() => {\r\n this.visibility = \"hidden\";\r\n }, maxCssTransitionMilliseconds);\r\n };\r\n\r\n componentDidRender() {\r\n if (this.isOpen === \"open\" && this.iframeLoaded && !this.trap) {\r\n this.createTrap();\r\n } else if (this.isOpen === \"close\" && this.trap) {\r\n this.trap?.deactivate();\r\n\r\n delete this.trap;\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <button\r\n type=\"button\"\r\n onClick={this.openClick}\r\n class={`open-button ${this.isOpen}`}\r\n aria-expanded={this.isOpen === \"open\" ? \"true\" : \"false\"}\r\n aria-haspopup=\"dialog\"\r\n aria-controls=\"dso-panel-wrapper\"\r\n ref={(element) => (this.openButtonElement = element)}\r\n >\r\n <dso-icon icon=\"help\"></dso-icon>\r\n <span>{this.label}</span>\r\n </button>\r\n <div\r\n id=\"dso-panel-wrapper\"\r\n class={`wrapper ${this.visibility}`}\r\n aria-label=\"helpcentrum\"\r\n role=\"dialog\"\r\n ref={(element) => (this.panelWrapperElement = element)}\r\n >\r\n <div class=\"dimscreen\" onClick={this.closeClick} />\r\n <div class={`iframe-container ${this.slideState}`} aria-live=\"polite\">\r\n {this.loadIframe ? (\r\n <iframe\r\n src={this.iframeUrl}\r\n tabindex=\"0\"\r\n onLoad={() => {\r\n this.createTrap();\r\n this.iframeLoaded = true;\r\n }}\r\n />\r\n ) : (\r\n <div />\r\n )}\r\n </div>\r\n <button\r\n type=\"button\"\r\n class={`close-button ${this.isOpen}`}\r\n onClick={this.closeClick}\r\n aria-expanded={this.isOpen === \"open\" ? \"true\" : \"false\"}\r\n aria-controls=\"dso-panel-wrapper\"\r\n ref={(element) => (this.closeButtonElement = element)}\r\n >\r\n <dso-icon icon=\"times\"></dso-icon>\r\n <span class=\"sr-only\">sluiten</span>\r\n </button>\r\n </div>\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -417,6 +417,17 @@ const sound = `<svg id="sound" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2
417
417
  </svg>
418
418
  `;
419
419
 
420
+ const spinner = `<svg id="spinner" class="spinner" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
421
+ <style>
422
+ .spinner { animation: rotator 8s linear infinite; transform-origin: center; }
423
+ @keyframes rotator { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
424
+ .path { stroke-dasharray: var(--_progress-indicator-spinner-stroke-dasharray, 265); stroke-dashoffset: 0; transform-origin: center; stroke: #39870c; animation: dash 2s ease-in-out infinite; }
425
+ @keyframes dash { 0% { stroke-dashoffset: 265; } 50% { stroke-dashoffset: 65; transform:rotate(90deg); } 100% { stroke-dashoffset: 265; transform:rotate(360deg); } }
426
+ </style>
427
+ <circle class="path" fill="none" stroke-width="10" stroke-linecap="butt" cx="50" cy="50" r="45"/>
428
+ </svg>
429
+ `;
430
+
420
431
  const statusError = `<svg id="status-error" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
421
432
  <g id="status-error">
422
433
  <path fill="#FFF" fill-rule="nonzero" d="M15.728 1H8.272a2 2 0 0 0-1.414.586L1.586 6.858A2 2 0 0 0 1 8.272v7.456a2 2 0 0 0 .586 1.414l5.272 5.272A2 2 0 0 0 8.272 23h7.456a2 2 0 0 0 1.414-.586l5.272-5.272A2 2 0 0 0 23 15.728V8.272a2 2 0 0 0-.586-1.414l-5.272-5.272A2 2 0 0 0 15.728 1Z"/>
@@ -611,6 +622,7 @@ const icons = [
611
622
  { alias: "plus", svg: plus },
612
623
  { alias: "print", svg: print },
613
624
  { alias: "procedures", svg: procedures },
625
+ { alias: "spinner", svg: spinner },
614
626
  { alias: "redo", svg: redo },
615
627
  { alias: "safety", svg: safety },
616
628
  { alias: "scale", svg: scale },
@@ -1 +1 @@
1
- {"file":"dso-icon.entry.cjs.js","mappings":"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","names":["h"],"sources":["src/components/icon/icon.scss?tag=dso-icon&encapsulation=shadow","src/components/icon/icon.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/components/icon\";\r\n\r\n:host {\r\n display: inline-block;\r\n height: icon.$size;\r\n vertical-align: icon.$vertical-align;\r\n width: icon.$size;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.icon-container {\r\n display: block;\r\n line-height: 0;\r\n}\r\n","import { Component, h, Prop } from \"@stencil/core\";\r\n\r\nimport air from \"dso-toolkit/src/icons/air.svg\";\r\nimport angleDown from \"dso-toolkit/src/icons/angle-down.svg\";\r\nimport angleLeft from \"dso-toolkit/src/icons/angle-left.svg\";\r\nimport angleRight from \"dso-toolkit/src/icons/angle-right.svg\";\r\nimport angleUp from \"dso-toolkit/src/icons/angle-up.svg\";\r\nimport asterisk from \"dso-toolkit/src/icons/asterisk.svg\";\r\nimport balloon from \"dso-toolkit/src/icons/balloon.svg\";\r\nimport bars from \"dso-toolkit/src/icons/bars.svg\";\r\nimport buildings from \"dso-toolkit/src/icons/buildings.svg\";\r\nimport calendar from \"dso-toolkit/src/icons/calendar.svg\";\r\nimport call from \"dso-toolkit/src/icons/call.svg\";\r\nimport caretDown from \"dso-toolkit/src/icons/caret-down.svg\";\r\nimport check from \"dso-toolkit/src/icons/check.svg\";\r\nimport checkCircle from \"dso-toolkit/src/icons/check-circle.svg\";\r\nimport chevronDown from \"dso-toolkit/src/icons/chevron-down.svg\";\r\nimport chevronLeft from \"dso-toolkit/src/icons/chevron-left.svg\";\r\nimport chevronRight from \"dso-toolkit/src/icons/chevron-right.svg\";\r\nimport chevronUp from \"dso-toolkit/src/icons/chevron-up.svg\";\r\nimport circleNotch from \"dso-toolkit/src/icons/circle-notch.svg\";\r\nimport clock from \"dso-toolkit/src/icons/clock.svg\";\r\nimport copy from \"dso-toolkit/src/icons/copy.svg\";\r\nimport crown from \"dso-toolkit/src/icons/crown.svg\";\r\nimport cultural from \"dso-toolkit/src/icons/cultural.svg\";\r\nimport document from \"dso-toolkit/src/icons/document.svg\";\r\nimport download from \"dso-toolkit/src/icons/download.svg\";\r\nimport email from \"dso-toolkit/src/icons/email.svg\";\r\nimport energy from \"dso-toolkit/src/icons/energy.svg\";\r\nimport environment from \"dso-toolkit/src/icons/environment.svg\";\r\nimport exclamation from \"dso-toolkit/src/icons/exclamation.svg\";\r\nimport externalLink from \"dso-toolkit/src/icons/external-link.svg\";\r\nimport eyeSlash from \"dso-toolkit/src/icons/eye-slash.svg\";\r\nimport eye from \"dso-toolkit/src/icons/eye.svg\";\r\nimport filter from \"dso-toolkit/src/icons/filter.svg\";\r\nimport forbidden from \"dso-toolkit/src/icons/forbidden.svg\";\r\nimport health from \"dso-toolkit/src/icons/health.svg\";\r\nimport helpActive from \"dso-toolkit/src/icons/help-active.svg\";\r\nimport help from \"dso-toolkit/src/icons/help.svg\";\r\nimport house from \"dso-toolkit/src/icons/house.svg\";\r\nimport infoActive from \"dso-toolkit/src/icons/info-active.svg\";\r\nimport infoI from \"dso-toolkit/src/icons/info-i.svg\";\r\nimport info from \"dso-toolkit/src/icons/info.svg\";\r\nimport infrastructure from \"dso-toolkit/src/icons/infrastructure.svg\";\r\nimport label from \"dso-toolkit/src/icons/label.svg\";\r\nimport land from \"dso-toolkit/src/icons/land.svg\";\r\nimport landscape from \"dso-toolkit/src/icons/landscape.svg\";\r\nimport layers from \"dso-toolkit/src/icons/layers.svg\";\r\nimport location from \"dso-toolkit/src/icons/location.svg\";\r\nimport locationOutline from \"dso-toolkit/src/icons/location-outline.svg\";\r\nimport locationSearch from \"dso-toolkit/src/icons/location-search.svg\";\r\nimport lock from \"dso-toolkit/src/icons/lock.svg\";\r\nimport magnet from \"dso-toolkit/src/icons/magnet.svg\";\r\nimport mapLayers from \"dso-toolkit/src/icons/map-layers.svg\";\r\nimport mapLocation from \"dso-toolkit/src/icons/map-location.svg\";\r\nimport marker from \"dso-toolkit/src/icons/marker.svg\";\r\nimport measurement from \"dso-toolkit/src/icons/measurement.svg\";\r\nimport minusCircle from \"dso-toolkit/src/icons/minus-circle.svg\";\r\nimport minusSquare from \"dso-toolkit/src/icons/minus-square.svg\";\r\nimport minus from \"dso-toolkit/src/icons/minus.svg\";\r\nimport more from \"dso-toolkit/src/icons/more.svg\";\r\nimport municipality from \"dso-toolkit/src/icons/municipality.svg\";\r\nimport nature from \"dso-toolkit/src/icons/nature.svg\";\r\nimport newWindow from \"dso-toolkit/src/icons/new-window.svg\";\r\nimport paperclip from \"dso-toolkit/src/icons/paperclip.svg\";\r\nimport parking from \"dso-toolkit/src/icons/parking.svg\";\r\nimport pencil from \"dso-toolkit/src/icons/pencil.svg\";\r\nimport pin from \"dso-toolkit/src/icons/pin.svg\";\r\nimport pinOutline from \"dso-toolkit/src/icons/pin-outline.svg\";\r\nimport plusCircle from \"dso-toolkit/src/icons/plus-circle.svg\";\r\nimport plusSquare from \"dso-toolkit/src/icons/plus-square.svg\";\r\nimport plus from \"dso-toolkit/src/icons/plus.svg\";\r\nimport print from \"dso-toolkit/src/icons/print.svg\";\r\nimport procedures from \"dso-toolkit/src/icons/procedures.svg\";\r\nimport redo from \"dso-toolkit/src/icons/redo.svg\";\r\nimport safety from \"dso-toolkit/src/icons/safety.svg\";\r\nimport search from \"dso-toolkit/src/icons/search.svg\";\r\nimport scale from \"dso-toolkit/src/icons/scale.svg\";\r\nimport sitemap from \"dso-toolkit/src/icons/sitemap.svg\";\r\nimport soil from \"dso-toolkit/src/icons/soil.svg\";\r\nimport sortAscending from \"dso-toolkit/src/icons/sort-ascending.svg\";\r\nimport sortDescending from \"dso-toolkit/src/icons/sort-descending.svg\";\r\nimport sort from \"dso-toolkit/src/icons/sort.svg\";\r\nimport sound from \"dso-toolkit/src/icons/sound.svg\";\r\nimport statusError from \"dso-toolkit/src/icons/status-error.svg\";\r\nimport statusDanger from \"dso-toolkit/src/icons/status-danger.svg\";\r\nimport statusInfo from \"dso-toolkit/src/icons/status-info.svg\";\r\nimport statusSuccess from \"dso-toolkit/src/icons/status-success.svg\";\r\nimport statusWarning from \"dso-toolkit/src/icons/status-warning.svg\";\r\nimport statusWarningInline from \"dso-toolkit/src/icons/status-warning-inline.svg\";\r\nimport statusWarningInlineNegative from \"dso-toolkit/src/icons/status-warning-inline-negative.svg\";\r\nimport table from \"dso-toolkit/src/icons/table.svg\";\r\nimport times from \"dso-toolkit/src/icons/times.svg\";\r\nimport trash from \"dso-toolkit/src/icons/trash.svg\";\r\nimport undo from \"dso-toolkit/src/icons/undo.svg\";\r\nimport userLine from \"dso-toolkit/src/icons/user-line.svg\";\r\nimport user from \"dso-toolkit/src/icons/user.svg\";\r\nimport users from \"dso-toolkit/src/icons/users.svg\";\r\nimport water from \"dso-toolkit/src/icons/water.svg\";\r\nimport wipWip from \"dso-toolkit/src/icons/wip-wip.svg\";\r\n\r\nconst icons = [\r\n { alias: \"air\", svg: air },\r\n { alias: \"angle-down\", svg: angleDown },\r\n { alias: \"angle-left\", svg: angleLeft },\r\n { alias: \"angle-right\", svg: angleRight },\r\n { alias: \"angle-up\", svg: angleUp },\r\n { alias: \"asterisk\", svg: asterisk },\r\n { alias: \"balloon\", svg: balloon },\r\n { alias: \"bars\", svg: bars },\r\n { alias: \"buildings\", svg: buildings },\r\n { alias: \"calendar\", svg: calendar },\r\n { alias: \"call\", svg: call },\r\n { alias: \"caret-down\", svg: caretDown },\r\n { alias: \"check\", svg: check },\r\n { alias: \"check-circle\", svg: checkCircle },\r\n { alias: \"chevron-down\", svg: chevronDown },\r\n { alias: \"chevron-left\", svg: chevronLeft },\r\n { alias: \"chevron-right\", svg: chevronRight },\r\n { alias: \"chevron-up\", svg: chevronUp },\r\n { alias: \"circle-notch\", svg: circleNotch },\r\n { alias: \"clock\", svg: clock },\r\n { alias: \"copy\", svg: copy },\r\n { alias: \"crown\", svg: crown },\r\n { alias: \"cultural\", svg: cultural },\r\n { alias: \"document\", svg: document },\r\n { alias: \"download\", svg: download },\r\n { alias: \"email\", svg: email },\r\n { alias: \"energy\", svg: energy },\r\n { alias: \"environment\", svg: environment },\r\n { alias: \"exclamation\", svg: exclamation },\r\n { alias: \"external-link\", svg: externalLink },\r\n { alias: \"eye-slash\", svg: eyeSlash },\r\n { alias: \"eye\", svg: eye },\r\n { alias: \"filter\", svg: filter },\r\n { alias: \"forbidden\", svg: forbidden },\r\n { alias: \"health\", svg: health },\r\n { alias: \"help-active\", svg: helpActive },\r\n { alias: \"help\", svg: help },\r\n { alias: \"house\", svg: house },\r\n { alias: \"info-active\", svg: infoActive },\r\n { alias: \"info-i\", svg: infoI },\r\n { alias: \"info\", svg: info },\r\n { alias: \"infrastructure\", svg: infrastructure },\r\n { alias: \"label\", svg: label },\r\n { alias: \"land\", svg: land },\r\n { alias: \"landscape\", svg: landscape },\r\n { alias: \"layers\", svg: layers },\r\n { alias: \"location\", svg: location },\r\n { alias: \"location-outline\", svg: locationOutline },\r\n { alias: \"location-search\", svg: locationSearch },\r\n { alias: \"lock\", svg: lock },\r\n { alias: \"magnet\", svg: magnet },\r\n { alias: \"map-layers\", svg: mapLayers },\r\n { alias: \"map-location\", svg: mapLocation },\r\n { alias: \"marker\", svg: marker },\r\n { alias: \"measurement\", svg: measurement },\r\n { alias: \"minus-circle\", svg: minusCircle },\r\n { alias: \"minus-square\", svg: minusSquare },\r\n { alias: \"minus\", svg: minus },\r\n { alias: \"more\", svg: more },\r\n { alias: \"municipality\", svg: municipality },\r\n { alias: \"nature\", svg: nature },\r\n { alias: \"new-window\", svg: newWindow },\r\n { alias: \"paperclip\", svg: paperclip },\r\n { alias: \"parking\", svg: parking },\r\n { alias: \"pencil\", svg: pencil },\r\n { alias: \"pin\", svg: pin },\r\n { alias: \"pin-outline\", svg: pinOutline },\r\n { alias: \"plus-circle\", svg: plusCircle },\r\n { alias: \"plus-square\", svg: plusSquare },\r\n { alias: \"plus\", svg: plus },\r\n { alias: \"print\", svg: print },\r\n { alias: \"procedures\", svg: procedures },\r\n { alias: \"redo\", svg: redo },\r\n { alias: \"safety\", svg: safety },\r\n { alias: \"scale\", svg: scale },\r\n { alias: \"search\", svg: search },\r\n { alias: \"sitemap\", svg: sitemap },\r\n { alias: \"soil\", svg: soil },\r\n { alias: \"sort-ascending\", svg: sortAscending },\r\n { alias: \"sort-descending\", svg: sortDescending },\r\n { alias: \"sort\", svg: sort },\r\n { alias: \"sound\", svg: sound },\r\n { alias: \"status-danger\", svg: statusDanger },\r\n { alias: \"status-error\", svg: statusError },\r\n { alias: \"status-info\", svg: statusInfo },\r\n { alias: \"status-success\", svg: statusSuccess },\r\n { alias: \"status-warning\", svg: statusWarning },\r\n { alias: \"status-warning-inline\", svg: statusWarningInline },\r\n { alias: \"status-warning-inline-negative\", svg: statusWarningInlineNegative },\r\n { alias: \"table\", svg: table },\r\n { alias: \"times\", svg: times },\r\n { alias: \"trash\", svg: trash },\r\n { alias: \"undo\", svg: undo },\r\n { alias: \"user-line\", svg: userLine },\r\n { alias: \"user\", svg: user },\r\n { alias: \"users\", svg: users },\r\n { alias: \"water\", svg: water },\r\n { alias: \"wip-wip\", svg: wipWip },\r\n];\r\n\r\n@Component({\r\n tag: \"dso-icon\",\r\n styleUrl: \"./icon.scss\",\r\n shadow: true,\r\n})\r\nexport class Icon {\r\n /**\r\n * The alias of the icon.\r\n */\r\n @Prop()\r\n icon?: string;\r\n\r\n render() {\r\n if (this.icon) {\r\n const icon = icons.find((i) => i.alias === this.icon);\r\n if (!icon) {\r\n throw new TypeError(`Unknown svg: ${this.icon}`);\r\n }\r\n\r\n return <span class=\"icon-container\" innerHTML={icon.svg} />;\r\n }\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-icon.entry.cjs.js","mappings":"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","names":["h"],"sources":["src/components/icon/icon.scss?tag=dso-icon&encapsulation=shadow","src/components/icon/icon.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/components/icon\";\r\n\r\n:host {\r\n display: inline-block;\r\n height: icon.$size;\r\n vertical-align: icon.$vertical-align;\r\n width: icon.$size;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.icon-container {\r\n display: block;\r\n line-height: 0;\r\n}\r\n","import { Component, h, Prop } from \"@stencil/core\";\r\n\r\nimport air from \"dso-toolkit/src/icons/air.svg\";\r\nimport angleDown from \"dso-toolkit/src/icons/angle-down.svg\";\r\nimport angleLeft from \"dso-toolkit/src/icons/angle-left.svg\";\r\nimport angleRight from \"dso-toolkit/src/icons/angle-right.svg\";\r\nimport angleUp from \"dso-toolkit/src/icons/angle-up.svg\";\r\nimport asterisk from \"dso-toolkit/src/icons/asterisk.svg\";\r\nimport balloon from \"dso-toolkit/src/icons/balloon.svg\";\r\nimport bars from \"dso-toolkit/src/icons/bars.svg\";\r\nimport buildings from \"dso-toolkit/src/icons/buildings.svg\";\r\nimport calendar from \"dso-toolkit/src/icons/calendar.svg\";\r\nimport call from \"dso-toolkit/src/icons/call.svg\";\r\nimport caretDown from \"dso-toolkit/src/icons/caret-down.svg\";\r\nimport check from \"dso-toolkit/src/icons/check.svg\";\r\nimport checkCircle from \"dso-toolkit/src/icons/check-circle.svg\";\r\nimport chevronDown from \"dso-toolkit/src/icons/chevron-down.svg\";\r\nimport chevronLeft from \"dso-toolkit/src/icons/chevron-left.svg\";\r\nimport chevronRight from \"dso-toolkit/src/icons/chevron-right.svg\";\r\nimport chevronUp from \"dso-toolkit/src/icons/chevron-up.svg\";\r\nimport circleNotch from \"dso-toolkit/src/icons/circle-notch.svg\";\r\nimport clock from \"dso-toolkit/src/icons/clock.svg\";\r\nimport copy from \"dso-toolkit/src/icons/copy.svg\";\r\nimport crown from \"dso-toolkit/src/icons/crown.svg\";\r\nimport cultural from \"dso-toolkit/src/icons/cultural.svg\";\r\nimport document from \"dso-toolkit/src/icons/document.svg\";\r\nimport download from \"dso-toolkit/src/icons/download.svg\";\r\nimport email from \"dso-toolkit/src/icons/email.svg\";\r\nimport energy from \"dso-toolkit/src/icons/energy.svg\";\r\nimport environment from \"dso-toolkit/src/icons/environment.svg\";\r\nimport exclamation from \"dso-toolkit/src/icons/exclamation.svg\";\r\nimport externalLink from \"dso-toolkit/src/icons/external-link.svg\";\r\nimport eyeSlash from \"dso-toolkit/src/icons/eye-slash.svg\";\r\nimport eye from \"dso-toolkit/src/icons/eye.svg\";\r\nimport filter from \"dso-toolkit/src/icons/filter.svg\";\r\nimport forbidden from \"dso-toolkit/src/icons/forbidden.svg\";\r\nimport health from \"dso-toolkit/src/icons/health.svg\";\r\nimport helpActive from \"dso-toolkit/src/icons/help-active.svg\";\r\nimport help from \"dso-toolkit/src/icons/help.svg\";\r\nimport house from \"dso-toolkit/src/icons/house.svg\";\r\nimport infoActive from \"dso-toolkit/src/icons/info-active.svg\";\r\nimport infoI from \"dso-toolkit/src/icons/info-i.svg\";\r\nimport info from \"dso-toolkit/src/icons/info.svg\";\r\nimport infrastructure from \"dso-toolkit/src/icons/infrastructure.svg\";\r\nimport label from \"dso-toolkit/src/icons/label.svg\";\r\nimport land from \"dso-toolkit/src/icons/land.svg\";\r\nimport landscape from \"dso-toolkit/src/icons/landscape.svg\";\r\nimport layers from \"dso-toolkit/src/icons/layers.svg\";\r\nimport location from \"dso-toolkit/src/icons/location.svg\";\r\nimport locationOutline from \"dso-toolkit/src/icons/location-outline.svg\";\r\nimport locationSearch from \"dso-toolkit/src/icons/location-search.svg\";\r\nimport lock from \"dso-toolkit/src/icons/lock.svg\";\r\nimport magnet from \"dso-toolkit/src/icons/magnet.svg\";\r\nimport mapLayers from \"dso-toolkit/src/icons/map-layers.svg\";\r\nimport mapLocation from \"dso-toolkit/src/icons/map-location.svg\";\r\nimport marker from \"dso-toolkit/src/icons/marker.svg\";\r\nimport measurement from \"dso-toolkit/src/icons/measurement.svg\";\r\nimport minusCircle from \"dso-toolkit/src/icons/minus-circle.svg\";\r\nimport minusSquare from \"dso-toolkit/src/icons/minus-square.svg\";\r\nimport minus from \"dso-toolkit/src/icons/minus.svg\";\r\nimport more from \"dso-toolkit/src/icons/more.svg\";\r\nimport municipality from \"dso-toolkit/src/icons/municipality.svg\";\r\nimport nature from \"dso-toolkit/src/icons/nature.svg\";\r\nimport newWindow from \"dso-toolkit/src/icons/new-window.svg\";\r\nimport paperclip from \"dso-toolkit/src/icons/paperclip.svg\";\r\nimport parking from \"dso-toolkit/src/icons/parking.svg\";\r\nimport pencil from \"dso-toolkit/src/icons/pencil.svg\";\r\nimport pin from \"dso-toolkit/src/icons/pin.svg\";\r\nimport pinOutline from \"dso-toolkit/src/icons/pin-outline.svg\";\r\nimport plusCircle from \"dso-toolkit/src/icons/plus-circle.svg\";\r\nimport plusSquare from \"dso-toolkit/src/icons/plus-square.svg\";\r\nimport plus from \"dso-toolkit/src/icons/plus.svg\";\r\nimport print from \"dso-toolkit/src/icons/print.svg\";\r\nimport procedures from \"dso-toolkit/src/icons/procedures.svg\";\r\nimport redo from \"dso-toolkit/src/icons/redo.svg\";\r\nimport safety from \"dso-toolkit/src/icons/safety.svg\";\r\nimport search from \"dso-toolkit/src/icons/search.svg\";\r\nimport scale from \"dso-toolkit/src/icons/scale.svg\";\r\nimport sitemap from \"dso-toolkit/src/icons/sitemap.svg\";\r\nimport soil from \"dso-toolkit/src/icons/soil.svg\";\r\nimport sortAscending from \"dso-toolkit/src/icons/sort-ascending.svg\";\r\nimport sortDescending from \"dso-toolkit/src/icons/sort-descending.svg\";\r\nimport sort from \"dso-toolkit/src/icons/sort.svg\";\r\nimport sound from \"dso-toolkit/src/icons/sound.svg\";\r\nimport spinner from \"dso-toolkit/src/icons/spinner.svg\";\r\nimport statusError from \"dso-toolkit/src/icons/status-error.svg\";\r\nimport statusDanger from \"dso-toolkit/src/icons/status-danger.svg\";\r\nimport statusInfo from \"dso-toolkit/src/icons/status-info.svg\";\r\nimport statusSuccess from \"dso-toolkit/src/icons/status-success.svg\";\r\nimport statusWarning from \"dso-toolkit/src/icons/status-warning.svg\";\r\nimport statusWarningInline from \"dso-toolkit/src/icons/status-warning-inline.svg\";\r\nimport statusWarningInlineNegative from \"dso-toolkit/src/icons/status-warning-inline-negative.svg\";\r\nimport table from \"dso-toolkit/src/icons/table.svg\";\r\nimport times from \"dso-toolkit/src/icons/times.svg\";\r\nimport trash from \"dso-toolkit/src/icons/trash.svg\";\r\nimport undo from \"dso-toolkit/src/icons/undo.svg\";\r\nimport userLine from \"dso-toolkit/src/icons/user-line.svg\";\r\nimport user from \"dso-toolkit/src/icons/user.svg\";\r\nimport users from \"dso-toolkit/src/icons/users.svg\";\r\nimport water from \"dso-toolkit/src/icons/water.svg\";\r\nimport wipWip from \"dso-toolkit/src/icons/wip-wip.svg\";\r\n\r\nconst icons = [\r\n { alias: \"air\", svg: air },\r\n { alias: \"angle-down\", svg: angleDown },\r\n { alias: \"angle-left\", svg: angleLeft },\r\n { alias: \"angle-right\", svg: angleRight },\r\n { alias: \"angle-up\", svg: angleUp },\r\n { alias: \"asterisk\", svg: asterisk },\r\n { alias: \"balloon\", svg: balloon },\r\n { alias: \"bars\", svg: bars },\r\n { alias: \"buildings\", svg: buildings },\r\n { alias: \"calendar\", svg: calendar },\r\n { alias: \"call\", svg: call },\r\n { alias: \"caret-down\", svg: caretDown },\r\n { alias: \"check\", svg: check },\r\n { alias: \"check-circle\", svg: checkCircle },\r\n { alias: \"chevron-down\", svg: chevronDown },\r\n { alias: \"chevron-left\", svg: chevronLeft },\r\n { alias: \"chevron-right\", svg: chevronRight },\r\n { alias: \"chevron-up\", svg: chevronUp },\r\n { alias: \"circle-notch\", svg: circleNotch },\r\n { alias: \"clock\", svg: clock },\r\n { alias: \"copy\", svg: copy },\r\n { alias: \"crown\", svg: crown },\r\n { alias: \"cultural\", svg: cultural },\r\n { alias: \"document\", svg: document },\r\n { alias: \"download\", svg: download },\r\n { alias: \"email\", svg: email },\r\n { alias: \"energy\", svg: energy },\r\n { alias: \"environment\", svg: environment },\r\n { alias: \"exclamation\", svg: exclamation },\r\n { alias: \"external-link\", svg: externalLink },\r\n { alias: \"eye-slash\", svg: eyeSlash },\r\n { alias: \"eye\", svg: eye },\r\n { alias: \"filter\", svg: filter },\r\n { alias: \"forbidden\", svg: forbidden },\r\n { alias: \"health\", svg: health },\r\n { alias: \"help-active\", svg: helpActive },\r\n { alias: \"help\", svg: help },\r\n { alias: \"house\", svg: house },\r\n { alias: \"info-active\", svg: infoActive },\r\n { alias: \"info-i\", svg: infoI },\r\n { alias: \"info\", svg: info },\r\n { alias: \"infrastructure\", svg: infrastructure },\r\n { alias: \"label\", svg: label },\r\n { alias: \"land\", svg: land },\r\n { alias: \"landscape\", svg: landscape },\r\n { alias: \"layers\", svg: layers },\r\n { alias: \"location\", svg: location },\r\n { alias: \"location-outline\", svg: locationOutline },\r\n { alias: \"location-search\", svg: locationSearch },\r\n { alias: \"lock\", svg: lock },\r\n { alias: \"magnet\", svg: magnet },\r\n { alias: \"map-layers\", svg: mapLayers },\r\n { alias: \"map-location\", svg: mapLocation },\r\n { alias: \"marker\", svg: marker },\r\n { alias: \"measurement\", svg: measurement },\r\n { alias: \"minus-circle\", svg: minusCircle },\r\n { alias: \"minus-square\", svg: minusSquare },\r\n { alias: \"minus\", svg: minus },\r\n { alias: \"more\", svg: more },\r\n { alias: \"municipality\", svg: municipality },\r\n { alias: \"nature\", svg: nature },\r\n { alias: \"new-window\", svg: newWindow },\r\n { alias: \"paperclip\", svg: paperclip },\r\n { alias: \"parking\", svg: parking },\r\n { alias: \"pencil\", svg: pencil },\r\n { alias: \"pin\", svg: pin },\r\n { alias: \"pin-outline\", svg: pinOutline },\r\n { alias: \"plus-circle\", svg: plusCircle },\r\n { alias: \"plus-square\", svg: plusSquare },\r\n { alias: \"plus\", svg: plus },\r\n { alias: \"print\", svg: print },\r\n { alias: \"procedures\", svg: procedures },\r\n { alias: \"spinner\", svg: spinner },\r\n { alias: \"redo\", svg: redo },\r\n { alias: \"safety\", svg: safety },\r\n { alias: \"scale\", svg: scale },\r\n { alias: \"search\", svg: search },\r\n { alias: \"sitemap\", svg: sitemap },\r\n { alias: \"soil\", svg: soil },\r\n { alias: \"sort-ascending\", svg: sortAscending },\r\n { alias: \"sort-descending\", svg: sortDescending },\r\n { alias: \"sort\", svg: sort },\r\n { alias: \"sound\", svg: sound },\r\n { alias: \"status-danger\", svg: statusDanger },\r\n { alias: \"status-error\", svg: statusError },\r\n { alias: \"status-info\", svg: statusInfo },\r\n { alias: \"status-success\", svg: statusSuccess },\r\n { alias: \"status-warning\", svg: statusWarning },\r\n { alias: \"status-warning-inline\", svg: statusWarningInline },\r\n { alias: \"status-warning-inline-negative\", svg: statusWarningInlineNegative },\r\n { alias: \"table\", svg: table },\r\n { alias: \"times\", svg: times },\r\n { alias: \"trash\", svg: trash },\r\n { alias: \"undo\", svg: undo },\r\n { alias: \"user-line\", svg: userLine },\r\n { alias: \"user\", svg: user },\r\n { alias: \"users\", svg: users },\r\n { alias: \"water\", svg: water },\r\n { alias: \"wip-wip\", svg: wipWip },\r\n];\r\n\r\n@Component({\r\n tag: \"dso-icon\",\r\n styleUrl: \"./icon.scss\",\r\n shadow: true,\r\n})\r\nexport class Icon {\r\n /**\r\n * The alias of the icon.\r\n */\r\n @Prop()\r\n icon?: string;\r\n\r\n render() {\r\n if (this.icon) {\r\n const icon = icons.find((i) => i.alias === this.icon);\r\n if (!icon) {\r\n throw new TypeError(`Unknown svg: ${this.icon}`);\r\n }\r\n\r\n return <span class=\"icon-container\" innerHTML={icon.svg} />;\r\n }\r\n }\r\n}\r\n"],"version":3}
@@ -3,8 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-2556c4c6.js');
6
- const focusTrap_esm = require('./focus-trap.esm-1633a28f.js');
6
+ const focusTrap_esm = require('./focus-trap.esm-6cff35a7.js');
7
7
  const clsx = require('./clsx-fd0bee58.js');
8
+ require('./index.esm-970bc106.js');
8
9
 
9
10
  const listButtonCss = "*,\n*::after,\n*::before {\n box-sizing: border-box;\n}\n\n:host {\n display: block;\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n.dso-manual-input-button {\n cursor: text;\n}\n\n.dso-tertiary {\n display: inline-block;\n font-size: 1em;\n font-weight: 500;\n margin-bottom: 0;\n text-decoration: none;\n touch-action: manipulation;\n text-align: left;\n user-select: none;\n vertical-align: middle;\n border: 0;\n color: #39870c;\n line-height: 1;\n padding: 0;\n background-color: transparent;\n cursor: pointer;\n}\n.dso-tertiary:focus, .dso-tertiary:focus-visible {\n outline-offset: 2px;\n}\n.dso-tertiary:active {\n outline: 0;\n}\n.dso-tertiary[disabled] {\n color: #afcf9d;\n}\n.dso-tertiary[disabled].dso-spinner-left, .dso-tertiary[disabled].dso-spinner-right {\n color: #39870c;\n}\n.dso-tertiary:not([disabled]):hover {\n color: #275937;\n text-decoration: underline;\n text-underline-position: under;\n}\n.dso-tertiary:not([disabled]):active {\n color: #173521;\n}\n.dso-tertiary.dso-align {\n line-height: calc(1.5em - 1px);\n padding: 11px 0;\n position: relative;\n}\n.dso-tertiary.dso-truncate {\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.dso-tertiary.dso-spinner-left::before {\n background-image: url(\"data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %2339870c; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n content: \"\";\n display: inline-block;\n height: 24px;\n vertical-align: middle;\n width: 24px;\n margin-right: 8px;\n}\n.dso-tertiary.dso-spinner-right::after {\n background-image: url(\"data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %2339870c; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n content: \"\";\n display: inline-block;\n height: 24px;\n vertical-align: middle;\n width: 24px;\n margin-left: 8px;\n}\n.dso-tertiary dso-icon + span:not(.sr-only),\n.dso-tertiary svg.di + span:not(.sr-only),\n.dso-tertiary span:not(.sr-only) + dso-icon,\n.dso-tertiary span:not(.sr-only) + svg.di {\n margin-left: 8px;\n}\n.dso-tertiary svg.di.di-chevron-down + span:not(.sr-only),\n.dso-tertiary svg.di.di-chevron-up + span:not(.sr-only),\n.dso-tertiary span:not(.sr-only) + svg.di.di-chevron-down,\n.dso-tertiary span:not(.sr-only) + svg.di.di-chevron-up {\n margin-left: 4px;\n}\n.dso-tertiary dso-icon[icon=chevron-left] + span:not(.sr-only),\n.dso-tertiary dso-icon[icon=chevron-right] + span:not(.sr-only),\n.dso-tertiary svg.di.di-angle-down + span:not(.sr-only),\n.dso-tertiary svg.di.di-angle-up + span:not(.sr-only),\n.dso-tertiary span:not(.sr-only) + svg.di.di-angle-down,\n.dso-tertiary span:not(.sr-only) + svg.di.di-angle-up,\n.dso-tertiary span:not(.sr-only) + dso-icon[icon=chevron-left],\n.dso-tertiary span:not(.sr-only) + dso-icon[icon=chevron-right] {\n margin-left: 0;\n}\n.dso-tertiary dso-icon,\n.dso-tertiary svg.di,\n.dso-tertiary span {\n vertical-align: middle;\n}\n\n.dso-input-number:not(.form-group) {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n}\n.dso-input-number label {\n width: 100%;\n}\n.dso-input-number .dso-input-step-counter {\n align-self: center;\n background-color: transparent;\n border: 0;\n display: inline-block;\n height: 1.5rem;\n text-align: center;\n width: 1.5rem;\n}\n.dso-input-number .dso-input-step-counter:focus, .dso-input-number .dso-input-step-counter:active {\n outline: 0;\n}\n.dso-input-number .dso-input-step-counter::-webkit-outer-spin-button, .dso-input-number .dso-input-step-counter::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.dso-input-number .dso-input-step-counter[type=number] {\n -moz-appearance: textfield;\n}\n\n.dso-button-group {\n display: flex;\n flex-direction: row;\n}\n.dso-button-group.dso-disabled > * {\n background-color: #fff;\n border-color: #e5e5e5;\n color: #666;\n pointer-events: none;\n}\n.dso-button-group > * {\n border-radius: 0;\n}\n.dso-button-group > *:first-child {\n border-radius: 4px 0 0 4px;\n}\n.dso-button-group > *:not(:first-child) {\n border-left-style: none !important;\n}\n.dso-button-group > *:last-child {\n border-radius: 0 4px 4px 0;\n}\n.dso-button-group > *:only-child {\n border-radius: 4px;\n}\n.dso-button-group > .dso-input-number {\n background-color: #fff;\n border-color: #ccc;\n color: #191919;\n border-style: solid;\n border-width: 1px;\n flex-wrap: nowrap;\n padding: 0 16px;\n}\n@media screen and (max-width: 767px) {\n .dso-button-group > .dso-input-number {\n justify-content: center;\n }\n}\n.dso-button-group > *:hover + .dso-input-number,\n.dso-button-group > *:focus + .dso-input-number {\n background-color: #fff;\n border-color: #39870c;\n color: #191919;\n}\n.dso-button-group > *.dso-selected + .dso-input-number {\n background-color: #fff;\n border-color: #39870c;\n color: #191919;\n box-shadow: inset 0 -1px 0 0 #39870c, inset 0 1px 0 0 #39870c, inset -1px 0 0 0 #39870c;\n}\n.dso-button-group > *:active + .dso-input-number, .dso-button-group > *:active + .dso-input-number:hover,\n.dso-button-group > *.active + .dso-input-number,\n.dso-button-group > *.active + .dso-input-number:hover {\n background-color: #fff;\n border-color: #39870c;\n color: #191919;\n}\n.dso-button-group > *.disabled + .dso-input-number, .dso-button-group > *.disabled + .dso-input-number:hover,\n.dso-button-group > *[disabled] + .dso-input-number,\n.dso-button-group > *[disabled] + .dso-input-number:hover {\n background-color: #fff;\n border-color: #ccc;\n color: #666;\n opacity: 1;\n}\n.dso-button-group .dso-list-button {\n padding-right: 15px;\n}\n\n.dso-selectable {\n position: relative;\n display: var(--dso-selectable-display, block);\n padding: 0 0 0 32px;\n}\n.dso-selectable label {\n font-weight: 400;\n line-height: 24px;\n margin: 0;\n}\n.dso-selectable input[type=checkbox][disabled] + label::before, .dso-selectable input[type=checkbox][disabled]:active + label::before, .dso-selectable input[type=checkbox][disabled]:focus + label::before,\n.dso-selectable input[type=radio][disabled] + label::before,\n.dso-selectable input[type=radio][disabled]:active + label::before,\n.dso-selectable input[type=radio][disabled]:focus + label::before {\n background-color: #fff;\n box-shadow: 0 0 0 2px #e5e5e5;\n}\n.dso-selectable input[type=checkbox],\n.dso-selectable input[type=radio] {\n height: 24px;\n left: 0;\n margin: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 24px;\n z-index: 100;\n zoom: 1;\n}\n@media (prefers-contrast: more) {\n .dso-selectable input[type=checkbox],\n .dso-selectable input[type=radio] {\n opacity: 1;\n }\n}\n.dso-selectable input[type=checkbox]:not([disabled]),\n.dso-selectable input[type=radio]:not([disabled]) {\n cursor: pointer;\n}\n.dso-selectable input[type=checkbox] + label,\n.dso-selectable input[type=radio] + label {\n display: inline;\n font-style: normal;\n padding-left: 0;\n}\n.dso-selectable input[type=checkbox] + label::before,\n.dso-selectable input[type=radio] + label::before {\n background: #fff;\n border: 0;\n box-shadow: 0 0 0 2px var(--dso-selectable-color, #275937);\n content: \"\";\n height: 20px;\n left: 2px;\n position: absolute;\n top: 2px;\n width: 20px;\n}\n.dso-selectable input[type=checkbox]:focus,\n.dso-selectable input[type=radio]:focus {\n outline: 0;\n}\n.dso-selectable input[type=checkbox]:focus + label::before,\n.dso-selectable input[type=radio]:focus + label::before {\n box-shadow: 0 0 0 3px var(--dso-selectable-color, #275937);\n height: 18px;\n left: 3px;\n top: 3px;\n width: 18px;\n}\n.dso-selectable input[type=checkbox]:active + label::before, .dso-selectable input[type=checkbox].active + label::before,\n.dso-selectable input[type=radio]:active + label::before,\n.dso-selectable input[type=radio].active + label::before {\n background-color: #ebf3e6;\n box-shadow: 0 0 0 1px #275937;\n height: 22px;\n left: 1px;\n top: 1px;\n width: 22px;\n}\n.dso-selectable input[type=checkbox] + label::before {\n border-radius: 4px;\n}\n.dso-selectable input[type=checkbox] + label::after {\n background: transparent;\n content: \"\";\n left: 6px;\n opacity: 0;\n position: absolute;\n top: 6px;\n zoom: 1;\n}\n.dso-selectable input[type=checkbox]:checked + label::after, .dso-selectable input[type=checkbox]:indeterminate + label::after {\n opacity: 1;\n}\n.dso-selectable input[type=checkbox]:checked + label::after {\n border: solid;\n border-color: var(--dso-selectable-color, #39870c);\n border-top-color: transparent;\n border-width: 0 0 3px 3px;\n height: 8px;\n transform: rotate(-45deg);\n width: 13px;\n}\n.dso-selectable input[type=checkbox]:indeterminate + label::after {\n background-color: var(--dso-selectable-color, #39870c);\n height: 12px;\n width: 12px;\n}\n.dso-selectable input[type=radio] + label::before {\n border-radius: 50%;\n}\n.dso-selectable input[type=radio] + label::after {\n background-color: transparent;\n border-radius: 50%;\n content: \"\";\n height: 12px;\n left: 6px;\n opacity: 0;\n position: absolute;\n top: 6px;\n width: 12px;\n zoom: 1;\n}\n.dso-selectable input[type=radio]:checked + label::after {\n background-color: var(--dso-selectable-color, #39870c);\n opacity: 1;\n}\n.dso-selectable label {\n font-weight: 700;\n}\n\n.dso-list-button {\n display: inline-block;\n font-size: 1em;\n font-weight: 500;\n margin-bottom: 0;\n text-decoration: none;\n touch-action: manipulation;\n text-align: left;\n user-select: none;\n vertical-align: middle;\n background-color: #fff;\n border-color: #ccc;\n color: #191919;\n border-radius: 4px;\n border-width: 1px;\n border-style: solid;\n font-weight: 600;\n padding: 15px 47px 15px 15px;\n position: relative;\n text-align: left;\n white-space: normal;\n width: 100%;\n cursor: pointer;\n}\n.dso-list-button:focus, .dso-list-button:focus-visible {\n outline-offset: 2px;\n}\n.dso-list-button:active {\n outline: 0;\n}\n.dso-list-button:hover, .dso-list-button:focus {\n background-color: #fff;\n border-color: #39870c;\n color: #191919;\n}\n.dso-list-button:active, .dso-list-button:active:hover, .dso-list-button.active, .dso-list-button.active:hover {\n background-color: #fff;\n border-color: #39870c;\n color: #191919;\n}\n.dso-list-button.disabled, .dso-list-button.disabled:hover, .dso-list-button[disabled], .dso-list-button[disabled]:hover {\n background-color: #fff;\n border-color: #ccc;\n color: #666;\n opacity: 1;\n}\n.dso-list-button.dso-selected {\n border-color: #39870c;\n border-width: 1px;\n box-shadow: inset 0px 0px 0px 1px #39870c, inset -1px 0px 0px 0px #39870c;\n}\n@media screen and (min-width: 768px) {\n .dso-list-button.dso-selected.dso-single-count {\n border-right: 0;\n box-shadow: #39870c 0px 1px 0px 0px inset, #39870c 1px 0px 0px 0px inset, #39870c 0px -1px 0px 0px inset;\n }\n}\n.dso-list-button label {\n cursor: inherit;\n}\n.dso-list-button > span {\n display: block;\n}\n.dso-list-button .dso-sublabel {\n font-weight: 400;\n width: 100%;\n}\n.dso-list-button dso-icon,\n.dso-list-button svg.di,\n.dso-list-button .dso-count {\n height: 24px;\n position: absolute;\n right: 15px;\n top: 15px;\n width: 24px;\n}\n.dso-list-button dso-icon,\n.dso-list-button svg.di {\n color: #39870c;\n page-break-before: always;\n}\n.dso-list-button .dso-count {\n font-weight: 700;\n}\n@media screen and (max-width: 767px) {\n .dso-list-button.dso-selected.dso-single-count::after {\n width: 0;\n }\n}\n.dso-list-button .dso-sublabel {\n padding-left: 32px;\n}\n\n.dso-list-button + .dso-list-button,\n.dso-list-button + .dso-button-group,\n.dso-button-group + .dso-list-button,\n.dso-button-group + .dso-button-group {\n margin-top: 4px;\n}\n\n.dso-input-wrapper {\n position: relative;\n}\n.dso-input-wrapper .form-control {\n width: 9ch;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: 40px;\n padding: 6px 14px;\n font-size: 1rem;\n line-height: 1.5;\n color: #191919;\n background-color: #fff;\n background-image: none;\n border: 1px solid #275937;\n border-radius: 4px;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n.form-control::-moz-placeholder {\n color: #666;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #666;\n}\n.form-control::-webkit-input-placeholder {\n color: #666;\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control:focus {\n border-color: #275937;\n outline: 0;\n box-shadow: inset 0 0 0 1px #275937;\n}\n.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {\n background-color: #fff;\n opacity: 1;\n}\n.form-control[disabled], fieldset[disabled] .form-control {\n cursor: default;\n}\n.form-control[disabled] {\n border-color: #e5e5e5;\n color: #999;\n}\n.form-control[readonly] {\n border-width: 1px;\n}\n.form-control[type=text] {\n line-height: 40px;\n}\n.form-control[size] {\n width: auto;\n}\n\n.dso-manual-input-button[type=button] {\n background-color: transparent;\n border: 0;\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.hidden {\n display: none !important;\n}";
10
11