@felleslosninger/minid-elements 0.0.97 → 0.0.99

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 (88) hide show
  1. package/dist/components/alert.component.d.ts.map +1 -1
  2. package/dist/components/alert.js +44 -25
  3. package/dist/components/alert.js.map +1 -1
  4. package/dist/components/button.component.d.ts +4 -5
  5. package/dist/components/button.component.d.ts.map +1 -1
  6. package/dist/components/button.js +58 -53
  7. package/dist/components/button.js.map +1 -1
  8. package/dist/components/combobox.component.d.ts +1 -13
  9. package/dist/components/combobox.component.d.ts.map +1 -1
  10. package/dist/components/combobox.js +6 -17
  11. package/dist/components/combobox.js.map +1 -1
  12. package/dist/components/{modal.component.d.ts → dialog.component.d.ts} +15 -16
  13. package/dist/components/dialog.component.d.ts.map +1 -0
  14. package/dist/components/{modal.js → dialog.js} +41 -77
  15. package/dist/components/dialog.js.map +1 -0
  16. package/dist/components/dropdown.component.d.ts +4 -5
  17. package/dist/components/dropdown.component.d.ts.map +1 -1
  18. package/dist/components/dropdown.js +37 -57
  19. package/dist/components/dropdown.js.map +1 -1
  20. package/dist/components/heading.component.d.ts.map +1 -1
  21. package/dist/components/heading.js +9 -10
  22. package/dist/components/heading.js.map +1 -1
  23. package/dist/components/helptext.component.d.ts +1 -25
  24. package/dist/components/helptext.component.d.ts.map +1 -1
  25. package/dist/components/helptext.js +20 -48
  26. package/dist/components/helptext.js.map +1 -1
  27. package/dist/components/icon/icon.component.d.ts +1 -4
  28. package/dist/components/icon/icon.component.d.ts.map +1 -1
  29. package/dist/components/icon/icon.js +3 -12
  30. package/dist/components/icon/icon.js.map +1 -1
  31. package/dist/components/link.component.d.ts +0 -4
  32. package/dist/components/link.component.d.ts.map +1 -1
  33. package/dist/components/link.js +3 -22
  34. package/dist/components/link.js.map +1 -1
  35. package/dist/components/menu-item.component.d.ts +0 -3
  36. package/dist/components/menu-item.component.d.ts.map +1 -1
  37. package/dist/components/menu-item.js +25 -57
  38. package/dist/components/menu-item.js.map +1 -1
  39. package/dist/components/menu.component.d.ts +2 -11
  40. package/dist/components/menu.component.d.ts.map +1 -1
  41. package/dist/components/menu.js +12 -48
  42. package/dist/components/menu.js.map +1 -1
  43. package/dist/components/paragraph.component.d.ts.map +1 -1
  44. package/dist/components/paragraph.js +5 -6
  45. package/dist/components/paragraph.js.map +1 -1
  46. package/dist/components/phone-input.component.d.ts +3 -4
  47. package/dist/components/phone-input.component.d.ts.map +1 -1
  48. package/dist/components/phone-input.js +23 -62
  49. package/dist/components/phone-input.js.map +1 -1
  50. package/dist/components/popup.component.d.ts +2 -1
  51. package/dist/components/popup.component.d.ts.map +1 -1
  52. package/dist/components/popup.js +4 -0
  53. package/dist/components/popup.js.map +1 -1
  54. package/dist/components/radio-button.component.d.ts +0 -3
  55. package/dist/components/radio-button.component.d.ts.map +1 -1
  56. package/dist/components/radio-button.js.map +1 -1
  57. package/dist/components/radio.component.d.ts +0 -3
  58. package/dist/components/radio.component.d.ts.map +1 -1
  59. package/dist/components/radio.js +2 -5
  60. package/dist/components/radio.js.map +1 -1
  61. package/dist/components/textfield.component.d.ts +6 -29
  62. package/dist/components/textfield.component.d.ts.map +1 -1
  63. package/dist/components/textfield.js +55 -131
  64. package/dist/components/textfield.js.map +1 -1
  65. package/dist/components/tooltip.component.d.ts +4 -37
  66. package/dist/components/tooltip.component.d.ts.map +1 -1
  67. package/dist/components/tooltip.js +18 -34
  68. package/dist/components/tooltip.js.map +1 -1
  69. package/dist/designsystemet-tailwind.css +293 -474
  70. package/dist/index.css +0 -1355
  71. package/dist/index.d.ts +1 -2
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +3 -5
  74. package/dist/index.js.map +1 -1
  75. package/dist/mixins/tailwind.mixin.d.ts.map +1 -1
  76. package/dist/mixins/tailwind.mixin.js +3 -4
  77. package/dist/mixins/tailwind.mixin.js.map +1 -1
  78. package/dist/types/animation-name.d.ts +1 -1
  79. package/dist/types/animation-name.d.ts.map +1 -1
  80. package/dist/utilities/country-labels-no.d.ts +4 -0
  81. package/dist/utilities/country-labels-no.d.ts.map +1 -0
  82. package/dist/utilities/{countries.js → country-labels-no.js} +3 -3
  83. package/dist/utilities/{countries.js.map → country-labels-no.js.map} +1 -1
  84. package/package.json +10 -4
  85. package/dist/components/modal.component.d.ts.map +0 -1
  86. package/dist/components/modal.js.map +0 -1
  87. package/dist/utilities/countries.d.ts +0 -3
  88. package/dist/utilities/countries.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"alert.component.d.ts","sourceRoot":"","sources":["../../src/components/alert.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAIrD,OAAO,uBAAuB,CAAC;AAW/B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,UAAU,CAAC;KACzB;CACF;;AA4DD;;;;;;;;;;;;;GAaG;AACH,qBACa,UAAW,SAAQ,eAA0B;IACxD,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IAGvC,IAAI,EAAG,WAAW,CAAC;IAEnB;;;OAGG;IAEH,IAAI,UAAS;IAEb;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;;OAIG;IAEH,QAAQ,SAAY;IAEpB;;OAEG;IAEH,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAU;IAE7D;;OAEG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,OAAO,CAAC,aAAa,CAAiB;IAGtC,mBAAmB,CAAC,EAAE;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,YAAY;IAIZ,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAahB,gBAAgB;IAwCtB,oBAAoB;IAIpB;;OAEG;IACG,IAAI;IASV;;OAEG;IACG,IAAI;IASV;;;;OAIG;IACG,KAAK,CACT,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAC1C,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,EACjC,QAAQ,UAAO;IA6DR,MAAM;CAwEhB"}
