@prioticket/design-system-web 1.6.1 → 1.6.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.
@@ -1,6 +1,6 @@
1
1
  # @prioticket/design-system-web Components
2
2
 
3
- Version: 1.6.1
3
+ Version: 1.6.2
4
4
 
5
5
  ### <pd-box> (PdBox)
6
6
 
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "package": {
3
3
  "name": "@prioticket/design-system-web",
4
- "version": "1.6.1",
4
+ "version": "1.6.2",
5
5
  "description": "",
6
6
  "installation": "npm install @prioticket/design-system-web"
7
7
  },
8
- "generatedAt": "2026-02-16T14:49:33.635Z",
8
+ "generatedAt": "2026-02-16T15:41:23.540Z",
9
9
  "components": {
10
10
  "pd-box": {
11
11
  "tagName": "pd-box",
@@ -5221,6 +5221,15 @@
5221
5221
  "privacy": "private",
5222
5222
  "readonly": true
5223
5223
  },
5224
+ {
5225
+ "kind": "field",
5226
+ "name": "scrollCleanups",
5227
+ "type": {
5228
+ "text": "Array<() => void>"
5229
+ },
5230
+ "privacy": "private",
5231
+ "default": "[]"
5232
+ },
5224
5233
  {
5225
5234
  "kind": "field",
5226
5235
  "name": "useCustomDropdown",
@@ -5268,6 +5277,22 @@
5268
5277
  "name": "closePopover",
5269
5278
  "privacy": "private"
5270
5279
  },
5280
+ {
5281
+ "kind": "method",
5282
+ "name": "getScrollableAncestors",
5283
+ "privacy": "private",
5284
+ "return": {
5285
+ "type": {
5286
+ "text": "Array<Element | Document>"
5287
+ }
5288
+ },
5289
+ "description": "Walk the composed (flat) tree to find every scrollable ancestor."
5290
+ },
5291
+ {
5292
+ "kind": "method",
5293
+ "name": "cleanupScrollListeners",
5294
+ "privacy": "private"
5295
+ },
5271
5296
  {
5272
5297
  "kind": "field",
5273
5298
  "name": "updatePopoverPosition",
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("lit"),o=require("lit/decorators.js");require("@material/web/select/filled-select.js");require("@material/web/select/outlined-select.js");require("@material/web/select/select-option.js");require("@material/web/icon/icon.js");require("@material/web/checkbox/checkbox.js");require("./pd-chip.cjs.js");var p=Object.defineProperty,c=Object.getOwnPropertyDescriptor,r=(a,e,t,i)=>{for(var l=i>1?void 0:i?c(e,t):e,n=a.length-1,d;n>=0;n--)(d=a[n])&&(l=(i?d(e,t,l):d(l))||l);return i&&l&&p(e,t,l),l};exports.PdSelect=class extends s.LitElement{constructor(){super(...arguments),this.variant="outlined",this.label="",this.value="",this.disabled=!1,this.required=!1,this.errorText="",this.error=!1,this.supportingText="",this.options=[],this.leadingIcon="",this.multiple=!1,this.showChips=!0,this.chipVariant="input",this.placeholder="",this.searchable=!1,this.isOpen=!1,this.searchQuery="",this.selectedValues=[],this.updatePopoverPosition=()=>{const e=this.popoverEl;if(!e||!this.trigger||!this.isOpen)return;const t=this.trigger.getBoundingClientRect();e.style.left=`${t.left}px`,e.style.top=`${t.bottom+4}px`,e.style.width=`${t.width}px`},this.handleTriggerClick=e=>{this.disabled||(e.stopPropagation(),this.searchQuery="",this.isOpen=!this.isOpen)},this.handleClickOutside=e=>{if(!this.isOpen)return;const t=e.composedPath();t.includes(this)||this.popoverEl&&t.includes(this.popoverEl)||(this.isOpen=!1)},this.handleKeyDown=e=>{e.key==="Escape"&&(this.isOpen=!1)}}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.handleClickOutside),document.addEventListener("keydown",this.handleKeyDown),window.addEventListener("scroll",this.updatePopoverPosition,!0),window.addEventListener("resize",this.updatePopoverPosition)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this.handleClickOutside),document.removeEventListener("keydown",this.handleKeyDown),window.removeEventListener("scroll",this.updatePopoverPosition,!0),window.removeEventListener("resize",this.updatePopoverPosition)}get useCustomDropdown(){return this.multiple||this.searchable}willUpdate(e){e.has("value")&&this.useCustomDropdown&&(this.selectedValues=Array.isArray(this.value)?[...this.value]:this.value?[this.value]:[])}updated(e){e.has("isOpen")&&(this.isOpen?this.openPopover():this.closePopover()),this.isOpen&&e.has("selectedValues")&&this.updateComplete.then(()=>{requestAnimationFrame(()=>this.updatePopoverPosition())})}getOptionLabel(e){return this.options.find(t=>t.value===e)?.label??e}get filteredOptions(){const e=this.searchQuery.trim().toLowerCase();return e?this.options.filter(t=>t.label.toLowerCase().includes(e)):this.options}openPopover(){const e=this.popoverEl;if(!(!e||!this.trigger)){try{e.showPopover()}catch{}this.updatePopoverPosition()}}closePopover(){const e=this.popoverEl;if(e)try{e.hidePopover()}catch{}}handleOptionClick(e,t){if(t.stopPropagation(),this.multiple){if(this.selectedValues.includes(e))this.selectedValues=this.selectedValues.filter(i=>i!==e);else{if(this.maxSelections&&this.selectedValues.length>=this.maxSelections)return;this.selectedValues=[...this.selectedValues,e]}this.value=[...this.selectedValues]}else this.selectedValues=[e],this.value=e,this.isOpen=!1;this.dispatchEvent(new CustomEvent("change",{bubbles:!0,composed:!0,detail:{value:this.value}}))}handleChipRemove(e,t){t.stopPropagation(),this.selectedValues=this.selectedValues.filter(i=>i!==e),this.value=[...this.selectedValues]}renderDropdown(){return s.html`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("lit"),o=require("lit/decorators.js");require("@material/web/select/filled-select.js");require("@material/web/select/outlined-select.js");require("@material/web/select/select-option.js");require("@material/web/icon/icon.js");require("@material/web/checkbox/checkbox.js");require("./pd-chip.cjs.js");var p=Object.defineProperty,c=Object.getOwnPropertyDescriptor,r=(a,e,t,i)=>{for(var l=i>1?void 0:i?c(e,t):e,n=a.length-1,d;n>=0;n--)(d=a[n])&&(l=(i?d(e,t,l):d(l))||l);return i&&l&&p(e,t,l),l};exports.PdSelect=class extends s.LitElement{constructor(){super(...arguments),this.variant="outlined",this.label="",this.value="",this.disabled=!1,this.required=!1,this.errorText="",this.error=!1,this.supportingText="",this.options=[],this.leadingIcon="",this.multiple=!1,this.showChips=!0,this.chipVariant="input",this.placeholder="",this.searchable=!1,this.isOpen=!1,this.searchQuery="",this.selectedValues=[],this.scrollCleanups=[],this.updatePopoverPosition=()=>{const e=this.popoverEl;if(!e||!this.trigger||!this.isOpen)return;const t=this.trigger.getBoundingClientRect();e.style.left=`${t.left}px`,e.style.top=`${t.bottom+4}px`,e.style.width=`${t.width}px`},this.handleTriggerClick=e=>{this.disabled||(e.stopPropagation(),this.searchQuery="",this.isOpen=!this.isOpen)},this.handleClickOutside=e=>{if(!this.isOpen)return;const t=e.composedPath();t.includes(this)||this.popoverEl&&t.includes(this.popoverEl)||(this.isOpen=!1)},this.handleKeyDown=e=>{e.key==="Escape"&&(this.isOpen=!1)}}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.handleClickOutside),document.addEventListener("keydown",this.handleKeyDown),window.addEventListener("resize",this.updatePopoverPosition)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this.handleClickOutside),document.removeEventListener("keydown",this.handleKeyDown),window.removeEventListener("resize",this.updatePopoverPosition),this.cleanupScrollListeners()}get useCustomDropdown(){return this.multiple||this.searchable}willUpdate(e){e.has("value")&&this.useCustomDropdown&&(this.selectedValues=Array.isArray(this.value)?[...this.value]:this.value?[this.value]:[])}updated(e){e.has("isOpen")&&(this.isOpen?this.openPopover():this.closePopover()),this.isOpen&&e.has("selectedValues")&&this.updateComplete.then(()=>{requestAnimationFrame(()=>this.updatePopoverPosition())})}getOptionLabel(e){return this.options.find(t=>t.value===e)?.label??e}get filteredOptions(){const e=this.searchQuery.trim().toLowerCase();return e?this.options.filter(t=>t.label.toLowerCase().includes(e)):this.options}openPopover(){const e=this.popoverEl;if(!(!e||!this.trigger)){try{e.showPopover()}catch{}this.updatePopoverPosition(),this.cleanupScrollListeners();for(const t of this.getScrollableAncestors()){const i=()=>{this.isOpen=!1};t.addEventListener("scroll",i,{passive:!0}),this.scrollCleanups.push(()=>t.removeEventListener("scroll",i))}}}closePopover(){this.cleanupScrollListeners();const e=this.popoverEl;if(e)try{e.hidePopover()}catch{}}getScrollableAncestors(){const e=[];let t=this.trigger;for(;t;){if(t instanceof Element){const i=getComputedStyle(t);if(/(auto|scroll)/.test(i.overflow+i.overflowX+i.overflowY)&&e.push(t),t.assignedSlot){t=t.assignedSlot;continue}}t instanceof ShadowRoot?t=t.host:t=t.parentNode}return e.push(document),e}cleanupScrollListeners(){for(const e of this.scrollCleanups)e();this.scrollCleanups=[]}handleOptionClick(e,t){if(t.stopPropagation(),this.multiple){if(this.selectedValues.includes(e))this.selectedValues=this.selectedValues.filter(i=>i!==e);else{if(this.maxSelections&&this.selectedValues.length>=this.maxSelections)return;this.selectedValues=[...this.selectedValues,e]}this.value=[...this.selectedValues]}else this.selectedValues=[e],this.value=e,this.isOpen=!1;this.dispatchEvent(new CustomEvent("change",{bubbles:!0,composed:!0,detail:{value:this.value}}))}handleChipRemove(e,t){t.stopPropagation(),this.selectedValues=this.selectedValues.filter(i=>i!==e),this.value=[...this.selectedValues]}renderDropdown(){return s.html`
2
2
  <div class="dropdown" role="listbox" aria-multiselectable=${this.multiple?"true":"false"}>
3
3
  ${this.searchable?s.html`
4
4
  <div class="search">
@@ -1,19 +1,19 @@
1
- import { css as m, LitElement as v, nothing as d, html as i } from "lit";
2
- import { query as p, property as r, state as u, customElement as y } from "lit/decorators.js";
1
+ import { css as m, LitElement as v, nothing as d, html as r } from "lit";
2
+ import { query as p, property as a, state as u, customElement as y } from "lit/decorators.js";
3
3
  import "@material/web/select/filled-select.js";
4
4
  import "@material/web/select/outlined-select.js";
5
5
  import "@material/web/select/select-option.js";
6
6
  import "@material/web/icon/icon.js";
7
7
  import "@material/web/checkbox/checkbox.js";
8
8
  import "./pd-chip.es.js";
9
- var f = Object.defineProperty, g = Object.getOwnPropertyDescriptor, o = (e, t, a, l) => {
10
- for (var n = l > 1 ? void 0 : l ? g(t, a) : t, c = e.length - 1, h; c >= 0; c--)
11
- (h = e[c]) && (n = (l ? h(t, a, n) : h(n)) || n);
12
- return l && n && f(t, a, n), n;
9
+ var f = Object.defineProperty, g = Object.getOwnPropertyDescriptor, o = (e, t, i, l) => {
10
+ for (var n = l > 1 ? void 0 : l ? g(t, i) : t, c = e.length - 1, h; c >= 0; c--)
11
+ (h = e[c]) && (n = (l ? h(t, i, n) : h(n)) || n);
12
+ return l && n && f(t, i, n), n;
13
13
  };
14
14
  let s = class extends v {
15
15
  constructor() {
16
- super(...arguments), this.variant = "outlined", this.label = "", this.value = "", this.disabled = !1, this.required = !1, this.errorText = "", this.error = !1, this.supportingText = "", this.options = [], this.leadingIcon = "", this.multiple = !1, this.showChips = !0, this.chipVariant = "input", this.placeholder = "", this.searchable = !1, this.isOpen = !1, this.searchQuery = "", this.selectedValues = [], this.updatePopoverPosition = () => {
16
+ super(...arguments), this.variant = "outlined", this.label = "", this.value = "", this.disabled = !1, this.required = !1, this.errorText = "", this.error = !1, this.supportingText = "", this.options = [], this.leadingIcon = "", this.multiple = !1, this.showChips = !0, this.chipVariant = "input", this.placeholder = "", this.searchable = !1, this.isOpen = !1, this.searchQuery = "", this.selectedValues = [], this.scrollCleanups = [], this.updatePopoverPosition = () => {
17
17
  const e = this.popoverEl;
18
18
  if (!e || !this.trigger || !this.isOpen) return;
19
19
  const t = this.trigger.getBoundingClientRect();
@@ -29,10 +29,10 @@ let s = class extends v {
29
29
  };
30
30
  }
31
31
  connectedCallback() {
32
- super.connectedCallback(), document.addEventListener("click", this.handleClickOutside), document.addEventListener("keydown", this.handleKeyDown), window.addEventListener("scroll", this.updatePopoverPosition, !0), window.addEventListener("resize", this.updatePopoverPosition);
32
+ super.connectedCallback(), document.addEventListener("click", this.handleClickOutside), document.addEventListener("keydown", this.handleKeyDown), window.addEventListener("resize", this.updatePopoverPosition);
33
33
  }
34
34
  disconnectedCallback() {
35
- super.disconnectedCallback(), document.removeEventListener("click", this.handleClickOutside), document.removeEventListener("keydown", this.handleKeyDown), window.removeEventListener("scroll", this.updatePopoverPosition, !0), window.removeEventListener("resize", this.updatePopoverPosition);
35
+ super.disconnectedCallback(), document.removeEventListener("click", this.handleClickOutside), document.removeEventListener("keydown", this.handleKeyDown), window.removeEventListener("resize", this.updatePopoverPosition), this.cleanupScrollListeners();
36
36
  }
37
37
  /** Whether to use the custom dropdown (overlay) instead of the native MD select */
38
38
  get useCustomDropdown() {
@@ -53,7 +53,7 @@ let s = class extends v {
53
53
  const e = this.searchQuery.trim().toLowerCase();
54
54
  return e ? this.options.filter((t) => t.label.toLowerCase().includes(e)) : this.options;
55
55
  }
56
- /* -------------------- Popover logic -------------------- */
56
+ /* ------------------- Popover logic ------------------- */
57
57
  openPopover() {
58
58
  const e = this.popoverEl;
59
59
  if (!(!e || !this.trigger)) {
@@ -61,10 +61,17 @@ let s = class extends v {
61
61
  e.showPopover();
62
62
  } catch {
63
63
  }
64
- this.updatePopoverPosition();
64
+ this.updatePopoverPosition(), this.cleanupScrollListeners();
65
+ for (const t of this.getScrollableAncestors()) {
66
+ const i = () => {
67
+ this.isOpen = !1;
68
+ };
69
+ t.addEventListener("scroll", i, { passive: !0 }), this.scrollCleanups.push(() => t.removeEventListener("scroll", i));
70
+ }
65
71
  }
66
72
  }
67
73
  closePopover() {
74
+ this.cleanupScrollListeners();
68
75
  const e = this.popoverEl;
69
76
  if (e)
70
77
  try {
@@ -72,10 +79,30 @@ let s = class extends v {
72
79
  } catch {
73
80
  }
74
81
  }
82
+ /** Walk the composed (flat) tree to find every scrollable ancestor. */
83
+ getScrollableAncestors() {
84
+ const e = [];
85
+ let t = this.trigger;
86
+ for (; t; ) {
87
+ if (t instanceof Element) {
88
+ const i = getComputedStyle(t);
89
+ if (/(auto|scroll)/.test(i.overflow + i.overflowX + i.overflowY) && e.push(t), t.assignedSlot) {
90
+ t = t.assignedSlot;
91
+ continue;
92
+ }
93
+ }
94
+ t instanceof ShadowRoot ? t = t.host : t = t.parentNode;
95
+ }
96
+ return e.push(document), e;
97
+ }
98
+ cleanupScrollListeners() {
99
+ for (const e of this.scrollCleanups) e();
100
+ this.scrollCleanups = [];
101
+ }
75
102
  handleOptionClick(e, t) {
76
103
  if (t.stopPropagation(), this.multiple) {
77
104
  if (this.selectedValues.includes(e))
78
- this.selectedValues = this.selectedValues.filter((a) => a !== e);
105
+ this.selectedValues = this.selectedValues.filter((i) => i !== e);
79
106
  else {
80
107
  if (this.maxSelections && this.selectedValues.length >= this.maxSelections) return;
81
108
  this.selectedValues = [...this.selectedValues, e];
@@ -90,13 +117,13 @@ let s = class extends v {
90
117
  }));
91
118
  }
92
119
  handleChipRemove(e, t) {
93
- t.stopPropagation(), this.selectedValues = this.selectedValues.filter((a) => a !== e), this.value = [...this.selectedValues];
120
+ t.stopPropagation(), this.selectedValues = this.selectedValues.filter((i) => i !== e), this.value = [...this.selectedValues];
94
121
  }
95
122
  /* -------------------- Rendering -------------------- */
96
123
  renderDropdown() {
97
- return i`
124
+ return r`
98
125
  <div class="dropdown" role="listbox" aria-multiselectable=${this.multiple ? "true" : "false"}>
99
- ${this.searchable ? i`
126
+ ${this.searchable ? r`
100
127
  <div class="search">
101
128
  <md-icon class="pd-icon">search</md-icon>
102
129
  <input
@@ -109,15 +136,15 @@ let s = class extends v {
109
136
 
110
137
  <div class="options">
111
138
  ${this.filteredOptions.map((e) => {
112
- const t = this.selectedValues.includes(e.value), a = e.disabled ?? !1;
113
- return i`
139
+ const t = this.selectedValues.includes(e.value), i = e.disabled ?? !1;
140
+ return r`
114
141
  <div
115
142
  class="option"
116
143
  data-selected=${t}
117
- data-disabled=${a}
118
- @click=${(l) => !a && this.handleOptionClick(e.value, l)}
144
+ data-disabled=${i}
145
+ @click=${(l) => !i && this.handleOptionClick(e.value, l)}
119
146
  >
120
- ${this.multiple ? i`<md-checkbox ?checked=${t} ?disabled=${a}></md-checkbox>` : d}
147
+ ${this.multiple ? r`<md-checkbox ?checked=${t} ?disabled=${i}></md-checkbox>` : d}
121
148
  <span>${e.label}</span>
122
149
  </div>
123
150
  `;
@@ -128,12 +155,12 @@ let s = class extends v {
128
155
  }
129
156
  renderCustomSelect() {
130
157
  const e = this.selectedValues.length > 0, t = e || this.isOpen;
131
- return i`
158
+ return r`
132
159
  <div class="container">
133
160
  <div class="wrap">
134
- ${this.label ? i`
161
+ ${this.label ? r`
135
162
  <label class="label" data-float=${t}>
136
- ${this.label}${this.required ? i`<span class="required">*</span>` : d}
163
+ ${this.label}${this.required ? r`<span class="required">*</span>` : d}
137
164
  </label>
138
165
  ` : d}
139
166
 
@@ -144,19 +171,19 @@ let s = class extends v {
144
171
  role="combobox"
145
172
  @click=${this.handleTriggerClick}
146
173
  >
147
- ${this.leadingIcon ? i`<md-icon class="pd-icon pd-icon--leading">${this.leadingIcon}</md-icon>` : d}
174
+ ${this.leadingIcon ? r`<md-icon class="pd-icon pd-icon--leading">${this.leadingIcon}</md-icon>` : d}
148
175
 
149
176
  <div class="content">
150
- ${e ? this.multiple ? i`
177
+ ${e ? this.multiple ? r`
151
178
  <div class="chips">
152
- ${this.selectedValues.map((a) => i`
179
+ ${this.selectedValues.map((i) => r`
153
180
  <pd-chip
154
- label=${this.getOptionLabel(a)}
155
- @chip-remove=${(l) => this.handleChipRemove(a, l)}
181
+ label=${this.getOptionLabel(i)}
182
+ @chip-remove=${(l) => this.handleChipRemove(i, l)}
156
183
  ></pd-chip>
157
184
  `)}
158
185
  </div>
159
- ` : i`<span class="summary">${this.getOptionLabel(this.selectedValues[0])}</span>` : i`<span class="placeholder">${this.placeholder}</span>`}
186
+ ` : r`<span class="summary">${this.getOptionLabel(this.selectedValues[0])}</span>` : r`<span class="placeholder">${this.placeholder}</span>`}
160
187
  </div>
161
188
 
162
189
  <md-icon class="pd-icon pd-icon--trailing" data-rotated=${this.isOpen}>
@@ -165,7 +192,7 @@ let s = class extends v {
165
192
  </div>
166
193
  </div>
167
194
 
168
- ${this.supportingText ? i`<div class="supporting">${this.supportingText}</div>` : d}
195
+ ${this.supportingText ? r`<div class="supporting">${this.supportingText}</div>` : d}
169
196
  </div>
170
197
 
171
198
  <div
@@ -192,16 +219,16 @@ let s = class extends v {
192
219
  this.trailingIcon?.classList.remove("rotated");
193
220
  }
194
221
  renderSingleSelect() {
195
- const e = i`
196
- ${this.leadingIcon ? i`<md-icon slot="leading-icon" class="pd-icon">${this.leadingIcon}</md-icon>` : d}
222
+ const e = r`
223
+ ${this.leadingIcon ? r`<md-icon slot="leading-icon" class="pd-icon">${this.leadingIcon}</md-icon>` : d}
197
224
  <md-icon slot="trailing-icon" class="pd-icon">keyboard_arrow_down</md-icon>
198
- ${this.options.map((t) => i`
225
+ ${this.options.map((t) => r`
199
226
  <md-select-option .value=${t.value} ?disabled=${t.disabled}>
200
227
  <div slot="headline">${t.label}</div>
201
228
  </md-select-option>
202
229
  `)}
203
230
  `;
204
- return this.variant === "filled" ? i`
231
+ return this.variant === "filled" ? r`
205
232
  <md-filled-select
206
233
  .label=${this.label}
207
234
  .value=${this.value}
@@ -214,7 +241,7 @@ let s = class extends v {
214
241
  @opening=${this.handleSingleSelectOpen}
215
242
  @closed=${this.handleSingleSelectClose}
216
243
  >${e}</md-filled-select>
217
- ` : i`
244
+ ` : r`
218
245
  <md-outlined-select
219
246
  .label=${this.label}
220
247
  .value=${this.value}
@@ -505,52 +532,52 @@ o([
505
532
  p(".field")
506
533
  ], s.prototype, "trigger", 2);
507
534
  o([
508
- r({ type: String, reflect: !0 })
535
+ a({ type: String, reflect: !0 })
509
536
  ], s.prototype, "variant", 2);
510
537
  o([
511
- r({ type: String })
538
+ a({ type: String })
512
539
  ], s.prototype, "label", 2);
513
540
  o([
514
- r({ type: String, reflect: !0 })
541
+ a({ type: String, reflect: !0 })
515
542
  ], s.prototype, "value", 2);
516
543
  o([
517
- r({ type: Boolean, reflect: !0 })
544
+ a({ type: Boolean, reflect: !0 })
518
545
  ], s.prototype, "disabled", 2);
519
546
  o([
520
- r({ type: Boolean })
547
+ a({ type: Boolean })
521
548
  ], s.prototype, "required", 2);
522
549
  o([
523
- r({ type: String, attribute: "error-text" })
550
+ a({ type: String, attribute: "error-text" })
524
551
  ], s.prototype, "errorText", 2);
525
552
  o([
526
- r({ type: Boolean, reflect: !0 })
553
+ a({ type: Boolean, reflect: !0 })
527
554
  ], s.prototype, "error", 2);
528
555
  o([
529
- r({ type: String, attribute: "supporting-text" })
556
+ a({ type: String, attribute: "supporting-text" })
530
557
  ], s.prototype, "supportingText", 2);
531
558
  o([
532
- r({ type: Array })
559
+ a({ type: Array })
533
560
  ], s.prototype, "options", 2);
534
561
  o([
535
- r({ type: String, attribute: "leading-icon" })
562
+ a({ type: String, attribute: "leading-icon" })
536
563
  ], s.prototype, "leadingIcon", 2);
537
564
  o([
538
- r({ type: Boolean })
565
+ a({ type: Boolean })
539
566
  ], s.prototype, "multiple", 2);
540
567
  o([
541
- r({ type: Number, attribute: "max-selections" })
568
+ a({ type: Number, attribute: "max-selections" })
542
569
  ], s.prototype, "maxSelections", 2);
543
570
  o([
544
- r({ type: Boolean, attribute: "show-chips" })
571
+ a({ type: Boolean, attribute: "show-chips" })
545
572
  ], s.prototype, "showChips", 2);
546
573
  o([
547
- r({ type: String, attribute: "chip-variant" })
574
+ a({ type: String, attribute: "chip-variant" })
548
575
  ], s.prototype, "chipVariant", 2);
549
576
  o([
550
- r({ type: String })
577
+ a({ type: String })
551
578
  ], s.prototype, "placeholder", 2);
552
579
  o([
553
- r({ type: Boolean })
580
+ a({ type: Boolean })
554
581
  ], s.prototype, "searchable", 2);
555
582
  o([
556
583
  u()
@@ -35,6 +35,7 @@ export declare class PdSelect extends LitElement {
35
35
  private searchQuery;
36
36
  private selectedValues;
37
37
  private readonly popoverEl;
38
+ private scrollCleanups;
38
39
  connectedCallback(): void;
39
40
  disconnectedCallback(): void;
40
41
  /** Whether to use the custom dropdown (overlay) instead of the native MD select */
@@ -45,6 +46,9 @@ export declare class PdSelect extends LitElement {
45
46
  private get filteredOptions();
46
47
  private openPopover;
47
48
  private closePopover;
49
+ /** Walk the composed (flat) tree to find every scrollable ancestor. */
50
+ private getScrollableAncestors;
51
+ private cleanupScrollListeners;
48
52
  private updatePopoverPosition;
49
53
  private handleTriggerClick;
50
54
  private handleClickOutside;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prioticket/design-system-web",
3
- "version": "1.6.1",
3
+ "version": "1.6.2",
4
4
  "type": "module",
5
5
  "packageManager": "yarn@3.6.4",
6
6
  "main": "./dist/prioticket-design-system-web.cjs.js",