@dso-toolkit/core 42.0.0 → 43.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/cjs/dso-autosuggest.cjs.entry.js +17 -8
  2. package/dist/cjs/dso-badge.cjs.entry.js +1 -1
  3. package/dist/cjs/dso-header.cjs.entry.js +1 -1
  4. package/dist/cjs/dso-helpcenter-panel.cjs.entry.js +1 -1
  5. package/dist/cjs/dso-image-overlay.cjs.entry.js +1 -1
  6. package/dist/cjs/dso-label.cjs.entry.js +78 -3
  7. package/dist/cjs/dso-map-controls.cjs.entry.js +1 -1
  8. package/dist/cjs/dso-ozon-content.cjs.entry.js +32 -3
  9. package/dist/cjs/dso-pagination.cjs.entry.js +5 -2
  10. package/dist/cjs/dso-toolkit.cjs.js +1 -1
  11. package/dist/cjs/dso-tooltip.cjs.entry.js +7 -0
  12. package/dist/cjs/dso-tree-view.cjs.entry.js +24 -2
  13. package/dist/cjs/dso-viewer-grid.cjs.entry.js +1 -1
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/collection/components/autosuggest/autosuggest.js +37 -9
  16. package/dist/collection/components/autosuggest/autosuggest.template.js +2 -1
  17. package/dist/collection/components/badge/badge.css +4 -1
  18. package/dist/collection/components/header/header.css +27 -0
  19. package/dist/collection/components/helpcenter-panel/helpcenter-panel.css +96 -2
  20. package/dist/collection/components/image-overlay/image-overlay.css +124 -2
  21. package/dist/collection/components/label/label.css +13 -0
  22. package/dist/collection/components/label/label.js +118 -12
  23. package/dist/collection/components/label/label.template.js +2 -1
  24. package/dist/collection/components/list/list.template.js +11 -4
  25. package/dist/collection/components/map-controls/map-controls.css +147 -2
  26. package/dist/collection/components/ozon-content/nodes/int-io-ref.node.js +27 -0
  27. package/dist/collection/components/ozon-content/nodes/int-ref.node.js +1 -0
  28. package/dist/collection/components/ozon-content/ozon-content-mapper.js +3 -1
  29. package/dist/collection/components/ozon-content/ozon-content.css +23 -0
  30. package/dist/collection/components/ozon-content/ozon-content.js +3 -1
  31. package/dist/collection/components/pagination/pagination.js +8 -5
  32. package/dist/collection/components/tooltip/tooltip.js +7 -0
  33. package/dist/collection/components/tree-view/tree-item.js +1 -1
  34. package/dist/collection/components/tree-view/tree-view.js +58 -2
  35. package/dist/collection/components/viewer-grid/viewer-grid.css +207 -5
  36. package/dist/custom-elements/index.js +171 -26
  37. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  38. package/dist/dso-toolkit/p-04b8814d.entry.js +1 -0
  39. package/dist/dso-toolkit/{p-37e12c3c.entry.js → p-17e9802f.entry.js} +1 -1
  40. package/dist/dso-toolkit/p-19b5fae2.entry.js +1 -0
  41. package/dist/dso-toolkit/p-1bd0e0c3.entry.js +1 -0
  42. package/dist/dso-toolkit/p-1d52d4f2.entry.js +1 -0
  43. package/dist/dso-toolkit/p-553bd3aa.entry.js +1 -0
  44. package/dist/dso-toolkit/p-63e0f10d.entry.js +1 -0
  45. package/dist/dso-toolkit/p-a5705dd1.entry.js +1 -0
  46. package/dist/dso-toolkit/p-a7bcd356.entry.js +1 -0
  47. package/dist/dso-toolkit/p-aa098949.entry.js +1 -0
  48. package/dist/dso-toolkit/p-c282135e.entry.js +1 -0
  49. package/dist/dso-toolkit/p-ca3a1440.entry.js +1 -0
  50. package/dist/esm/dso-autosuggest.entry.js +17 -8
  51. package/dist/esm/dso-badge.entry.js +1 -1
  52. package/dist/esm/dso-header.entry.js +1 -1
  53. package/dist/esm/dso-helpcenter-panel.entry.js +1 -1
  54. package/dist/esm/dso-image-overlay.entry.js +1 -1
  55. package/dist/esm/dso-label.entry.js +79 -4
  56. package/dist/esm/dso-map-controls.entry.js +1 -1
  57. package/dist/esm/dso-ozon-content.entry.js +32 -3
  58. package/dist/esm/dso-pagination.entry.js +5 -2
  59. package/dist/esm/dso-toolkit.js +1 -1
  60. package/dist/esm/dso-tooltip.entry.js +7 -0
  61. package/dist/esm/dso-tree-view.entry.js +24 -2
  62. package/dist/esm/dso-viewer-grid.entry.js +1 -1
  63. package/dist/esm/loader.js +1 -1
  64. package/dist/types/components/autosuggest/autosuggest.d.ts +6 -0
  65. package/dist/types/components/autosuggest/autosuggest.template.d.ts +1 -1
  66. package/dist/types/components/label/label.d.ts +21 -3
  67. package/dist/types/components/label/label.template.d.ts +1 -1
  68. package/dist/types/components/ozon-content/nodes/int-io-ref.node.d.ts +6 -0
  69. package/dist/types/components/ozon-content/ozon-content-node-context.interface.d.ts +2 -1
  70. package/dist/types/components/ozon-content/ozon-content.interfaces.d.ts +2 -0
  71. package/dist/types/components/tooltip/tooltip.d.ts +1 -0
  72. package/dist/types/components/tree-view/tree-view.d.ts +10 -2
  73. package/dist/types/components.d.ts +16 -0
  74. package/package.json +1 -1
  75. package/dist/dso-toolkit/p-076400f4.entry.js +0 -1
  76. package/dist/dso-toolkit/p-2f64bded.entry.js +0 -1
  77. package/dist/dso-toolkit/p-5e614420.entry.js +0 -1
  78. package/dist/dso-toolkit/p-60679db4.entry.js +0 -1
  79. package/dist/dso-toolkit/p-7796687c.entry.js +0 -1
  80. package/dist/dso-toolkit/p-7f41f2a1.entry.js +0 -1
  81. package/dist/dso-toolkit/p-9dc7e3c5.entry.js +0 -1
  82. package/dist/dso-toolkit/p-b1dc8d76.entry.js +0 -1
  83. package/dist/dso-toolkit/p-e01b1657.entry.js +0 -1
  84. package/dist/dso-toolkit/p-e1496a15.entry.js +0 -1
  85. package/dist/dso-toolkit/p-f1026921.entry.js +0 -1
