@turquoisehealth/pit-viper 2.109.0 → 2.109.2

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 (56) hide show
  1. package/_site/assets/js/pit-viper.js +43 -21
  2. package/package.json +1 -1
  3. package/pv-components/dist/stats/vue/base/stats.html +4949 -0
  4. package/pv-components/dist/stats/vue/visualizations/stats.html +4949 -0
  5. package/pv-components/dist/stats/web/pv-accordion-stats.html +4949 -0
  6. package/pv-components/dist/stats/web/pv-action-bar-stats.html +4949 -0
  7. package/pv-components/dist/stats/web/pv-avatar-group-stats.html +4949 -0
  8. package/pv-components/dist/stats/web/pv-avatar-stats.html +4949 -0
  9. package/pv-components/dist/stats/web/pv-banner-stats.html +4949 -0
  10. package/pv-components/dist/stats/web/pv-breadcrumbs-stats.html +4949 -0
  11. package/pv-components/dist/stats/web/pv-button-stats.html +4949 -0
  12. package/pv-components/dist/stats/web/pv-card-stats.html +4949 -0
  13. package/pv-components/dist/stats/web/pv-checkbox-stats.html +4949 -0
  14. package/pv-components/dist/stats/web/pv-company-label-stats.html +4949 -0
  15. package/pv-components/dist/stats/web/pv-company-logo-stats.html +4949 -0
  16. package/pv-components/dist/stats/web/pv-company-tag-stats.html +4949 -0
  17. package/pv-components/dist/stats/web/pv-counter-badge-stats.html +4949 -0
  18. package/pv-components/dist/stats/web/pv-date-picker-stats.html +4949 -0
  19. package/pv-components/dist/stats/web/pv-date-time-stats.html +4949 -0
  20. package/pv-components/dist/stats/web/pv-drawer-stats.html +4949 -0
  21. package/pv-components/dist/stats/web/pv-dropdown-stats.html +4949 -0
  22. package/pv-components/dist/stats/web/pv-expandable-content-stats.html +4949 -0
  23. package/pv-components/dist/stats/web/pv-ghost-input-stats.html +4949 -0
  24. package/pv-components/dist/stats/web/pv-icon-stats.html +4949 -0
  25. package/pv-components/dist/stats/web/pv-input-stats.html +4949 -0
  26. package/pv-components/dist/stats/web/pv-insight-card-stats.html +4949 -0
  27. package/pv-components/dist/stats/web/pv-modal-stats.html +4949 -0
  28. package/pv-components/dist/stats/web/pv-multi-select-button-stats.html +4949 -0
  29. package/pv-components/dist/stats/web/pv-option-stats.html +4949 -0
  30. package/pv-components/dist/stats/web/pv-pagination-stats.html +4949 -0
  31. package/pv-components/dist/stats/web/pv-pill-stats.html +4949 -0
  32. package/pv-components/dist/stats/web/pv-popover-menu-stats.html +4949 -0
  33. package/pv-components/dist/stats/web/pv-popover-stats.html +4949 -0
  34. package/pv-components/dist/stats/web/pv-popover-v2-stats.html +4949 -0
  35. package/pv-components/dist/stats/web/pv-rating-stats.html +4949 -0
  36. package/pv-components/dist/stats/web/pv-release-badge-stats.html +4949 -0
  37. package/pv-components/dist/stats/web/pv-search-input-stats.html +4949 -0
  38. package/pv-components/dist/stats/web/pv-segmented-control-stats.html +4949 -0
  39. package/pv-components/dist/stats/web/pv-select-button-stats.html +4949 -0
  40. package/pv-components/dist/stats/web/pv-selectable-card-stats.html +4949 -0
  41. package/pv-components/dist/stats/web/pv-side-panel-stats.html +4949 -0
  42. package/pv-components/dist/stats/web/pv-skeleton-stats.html +4949 -0
  43. package/pv-components/dist/stats/web/pv-spinner-stats.html +4949 -0
  44. package/pv-components/dist/stats/web/pv-sprite-stats.html +4949 -0
  45. package/pv-components/dist/stats/web/pv-suggestion-tag-stats.html +4949 -0
  46. package/pv-components/dist/stats/web/pv-switch-stats.html +4949 -0
  47. package/pv-components/dist/stats/web/pv-tab-list-stats.html +4949 -0
  48. package/pv-components/dist/stats/web/pv-tabs-stats.html +4949 -0
  49. package/pv-components/dist/stats/web/pv-tag-stats.html +4949 -0
  50. package/pv-components/dist/stats/web/pv-text-area-stats.html +4949 -0
  51. package/pv-components/dist/stats/web/pv-toast-stats.html +4949 -0
  52. package/pv-components/dist/stats/web/pv-toggle-button-stats.html +4949 -0
  53. package/pv-components/dist/stats/web/pv-toggle-group-stats.html +4949 -0
  54. package/pv-components/dist/stats/web/pv-tooltip-stats.html +4949 -0
  55. package/pv-components/dist/stats/web/pv-tooltip-v2-stats.html +4949 -0
  56. package/pv-components/dist/stats/web/pv-widget-stats.html +4949 -0
