@vertexvis/ui 0.0.15 → 0.1.0-canary.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 (133) hide show
  1. package/dist/cjs/{auto-resize-textarea-56a57fd3.js → auto-resize-textarea-deb05359.js} +2 -14
  2. package/dist/cjs/button-edd366d8.js +67 -0
  3. package/dist/cjs/components.cjs.js +1 -1
  4. package/dist/cjs/{draggable-popover-ee0db70b.js → draggable-popover-edf23d3a.js} +4 -9
  5. package/dist/cjs/{icon-092d8624.js → icon-53d62a46.js} +1 -1
  6. package/dist/cjs/icon-button-f868bf06.js +43 -0
  7. package/dist/cjs/{icon-helper-546f9a04.js → icon-helper-caf2699e.js} +2 -2
  8. package/dist/cjs/index.cjs.js +14 -12
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/{menu-0579351b.js → menu-d1ecf43b.js} +4 -3
  11. package/dist/cjs/popover-d9ec8e10.js +1684 -0
  12. package/dist/cjs/{result-list-77ba2fa9.js → result-list-1e592c3c.js} +1 -1
  13. package/dist/cjs/{search-bar-81ca45b3.js → search-bar-bb40cfa7.js} +1 -1
  14. package/dist/cjs/slots-fb5ac359.js +29 -0
  15. package/dist/cjs/{templates-4e22ccc0.js → templates-e7b3ffbb.js} +3 -32
  16. package/dist/cjs/tooltip-31b596f5.js +2152 -0
  17. package/dist/cjs/tslib.es6-838fd860.js +68 -0
  18. package/dist/cjs/vertex-auto-resize-textarea.cjs.entry.js +2 -1
  19. package/dist/cjs/vertex-button.cjs.entry.js +1 -1
  20. package/dist/cjs/vertex-draggable-popover.cjs.entry.js +1 -1
  21. package/dist/cjs/vertex-icon-button.cjs.entry.js +2 -2
  22. package/dist/cjs/vertex-icon.cjs.entry.js +2 -2
  23. package/dist/cjs/vertex-menu.cjs.entry.js +1 -1
  24. package/dist/cjs/vertex-popover.cjs.entry.js +1 -1
  25. package/dist/cjs/vertex-result-list.cjs.entry.js +3 -2
  26. package/dist/cjs/vertex-search-bar.cjs.entry.js +3 -2
  27. package/dist/cjs/vertex-tooltip.cjs.entry.js +3 -1
  28. package/dist/collection/components/button/button.css +17 -3
  29. package/dist/collection/components/draggable-popover/draggable-popover.js +4 -9
  30. package/dist/collection/components/dropdown-menu/dropdown-menu.js +1 -1
  31. package/dist/collection/components/help-tooltip/help-tooltip.js +1 -1
  32. package/dist/collection/components/icon/icons/invert.js +1 -1
  33. package/dist/collection/components/icon-button/icon-button.css +14 -3
  34. package/dist/collection/components/menu/menu.js +28 -4
  35. package/dist/collection/components/popover/middleware.js +26 -0
  36. package/dist/collection/components/popover/popover.css +1 -1
  37. package/dist/collection/components/popover/popover.js +147 -115
  38. package/dist/collection/components/popover/util.js +9 -0
  39. package/dist/collection/components/result-list/result-list.js +1 -1
  40. package/dist/collection/components/search-bar/search-bar.js +1 -1
  41. package/dist/collection/components/tooltip/tooltip.css +4 -0
  42. package/dist/collection/components/tooltip/tooltip.js +60 -4
  43. package/dist/collection/util/components/dom.js +10 -0
  44. package/dist/collection/util/components/slots.js +12 -0
  45. package/dist/components/components.css +1 -1
  46. package/dist/components/components.esm.js +1 -1
  47. package/dist/components/index.esm.js +1 -1
  48. package/dist/components/p-0517ca62.entry.js +1 -0
  49. package/dist/components/p-1356f525.js +1 -0
  50. package/dist/components/{p-73e2e8f4.js → p-17b97932.js} +1 -1
  51. package/dist/components/p-19318fee.entry.js +1 -0
  52. package/dist/components/p-41a7564c.js +1 -0
  53. package/dist/components/{p-5a93c1b6.js → p-4224c2ad.js} +1 -1
  54. package/dist/components/p-45cfd66e.entry.js +1 -0
  55. package/dist/components/{p-60ca5d84.js → p-52739247.js} +1 -1
  56. package/dist/components/p-59032668.js +1 -0
  57. package/dist/components/p-64e8b92c.js +1 -0
  58. package/dist/components/p-6505cdb3.js +1 -0
  59. package/dist/components/p-79fd6fb6.entry.js +1 -0
  60. package/dist/components/p-7b75e004.js +1 -0
  61. package/dist/components/{p-ddb5a066.js → p-94168b92.js} +1 -1
  62. package/dist/components/p-9c384f6c.entry.js +1 -0
  63. package/dist/components/p-ae6a3c46.entry.js +1 -0
  64. package/dist/components/p-b2c7b113.js +1 -0
  65. package/dist/components/p-bec53c3a.js +1 -0
  66. package/dist/components/p-da0a7b57.js +1 -0
  67. package/dist/components/p-e576818b.entry.js +1 -0
  68. package/dist/components/p-e7336466.entry.js +1 -0
  69. package/dist/components/p-ee8b96b2.js +1 -0
  70. package/dist/components/p-f900d0f4.entry.js +1 -0
  71. package/dist/components/p-fca52578.entry.js +1 -0
  72. package/dist/esm/{auto-resize-textarea-ac4b5f3b.js → auto-resize-textarea-087fecdb.js} +1 -13
  73. package/dist/esm/button-547336b8.js +65 -0
  74. package/dist/esm/components.js +1 -1
  75. package/dist/esm/{draggable-popover-5f14cca5.js → draggable-popover-8ef3aec6.js} +4 -9
  76. package/dist/esm/{icon-a2d4cafb.js → icon-2630793d.js} +1 -1
  77. package/dist/esm/icon-button-25edf617.js +41 -0
  78. package/dist/esm/{icon-helper-aa2001ba.js → icon-helper-10a99d95.js} +2 -2
  79. package/dist/esm/index.js +14 -12
  80. package/dist/esm/loader.js +1 -1
  81. package/dist/esm/{menu-f35637ca.js → menu-daa7f9c9.js} +4 -3
  82. package/dist/esm/popover-67c88e4b.js +1682 -0
  83. package/dist/esm/{result-list-9c83f22a.js → result-list-36cfb08a.js} +1 -1
  84. package/dist/esm/{search-bar-600fb8d9.js → search-bar-59cc151d.js} +1 -1
  85. package/dist/esm/slots-fbb5afb3.js +26 -0
  86. package/dist/esm/{templates-51212dae.js → templates-797420bf.js} +1 -30
  87. package/dist/esm/tooltip-14b65fb5.js +2150 -0
  88. package/dist/esm/tslib.es6-99cd0de8.js +65 -0
  89. package/dist/esm/vertex-auto-resize-textarea.entry.js +2 -1
  90. package/dist/esm/vertex-button.entry.js +1 -1
  91. package/dist/esm/vertex-draggable-popover.entry.js +1 -1
  92. package/dist/esm/vertex-icon-button.entry.js +2 -2
  93. package/dist/esm/vertex-icon.entry.js +2 -2
  94. package/dist/esm/vertex-menu.entry.js +1 -1
  95. package/dist/esm/vertex-popover.entry.js +1 -1
  96. package/dist/esm/vertex-result-list.entry.js +3 -2
  97. package/dist/esm/vertex-search-bar.entry.js +3 -2
  98. package/dist/esm/vertex-tooltip.entry.js +3 -1
  99. package/dist/types/components/menu/menu.d.ts +2 -1
  100. package/dist/types/components/popover/middleware.d.ts +3 -0
  101. package/dist/types/components/popover/popover.d.ts +39 -23
  102. package/dist/types/components/popover/util.d.ts +2 -0
  103. package/dist/types/components/tooltip/tooltip.d.ts +10 -0
  104. package/dist/types/components.d.ts +31 -15
  105. package/dist/types/util/components/dom.d.ts +3 -0
  106. package/dist/types/util/components/slots.d.ts +1 -0
  107. package/package.json +5 -4
  108. package/dist/cjs/button-76a9db69.js +0 -67
  109. package/dist/cjs/icon-button-0671f42e.js +0 -43
  110. package/dist/cjs/popover-34e1a386.js +0 -2029
  111. package/dist/cjs/tooltip-afebbca8.js +0 -46
  112. package/dist/components/p-0ec0a007.entry.js +0 -1
  113. package/dist/components/p-30f5b948.entry.js +0 -1
  114. package/dist/components/p-4226645b.js +0 -1
  115. package/dist/components/p-58f8a354.js +0 -1
  116. package/dist/components/p-76ef57b9.js +0 -1
  117. package/dist/components/p-7c31f30e.js +0 -1
  118. package/dist/components/p-852be06f.js +0 -1
  119. package/dist/components/p-8764954b.js +0 -1
  120. package/dist/components/p-87de6fc5.js +0 -1
  121. package/dist/components/p-939391df.entry.js +0 -1
  122. package/dist/components/p-990852f6.entry.js +0 -1
  123. package/dist/components/p-9a46c8b6.entry.js +0 -1
  124. package/dist/components/p-a1d160cc.entry.js +0 -1
  125. package/dist/components/p-c8df41df.entry.js +0 -1
  126. package/dist/components/p-dd94aaef.entry.js +0 -1
  127. package/dist/components/p-e8e6ee3f.js +0 -1
  128. package/dist/components/p-eff16591.entry.js +0 -1
  129. package/dist/components/p-f98b2ecb.entry.js +0 -1
  130. package/dist/esm/button-f9ac74e4.js +0 -65
  131. package/dist/esm/icon-button-53bc2b56.js +0 -41
  132. package/dist/esm/popover-4375db1b.js +0 -2027
  133. package/dist/esm/tooltip-e78d2c7a.js +0 -44