@@ -69,6 +69,9 @@ button.toggle-note.extern::after, button.toggle-note.download::after {
69
69
  button.toggle-note[disabled] {
70
70
  color: #afcf9d;
71
71
  }
72
+ button.toggle-note[disabled].dso-spinner-left, button.toggle-note[disabled].dso-spinner-right {
73
+ color: #39870c;
74
+ }
72
75
  button.toggle-note:not([disabled]):hover {
73
76
  color: #676cb0;
74
77
  text-decoration: underline;
@@ -113,6 +116,26 @@ button.toggle-note.extern[disabled]::after {
113
116
  button.toggle-note.extern:not([disabled]):hover::after, button.toggle-note.extern:not([disabled]):active::after {
114
117
  --dso-icon: var(--di-external-link-scampi);
115
118
  }
119
+ button.toggle-note.dso-spinner-left::before {
120
+ 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");
121
+ background-repeat: no-repeat;
122
+ content: "";
123
+ display: inline-block;
124
+ height: 24px;
125
+ vertical-align: middle;
126
+ width: 24px;
127
+ margin-right: 8px;
128
+ }
129
+ button.toggle-note.dso-spinner-right::after {
130
+ 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");
131
+ background-repeat: no-repeat;
132
+ content: "";
133
+ display: inline-block;
134
+ height: 24px;
135
+ vertical-align: middle;
136
+ width: 24px;
137
+ margin-left: 8px;
138
+ }
116
139
  button.toggle-note dso-icon + span:not(.sr-only),
117
140
  button.toggle-note svg.di + span:not(.sr-only),
118
141
  button.toggle-note span:not(.sr-only) + dso-icon,
@@ -40,9 +40,11 @@ export class OzonContent {
40
40
  const transformed = this.mapper.transform((_a = this.content) !== null && _a !== void 0 ? _a : '', context);
41
41
  if (this.deleted) {
42
42
  return (h("section", null,
43
+ h("slot", { name: "prefix" }),
43
44
  h("span", { class: "deleted-start" }, "Begin verwijderd element"),
44
45
  transformed,
45
- h("span", { class: "deleted-end" }, "Einde verwijderd element")));
46
+ h("span", { class: "deleted-end" }, "Einde verwijderd element"),
47
+ h("slot", { name: "suffix" })));
46
48
  }
47
49
  return (h(Host, { onClick: (e) => this.handleHostOnClick(e) },
48
50
  h("slot", { name: "prefix" }),
@@ -15,19 +15,22 @@ export class Pagination {
15
15
  }
16
16
  ;
17
17
  render() {
18
+ var _a;
18
19
  if (!this.totalPages) {
19
20
  return null;
20
21
  }
22
+ const currentPage = (_a = this.currentPage) !== null && _a !== void 0 ? _a : 0;
21
23
  const pages = Array.from({ length: this.totalPages }, (_value, i) => i + 1);
24
+ const currentPageOutOfBounds = currentPage < pages[0] || currentPage > pages[pages.length - 1];
22
25
  return (h("ul", { class: "pagination" },
23
- h("li", { class: this.currentPage === pages[0] ? 'dso-page-hidden' : undefined },
24
- h("a", { href: this.formatHref(pages[0]), "aria-label": "Vorige", onClick: e => this.currentPage && this.clickHandler(e, pages[this.currentPage - 2]) },
26
+ h("li", { class: (currentPage <= pages[0] || currentPageOutOfBounds) ? 'dso-page-hidden' : undefined },
27
+ h("a", { href: this.formatHref(pages[0]), "aria-label": "Vorige", onClick: e => currentPage && this.clickHandler(e, pages[currentPage - 2]) },
25
28
  h("dso-icon", { icon: "chevron-left" }))),
26
- pages.map(page => (h("li", { key: page, class: this.currentPage === page ? 'active' : undefined }, this.currentPage === page
29
+ pages.map(page => (h("li", { key: page, class: currentPage === page ? 'active' : undefined }, currentPage === page
27
30
  ? (h("span", { "aria-current": "page" }, page))
28
31
  : (h("a", { href: this.formatHref(page), onClick: e => this.clickHandler(e, page) }, page))))),
29
- h("li", { class: this.currentPage === pages[pages.length - 1] ? 'dso-page-hidden' : undefined },
30
- h("a", { href: this.formatHref(pages[pages.length - 1]), "aria-label": "Volgende", onClick: e => this.currentPage && this.clickHandler(e, pages[this.currentPage]) },
32
+ h("li", { class: (currentPage >= pages[pages.length - 1] || currentPageOutOfBounds) ? 'dso-page-hidden' : undefined },
33
+ h("a", { href: this.formatHref(pages[pages.length - 1]), "aria-label": "Volgende", onClick: e => currentPage && this.clickHandler(e, pages[currentPage]) },
31
34
  h("dso-icon", { icon: "chevron-right" })))));
32
35
  }
33
36
  static get is() { return "dso-pagination"; }
@@ -47,6 +47,11 @@ export class Tooltip {
47
47
  state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), { maxWidth: `${width}px` });
48
48
  },
49
49
  };
50
+ this.keyDownListener = (event) => {
51
+ if (event.key === 'Escape') {
52
+ this.deactivate();
53
+ }
54
+ };
50
55
  }
51
56
  /**
52
57
  * Activate the tooltip (Sets the `active` attribute)
@@ -105,6 +110,7 @@ export class Tooltip {
105
110
  (_a = this.popper) === null || _a === void 0 ? void 0 : _a.setOptions({
106
111
  modifiers: [{ name: 'eventListeners', enabled: true }]
107
112
  });
113
+ document.addEventListener('keydown', this.keyDownListener);
108
114
  });
109
115
  }
110
116
  }
@@ -113,6 +119,7 @@ export class Tooltip {
113
119
  (_a = this.popper) === null || _a === void 0 ? void 0 : _a.setOptions({
114
120
  modifiers: [{ name: 'eventListeners', enabled: false }]
115
121
  });
122
+ document.removeEventListener('keydown', this.keyDownListener);
116
123
  }
117
124
  setTimeout(() => (this.hidden = true), transitionDuration);
118
125
  }
@@ -8,7 +8,7 @@ export const DsoTreeItem = ({ owner, ancestors, item, index, level, setSize }) =
8
8
  h("div", { onClick: (e) => owner.itemClick(e, ancestors, item) },
9
9
  h("dso-icon", { icon: item.open ? 'minus-square' : 'plus-square' }))
10
10
  : h("dso-icon", null)),
11
- h("p", { class: clsx('tree-content', { 'active': item.active }, { 'selected': item.selected }), tabindex: level === 1 && index === 0 ? 0 : -1, role: "treeitem", "aria-expanded": item.hasItems ? '' + (!!item.open && !!((_b = item.items) === null || _b === void 0 ? void 0 : _b.length)) : undefined, "aria-current": item.active ? 'true' : undefined, "aria-level": level, "aria-setsize": setSize, "aria-posinset": index + 1, "aria-busy": item.loading ? 'true' : undefined, onClick: (e) => owner.itemClick(e, ancestors, item) },
11
+ h("p", { class: clsx('tree-content', { 'active': item.active }, { 'selected': item.selected }), tabindex: level === 1 && index === 0 ? 0 : -1, role: "treeitem", "aria-expanded": item.hasItems ? '' + (!!item.open && !!((_b = item.items) === null || _b === void 0 ? void 0 : _b.length)) : undefined, "aria-current": item.active ? 'true' : undefined, "aria-level": level, "aria-setsize": setSize, "aria-posinset": index + 1, "aria-busy": item.loading ? 'true' : undefined, "data-item-id": item.id, onClick: (e) => owner.itemClick(e, ancestors, item) },
12
12
  item.selected && h("span", { class: "sr-only" }, "Resultaat: "),
13
13
  item.href
14
14
  ? h("a", { href: item.href, tabindex: "-1" }, item.label)
@@ -1,4 +1,4 @@
1
- import { h, Component, Event, Prop } from '@stencil/core';
1
+ import { h, Component, Event, Prop, Method } from '@stencil/core';
2
2
  import { DsoTreeItem } from './tree-item';
3
3
  export class TreeView {
4
4
  constructor() {
@@ -66,6 +66,28 @@ export class TreeView {
66
66
  }
67
67
  };
68
68
  }
69
+ /**
70
+ * Set focus on the last item in the specified path.
71
+ * The consumer is responsible for providing a TreeView collection where the last item is visible.
72
+ * @async
73
+ * @returns Whether the item was found.
74
+ */
75
+ async focusItem(path) {
76
+ var _a;
77
+ const tree = this.tree;
78
+ if (!tree || path.length === 0) {
79
+ return false;
80
+ }
81
+ const itemToFocus = path[path.length - 1];
82
+ const elementToFocus = Array.from((_a = tree.querySelectorAll('p')) !== null && _a !== void 0 ? _a : [])
83
+ .filter(item => item.offsetWidth > 0 && item.offsetHeight > 0)
84
+ .find(item => item.dataset['itemId'] === itemToFocus.id);
85
+ if (!elementToFocus) {
86
+ return false;
87
+ }
88
+ TreeView.setFocus(tree, elementToFocus);
89
+ return true;
90
+ }
69
91
  static setFocus(tree, target) {
70
92
  if (target) {
71
93
  Array.from(tree.querySelectorAll('p'))
@@ -142,7 +164,7 @@ export class TreeView {
142
164
  }
143
165
  render() {
144
166
  var _a;
145
- return (h("div", { id: "tree", class: "dso-tree", onKeyDown: (e) => this.keyDownListener(e) },
167
+ return (h("div", { id: "tree", class: "dso-tree", onKeyDown: (e) => this.keyDownListener(e), ref: element => this.tree = element },
146
168
  h("ul", { role: "tree", "aria-label": "Objectenboom" }, (_a = this.collection) === null || _a === void 0 ? void 0 : _a.map((item, index) => h(DsoTreeItem, { owner: this, ancestors: [], item: item, index: index, level: 1, setSize: this.collection.length })))));
147
169
  }
148
170
  static get is() { return "dso-tree-view"; }
@@ -236,4 +258,38 @@ export class TreeView {
236
258
  }
237
259
  }
238
260
  }]; }
261
+ static get methods() { return {
262
+ "focusItem": {
263
+ "complexType": {
264
+ "signature": "(path: TreeViewItem[]) => Promise<boolean>",
265
+ "parameters": [{
266
+ "tags": [],
267
+ "text": ""
268
+ }],
269
+ "references": {
270
+ "Promise": {
271
+ "location": "global"
272
+ },
273
+ "TreeViewItem": {
274
+ "location": "import",
275
+ "path": "./tree-view.interfaces"
276
+ },
277
+ "HTMLElement": {
278
+ "location": "global"
279
+ }
280
+ },
281
+ "return": "Promise<boolean>"
282
+ },
283
+ "docs": {
284
+ "text": "Set focus on the last item in the specified path.\nThe consumer is responsible for providing a TreeView collection where the last item is visible.",
285
+ "tags": [{
286
+ "name": "async",
287
+ "text": undefined
288
+ }, {
289
+ "name": "returns",
290
+ "text": "Whether the item was found."
291
+ }]
292
+ }
293
+ }
294
+ }; }
239
295
  }
@@ -200,6 +200,13 @@ h6,
200
200
  .overlay-close-button[disabled] {
201
201
  color: #afcf9d;
202
202
  }
203
+ .shrink[disabled].dso-spinner-left, .shrink[disabled].dso-spinner-right,
204
+ .expand[disabled].dso-spinner-left,
205
+ .expand[disabled].dso-spinner-right,
206
+ .overlay-close-button[disabled].dso-spinner-left,
207
+ .overlay-close-button[disabled].dso-spinner-right {
208
+ color: #39870c;
209
+ }
203
210
  .shrink:not([disabled]):hover,
204
211
  .expand:not([disabled]):hover,
205
212
  .overlay-close-button:not([disabled]):hover {
@@ -270,6 +277,30 @@ h6,
270
277
  .overlay-close-button.extern:not([disabled]):active::after {
271
278
  --dso-icon: var(--di-external-link-scampi);
272
279
  }
280
+ .shrink.dso-spinner-left::before,
281
+ .expand.dso-spinner-left::before,
282
+ .overlay-close-button.dso-spinner-left::before {
283
+ 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");
284
+ background-repeat: no-repeat;
285
+ content: "";
286
+ display: inline-block;
287
+ height: 24px;
288
+ vertical-align: middle;
289
+ width: 24px;
290
+ margin-right: 8px;
291
+ }
292
+ .shrink.dso-spinner-right::after,
293
+ .expand.dso-spinner-right::after,
294
+ .overlay-close-button.dso-spinner-right::after {
295
+ 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");
296
+ background-repeat: no-repeat;
297
+ content: "";
298
+ display: inline-block;
299
+ height: 24px;
300
+ vertical-align: middle;
301
+ width: 24px;
302
+ margin-left: 8px;
303
+ }
273
304
  .shrink dso-icon + span:not(.sr-only),
274
305
  .shrink svg.di + span:not(.sr-only),
275
306
  .shrink span:not(.sr-only) + dso-icon,
@@ -415,10 +446,18 @@ h6,
415
446
  line-height: 16px;
416
447
  }
417
448
  .sizing-buttons button.btn-sm dso-icon,
418
- .sizing-buttons button.btn-sm svg.di, .sizing-buttons button.btn-sm.extern::after, .sizing-buttons button.btn-sm.download::after {
449
+ .sizing-buttons button.btn-sm svg.di, .sizing-buttons button.btn-sm.extern::after, .sizing-buttons button.btn-sm.download::after, .sizing-buttons button.btn-sm.dso-spinner::before {
419
450
  margin-bottom: -4px;
420
451
  margin-top: -4px;
421
452
  }
453
+ .sizing-buttons button.btn-sm.dso-spinner-left::before {
454
+ height: 16px;
455
+ width: 16px;
456
+ }
457
+ .sizing-buttons button.btn-sm.dso-spinner-right::after {
458
+ height: 16px;
459
+ width: 16px;
460
+ }
422
461
  .sizing-buttons button.download::after {
423
462
  background: var(--dso-icon, var(--di-download)) no-repeat;
424
463
  background-position: center;
@@ -457,6 +496,59 @@ h6,
457
496
  clip: rect(0, 0, 0, 0);
458
497
  border: 0;
459
498
  }
499
+ .sizing-buttons button.dso-spinner-left[disabled], .sizing-buttons button.dso-spinner-right[disabled] {
500
+ background-color: #fff;
501
+ border-color: #39870c;
502
+ color: #39870c;
503
+ }
504
+ .sizing-buttons button.dso-spinner-left::before {
505
+ 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");
506
+ background-repeat: no-repeat;
507
+ content: "";
508
+ display: inline-block;
509
+ height: 24px;
510
+ vertical-align: top;
511
+ width: 24px;
512
+ margin-right: 8px;
513
+ }
514
+ .sizing-buttons button.dso-spinner-left:not([disabled]):hover::before {
515
+ 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");
516
+ background-repeat: no-repeat;
517
+ content: "";
518
+ display: inline-block;
519
+ height: 24px;
520
+ vertical-align: top;
521
+ width: 24px;
522
+ margin-right: 8px;
523
+ }
524
+ .sizing-buttons button.dso-spinner-left:not([disabled]).btn-sm:hover::before {
525
+ height: 16px;
526
+ width: 16px;
527
+ }
528
+ .sizing-buttons button.dso-spinner-right::after {
529
+ 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");
530
+ background-repeat: no-repeat;
531
+ content: "";
532
+ display: inline-block;
533
+ height: 24px;
534
+ vertical-align: top;
535
+ width: 24px;
536
+ margin-left: 8px;
537
+ }
538
+ .sizing-buttons button.dso-spinner-right:not([disabled]):hover::after {
539
+ 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");
540
+ background-repeat: no-repeat;
541
+ content: "";
542
+ display: inline-block;
543
+ height: 24px;
544
+ vertical-align: top;
545
+ width: 24px;
546
+ margin-left: 8px;
547
+ }
548
+ .sizing-buttons button.dso-spinner-right:not([disabled]).btn-sm:hover::after {
549
+ height: 16px;
550
+ width: 16px;
551
+ }
460
552
  .sizing-buttons button:focus-visible {
461
553
  background-color: #39870c;
462
554
  border-color: #39870c;
@@ -593,10 +685,18 @@ h6,
593
685
  line-height: 16px;
594
686
  }
595
687
  .filterpanel-buttons .cancel-button.btn-sm dso-icon,
596
- .filterpanel-buttons .cancel-button.btn-sm svg.di, .filterpanel-buttons .cancel-button.btn-sm.extern::after, .filterpanel-buttons .cancel-button.btn-sm.download::after {
688
+ .filterpanel-buttons .cancel-button.btn-sm svg.di, .filterpanel-buttons .cancel-button.btn-sm.extern::after, .filterpanel-buttons .cancel-button.btn-sm.download::after, .filterpanel-buttons .cancel-button.btn-sm.dso-spinner::before {
597
689
  margin-bottom: -4px;
598
690
  margin-top: -4px;
599
691
  }
692
+ .filterpanel-buttons .cancel-button.btn-sm.dso-spinner-left::before {
693
+ height: 16px;
694
+ width: 16px;
695
+ }
696
+ .filterpanel-buttons .cancel-button.btn-sm.dso-spinner-right::after {
697
+ height: 16px;
698
+ width: 16px;
699
+ }
600
700
  .filterpanel-buttons .cancel-button.download::after {
601
701
  background: var(--dso-icon, var(--di-download)) no-repeat;
602
702
  background-position: center;
@@ -635,11 +735,72 @@ h6,
635
735
  margin-left: 8px;
636
736
  margin-right: -8px;
637
737
  }
738
+ .filterpanel-buttons .cancel-button.dso-spinner-left[disabled], .filterpanel-buttons .cancel-button.dso-spinner-right[disabled] {
739
+ background-color: #fff;
740
+ border-color: #39870c;
741
+ color: #39870c;
742
+ }
743
+ .filterpanel-buttons .cancel-button.dso-spinner-left::before {
744
+ 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");
745
+ background-repeat: no-repeat;
746
+ content: "";
747
+ display: inline-block;
748
+ height: 24px;
749
+ vertical-align: top;
750
+ width: 24px;
751
+ margin-right: 8px;
752
+ }
753
+ .filterpanel-buttons .cancel-button.dso-spinner-left:not([disabled]):hover::before {
754
+ 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");
755
+ background-repeat: no-repeat;
756
+ content: "";
757
+ display: inline-block;
758
+ height: 24px;
759
+ vertical-align: top;
760
+ width: 24px;
761
+ margin-right: 8px;
762
+ }
763
+ .filterpanel-buttons .cancel-button.dso-spinner-left:not([disabled]).btn-sm:hover::before {
764
+ height: 16px;
765
+ width: 16px;
766
+ }
767
+ .filterpanel-buttons .cancel-button.dso-spinner-right::after {
768
+ 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");
769
+ background-repeat: no-repeat;
770
+ content: "";
771
+ display: inline-block;
772
+ height: 24px;
773
+ vertical-align: top;
774
+ width: 24px;
775
+ margin-left: 8px;
776
+ }
777
+ .filterpanel-buttons .cancel-button.dso-spinner-right:not([disabled]):hover::after {
778
+ 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");
779
+ background-repeat: no-repeat;
780
+ content: "";
781
+ display: inline-block;
782
+ height: 24px;
783
+ vertical-align: top;
784
+ width: 24px;
785
+ margin-left: 8px;
786
+ }
787
+ .filterpanel-buttons .cancel-button.dso-spinner-right:not([disabled]).btn-sm:hover::after {
788
+ height: 16px;
789
+ width: 16px;
790
+ }
638
791
  .filterpanel-buttons .cancel-button dso-icon,
639
- .filterpanel-buttons .cancel-button svg.di, .filterpanel-buttons .cancel-button.extern::after, .filterpanel-buttons .cancel-button.download::after {
792
+ .filterpanel-buttons .cancel-button svg.di, .filterpanel-buttons .cancel-button.extern::after, .filterpanel-buttons .cancel-button.download::after, .filterpanel-buttons .cancel-button.dso-spinner::before {
640
793
  margin-bottom: -4px;
641
794
  margin-top: -4px;
642
795
  }
796
+ .filterpanel-buttons .cancel-button.dso-spinner-left::before {
797
+ height: 16px;
798
+ width: 16px;
799
+ }
800
+ .filterpanel-buttons .cancel-button.dso-spinner-right::after {
801
+ height: 16px;
802
+ width: 16px;
803
+ }
643
804
  .filterpanel-buttons .apply-button {
644
805
  display: inline-block;
645
806
  font-size: 1em;
@@ -694,10 +855,18 @@ h6,
694
855
  line-height: 16px;
695
856
  }
696
857
  .filterpanel-buttons .apply-button.btn-sm dso-icon,
697
- .filterpanel-buttons .apply-button.btn-sm svg.di, .filterpanel-buttons .apply-button.btn-sm.extern::after, .filterpanel-buttons .apply-button.btn-sm.download::after {
858
+ .filterpanel-buttons .apply-button.btn-sm svg.di, .filterpanel-buttons .apply-button.btn-sm.extern::after, .filterpanel-buttons .apply-button.btn-sm.download::after, .filterpanel-buttons .apply-button.btn-sm.dso-spinner::before {
698
859
  margin-bottom: -4px;
699
860
  margin-top: -4px;
700
861
  }
862
+ .filterpanel-buttons .apply-button.btn-sm.dso-spinner-left::before {
863
+ height: 16px;
864
+ width: 16px;
865
+ }
866
+ .filterpanel-buttons .apply-button.btn-sm.dso-spinner-right::after {
867
+ height: 16px;
868
+ width: 16px;
869
+ }
701
870
  .filterpanel-buttons .apply-button.download::after {
702
871
  background: var(--dso-icon, var(--di-download-wit)) no-repeat;
703
872
  background-position: center;
@@ -724,11 +893,44 @@ h6,
724
893
  margin-left: 8px;
725
894
  margin-right: -8px;
726
895
  }
896
+ .filterpanel-buttons .apply-button.dso-spinner-left[disabled], .filterpanel-buttons .apply-button.dso-spinner-right[disabled] {
897
+ background-color: #39870c;
898
+ border-color: #39870c;
899
+ color: #fff;
900
+ }
901
+ .filterpanel-buttons .apply-button.dso-spinner-left::before {
902
+ 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");
903
+ background-repeat: no-repeat;
904
+ content: "";
905
+ display: inline-block;
906
+ height: 24px;
907
+ vertical-align: top;
908
+ width: 24px;
909
+ margin-right: 8px;
910
+ }
911
+ .filterpanel-buttons .apply-button.dso-spinner-right::after {
912
+ 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");
913
+ background-repeat: no-repeat;
914
+ content: "";
915
+ display: inline-block;
916
+ height: 24px;
917
+ vertical-align: top;
918
+ width: 24px;
919
+ margin-left: 8px;
920
+ }
727
921
  .filterpanel-buttons .apply-button dso-icon,
728
- .filterpanel-buttons .apply-button svg.di, .filterpanel-buttons .apply-button.extern::after, .filterpanel-buttons .apply-button.download::after {
922
+ .filterpanel-buttons .apply-button svg.di, .filterpanel-buttons .apply-button.extern::after, .filterpanel-buttons .apply-button.download::after, .filterpanel-buttons .apply-button.dso-spinner::before {
729
923
  margin-bottom: -4px;
730
924
  margin-top: -4px;
731
925
  }
926
+ .filterpanel-buttons .apply-button.dso-spinner-left::before {
927
+ height: 16px;
928
+ width: 16px;
929
+ }
930
+ .filterpanel-buttons .apply-button.dso-spinner-right::after {
931
+ height: 16px;
932
+ width: 16px;
933
+ }
732
934
  .filterpanel-buttons .cancel-button + .apply-button {
733
935
  margin-left: 16px;
734
936
  }