@francofantomius/material-components 1.1.0 → 1.1.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,8 +1,8 @@
1
- import { t as o } from "./decorate-DXuynaiA.js";
1
+ import { t as a } from "./decorate-DXuynaiA.js";
2
2
  import { t as p } from "./form-associated-Cty_ZaS9.js";
3
3
  import "./icon-DrNqcNEL.js";
4
- import { css as m, html as l, nothing as r } from "lit";
5
- import { customElement as v, property as a, query as x, state as f } from "lit/decorators.js";
4
+ import { css as m, html as r, nothing as l } from "lit";
5
+ import { customElement as v, property as s, query as x, state as f } from "lit/decorators.js";
6
6
  var y = m`
7
7
  :host {
8
8
  display: block;
@@ -13,6 +13,42 @@ var y = m`
13
13
  font-family: var(--md-sys-typescale-font-family, inherit);
14
14
  color: var(--md-sys-color-on-surface, #1D1B20);
15
15
  vertical-align: middle;
16
+
17
+ --_height: var(--md-search-bar-height, 56px);
18
+ --_shape: var(--md-search-bar-shape, var(--md-search-bar-border-radius, var(--md-sys-shape-corner-full, 28px)));
19
+ --_shape-active: var(--md-search-bar-shape-active, var(--md-sys-shape-corner-extra-large, 28px 28px 16px 16px));
20
+ --_bg: var(--md-search-bar-container-color, var(--md-search-bar-bg, var(--md-sys-color-surface-container-high, #ECE6F0)));
21
+ --_elevation: var(--md-search-bar-elevation, var(--md-sys-elevation-level1, 0px 1px 3px 1px rgba(0, 0, 0, 0.15)));
22
+ --_elevation-active: var(--md-search-bar-elevation-active, var(--md-sys-elevation-level3, 0px 4px 8px 3px rgba(0, 0, 0, 0.15)));
23
+ --_btn-size: var(--md-search-bar-icon-button-size, 40px);
24
+ --_icon-size: var(--md-search-bar-icon-size, 24px);
25
+ --_font-size: var(--md-search-bar-font-size, var(--md-sys-typescale-body-large-size, 16px));
26
+ --_line-height: var(--md-search-bar-line-height, var(--md-sys-typescale-body-large-line-height, 24px));
27
+ --_padding: var(--md-search-bar-padding, 0 8px 0 16px);
28
+ }
29
+
30
+ :host([size="small"]),
31
+ :host([size="compact"]),
32
+ :host([compact]) {
33
+ --_height: var(--md-search-bar-height, 40px);
34
+ --_shape: var(--md-search-bar-shape, var(--md-search-bar-border-radius, 20px));
35
+ --_shape-active: var(--md-search-bar-shape-active, 20px 20px 12px 12px);
36
+ --_btn-size: var(--md-search-bar-icon-button-size, 32px);
37
+ --_icon-size: var(--md-search-bar-icon-size, 20px);
38
+ --_font-size: var(--md-search-bar-font-size, var(--md-sys-typescale-body-medium-size, 14px));
39
+ --_line-height: var(--md-search-bar-line-height, 20px);
40
+ --_padding: var(--md-search-bar-padding, 0 6px 0 12px);
41
+ }
42
+
43
+ :host([size="large"]) {
44
+ --_height: var(--md-search-bar-height, 64px);
45
+ --_shape: var(--md-search-bar-shape, var(--md-search-bar-border-radius, 32px));
46
+ --_shape-active: var(--md-search-bar-shape-active, 32px 32px 20px 20px);
47
+ --_btn-size: var(--md-search-bar-icon-button-size, 48px);
48
+ --_icon-size: var(--md-search-bar-icon-size, 24px);
49
+ --_font-size: var(--md-search-bar-font-size, 18px);
50
+ --_line-height: var(--md-search-bar-line-height, 26px);
51
+ --_padding: var(--md-search-bar-padding, 0 12px 0 20px);
16
52
  }
17
53
 
18
54
  :host([disabled]) {
@@ -43,9 +79,9 @@ var y = m`
43
79
  flex-direction: column;
44
80
  width: 100%;
45
81
  box-sizing: border-box;
46
- background-color: var(--md-search-bar-container-color, var(--md-sys-color-surface-container-high, #ECE6F0));
47
- border-radius: var(--md-sys-shape-corner-full, 28px);
48
- box-shadow: var(--md-sys-elevation-level1, 0px 1px 3px 1px rgba(0, 0, 0, 0.15));
82
+ background-color: var(--_bg);
83
+ border-radius: var(--_shape);
84
+ box-shadow: var(--_elevation);
49
85
  transition: box-shadow 200ms cubic-bezier(0.2, 0, 0, 1),
50
86
  border-radius 200ms cubic-bezier(0.2, 0, 0, 1),
51
87
  background-color 200ms cubic-bezier(0.2, 0, 0, 1);
@@ -54,9 +90,9 @@ var y = m`
54
90
  .search-bar-header {
55
91
  display: flex;
56
92
  align-items: center;
57
- min-height: 56px;
58
- height: 56px;
59
- padding: 0 8px 0 16px;
93
+ min-height: var(--_height);
94
+ height: var(--_height);
95
+ padding: var(--_padding);
60
96
  box-sizing: border-box;
61
97
  gap: 8px;
62
98
  }
@@ -72,8 +108,8 @@ var y = m`
72
108
  display: inline-flex;
73
109
  align-items: center;
74
110
  justify-content: center;
75
- width: 40px;
76
- height: 40px;
111
+ width: var(--_btn-size);
112
+ height: var(--_btn-size);
77
113
  border: none;
78
114
  background: transparent;
79
115
  border-radius: 50%;
@@ -85,6 +121,11 @@ var y = m`
85
121
  transition: background-color 150ms ease;
86
122
  }
87
123
 
124
+ .icon-btn md-icon {
125
+ font-size: var(--_icon-size);
126
+ --md-icon-size: var(--_icon-size);
127
+ }
128
+
88
129
  .icon-btn:hover {
89
130
  background-color: rgba(73, 69, 79, 0.08);
90
131
  }
@@ -107,12 +148,30 @@ var y = m`
107
148
  background: transparent;
108
149
  outline: none;
109
150
  font-family: inherit;
110
- font-size: var(--md-sys-typescale-body-large-size, 16px);
111
- line-height: var(--md-sys-typescale-body-large-line-height, 24px);
151
+ font-size: var(--_font-size);
152
+ line-height: var(--_line-height);
112
153
  color: var(--md-sys-color-on-surface, #1D1B20);
113
154
  padding: 0 4px;
114
155
  margin: 0;
115
156
  box-sizing: border-box;
157
+ -webkit-appearance: none;
158
+ appearance: none;
159
+ }
160
+
161
+ input::-webkit-search-decoration,
162
+ input::-webkit-search-cancel-button,
163
+ input::-webkit-search-results-button,
164
+ input::-webkit-search-results-decoration {
165
+ -webkit-appearance: none;
166
+ appearance: none;
167
+ display: none;
168
+ }
169
+
170
+ input::-ms-clear,
171
+ input::-ms-reveal {
172
+ display: none;
173
+ width: 0;
174
+ height: 0;
116
175
  }
117
176
 
118
177
  input::placeholder {
@@ -123,8 +182,8 @@ var y = m`
123
182
  /* Active Docked Mode */
124
183
  :host([active]) .search-container {
125
184
  z-index: 50;
126
- border-radius: var(--md-sys-shape-corner-extra-large, 28px 28px 16px 16px);
127
- box-shadow: var(--md-sys-elevation-level3, 0px 4px 8px 3px rgba(0, 0, 0, 0.15));
185
+ border-radius: var(--_shape-active);
186
+ box-shadow: var(--_elevation-active);
128
187
  }
129
188
 
130
189
  /* Divider when active */
@@ -184,6 +243,11 @@ var y = m`
184
243
  flex-shrink: 0;
185
244
  }
186
245
 
246
+ .suggestion-icon md-icon {
247
+ font-size: var(--_icon-size);
248
+ --md-icon-size: var(--_icon-size);
249
+ }
250
+
187
251
  .suggestion-text {
188
252
  display: flex;
189
253
  flex-direction: column;
@@ -193,7 +257,7 @@ var y = m`
193
257
  }
194
258
 
195
259
  .suggestion-label {
196
- font-size: var(--md-sys-typescale-body-large-size, 16px);
260
+ font-size: var(--_font-size);
197
261
  line-height: 20px;
198
262
  white-space: nowrap;
199
263
  overflow: hidden;
@@ -247,12 +311,12 @@ var y = m`
247
311
 
248
312
  :host([responsive]:not([active]):not([collapse-on-mobile="false"])) .search-trigger-container.has-trailing,
249
313
  :host([collapse-on-mobile]:not([active]):not([collapse-on-mobile="false"])) .search-trigger-container.has-trailing {
250
- height: 48px;
314
+ height: var(--_height);
251
315
  padding: 0 4px;
252
316
  gap: 2px;
253
- background-color: var(--md-search-bar-container-color, var(--md-sys-color-surface-container-high, #ECE6F0));
254
- border-radius: var(--md-sys-shape-corner-full, 28px);
255
- box-shadow: var(--md-sys-elevation-level1, 0px 1px 3px 1px rgba(0, 0, 0, 0.15));
317
+ background-color: var(--_bg);
318
+ border-radius: var(--_shape);
319
+ box-shadow: var(--_elevation);
256
320
  }
257
321
 
258
322
  :host([responsive]:not([active]):not([collapse-on-mobile="false"])) .search-trigger-container.has-trailing:hover,
@@ -270,10 +334,10 @@ var y = m`
270
334
  display: inline-flex;
271
335
  align-items: center;
272
336
  justify-content: center;
273
- width: 40px;
274
- height: 40px;
275
- min-width: 40px;
276
- min-height: 40px;
337
+ width: var(--_btn-size);
338
+ height: var(--_btn-size);
339
+ min-width: var(--_btn-size);
340
+ min-height: var(--_btn-size);
277
341
  border-radius: 50%;
278
342
  border: none;
279
343
  background: transparent;
@@ -287,6 +351,11 @@ var y = m`
287
351
  -webkit-tap-highlight-color: transparent;
288
352
  }
289
353
 
354
+ .trigger-btn md-icon {
355
+ font-size: var(--_icon-size);
356
+ --md-icon-size: var(--_icon-size);
357
+ }
358
+
290
359
  .trigger-btn:hover {
291
360
  background-color: rgba(73, 69, 79, 0.08);
292
361
  }
@@ -355,7 +424,7 @@ var y = m`
355
424
  border-radius: 0;
356
425
  box-shadow: none;
357
426
  z-index: 99999;
358
- background-color: var(--md-search-bar-container-color, var(--md-sys-color-surface-container-high, #ECE6F0));
427
+ background-color: var(--_bg);
359
428
  }
360
429
 
361
430
  :host([responsive][active]) .suggestions-container,
@@ -403,7 +472,7 @@ var y = m`
403
472
  border-radius: 0;
404
473
  box-shadow: none;
405
474
  z-index: 99999;
406
- background-color: var(--md-search-bar-container-color, var(--md-sys-color-surface-container-high, #ECE6F0));
475
+ background-color: var(--_bg);
407
476
  }
408
477
 
409
478
  :host([fullscreen][active]) .suggestions-container {
@@ -411,17 +480,17 @@ var y = m`
411
480
  max-height: calc(100vh - 57px);
412
481
  max-height: calc(100dvh - 57px);
413
482
  }
414
- `, i = class extends p {
415
- constructor(...t) {
416
- super(...t), this.value = "", this.placeholder = "Search", this.active = !1, this.suggestions = [], this.leadingIcon = "search", this.activeLeadingIcon = "arrow_back", this.trailingIcon = "", this.showBackButton = !0, this.showClearButton = !0, this.responsive = !0, this.collapseOnMobile = !0, this.fullscreen = !1, this.autoDeactivateOnSelect = !0, this.highlightedIndex = -1, this.handleFocus = () => {
483
+ `, t = class extends p {
484
+ constructor(...i) {
485
+ super(...i), this.size = "medium", this.compact = !1, this.value = "", this.placeholder = "Search", this.active = !1, this.suggestions = [], this.leadingIcon = "search", this.activeLeadingIcon = "arrow_back", this.trailingIcon = "", this.showBackButton = !0, this.showClearButton = !0, this.responsive = !0, this.collapseOnMobile = !0, this.fullscreen = !1, this.autoDeactivateOnSelect = !0, this.highlightedIndex = -1, this.handleFocus = () => {
417
486
  this.active || (this.active = !0, this.emitEvent("active-change", { active: !0 }));
418
487
  }, this.handleInput = (e) => {
419
- const s = e.target;
420
- this.value = s.value, this.setFormValue(this.value), this.toggleAttribute("has-value", !!this.value), this.highlightedIndex = -1, this.emitEvent("input", { value: this.value });
488
+ const o = e.target;
489
+ this.value = o.value, this.setFormValue(this.value), this.toggleAttribute("has-value", !!this.value), this.highlightedIndex = -1, this.emitEvent("input", { value: this.value });
421
490
  }, this.handleChange = () => {
422
491
  this.emitEvent("change", { value: this.value });
423
492
  }, this.handleKeyDown = (e) => {
424
- const s = this.suggestions.length;
493
+ const o = this.suggestions.length;
425
494
  if (e.key === "Escape") {
426
495
  e.preventDefault(), this.close(), this.inputElement?.blur();
427
496
  return;
@@ -431,15 +500,15 @@ var y = m`
431
500
  this.show();
432
501
  return;
433
502
  }
434
- s > 0 && (e.preventDefault(), this.highlightedIndex = (this.highlightedIndex + 1) % s);
503
+ o > 0 && (e.preventDefault(), this.highlightedIndex = (this.highlightedIndex + 1) % o);
435
504
  return;
436
505
  }
437
506
  if (e.key === "ArrowUp") {
438
- s > 0 && this.active && (e.preventDefault(), this.highlightedIndex = this.highlightedIndex <= 0 ? s - 1 : this.highlightedIndex - 1);
507
+ o > 0 && this.active && (e.preventDefault(), this.highlightedIndex = this.highlightedIndex <= 0 ? o - 1 : this.highlightedIndex - 1);
439
508
  return;
440
509
  }
441
510
  if (e.key === "Enter")
442
- if (this.active && this.highlightedIndex >= 0 && this.highlightedIndex < s) {
511
+ if (this.active && this.highlightedIndex >= 0 && this.highlightedIndex < o) {
443
512
  const n = this.suggestions[this.highlightedIndex];
444
513
  n !== void 0 && (e.preventDefault(), this.selectSuggestion(n, this.highlightedIndex));
445
514
  } else this.emitEvent("search", { value: this.value });
@@ -463,8 +532,8 @@ var y = m`
463
532
  connectedCallback() {
464
533
  super.connectedCallback(), this.setFormValue(this.value), this.toggleAttribute("has-value", !!this.value), this.toggleAttribute("active", this.active), this.toggleAttribute("collapse-on-mobile", this.collapseOnMobile);
465
534
  }
466
- willUpdate(t) {
467
- super.willUpdate(t), t.has("value") && (this.setFormValue(this.value), this.toggleAttribute("has-value", !!this.value)), t.has("active") && (this.toggleAttribute("active", this.active), this.active || (this.highlightedIndex = -1)), t.has("collapseOnMobile") && this.toggleAttribute("collapse-on-mobile", this.collapseOnMobile);
535
+ willUpdate(i) {
536
+ super.willUpdate(i), i.has("value") && (this.setFormValue(this.value), this.toggleAttribute("has-value", !!this.value)), i.has("active") && (this.toggleAttribute("active", this.active), this.active || (this.highlightedIndex = -1)), i.has("collapseOnMobile") && this.toggleAttribute("collapse-on-mobile", this.collapseOnMobile);
468
537
  }
469
538
  formResetCallback() {
470
539
  this.value = "", this.setFormValue(null), this.toggleAttribute("has-value", !1), this.highlightedIndex = -1;
@@ -492,41 +561,41 @@ var y = m`
492
561
  clear() {
493
562
  this.value = "", this.setFormValue(""), this.toggleAttribute("has-value", !1), this.highlightedIndex = -1, this.emitEvent("input", { value: "" }), this.emitEvent("clear"), this.inputElement?.focus();
494
563
  }
495
- selectSuggestion(t, e) {
496
- const s = typeof t == "string" ? t : t.label, n = typeof t == "string" ? t : t.value ?? t.label;
564
+ selectSuggestion(i, e) {
565
+ const o = typeof i == "string" ? i : i.label, n = typeof i == "string" ? i : i.value ?? i.label;
497
566
  this.value = n, this.setFormValue(this.value), this.toggleAttribute("has-value", !!this.value), this.emitEvent("suggestion-select", {
498
- suggestion: t,
499
- label: s,
567
+ suggestion: i,
568
+ label: o,
500
569
  value: n,
501
570
  index: e
502
571
  }), this.emitEvent("search", {
503
572
  value: this.value,
504
- suggestion: t
573
+ suggestion: i
505
574
  }), this.autoDeactivateOnSelect && this.close();
506
575
  }
507
- renderSuggestionItem(t, e) {
508
- const s = typeof t == "string", n = s ? t : t.label, c = s ? void 0 : t.supportingText, h = s ? void 0 : t.trailingSupportingText, b = !s && t.icon ? t.icon : "history", d = this.highlightedIndex === e;
509
- return l`
576
+ renderSuggestionItem(i, e) {
577
+ const o = typeof i == "string", n = o ? i : i.label, c = o ? void 0 : i.supportingText, h = o ? void 0 : i.trailingSupportingText, b = !o && i.icon ? i.icon : "history", d = this.highlightedIndex === e;
578
+ return r`
510
579
  <div
511
580
  class="suggestion-item ${d ? "highlighted" : ""}"
512
581
  role="option"
513
582
  aria-selected=${d ? "true" : "false"}
514
- @click=${() => this.selectSuggestion(t, e)}
583
+ @click=${() => this.selectSuggestion(i, e)}
515
584
  >
516
585
  <span class="suggestion-icon">
517
586
  <md-icon name=${b}></md-icon>
518
587
  </span>
519
588
  <div class="suggestion-text">
520
589
  <span class="suggestion-label">${n}</span>
521
- ${c ? l`<span class="suggestion-supporting">${c}</span>` : r}
590
+ ${c ? r`<span class="suggestion-supporting">${c}</span>` : l}
522
591
  </div>
523
- ${h ? l`<span class="suggestion-trailing">${h}</span>` : r}
592
+ ${h ? r`<span class="suggestion-trailing">${h}</span>` : l}
524
593
  </div>
525
594
  `;
526
595
  }
527
596
  render() {
528
- const t = this.active && this.showBackButton, e = !!this.trailingIcon;
529
- return l`
597
+ const i = this.active && this.showBackButton, e = !!this.trailingIcon;
598
+ return r`
530
599
  <div
531
600
  class="search-trigger-container ${e ? "has-trailing" : ""}"
532
601
  role="button"
@@ -548,7 +617,7 @@ var y = m`
548
617
  <md-icon name=${this.leadingIcon || "search"}></md-icon>
549
618
  </button>
550
619
 
551
- ${e ? l`
620
+ ${e ? r`
552
621
  <div class="trigger-divider" aria-hidden="true"></div>
553
622
  <button
554
623
  class="trigger-btn trigger-trailing-btn"
@@ -560,7 +629,7 @@ var y = m`
560
629
  >
561
630
  <md-icon name=${this.trailingIcon}></md-icon>
562
631
  </button>
563
- ` : r}
632
+ ` : l}
564
633
  </div>
565
634
 
566
635
  <div class="scrim" @click=${this.handleScrimClick}></div>
@@ -569,7 +638,7 @@ var y = m`
569
638
  <div class="search-bar-header">
570
639
  <span class="leading-slot">
571
640
  <slot name="leading-icon">
572
- ${t ? l`
641
+ ${i ? r`
573
642
  <button
574
643
  class="icon-btn"
575
644
  type="button"
@@ -578,7 +647,7 @@ var y = m`
578
647
  >
579
648
  <md-icon name=${this.activeLeadingIcon}></md-icon>
580
649
  </button>
581
- ` : l`
650
+ ` : r`
582
651
  <span class="icon-btn" style="cursor: default;">
583
652
  <md-icon name=${this.leadingIcon}></md-icon>
584
653
  </span>
@@ -605,7 +674,7 @@ var y = m`
605
674
  </div>
606
675
 
607
676
  <span class="trailing-slot">
608
- ${this.showClearButton && this.value ? l`
677
+ ${this.showClearButton && this.value ? r`
609
678
  <button
610
679
  class="icon-btn clear-btn"
611
680
  type="button"
@@ -614,14 +683,14 @@ var y = m`
614
683
  >
615
684
  <md-icon name="close"></md-icon>
616
685
  </button>
617
- ` : r}
686
+ ` : l}
618
687
 
619
688
  <slot name="trailing-icon">
620
- ${this.trailingIcon ? l`
689
+ ${this.trailingIcon ? r`
621
690
  <span class="icon-btn" style="cursor: default;">
622
691
  <md-icon name=${this.trailingIcon}></md-icon>
623
692
  </span>
624
- ` : r}
693
+ ` : l}
625
694
  </slot>
626
695
  </span>
627
696
  </div>
@@ -630,7 +699,7 @@ var y = m`
630
699
 
631
700
  <div class="suggestions-container" role="listbox" aria-label="Suggestions">
632
701
  <slot name="suggestions">
633
- ${this.suggestions.map((s, n) => this.renderSuggestionItem(s, n))}
702
+ ${this.suggestions.map((o, n) => this.renderSuggestionItem(o, n))}
634
703
  </slot>
635
704
  <div class="extra-content">
636
705
  <slot></slot>
@@ -640,59 +709,67 @@ var y = m`
640
709
  `;
641
710
  }
642
711
  };
643
- o([a({ type: String })], i.prototype, "value", void 0);
644
- o([a({ type: String })], i.prototype, "placeholder", void 0);
645
- o([a({
712
+ a([s({
713
+ type: String,
714
+ reflect: !0
715
+ })], t.prototype, "size", void 0);
716
+ a([s({
717
+ type: Boolean,
718
+ reflect: !0
719
+ })], t.prototype, "compact", void 0);
720
+ a([s({ type: String })], t.prototype, "value", void 0);
721
+ a([s({ type: String })], t.prototype, "placeholder", void 0);
722
+ a([s({
646
723
  type: Boolean,
647
724
  reflect: !0
648
- })], i.prototype, "active", void 0);
649
- o([a({ type: Array })], i.prototype, "suggestions", void 0);
650
- o([a({
725
+ })], t.prototype, "active", void 0);
726
+ a([s({ type: Array })], t.prototype, "suggestions", void 0);
727
+ a([s({
651
728
  type: String,
652
729
  attribute: "leading-icon"
653
- })], i.prototype, "leadingIcon", void 0);
654
- o([a({
730
+ })], t.prototype, "leadingIcon", void 0);
731
+ a([s({
655
732
  type: String,
656
733
  attribute: "active-leading-icon"
657
- })], i.prototype, "activeLeadingIcon", void 0);
658
- o([a({
734
+ })], t.prototype, "activeLeadingIcon", void 0);
735
+ a([s({
659
736
  type: String,
660
737
  attribute: "trailing-icon"
661
- })], i.prototype, "trailingIcon", void 0);
662
- o([a({
738
+ })], t.prototype, "trailingIcon", void 0);
739
+ a([s({
663
740
  type: Boolean,
664
741
  attribute: "show-back-button"
665
- })], i.prototype, "showBackButton", void 0);
666
- o([a({
742
+ })], t.prototype, "showBackButton", void 0);
743
+ a([s({
667
744
  type: Boolean,
668
745
  attribute: "show-clear-button"
669
- })], i.prototype, "showClearButton", void 0);
670
- o([a({
746
+ })], t.prototype, "showClearButton", void 0);
747
+ a([s({
671
748
  type: Boolean,
672
749
  reflect: !0
673
- })], i.prototype, "responsive", void 0);
674
- o([a({
750
+ })], t.prototype, "responsive", void 0);
751
+ a([s({
675
752
  type: Boolean,
676
753
  attribute: "collapse-on-mobile",
677
754
  reflect: !0
678
- })], i.prototype, "collapseOnMobile", void 0);
679
- o([a({
755
+ })], t.prototype, "collapseOnMobile", void 0);
756
+ a([s({
680
757
  type: Boolean,
681
758
  reflect: !0
682
- })], i.prototype, "fullscreen", void 0);
683
- o([a({
759
+ })], t.prototype, "fullscreen", void 0);
760
+ a([s({
684
761
  type: Boolean,
685
762
  attribute: "auto-deactivate-on-select"
686
- })], i.prototype, "autoDeactivateOnSelect", void 0);
687
- o([f()], i.prototype, "highlightedIndex", void 0);
688
- o([x("input")], i.prototype, "inputElement", void 0);
689
- i = o([v("md-search-bar")], i);
690
- var g = class extends i {
763
+ })], t.prototype, "autoDeactivateOnSelect", void 0);
764
+ a([f()], t.prototype, "highlightedIndex", void 0);
765
+ a([x("input")], t.prototype, "inputElement", void 0);
766
+ t = a([v("md-search-bar")], t);
767
+ var g = class extends t {
691
768
  };
692
- g = o([v("md-search")], g);
769
+ g = a([v("md-search")], g);
693
770
  export {
694
- i as n,
771
+ t as n,
695
772
  g as t
696
773
  };
697
774
 
698
- //# sourceMappingURL=search-bar-TXnqJ-gd.js.map
775
+ //# sourceMappingURL=search-bar-CfN-emMP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-bar-CfN-emMP.js","names":[],"sources":["../../src/components/search-bar/search-bar.css.ts","../../src/components/search-bar/search-bar.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const searchBarStyles = css`\n :host {\n display: block;\n box-sizing: border-box;\n position: relative;\n width: 100%;\n max-width: var(--md-search-bar-max-width, 100%);\n font-family: var(--md-sys-typescale-font-family, inherit);\n color: var(--md-sys-color-on-surface, #1D1B20);\n vertical-align: middle;\n\n --_height: var(--md-search-bar-height, 56px);\n --_shape: var(--md-search-bar-shape, var(--md-search-bar-border-radius, var(--md-sys-shape-corner-full, 28px)));\n --_shape-active: var(--md-search-bar-shape-active, var(--md-sys-shape-corner-extra-large, 28px 28px 16px 16px));\n --_bg: var(--md-search-bar-container-color, var(--md-search-bar-bg, var(--md-sys-color-surface-container-high, #ECE6F0)));\n --_elevation: var(--md-search-bar-elevation, var(--md-sys-elevation-level1, 0px 1px 3px 1px rgba(0, 0, 0, 0.15)));\n --_elevation-active: var(--md-search-bar-elevation-active, var(--md-sys-elevation-level3, 0px 4px 8px 3px rgba(0, 0, 0, 0.15)));\n --_btn-size: var(--md-search-bar-icon-button-size, 40px);\n --_icon-size: var(--md-search-bar-icon-size, 24px);\n --_font-size: var(--md-search-bar-font-size, var(--md-sys-typescale-body-large-size, 16px));\n --_line-height: var(--md-search-bar-line-height, var(--md-sys-typescale-body-large-line-height, 24px));\n --_padding: var(--md-search-bar-padding, 0 8px 0 16px);\n }\n\n :host([size=\"small\"]),\n :host([size=\"compact\"]),\n :host([compact]) {\n --_height: var(--md-search-bar-height, 40px);\n --_shape: var(--md-search-bar-shape, var(--md-search-bar-border-radius, 20px));\n --_shape-active: var(--md-search-bar-shape-active, 20px 20px 12px 12px);\n --_btn-size: var(--md-search-bar-icon-button-size, 32px);\n --_icon-size: var(--md-search-bar-icon-size, 20px);\n --_font-size: var(--md-search-bar-font-size, var(--md-sys-typescale-body-medium-size, 14px));\n --_line-height: var(--md-search-bar-line-height, 20px);\n --_padding: var(--md-search-bar-padding, 0 6px 0 12px);\n }\n\n :host([size=\"large\"]) {\n --_height: var(--md-search-bar-height, 64px);\n --_shape: var(--md-search-bar-shape, var(--md-search-bar-border-radius, 32px));\n --_shape-active: var(--md-search-bar-shape-active, 32px 32px 20px 20px);\n --_btn-size: var(--md-search-bar-icon-button-size, 48px);\n --_icon-size: var(--md-search-bar-icon-size, 24px);\n --_font-size: var(--md-search-bar-font-size, 18px);\n --_line-height: var(--md-search-bar-line-height, 26px);\n --_padding: var(--md-search-bar-padding, 0 12px 0 20px);\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.38;\n }\n\n .scrim {\n display: none;\n }\n\n /* Scrim when active in docked mode to catch outside clicks */\n :host([active]) .scrim {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 40;\n background: transparent;\n }\n\n .search-container {\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n background-color: var(--_bg);\n border-radius: var(--_shape);\n box-shadow: var(--_elevation);\n transition: box-shadow 200ms cubic-bezier(0.2, 0, 0, 1),\n border-radius 200ms cubic-bezier(0.2, 0, 0, 1),\n background-color 200ms cubic-bezier(0.2, 0, 0, 1);\n }\n\n .search-bar-header {\n display: flex;\n align-items: center;\n min-height: var(--_height);\n height: var(--_height);\n padding: var(--_padding);\n box-sizing: border-box;\n gap: 8px;\n }\n\n .leading-slot, .trailing-slot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .icon-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--_btn-size);\n height: var(--_btn-size);\n border: none;\n background: transparent;\n border-radius: 50%;\n color: var(--md-sys-color-on-surface-variant, #49454F);\n cursor: pointer;\n padding: 0;\n outline: none;\n position: relative;\n transition: background-color 150ms ease;\n }\n\n .icon-btn md-icon {\n font-size: var(--_icon-size);\n --md-icon-size: var(--_icon-size);\n }\n\n .icon-btn:hover {\n background-color: rgba(73, 69, 79, 0.08);\n }\n\n .icon-btn:focus-visible {\n background-color: rgba(73, 69, 79, 0.12);\n }\n\n .input-wrapper {\n display: flex;\n flex: 1;\n min-width: 0;\n align-items: center;\n position: relative;\n }\n\n input {\n width: 100%;\n border: none;\n background: transparent;\n outline: none;\n font-family: inherit;\n font-size: var(--_font-size);\n line-height: var(--_line-height);\n color: var(--md-sys-color-on-surface, #1D1B20);\n padding: 0 4px;\n margin: 0;\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n }\n\n input::-webkit-search-decoration,\n input::-webkit-search-cancel-button,\n input::-webkit-search-results-button,\n input::-webkit-search-results-decoration {\n -webkit-appearance: none;\n appearance: none;\n display: none;\n }\n\n input::-ms-clear,\n input::-ms-reveal {\n display: none;\n width: 0;\n height: 0;\n }\n\n input::placeholder {\n color: var(--md-sys-color-on-surface-variant, #49454F);\n opacity: 0.8;\n }\n\n /* Active Docked Mode */\n :host([active]) .search-container {\n z-index: 50;\n border-radius: var(--_shape-active);\n box-shadow: var(--_elevation-active);\n }\n\n /* Divider when active */\n .divider {\n display: none;\n height: 1px;\n background-color: var(--md-sys-color-outline-variant, #CAC4D0);\n margin: 0 16px;\n }\n\n :host([active]) .divider {\n display: block;\n }\n\n /* Suggestions / Content Container */\n .suggestions-container {\n display: none;\n flex-direction: column;\n max-height: 360px;\n overflow-y: auto;\n padding: 8px 0;\n box-sizing: border-box;\n }\n\n :host([active]) .suggestions-container {\n display: flex;\n }\n\n .suggestion-item {\n display: flex;\n align-items: center;\n min-height: 48px;\n padding: 0 16px;\n gap: 16px;\n box-sizing: border-box;\n cursor: pointer;\n position: relative;\n user-select: none;\n color: var(--md-sys-color-on-surface, #1D1B20);\n transition: background-color 150ms ease;\n }\n\n .suggestion-item:hover,\n .suggestion-item.highlighted {\n background-color: rgba(73, 69, 79, 0.08);\n }\n\n .suggestion-item.selected {\n background-color: rgba(73, 69, 79, 0.12);\n }\n\n .suggestion-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--md-sys-color-on-surface-variant, #49454F);\n flex-shrink: 0;\n }\n\n .suggestion-icon md-icon {\n font-size: var(--_icon-size);\n --md-icon-size: var(--_icon-size);\n }\n\n .suggestion-text {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n }\n\n .suggestion-label {\n font-size: var(--_font-size);\n line-height: 20px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .suggestion-supporting {\n font-size: var(--md-sys-typescale-body-medium-size, 14px);\n line-height: 16px;\n color: var(--md-sys-color-on-surface-variant, #49454F);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-top: 2px;\n }\n\n .suggestion-trailing {\n font-size: var(--md-sys-typescale-body-medium-size, 14px);\n color: var(--md-sys-color-on-surface-variant, #49454F);\n flex-shrink: 0;\n }\n\n .search-trigger-container {\n display: none;\n }\n\n /* Responsive Fullscreen / Mobile Collapsed Mode */\n @media (max-width: 768px) {\n :host([responsive]:not([active]):not([collapse-on-mobile=\"false\"])),\n :host([collapse-on-mobile]:not([active]):not([collapse-on-mobile=\"false\"])) {\n display: inline-flex;\n width: auto;\n max-width: none;\n vertical-align: middle;\n }\n\n :host([responsive]:not([active]):not([collapse-on-mobile=\"false\"])) .search-trigger-container,\n :host([collapse-on-mobile]:not([active]):not([collapse-on-mobile=\"false\"])) .search-trigger-container {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: transparent;\n border-radius: 50%;\n box-shadow: none;\n cursor: pointer;\n user-select: none;\n outline: none;\n transition: background-color 200ms ease, box-shadow 200ms ease;\n -webkit-tap-highlight-color: transparent;\n }\n\n :host([responsive]:not([active]):not([collapse-on-mobile=\"false\"])) .search-trigger-container.has-trailing,\n :host([collapse-on-mobile]:not([active]):not([collapse-on-mobile=\"false\"])) .search-trigger-container.has-trailing {\n height: var(--_height);\n padding: 0 4px;\n gap: 2px;\n background-color: var(--_bg);\n border-radius: var(--_shape);\n box-shadow: var(--_elevation);\n }\n\n :host([responsive]:not([active]):not([collapse-on-mobile=\"false\"])) .search-trigger-container.has-trailing:hover,\n :host([collapse-on-mobile]:not([active]):not([collapse-on-mobile=\"false\"])) .search-trigger-container.has-trailing:hover {\n box-shadow: var(--md-sys-elevation-level2, 0px 2px 6px 2px rgba(0, 0, 0, 0.15));\n }\n\n :host([responsive]:not([active]):not([collapse-on-mobile=\"false\"])) .search-trigger-container:focus-visible,\n :host([collapse-on-mobile]:not([active]):not([collapse-on-mobile=\"false\"])) .search-trigger-container:focus-visible {\n outline: 2px solid var(--md-sys-color-primary, #6750A4);\n outline-offset: 2px;\n }\n\n .trigger-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--_btn-size);\n height: var(--_btn-size);\n min-width: var(--_btn-size);\n min-height: var(--_btn-size);\n border-radius: 50%;\n border: none;\n background: transparent;\n color: var(--md-sys-color-on-surface-variant, #49454F);\n cursor: pointer;\n padding: 0;\n margin: 0;\n outline: none;\n position: relative;\n transition: background-color 150ms ease, color 150ms ease;\n -webkit-tap-highlight-color: transparent;\n }\n\n .trigger-btn md-icon {\n font-size: var(--_icon-size);\n --md-icon-size: var(--_icon-size);\n }\n\n .trigger-btn:hover {\n background-color: rgba(73, 69, 79, 0.08);\n }\n\n .trigger-btn:focus-visible {\n background-color: rgba(73, 69, 79, 0.12);\n }\n\n .trigger-divider {\n width: 1px;\n height: 22px;\n background-color: var(--md-sys-color-outline-variant, #CAC4D0);\n margin: 0 2px;\n flex-shrink: 0;\n }\n\n :host([responsive]:not([active]):not([collapse-on-mobile=\"false\"])) .search-container,\n :host([collapse-on-mobile]:not([active]):not([collapse-on-mobile=\"false\"])) .search-container {\n display: none;\n }\n\n :host([responsive]:not([active]):not([collapse-on-mobile=\"false\"])) .scrim,\n :host([collapse-on-mobile]:not([active]):not([collapse-on-mobile=\"false\"])) .scrim {\n display: none;\n }\n\n :host([responsive][active]),\n :host([collapse-on-mobile][active]) {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n max-width: 100vw;\n margin: 0;\n padding: 0;\n z-index: 99999;\n }\n\n :host([responsive][active]) .search-trigger-container,\n :host([collapse-on-mobile][active]) .search-trigger-container {\n display: none;\n }\n\n :host([responsive][active]) .scrim,\n :host([collapse-on-mobile][active]) .scrim {\n display: none;\n }\n\n :host([responsive][active]) .search-container,\n :host([collapse-on-mobile][active]) .search-container {\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n max-width: 100vw;\n border-radius: 0;\n box-shadow: none;\n z-index: 99999;\n background-color: var(--_bg);\n }\n\n :host([responsive][active]) .suggestions-container,\n :host([collapse-on-mobile][active]) .suggestions-container {\n flex: 1;\n max-height: calc(100vh - 57px);\n max-height: calc(100dvh - 57px);\n }\n }\n\n /* Forced Fullscreen attribute */\n :host([fullscreen][active]) {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n max-width: 100vw;\n z-index: 99999;\n }\n\n :host([fullscreen][active]) .search-trigger-container {\n display: none;\n }\n\n :host([fullscreen][active]) .scrim {\n display: none;\n }\n\n :host([fullscreen][active]) .search-container {\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n max-width: 100vw;\n border-radius: 0;\n box-shadow: none;\n z-index: 99999;\n background-color: var(--_bg);\n }\n\n :host([fullscreen][active]) .suggestions-container {\n flex: 1;\n max-height: calc(100vh - 57px);\n max-height: calc(100dvh - 57px);\n }\n`;\n\n","import { html, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { MdFormAssociatedElement } from '../../internal/form-associated.js';\nimport '../icon/icon.js';\nimport { searchBarStyles } from './search-bar.css.js';\n\nexport type SearchBarSize = 'small' | 'compact' | 'medium' | 'large';\n\nexport interface SearchSuggestion {\n id?: string;\n label: string;\n value?: string;\n supportingText?: string;\n trailingSupportingText?: string;\n icon?: string;\n [key: string]: unknown;\n}\n\n@customElement('md-search-bar')\nexport class MdSearchBar extends MdFormAssociatedElement {\n static override styles = [MdFormAssociatedElement.styles, searchBarStyles];\n\n @property({ type: String, reflect: true })\n size: SearchBarSize = 'medium';\n\n @property({ type: Boolean, reflect: true })\n compact = false;\n\n @property({ type: String })\n value = '';\n\n @property({ type: String })\n placeholder = 'Search';\n\n @property({ type: Boolean, reflect: true })\n active = false;\n\n @property({ type: Array })\n suggestions: Array<string | SearchSuggestion> = [];\n\n @property({ type: String, attribute: 'leading-icon' })\n leadingIcon = 'search';\n\n @property({ type: String, attribute: 'active-leading-icon' })\n activeLeadingIcon = 'arrow_back';\n\n @property({ type: String, attribute: 'trailing-icon' })\n trailingIcon = '';\n\n @property({ type: Boolean, attribute: 'show-back-button' })\n showBackButton = true;\n\n @property({ type: Boolean, attribute: 'show-clear-button' })\n showClearButton = true;\n\n @property({ type: Boolean, reflect: true })\n responsive = true;\n\n @property({ type: Boolean, attribute: 'collapse-on-mobile', reflect: true })\n collapseOnMobile = true;\n\n @property({ type: Boolean, reflect: true })\n fullscreen = false;\n\n @property({ type: Boolean, attribute: 'auto-deactivate-on-select' })\n autoDeactivateOnSelect = true;\n\n @state()\n private highlightedIndex = -1;\n\n @query('input')\n private inputElement?: HTMLInputElement;\n\n override connectedCallback() {\n super.connectedCallback();\n this.setFormValue(this.value);\n this.toggleAttribute('has-value', Boolean(this.value));\n this.toggleAttribute('active', this.active);\n this.toggleAttribute('collapse-on-mobile', this.collapseOnMobile);\n }\n\n override willUpdate(changedProperties: Map<string, unknown>) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('value')) {\n this.setFormValue(this.value);\n this.toggleAttribute('has-value', Boolean(this.value));\n }\n if (changedProperties.has('active')) {\n this.toggleAttribute('active', this.active);\n if (!this.active) {\n this.highlightedIndex = -1;\n }\n }\n if (changedProperties.has('collapseOnMobile')) {\n this.toggleAttribute('collapse-on-mobile', this.collapseOnMobile);\n }\n }\n\n override formResetCallback() {\n this.value = '';\n this.setFormValue(null);\n this.toggleAttribute('has-value', false);\n this.highlightedIndex = -1;\n }\n\n /**\n * Focuses the search input field.\n */\n override focus() {\n this.inputElement?.focus();\n }\n\n /**\n * Opens / activates the search view.\n */\n show() {\n if (!this.active) {\n this.active = true;\n this.emitEvent('active-change', { active: true });\n }\n this.updateComplete.then(() => {\n this.inputElement?.focus();\n });\n }\n\n /**\n * Alias for show()\n */\n open() {\n this.show();\n }\n\n /**\n * Closes / deactivates the search view.\n */\n close() {\n if (this.active) {\n this.active = false;\n this.highlightedIndex = -1;\n this.emitEvent('active-change', { active: false });\n }\n }\n\n /**\n * Alias for close()\n */\n collapse() {\n this.close();\n }\n\n /**\n * Toggles the active state of the search bar.\n */\n toggle() {\n if (this.active) {\n this.close();\n } else {\n this.show();\n }\n }\n\n /**\n * Clears the current search input.\n */\n clear() {\n this.value = '';\n this.setFormValue('');\n this.toggleAttribute('has-value', false);\n this.highlightedIndex = -1;\n this.emitEvent('input', { value: '' });\n this.emitEvent('clear');\n this.inputElement?.focus();\n }\n\n private handleFocus = () => {\n if (!this.active) {\n this.active = true;\n this.emitEvent('active-change', { active: true });\n }\n };\n\n private handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.setFormValue(this.value);\n this.toggleAttribute('has-value', Boolean(this.value));\n this.highlightedIndex = -1;\n this.emitEvent('input', { value: this.value });\n };\n\n private handleChange = () => {\n this.emitEvent('change', { value: this.value });\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n const count = this.suggestions.length;\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n this.inputElement?.blur();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n if (!this.active) {\n this.show();\n return;\n }\n if (count > 0) {\n event.preventDefault();\n this.highlightedIndex = (this.highlightedIndex + 1) % count;\n }\n return;\n }\n\n if (event.key === 'ArrowUp') {\n if (count > 0 && this.active) {\n event.preventDefault();\n this.highlightedIndex = this.highlightedIndex <= 0 ? count - 1 : this.highlightedIndex - 1;\n }\n return;\n }\n\n if (event.key === 'Enter') {\n if (this.active && this.highlightedIndex >= 0 && this.highlightedIndex < count) {\n const item = this.suggestions[this.highlightedIndex];\n if (item !== undefined) {\n event.preventDefault();\n this.selectSuggestion(item, this.highlightedIndex);\n }\n } else {\n this.emitEvent('search', { value: this.value });\n }\n }\n };\n\n private handleTriggerClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.show();\n };\n\n private handleTriggerKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.show();\n }\n };\n\n private handleTrailingTriggerClick = (event: MouseEvent) => {\n event.stopPropagation();\n const allowed = this.emitEvent('trailing-icon-click', { icon: this.trailingIcon });\n if (allowed) {\n this.show();\n }\n };\n\n private handleBackClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.close();\n };\n\n private handleScrimClick = () => {\n this.close();\n };\n\n private handleClearClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.clear();\n };\n\n private selectSuggestion(suggestion: string | SearchSuggestion, index: number) {\n const label = typeof suggestion === 'string' ? suggestion : suggestion.label;\n const value = typeof suggestion === 'string' ? suggestion : (suggestion.value ?? suggestion.label);\n\n this.value = value;\n this.setFormValue(this.value);\n this.toggleAttribute('has-value', Boolean(this.value));\n this.emitEvent('suggestion-select', { suggestion, label, value, index });\n this.emitEvent('search', { value: this.value, suggestion });\n\n if (this.autoDeactivateOnSelect) {\n this.close();\n }\n }\n\n private renderSuggestionItem(suggestion: string | SearchSuggestion, index: number) {\n const isString = typeof suggestion === 'string';\n const label = isString ? suggestion : suggestion.label;\n const supportingText = !isString ? suggestion.supportingText : undefined;\n const trailingSupportingText = !isString ? suggestion.trailingSupportingText : undefined;\n const iconName = !isString && suggestion.icon ? suggestion.icon : 'history';\n const isHighlighted = this.highlightedIndex === index;\n\n return html`\n <div\n class=\"suggestion-item ${isHighlighted ? 'highlighted' : ''}\"\n role=\"option\"\n aria-selected=${isHighlighted ? 'true' : 'false'}\n @click=${() => this.selectSuggestion(suggestion, index)}\n >\n <span class=\"suggestion-icon\">\n <md-icon name=${iconName}></md-icon>\n </span>\n <div class=\"suggestion-text\">\n <span class=\"suggestion-label\">${label}</span>\n ${supportingText ? html`<span class=\"suggestion-supporting\">${supportingText}</span>` : nothing}\n </div>\n ${trailingSupportingText ? html`<span class=\"suggestion-trailing\">${trailingSupportingText}</span>` : nothing}\n </div>\n `;\n }\n\n override render() {\n const showBack = this.active && this.showBackButton;\n const hasTrailing = Boolean(this.trailingIcon);\n\n return html`\n <div\n class=\"search-trigger-container ${hasTrailing ? 'has-trailing' : ''}\"\n role=\"button\"\n tabindex=\"0\"\n aria-label=${this.placeholder || 'Search'}\n title=${this.placeholder || 'Search'}\n ?disabled=${this.disabled}\n @click=${this.handleTriggerClick}\n @keydown=${this.handleTriggerKeyDown}\n >\n <button\n class=\"trigger-btn\"\n type=\"button\"\n aria-label=${this.placeholder || 'Search'}\n title=${this.placeholder || 'Search'}\n ?disabled=${this.disabled}\n @click=${this.handleTriggerClick}\n >\n <md-icon name=${this.leadingIcon || 'search'}></md-icon>\n </button>\n\n ${hasTrailing\n ? html`\n <div class=\"trigger-divider\" aria-hidden=\"true\"></div>\n <button\n class=\"trigger-btn trigger-trailing-btn\"\n type=\"button\"\n aria-label=${this.trailingIcon}\n title=${this.trailingIcon}\n ?disabled=${this.disabled}\n @click=${this.handleTrailingTriggerClick}\n >\n <md-icon name=${this.trailingIcon}></md-icon>\n </button>\n `\n : nothing}\n </div>\n\n <div class=\"scrim\" @click=${this.handleScrimClick}></div>\n\n <div class=\"search-container\" role=\"search\">\n <div class=\"search-bar-header\">\n <span class=\"leading-slot\">\n <slot name=\"leading-icon\">\n ${showBack\n ? html`\n <button\n class=\"icon-btn\"\n type=\"button\"\n aria-label=\"Back\"\n @click=${this.handleBackClick}\n >\n <md-icon name=${this.activeLeadingIcon}></md-icon>\n </button>\n `\n : html`\n <span class=\"icon-btn\" style=\"cursor: default;\">\n <md-icon name=${this.leadingIcon}></md-icon>\n </span>\n `}\n </slot>\n </span>\n\n <div class=\"input-wrapper\">\n <input\n type=\"search\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=${this.active ? 'true' : 'false'}\n aria-label=${this.placeholder}\n placeholder=${this.placeholder}\n .value=${this.value}\n ?disabled=${this.disabled}\n @input=${this.handleInput}\n @change=${this.handleChange}\n @keydown=${this.handleKeyDown}\n @focus=${this.handleFocus}\n @click=${this.handleFocus}\n />\n </div>\n\n <span class=\"trailing-slot\">\n ${this.showClearButton && this.value\n ? html`\n <button\n class=\"icon-btn clear-btn\"\n type=\"button\"\n aria-label=\"Clear search\"\n @click=${this.handleClearClick}\n >\n <md-icon name=\"close\"></md-icon>\n </button>\n `\n : nothing}\n\n <slot name=\"trailing-icon\">\n ${this.trailingIcon\n ? html`\n <span class=\"icon-btn\" style=\"cursor: default;\">\n <md-icon name=${this.trailingIcon}></md-icon>\n </span>\n `\n : nothing}\n </slot>\n </span>\n </div>\n\n <div class=\"divider\"></div>\n\n <div class=\"suggestions-container\" role=\"listbox\" aria-label=\"Suggestions\">\n <slot name=\"suggestions\">\n ${this.suggestions.map((item, idx) => this.renderSuggestionItem(item, idx))}\n </slot>\n <div class=\"extra-content\">\n <slot></slot>\n </div>\n </div>\n </div>\n `;\n }\n}\n\n@customElement('md-search')\nexport class MdSearch extends MdSearchBar {}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-search-bar': MdSearchBar;\n 'md-search': MdSearch;\n }\n}\n"],"mappings":";;;;;AAEA,IAAa,IAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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"}