1
+ {"version":3,"file":"alert.component.d.ts","sourceRoot":"","sources":["../../src/components/alert.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAIrD,OAAO,uBAAuB,CAAC;AAW/B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,UAAU,CAAC;KACzB;CACF;;AA4DD;;;;;;;;;;;;;GAaG;AACH,qBACa,UAAW,SAAQ,eAA0B;IACxD,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IAGvC,IAAI,EAAG,WAAW,CAAC;IAEnB;;;OAGG;IAEH,IAAI,UAAS;IAEb;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;;OAIG;IAEH,QAAQ,SAAY;IAEpB;;OAEG;IAEH,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAU;IAE7D;;OAEG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,OAAO,CAAC,aAAa,CAAiB;IAGtC,mBAAmB,CAAC,EAAE;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,YAAY;IAIZ,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAahB,gBAAgB;IAwCtB,oBAAoB;IAIpB;;OAEG;IACG,IAAI;IASV;;OAEG;IACG,IAAI;IASV;;;;OAIG;IACG,KAAK,CACT,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAC1C,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,EACjC,QAAQ,UAAO;IA6DR,MAAM;CA2FhB"}
@@ -31,7 +31,7 @@ const styles = [
31
31
  font-size: var(--fds-alert-icon-size);
32
32
  }
33
33
 
34
- .close-button {
34
+ /* .close-button {
35
35
  font-size: 24px;
36
36
  display: inline-flex;
37
37
  align-self: center;
@@ -40,7 +40,7 @@ const styles = [
40
40
  margin-top: -10px;
41
41
  margin-bottom: -10px;
42
42
  color: var(--fds-alert-icon-color);
43
- }
43
+ } */
44
44
 
45
45
  .close-button:hover {
46
46
  background-color: color-mix(
@@ -226,42 +226,49 @@ let MinidAlert = class extends styled(LitElement, styles) {
226
226
  const warning = this.severity === "warning";
227
227
  const info = this.severity === "info";
228
228
  const success = this.severity === "success";
229
+ const sm = this.size === "sm";
230
+ const md = this.size === "md";
231
+ const lg = this.size === "lg";
229
232
  const iconName = danger && "xmark-octagon-fill" || warning && "exclamationmark-triangle-fill" || success && "checkmark-circle-fill" || "information-square-fill";
230
233
  this.iconlabel ??= danger && "Feil" || warning && "Advarsel" || success && "Suksess" || "Informasjon";
231
234
  return html`
232
235
  <div
233
236
  part="base"
234
237
  class="${classMap({
235
- "fds-alert": true,
236
- "fds-alert--sm": this.size === "sm",
237
- "fds-alert--md": this.size === "md",
238
- "fds-alert--lg": this.size === "lg",
239
- "fds-alert--warning": warning,
240
- "fds-alert--success": success,
241
- "fds-alert--info": info,
242
- "fds-alert--danger": danger,
243
- "fds-alert--elevated": this.elevated
244
- })}"
238
+ "text-body-sm": sm,
239
+ "text-body-md": md,
240
+ "text-body-lg": lg,
241
+ "bg-danger-surface-tinted": danger,
242
+ "bg-info-surface-tinted": info,
243
+ "bg-success-surface-tinted": success,
244
+ "bg-warning-surface-tinted": warning,
245
+ "border-danger": danger,
246
+ "border-info": info,
247
+ "border-success": success,
248
+ "border-warning": warning,
249
+ "text-danger": danger,
250
+ "text-info": info,
251
+ "text-success": success,
252
+ "text-warning": warning,
253
+ "shadow-md": this.elevated
254
+ })} grid grid-cols-[auto_1fr_auto] gap-2 rounded border p-6"
245
255
  @mouseenter=${this.pauseAutoHide}
246
256
  @mouseleave=${this.resumeAutoHide}
247
257
  >
248
258
  <mid-icon
249
- class="fds-alert__icon"
259
+ class="${classMap({
260
+ "text-info-subtle": info,
261
+ "text-danger-subtle": danger,
262
+ "text-success-subtle": success,
263
+ "text-warning-subtle": warning
264
+ })} size-7"
250
265
  name="${iconName}"
251
266
  library="system"
252
267
  alt=${ifDefined(this.iconlabel)}
253
268
  ></mid-icon>
254
- <div
255
- aria-live="polite"
256
- class=${classMap({
257
- "fds-paragraph": true,
258
- "fds-paragraph--sm": this.size === "sm",
259
- "fds-paragraph--md": this.size === "md",
260
- "fds-paragraph--lg": this.size === "lg"
261
- })}
262
- >
269
+ <div aria-live="polite">
263
270
  <slot>
264
- ${!this.notificationContent?.title ? nothing : html`<h2 class="fds-heading fds-heading--xs">
271
+ ${!this.notificationContent?.title ? nothing : html`<h2 class="text-heading-xs">
265
272
  ${this.notificationContent?.title}
266
273
  </h2>`}
267
274
  ${this.notificationContent?.message}
@@ -271,8 +278,20 @@ let MinidAlert = class extends styled(LitElement, styles) {
271
278
  </slot>
272
279
  </div>
273
280
  ${this.closable ? html`
274
- <button class="close-button" @click="${this.hide}">
275
- <mid-icon name="xmark"> </mid-icon>
281
+ <button
282
+ class="${classMap({
283
+ "text-info-subtle": info,
284
+ "text-danger-subtle": danger,
285
+ "text-success-subtle": success,
286
+ "text-warning-subtle": warning,
287
+ "hover:bg-danger-surface-hover": danger,
288
+ "hover:bg-info-surface-hover": info,
289
+ "hover:bg-success-surface-hover": success,
290
+ "hover:bg-warning-surface-hover": warning
291
+ })} -my-4 flex self-center rounded p-4"
292
+ @click="${this.hide}"
293
+ >
294
+ <mid-icon class="size-6" name="xmark"> </mid-icon>
276
295
  </button>
277
296
  ` : nothing}
278
297
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"alert.js","sources":["../../src/components/alert.component.ts"],"sourcesContent":["import { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styled } from '../mixins/tailwind.mixin.ts';\nimport './icon/icon.component';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { watch } from '../internal/watch';\nimport {\n getAnimation,\n setDefaultAnimation,\n} from '../utilities/animation-registry';\nimport { waitForEvent } from '../internal/event';\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { MidIconName } from '../types/icon-name';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'mid-alert': MinidAlert;\n }\n}\n\nconst toastStack = Object.assign(document.createElement('div'), {\n className: 'mid-toast-stack',\n});\n\nconst styles = [\n css`\n [hidden] {\n display: none !important;\n }\n\n .fds-alert__icon {\n font-size: var(--fds-alert-icon-size);\n }\n\n .close-button {\n font-size: 24px;\n display: inline-flex;\n align-self: center;\n padding: 10px;\n border-radius: 4px;\n margin-top: -10px;\n margin-bottom: -10px;\n color: var(--fds-alert-icon-color);\n }\n\n .close-button:hover {\n background-color: color-mix(\n in srgb,\n var(--fds-alert-icon-color) 20%,\n var(--fds-alert-background)\n );\n }\n\n .message-details {\n margin-top: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0.75rem;\n background-color: color-mix(\n in srgb,\n var(--fds-alert-icon-color) 20%,\n var(--fds-alert-background)\n );\n border-left: solid 4px\n color-mix(\n in srgb,\n var(--fds-alert-border-color),\n var(--fds-alert-background)\n );\n }\n\n .message-details pre {\n white-space: pre-wrap;\n word-break: break-all;\n }\n `,\n];\n\n/**\n * Alerts need to have the `open` attribute to be displayed\n * @csspart base - Select the base of the alert\n *\n * @event mid-show - Emitted when the alert opens.\n * @event mid-after-show - Emitted after the alert opens and all animations are complete.\n * @event mid-hide - Emitted when the alert closes.\n * @event mid-after-hide - Emitted after the alert closes and all animations are complete.\n *\n * @slot -- The default slot for the content of the alert\n *\n * @animation alert.show - The animation to use when showing the alert.\n * @animation alert.hide - The animation to use when hiding the alert.\n */\n@customElement('mid-alert')\nexport class MinidAlert extends styled(LitElement, styles) {\n private autoHideTimeout?: number;\n private remainingTimeInterval?: number;\n\n @query('[part~=\"base\"]')\n base!: HTMLElement;\n\n /**\n * Indicates whether or not the alert is open. You can toggle this attribute to show and hide the alert, or you can\n * use the `show()` and `hide()` methods and this attribute will reflect the alert's open state.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Enables a close button that allows the user to dismiss the alert.\n */\n @property({ type: Boolean, reflect: true })\n closable = false;\n\n /**\n * The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with\n * the alert before it closes (e.g. moves the mouse over it), the timer will restart. Defaults to `Infinity`, meaning\n * the alert will not close on its own.\n */\n @property({ type: Number })\n duration = Infinity;\n\n /**\n * Sets color and icon according to severity\n */\n @property({ reflect: true })\n severity: 'warning' | 'info' | 'danger' | 'success' = 'info';\n\n /**\n * Sets size of icon, padding and font-size.\n */\n @property({ reflect: true })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Adds a shadow to elevate the component\n */\n @property({ type: Boolean })\n elevated = false;\n\n /**\n * Sets the `aria-label` on the icon\n * Use this to inform screenreaders of severity. Defaults to Norwegian.\n */\n @property({ type: String })\n iconlabel?: string;\n\n @state()\n private remainingTime = this.duration;\n\n @state()\n notificationContent?: {\n title?: string;\n message: string;\n details?: string;\n };\n\n firstUpdated() {\n this.base.hidden = !this.open;\n }\n\n private restartAutoHide() {\n clearTimeout(this.autoHideTimeout);\n clearInterval(this.remainingTimeInterval);\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(\n () => this.hide(),\n this.duration\n );\n this.remainingTime = this.duration;\n this.remainingTimeInterval = window.setInterval(() => {\n this.remainingTime -= 100;\n }, 100);\n }\n }\n\n private pauseAutoHide() {\n clearTimeout(this.autoHideTimeout);\n clearInterval(this.remainingTimeInterval);\n }\n\n private resumeAutoHide() {\n if (this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(\n () => this.hide(),\n this.remainingTime\n );\n this.remainingTimeInterval = window.setInterval(() => {\n this.remainingTime -= 100;\n }, 100);\n }\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange() {\n if (this.open) {\n // Show\n this.dispatchEvent(\n new Event('mid-show', { composed: true, bubbles: true })\n );\n\n if (this.duration < Infinity) {\n this.restartAutoHide();\n }\n\n await stopAnimations(this.base);\n this.base.hidden = false;\n const { keyframes, options } = getAnimation(this, 'alert.show');\n await animateTo(this.base, keyframes, options);\n\n this.dispatchEvent(\n new Event('mid-after-show', { composed: true, bubbles: true })\n );\n } else {\n // Hide\n this.dispatchEvent(\n new Event('mid-hide', { composed: true, bubbles: true })\n );\n\n clearTimeout(this.autoHideTimeout);\n clearInterval(this.remainingTimeInterval);\n\n await stopAnimations(this.base);\n const { keyframes, options } = getAnimation(this, 'alert.hide');\n await animateTo(this.base, keyframes, options);\n this.base.hidden = true;\n\n this.dispatchEvent(\n new Event('mid-after-hide', { composed: true, bubbles: true })\n );\n }\n }\n\n @watch('duration')\n handleDurationChange() {\n this.restartAutoHide();\n }\n\n /**\n * Shows the alert.\n */\n async show() {\n if (this.open) {\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'mid-after-show');\n }\n\n /**\n * Hides the alert\n */\n async hide() {\n if (!this.open) {\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'mid-after-hide');\n }\n\n /**\n * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\n * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\n * calling this method again. The returned promise will resolve after the alert is hidden.\n */\n async toast(\n content: MinidAlert['notificationContent'],\n duration?: number,\n severity?: MinidAlert['severity'],\n closable = true\n ) {\n return new Promise<void>((resolve) => {\n if (toastStack.parentElement === null) {\n document.body.append(toastStack);\n }\n\n if (content) {\n this.notificationContent = content;\n }\n\n if (severity) {\n this.severity = severity;\n }\n\n if (duration) {\n this.duration = duration;\n }\n\n this.closable = closable;\n this.elevated = true;\n\n // We wrap this in a timeout for `getBoundingClientRect` to get the height properly\n setTimeout(() => {\n toastStack.appendChild(this);\n\n animateTo(\n toastStack,\n [\n {\n transform: `translateY(${this.getBoundingClientRect().height}px)`,\n },\n { transform: 'translateY(0px)' },\n ],\n { duration: 250, easing: 'ease-out' }\n );\n }, 0);\n\n // Wait for the toast stack to render\n requestAnimationFrame(() => {\n // Force a reflow for the initial transition\n this.clientWidth;\n this.show();\n });\n\n this.addEventListener(\n 'mid-after-hide',\n () => {\n toastStack.removeChild(this);\n resolve();\n\n // Remove the toast stack from the DOM when there are no more alerts\n if (toastStack.querySelector('mid-alert') === null) {\n toastStack.remove();\n }\n },\n { once: true }\n );\n });\n }\n\n override render() {\n const danger = this.severity === 'danger';\n const warning = this.severity === 'warning';\n const info = this.severity === 'info';\n const success = this.severity === 'success';\n const iconName: MidIconName =\n (danger && 'xmark-octagon-fill') ||\n (warning && 'exclamationmark-triangle-fill') ||\n (success && 'checkmark-circle-fill') ||\n 'information-square-fill';\n this.iconlabel ??=\n (danger && 'Feil') ||\n (warning && 'Advarsel') ||\n (success && 'Suksess') ||\n 'Informasjon';\n\n return html`\n <div\n part=\"base\"\n class=\"${classMap({\n 'fds-alert': true,\n 'fds-alert--sm': this.size === 'sm',\n 'fds-alert--md': this.size === 'md',\n 'fds-alert--lg': this.size === 'lg',\n 'fds-alert--warning': warning,\n 'fds-alert--success': success,\n 'fds-alert--info': info,\n 'fds-alert--danger': danger,\n 'fds-alert--elevated': this.elevated,\n })}\"\n @mouseenter=${this.pauseAutoHide}\n @mouseleave=${this.resumeAutoHide}\n >\n <mid-icon\n class=\"fds-alert__icon\"\n name=\"${iconName}\"\n library=\"system\"\n alt=${ifDefined(this.iconlabel)}\n ></mid-icon>\n <div\n aria-live=\"polite\"\n class=${classMap({\n 'fds-paragraph': true,\n 'fds-paragraph--sm': this.size === 'sm',\n 'fds-paragraph--md': this.size === 'md',\n 'fds-paragraph--lg': this.size === 'lg',\n })}\n >\n <slot>\n ${!this.notificationContent?.title\n ? nothing\n : html`<h2 class=\"fds-heading fds-heading--xs\">\n ${this.notificationContent?.title}\n </h2>`}\n ${this.notificationContent?.message}\n ${!this.notificationContent?.details\n ? nothing\n : html`<div class=\"message-details\">\n <pre>${this.notificationContent?.details}</pre>\n </div>`}\n </slot>\n </div>\n ${this.closable\n ? html`\n <button class=\"close-button\" @click=\"${this.hide}\">\n <mid-icon name=\"xmark\"> </mid-icon>\n </button>\n `\n : nothing}\n </div>\n `;\n }\n}\n\nsetDefaultAnimation('alert.show', {\n keyframes: [\n { opacity: 0, transform: 'translateY(100%)' },\n { opacity: 1, transform: 'translateY(0px)' },\n ],\n options: { duration: 400, easing: 'ease-out' },\n});\n\nsetDefaultAnimation('alert.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.8 },\n ],\n options: { duration: 250, easing: 'ease-in' },\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBA,MAAM,aAAa,OAAO,OAAO,SAAS,cAAc,KAAK,GAAG;AAAA,EAC9D,WAAW;AACb,CAAC;AAED,MAAM,SAAS;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmDF;AAiBO,IAAM,aAAN,cAAyB,OAAO,YAAY,MAAM,EAAE;AAAA,EAApD,cAAA;AAAA,UAAA,GAAA,SAAA;AAYE,SAAA,OAAA;AAMI,SAAA,WAAA;AAQA,SAAA,WAAA;AAM2C,SAAA,WAAA;AAM3B,SAAA,OAAA;AAMhB,SAAA,WAAA;AAUX,SAAQ,gBAAgB,KAAK;AAAA,EAAA;AAAA,EAS7B,eAAe;AACR,SAAA,KAAK,SAAS,CAAC,KAAK;AAAA,EAAA;AAAA,EAGnB,kBAAkB;AACxB,iBAAa,KAAK,eAAe;AACjC,kBAAc,KAAK,qBAAqB;AACxC,QAAI,KAAK,QAAQ,KAAK,WAAW,UAAU;AACzC,WAAK,kBAAkB,OAAO;AAAA,QAC5B,MAAM,KAAK,KAAK;AAAA,QAChB,KAAK;AAAA,MACP;AACA,WAAK,gBAAgB,KAAK;AACrB,WAAA,wBAAwB,OAAO,YAAY,MAAM;AACpD,aAAK,iBAAiB;AAAA,SACrB,GAAG;AAAA,IAAA;AAAA,EACR;AAAA,EAGM,gBAAgB;AACtB,iBAAa,KAAK,eAAe;AACjC,kBAAc,KAAK,qBAAqB;AAAA,EAAA;AAAA,EAGlC,iBAAiB;AACnB,QAAA,KAAK,WAAW,UAAU;AAC5B,WAAK,kBAAkB,OAAO;AAAA,QAC5B,MAAM,KAAK,KAAK;AAAA,QAChB,KAAK;AAAA,MACP;AACK,WAAA,wBAAwB,OAAO,YAAY,MAAM;AACpD,aAAK,iBAAiB;AAAA,SACrB,GAAG;AAAA,IAAA;AAAA,EACR;AAAA,EAIF,MAAM,mBAAmB;AACvB,QAAI,KAAK,MAAM;AAER,WAAA;AAAA,QACH,IAAI,MAAM,YAAY,EAAE,UAAU,MAAM,SAAS,KAAM,CAAA;AAAA,MACzD;AAEI,UAAA,KAAK,WAAW,UAAU;AAC5B,aAAK,gBAAgB;AAAA,MAAA;AAGjB,YAAA,eAAe,KAAK,IAAI;AAC9B,WAAK,KAAK,SAAS;AACnB,YAAM,EAAE,WAAW,QAAA,IAAY,aAAa,MAAM,YAAY;AAC9D,YAAM,UAAU,KAAK,MAAM,WAAW,OAAO;AAExC,WAAA;AAAA,QACH,IAAI,MAAM,kBAAkB,EAAE,UAAU,MAAM,SAAS,KAAM,CAAA;AAAA,MAC/D;AAAA,IAAA,OACK;AAEA,WAAA;AAAA,QACH,IAAI,MAAM,YAAY,EAAE,UAAU,MAAM,SAAS,KAAM,CAAA;AAAA,MACzD;AAEA,mBAAa,KAAK,eAAe;AACjC,oBAAc,KAAK,qBAAqB;AAElC,YAAA,eAAe,KAAK,IAAI;AAC9B,YAAM,EAAE,WAAW,QAAA,IAAY,aAAa,MAAM,YAAY;AAC9D,YAAM,UAAU,KAAK,MAAM,WAAW,OAAO;AAC7C,WAAK,KAAK,SAAS;AAEd,WAAA;AAAA,QACH,IAAI,MAAM,kBAAkB,EAAE,UAAU,MAAM,SAAS,KAAM,CAAA;AAAA,MAC/D;AAAA,IAAA;AAAA,EACF;AAAA,EAIF,uBAAuB;AACrB,SAAK,gBAAgB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAMvB,MAAM,OAAO;AACX,QAAI,KAAK,MAAM;AACN,aAAA;AAAA,IAAA;AAGT,SAAK,OAAO;AACL,WAAA,aAAa,MAAM,gBAAgB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAM5C,MAAM,OAAO;AACP,QAAA,CAAC,KAAK,MAAM;AACP,aAAA;AAAA,IAAA;AAGT,SAAK,OAAO;AACL,WAAA,aAAa,MAAM,gBAAgB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ5C,MAAM,MACJ,SACA,UACA,UACA,WAAW,MACX;AACO,WAAA,IAAI,QAAc,CAAC,YAAY;AAChC,UAAA,WAAW,kBAAkB,MAAM;AAC5B,iBAAA,KAAK,OAAO,UAAU;AAAA,MAAA;AAGjC,UAAI,SAAS;AACX,aAAK,sBAAsB;AAAA,MAAA;AAG7B,UAAI,UAAU;AACZ,aAAK,WAAW;AAAA,MAAA;AAGlB,UAAI,UAAU;AACZ,aAAK,WAAW;AAAA,MAAA;AAGlB,WAAK,WAAW;AAChB,WAAK,WAAW;AAGhB,iBAAW,MAAM;AACf,mBAAW,YAAY,IAAI;AAE3B;AAAA,UACE;AAAA,UACA;AAAA,YACE;AAAA,cACE,WAAW,cAAc,KAAK,wBAAwB,MAAM;AAAA,YAC9D;AAAA,YACA,EAAE,WAAW,kBAAkB;AAAA,UACjC;AAAA,UACA,EAAE,UAAU,KAAK,QAAQ,WAAW;AAAA,QACtC;AAAA,SACC,CAAC;AAGJ,4BAAsB,MAAM;AAErB,aAAA;AACL,aAAK,KAAK;AAAA,MAAA,CACX;AAEI,WAAA;AAAA,QACH;AAAA,QACA,MAAM;AACJ,qBAAW,YAAY,IAAI;AACnB,kBAAA;AAGR,cAAI,WAAW,cAAc,WAAW,MAAM,MAAM;AAClD,uBAAW,OAAO;AAAA,UAAA;AAAA,QAEtB;AAAA,QACA,EAAE,MAAM,KAAK;AAAA,MACf;AAAA,IAAA,CACD;AAAA,EAAA;AAAA,EAGM,SAAS;AACV,UAAA,SAAS,KAAK,aAAa;AAC3B,UAAA,UAAU,KAAK,aAAa;AAC5B,UAAA,OAAO,KAAK,aAAa;AACzB,UAAA,UAAU,KAAK,aAAa;AAClC,UAAM,WACH,UAAU,wBACV,WAAW,mCACX,WAAW,2BACZ;AACF,SAAK,cACF,UAAU,UACV,WAAW,cACX,WAAW,aACZ;AAEK,WAAA;AAAA;AAAA;AAAA,iBAGM,SAAS;AAAA,MAChB,aAAa;AAAA,MACb,iBAAiB,KAAK,SAAS;AAAA,MAC/B,iBAAiB,KAAK,SAAS;AAAA,MAC/B,iBAAiB,KAAK,SAAS;AAAA,MAC/B,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,MACrB,uBAAuB,KAAK;AAAA,IAAA,CAC7B,CAAC;AAAA,sBACY,KAAK,aAAa;AAAA,sBAClB,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA,kBAIvB,QAAQ;AAAA;AAAA,gBAEV,UAAU,KAAK,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA,kBAIvB,SAAS;AAAA,MACf,iBAAiB;AAAA,MACjB,qBAAqB,KAAK,SAAS;AAAA,MACnC,qBAAqB,KAAK,SAAS;AAAA,MACnC,qBAAqB,KAAK,SAAS;AAAA,IAAA,CACpC,CAAC;AAAA;AAAA;AAAA,cAGE,CAAC,KAAK,qBAAqB,QACzB,UACA;AAAA,oBACI,KAAK,qBAAqB,KAAK;AAAA,sBAC7B;AAAA,cACR,KAAK,qBAAqB,OAAO;AAAA,cACjC,CAAC,KAAK,qBAAqB,UACzB,UACA;AAAA,yBACS,KAAK,qBAAqB,OAAO;AAAA,uBACnC;AAAA;AAAA;AAAA,UAGb,KAAK,WACH;AAAA,qDACyC,KAAK,IAAI;AAAA;AAAA;AAAA,gBAIlD,OAAO;AAAA;AAAA;AAAA,EAAA;AAInB;AAjTE,gBAAA;AAAA,EADC,MAAM,gBAAgB;AAAA,GAJZ,WAKX,WAAA,QAAA,CAAA;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAM,CAAA;AAAA,GAX/B,WAYX,WAAA,QAAA,CAAA;AAMA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAM,CAAA;AAAA,GAjB/B,WAkBX,WAAA,YAAA,CAAA;AAQA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAzBf,WA0BX,WAAA,YAAA,CAAA;AAMA,gBAAA;AAAA,EADC,SAAS,EAAE,SAAS,KAAM,CAAA;AAAA,GA/BhB,WAgCX,WAAA,YAAA,CAAA;AAMA,gBAAA;AAAA,EADC,SAAS,EAAE,SAAS,KAAM,CAAA;AAAA,GArChB,WAsCX,WAAA,QAAA,CAAA;AAMA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GA3ChB,WA4CX,WAAA,YAAA,CAAA;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAlDf,WAmDX,WAAA,aAAA,CAAA;AAGQ,gBAAA;AAAA,EADP,MAAM;AAAA,GArDI,WAsDH,WAAA,iBAAA,CAAA;AAGR,gBAAA;AAAA,EADC,MAAM;AAAA,GAxDI,WAyDX,WAAA,uBAAA,CAAA;AA2CM,gBAAA;AAAA,EADL,MAAM,QAAQ,EAAE,sBAAsB,KAAM,CAAA;AAAA,GAnGlC,WAoGL,WAAA,oBAAA,CAAA;AAwCN,gBAAA;AAAA,EADC,MAAM,UAAU;AAAA,GA3IN,WA4IX,WAAA,wBAAA,CAAA;AA5IW,aAAN,gBAAA;AAAA,EADN,cAAc,WAAW;AAAA,GACb,UAAA;AAwTb,oBAAoB,cAAc;AAAA,EAChC,WAAW;AAAA,IACT,EAAE,SAAS,GAAG,WAAW,mBAAmB;AAAA,IAC5C,EAAE,SAAS,GAAG,WAAW,kBAAkB;AAAA,EAC7C;AAAA,EACA,SAAS,EAAE,UAAU,KAAK,QAAQ,WAAW;AAC/C,CAAC;AAED,oBAAoB,cAAc;AAAA,EAChC,WAAW;AAAA,IACT,EAAE,SAAS,GAAG,OAAO,EAAE;AAAA,IACvB,EAAE,SAAS,GAAG,OAAO,IAAI;AAAA,EAC3B;AAAA,EACA,SAAS,EAAE,UAAU,KAAK,QAAQ,UAAU;AAC9C,CAAC;"}
1
+ {"version":3,"file":"alert.js","sources":["../../src/components/alert.component.ts"],"sourcesContent":["import { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styled } from '../mixins/tailwind.mixin.ts';\nimport './icon/icon.component';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { watch } from '../internal/watch';\nimport {\n getAnimation,\n setDefaultAnimation,\n} from '../utilities/animation-registry';\nimport { waitForEvent } from '../internal/event';\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { type MidIconName } from '../types/icon-name';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'mid-alert': MinidAlert;\n }\n}\n\nconst toastStack = Object.assign(document.createElement('div'), {\n className: 'mid-toast-stack',\n});\n\nconst styles = [\n css`\n [hidden] {\n display: none !important;\n }\n\n .fds-alert__icon {\n font-size: var(--fds-alert-icon-size);\n }\n\n /* .close-button {\n font-size: 24px;\n display: inline-flex;\n align-self: center;\n padding: 10px;\n border-radius: 4px;\n margin-top: -10px;\n margin-bottom: -10px;\n color: var(--fds-alert-icon-color);\n } */\n\n .close-button:hover {\n background-color: color-mix(\n in srgb,\n var(--fds-alert-icon-color) 20%,\n var(--fds-alert-background)\n );\n }\n\n .message-details {\n margin-top: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0.75rem;\n background-color: color-mix(\n in srgb,\n var(--fds-alert-icon-color) 20%,\n var(--fds-alert-background)\n );\n border-left: solid 4px\n color-mix(\n in srgb,\n var(--fds-alert-border-color),\n var(--fds-alert-background)\n );\n }\n\n .message-details pre {\n white-space: pre-wrap;\n word-break: break-all;\n }\n `,\n];\n\n/**\n * Alerts need to have the `open` attribute to be displayed\n * @csspart base - Select the base of the alert\n *\n * @event mid-show - Emitted when the alert opens.\n * @event mid-after-show - Emitted after the alert opens and all animations are complete.\n * @event mid-hide - Emitted when the alert closes.\n * @event mid-after-hide - Emitted after the alert closes and all animations are complete.\n *\n * @slot -- The default slot for the content of the alert\n *\n * @animation alert.show - The animation to use when showing the alert.\n * @animation alert.hide - The animation to use when hiding the alert.\n */\n@customElement('mid-alert')\nexport class MinidAlert extends styled(LitElement, styles) {\n private autoHideTimeout?: number;\n private remainingTimeInterval?: number;\n\n @query('[part~=\"base\"]')\n base!: HTMLElement;\n\n /**\n * Indicates whether or not the alert is open. You can toggle this attribute to show and hide the alert, or you can\n * use the `show()` and `hide()` methods and this attribute will reflect the alert's open state.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Enables a close button that allows the user to dismiss the alert.\n */\n @property({ type: Boolean, reflect: true })\n closable = false;\n\n /**\n * The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with\n * the alert before it closes (e.g. moves the mouse over it), the timer will restart. Defaults to `Infinity`, meaning\n * the alert will not close on its own.\n */\n @property({ type: Number })\n duration = Infinity;\n\n /**\n * Sets color and icon according to severity\n */\n @property({ reflect: true })\n severity: 'warning' | 'info' | 'danger' | 'success' = 'info';\n\n /**\n * Sets size of icon, padding and font-size.\n */\n @property({ reflect: true })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Adds a shadow to elevate the component\n */\n @property({ type: Boolean })\n elevated = false;\n\n /**\n * Sets the `aria-label` on the icon\n * Use this to inform screenreaders of severity. Defaults to Norwegian.\n */\n @property({ type: String })\n iconlabel?: string;\n\n @state()\n private remainingTime = this.duration;\n\n @state()\n notificationContent?: {\n title?: string;\n message: string;\n details?: string;\n };\n\n firstUpdated() {\n this.base.hidden = !this.open;\n }\n\n private restartAutoHide() {\n clearTimeout(this.autoHideTimeout);\n clearInterval(this.remainingTimeInterval);\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(\n () => this.hide(),\n this.duration\n );\n this.remainingTime = this.duration;\n this.remainingTimeInterval = window.setInterval(() => {\n this.remainingTime -= 100;\n }, 100);\n }\n }\n\n private pauseAutoHide() {\n clearTimeout(this.autoHideTimeout);\n clearInterval(this.remainingTimeInterval);\n }\n\n private resumeAutoHide() {\n if (this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(\n () => this.hide(),\n this.remainingTime\n );\n this.remainingTimeInterval = window.setInterval(() => {\n this.remainingTime -= 100;\n }, 100);\n }\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange() {\n if (this.open) {\n // Show\n this.dispatchEvent(\n new Event('mid-show', { composed: true, bubbles: true })\n );\n\n if (this.duration < Infinity) {\n this.restartAutoHide();\n }\n\n await stopAnimations(this.base);\n this.base.hidden = false;\n const { keyframes, options } = getAnimation(this, 'alert.show');\n await animateTo(this.base, keyframes, options);\n\n this.dispatchEvent(\n new Event('mid-after-show', { composed: true, bubbles: true })\n );\n } else {\n // Hide\n this.dispatchEvent(\n new Event('mid-hide', { composed: true, bubbles: true })\n );\n\n clearTimeout(this.autoHideTimeout);\n clearInterval(this.remainingTimeInterval);\n\n await stopAnimations(this.base);\n const { keyframes, options } = getAnimation(this, 'alert.hide');\n await animateTo(this.base, keyframes, options);\n this.base.hidden = true;\n\n this.dispatchEvent(\n new Event('mid-after-hide', { composed: true, bubbles: true })\n );\n }\n }\n\n @watch('duration')\n handleDurationChange() {\n this.restartAutoHide();\n }\n\n /**\n * Shows the alert.\n */\n async show() {\n if (this.open) {\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'mid-after-show');\n }\n\n /**\n * Hides the alert\n */\n async hide() {\n if (!this.open) {\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'mid-after-hide');\n }\n\n /**\n * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\n * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\n * calling this method again. The returned promise will resolve after the alert is hidden.\n */\n async toast(\n content: MinidAlert['notificationContent'],\n duration?: number,\n severity?: MinidAlert['severity'],\n closable = true\n ) {\n return new Promise<void>((resolve) => {\n if (toastStack.parentElement === null) {\n document.body.append(toastStack);\n }\n\n if (content) {\n this.notificationContent = content;\n }\n\n if (severity) {\n this.severity = severity;\n }\n\n if (duration) {\n this.duration = duration;\n }\n\n this.closable = closable;\n this.elevated = true;\n\n // We wrap this in a timeout for `getBoundingClientRect` to get the height properly\n setTimeout(() => {\n toastStack.appendChild(this);\n\n animateTo(\n toastStack,\n [\n {\n transform: `translateY(${this.getBoundingClientRect().height}px)`,\n },\n { transform: 'translateY(0px)' },\n ],\n { duration: 250, easing: 'ease-out' }\n );\n }, 0);\n\n // Wait for the toast stack to render\n requestAnimationFrame(() => {\n // Force a reflow for the initial transition\n this.clientWidth;\n this.show();\n });\n\n this.addEventListener(\n 'mid-after-hide',\n () => {\n toastStack.removeChild(this);\n resolve();\n\n // Remove the toast stack from the DOM when there are no more alerts\n if (toastStack.querySelector('mid-alert') === null) {\n toastStack.remove();\n }\n },\n { once: true }\n );\n });\n }\n\n override render() {\n const danger = this.severity === 'danger';\n const warning = this.severity === 'warning';\n const info = this.severity === 'info';\n const success = this.severity === 'success';\n const sm = this.size === 'sm';\n const md = this.size === 'md';\n const lg = this.size === 'lg';\n const iconName: MidIconName =\n (danger && 'xmark-octagon-fill') ||\n (warning && 'exclamationmark-triangle-fill') ||\n (success && 'checkmark-circle-fill') ||\n 'information-square-fill';\n this.iconlabel ??=\n (danger && 'Feil') ||\n (warning && 'Advarsel') ||\n (success && 'Suksess') ||\n 'Informasjon';\n\n return html`\n <div\n part=\"base\"\n class=\"${classMap({\n 'text-body-sm': sm,\n 'text-body-md': md,\n 'text-body-lg': lg,\n 'bg-danger-surface-tinted': danger,\n 'bg-info-surface-tinted': info,\n 'bg-success-surface-tinted': success,\n 'bg-warning-surface-tinted': warning,\n 'border-danger': danger,\n 'border-info': info,\n 'border-success': success,\n 'border-warning': warning,\n 'text-danger': danger,\n 'text-info': info,\n 'text-success': success,\n 'text-warning': warning,\n 'shadow-md': this.elevated,\n })} grid grid-cols-[auto_1fr_auto] gap-2 rounded border p-6\"\n @mouseenter=${this.pauseAutoHide}\n @mouseleave=${this.resumeAutoHide}\n >\n <mid-icon\n class=\"${classMap({\n 'text-info-subtle': info,\n 'text-danger-subtle': danger,\n 'text-success-subtle': success,\n 'text-warning-subtle': warning,\n })} size-7\"\n name=\"${iconName}\"\n library=\"system\"\n alt=${ifDefined(this.iconlabel)}\n ></mid-icon>\n <div aria-live=\"polite\">\n <slot>\n ${!this.notificationContent?.title\n ? nothing\n : html`<h2 class=\"text-heading-xs\">\n ${this.notificationContent?.title}\n </h2>`}\n ${this.notificationContent?.message}\n ${!this.notificationContent?.details\n ? nothing\n : html`<div class=\"message-details\">\n <pre>${this.notificationContent?.details}</pre>\n </div>`}\n </slot>\n </div>\n ${this.closable\n ? html`\n <button\n class=\"${classMap({\n 'text-info-subtle': info,\n 'text-danger-subtle': danger,\n 'text-success-subtle': success,\n 'text-warning-subtle': warning,\n 'hover:bg-danger-surface-hover': danger,\n 'hover:bg-info-surface-hover': info,\n 'hover:bg-success-surface-hover': success,\n 'hover:bg-warning-surface-hover': warning,\n })} -my-4 flex self-center rounded p-4\"\n @click=\"${this.hide}\"\n >\n <mid-icon class=\"size-6\" name=\"xmark\"> </mid-icon>\n </button>\n `\n : nothing}\n </div>\n `;\n }\n}\n\nsetDefaultAnimation('alert.show', {\n keyframes: [\n { opacity: 0, transform: 'translateY(100%)' },\n { opacity: 1, transform: 'translateY(0px)' },\n ],\n options: { duration: 400, easing: 'ease-out' },\n});\n\nsetDefaultAnimation('alert.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.8 },\n ],\n options: { duration: 250, easing: 'ease-in' },\n});\n"],"names":[],"mappings":"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"}
@@ -9,7 +9,6 @@ declare const MinidButton_base: typeof LitElement & import('../types/mixin-const
9
9
  * A regular old button
10
10
  */
11
11
  export declare class MinidButton extends MinidButton_base {
12
- #private;
13
12
  button: HTMLButtonElement | HTMLLinkElement;
14
13
  /**
15
14
  * The value of the button (optional)
@@ -31,10 +30,6 @@ export declare class MinidButton extends MinidButton_base {
31
30
  * The href of the button. If set, the button will be rendered as an anchor tag
32
31
  */
33
32
  href: string | undefined;
34
- /**
35
- * Whether the button should be full width
36
- */
37
- fullwidth: boolean;
38
33
  /**
39
34
  * Whether the button is disabled
40
35
  */
@@ -50,6 +45,10 @@ export declare class MinidButton extends MinidButton_base {
50
45
  iconstyled: boolean;
51
46
  constructor();
52
47
  handleClick(): void;
48
+ /**
49
+ * @ignore
50
+ */
51
+ get isLink(): boolean;
53
52
  focus(): void;
54
53
  render(): import('lit-html').TemplateResult;
55
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"button.component.d.ts","sourceRoot":"","sources":["../../src/components/button.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAE,MAAM,KAAK,CAAC;AAOtC,OAAO,wBAAwB,CAAC;AAEhC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,WAAW,CAAC;KAC3B;CACF;;AAyBD;;GAEG;AACH,qBACa,WAAY,SAAQ,gBAEhC;;IAEC,MAAM,EAAG,iBAAiB,GAAG,eAAe,CAAC;IAE7C;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAa;IAE1D;;OAEG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;OAEG;IAEH,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE/C;;OAEG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzB;;OAEG;IAEH,SAAS,UAAS;IAElB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,OAAO,UAAS;IAGhB,WAAW,SAAM;IAEjB;;OAEG;IAEH,UAAU,UAAS;;IAOnB,WAAW;IAgBX,KAAK;IAII,MAAM;CAiChB"}
1
+ {"version":3,"file":"button.component.d.ts","sourceRoot":"","sources":["../../src/components/button.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAE,MAAM,KAAK,CAAC;AAOtC,OAAO,wBAAwB,CAAC;AAEhC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,WAAW,CAAC;KAC3B;CACF;;AAUD;;GAEG;AACH,qBACa,WAAY,SAAQ,gBAEhC;IAEC,MAAM,EAAG,iBAAiB,GAAG,eAAe,CAAC;IAE7C;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAa;IAE1D;;OAEG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;OAEG;IAEH,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE/C;;OAEG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,OAAO,UAAS;IAGhB,WAAW,SAAM;IAEjB;;OAEG;IAEH,UAAU,UAAS;;IAOnB,WAAW;IASX;;OAEG;IACH,IAAI,MAAM,YAET;IAED,KAAK;IAII,MAAM;CAmEhB"}
@@ -8,9 +8,6 @@ import { FormControllerMixin } from "../mixins/form-controller.mixin.js";
8
8
  import "./spinner.js";
9
9
  var __defProp = Object.defineProperty;
10
10
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
- var __typeError = (msg) => {
12
- throw TypeError(msg);
13
- };
14
11
  var __decorateClass = (decorators, target, key, kind) => {
15
12
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
16
13
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
@@ -19,29 +16,10 @@ var __decorateClass = (decorators, target, key, kind) => {
19
16
  if (kind && result) __defProp(target, key, result);
20
17
  return result;
21
18
  };
22
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
23
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
24
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
25
- var _MinidButton_instances, isLink_get;
26
19
  const styles = [
27
20
  css`
28
21
  :host {
29
- width: auto;
30
- }
31
-
32
- .btn-loading {
33
- cursor: wait;
34
- }
35
-
36
- .btn-spinner-only {
37
- position: relative;
38
- gap: 0;
39
- }
40
-
41
- .btn-spinner-only mid-spinner {
42
- position: absolute;
43
- top: calc(50% - 0.5em);
44
- left: calc(50% - 0.5em);
22
+ display: inline-flex;
45
23
  }
46
24
  `
47
25
  ];
@@ -50,12 +28,10 @@ let MinidButton = class extends FormControllerMixin(
50
28
  ) {
51
29
  constructor() {
52
30
  super();
53
- __privateAdd(this, _MinidButton_instances);
54
31
  this.value = "";
55
32
  this.variant = "primary";
56
33
  this.size = "md";
57
34
  this.type = "button";
58
- this.fullwidth = false;
59
35
  this.disabled = false;
60
36
  this.loading = false;
61
37
  this.loadingtext = "";
@@ -70,46 +46,78 @@ let MinidButton = class extends FormControllerMixin(
70
46
  this.internals.form.reset();
71
47
  }
72
48
  }
49
+ /**
50
+ * @ignore
51
+ */
52
+ get isLink() {
53
+ return !!this.href;
54
+ }
73
55
  focus() {
74
56
  this.button.focus();
75
57
  }
76
58
  render() {
77
- const tag = __privateGet(this, _MinidButton_instances, isLink_get) ? literal`a` : literal`button`;
59
+ const tag = this.isLink ? literal`a` : literal`button`;
60
+ const primary = this.variant === "primary";
61
+ const secondary = this.variant === "secondary";
62
+ const tertiary = this.variant === "tertiary";
63
+ const sm = this.size === "sm";
64
+ const md = this.size === "md";
65
+ const lg = this.size === "lg";
66
+ const spinnerOnly = this.loading && !this.loadingtext;
78
67
  return html`<${tag}
79
68
  part="base"
80
69
  class="${classMap({
81
- button: true,
82
- "fds-focus": true,
83
- "fds-btn": true,
84
- "fds-btn--first": true,
85
- "fds-btn--full-width": this.fullwidth,
86
- "fds-btn--icon-only": this.iconstyled,
87
- "fds-btn--primary": this.variant === "primary",
88
- "fds-btn--secondary": this.variant === "secondary",
89
- "fds-btn--tertiary": this.variant === "tertiary",
90
- "fds-btn--sm": this.size === "sm",
91
- "fds-btn--md": this.size === "md",
92
- "fds-btn--lg": this.size === "lg",
93
- "btn-loading": this.loading,
94
- "btn-spinner-only": this.loading && !this.loadingtext
95
- })}"
70
+ "w-12": this.iconstyled,
71
+ "h-12": this.iconstyled,
72
+ "py-2": !this.iconstyled,
73
+ "px-4": !this.iconstyled,
74
+ "bg-accent-base": primary,
75
+ "text-accent-base-contrast": primary,
76
+ "border-transparent": primary || tertiary,
77
+ "hover:bg-accent-base-hover": primary,
78
+ "active:bg-accent-base-active": primary,
79
+ "bg-transparent": secondary || tertiary,
80
+ "active:bg-accent-surface-active": secondary || tertiary,
81
+ "hover:bg-accent-surface-hover": secondary || tertiary,
82
+ "text-accent-subtle": secondary || tertiary,
83
+ "hover:text-accent": secondary || tertiary,
84
+ "border-accent-strong": secondary,
85
+ "text-body-sm": sm,
86
+ "text-body-md": md,
87
+ "text-body-lg": lg,
88
+ "cursor-wait": this.loading && !this.disabled,
89
+ "cursor-pointer": !this.loading && !this.disabled,
90
+ "cursor-not-allowed": this.disabled,
91
+ relative: spinnerOnly,
92
+ "gap-0": spinnerOnly,
93
+ "opacity-disabled": this.disabled && !this.loading
94
+ })} grow focus-visible:focus-ring leading-sm flex h-fit min-h-12 min-w-12 items-center justify-center gap-2 rounded border font-medium"
96
95
  type=${this.type}
96
+ aria-busy=${this.loading}
97
97
  ?disabled=${this.disabled}
98
98
  href="${ifDefined(this.href)}"
99
99
  >
100
- <slot class="${classMap({
101
- invisible: this.loading && !this.loadingtext,
100
+ <slot
101
+ class="${classMap({
102
+ invisible: spinnerOnly,
102
103
  hidden: this.loading && this.loadingtext
103
- })}"></slot>
104
- <span class="${classMap({ hidden: !this.loading })}">${this.loadingtext}</span>
105
- ${this.loading ? html`<mid-spinner class="text-2xl" part="spinner"></mid-spinner>` : ""}
104
+ })}"
105
+ ></slot>
106
+ <span class="${classMap({ hidden: !this.loading || !this.loadingtext })}">
107
+ ${this.loadingtext}
108
+ </span>
109
+ ${this.loading ? html`<mid-spinner
110
+ class="${classMap({
111
+ "text-[1.4rem]": true,
112
+ absolute: spinnerOnly,
113
+ "top-[calc(50%_-_0.5em)]": spinnerOnly,
114
+ "left-[calc(50%_-_0.5em)]": spinnerOnly
115
+ })}"
116
+ part="spinner"
117
+ ></mid-spinner>` : ""}
106
118
  </${tag}>`;
107
119
  }
108
120
  };
109
- _MinidButton_instances = /* @__PURE__ */ new WeakSet();
110
- isLink_get = function() {
111
- return !!this.href;
112
- };
113
121
  __decorateClass([
114
122
  query(".button")
115
123
  ], MinidButton.prototype, "button", 2);
@@ -128,9 +136,6 @@ __decorateClass([
128
136
  __decorateClass([
129
137
  property({ type: String })
130
138
  ], MinidButton.prototype, "href", 2);
131
- __decorateClass([
132
- property({ type: Boolean })
133
- ], MinidButton.prototype, "fullwidth", 2);
134
139
  __decorateClass([
135
140
  property({ type: Boolean })
136
141
  ], MinidButton.prototype, "disabled", 2);
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sources":["../../src/components/button.component.ts"],"sourcesContent":["import { css, LitElement } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { html, literal } from 'lit/static-html.js';\nimport { styled } from '../mixins/tailwind.mixin.ts';\nimport { FormControllerMixin } from '../mixins/form-controller.mixin.ts';\nimport './spinner.component.ts';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'mid-button': MinidButton;\n }\n}\n\nconst styles = [\n css`\n :host {\n width: auto;\n }\n\n .btn-loading {\n cursor: wait;\n }\n\n .btn-spinner-only {\n position: relative;\n gap: 0;\n }\n\n .btn-spinner-only mid-spinner {\n position: absolute;\n top: calc(50% - 0.5em);\n left: calc(50% - 0.5em);\n }\n `,\n];\n\n/**\n * A regular old button\n */\n@customElement('mid-button')\nexport class MinidButton extends FormControllerMixin(\n styled(LitElement, styles)\n) {\n @query('.button')\n button!: HTMLButtonElement | HTMLLinkElement;\n\n /**\n * The value of the button (optional)\n */\n @property({ type: String })\n value = '';\n\n /**\n * The variant of the button\n */\n @property({ type: String })\n variant: 'primary' | 'secondary' | 'tertiary' = 'primary';\n\n /**\n * The size of the button. Defaults to 'md'\n */\n @property({ type: String })\n size: 'md' | 'lg' | 'sm' = 'md';\n\n /**\n * The type of the button. Defaults to normal 'button'\n */\n @property({ type: String })\n type: 'submit' | 'button' | 'reset' = 'button';\n\n /**\n * The href of the button. If set, the button will be rendered as an anchor tag\n */\n @property({ type: String })\n href: string | undefined;\n\n /**\n * Whether the button should be full width\n */\n @property({ type: Boolean })\n fullwidth = false;\n\n /**\n * Whether the button is disabled\n */\n @property({ type: Boolean })\n disabled = false;\n\n /**\n *\n */\n @property({ type: Boolean })\n loading = false;\n\n @property()\n loadingtext = '';\n\n /**\n * Toggle icon only styling\n */\n @property({ type: Boolean })\n iconstyled = false;\n\n constructor() {\n super();\n this.addEventListener('click', this.handleClick);\n }\n\n handleClick() {\n if (this.type === 'submit') {\n this.value && this.setFormValue(this.value);\n this.internals.form!.requestSubmit();\n } else if (this.type === 'reset') {\n this.internals.form!.reset();\n }\n }\n\n /**\n * @ignore\n */\n get #isLink() {\n return !!this.href;\n }\n\n focus() {\n this.button.focus();\n }\n\n override render() {\n const tag = this.#isLink ? literal`a` : literal`button`;\n\n return html`<${tag}\n part=\"base\"\n class=\"${classMap({\n button: true,\n 'fds-focus': true,\n 'fds-btn': true,\n 'fds-btn--first': true,\n 'fds-btn--full-width': this.fullwidth,\n 'fds-btn--icon-only': this.iconstyled,\n 'fds-btn--primary': this.variant === 'primary',\n 'fds-btn--secondary': this.variant === 'secondary',\n 'fds-btn--tertiary': this.variant === 'tertiary',\n 'fds-btn--sm': this.size === 'sm',\n 'fds-btn--md': this.size === 'md',\n 'fds-btn--lg': this.size === 'lg',\n 'btn-loading': this.loading,\n 'btn-spinner-only': this.loading && !this.loadingtext,\n })}\"\n type=${this.type}\n ?disabled=${this.disabled}\n href=\"${ifDefined(this.href)}\"\n >\n <slot class=\"${classMap({\n invisible: this.loading && !this.loadingtext,\n hidden: this.loading && this.loadingtext,\n })}\"></slot>\n <span class=\"${classMap({ hidden: !this.loading })}\">${this.loadingtext}</span>\n ${this.loading ? html`<mid-spinner class=\"text-2xl\" part=\"spinner\"></mid-spinner>` : ''}\n </${tag}>`;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"button.js","sources":["../../src/components/button.component.ts"],"sourcesContent":["import { css, LitElement } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { html, literal } from 'lit/static-html.js';\nimport { styled } from '../mixins/tailwind.mixin.ts';\nimport { FormControllerMixin } from '../mixins/form-controller.mixin.ts';\nimport './spinner.component.ts';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'mid-button': MinidButton;\n }\n}\n\nconst styles = [\n css`\n :host {\n display: inline-flex;\n }\n `,\n];\n\n/**\n * A regular old button\n */\n@customElement('mid-button')\nexport class MinidButton extends FormControllerMixin(\n styled(LitElement, styles)\n) {\n @query('.button')\n button!: HTMLButtonElement | HTMLLinkElement;\n\n /**\n * The value of the button (optional)\n */\n @property({ type: String })\n value = '';\n\n /**\n * The variant of the button\n */\n @property({ type: String })\n variant: 'primary' | 'secondary' | 'tertiary' = 'primary';\n\n /**\n * The size of the button. Defaults to 'md'\n */\n @property({ type: String })\n size: 'md' | 'lg' | 'sm' = 'md';\n\n /**\n * The type of the button. Defaults to normal 'button'\n */\n @property({ type: String })\n type: 'submit' | 'button' | 'reset' = 'button';\n\n /**\n * The href of the button. If set, the button will be rendered as an anchor tag\n */\n @property({ type: String })\n href: string | undefined;\n\n /**\n * Whether the button is disabled\n */\n @property({ type: Boolean })\n disabled = false;\n\n /**\n *\n */\n @property({ type: Boolean })\n loading = false;\n\n @property()\n loadingtext = '';\n\n /**\n * Toggle icon only styling\n */\n @property({ type: Boolean })\n iconstyled = false;\n\n constructor() {\n super();\n this.addEventListener('click', this.handleClick);\n }\n\n handleClick() {\n if (this.type === 'submit') {\n this.value && this.setFormValue(this.value);\n this.internals.form!.requestSubmit();\n } else if (this.type === 'reset') {\n this.internals.form!.reset();\n }\n }\n\n /**\n * @ignore\n */\n get isLink() {\n return !!this.href;\n }\n\n focus() {\n this.button.focus();\n }\n\n override render() {\n const tag = this.isLink ? literal`a` : literal`button`;\n const primary = this.variant === 'primary';\n const secondary = this.variant === 'secondary';\n const tertiary = this.variant === 'tertiary';\n const sm = this.size === 'sm';\n const md = this.size === 'md';\n const lg = this.size === 'lg';\n const spinnerOnly = this.loading && !this.loadingtext;\n\n return html`<${tag}\n part=\"base\"\n class=\"${classMap({\n 'w-12': this.iconstyled,\n 'h-12': this.iconstyled,\n 'py-2': !this.iconstyled,\n 'px-4': !this.iconstyled,\n 'bg-accent-base': primary,\n 'text-accent-base-contrast': primary,\n 'border-transparent': primary || tertiary,\n 'hover:bg-accent-base-hover': primary,\n 'active:bg-accent-base-active': primary,\n 'bg-transparent': secondary || tertiary,\n 'active:bg-accent-surface-active': secondary || tertiary,\n 'hover:bg-accent-surface-hover': secondary || tertiary,\n 'text-accent-subtle': secondary || tertiary,\n 'hover:text-accent': secondary || tertiary,\n 'border-accent-strong': secondary,\n 'text-body-sm': sm,\n 'text-body-md': md,\n 'text-body-lg': lg,\n 'cursor-wait': this.loading && !this.disabled,\n 'cursor-pointer': !this.loading && !this.disabled,\n 'cursor-not-allowed': this.disabled,\n relative: spinnerOnly,\n 'gap-0': spinnerOnly,\n 'opacity-disabled': this.disabled && !this.loading,\n })} grow focus-visible:focus-ring leading-sm flex h-fit min-h-12 min-w-12 items-center justify-center gap-2 rounded border font-medium\"\n type=${this.type}\n aria-busy=${this.loading}\n ?disabled=${this.disabled}\n href=\"${ifDefined(this.href)}\"\n >\n <slot\n class=\"${classMap({\n invisible: spinnerOnly,\n hidden: this.loading && this.loadingtext,\n })}\"\n ></slot>\n <span class=\"${classMap({ hidden: !this.loading || !this.loadingtext })}\">\n ${this.loadingtext}\n </span>\n ${\n this.loading\n ? html`<mid-spinner\n class=\"${classMap({\n 'text-[1.4rem]': true,\n absolute: spinnerOnly,\n 'top-[calc(50%_-_0.5em)]': spinnerOnly,\n 'left-[calc(50%_-_0.5em)]': spinnerOnly,\n })}\"\n part=\"spinner\"\n ></mid-spinner>`\n : ''\n }\n </${tag}>`;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -15,22 +15,10 @@ declare const MinidCombobox_base: typeof LitElement;
15
15
  * @part panel - Select the dropdown panel host element
16
16
  */
17
17
  export declare class MinidCombobox extends MinidCombobox_base {
18
- #private;
19
- /**
20
- * @ignore
21
- */
18
+ private closeWatcher?;
22
19
  popup: MinidPopup;
23
- /**
24
- * @ignore
25
- */
26
20
  trigger: HTMLSlotElement;
27
- /**
28
- * @ignore
29
- */
30
21
  panel: HTMLSlotElement;
31
- /**
32
- * @ignore
33
- */
34
22
  triggerElements: (MinidTextfield | MinidPhoneInput | HTMLInputElement)[];
35
23
  /**
36
24
  * By default, the combobox is closed when an item is selected. This attribute will keep it open instead. Useful for
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.component.d.ts","sourceRoot":"","sources":["../../src/components/combobox.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ5D,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAU/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF;;AAUD;;;;GAIG;AACH,qBACa,aAAc,SAAQ,kBAA0B;;IAM3D;;OAEG;IAEH,KAAK,EAAG,UAAU,CAAC;IAEnB;;OAEG;IAEH,OAAO,EAAG,eAAe,CAAC;IAE1B;;OAEG;IAEH,KAAK,EAAG,eAAe,CAAC;IAExB;;OAEG;IAEH,eAAe,EAAG,CAAC,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAE1E;;;OAGG;IAEH,gBAAgB,UAAS;IAEzB;;OAEG;IAEH,IAAI,UAAS;IAGb,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;OAEG;IAEH,QAAQ,SAAK;IAEb;;OAEG;IAEH,QAAQ,SAAK;IAEb;;;OAGG;IAEH,KAAK,UAAS;IAGd,QAAQ,UAAS;IAGjB,cAAc,EAAE,eAAe,GAAG,iBAAiB,CAAmB;IAEtE;;;OAGG;IAEH,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAEhC,iBAAiB;IAQjB,SAAS,CAAC,YAAY,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;IAsBhE,oBAAoB;IAMpB,cAAc;IAUd,OAAO,IAID,SAAS,GACT,SAAS;IAGf,OAAO,CAAC,kBAAkB,CAWxB;IAEF,OAAO,CAAC,aAAa,CASnB;IAEF,OAAO,CAAC,qBAAqB,CA2C3B;IAEF,OAAO,CAAC,uBAAuB,CAM7B;IAEF,OAAO,CAAC,iBAAiB,CAiBvB;IAEF,kBAAkB;IAaZ,oBAAoB,CAAC,KAAK,EAAE,aAAa;IA4D/C,kBAAkB,CAAC,KAAK,EAAE,aAAa;IAOvC,uBAAuB;IAIvB;;;OAGG;IACH,UAAU;IAIV,gBAAgB;IAchB,mBAAmB;IAMnB;;OAEG;IACG,IAAI;IASV;;OAEG;IACG,IAAI;IAmBV,uBAAuB;IA0BjB,gBAAgB;IA0Cb,MAAM;CAwChB"}
1
+ {"version":3,"file":"combobox.component.d.ts","sourceRoot":"","sources":["../../src/components/combobox.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ5D,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAU/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF;;AAUD;;;;GAIG;AACH,qBACa,aAAc,SAAQ,kBAA0B;IAC3D,OAAO,CAAC,YAAY,CAAC,CAAe;IAGpC,KAAK,EAAG,UAAU,CAAC;IAGnB,OAAO,EAAG,eAAe,CAAC;IAG1B,KAAK,EAAG,eAAe,CAAC;IAGxB,eAAe,EAAG,CAAC,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAE1E;;;OAGG;IAEH,gBAAgB,UAAS;IAEzB;;OAEG;IAEH,IAAI,UAAS;IAGb,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;OAEG;IAEH,QAAQ,SAAK;IAEb;;OAEG;IAEH,QAAQ,SAAK;IAEb;;;OAGG;IAEH,KAAK,UAAS;IAGd,QAAQ,UAAS;IAGjB,cAAc,EAAE,eAAe,GAAG,iBAAiB,CAAmB;IAEtE;;;OAGG;IAEH,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAEhC,iBAAiB;IAQjB,SAAS,CAAC,YAAY,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;IAsBhE,oBAAoB;IAMpB,cAAc;IAUd,OAAO,IAID,SAAS,GACT,SAAS;IAGf,OAAO,CAAC,kBAAkB,CAWxB;IAEF,OAAO,CAAC,aAAa,CASnB;IAEF,OAAO,CAAC,qBAAqB,CA2C3B;IAEF,OAAO,CAAC,uBAAuB,CAM7B;IAEF,OAAO,CAAC,iBAAiB,CAiBvB;IAEF,kBAAkB;IAaZ,oBAAoB,CAAC,KAAK,EAAE,aAAa;IA4D/C,kBAAkB,CAAC,KAAK,EAAE,aAAa;IAOvC,uBAAuB;IAIvB;;;OAGG;IACH,UAAU;IAIV,gBAAgB;IAchB,mBAAmB;IAMnB;;OAEG;IACG,IAAI;IASV;;OAEG;IACG,IAAI;IAmBV,uBAAuB;IA0BjB,gBAAgB;IA0Cb,MAAM;CAuChB"}
@@ -9,9 +9,6 @@ import { stopAnimations, animateTo } from "../internal/animate.js";
9
9
  import { getTabbableBoundary } from "../internal/tabbable.js";
10
10
  var __defProp = Object.defineProperty;
11
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
- var __typeError = (msg) => {
13
- throw TypeError(msg);
14
- };
15
12
  var __decorateClass = (decorators, target, key, kind) => {
16
13
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
17
14
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
@@ -20,11 +17,6 @@ var __decorateClass = (decorators, target, key, kind) => {
20
17
  if (kind && result) __defProp(target, key, result);
21
18
  return result;
22
19
  };
23
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
24
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
25
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
26
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
27
- var _closeWatcher;
28
20
  const styles = [
29
21
  css`
30
22
  :host {
@@ -35,7 +27,6 @@ const styles = [
35
27
  let MinidCombobox = class extends styled(LitElement, styles) {
36
28
  constructor() {
37
29
  super(...arguments);
38
- __privateAdd(this, _closeWatcher);
39
30
  this.stayopenonselect = false;
40
31
  this.open = false;
41
32
  this.size = "md";
@@ -63,7 +54,7 @@ let MinidCombobox = class extends styled(LitElement, styles) {
63
54
  }
64
55
  };
65
56
  this.handleDocumentKeyDown = (event) => {
66
- if (event.key === "Escape" && this.open && !__privateGet(this, _closeWatcher)) {
57
+ if (event.key === "Escape" && this.open && !this.closeWatcher) {
67
58
  event.stopPropagation();
68
59
  this.focusOnTrigger();
69
60
  this.hide();
@@ -215,9 +206,9 @@ let MinidCombobox = class extends styled(LitElement, styles) {
215
206
  }
216
207
  addOpenListeners() {
217
208
  if ("CloseWatcher" in window) {
218
- __privateGet(this, _closeWatcher)?.destroy();
219
- __privateSet(this, _closeWatcher, new CloseWatcher());
220
- __privateGet(this, _closeWatcher).onclose = () => {
209
+ this.closeWatcher?.destroy();
210
+ this.closeWatcher = new CloseWatcher();
211
+ this.closeWatcher.onclose = () => {
221
212
  this.hide();
222
213
  this.focusOnTrigger();
223
214
  };
@@ -228,7 +219,7 @@ let MinidCombobox = class extends styled(LitElement, styles) {
228
219
  removeOpenListeners() {
229
220
  document.removeEventListener("keydown", this.handleDocumentKeyDown);
230
221
  document.removeEventListener("mousedown", this.handleDocumentMouseDown);
231
- __privateGet(this, _closeWatcher)?.destroy();
222
+ this.closeWatcher?.destroy();
232
223
  }
233
224
  /**
234
225
  * Shows the combobox panel.
@@ -339,8 +330,7 @@ let MinidCombobox = class extends styled(LitElement, styles) {
339
330
  @keyup=${this.handleTriggerKeyUp}
340
331
  @slotchange=${this.handleTriggerSlotChange}
341
332
  @mid-country-click=${this.handleCountryClick}
342
- >
343
- </slot>
333
+ ></slot>
344
334
  <div
345
335
  aria-hidden=${this.open ? "false" : "true"}
346
336
  aria-labelledby="combobox"
@@ -356,7 +346,6 @@ let MinidCombobox = class extends styled(LitElement, styles) {
356
346
  `;
357
347
  }
358
348
  };
359
- _closeWatcher = /* @__PURE__ */ new WeakMap();
360
349
  __decorateClass([
361
350
  query("#combobox")
362
351
  ], MinidCombobox.prototype, "popup", 2);