@@ -191,7 +191,7 @@ class PVAutoClose extends HTMLElement {
191
191
  this.minimizeButton?.addEventListener('click', (e) => this.toggleSidebar(e.currentTarget));
192
192
  this.addEventListener('mouseenter', () => this.handleHoverIn());
193
193
  this.addEventListener('mouseleave', () => this.handleHoverOut());
194
- document.addEventListener('click', (e) => this.handleMenuClick(e));
194
+ document.addEventListener('click', (e) => this.globalNavClickHandler(e));
195
195
  // if data-collapsed is not set, add data-expanded by default
196
196
  if (!this.layout.hasAttribute('data-collapsed') && !this.layout.hasAttribute('data-expanded')) {
197
197
  this.setState({ 'data-collapsed': false, 'data-expanded': true });
@@ -260,23 +260,20 @@ class PVAutoClose extends HTMLElement {
260
260
 
261
261
  handleHoverIn() {
262
262
  clearTimeout(this.hoverTimeout);
263
- if (this.layout.hasAttribute('data-collapsed')) {
264
- this.hoverTimeout = setTimeout(() => {
265
- if (window.innerWidth < 768) {
266
- this.layout.removeAttribute('data-collapsed');
267
- this.layout.setAttribute('data-floating', '');
268
- } else {
269
- this.hoverExpandState();
270
- }
271
- }, 200);
272
- }
263
+ this.hoverTimeout = setTimeout(() => {
264
+ if (window.innerWidth < 768) {
265
+ this.layout.removeAttribute('data-collapsed');
266
+ this.layout.setAttribute('data-floating', '');
267
+ } else if (this.layout.hasAttribute('data-collapsed')) {
268
+ this.hoverExpandState();
269
+ }
270
+ }, 200);
273
271
  }
274
272
 
275
273
  handleHoverOut() {
276
274
  clearTimeout(this.hoverTimeout);
277
275
  if (this.layout.hasAttribute('data-floating') && !this.hasOpenMenu()) {
278
276
  this.layout.removeAttribute('data-floating');
279
- this.layout.setAttribute('data-collapsed', '');
280
277
  } else if (!this.layout.hasAttribute('data-collapsed') && !this.layout.hasAttribute('data-expanded') && !this.hasOpenMenu()) {
281
278
  this.hoverCollapseState();
282
279
  }
@@ -286,24 +283,49 @@ class PVAutoClose extends HTMLElement {
286
283
  return this.querySelector('.pv-popover-menu[data-active]') !== null;
287
284
  }
288
285
 
289
- handleMenuClick(event) {
286
+ toggleMenu(menu) {
287
+ const isActive = menu.hasAttribute('data-active');
288
+ if (isActive) {
289
+ menu.removeAttribute('data-active');
290
+ } else {
291
+ menu.setAttribute('data-active', '');
292
+ }
293
+ }
294
+
295
+ globalNavClickHandler(event) {
296
+ const inSidebar = this.contains(event.target);
297
+ const insideMenu = event.target.closest('.pv-popover');
290
298
  const clickedMenu = event.target.closest('.pv-popover-menu');
291
299
  const allMenus = this.querySelectorAll('.pv-popover-menu');
292
300
 
301
+ // if we are inside a menu (not the trigger), do nothing
302
+ if (insideMenu) {
303
+ return;
304
+ }
305
+
306
+ // if we clicked on a menu trigger, toggle that menu and close others
293
307
  if (clickedMenu && this.contains(clickedMenu)) {
294
- allMenus.forEach(menu => menu.removeAttribute('data-active'));
295
- clickedMenu.setAttribute('data-active', '');
296
- this.style.overflow = 'initial';
308
+ allMenus.forEach(menu => {
309
+ if (menu !== clickedMenu) {
310
+ menu.removeAttribute('data-active');
311
+ }
312
+ });
313
+ this.toggleMenu(clickedMenu);
314
+ this.style.overflowX = 'initial';
297
315
  if (!this.layout.hasAttribute('data-expanded')) {
298
- this.hoverExpandState();
316
+ this.hoverExpandState();
299
317
  }
318
+ // exit early since we want to keep the menu and sidebar open
300
319
  return;
301
320
  }
302
321
 
303
- // Only close menu if click is outside the sidebar
304
- if (!this.contains(event.target)) {
305
- allMenus.forEach(menu => menu.removeAttribute('data-active'));
306
- this.style.overflowX = 'hidden';
322
+ // clicked outside any menu, close all menus
323
+ allMenus.forEach(menu => menu.removeAttribute('data-active'));
324
+ this.style.overflowX = 'hidden';
325
+
326
+ // if outside sidebar, remove 'data-floating' and reset hover state
327
+ if (!inSidebar) {
328
+ this.layout.removeAttribute('data-floating');
307
329
  if (!this.layout.hasAttribute('data-collapsed') && !this.layout.hasAttribute('data-expanded')) {
308
330
  this.hoverCollapseState();
309
331
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turquoisehealth/pit-viper",
3
- "version": "2.109.0",
3
+ "version": "2.109.2",
4
4
  "description": "Turquoise Health's design system.",
5
5
  "main": "README.md",
6
6
  "publishConfig": {