@@ -1,14 +1,18 @@
1
- import { createPopper } from '@popperjs/core';
1
+ import { autoUpdate, } from '@floating-ui/dom';
2
2
  import { h, Host, } from '@stencil/core';
3
3
  import classNames from 'classnames';
4
+ import { getDefaultMiddleware } from './middleware';
5
+ import { computeUpdatedPosition } from './util';
4
6
  const WINDOW_RESIZE_DEBOUNCE_THRESHOLD = 200;
5
7
  export class Popover {
6
8
  constructor() {
7
- this.opened = false;
9
+ this.shouldUpdatePosition = false;
10
+ this.middleware = [];
8
11
  this.partialWindow = window;
9
12
  this.open = false;
10
13
  this.placement = 'bottom-start';
11
14
  this.position = undefined;
15
+ this.anchorBounds = undefined;
12
16
  this.backdrop = true;
13
17
  this.animated = false;
14
18
  this.anchorSelector = undefined;
@@ -16,10 +20,12 @@ export class Popover {
16
20
  this.resizeBehavior = 'dynamic';
17
21
  this.overflowBehavior = undefined;
18
22
  this.flipBehavior = undefined;
23
+ this.offsetBehavior = undefined;
19
24
  this.updateOnResize = false;
20
- this.popperRendered = false;
21
- this.contentResizeObserverFactory = (cb) => new ResizeObserver(cb);
22
- this.attemptCreatePopper = this.attemptCreatePopper.bind(this);
25
+ this.opened = false;
26
+ this.computedPlacement = this.placement;
27
+ this.updateListener = this.updateListener.bind(this);
28
+ this.handlePositionUpdate = this.handlePositionUpdate.bind(this);
23
29
  this.handleResize = this.handleResize.bind(this);
24
30
  this.setWindow = this.setWindow.bind(this);
25
31
  }
@@ -27,45 +33,54 @@ export class Popover {
27
33
  this.updatePosition(this.position);
28
34
  }
29
35
  componentDidUpdate() {
30
- this.attemptCreatePopper();
36
+ if (this.shouldUpdatePosition) {
37
+ this.shouldUpdatePosition = false;
38
+ if (this.updateDispose != null) {
39
+ this.handlePositionUpdate();
40
+ }
41
+ else {
42
+ this.updateListener();
43
+ }
44
+ }
31
45
  }
32
46
  componentDidLoad() {
33
- this.contentResizeObserver = this.contentResizeObserverFactory(() => {
34
- var _a;
35
- if (this.updateOnResize) {
36
- (_a = this.popper) === null || _a === void 0 ? void 0 : _a.update();
37
- }
38
- });
39
47
  this.updateViewport();
40
- this.attemptCreatePopper();
48
+ this.handleMiddlewareChange();
49
+ this.updateListener();
41
50
  if (this.resizeBehavior === 'dynamic') {
42
51
  window.addEventListener('resize', this.handleResize);
43
52
  }
44
53
  }
45
54
  disconnectedCallback() {
46
- var _a;
47
55
  this.viewportWidth = undefined;
48
56
  this.viewportHeight = undefined;
49
57
  this.opened = false;
50
58
  if (this.resizeBehavior === 'dynamic') {
51
59
  window.removeEventListener('resize', this.handleResize);
52
60
  }
53
- (_a = this.contentResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
54
61
  }
55
62
  updatePosition(position) {
56
63
  if (position != null) {
57
64
  this.anchorPosition =
58
65
  typeof position === 'object' ? position : JSON.parse(position);
66
+ this.shouldUpdatePosition = true;
59
67
  }
60
68
  }
69
+ updatePlacement() {
70
+ this.updatePosition(this.position);
71
+ }
61
72
  updateOpened(open) {
62
73
  if (open) {
63
74
  this.opened = true;
64
75
  }
76
+ this.updateListener();
65
77
  }
66
78
  updateAnimated() {
67
79
  this.opened = this.open;
68
80
  }
81
+ updateMiddleware() {
82
+ this.handleMiddlewareChange();
83
+ }
69
84
  /**
70
85
  * @private Used for internals or testing.
71
86
  */
@@ -81,72 +96,47 @@ export class Popover {
81
96
  left: `${((_a = this.anchorPosition) === null || _a === void 0 ? void 0 : _a.x) || 0}px`,
82
97
  top: `${((_b = this.anchorPosition) === null || _b === void 0 ? void 0 : _b.y) || 0}px`,
83
98
  } })), h("slot", { name: "anchor" }), h("div", { ref: (element) => (this.wrapperRef = element), class: classNames('popper', {
84
- hidden: !this.open || !this.popperRendered,
99
+ hidden: !this.open,
85
100
  open: this.open,
86
101
  }) }, h("div", { class: classNames('content', {
87
102
  'hidden-animated': !this.open && this.opened && this.animated,
88
103
  'open-animated': this.open && this.animated,
89
- }, this.getTransformClass()) }, h("slot", null)))));
104
+ }, this.getTransformClass()), onAnimationEnd: () => {
105
+ this.opened = this.open;
106
+ } }, h("slot", null)))));
90
107
  }
91
- attemptCreatePopper() {
92
- var _a, _b;
93
- (_a = this.contentResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
94
- if (this.wrapperRef != null) {
95
- const anchorSlotElement = this.getSlottedAnchorElement();
96
- if (anchorSlotElement != null) {
97
- this.createPopper(anchorSlotElement, this.wrapperRef, 'absolute', true);
98
- }
99
- else if (this.anchorPointRef != null) {
100
- this.createPopper(this.anchorPointRef, this.wrapperRef, 'fixed', false);
101
- }
102
- (_b = this.contentResizeObserver) === null || _b === void 0 ? void 0 : _b.observe(this.wrapperRef);
108
+ updateListener() {
109
+ var _a, _b, _c, _d;
110
+ const referenceElement = (_b = (_a = this.getSlottedAnchorElement()) !== null && _a !== void 0 ? _a : this.anchorPointRef) !== null && _b !== void 0 ? _b : this.getAnchorBoundsVirtualElement();
111
+ if (this.open && referenceElement != null && this.wrapperRef != null) {
112
+ (_c = this.updateDispose) === null || _c === void 0 ? void 0 : _c.call(this);
113
+ this.updateDispose = autoUpdate(referenceElement, this.wrapperRef, this.handlePositionUpdate);
114
+ this.handlePositionUpdate();
115
+ }
116
+ else {
117
+ (_d = this.updateDispose) === null || _d === void 0 ? void 0 : _d.call(this);
103
118
  }
104
119
  }
105
- createPopper(anchor, popper, strategy, offset = false) {
106
- var _a, _b, _c, _d, _e, _f, _g;
107
- if (this.open) {
108
- const boundary = this.boundarySelector != null
109
- ? document.querySelector(this.boundarySelector)
110
- : undefined;
111
- const baseModifiers = [
112
- {
113
- name: 'computeStyles',
114
- options: {
115
- gpuAcceleration: false,
116
- },
117
- },
118
- {
119
- name: 'preventOverflow',
120
- enabled: (_b = (_a = this.overflowBehavior) === null || _a === void 0 ? void 0 : _a.enabled) !== null && _b !== void 0 ? _b : true,
121
- options: Object.assign({ boundary }, (_c = this.overflowBehavior) === null || _c === void 0 ? void 0 : _c.options),
122
- },
123
- {
124
- name: 'flip',
125
- enabled: (_e = (_d = this.flipBehavior) === null || _d === void 0 ? void 0 : _d.enabled) !== null && _e !== void 0 ? _e : boundary == null,
126
- options: Object.assign({}, (_f = this.flipBehavior) === null || _f === void 0 ? void 0 : _f.options),
127
- },
128
- ];
129
- (_g = this.popper) === null || _g === void 0 ? void 0 : _g.destroy();
130
- this.popper = createPopper(anchor, popper, {
131
- placement: this.placement,
132
- strategy,
133
- modifiers: offset
134
- ? [
135
- ...baseModifiers,
136
- {
137
- name: 'offset',
138
- options: {
139
- offset: [0, 4],
140
- },
141
- },
142
- ]
143
- : [...baseModifiers],
144
- onFirstUpdate: () => {
145
- this.popperRendered = true;
146
- },
147
- });
120
+ async handlePositionUpdate() {
121
+ var _a, _b, _c;
122
+ const referenceElement = (_b = (_a = this.getSlottedAnchorElement()) !== null && _a !== void 0 ? _a : this.anchorPointRef) !== null && _b !== void 0 ? _b : this.getAnchorBoundsVirtualElement();
123
+ if (referenceElement != null && this.wrapperRef != null) {
124
+ const position = await computeUpdatedPosition(referenceElement, this.wrapperRef, this.placement, this.middleware);
125
+ this.computedPlacement = position.placement;
126
+ (_c = this.wrapperRef) === null || _c === void 0 ? void 0 : _c.setAttribute('style', `left: ${position.x}px; top: ${position.y}px;`);
148
127
  }
149
128
  }
129
+ handleMiddlewareChange() {
130
+ var _a, _b, _c;
131
+ const anchorSlotElement = (_a = this.getSlottedAnchorElement()) !== null && _a !== void 0 ? _a : this.getAnchorBoundsVirtualElement();
132
+ const offset = anchorSlotElement != null ? 4 : 0;
133
+ const boundary = this.boundarySelector != null
134
+ ? (_b = document.querySelector(this.boundarySelector)) !== null && _b !== void 0 ? _b : undefined
135
+ : undefined;
136
+ this.middleware = getDefaultMiddleware((_c = this.offsetBehavior) !== null && _c !== void 0 ? _c : offset, boundary != null
137
+ ? Object.assign({ boundary }, this.overflowBehavior) : this.overflowBehavior, this.flipBehavior);
138
+ this.updateListener();
139
+ }
150
140
  getSlottedAnchorElement() {
151
141
  var _a, _b, _c;
152
142
  if (this.anchorSelector != null) {
@@ -162,6 +152,15 @@ export class Popover {
162
152
  }
163
153
  }
164
154
  }
155
+ getAnchorBoundsVirtualElement() {
156
+ if (this.anchorBounds != null) {
157
+ return {
158
+ getBoundingClientRect: () => {
159
+ return DOMRect.fromRect(this.anchorBounds);
160
+ },
161
+ };
162
+ }
163
+ }
165
164
  handleResize() {
166
165
  if (this.resizeTimeout != null) {
167
166
  clearTimeout(this.resizeTimeout);
@@ -189,15 +188,12 @@ export class Popover {
189
188
  }
190
189
  getTransformClass() {
191
190
  if (this.animated) {
192
- switch (this.placement) {
191
+ switch (this.computedPlacement) {
193
192
  case 'top':
194
- case 'auto':
195
193
  return 'center-bottom';
196
194
  case 'top-start':
197
- case 'auto-start':
198
195
  return 'left-bottom';
199
196
  case 'top-end':
200
- case 'auto-end':
201
197
  return 'right-bottom';
202
198
  case 'bottom':
203
199
  return 'center-top';
@@ -257,7 +253,7 @@ export class Popover {
257
253
  "mutable": false,
258
254
  "complexType": {
259
255
  "original": "PopoverPlacement",
260
- "resolved": "\"auto\" | \"auto-end\" | \"auto-start\" | \"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"",
256
+ "resolved": "\"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"",
261
257
  "references": {
262
258
  "PopoverPlacement": {
263
259
  "location": "local"
@@ -268,7 +264,7 @@ export class Popover {
268
264
  "optional": false,
269
265
  "docs": {
270
266
  "tags": [],
271
- "text": "The placement of the popover at the clicked point.\nThis can be any of the following values:\n\n'top', 'top-start', 'top-end',\n'bottom', 'bottom-start', 'bottom-end',\n'right', 'right-start', 'right-end',\n'left', 'left-start', 'left-end',\n'auto', 'auto-start', or 'auto-end', and\ndefaults to 'bottom-start'.\n\nNote: placement will adjust based on the amount\nof available space, so popovers close to screen\nedges may appear in a different location."
267
+ "text": "The placement of the popover at the clicked point.\nThis can be any of the following values:\n\n'top', 'top-start', 'top-end',\n'bottom', 'bottom-start', 'bottom-end',\n'right', 'right-start', 'right-end',\n'left', 'left-start', 'left-end', and\ndefaults to 'bottom-start'.\n\nNote: placement will adjust based on the amount\nof available space, so popovers close to screen\nedges may appear in a different location."
272
268
  },
273
269
  "attribute": "placement",
274
270
  "reflect": false,
@@ -296,6 +292,28 @@ export class Popover {
296
292
  "attribute": "position",
297
293
  "reflect": false
298
294
  },
295
+ "anchorBounds": {
296
+ "type": "unknown",
297
+ "mutable": false,
298
+ "complexType": {
299
+ "original": "Pick<DOMRect, 'x' | 'y' | 'width' | 'height'>",
300
+ "resolved": "undefined | { height: number; width: number; x: number; y: number; }",
301
+ "references": {
302
+ "Pick": {
303
+ "location": "global"
304
+ },
305
+ "DOMRect": {
306
+ "location": "global"
307
+ }
308
+ }
309
+ },
310
+ "required": false,
311
+ "optional": true,
312
+ "docs": {
313
+ "tags": [],
314
+ "text": "An optional DOMRect that represents the virtual location of the\nanchor element. When provided, the popover will position based\non the specified bounds to give a similar behavior to the\n`anchorSelector` or `anchor` slot based popovers without needing\nto provide the element itself."
315
+ }
316
+ },
299
317
  "backdrop": {
300
318
  "type": "boolean",
301
319
  "mutable": false,
@@ -392,11 +410,12 @@ export class Popover {
392
410
  "type": "unknown",
393
411
  "mutable": false,
394
412
  "complexType": {
395
- "original": "PopoverOverflowBehavior",
396
- "resolved": "undefined | { enabled?: boolean | undefined; options?: Partial<Options> | undefined; }",
413
+ "original": "DetectOverflowOptions",
414
+ "resolved": "undefined | { rootBoundary?: RootBoundary | undefined; elementContext?: ElementContext | undefined; altBoundary?: boolean | undefined; padding?: Padding | undefined; boundary?: Boundary | undefined; }",
397
415
  "references": {
398
- "PopoverOverflowBehavior": {
399
- "location": "local"
416
+ "DetectOverflowOptions": {
417
+ "location": "import",
418
+ "path": "@floating-ui/dom"
400
419
  }
401
420
  }
402
421
  },
@@ -404,18 +423,19 @@ export class Popover {
404
423
  "optional": true,
405
424
  "docs": {
406
425
  "tags": [],
407
- "text": "The `overflowBehavior` prop can be provided to customize the\npopover's behavior when approaching its boundary. This maps\nto the behavior used internally with PopperJS.\nSee https://popper.js.org/docs/v2/modifiers/prevent-overflow\nfor info on what properties can be specified.\n\nIf a `boundarySelector` is provided, it will be automatically\nadded to the set of options."
426
+ "text": "The `overflowBehavior` prop can be provided to customize the\npopover's behavior when approaching its boundary. This maps\nto the behavior used internally with FloatingUI.\nSee https://floating-ui.com/docs/detectOverflow#options\nfor info on what properties can be specified.\n\nIf a `boundarySelector` is provided, it will be automatically\nadded to the set of options."
408
427
  }
409
428
  },
410
429
  "flipBehavior": {
411
430
  "type": "unknown",
412
431
  "mutable": false,
413
432
  "complexType": {
414
- "original": "PopoverFlipBehavior",
415
- "resolved": "undefined | { enabled?: boolean | undefined; options?: Partial<Options> | undefined; }",
433
+ "original": "FlipOptions",
434
+ "resolved": "undefined | { rootBoundary?: RootBoundary | undefined; elementContext?: ElementContext | undefined; altBoundary?: boolean | undefined; padding?: Padding | undefined; crossAxis?: boolean | undefined; mainAxis?: boolean | undefined; fallbackPlacements?: Placement[] | undefined; fallbackStrategy?: \"bestFit\" | \"initialPlacement\" | undefined; fallbackAxisSideDirection?: \"none\" | \"start\" | \"end\" | undefined; flipAlignment?: boolean | undefined; boundary?: Boundary | undefined; }",
416
435
  "references": {
417
- "PopoverFlipBehavior": {
418
- "location": "local"
436
+ "FlipOptions": {
437
+ "location": "import",
438
+ "path": "@floating-ui/dom"
419
439
  }
420
440
  }
421
441
  },
@@ -423,9 +443,31 @@ export class Popover {
423
443
  "optional": true,
424
444
  "docs": {
425
445
  "tags": [],
426
- "text": "The `flipBehavior` prop can be provided to customize the\npopover's behavior when approaching its boundary. This maps\nto the behavior used internally with PopperJS.\nSee https://popper.js.org/docs/v2/modifiers/flip\nfor info on what properties can be specified.\n\nIf a `boundarySelector` is provided, `flip` behavior will\nautomatically be disabled."
446
+ "text": "The `flipBehavior` prop can be provided to customize the\npopover's behavior when approaching its boundary. This maps\nto the behavior used internally with FloatingUI.\nSee https://floating-ui.com/docs/flip#options\nfor info on what properties can be specified.\n\nIf a `boundarySelector` is provided, `flip` behavior will\nautomatically be disabled."
427
447
  }
428
448
  },
449
+ "offsetBehavior": {
450
+ "type": "number",
451
+ "mutable": false,
452
+ "complexType": {
453
+ "original": "OffsetOptions",
454
+ "resolved": "((state: { x: number; y: number; initialPlacement: Placement; platform: Platform; placement: Placement; strategy: Strategy; middlewareData: MiddlewareData; rects: ElementRects; elements: Elements; }) => OffsetValue) | number | undefined | { mainAxis?: number | undefined; crossAxis?: number | undefined; alignmentAxis?: number | null | undefined; }",
455
+ "references": {
456
+ "OffsetOptions": {
457
+ "location": "import",
458
+ "path": "@floating-ui/dom"
459
+ }
460
+ }
461
+ },
462
+ "required": false,
463
+ "optional": true,
464
+ "docs": {
465
+ "tags": [],
466
+ "text": "The `offsetBehavior` prop can be provided to customize the\npopover's visual offset from the anchor. This maps\nto the behavior used internally with FloatingUI.\nSee https://floating-ui.com/docs/offset#options\nfor info on what properties can be specified.\n\nIf no offset is specified, a default of 4px will be used\nfor popovers anchored to an element and no offset will be\napplied for popovers anchored to a point."
467
+ },
468
+ "attribute": "offset-behavior",
469
+ "reflect": false
470
+ },
429
471
  "updateOnResize": {
430
472
  "type": "boolean",
431
473
  "mutable": false,
@@ -443,38 +485,13 @@ export class Popover {
443
485
  "attribute": "update-on-resize",
444
486
  "reflect": false,
445
487
  "defaultValue": "false"
446
- },
447
- "contentResizeObserverFactory": {
448
- "type": "unknown",
449
- "mutable": false,
450
- "complexType": {
451
- "original": "(\n cb: (entries: ResizeObserverEntry[]) => void\n ) => ResizeObserver",
452
- "resolved": "(cb: (entries: ResizeObserverEntry[]) => void) => ResizeObserver",
453
- "references": {
454
- "ResizeObserverEntry": {
455
- "location": "global"
456
- },
457
- "ResizeObserver": {
458
- "location": "global"
459
- }
460
- }
461
- },
462
- "required": false,
463
- "optional": false,
464
- "docs": {
465
- "tags": [{
466
- "name": "internal",
467
- "text": undefined
468
- }],
469
- "text": ""
470
- },
471
- "defaultValue": "(cb) => new ResizeObserver(cb)"
472
488
  }
473
489
  };
474
490
  }
475
491
  static get states() {
476
492
  return {
477
- "popperRendered": {}
493
+ "opened": {},
494
+ "computedPlacement": {}
478
495
  };
479
496
  }
480
497
  static get events() {
@@ -500,12 +517,27 @@ export class Popover {
500
517
  return [{
501
518
  "propName": "position",
502
519
  "methodName": "updatePosition"
520
+ }, {
521
+ "propName": "placement",
522
+ "methodName": "updatePlacement"
503
523
  }, {
504
524
  "propName": "open",
505
525
  "methodName": "updateOpened"
506
526
  }, {
507
527
  "propName": "animated",
508
528
  "methodName": "updateAnimated"
529
+ }, {
530
+ "propName": "boundarySelector",
531
+ "methodName": "updateMiddleware"
532
+ }, {
533
+ "propName": "overflowBehavior",
534
+ "methodName": "updateMiddleware"
535
+ }, {
536
+ "propName": "flipBehavior",
537
+ "methodName": "updateMiddleware"
538
+ }, {
539
+ "propName": "offsetBehavior",
540
+ "methodName": "updateMiddleware"
509
541
  }];
510
542
  }
511
543
  }
@@ -0,0 +1,9 @@
1
+ import { computePosition, } from '@floating-ui/dom';
2
+ export async function computeUpdatedPosition(referenceElement, contentElement, placement, middleware) {
3
+ const position = await computePosition(referenceElement, contentElement, {
4
+ placement,
5
+ middleware,
6
+ strategy: 'fixed',
7
+ });
8
+ return position;
9
+ }
@@ -294,7 +294,7 @@ export class ResultList {
294
294
  "mutable": false,
295
295
  "complexType": {
296
296
  "original": "PopoverPlacement",
297
- "resolved": "\"auto\" | \"auto-end\" | \"auto-start\" | \"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"",
297
+ "resolved": "\"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"",
298
298
  "references": {
299
299
  "PopoverPlacement": {
300
300
  "location": "import",
@@ -396,7 +396,7 @@ export class SearchBar {
396
396
  "mutable": false,
397
397
  "complexType": {
398
398
  "original": "PopoverPlacement",
399
- "resolved": "\"auto\" | \"auto-end\" | \"auto-start\" | \"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"",
399
+ "resolved": "\"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"",
400
400
  "references": {
401
401
  "PopoverPlacement": {
402
402
  "location": "import",
@@ -23,6 +23,10 @@
23
23
  display: flex;
24
24
  }
25
25
 
26
+ .content-hidden {
27
+ display: none;
28
+ }
29
+
26
30
  .tooltip {
27
31
  display: flex;
28
32
  justify-content: center;
@@ -1,5 +1,8 @@
1
- import { h } from '@stencil/core';
1
+ import { h, Host } from '@stencil/core';
2
+ import { UUID } from '@vertexvis/utils';
2
3
  import classNames from 'classnames';
4
+ import { getBoundingClientRect } from '../../util/components/dom';
5
+ import { getSlottedContent } from '../../util/components/slots';
3
6
  const TOOLTIP_OPEN_DELAY = 500;
4
7
  export class Tooltip {
5
8
  constructor() {
@@ -11,21 +14,73 @@ export class Tooltip {
11
14
  this.open = false;
12
15
  this.handlePointerEnter = this.handlePointerEnter.bind(this);
13
16
  this.handlePointerLeave = this.handlePointerLeave.bind(this);
17
+ this.tooltipId = `vertex-tooltip-${UUID.create()}`;
18
+ }
19
+ disconnectedCallback() {
20
+ this.removeElement();
21
+ this.clearOpenTimeout();
14
22
  }
15
23
  render() {
24
+ return (h(Host, null, h("div", { class: "target", ref: (el) => {
25
+ this.targetElement = el;
26
+ }, onPointerEnter: this.handlePointerEnter, onPointerLeave: this.handlePointerLeave }, h("slot", null)), h("div", { class: "content-hidden", ref: (el) => {
27
+ this.contentElement = el;
28
+ } }, h("slot", { name: "content" }))));
29
+ }
30
+ addElement() {
16
31
  var _a;
17
- return (h("vertex-popover", { class: "popover", open: this.open, resizeBehavior: "fixed", backdrop: false, placement: this.placement, animated: this.animated }, h("div", { slot: "anchor", class: "target", onPointerEnter: this.handlePointerEnter, onPointerLeave: this.handlePointerLeave }, h("slot", null)), h("div", { class: classNames('tooltip', { hidden: !this.open || this.disabled }) }, (_a = this.content) !== null && _a !== void 0 ? _a : h("slot", { name: "content" }))));
32
+ if (this.targetElement != null) {
33
+ const popover = this.createPopoverElement(this.targetElement);
34
+ const content = this.createContentElement();
35
+ this.displayedSlottedContent =
36
+ (_a = getSlottedContent(this.contentElement)) !== null && _a !== void 0 ? _a : this.displayedSlottedContent;
37
+ if (this.content != null) {
38
+ content.innerText = this.content;
39
+ }
40
+ else if (this.displayedSlottedContent != null) {
41
+ content.appendChild(this.displayedSlottedContent);
42
+ }
43
+ popover.appendChild(content);
44
+ this.hostElement.ownerDocument.body.appendChild(popover);
45
+ }
46
+ }
47
+ removeElement() {
48
+ const popover = this.hostElement.ownerDocument.getElementById(this.tooltipId);
49
+ if (popover != null) {
50
+ popover.remove();
51
+ }
52
+ }
53
+ createPopoverElement(anchorElement) {
54
+ const popover = this.hostElement.ownerDocument.createElement('vertex-popover');
55
+ popover.id = this.tooltipId;
56
+ popover.setAttribute('class', 'vertex-tooltip-popover');
57
+ popover.open = this.open;
58
+ popover.resizeBehavior = 'fixed';
59
+ popover.backdrop = false;
60
+ popover.placement = this.placement;
61
+ popover.animated = this.animated;
62
+ popover.anchorBounds = getBoundingClientRect(anchorElement);
63
+ return popover;
64
+ }
65
+ createContentElement() {
66
+ const content = this.hostElement.ownerDocument.createElement('div');
67
+ content.setAttribute('class', classNames('vertex-tooltip-content', {
68
+ hidden: !this.open || this.disabled,
69
+ }));
70
+ return content;
18
71
  }
19
72
  handlePointerEnter() {
20
- if (this.openTimeout == null) {
73
+ if (this.openTimeout == null && !this.disabled) {
21
74
  this.openTimeout = setTimeout(() => {
22
75
  this.open = true;
23
76
  this.openTimeout = undefined;
77
+ this.addElement();
24
78
  }, this.delay);
25
79
  }
26
80
  }
27
81
  handlePointerLeave() {
28
82
  this.clearOpenTimeout();
83
+ this.removeElement();
29
84
  this.open = false;
30
85
  }
31
86
  clearOpenTimeout() {
@@ -87,7 +142,7 @@ export class Tooltip {
87
142
  "mutable": false,
88
143
  "complexType": {
89
144
  "original": "PopoverPlacement",
90
- "resolved": "\"auto\" | \"auto-end\" | \"auto-start\" | \"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"",
145
+ "resolved": "\"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"",
91
146
  "references": {
92
147
  "PopoverPlacement": {
93
148
  "location": "import",
@@ -148,4 +203,5 @@ export class Tooltip {
148
203
  "open": {}
149
204
  };
150
205
  }
206
+ static get elementRef() { return "hostElement"; }
151
207
  }
@@ -0,0 +1,10 @@
1
+ import { readTask } from '@stencil/core';
2
+ export function readDOM(callback) {
3
+ readTask(callback);
4
+ }
5
+ export function getBoundingClientRect(el) {
6
+ return el.getBoundingClientRect();
7
+ }
8
+ export function getComputedStyle(el) {
9
+ return window.getComputedStyle(el);
10
+ }
@@ -10,3 +10,15 @@ export function getFirstSlottedElement({ hostElement, slotName, selector, }) {
10
10
  }
11
11
  }
12
12
  }
13
+ export function getSlottedContent(slotOrParentElement) {
14
+ const slot = isSlotElement(slotOrParentElement)
15
+ ? slotOrParentElement
16
+ : slotOrParentElement === null || slotOrParentElement === void 0 ? void 0 : slotOrParentElement.querySelector('slot');
17
+ if (slot != null) {
18
+ return slot.assignedElements()[0];
19
+ }
20
+ return undefined;
21
+ }
22
+ function isSlotElement(element) {
23
+ return (element === null || element === void 0 ? void 0 : element.tagName) === 'SLOT';
24
+ }
@@ -1,2 +1,2 @@
1
- .sc-vertex-textfield-h{display:block}.txt-wrapper{display:flex;align-items:center;width:100%;box-sizing:border-box;background:none;border:1px solid transparent;border-radius:4px;font-family:var(--vertex-ui-font-family);line-height:1.4}.txt-slot{padding-bottom:1px}.txt{width:100%;box-sizing:border-box;padding:6px 0.5em 7px;border:1px solid transparent;background:none;font-family:var(--vertex-ui-font-family);font-weight:var(--vertex-ui-font-weight-base);line-height:1.4;text-overflow:ellipsis}.txt-textarea{overflow:hidden;outline:none;box-shadow:none;resize:none}.txt:focus{outline:none}@keyframes onAutoFillStart{from{}to{}}@keyframes onAutoFillCancel{from{}to{}}.txt:-webkit-autofill{animation-name:onAutoFillStart}.txt:not(.txt:-webkit-autofill){animation-name:onAutoFillCancel}.txt-standard{border-color:var(--vertex-ui-neutral-400);color:var(--vertex-ui-neutral-800)}.txt-standard .txt::placeholder{color:var(--vertex-ui-neutral-500)}.txt-standard:hover:not(.disabled),.txt-standard:focus{border-color:var(--vertex-ui-neutral-500)}.txt-standard.disabled{border-color:var(--vertex-ui-neutral-200)}.txt-standard.disabled,.txt-standard.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-blank{color:var(--vertex-ui-neutral-800)}.txt-blank:not(:hover) .txt:focus{border-color:var(--vertex-ui-neutral-400);border-radius:4px}.txt-blank .txt::placeholder{color:var(--vertex-ui-neutral-500)}.txt-blank:hover:not(.disabled) .txt{border-color:var(--vertex-ui-neutral-400);border-radius:4px}.txt-filled{background-color:var(--vertex-ui-neutral-200);border-color:var(--vertex-ui-neutral-200);color:var(--vertex-ui-neutral-800)}.txt-filled.disabled,.txt-filled.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-filled .txt::placeholder{color:var(--vertex-ui-neutral-700)}.txt-filled:hover:not(.disabled),.txt-filled:focus{border-bottom-color:var(--vertex-ui-blue-600)}.txt-filled.disabled{border-color:var(--vertex-ui-neutral-100)}.txt-filled.disabled,.txt-filled.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined{background-color:var(--vertex-ui-white);border-color:var(--vertex-ui-white) var(--vertex-ui-white) var(--vertex-ui-neutral-400) var(--vertex-ui-white);color:var(--vertex-ui-neutral-800)}.txt-underlined.disabled,.txt-underlined.disabled::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined::placeholder{color:var(--vertex-ui-neutral-700)}.txt-underlined:hover:not(.disabled),.txt-underlined:focus{background-color:var(--vertex-ui-neutral-200);border-color:var(--vertex-ui-neutral-200);border-bottom-color:var(--vertex-ui-blue-600)}.txt-underlined.disabled{border-bottom-color:var(--vertex-ui-neutral-200)}.txt-underlined.disabled,.txt-underlined.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined.has-error{border-bottom-color:var(--vertex-ui-red-600)}.txt-filled.has-error,.txt-blank.has-error,.txt-standard.has-error{border-color:var(--vertex-ui-red-600)}.txt-size-standard{font-size:var(--vertex-ui-text-base)}.txt-size-sm{font-size:var(--vertex-ui-text-sm)}.txt-size-md{font-size:var(--vertex-ui-text-md)}.txt-size-lg{font-size:var(--vertex-ui-text-lg)}.txt-size-xl{font-size:var(--vertex-ui-text-xl)}.txt-size-xxl{font-size:var(--vertex-ui-text-xxl)}.click-to-edit{display:flex;flex-direction:row}.click-to-edit-text{width:100%}.icon-visibility{display:none}.click-to-edit:not(.disabled):hover .icon-visibility{display:block}.click-to-edit-icon-wrapper{display:flex;align-items:center;flex-shrink:0;vertical-align:middle;margin-left:5px}.hover-icon slot::slotted(*){height:1rem;width:1rem;padding-left:0.5rem}.click-to-edit-button{border-radius:4px;background-color:var(--neutral-200);color:var(--green-700)}.click-to-edit-button:hover{background-color:var(--neutral-300);color:var(--green-800)}:root{--vertex-ui-white:#ffffff;--vertex-ui-black:#000000}:root{--vertex-ui-neutral-050:#fafafa;--vertex-ui-neutral-100:#f5f5f5;--vertex-ui-neutral-200:#eeeeee;--vertex-ui-neutral-300:#e0e0e0;--vertex-ui-neutral-400:#bdbdbd;--vertex-ui-neutral-500:#9e9e9e;--vertex-ui-neutral-600:#757575;--vertex-ui-neutral-700:#616161;--vertex-ui-neutral-800:#444444;--vertex-ui-neutral-900:#212121}:root{--vertex-ui-red-050:#fff7f7;--vertex-ui-red-100:#ffefef;--vertex-ui-red-200:#ffe0e0;--vertex-ui-red-300:#ffb3b3;--vertex-ui-red-400:#ff4d4d;--vertex-ui-red-500:#ff0000;--vertex-ui-red-600:#eb0000;--vertex-ui-red-700:#d90000;--vertex-ui-red-800:#c40000;--vertex-ui-red-900:#990000}:root{--vertex-ui-orange-050:#fffcf7;--vertex-ui-orange-100:#fff9ef;--vertex-ui-orange-200:#fff3e0;--vertex-ui-orange-300:#ffe0b3;--vertex-ui-orange-400:#ffb84d;--vertex-ui-orange-500:#ff9900;--vertex-ui-orange-600:#ff8400;--vertex-ui-orange-700:#ff7300;--vertex-ui-orange-800:#e05d00;--vertex-ui-orange-900:#993b00}:root{--vertex-ui-yellow-050:#fffef7;--vertex-ui-yellow-100:#fffdef;--vertex-ui-yellow-200:#fffbe0;--vertex-ui-yellow-300:#fff5b3;--vertex-ui-yellow-400:#ffee6e;--vertex-ui-yellow-500:#ffe600;--vertex-ui-yellow-600:#ffd300;--vertex-ui-yellow-700:#ffc500;--vertex-ui-yellow-800:#cc8f00;--vertex-ui-yellow-900:#995c00}:root{--vertex-ui-green-050:#f7fdf7;--vertex-ui-green-100:#effcef;--vertex-ui-green-200:#e0f9e0;--vertex-ui-green-300:#b3f0b3;--vertex-ui-green-400:#4ddb4d;--vertex-ui-green-500:#00cc00;--vertex-ui-green-600:#00c000;--vertex-ui-green-700:#00ad00;--vertex-ui-green-800:#008000;--vertex-ui-green-900:#004d00}:root{--vertex-ui-teal-050:#f8fdfc;--vertex-ui-teal-100:#f1fbfa;--vertex-ui-teal-200:#e4f7f5;--vertex-ui-teal-300:#bcece7;--vertex-ui-teal-400:#62d2c7;--vertex-ui-teal-500:#1fbeaf;--vertex-ui-teal-600:#17af9f;--vertex-ui-teal-700:#0a9986;--vertex-ui-teal-800:#07705f;--vertex-ui-teal-900:#054d43}:root{--vertex-ui-blue-050:#f7fcfd;--vertex-ui-blue-100:#eff9fc;--vertex-ui-blue-200:#e0f3f9;--vertex-ui-blue-300:#b3e0f0;--vertex-ui-blue-400:#4db8db;--vertex-ui-blue-500:#0099cc;--vertex-ui-blue-600:#0086c0;--vertex-ui-blue-700:#006bad;--vertex-ui-blue-800:#004f80;--vertex-ui-blue-900:#002f4d}:root{--vertex-ui-purple-050:#fdf9fc;--vertex-ui-purple-100:#faf2f8;--vertex-ui-purple-200:#f6e6f2;--vertex-ui-purple-300:#e9c2e0;--vertex-ui-purple-400:#cb70b6;--vertex-ui-purple-500:#b43296;--vertex-ui-purple-600:#a42683;--vertex-ui-purple-700:#8c1368;--vertex-ui-purple-800:#66124b;--vertex-ui-purple-900:#4d0b39}:root{--vertex-ui-text-t:0.5625rem;--vertex-ui-text-xxs:0.625rem;--vertex-ui-text-xs:0.75rem;--vertex-ui-text-sm:0.8125rem;--vertex-ui-text-base:0.875rem;--vertex-ui-text-md:0.9375rem;--vertex-ui-text-lg:1rem;--vertex-ui-text-xl:1.125rem;--vertex-ui-text-xxl:1.25rem}:root{--vertex-ui-font-weight-light:300;--vertex-ui-font-weight-base:400;--vertex-ui-font-weight-medium:500;--vertex-ui-font-weight-bold:700}:root{--vertex-ui-font-family:'Roboto', 'Helvetica Neue', Helvetica, sans-serif}:root{--vertex-ui-popover-layer:2000;--vertex-ui-context-menu-layer:11000;--vertex-ui-dialog-layer:15000}:root{--vertex-ui-overlay-shadow:-1px 0 2px rgba(0, 0, 0, 0.12),
1
+ .sc-vertex-textfield-h{display:block}.txt-wrapper{display:flex;align-items:center;width:100%;box-sizing:border-box;background:none;border:1px solid transparent;border-radius:4px;font-family:var(--vertex-ui-font-family);line-height:1.4}.txt-slot{padding-bottom:1px}.txt{width:100%;box-sizing:border-box;padding:6px 0.5em 7px;border:1px solid transparent;background:none;font-family:var(--vertex-ui-font-family);font-weight:var(--vertex-ui-font-weight-base);line-height:1.4;text-overflow:ellipsis}.txt-textarea{overflow:hidden;outline:none;box-shadow:none;resize:none}.txt:focus{outline:none}@keyframes onAutoFillStart{from{}to{}}@keyframes onAutoFillCancel{from{}to{}}.txt:-webkit-autofill{animation-name:onAutoFillStart}.txt:not(.txt:-webkit-autofill){animation-name:onAutoFillCancel}.txt-standard{border-color:var(--vertex-ui-neutral-400);color:var(--vertex-ui-neutral-800)}.txt-standard .txt::placeholder{color:var(--vertex-ui-neutral-500)}.txt-standard:hover:not(.disabled),.txt-standard:focus{border-color:var(--vertex-ui-neutral-500)}.txt-standard.disabled{border-color:var(--vertex-ui-neutral-200)}.txt-standard.disabled,.txt-standard.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-blank{color:var(--vertex-ui-neutral-800)}.txt-blank:not(:hover) .txt:focus{border-color:var(--vertex-ui-neutral-400);border-radius:4px}.txt-blank .txt::placeholder{color:var(--vertex-ui-neutral-500)}.txt-blank:hover:not(.disabled) .txt{border-color:var(--vertex-ui-neutral-400);border-radius:4px}.txt-filled{background-color:var(--vertex-ui-neutral-200);border-color:var(--vertex-ui-neutral-200);color:var(--vertex-ui-neutral-800)}.txt-filled.disabled,.txt-filled.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-filled .txt::placeholder{color:var(--vertex-ui-neutral-700)}.txt-filled:hover:not(.disabled),.txt-filled:focus{border-bottom-color:var(--vertex-ui-blue-600)}.txt-filled.disabled{border-color:var(--vertex-ui-neutral-100)}.txt-filled.disabled,.txt-filled.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined{background-color:var(--vertex-ui-white);border-color:var(--vertex-ui-white) var(--vertex-ui-white) var(--vertex-ui-neutral-400) var(--vertex-ui-white);color:var(--vertex-ui-neutral-800)}.txt-underlined.disabled,.txt-underlined.disabled::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined::placeholder{color:var(--vertex-ui-neutral-700)}.txt-underlined:hover:not(.disabled),.txt-underlined:focus{background-color:var(--vertex-ui-neutral-200);border-color:var(--vertex-ui-neutral-200);border-bottom-color:var(--vertex-ui-blue-600)}.txt-underlined.disabled{border-bottom-color:var(--vertex-ui-neutral-200)}.txt-underlined.disabled,.txt-underlined.disabled .txt::placeholder{color:var(--vertex-ui-neutral-400)}.txt-underlined.has-error{border-bottom-color:var(--vertex-ui-red-600)}.txt-filled.has-error,.txt-blank.has-error,.txt-standard.has-error{border-color:var(--vertex-ui-red-600)}.txt-size-standard{font-size:var(--vertex-ui-text-base)}.txt-size-sm{font-size:var(--vertex-ui-text-sm)}.txt-size-md{font-size:var(--vertex-ui-text-md)}.txt-size-lg{font-size:var(--vertex-ui-text-lg)}.txt-size-xl{font-size:var(--vertex-ui-text-xl)}.txt-size-xxl{font-size:var(--vertex-ui-text-xxl)}.click-to-edit{display:flex;flex-direction:row}.click-to-edit-text{width:100%}.icon-visibility{display:none}.click-to-edit:not(.disabled):hover .icon-visibility{display:block}.click-to-edit-icon-wrapper{display:flex;align-items:center;flex-shrink:0;vertical-align:middle;margin-left:5px}.hover-icon slot::slotted(*){height:1rem;width:1rem;padding-left:0.5rem}.click-to-edit-button{border-radius:4px;background-color:var(--neutral-200);color:var(--green-700)}.click-to-edit-button:hover{background-color:var(--neutral-300);color:var(--green-800)}vertex-tooltip:not(.hydrated){display:none}.vertex-tooltip-popover{width:100%;height:100%}.vertex-tooltip-content{display:flex;justify-content:center;text-align:center;width:var(--tooltip-width);font-family:var(--vertex-ui-font-family);font-size:var(--vertex-ui-text-xxs);background-color:var(--vertex-ui-neutral-700);color:var(--vertex-ui-white);padding:0.25rem 0.5rem;border-radius:4px;pointer-events:none;white-space:var(--tooltip-white-space);user-select:none}:root{--vertex-ui-white:#ffffff;--vertex-ui-black:#000000}:root{--vertex-ui-neutral-050:#fafafa;--vertex-ui-neutral-100:#f5f5f5;--vertex-ui-neutral-200:#eeeeee;--vertex-ui-neutral-300:#e0e0e0;--vertex-ui-neutral-400:#bdbdbd;--vertex-ui-neutral-500:#9e9e9e;--vertex-ui-neutral-600:#757575;--vertex-ui-neutral-700:#616161;--vertex-ui-neutral-800:#444444;--vertex-ui-neutral-900:#212121}:root{--vertex-ui-red-050:#fff7f7;--vertex-ui-red-100:#ffefef;--vertex-ui-red-200:#ffe0e0;--vertex-ui-red-300:#ffb3b3;--vertex-ui-red-400:#ff4d4d;--vertex-ui-red-500:#ff0000;--vertex-ui-red-600:#eb0000;--vertex-ui-red-700:#d90000;--vertex-ui-red-800:#c40000;--vertex-ui-red-900:#990000}:root{--vertex-ui-orange-050:#fffcf7;--vertex-ui-orange-100:#fff9ef;--vertex-ui-orange-200:#fff3e0;--vertex-ui-orange-300:#ffe0b3;--vertex-ui-orange-400:#ffb84d;--vertex-ui-orange-500:#ff9900;--vertex-ui-orange-600:#ff8400;--vertex-ui-orange-700:#ff7300;--vertex-ui-orange-800:#e05d00;--vertex-ui-orange-900:#993b00}:root{--vertex-ui-yellow-050:#fffef7;--vertex-ui-yellow-100:#fffdef;--vertex-ui-yellow-200:#fffbe0;--vertex-ui-yellow-300:#fff5b3;--vertex-ui-yellow-400:#ffee6e;--vertex-ui-yellow-500:#ffe600;--vertex-ui-yellow-600:#ffd300;--vertex-ui-yellow-700:#ffc500;--vertex-ui-yellow-800:#cc8f00;--vertex-ui-yellow-900:#995c00}:root{--vertex-ui-green-050:#f7fdf7;--vertex-ui-green-100:#effcef;--vertex-ui-green-200:#e0f9e0;--vertex-ui-green-300:#b3f0b3;--vertex-ui-green-400:#4ddb4d;--vertex-ui-green-500:#00cc00;--vertex-ui-green-600:#00c000;--vertex-ui-green-700:#00ad00;--vertex-ui-green-800:#008000;--vertex-ui-green-900:#004d00}:root{--vertex-ui-teal-050:#f8fdfc;--vertex-ui-teal-100:#f1fbfa;--vertex-ui-teal-200:#e4f7f5;--vertex-ui-teal-300:#bcece7;--vertex-ui-teal-400:#62d2c7;--vertex-ui-teal-500:#1fbeaf;--vertex-ui-teal-600:#17af9f;--vertex-ui-teal-700:#0a9986;--vertex-ui-teal-800:#07705f;--vertex-ui-teal-900:#054d43}:root{--vertex-ui-blue-050:#f7fcfd;--vertex-ui-blue-100:#eff9fc;--vertex-ui-blue-200:#e0f3f9;--vertex-ui-blue-300:#b3e0f0;--vertex-ui-blue-400:#4db8db;--vertex-ui-blue-500:#0099cc;--vertex-ui-blue-600:#0086c0;--vertex-ui-blue-700:#006bad;--vertex-ui-blue-800:#004f80;--vertex-ui-blue-900:#002f4d}:root{--vertex-ui-purple-050:#fdf9fc;--vertex-ui-purple-100:#faf2f8;--vertex-ui-purple-200:#f6e6f2;--vertex-ui-purple-300:#e9c2e0;--vertex-ui-purple-400:#cb70b6;--vertex-ui-purple-500:#b43296;--vertex-ui-purple-600:#a42683;--vertex-ui-purple-700:#8c1368;--vertex-ui-purple-800:#66124b;--vertex-ui-purple-900:#4d0b39}:root{--vertex-ui-text-t:0.5625rem;--vertex-ui-text-xxs:0.625rem;--vertex-ui-text-xs:0.75rem;--vertex-ui-text-sm:0.8125rem;--vertex-ui-text-base:0.875rem;--vertex-ui-text-md:0.9375rem;--vertex-ui-text-lg:1rem;--vertex-ui-text-xl:1.125rem;--vertex-ui-text-xxl:1.25rem}:root{--vertex-ui-font-weight-light:300;--vertex-ui-font-weight-base:400;--vertex-ui-font-weight-medium:500;--vertex-ui-font-weight-bold:700}:root{--vertex-ui-font-family:'Roboto', 'Helvetica Neue', Helvetica, sans-serif}:root{--vertex-ui-popover-layer:2000;--vertex-ui-context-menu-layer:11000;--vertex-ui-dialog-layer:15000}:root{--vertex-ui-overlay-shadow:-1px 0 2px rgba(0, 0, 0, 0.12),
2
2
  1px 0 2px rgba(0, 0, 0, 0.13)}@media (min-width: 812px){:root{--vertex-ui-min-dialog-width:700px;--vertex-ui-min-dialog-height:500px}}