@pine-ds/core 3.16.2 → 3.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/components/form.js +2 -0
  2. package/components/form.js.map +1 -1
  3. package/components/pds-button2.js +10 -16
  4. package/components/pds-button2.js.map +1 -1
  5. package/components/pds-dropdown-menu.js +1 -1
  6. package/components/pds-dropdown-menu.js.map +1 -1
  7. package/components/pds-multiselect.js +10 -5
  8. package/components/pds-multiselect.js.map +1 -1
  9. package/dist/cjs/{form-hmpgbT1I.js → form-DUqlzovE.js} +4 -2
  10. package/dist/{esm-es5/form-DwjNklzi.js.map → cjs/form-DUqlzovE.js.map} +1 -1
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/pds-button.cjs.entry.js +10 -16
  13. package/dist/cjs/pds-button.entry.cjs.js.map +1 -1
  14. package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
  15. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  16. package/dist/cjs/pds-dropdown-menu.entry.cjs.js.map +1 -1
  17. package/dist/cjs/pds-input.cjs.entry.js +1 -1
  18. package/dist/cjs/pds-multiselect.cjs.entry.js +10 -6
  19. package/dist/cjs/pds-multiselect.entry.cjs.js.map +1 -1
  20. package/dist/cjs/pds-radio-group.cjs.entry.js +1 -1
  21. package/dist/cjs/pds-radio.cjs.entry.js +1 -1
  22. package/dist/cjs/pds-select.cjs.entry.js +1 -1
  23. package/dist/cjs/pds-switch.cjs.entry.js +1 -1
  24. package/dist/cjs/pds-textarea.cjs.entry.js +1 -1
  25. package/dist/cjs/pine-core.cjs.js +1 -1
  26. package/dist/collection/components/pds-button/pds-button.css +3 -0
  27. package/dist/collection/components/pds-button/pds-button.js +9 -15
  28. package/dist/collection/components/pds-button/pds-button.js.map +1 -1
  29. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +4 -4
  30. package/dist/collection/components/pds-multiselect/pds-multiselect.js +29 -5
  31. package/dist/collection/components/pds-multiselect/pds-multiselect.js.map +1 -1
  32. package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +38 -0
  33. package/dist/collection/utils/form.js +2 -0
  34. package/dist/collection/utils/form.js.map +1 -1
  35. package/dist/docs.json +30 -1
  36. package/dist/esm/{form-DwjNklzi.js → form-CN-lL5QG.js} +4 -2
  37. package/dist/esm/{form-DwjNklzi.js.map → form-CN-lL5QG.js.map} +1 -1
  38. package/dist/esm/loader.js +1 -1
  39. package/dist/esm/pds-button.entry.js +10 -16
  40. package/dist/esm/pds-button.entry.js.map +1 -1
  41. package/dist/esm/pds-checkbox.entry.js +1 -1
  42. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  43. package/dist/esm/pds-dropdown-menu.entry.js.map +1 -1
  44. package/dist/esm/pds-input.entry.js +1 -1
  45. package/dist/esm/pds-multiselect.entry.js +10 -6
  46. package/dist/esm/pds-multiselect.entry.js.map +1 -1
  47. package/dist/esm/pds-radio-group.entry.js +1 -1
  48. package/dist/esm/pds-radio.entry.js +1 -1
  49. package/dist/esm/pds-select.entry.js +1 -1
  50. package/dist/esm/pds-switch.entry.js +1 -1
  51. package/dist/esm/pds-textarea.entry.js +1 -1
  52. package/dist/esm/pine-core.js +1 -1
  53. package/dist/esm-es5/form-CN-lL5QG.js +2 -0
  54. package/dist/{cjs/form-hmpgbT1I.js.map → esm-es5/form-CN-lL5QG.js.map} +1 -1
  55. package/dist/esm-es5/loader.js +1 -1
  56. package/dist/esm-es5/pds-button.entry.js +1 -1
  57. package/dist/esm-es5/pds-button.entry.js.map +1 -1
  58. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  59. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  60. package/dist/esm-es5/pds-dropdown-menu.entry.js.map +1 -1
  61. package/dist/esm-es5/pds-input.entry.js +1 -1
  62. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  63. package/dist/esm-es5/pds-multiselect.entry.js.map +1 -1
  64. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  65. package/dist/esm-es5/pds-radio.entry.js +1 -1
  66. package/dist/esm-es5/pds-select.entry.js +1 -1
  67. package/dist/esm-es5/pds-switch.entry.js +1 -1
  68. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  69. package/dist/esm-es5/pine-core.js +1 -1
  70. package/dist/pine-core/{p-f03f4602.system.entry.js → p-0b52923b.system.entry.js} +2 -2
  71. package/dist/pine-core/{p-bfac5114.entry.js → p-15e554ae.entry.js} +2 -2
  72. package/dist/pine-core/{p-09ff71ad.system.entry.js → p-23111b1c.system.entry.js} +2 -2
  73. package/dist/pine-core/p-29266dcd.system.entry.js +2 -0
  74. package/dist/pine-core/{p-8b4f76e4.system.entry.js.map → p-29266dcd.system.entry.js.map} +1 -1
  75. package/dist/pine-core/{p-0270ebee.system.entry.js → p-2aac4495.system.entry.js} +2 -2
  76. package/dist/pine-core/{p-7a6f11bd.system.entry.js → p-36e5e9f4.system.entry.js} +2 -2
  77. package/dist/pine-core/p-36e5e9f4.system.entry.js.map +1 -0
  78. package/dist/pine-core/{p-9d9a5ca8.system.entry.js → p-3f05d72e.system.entry.js} +2 -2
  79. package/dist/pine-core/{p-bc4b1749.system.entry.js → p-5abc5d82.system.entry.js} +2 -2
  80. package/dist/pine-core/p-6877a50d.system.entry.js +2 -0
  81. package/dist/pine-core/p-6877a50d.system.entry.js.map +1 -0
  82. package/dist/pine-core/{p-ad8fe96c.entry.js → p-73bce0bf.entry.js} +2 -2
  83. package/dist/pine-core/{p-8eb29dbd.entry.js → p-78246e05.entry.js} +2 -2
  84. package/dist/pine-core/{p-d0366fba.entry.js → p-7a11a6c7.entry.js} +2 -2
  85. package/dist/pine-core/{p-694cfe69.entry.js → p-94c73d98.entry.js} +2 -2
  86. package/dist/pine-core/p-94c73d98.entry.js.map +1 -0
  87. package/dist/pine-core/{p-CCKncKbB.system.js.map → p-BJPmPVaF.system.js.map} +1 -1
  88. package/dist/pine-core/{p-BHavepTY.system.js → p-Bch44a-T.system.js} +2 -2
  89. package/dist/pine-core/{p-BHavepTY.system.js.map → p-Bch44a-T.system.js.map} +1 -1
  90. package/dist/pine-core/{p-DXoBK65z.system.js.map → p-BnJypAy2.system.js.map} +1 -1
  91. package/dist/pine-core/p-CN-lL5QG.js +2 -0
  92. package/dist/pine-core/{p-DwjNklzi.js.map → p-CN-lL5QG.js.map} +1 -1
  93. package/dist/pine-core/{p-igLtCO20.system.js.map → p-CQtQQn3_.system.js.map} +1 -1
  94. package/dist/pine-core/p-CjnIO2Ro.system.js.map +1 -0
  95. package/dist/pine-core/p-Ct5QAsPN.system.js.map +1 -0
  96. package/dist/pine-core/{p-DFY2-W9M.system.js.map → p-D4YdQDsG.system.js.map} +1 -1
  97. package/dist/pine-core/p-DR2CskUb.system.js.map +1 -0
  98. package/dist/pine-core/p-JAVnELnm.system.js +1 -1
  99. package/dist/pine-core/{p-BssHFst4.system.js.map → p-N-jt0_Yl.system.js.map} +1 -1
  100. package/dist/pine-core/{p-1e77124d.system.entry.js → p-b1820970.system.entry.js} +2 -2
  101. package/dist/pine-core/{p-caff29fb.entry.js → p-b1a7a0b2.entry.js} +2 -2
  102. package/dist/pine-core/p-b3c66c58.entry.js +2 -0
  103. package/dist/pine-core/p-b3c66c58.entry.js.map +1 -0
  104. package/dist/pine-core/{p-9eQIEVii.system.js.map → p-c2oMjk1r.system.js.map} +1 -1
  105. package/dist/pine-core/{p-bce9f17d.system.entry.js → p-c9965216.system.entry.js} +2 -2
  106. package/dist/pine-core/{p-5162baee.entry.js → p-ce069162.entry.js} +2 -2
  107. package/dist/pine-core/p-f5fb71f6.entry.js +2 -0
  108. package/dist/pine-core/{p-d456c898.entry.js.map → p-f5fb71f6.entry.js.map} +1 -1
  109. package/dist/pine-core/{p-563b640d.entry.js → p-fbd8ae50.entry.js} +2 -2
  110. package/dist/pine-core/{p-CJ4Gf3Nx.system.js.map → p-gcCcHox5.system.js.map} +1 -1
  111. package/dist/pine-core/pds-button.entry.esm.js.map +1 -1
  112. package/dist/pine-core/pds-dropdown-menu.entry.esm.js.map +1 -1
  113. package/dist/pine-core/pds-multiselect.entry.esm.js.map +1 -1
  114. package/dist/pine-core/pine-core.esm.js +1 -1
  115. package/dist/types/components/pds-button/pds-button.d.ts +0 -1
  116. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +4 -0
  117. package/dist/types/components.d.ts +10 -0
  118. package/dist/vscode.html-data.json +8 -1
  119. package/hydrate/index.js +23 -22
  120. package/hydrate/index.mjs +23 -22
  121. package/package.json +2 -2
  122. package/dist/esm-es5/form-DwjNklzi.js +0 -2
  123. package/dist/pine-core/p-694cfe69.entry.js.map +0 -1
  124. package/dist/pine-core/p-7a6f11bd.system.entry.js.map +0 -1
  125. package/dist/pine-core/p-7ecfe996.entry.js +0 -2
  126. package/dist/pine-core/p-7ecfe996.entry.js.map +0 -1
  127. package/dist/pine-core/p-8b4f76e4.system.entry.js +0 -2
  128. package/dist/pine-core/p-BRn0ywk1.system.js.map +0 -1
  129. package/dist/pine-core/p-C7XKS9nY.system.js.map +0 -1
  130. package/dist/pine-core/p-DwjNklzi.js +0 -2
  131. package/dist/pine-core/p-EnxcYko8.system.js.map +0 -1
  132. package/dist/pine-core/p-b61669b4.system.entry.js +0 -2
  133. package/dist/pine-core/p-b61669b4.system.entry.js.map +0 -1
  134. package/dist/pine-core/p-d456c898.entry.js +0 -2
  135. /package/dist/pine-core/{p-f03f4602.system.entry.js.map → p-0b52923b.system.entry.js.map} +0 -0
  136. /package/dist/pine-core/{p-bfac5114.entry.js.map → p-15e554ae.entry.js.map} +0 -0
  137. /package/dist/pine-core/{p-09ff71ad.system.entry.js.map → p-23111b1c.system.entry.js.map} +0 -0
  138. /package/dist/pine-core/{p-0270ebee.system.entry.js.map → p-2aac4495.system.entry.js.map} +0 -0
  139. /package/dist/pine-core/{p-9d9a5ca8.system.entry.js.map → p-3f05d72e.system.entry.js.map} +0 -0
  140. /package/dist/pine-core/{p-bc4b1749.system.entry.js.map → p-5abc5d82.system.entry.js.map} +0 -0
  141. /package/dist/pine-core/{p-ad8fe96c.entry.js.map → p-73bce0bf.entry.js.map} +0 -0
  142. /package/dist/pine-core/{p-8eb29dbd.entry.js.map → p-78246e05.entry.js.map} +0 -0
  143. /package/dist/pine-core/{p-d0366fba.entry.js.map → p-7a11a6c7.entry.js.map} +0 -0
  144. /package/dist/pine-core/{p-1e77124d.system.entry.js.map → p-b1820970.system.entry.js.map} +0 -0
  145. /package/dist/pine-core/{p-caff29fb.entry.js.map → p-b1a7a0b2.entry.js.map} +0 -0
  146. /package/dist/pine-core/{p-bce9f17d.system.entry.js.map → p-c9965216.system.entry.js.map} +0 -0
  147. /package/dist/pine-core/{p-5162baee.entry.js.map → p-ce069162.entry.js.map} +0 -0
  148. /package/dist/pine-core/{p-563b640d.entry.js.map → p-fbd8ae50.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pds-multiselect.entry.js","sources":["src/components/pds-multiselect/pds-multiselect.scss?tag=pds-multiselect&encapsulation=shadow","src/components/pds-multiselect/pds-multiselect.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n:host([aria-disabled=\"true\"]) {\n .pds-multiselect__trigger {\n background: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n .pds-multiselect__icon {\n color: var(--pine-color-text-disabled);\n }\n}\n\n.pds-multiselect {\n position: relative;\n}\n\n.pds-multiselect__label {\n color: var(--pine-color-text-label);\n display: block;\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n margin-block-end: var(--pine-dimension-2xs);\n}\n\n.pds-multiselect__wrapper {\n position: relative;\n}\n\n.pds-multiselect__trigger {\n align-items: center;\n background: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: var(--pine-dimension-125);\n cursor: pointer;\n display: flex;\n font: var(--pine-typography-body);\n gap: var(--pine-dimension-xs);\n justify-content: space-between;\n letter-spacing: var(--pine-letter-spacing);\n min-height: var(--pine-dimension-550);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n position: relative;\n text-align: start;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n width: 100%;\n\n &:hover:not(.pds-multiselect__trigger--disabled) {\n border-color: var(--pine-color-border-hover);\n }\n\n &:focus:not(.pds-multiselect__trigger--disabled) {\n border-color: var(--pine-color-border-active);\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n &.pds-multiselect__trigger--open {\n border-color: var(--pine-color-border-active);\n }\n\n &.pds-multiselect__trigger--invalid {\n background-color: var(--pine-color-red-050);\n border-color: var(--pine-color-border-danger);\n\n &:focus {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n\n &.pds-multiselect__trigger--disabled {\n background: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n}\n\n.pds-multiselect__trigger-text {\n color: var(--pine-color-text-strong);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &.pds-multiselect__trigger-text--placeholder {\n color: var(--pine-color-text-placeholder);\n }\n\n .pds-multiselect__trigger--disabled & {\n color: var(--pine-color-text-disabled);\n }\n}\n\n.pds-multiselect__icon {\n color: var(--pine-color-icon);\n flex-shrink: var(--pine-dimension-none);\n}\n\n.pds-multiselect__panel {\n background: var(--pine-color-background-container);\n border-radius: var(--pine-dimension-125);\n box-shadow: var(--pine-box-shadow);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n position: absolute;\n z-index: var(--pine-z-index-raised);\n}\n\n.pds-multiselect__search {\n align-items: center;\n border-block-end: var(--pine-border);\n border-block-end-color: var(--pine-color-border-subtle);\n display: flex;\n gap: var(--pine-dimension-xs);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n\n pds-icon {\n color: var(--pine-color-text-muted);\n flex-shrink: var(--pine-dimension-none);\n }\n}\n\n.pds-multiselect__search-input {\n background: transparent;\n border: var(--pine-dimension-none);\n color: var(--pine-color-text-strong);\n flex: 1;\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n min-width: var(--pine-dimension-none);\n outline: none;\n\n &::placeholder {\n color: var(--pine-color-text-placeholder);\n }\n}\n\n.pds-multiselect__selected-section {\n border-block-end: var(--pine-border);\n border-block-end-color: var(--pine-color-border-subtle);\n padding: var(--pine-dimension-xs);\n}\n\n.pds-multiselect__selected-list {\n list-style: none;\n margin: var(--pine-dimension-none);\n padding: var(--pine-dimension-none);\n}\n\n.pds-multiselect__selected-item {\n color: var(--pine-color-text-strong);\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n overflow: hidden;\n padding: var(--pine-dimension-2xs) var(--pine-dimension-xs);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.pds-multiselect__listbox {\n background: transparent;\n border: var(--pine-dimension-none);\n box-sizing: border-box;\n list-style: none;\n margin: var(--pine-dimension-none);\n overflow-y: auto;\n padding: var(--pine-dimension-xs);\n}\n\n.pds-multiselect__option {\n align-items: center;\n background: transparent;\n border-radius: var(--pine-dimension-xs);\n cursor: pointer;\n display: flex;\n padding: var(--pine-dimension-2xs) var(--pine-dimension-xs);\n transition: background 0.15s;\n\n // Prevent checkbox label from triggering double events\n pds-checkbox {\n pointer-events: none;\n width: 100%;\n }\n\n &:hover,\n &.pds-multiselect__option--highlighted {\n background: var(--pine-color-background-muted);\n }\n\n &:focus-visible {\n outline: var(--pine-dimension-none);\n }\n}\n\n.pds-multiselect__create-option {\n color: var(--pine-color-text-strong);\n width: 100%;\n\n pds-icon {\n color: var(--pine-color-text-muted);\n flex-shrink: var(--pine-dimension-none);\n }\n}\n\n.pds-multiselect__empty,\n.pds-multiselect__loading {\n align-items: center;\n color: var(--pine-color-text-muted);\n display: flex;\n font: var(--pine-typography-body);\n justify-content: center;\n padding: var(--pine-dimension-sm);\n}\n\n.pds-multiselect__load-more {\n align-items: center;\n display: flex;\n justify-content: center;\n padding: var(--pine-dimension-xs);\n}\n\n.pds-multiselect__helper {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm);\n margin-block-start: var(--pine-dimension-2xs);\n margin-inline-start: var(--pine-dimension-none);\n}\n\n.pds-multiselect__error {\n align-items: flex-start;\n color: var(--pine-color-text-message-danger);\n display: flex;\n font: var(--pine-typography-body-sm);\n gap: var(--pine-dimension-2xs);\n margin-block-start: var(--pine-dimension-2xs);\n margin-inline-start: var(--pine-dimension-none);\n\n pds-icon {\n flex-shrink: var(--pine-dimension-none);\n margin-block-start: var(--pine-dimension-025);\n }\n}\n\n.visually-hidden {\n border: var(--pine-dimension-none);\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: var(--pine-dimension-none);\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport { computePosition, flip, offset, shift, size, autoUpdate } from '@floating-ui/dom';\nimport { debounceEvent } from '@utils/utils';\nimport { messageId, assignDescription } from '../../utils/form';\nimport { danger, enlarge } from '@pine-ds/icons/icons';\nimport type {\n MultiselectOption,\n MultiselectChangeEventDetail,\n MultiselectSearchEventDetail,\n MultiselectLoadOptionsEventDetail,\n MultiselectCreateEventDetail,\n AsyncResponse,\n CreateResponse,\n} from './multiselect-interface';\n\n/**\n * @slot (default) - Static option elements for the multiselect\n * @slot empty - Custom empty state message when no options match\n * @slot loading - Custom loading indicator\n */\n@Component({\n tag: 'pds-multiselect',\n styleUrl: 'pds-multiselect.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class PdsMultiselect {\n private triggerEl?: HTMLButtonElement;\n private searchInputEl?: HTMLInputElement;\n private containerEl?: HTMLElement;\n private listboxEl?: HTMLElement;\n private panelEl?: HTMLElement;\n private internals?: ElementInternals;\n private abortController?: AbortController;\n private fetchDebounceTimer?: number;\n private fetchTimeoutTimer?: number;\n private observer?: MutationObserver;\n private cleanupAutoUpdate?: () => void;\n\n @Element() el!: HTMLPdsMultiselectElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Text to be displayed as the multiselect label.\n */\n @Prop() label?: string;\n\n /**\n * Placeholder text for the input field.\n */\n @Prop() placeholder?: string = 'Select...';\n\n /**\n * Specifies the name. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * Array of selected option values.\n */\n @Prop({ mutable: true }) value: string[] = [];\n\n /**\n * Determines whether or not the multiselect is disabled.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * URL endpoint for async data fetching.\n */\n @Prop() asyncUrl?: string;\n\n /**\n * HTTP method for async requests.\n */\n @Prop() asyncMethod: 'GET' | 'POST' = 'GET';\n\n /**\n * Debounce delay in milliseconds for search/fetch.\n */\n @Prop() debounce: number = 300;\n\n /**\n * Timeout in milliseconds for async fetch requests.\n */\n @Prop() fetchTimeout: number = 30000;\n\n /**\n * Maximum number of selections allowed.\n */\n @Prop() maxSelections?: number;\n\n /**\n * Maximum height of the dropdown before scrolling.\n */\n @Prop() maxHeight: string = '300px';\n\n /**\n * Width of the trigger button (and reference for dropdown positioning).\n */\n @Prop() triggerWidth: string = '100%';\n\n /**\n * Minimum width of the dropdown panel.\n */\n @Prop() minWidth: string = '250px';\n\n /**\n * Width of the dropdown panel. Defaults to the trigger width.\n */\n @Prop() panelWidth?: string;\n\n /**\n * Visually hides the label but keeps it accessible.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * Error message to display.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Helper message to display below the input.\n */\n @Prop() helperMessage?: string;\n\n /**\n * If true, the multiselect is in an invalid state.\n */\n @Prop() invalid?: boolean;\n\n /**\n * If true, the multiselect is required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Whether the component is currently loading async options.\n */\n @Prop({ mutable: true }) loading: boolean = false;\n\n /**\n * Options provided externally (for consumer-managed async).\n */\n @Prop() options?: MultiselectOption[];\n\n /**\n * Function to format async results. Receives raw API response item.\n */\n @Prop() formatResult?: (item: unknown) => MultiselectOption;\n\n /**\n * URL endpoint for creating new options. When set, shows \"Add\" option when no matches found.\n */\n @Prop() createUrl?: string;\n\n /**\n * CSRF token for authenticated requests. If not provided, attempts to read from meta tag.\n */\n @Prop() csrfToken?: string;\n\n /**\n * CSRF header name for authenticated requests. Defaults to `X-CSRF-Token`.\n */\n @Prop() csrfHeaderName?: string = 'X-CSRF-Token';\n\n // Internal state\n @State() isOpen: boolean = false;\n @State() searchQuery: string = '';\n @State() highlightedIndex: number = -1;\n @State() internalOptions: MultiselectOption[] = [];\n @State() selectedItems: MultiselectOption[] = [];\n @State() currentPage: number = 1;\n @State() hasMore: boolean = false;\n @State() creating: boolean = false;\n\n // Flag to prevent focusout from closing during open transition\n private isOpening: boolean = false;\n // Flag to track if initial async fetch has been triggered (prevents double fetch)\n private initialAsyncFetchTriggered: boolean = false;\n // Flag to track if value changed during loading and needs resolution after fetch completes\n private pendingUnresolvedFetch: boolean = false;\n\n /**\n * Emitted when selection changes.\n */\n @Event() pdsMultiselectChange!: EventEmitter<MultiselectChangeEventDetail>;\n\n /**\n * Emitted on search input (for consumer-managed async).\n */\n @Event() pdsMultiselectSearch!: EventEmitter<MultiselectSearchEventDetail>;\n\n /**\n * Emitted to request more options (pagination).\n */\n @Event() pdsMultiselectLoadOptions!: EventEmitter<MultiselectLoadOptionsEventDetail>;\n\n /**\n * Emitted when a new option is created.\n */\n @Event() pdsMultiselectCreate!: EventEmitter<MultiselectCreateEventDetail>;\n\n private originalSearchEmitter?: EventEmitter<MultiselectSearchEventDetail>;\n\n connectedCallback() {\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n }\n\n componentWillLoad() {\n this.originalSearchEmitter = this.pdsMultiselectSearch;\n this.syncSelectedItems();\n }\n\n componentDidLoad() {\n this.setupDebounce();\n this.setupMutationObserver();\n this.setupSlotChangeListener();\n this.updateFormValue();\n\n // Ensure preselected values sync after DOM is fully ready\n // This handles cases where slot content loads after initial render (e.g., in docs/MDX)\n requestAnimationFrame(() => {\n this.updateOptionsFromSlot();\n this.syncSelectedItems();\n });\n\n // If we have preselected values and asyncUrl, fetch options to resolve them\n // This ensures the trigger shows \"X items\" instead of placeholder on initial render\n if (this.asyncUrl && this.ensureValueArray().length > 0) {\n this.initialAsyncFetchTriggered = true;\n this.fetchOptions('', 1);\n }\n }\n\n private setupSlotChangeListener() {\n const slot = this.el.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement;\n if (slot) {\n slot.addEventListener('slotchange', () => {\n this.updateOptionsFromSlot();\n this.syncSelectedItems();\n });\n // Also call it immediately in case content is already slotted\n this.updateOptionsFromSlot();\n }\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n this.cleanupAutoUpdate?.();\n this.clearAsyncFetchState();\n }\n\n @Watch('debounce')\n protected setupDebounce() {\n const { pdsMultiselectSearch, debounce, originalSearchEmitter } = this;\n this.pdsMultiselectSearch = debounce === undefined\n ? originalSearchEmitter ?? pdsMultiselectSearch\n : debounceEvent(pdsMultiselectSearch, debounce);\n }\n\n @Watch('value')\n protected valueChanged(newValue: string[] | string) {\n // Handle JSON string values (from HTML attributes)\n if (typeof newValue === 'string') {\n try {\n const parsed = JSON.parse(newValue);\n if (Array.isArray(parsed)) {\n this.value = parsed;\n return; // The assignment will trigger this watcher again with the array\n }\n } catch {\n // Not valid JSON, treat as single value\n this.value = newValue ? [newValue] : [];\n return;\n }\n }\n this.syncSelectedItems();\n this.updateFormValue();\n\n // If using asyncUrl and some values couldn't be resolved, fetch options\n // This handles programmatic value changes where the options aren't loaded yet\n if (this.asyncUrl) {\n const valueArray = this.ensureValueArray();\n const hasUnresolvedValues = valueArray.length > 0 && this.selectedItems.length < valueArray.length;\n if (hasUnresolvedValues) {\n if (this.loading) {\n // Mark that we need to re-check after current fetch completes\n this.pendingUnresolvedFetch = true;\n } else {\n this.fetchOptions('', 1);\n }\n }\n }\n }\n\n @Watch('options')\n protected optionsChanged() {\n if (this.options) {\n this.internalOptions = [...this.options];\n }\n }\n\n @Watch('internalOptions')\n protected internalOptionsChanged() {\n // Re-sync selected items when options become available\n // This handles the case where value is set before options are loaded (e.g., from slot)\n this.syncSelectedItems();\n }\n\n /**\n * Sets focus on the trigger button.\n */\n @Method()\n async setFocus() {\n this.triggerEl?.focus();\n }\n\n /**\n * Handle global keyboard events for accessibility.\n * Closes dropdown on Escape key press regardless of focus location.\n */\n @Listen('keydown', { target: 'window' })\n handleWindowKeyDown(event: KeyboardEvent) {\n if (!this.isOpen) return;\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeDropdown();\n this.triggerEl?.focus();\n }\n }\n\n private setupMutationObserver() {\n this.observer = new MutationObserver(() => {\n this.updateOptionsFromSlot();\n });\n\n this.observer.observe(this.el, {\n childList: true,\n subtree: true,\n });\n }\n\n private updateOptionsFromSlot() {\n const slot = this.el.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement;\n if (!slot) return;\n\n const options = slot.assignedElements({ flatten: true })\n .filter((el): el is HTMLOptionElement => el.tagName === 'OPTION')\n .map(opt => ({\n id: opt.value,\n text: opt.textContent || opt.value,\n }));\n\n // Only update if we actually found options AND we're not using async/external options\n // Don't clear internalOptions if slot returns empty (might be mid-DOM-update)\n if (options.length > 0 && !this.asyncUrl && !this.options) {\n this.internalOptions = options;\n }\n }\n\n private clearAsyncFetchState() {\n if (this.fetchDebounceTimer !== undefined) {\n window.clearTimeout(this.fetchDebounceTimer);\n this.fetchDebounceTimer = undefined;\n }\n if (this.fetchTimeoutTimer !== undefined) {\n window.clearTimeout(this.fetchTimeoutTimer);\n this.fetchTimeoutTimer = undefined;\n }\n this.abortController?.abort();\n this.abortController = undefined;\n }\n\n private debouncedFetchAsyncOptions(query: string, page: number = 1) {\n if (!this.asyncUrl) return;\n\n if (this.fetchDebounceTimer !== undefined) {\n window.clearTimeout(this.fetchDebounceTimer);\n }\n\n const delay = Math.max(0, this.debounce ?? 0);\n this.fetchDebounceTimer = window.setTimeout(() => {\n this.fetchDebounceTimer = undefined;\n this.fetchOptions(query, page);\n }, delay);\n }\n\n private syncSelectedItems() {\n // Ensure value is an array (may be string from HTML attribute)\n const valueArray = this.ensureValueArray();\n const allOptions = this.getAllOptions();\n\n // Map values to options, preserving existing selectedItems for values not yet in options\n const newSelectedItems: MultiselectOption[] = [];\n const existingItemsMap = new Map(this.selectedItems.map(item => [String(item.id), item]));\n\n valueArray.forEach(val => {\n // First try to find in available options\n const option = allOptions.find(opt => String(opt.id) === String(val));\n\n if (option) {\n newSelectedItems.push(option);\n } else if (existingItemsMap.has(String(val))) {\n // If not in options but exists in current selectedItems, preserve it\n // This handles the case where async data hasn't loaded yet or newly created items\n newSelectedItems.push(existingItemsMap.get(String(val))!);\n }\n // Note: We don't create placeholders for values without matching options.\n // This ensures selectedItems remains empty until options are actually loaded,\n // which matches the expected behavior for preselected values.\n });\n\n this.selectedItems = newSelectedItems;\n }\n\n private ensureValueArray(): string[] {\n // Handle JSON string values passed via HTML attribute\n if (typeof this.value === 'string') {\n try {\n const parsed = JSON.parse(this.value as unknown as string);\n if (Array.isArray(parsed)) {\n this.value = parsed;\n return parsed;\n }\n } catch {\n // Not valid JSON, treat as single value\n const singleValue = this.value as unknown as string;\n this.value = singleValue ? [singleValue] : [];\n return this.value;\n }\n }\n return Array.isArray(this.value) ? this.value : [];\n }\n\n private getAllOptions(): MultiselectOption[] {\n return this.options || this.internalOptions;\n }\n\n private getFilteredOptions(): MultiselectOption[] {\n const allOptions = this.getAllOptions();\n const query = this.searchQuery.toLowerCase();\n\n const filtered = allOptions.filter(opt => {\n // Filter by search query only - don't filter out selected items\n if (query) {\n return opt.text.toLowerCase().includes(query);\n }\n return true;\n });\n\n // Add create option if enabled and no matches found\n if (this.createUrl && this.searchQuery.trim() && filtered.length === 0) {\n return [{\n id: '__create__',\n text: this.searchQuery.trim(),\n isCreateOption: true,\n }];\n }\n\n return filtered;\n }\n\n private updateFormValue() {\n if (this.internals?.setFormValue) {\n // Ensure value is an array before iterating\n const valueArray = this.ensureValueArray();\n\n // Submit as multiple values with same name (native select multiple behavior)\n const formData = new FormData();\n valueArray.forEach(val => {\n if (this.name) {\n formData.append(this.name, val);\n }\n });\n this.internals.setFormValue(formData);\n\n // Update validity state for required validation\n if (this.required && valueArray.length === 0) {\n this.internals.setValidity(\n { valueMissing: true },\n 'Please select at least one option.',\n this.triggerEl\n );\n } else {\n this.internals.setValidity({});\n }\n }\n }\n\n private getCsrfToken(): string | null {\n // Use provided token if available\n if (this.csrfToken) {\n return this.csrfToken;\n }\n\n // Try to read from meta tag\n const metaTag = document.querySelector('meta[name=\"csrf-token\"]') as HTMLMetaElement;\n return metaTag?.content || null;\n }\n\n private async fetchOptions(query: string, page: number = 1) {\n if (!this.asyncUrl) return;\n\n // Abort any pending request and clear existing timeout\n this.abortController?.abort();\n if (this.fetchTimeoutTimer !== undefined) {\n window.clearTimeout(this.fetchTimeoutTimer);\n this.fetchTimeoutTimer = undefined;\n }\n\n this.abortController = new AbortController();\n this.loading = true;\n\n // Set up timeout for fetch request\n this.fetchTimeoutTimer = window.setTimeout(() => {\n this.abortController?.abort();\n this.fetchTimeoutTimer = undefined;\n }, this.fetchTimeout);\n\n try {\n // Guard against malformed asyncUrl\n let url: URL;\n try {\n url = new URL(this.asyncUrl, window.location.origin);\n } catch (urlError) {\n throw new TypeError(`Invalid asyncUrl: ${this.asyncUrl}`);\n }\n\n if (this.asyncMethod === 'GET') {\n url.searchParams.set('search', query);\n url.searchParams.set('page', String(page));\n }\n\n const csrfToken = this.getCsrfToken();\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n };\n\n if (csrfToken) {\n const headerName = this.csrfHeaderName || 'X-CSRF-Token';\n headers[headerName] = csrfToken;\n }\n\n const response = await fetch(url.toString(), {\n method: this.asyncMethod,\n signal: this.abortController.signal,\n headers,\n ...(this.asyncMethod === 'POST' && {\n body: JSON.stringify({ search: query, page }),\n }),\n });\n\n // Clear timeout on successful response\n if (this.fetchTimeoutTimer !== undefined) {\n window.clearTimeout(this.fetchTimeoutTimer);\n this.fetchTimeoutTimer = undefined;\n }\n\n if (!response.ok) throw new Error('Failed to fetch options');\n\n const data: AsyncResponse = await response.json();\n\n const formattedResults = data.results.map(item => {\n // If formatResult is provided, use it\n if (this.formatResult) {\n return this.formatResult(item);\n }\n\n // Defensive check: ensure item is an object before spreading\n if (typeof item === 'object' && item !== null) {\n return {\n id: item.id,\n text: item.text,\n ...item,\n } as MultiselectOption;\n }\n\n // Handle primitives by converting to safe shape\n return {\n id: String(item),\n text: String(item),\n } as MultiselectOption;\n });\n\n if (page === 1) {\n this.internalOptions = formattedResults;\n } else {\n this.internalOptions = [...this.internalOptions, ...formattedResults];\n }\n\n this.hasMore = data.totalCount ? this.internalOptions.length < data.totalCount : false;\n this.currentPage = page;\n\n } catch (error) {\n // Clear timeout on error\n if (this.fetchTimeoutTimer !== undefined) {\n window.clearTimeout(this.fetchTimeoutTimer);\n this.fetchTimeoutTimer = undefined;\n }\n\n if ((error as Error).name !== 'AbortError') {\n console.error('PdsMultiselect: Failed to fetch options', error);\n }\n } finally {\n this.loading = false;\n\n // Check if value changed during loading and still has unresolved values\n if (this.pendingUnresolvedFetch) {\n this.pendingUnresolvedFetch = false;\n const valueArray = this.ensureValueArray();\n const hasUnresolvedValues = valueArray.length > 0 && this.selectedItems.length < valueArray.length;\n if (hasUnresolvedValues) {\n this.fetchOptions('', 1);\n }\n }\n }\n }\n\n private async createOption(query: string) {\n if (!this.createUrl || !query.trim()) return;\n\n // Reentrancy guard: prevent duplicate POSTs if creation is already in-flight\n if (this.creating) return;\n\n this.creating = true;\n\n try {\n const url = new URL(this.createUrl, window.location.origin);\n\n const csrfToken = this.getCsrfToken();\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n };\n\n if (csrfToken) {\n const headerName = this.csrfHeaderName || 'X-CSRF-Token';\n headers[headerName] = csrfToken;\n }\n\n const response = await fetch(url.toString(), {\n method: 'POST',\n headers,\n body: JSON.stringify({ text: query.trim() }),\n });\n\n if (!response.ok) throw new Error('Failed to create option');\n\n const data: CreateResponse = await response.json();\n\n const newOption: MultiselectOption = {\n id: data.id,\n text: data.text,\n ...data,\n };\n\n // Add to internal options first\n this.internalOptions = [...this.internalOptions, newOption];\n\n // Select the new option\n this.value = [...this.value, String(newOption.id)];\n\n // Sync selected items to update display with new option\n this.syncSelectedItems();\n\n // Emit create event\n this.pdsMultiselectCreate.emit({\n query: query.trim(),\n newOption,\n });\n\n // Emit change event with synced items\n this.pdsMultiselectChange.emit({\n values: this.value,\n items: this.selectedItems,\n });\n\n // Clear search and keep dropdown open\n this.searchQuery = '';\n this.highlightedIndex = -1;\n\n // Focus back on search input\n requestAnimationFrame(() => {\n this.searchInputEl?.focus();\n });\n\n } catch (error) {\n console.error('PdsMultiselect: Failed to create option', error);\n } finally {\n this.creating = false;\n }\n }\n\n private handleTriggerClick = () => {\n if (this.disabled) return;\n\n if (this.isOpen) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n };\n\n private handleTriggerKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (!this.isOpen) {\n this.openDropdown();\n }\n break;\n }\n };\n\n private handleSearchInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.searchQuery = target.value;\n this.highlightedIndex = -1;\n\n // Emit search event for consumer-managed async\n this.pdsMultiselectSearch.emit({ query: this.searchQuery });\n\n // Fetch from async URL if configured\n if (this.asyncUrl) {\n this.debouncedFetchAsyncOptions(this.searchQuery, 1);\n }\n };\n\n private handleSearchInputKeyDown = (e: KeyboardEvent) => {\n const filteredOptions = this.getFilteredOptions();\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this.highlightedIndex = Math.min(this.highlightedIndex + 1, filteredOptions.length - 1);\n this.scrollOptionIntoView();\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n this.highlightedIndex = Math.max(this.highlightedIndex - 1, 0);\n this.scrollOptionIntoView();\n break;\n\n case 'Enter':\n e.preventDefault();\n if (this.highlightedIndex >= 0) {\n const option = filteredOptions[this.highlightedIndex];\n if (option) {\n this.selectOption(option);\n }\n }\n break;\n\n // Escape is handled by the global @Listen('keydown') handler\n\n case 'Tab':\n this.closeDropdown();\n break;\n }\n };\n\n private handleContainerFocusOut = () => {\n // Use setTimeout to delay the check - this allows click events and focus transitions to complete\n // before we decide to close the dropdown\n setTimeout(() => {\n // Don't close if we're in the middle of opening or already closed\n if (!this.isOpen || this.isOpening) return;\n\n const activeElement = document.activeElement;\n\n // Check if focus is within our component's shadow root\n const isInShadowRoot = this.el.shadowRoot?.contains(activeElement);\n\n // Also check if focus is on the host element itself\n const isOnHost = activeElement === this.el;\n\n if (!isInShadowRoot && !isOnHost) {\n this.closeDropdown();\n }\n }, 0);\n };\n\n private openDropdown() {\n if (this.disabled) return;\n\n this.isOpening = true;\n this.isOpen = true;\n this.highlightedIndex = -1;\n\n // Trigger initial fetch if async (skip if already fetching from componentDidLoad)\n if (this.asyncUrl && this.internalOptions.length === 0 && !this.initialAsyncFetchTriggered) {\n this.debouncedFetchAsyncOptions(this.searchQuery, 1);\n }\n // Reset the flag so subsequent opens can fetch if needed\n this.initialAsyncFetchTriggered = false;\n\n requestAnimationFrame(() => {\n this.positionDropdown();\n // Focus the search input after the panel is positioned\n this.searchInputEl?.focus();\n // Clear the opening flag after focus has moved\n setTimeout(() => {\n this.isOpening = false;\n }, 50);\n });\n }\n\n private closeDropdown() {\n this.isOpen = false;\n this.highlightedIndex = -1;\n this.searchQuery = '';\n\n // Clean up auto-update\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n\n private positionDropdown() {\n if (!this.containerEl || !this.panelEl) return;\n const referenceEl = this.triggerEl || this.containerEl;\n\n const { minWidth, panelWidth } = this;\n\n const updatePosition = () => {\n computePosition(referenceEl!, this.panelEl!, {\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n offset(12),\n flip(),\n shift({ padding: 8 }),\n size({\n apply: ({ rects, elements }) => {\n Object.assign(elements.floating.style, {\n width: panelWidth ?? `${rects.reference.width}px`,\n minWidth,\n });\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (this.panelEl) {\n this.panelEl.style.left = `${x}px`;\n this.panelEl.style.top = `${y}px`;\n }\n });\n };\n\n // Initial position\n updatePosition();\n\n // Set up auto-update for window resize and scroll\n const cleanupAutoUpdate = autoUpdate(\n referenceEl!,\n this.panelEl,\n updatePosition\n );\n this.cleanupAutoUpdate = () => {\n cleanupAutoUpdate();\n this.clearAsyncFetchState();\n };\n }\n\n private scrollOptionIntoView() {\n requestAnimationFrame(() => {\n const highlighted = this.listboxEl?.querySelector(`[data-index=\"${this.highlightedIndex}\"]`) as HTMLElement;\n highlighted?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n });\n }\n\n private toggleOption(option: MultiselectOption) {\n // Handle create option\n if (option.isCreateOption) {\n // Prevent multiple create calls while one is in-flight\n if (!this.creating) {\n this.createOption(this.searchQuery);\n }\n return;\n }\n\n const isSelected = this.value.includes(String(option.id));\n\n if (isSelected) {\n // Remove from selection\n this.value = this.value.filter(v => v !== String(option.id));\n } else {\n // Add to selection\n if (this.maxSelections && this.value.length >= this.maxSelections) {\n return;\n }\n\n this.value = [...this.value, String(option.id)];\n }\n\n // Sync selected items to ensure no duplicates and accurate state\n this.syncSelectedItems();\n\n // Emit change event with synced items\n this.pdsMultiselectChange.emit({\n values: this.value,\n items: this.selectedItems,\n });\n\n // Keep focus on search input, don't close dropdown\n this.searchInputEl?.focus();\n }\n\n private selectOption(option: MultiselectOption) {\n // For keyboard navigation - toggle the option\n this.toggleOption(option);\n }\n\n private handleOptionMouseDown = (option: MultiselectOption) => (e: MouseEvent) => {\n e.preventDefault(); // Prevent focus change\n this.toggleOption(option);\n };\n\n private handleOptionMouseEnter = (index: number) => () => {\n this.highlightedIndex = index;\n };\n\n\n private handleScroll = (e: Event) => {\n if (!this.asyncUrl || !this.hasMore || this.loading) return;\n\n const target = e.target as HTMLElement;\n const scrollBottom = target.scrollHeight - target.scrollTop - target.clientHeight;\n\n // Load more when near bottom (within 50px)\n if (scrollBottom < 50) {\n this.pdsMultiselectLoadOptions.emit({\n query: this.searchQuery,\n page: this.currentPage + 1,\n });\n this.debouncedFetchAsyncOptions(this.searchQuery, this.currentPage + 1);\n }\n };\n\n\n private renderSelectedItemsList() {\n if (this.selectedItems.length === 0) return null;\n\n return (\n <div class=\"pds-multiselect__selected-section\">\n <ul class=\"pds-multiselect__selected-list\" role=\"list\">\n {this.selectedItems.map(item => (\n <li key={String(item.id)} class=\"pds-multiselect__selected-item\">\n {item.text}\n </li>\n ))}\n </ul>\n </div>\n );\n }\n\n private renderDropdown() {\n if (!this.isOpen) return null;\n\n const filteredOptions = this.getFilteredOptions();\n const valueArray = this.ensureValueArray();\n const hasSlottedEmpty = !!this.el.querySelector('[slot=\"empty\"]');\n const hasSlottedLoading = !!this.el.querySelector('[slot=\"loading\"]');\n\n return (\n <div\n class=\"pds-multiselect__panel\"\n ref={el => (this.panelEl = el)}\n style={{ minWidth: this.minWidth }}\n >\n {/* Search input */}\n <div class=\"pds-multiselect__search\">\n <pds-icon name=\"search\" size=\"small\" />\n <input\n ref={el => (this.searchInputEl = el)}\n type=\"text\"\n class=\"pds-multiselect__search-input\"\n placeholder=\"Find...\"\n value={this.searchQuery}\n aria-label=\"Search options\"\n aria-controls={`${this.componentId}-listbox`}\n aria-activedescendant={this.highlightedIndex >= 0 ? `${this.componentId}-option-${this.highlightedIndex}` : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded=\"true\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n onInput={this.handleSearchInputChange}\n onKeyDown={this.handleSearchInputKeyDown}\n />\n </div>\n\n {/* Selected items section */}\n {this.renderSelectedItemsList()}\n\n {/* Options list */}\n <ul\n class=\"pds-multiselect__listbox\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n aria-label={this.label || 'Options'}\n id={`${this.componentId}-listbox`}\n ref={el => (this.listboxEl = el)}\n style={{ maxHeight: this.maxHeight }}\n onScroll={this.handleScroll}\n >\n {this.loading && (\n <li class=\"pds-multiselect__loading\" role=\"presentation\">\n {hasSlottedLoading ? (\n <slot name=\"loading\" />\n ) : (\n <pds-loader size=\"small\" />\n )}\n </li>\n )}\n\n {!this.loading && filteredOptions.length === 0 && (\n <li class=\"pds-multiselect__empty\" role=\"presentation\">\n {hasSlottedEmpty ? (\n <slot name=\"empty\" />\n ) : (\n <span>No options found</span>\n )}\n </li>\n )}\n\n {filteredOptions.map((option, index) => {\n const isSelected = valueArray.includes(String(option.id));\n const isCreateOption = option.isCreateOption;\n const isHighlighted = index === this.highlightedIndex && !isCreateOption;\n const optionId = `${this.componentId}-option-${index}`;\n const isCreateDisabled = isCreateOption && this.creating;\n\n return (\n <li\n key={String(option.id)}\n id={optionId}\n class={{\n 'pds-multiselect__option': true,\n 'pds-multiselect__option--highlighted': isHighlighted,\n 'pds-multiselect__option--selected': isSelected,\n 'pds-multiselect__option--create': isCreateOption,\n 'pds-multiselect__option--disabled': isCreateDisabled,\n }}\n role=\"option\"\n aria-selected={isSelected ? 'true' : 'false'}\n aria-disabled={isCreateDisabled ? 'true' : undefined}\n aria-label={isCreateOption ? `Create new tag: ${option.text}` : undefined}\n data-index={index}\n onMouseDown={this.handleOptionMouseDown(option)}\n onMouseEnter={this.handleOptionMouseEnter(index)}\n >\n {isCreateOption ? (\n <pds-box class=\"pds-multiselect__create-option\" align-items=\"center\" gap=\"xs\">\n <pds-icon name=\"add\" size=\"small\" />\n <pds-text>Add \"{option.text}\"</pds-text>\n </pds-box>\n ) : (\n <pds-checkbox\n componentId={`${this.componentId}-checkbox-${index}`}\n checked={isSelected}\n label={option.text}\n style={{ pointerEvents: 'none' }}\n />\n )}\n </li>\n );\n })}\n\n {this.hasMore && !this.loading && (\n <li class=\"pds-multiselect__load-more\" role=\"presentation\">\n <pds-loader size=\"small\" />\n </li>\n )}\n </ul>\n </div>\n );\n }\n\n private getTriggerText(): string {\n const count = this.selectedItems.length;\n if (count === 0) {\n return this.placeholder || 'Select...';\n }\n return `${count} item${count === 1 ? '' : 's'}`;\n }\n\n render() {\n const hasSelections = this.selectedItems.length > 0;\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n >\n <div class=\"pds-multiselect\">\n {this.label && (\n <label\n htmlFor={this.componentId}\n class={{\n 'pds-multiselect__label': true,\n 'visually-hidden': this.hideLabel,\n }}\n >\n {this.label}\n </label>\n )}\n\n <div\n class=\"pds-multiselect__wrapper\"\n ref={el => (this.containerEl = el)}\n onFocusout={this.handleContainerFocusOut}\n style={{ width: this.triggerWidth }}\n >\n <button\n ref={el => (this.triggerEl = el)}\n type=\"button\"\n class={{\n 'pds-multiselect__trigger': true,\n 'pds-multiselect__trigger--open': this.isOpen,\n 'pds-multiselect__trigger--disabled': this.disabled,\n 'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,\n 'pds-multiselect__trigger--has-value': hasSelections,\n }}\n id={this.componentId}\n disabled={this.disabled}\n aria-required={this.required ? 'true' : undefined}\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-describedby={assignDescription(\n this.componentId,\n this.invalid || !!this.errorMessage,\n this.errorMessage || this.helperMessage\n )}\n aria-invalid={this.invalid || !!this.errorMessage ? 'true' : undefined}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeyDown}\n >\n <span class={{\n 'pds-multiselect__trigger-text': true,\n 'pds-multiselect__trigger-text--placeholder': !hasSelections,\n }}>\n {this.getTriggerText()}\n </span>\n <pds-icon class=\"pds-multiselect__icon\" icon={enlarge} />\n </button>\n\n {this.renderDropdown()}\n </div>\n\n {this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (\n <p class=\"pds-multiselect__helper\" id={messageId(this.componentId, 'helper')}>\n {this.helperMessage}\n </p>\n )}\n\n {this.errorMessage && (\n <p class=\"pds-multiselect__error\" id={messageId(this.componentId, 'error')}>\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </p>\n )}\n\n {/* Hidden slot for static options */}\n <div style={{ display: 'none' }}>\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pds-multiselect.entry.js","sources":["src/components/pds-multiselect/pds-multiselect.scss?tag=pds-multiselect&encapsulation=shadow","src/components/pds-multiselect/pds-multiselect.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n:host([aria-disabled=\"true\"]) {\n .pds-multiselect__trigger {\n background: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n .pds-multiselect__icon {\n color: var(--pine-color-text-disabled);\n }\n}\n\n.pds-multiselect {\n position: relative;\n}\n\n.pds-multiselect__label {\n color: var(--pine-color-text-label);\n display: block;\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n margin-block-end: var(--pine-dimension-2xs);\n}\n\n.pds-multiselect__wrapper {\n position: relative;\n}\n\n.pds-multiselect__trigger {\n align-items: center;\n background: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: var(--pine-dimension-125);\n cursor: pointer;\n display: flex;\n font: var(--pine-typography-body);\n gap: var(--pine-dimension-xs);\n justify-content: space-between;\n letter-spacing: var(--pine-letter-spacing);\n min-height: var(--pine-dimension-550);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n position: relative;\n text-align: start;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n width: 100%;\n\n &:hover:not(.pds-multiselect__trigger--disabled) {\n border-color: var(--pine-color-border-hover);\n }\n\n &:focus:not(.pds-multiselect__trigger--disabled) {\n border-color: var(--pine-color-border-active);\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n &.pds-multiselect__trigger--open {\n border-color: var(--pine-color-border-active);\n }\n\n &.pds-multiselect__trigger--invalid {\n background-color: var(--pine-color-red-050);\n border-color: var(--pine-color-border-danger);\n\n &:focus {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n\n &.pds-multiselect__trigger--disabled {\n background: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n}\n\n.pds-multiselect__trigger-text {\n color: var(--pine-color-text-strong);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &.pds-multiselect__trigger-text--placeholder {\n color: var(--pine-color-text-placeholder);\n }\n\n .pds-multiselect__trigger--disabled & {\n color: var(--pine-color-text-disabled);\n }\n}\n\n.pds-multiselect__icon {\n color: var(--pine-color-icon);\n flex-shrink: var(--pine-dimension-none);\n}\n\n.pds-multiselect__panel {\n background: var(--pine-color-background-container);\n border-radius: var(--pine-dimension-125);\n box-shadow: var(--pine-box-shadow);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n position: absolute;\n z-index: var(--pine-z-index-raised);\n}\n\n.pds-multiselect__search {\n align-items: center;\n border-block-end: var(--pine-border);\n border-block-end-color: var(--pine-color-border-subtle);\n display: flex;\n gap: var(--pine-dimension-xs);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n\n pds-icon {\n color: var(--pine-color-text-muted);\n flex-shrink: var(--pine-dimension-none);\n }\n}\n\n.pds-multiselect__search-input {\n background: transparent;\n border: var(--pine-dimension-none);\n color: var(--pine-color-text-strong);\n flex: 1;\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n min-width: var(--pine-dimension-none);\n outline: none;\n\n &::placeholder {\n color: var(--pine-color-text-placeholder);\n }\n}\n\n.pds-multiselect__selected-section {\n border-block-end: var(--pine-border);\n border-block-end-color: var(--pine-color-border-subtle);\n padding: var(--pine-dimension-xs);\n}\n\n.pds-multiselect__selected-list {\n list-style: none;\n margin: var(--pine-dimension-none);\n padding: var(--pine-dimension-none);\n}\n\n.pds-multiselect__selected-item {\n color: var(--pine-color-text-strong);\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n overflow: hidden;\n padding: var(--pine-dimension-2xs) var(--pine-dimension-xs);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.pds-multiselect__listbox {\n background: transparent;\n border: var(--pine-dimension-none);\n box-sizing: border-box;\n list-style: none;\n margin: var(--pine-dimension-none);\n overflow-y: auto;\n padding: var(--pine-dimension-xs);\n}\n\n.pds-multiselect__option {\n align-items: center;\n background: transparent;\n border-radius: var(--pine-dimension-xs);\n cursor: pointer;\n display: flex;\n padding: var(--pine-dimension-2xs) var(--pine-dimension-xs);\n transition: background 0.15s;\n\n // Prevent checkbox label from triggering double events\n pds-checkbox {\n pointer-events: none;\n width: 100%;\n }\n\n &:hover,\n &.pds-multiselect__option--highlighted {\n background: var(--pine-color-background-muted);\n }\n\n &:focus-visible {\n outline: var(--pine-dimension-none);\n }\n}\n\n.pds-multiselect__create-option {\n color: var(--pine-color-text-strong);\n width: 100%;\n\n pds-icon {\n color: var(--pine-color-text-muted);\n flex-shrink: var(--pine-dimension-none);\n }\n}\n\n.pds-multiselect__empty,\n.pds-multiselect__loading {\n align-items: center;\n color: var(--pine-color-text-muted);\n display: flex;\n font: var(--pine-typography-body);\n justify-content: center;\n padding: var(--pine-dimension-sm);\n}\n\n.pds-multiselect__load-more {\n align-items: center;\n display: flex;\n justify-content: center;\n padding: var(--pine-dimension-xs);\n}\n\n.pds-multiselect__helper {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm);\n margin-block-start: var(--pine-dimension-2xs);\n margin-inline-start: var(--pine-dimension-none);\n}\n\n.pds-multiselect__error {\n align-items: flex-start;\n color: var(--pine-color-text-message-danger);\n display: flex;\n font: var(--pine-typography-body-sm);\n gap: var(--pine-dimension-2xs);\n margin-block-start: var(--pine-dimension-2xs);\n margin-inline-start: var(--pine-dimension-none);\n\n pds-icon {\n flex-shrink: var(--pine-dimension-none);\n margin-block-start: var(--pine-dimension-025);\n }\n}\n\n.visually-hidden {\n border: var(--pine-dimension-none);\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: var(--pine-dimension-none);\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport { computePosition, flip, offset, shift, size, autoUpdate } from '@floating-ui/dom';\nimport { debounceEvent } from '@utils/utils';\nimport { messageId, assignDescription } from '../../utils/form';\nimport { danger, enlarge } from '@pine-ds/icons/icons';\nimport type {\n MultiselectOption,\n MultiselectChangeEventDetail,\n MultiselectSearchEventDetail,\n MultiselectLoadOptionsEventDetail,\n MultiselectCreateEventDetail,\n AsyncResponse,\n CreateResponse,\n} from './multiselect-interface';\n\n/**\n * @slot (default) - Static option elements for the multiselect\n * @slot empty - Custom empty state message when no options match\n * @slot loading - Custom loading indicator\n */\n@Component({\n tag: 'pds-multiselect',\n styleUrl: 'pds-multiselect.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class PdsMultiselect {\n private triggerEl?: HTMLButtonElement;\n private searchInputEl?: HTMLInputElement;\n private containerEl?: HTMLElement;\n private listboxEl?: HTMLElement;\n private panelEl?: HTMLElement;\n private internals?: ElementInternals;\n private abortController?: AbortController;\n private fetchDebounceTimer?: number;\n private fetchTimeoutTimer?: number;\n private observer?: MutationObserver;\n private cleanupAutoUpdate?: () => void;\n\n @Element() el!: HTMLPdsMultiselectElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Text to be displayed as the multiselect label.\n */\n @Prop() label?: string;\n\n /**\n * Placeholder text for the input field.\n */\n @Prop() placeholder?: string = 'Select...';\n\n /**\n * Specifies the name. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * Array of selected option values.\n */\n @Prop({ mutable: true }) value: string[] = [];\n\n /**\n * Determines whether or not the multiselect is disabled.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * URL endpoint for async data fetching.\n */\n @Prop() asyncUrl?: string;\n\n /**\n * HTTP method for async requests.\n */\n @Prop() asyncMethod: 'GET' | 'POST' = 'GET';\n\n /**\n * Debounce delay in milliseconds for search/fetch.\n */\n @Prop() debounce: number = 300;\n\n /**\n * Timeout in milliseconds for async fetch requests.\n */\n @Prop() fetchTimeout: number = 30000;\n\n /**\n * Maximum number of selections allowed.\n */\n @Prop() maxSelections?: number;\n\n /**\n * Maximum height of the dropdown before scrolling.\n */\n @Prop() maxHeight: string = '300px';\n\n /**\n * Width of the trigger button (and reference for dropdown positioning).\n */\n @Prop() triggerWidth: string = '100%';\n\n /**\n * Minimum width of the dropdown panel.\n */\n @Prop() minWidth: string = '250px';\n\n /**\n * Width of the dropdown panel. Defaults to the trigger width.\n */\n @Prop() panelWidth?: string;\n\n /**\n * Visually hides the label but keeps it accessible.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * Hides the selected items summary section in the dropdown panel.\n */\n @Prop() hideSelectedItems: boolean = false;\n\n /**\n * Error message to display.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Helper message to display below the input.\n */\n @Prop() helperMessage?: string;\n\n /**\n * If true, the multiselect is in an invalid state.\n */\n @Prop() invalid?: boolean;\n\n /**\n * If true, the multiselect is required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Whether the component is currently loading async options.\n */\n @Prop({ mutable: true }) loading: boolean = false;\n\n /**\n * Options provided externally (for consumer-managed async).\n */\n @Prop() options?: MultiselectOption[];\n\n /**\n * Function to format async results. Receives raw API response item.\n */\n @Prop() formatResult?: (item: unknown) => MultiselectOption;\n\n /**\n * URL endpoint for creating new options. When set, shows \"Add\" option when no matches found.\n */\n @Prop() createUrl?: string;\n\n /**\n * CSRF token for authenticated requests. If not provided, attempts to read from meta tag.\n */\n @Prop() csrfToken?: string;\n\n /**\n * CSRF header name for authenticated requests. Defaults to `X-CSRF-Token`.\n */\n @Prop() csrfHeaderName?: string = 'X-CSRF-Token';\n\n // Internal state\n @State() isOpen: boolean = false;\n @State() searchQuery: string = '';\n @State() highlightedIndex: number = -1;\n @State() internalOptions: MultiselectOption[] = [];\n @State() selectedItems: MultiselectOption[] = [];\n @State() currentPage: number = 1;\n @State() hasMore: boolean = false;\n @State() creating: boolean = false;\n\n // Flag to prevent focusout from closing during open transition\n private isOpening: boolean = false;\n // Flag to track if initial async fetch has been triggered (prevents double fetch)\n private initialAsyncFetchTriggered: boolean = false;\n // Flag to track if value changed during loading and needs resolution after fetch completes\n private pendingUnresolvedFetch: boolean = false;\n\n /**\n * Emitted when selection changes.\n */\n @Event() pdsMultiselectChange!: EventEmitter<MultiselectChangeEventDetail>;\n\n /**\n * Emitted on search input (for consumer-managed async).\n */\n @Event() pdsMultiselectSearch!: EventEmitter<MultiselectSearchEventDetail>;\n\n /**\n * Emitted to request more options (pagination).\n */\n @Event() pdsMultiselectLoadOptions!: EventEmitter<MultiselectLoadOptionsEventDetail>;\n\n /**\n * Emitted when a new option is created.\n */\n @Event() pdsMultiselectCreate!: EventEmitter<MultiselectCreateEventDetail>;\n\n private originalSearchEmitter?: EventEmitter<MultiselectSearchEventDetail>;\n\n connectedCallback() {\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n }\n\n componentWillLoad() {\n this.originalSearchEmitter = this.pdsMultiselectSearch;\n this.syncSelectedItems();\n }\n\n componentDidLoad() {\n this.setupDebounce();\n this.setupMutationObserver();\n this.setupSlotChangeListener();\n this.updateFormValue();\n\n // Ensure preselected values sync after DOM is fully ready\n // This handles cases where slot content loads after initial render (e.g., in docs/MDX)\n requestAnimationFrame(() => {\n this.updateOptionsFromSlot();\n this.syncSelectedItems();\n });\n\n // If we have preselected values and asyncUrl, fetch options to resolve them\n // This ensures the trigger shows \"X items\" instead of placeholder on initial render\n if (this.asyncUrl && this.ensureValueArray().length > 0) {\n this.initialAsyncFetchTriggered = true;\n this.fetchOptions('', 1);\n }\n }\n\n private setupSlotChangeListener() {\n const slot = this.el.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement;\n if (slot) {\n slot.addEventListener('slotchange', () => {\n this.updateOptionsFromSlot();\n this.syncSelectedItems();\n });\n // Also call it immediately in case content is already slotted\n this.updateOptionsFromSlot();\n }\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n this.cleanupAutoUpdate?.();\n this.clearAsyncFetchState();\n }\n\n @Watch('debounce')\n protected setupDebounce() {\n const { pdsMultiselectSearch, debounce, originalSearchEmitter } = this;\n this.pdsMultiselectSearch = debounce === undefined\n ? originalSearchEmitter ?? pdsMultiselectSearch\n : debounceEvent(pdsMultiselectSearch, debounce);\n }\n\n @Watch('value')\n protected valueChanged(newValue: string[] | string) {\n // Handle JSON string values (from HTML attributes)\n if (typeof newValue === 'string') {\n try {\n const parsed = JSON.parse(newValue);\n if (Array.isArray(parsed)) {\n this.value = parsed;\n return; // The assignment will trigger this watcher again with the array\n }\n } catch {\n // Not valid JSON, treat as single value\n this.value = newValue ? [newValue] : [];\n return;\n }\n }\n this.syncSelectedItems();\n this.updateFormValue();\n\n // If using asyncUrl and some values couldn't be resolved, fetch options\n // This handles programmatic value changes where the options aren't loaded yet\n if (this.asyncUrl) {\n const valueArray = this.ensureValueArray();\n const hasUnresolvedValues = valueArray.length > 0 && this.selectedItems.length < valueArray.length;\n if (hasUnresolvedValues) {\n if (this.loading) {\n // Mark that we need to re-check after current fetch completes\n this.pendingUnresolvedFetch = true;\n } else {\n this.fetchOptions('', 1);\n }\n }\n }\n }\n\n @Watch('options')\n protected optionsChanged() {\n if (this.options) {\n this.internalOptions = [...this.options];\n }\n }\n\n @Watch('internalOptions')\n protected internalOptionsChanged() {\n // Re-sync selected items when options become available\n // This handles the case where value is set before options are loaded (e.g., from slot)\n this.syncSelectedItems();\n }\n\n /**\n * Sets focus on the trigger button.\n */\n @Method()\n async setFocus() {\n this.triggerEl?.focus();\n }\n\n /**\n * Handle global keyboard events for accessibility.\n * Closes dropdown on Escape key press regardless of focus location.\n */\n @Listen('keydown', { target: 'window' })\n handleWindowKeyDown(event: KeyboardEvent) {\n if (!this.isOpen) return;\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeDropdown();\n this.triggerEl?.focus();\n }\n }\n\n private setupMutationObserver() {\n this.observer = new MutationObserver(() => {\n this.updateOptionsFromSlot();\n });\n\n this.observer.observe(this.el, {\n childList: true,\n subtree: true,\n });\n }\n\n private updateOptionsFromSlot() {\n const slot = this.el.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement;\n if (!slot) return;\n\n const options = slot.assignedElements({ flatten: true })\n .filter((el): el is HTMLOptionElement => el.tagName === 'OPTION')\n .map(opt => ({\n id: opt.value,\n text: opt.textContent || opt.value,\n }));\n\n // Only update if we actually found options AND we're not using async/external options\n // Don't clear internalOptions if slot returns empty (might be mid-DOM-update)\n if (options.length > 0 && !this.asyncUrl && !this.options) {\n this.internalOptions = options;\n }\n }\n\n private clearAsyncFetchState() {\n if (this.fetchDebounceTimer !== undefined) {\n window.clearTimeout(this.fetchDebounceTimer);\n this.fetchDebounceTimer = undefined;\n }\n if (this.fetchTimeoutTimer !== undefined) {\n window.clearTimeout(this.fetchTimeoutTimer);\n this.fetchTimeoutTimer = undefined;\n }\n this.abortController?.abort();\n this.abortController = undefined;\n }\n\n private debouncedFetchAsyncOptions(query: string, page: number = 1) {\n if (!this.asyncUrl) return;\n\n if (this.fetchDebounceTimer !== undefined) {\n window.clearTimeout(this.fetchDebounceTimer);\n }\n\n const delay = Math.max(0, this.debounce ?? 0);\n this.fetchDebounceTimer = window.setTimeout(() => {\n this.fetchDebounceTimer = undefined;\n this.fetchOptions(query, page);\n }, delay);\n }\n\n private syncSelectedItems() {\n // Ensure value is an array (may be string from HTML attribute)\n const valueArray = this.ensureValueArray();\n const allOptions = this.getAllOptions();\n\n // Map values to options, preserving existing selectedItems for values not yet in options\n const newSelectedItems: MultiselectOption[] = [];\n const existingItemsMap = new Map(this.selectedItems.map(item => [String(item.id), item]));\n\n valueArray.forEach(val => {\n // First try to find in available options\n const option = allOptions.find(opt => String(opt.id) === String(val));\n\n if (option) {\n newSelectedItems.push(option);\n } else if (existingItemsMap.has(String(val))) {\n // If not in options but exists in current selectedItems, preserve it\n // This handles the case where async data hasn't loaded yet or newly created items\n newSelectedItems.push(existingItemsMap.get(String(val))!);\n }\n // Note: We don't create placeholders for values without matching options.\n // This ensures selectedItems remains empty until options are actually loaded,\n // which matches the expected behavior for preselected values.\n });\n\n this.selectedItems = newSelectedItems;\n }\n\n private ensureValueArray(): string[] {\n // Handle JSON string values passed via HTML attribute\n if (typeof this.value === 'string') {\n try {\n const parsed = JSON.parse(this.value as unknown as string);\n if (Array.isArray(parsed)) {\n this.value = parsed;\n return parsed;\n }\n } catch {\n // Not valid JSON, treat as single value\n const singleValue = this.value as unknown as string;\n this.value = singleValue ? [singleValue] : [];\n return this.value;\n }\n }\n return Array.isArray(this.value) ? this.value : [];\n }\n\n private getAllOptions(): MultiselectOption[] {\n return this.options || this.internalOptions;\n }\n\n private getFilteredOptions(): MultiselectOption[] {\n const allOptions = this.getAllOptions();\n const query = this.searchQuery.toLowerCase();\n\n const filtered = allOptions.filter(opt => {\n // Filter by search query only - don't filter out selected items\n if (query) {\n return opt.text.toLowerCase().includes(query);\n }\n return true;\n });\n\n // Add create option if enabled and no matches found\n if (this.createUrl && this.searchQuery.trim() && filtered.length === 0) {\n return [{\n id: '__create__',\n text: this.searchQuery.trim(),\n isCreateOption: true,\n }];\n }\n\n return filtered;\n }\n\n private updateFormValue() {\n if (this.internals?.setFormValue) {\n // Ensure value is an array before iterating\n const valueArray = this.ensureValueArray();\n\n // Submit as multiple values with same name (native select multiple behavior)\n const formData = new FormData();\n valueArray.forEach(val => {\n if (this.name) {\n formData.append(this.name, val);\n }\n });\n this.internals.setFormValue(formData);\n\n // Update validity state for required validation\n if (this.required && valueArray.length === 0) {\n this.internals.setValidity(\n { valueMissing: true },\n 'Please select at least one option.',\n this.triggerEl\n );\n } else {\n this.internals.setValidity({});\n }\n }\n }\n\n private getCsrfToken(): string | null {\n // Use provided token if available\n if (this.csrfToken) {\n return this.csrfToken;\n }\n\n // Try to read from meta tag\n const metaTag = document.querySelector('meta[name=\"csrf-token\"]') as HTMLMetaElement;\n return metaTag?.content || null;\n }\n\n private async fetchOptions(query: string, page: number = 1) {\n if (!this.asyncUrl) return;\n\n // Abort any pending request and clear existing timeout\n this.abortController?.abort();\n if (this.fetchTimeoutTimer !== undefined) {\n window.clearTimeout(this.fetchTimeoutTimer);\n this.fetchTimeoutTimer = undefined;\n }\n\n this.abortController = new AbortController();\n this.loading = true;\n\n // Set up timeout for fetch request\n this.fetchTimeoutTimer = window.setTimeout(() => {\n this.abortController?.abort();\n this.fetchTimeoutTimer = undefined;\n }, this.fetchTimeout);\n\n try {\n // Guard against malformed asyncUrl\n let url: URL;\n try {\n url = new URL(this.asyncUrl, window.location.origin);\n } catch (urlError) {\n throw new TypeError(`Invalid asyncUrl: ${this.asyncUrl}`);\n }\n\n if (this.asyncMethod === 'GET') {\n url.searchParams.set('search', query);\n url.searchParams.set('page', String(page));\n }\n\n const csrfToken = this.getCsrfToken();\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n };\n\n if (csrfToken) {\n const headerName = this.csrfHeaderName || 'X-CSRF-Token';\n headers[headerName] = csrfToken;\n }\n\n const response = await fetch(url.toString(), {\n method: this.asyncMethod,\n signal: this.abortController.signal,\n headers,\n ...(this.asyncMethod === 'POST' && {\n body: JSON.stringify({ search: query, page }),\n }),\n });\n\n // Clear timeout on successful response\n if (this.fetchTimeoutTimer !== undefined) {\n window.clearTimeout(this.fetchTimeoutTimer);\n this.fetchTimeoutTimer = undefined;\n }\n\n if (!response.ok) throw new Error('Failed to fetch options');\n\n const data: AsyncResponse = await response.json();\n\n const formattedResults = data.results.map(item => {\n // If formatResult is provided, use it\n if (this.formatResult) {\n return this.formatResult(item);\n }\n\n // Defensive check: ensure item is an object before spreading\n if (typeof item === 'object' && item !== null) {\n return {\n id: item.id,\n text: item.text,\n ...item,\n } as MultiselectOption;\n }\n\n // Handle primitives by converting to safe shape\n return {\n id: String(item),\n text: String(item),\n } as MultiselectOption;\n });\n\n if (page === 1) {\n this.internalOptions = formattedResults;\n } else {\n this.internalOptions = [...this.internalOptions, ...formattedResults];\n }\n\n this.hasMore = data.totalCount ? this.internalOptions.length < data.totalCount : false;\n this.currentPage = page;\n\n } catch (error) {\n // Clear timeout on error\n if (this.fetchTimeoutTimer !== undefined) {\n window.clearTimeout(this.fetchTimeoutTimer);\n this.fetchTimeoutTimer = undefined;\n }\n\n if ((error as Error).name !== 'AbortError') {\n console.error('PdsMultiselect: Failed to fetch options', error);\n }\n } finally {\n this.loading = false;\n\n // Check if value changed during loading and still has unresolved values\n if (this.pendingUnresolvedFetch) {\n this.pendingUnresolvedFetch = false;\n const valueArray = this.ensureValueArray();\n const hasUnresolvedValues = valueArray.length > 0 && this.selectedItems.length < valueArray.length;\n if (hasUnresolvedValues) {\n this.fetchOptions('', 1);\n }\n }\n }\n }\n\n private async createOption(query: string) {\n if (!this.createUrl || !query.trim()) return;\n\n // Reentrancy guard: prevent duplicate POSTs if creation is already in-flight\n if (this.creating) return;\n\n this.creating = true;\n\n try {\n const url = new URL(this.createUrl, window.location.origin);\n\n const csrfToken = this.getCsrfToken();\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n };\n\n if (csrfToken) {\n const headerName = this.csrfHeaderName || 'X-CSRF-Token';\n headers[headerName] = csrfToken;\n }\n\n const response = await fetch(url.toString(), {\n method: 'POST',\n headers,\n body: JSON.stringify({ text: query.trim() }),\n });\n\n if (!response.ok) throw new Error('Failed to create option');\n\n const data: CreateResponse = await response.json();\n\n const newOption: MultiselectOption = {\n id: data.id,\n text: data.text,\n ...data,\n };\n\n // Add to internal options first\n this.internalOptions = [...this.internalOptions, newOption];\n\n // Select the new option\n this.value = [...this.value, String(newOption.id)];\n\n // Sync selected items to update display with new option\n this.syncSelectedItems();\n\n // Emit create event\n this.pdsMultiselectCreate.emit({\n query: query.trim(),\n newOption,\n });\n\n // Emit change event with synced items\n this.pdsMultiselectChange.emit({\n values: this.value,\n items: this.selectedItems,\n });\n\n // Clear search and keep dropdown open\n this.searchQuery = '';\n this.highlightedIndex = -1;\n\n // Focus back on search input\n requestAnimationFrame(() => {\n this.searchInputEl?.focus();\n });\n\n } catch (error) {\n console.error('PdsMultiselect: Failed to create option', error);\n } finally {\n this.creating = false;\n }\n }\n\n private handleTriggerClick = () => {\n if (this.disabled) return;\n\n if (this.isOpen) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n };\n\n private handleTriggerKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (!this.isOpen) {\n this.openDropdown();\n }\n break;\n }\n };\n\n private handleSearchInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.searchQuery = target.value;\n this.highlightedIndex = -1;\n\n // Emit search event for consumer-managed async\n this.pdsMultiselectSearch.emit({ query: this.searchQuery });\n\n // Fetch from async URL if configured\n if (this.asyncUrl) {\n this.debouncedFetchAsyncOptions(this.searchQuery, 1);\n }\n };\n\n private handleSearchInputKeyDown = (e: KeyboardEvent) => {\n const filteredOptions = this.getFilteredOptions();\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this.highlightedIndex = Math.min(this.highlightedIndex + 1, filteredOptions.length - 1);\n this.scrollOptionIntoView();\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n this.highlightedIndex = Math.max(this.highlightedIndex - 1, 0);\n this.scrollOptionIntoView();\n break;\n\n case 'Enter':\n e.preventDefault();\n if (this.highlightedIndex >= 0) {\n const option = filteredOptions[this.highlightedIndex];\n if (option) {\n this.selectOption(option);\n }\n }\n break;\n\n // Escape is handled by the global @Listen('keydown') handler\n\n case 'Tab':\n this.closeDropdown();\n break;\n }\n };\n\n private handleContainerFocusOut = () => {\n // Use setTimeout to delay the check - this allows click events and focus transitions to complete\n // before we decide to close the dropdown\n setTimeout(() => {\n // Don't close if we're in the middle of opening or already closed\n if (!this.isOpen || this.isOpening) return;\n\n const activeElement = document.activeElement;\n\n // Check if focus is within our component's shadow root\n const isInShadowRoot = this.el.shadowRoot?.contains(activeElement);\n\n // Also check if focus is on the host element itself\n const isOnHost = activeElement === this.el;\n\n if (!isInShadowRoot && !isOnHost) {\n this.closeDropdown();\n }\n }, 0);\n };\n\n private openDropdown() {\n if (this.disabled) return;\n\n this.isOpening = true;\n this.isOpen = true;\n this.highlightedIndex = -1;\n\n // Trigger initial fetch if async (skip if already fetching from componentDidLoad)\n if (this.asyncUrl && this.internalOptions.length === 0 && !this.initialAsyncFetchTriggered) {\n this.debouncedFetchAsyncOptions(this.searchQuery, 1);\n }\n // Reset the flag so subsequent opens can fetch if needed\n this.initialAsyncFetchTriggered = false;\n\n requestAnimationFrame(() => {\n this.positionDropdown();\n // Focus the search input after the panel is positioned\n this.searchInputEl?.focus();\n // Clear the opening flag after focus has moved\n setTimeout(() => {\n this.isOpening = false;\n }, 50);\n });\n }\n\n private closeDropdown() {\n this.isOpen = false;\n this.highlightedIndex = -1;\n this.searchQuery = '';\n\n // Clean up auto-update\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n\n private positionDropdown() {\n if (!this.containerEl || !this.panelEl) return;\n const referenceEl = this.triggerEl || this.containerEl;\n\n const { minWidth, panelWidth } = this;\n\n const updatePosition = () => {\n computePosition(referenceEl!, this.panelEl!, {\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n offset(12),\n flip(),\n shift({ padding: 8 }),\n size({\n apply: ({ rects, elements }) => {\n Object.assign(elements.floating.style, {\n width: panelWidth ?? `${rects.reference.width}px`,\n minWidth,\n });\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (this.panelEl) {\n this.panelEl.style.left = `${x}px`;\n this.panelEl.style.top = `${y}px`;\n }\n });\n };\n\n // Initial position\n updatePosition();\n\n // Set up auto-update for window resize and scroll\n const cleanupAutoUpdate = autoUpdate(\n referenceEl!,\n this.panelEl,\n updatePosition\n );\n this.cleanupAutoUpdate = () => {\n cleanupAutoUpdate();\n this.clearAsyncFetchState();\n };\n }\n\n private scrollOptionIntoView() {\n requestAnimationFrame(() => {\n const highlighted = this.listboxEl?.querySelector(`[data-index=\"${this.highlightedIndex}\"]`) as HTMLElement;\n highlighted?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n });\n }\n\n private toggleOption(option: MultiselectOption) {\n // Handle create option\n if (option.isCreateOption) {\n // Prevent multiple create calls while one is in-flight\n if (!this.creating) {\n this.createOption(this.searchQuery);\n }\n return;\n }\n\n const isSelected = this.value.includes(String(option.id));\n\n if (isSelected) {\n // Remove from selection\n this.value = this.value.filter(v => v !== String(option.id));\n } else {\n // Add to selection\n if (this.maxSelections && this.value.length >= this.maxSelections) {\n return;\n }\n\n this.value = [...this.value, String(option.id)];\n }\n\n // Sync selected items to ensure no duplicates and accurate state\n this.syncSelectedItems();\n\n // Emit change event with synced items\n this.pdsMultiselectChange.emit({\n values: this.value,\n items: this.selectedItems,\n });\n\n // Keep focus on search input, don't close dropdown\n this.searchInputEl?.focus();\n }\n\n private selectOption(option: MultiselectOption) {\n // For keyboard navigation - toggle the option\n this.toggleOption(option);\n }\n\n private handleOptionMouseDown = (option: MultiselectOption) => (e: MouseEvent) => {\n e.preventDefault(); // Prevent focus change\n this.toggleOption(option);\n };\n\n private handleOptionMouseEnter = (index: number) => () => {\n this.highlightedIndex = index;\n };\n\n\n private handleScroll = (e: Event) => {\n if (!this.asyncUrl || !this.hasMore || this.loading) return;\n\n const target = e.target as HTMLElement;\n const scrollBottom = target.scrollHeight - target.scrollTop - target.clientHeight;\n\n // Load more when near bottom (within 50px)\n if (scrollBottom < 50) {\n this.pdsMultiselectLoadOptions.emit({\n query: this.searchQuery,\n page: this.currentPage + 1,\n });\n this.debouncedFetchAsyncOptions(this.searchQuery, this.currentPage + 1);\n }\n };\n\n\n private renderSelectedItemsList() {\n if (this.hideSelectedItems || this.selectedItems.length === 0) return null;\n\n return (\n <div class=\"pds-multiselect__selected-section\">\n <ul class=\"pds-multiselect__selected-list\" role=\"list\">\n {this.selectedItems.map(item => (\n <li key={String(item.id)} class=\"pds-multiselect__selected-item\">\n {item.text}\n </li>\n ))}\n </ul>\n </div>\n );\n }\n\n private renderDropdown() {\n if (!this.isOpen) return null;\n\n const filteredOptions = this.getFilteredOptions();\n const valueArray = this.ensureValueArray();\n const hasSlottedEmpty = !!this.el.querySelector('[slot=\"empty\"]');\n const hasSlottedLoading = !!this.el.querySelector('[slot=\"loading\"]');\n\n return (\n <div\n class=\"pds-multiselect__panel\"\n ref={el => (this.panelEl = el)}\n style={{ minWidth: this.minWidth }}\n >\n {/* Search input */}\n <div class=\"pds-multiselect__search\">\n <pds-icon name=\"search\" size=\"small\" />\n <input\n ref={el => (this.searchInputEl = el)}\n type=\"text\"\n class=\"pds-multiselect__search-input\"\n placeholder=\"Find...\"\n value={this.searchQuery}\n aria-label=\"Search options\"\n aria-controls={`${this.componentId}-listbox`}\n aria-activedescendant={this.highlightedIndex >= 0 ? `${this.componentId}-option-${this.highlightedIndex}` : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded=\"true\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n onInput={this.handleSearchInputChange}\n onKeyDown={this.handleSearchInputKeyDown}\n />\n </div>\n\n {/* Selected items section */}\n {this.renderSelectedItemsList()}\n\n {/* Options list */}\n <ul\n class=\"pds-multiselect__listbox\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n aria-label={this.label || 'Options'}\n id={`${this.componentId}-listbox`}\n ref={el => (this.listboxEl = el)}\n style={{ maxHeight: this.maxHeight }}\n onScroll={this.handleScroll}\n >\n {this.loading && (\n <li class=\"pds-multiselect__loading\" role=\"presentation\">\n {hasSlottedLoading ? (\n <slot name=\"loading\" />\n ) : (\n <pds-loader size=\"small\" />\n )}\n </li>\n )}\n\n {!this.loading && filteredOptions.length === 0 && (\n <li class=\"pds-multiselect__empty\" role=\"presentation\">\n {hasSlottedEmpty ? (\n <slot name=\"empty\" />\n ) : (\n <span>No options found</span>\n )}\n </li>\n )}\n\n {filteredOptions.map((option, index) => {\n const isSelected = valueArray.includes(String(option.id));\n const isCreateOption = option.isCreateOption;\n const isHighlighted = index === this.highlightedIndex && !isCreateOption;\n const optionId = `${this.componentId}-option-${index}`;\n const isCreateDisabled = isCreateOption && this.creating;\n\n return (\n <li\n key={String(option.id)}\n id={optionId}\n class={{\n 'pds-multiselect__option': true,\n 'pds-multiselect__option--highlighted': isHighlighted,\n 'pds-multiselect__option--selected': isSelected,\n 'pds-multiselect__option--create': isCreateOption,\n 'pds-multiselect__option--disabled': isCreateDisabled,\n }}\n role=\"option\"\n aria-selected={isSelected ? 'true' : 'false'}\n aria-disabled={isCreateDisabled ? 'true' : undefined}\n aria-label={isCreateOption ? `Create new tag: ${option.text}` : undefined}\n data-index={index}\n onMouseDown={this.handleOptionMouseDown(option)}\n onMouseEnter={this.handleOptionMouseEnter(index)}\n >\n {isCreateOption ? (\n <pds-box class=\"pds-multiselect__create-option\" align-items=\"center\" gap=\"xs\">\n <pds-icon name=\"add\" size=\"small\" />\n <pds-text>Add \"{option.text}\"</pds-text>\n </pds-box>\n ) : (\n <pds-checkbox\n componentId={`${this.componentId}-checkbox-${index}`}\n checked={isSelected}\n label={option.text}\n style={{ pointerEvents: 'none' }}\n />\n )}\n </li>\n );\n })}\n\n {this.hasMore && !this.loading && (\n <li class=\"pds-multiselect__load-more\" role=\"presentation\">\n <pds-loader size=\"small\" />\n </li>\n )}\n </ul>\n </div>\n );\n }\n\n private getTriggerText(): string {\n const count = this.selectedItems.length;\n if (count === 0) {\n return this.placeholder || 'Select...';\n }\n return `${count} item${count === 1 ? '' : 's'}`;\n }\n\n render() {\n const hasSelections = this.selectedItems.length > 0;\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n >\n <div class=\"pds-multiselect\">\n {this.label && (\n <label\n htmlFor={this.componentId}\n class={{\n 'pds-multiselect__label': true,\n 'visually-hidden': this.hideLabel,\n }}\n >\n {this.label}\n </label>\n )}\n\n <div\n class=\"pds-multiselect__wrapper\"\n ref={el => (this.containerEl = el)}\n onFocusout={this.handleContainerFocusOut}\n style={{ width: this.triggerWidth }}\n >\n <button\n ref={el => (this.triggerEl = el)}\n type=\"button\"\n class={{\n 'pds-multiselect__trigger': true,\n 'pds-multiselect__trigger--open': this.isOpen,\n 'pds-multiselect__trigger--disabled': this.disabled,\n 'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,\n 'pds-multiselect__trigger--has-value': hasSelections,\n }}\n id={this.componentId}\n disabled={this.disabled}\n aria-required={this.required ? 'true' : undefined}\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-describedby={assignDescription(\n this.componentId,\n this.invalid || !!this.errorMessage,\n this.errorMessage || this.helperMessage\n )}\n aria-invalid={this.invalid || !!this.errorMessage ? 'true' : undefined}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeyDown}\n >\n <span class={{\n 'pds-multiselect__trigger-text': true,\n 'pds-multiselect__trigger-text--placeholder': !hasSelections,\n }}>\n {this.getTriggerText()}\n </span>\n <pds-icon class=\"pds-multiselect__icon\" icon={enlarge} />\n </button>\n\n {this.renderDropdown()}\n </div>\n\n {this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (\n <p class=\"pds-multiselect__helper\" id={messageId(this.componentId, 'helper')}>\n {this.helperMessage}\n </p>\n )}\n\n {this.errorMessage && (\n <p class=\"pds-multiselect__error\" id={messageId(this.componentId, 'error')}>\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </p>\n )}\n\n {/* Hidden slot for static options */}\n <div style={{ display: 'none' }}>\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as registerInstance,c as createEvent,h,H as Host,a as getElement}from"./index-DHPhrb5T.js";import{m as messageId}from"./form-DwjNklzi.js";import{b as danger}from"./index-D094LgxJ.js";var pdsRadioGroupCss=".sc-pds-radio-group-h{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-sm)}.is-invalid.sc-pds-radio-group-h .pds-radio-group__message--error.sc-pds-radio-group{color:var(--pine-color-text-message-danger)}.pds-radio-group__label.sc-pds-radio-group{color:var(--pine-color-text-label);font:var(--pine-typography-heading-6);font-weight:var(--pine-font-weight-medium);letter-spacing:var(--pine-letter-spacing-heading-6)}.pds-radio-group__radios.sc-pds-radio-group{display:-ms-flexbox;display:flex;gap:var(--pds-radio-group-gap, var(--pine-dimension-xs))}.pds-radio-group__radios--row.sc-pds-radio-group{-ms-flex-align:start;align-items:flex-start;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.pds-radio-group__radios--column.sc-pds-radio-group{-ms-flex-direction:column;flex-direction:column}.pds-radio-group__message.sc-pds-radio-group{color:var(--pine-color-text-message);font:var(--pine-typography-body);width:100%}.pds-radio-group__message--error.sc-pds-radio-group{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-radio-group__message--error.sc-pds-radio-group pds-icon.sc-pds-radio-group{-webkit-margin-before:var(--pine-dimension-050);margin-block-start:var(--pine-dimension-050)}";var PdsRadioGroup=function(){function e(e){registerInstance(this,e);this.pdsRadioGroupChange=createEvent(this,"pdsRadioGroupChange");this.direction="column";this.gap="xs";this.disabled=false;this.invalid=false;this.required=false}e.prototype.handlePropsChange=function(){this.updateChildRadios()};e.prototype.handleRadioChange=function(e){var i=e.target;if(i.type!=="radio"){return}if(i.checked){var r=i.closest("pds-radio");if(r){this.pdsRadioGroupChange.emit({checked:true,value:r.value,componentId:r.componentId})}}};e.prototype.updateChildRadios=function(){var e=this;var i=this.el.querySelectorAll("pds-radio");i.forEach((function(i){if(e.name){i.setAttribute("name",e.name)}else{i.removeAttribute("name")}if(e.disabled){i.setAttribute("disabled","true")}else{i.removeAttribute("disabled")}if(e.invalid){i.setAttribute("invalid","true")}else{i.removeAttribute("invalid")}if(e.required){i.setAttribute("required","true")}else{i.removeAttribute("required")}}))};e.prototype.componentWillLoad=function(){if(this.componentId){this._groupId=this.componentId}else{var e=typeof crypto!=="undefined"&&crypto.randomUUID?crypto.randomUUID():"".concat(Date.now(),"-").concat(Math.random().toString(36).substring(2,9));this._groupId="radio-group-".concat(e)}};e.prototype.componentDidLoad=function(){if(!this.name){console.warn("pds-radio-group: name prop is required for proper radio group functionality")}this.updateChildRadios()};e.prototype.classNames=function(){var e=[];if(this.invalid){e.push("is-invalid")}return e.join(" ")};e.prototype.getGapValue=function(){var e={none:"0",xxs:"var(--pine-dimension-xxs)",xs:"var(--pine-dimension-xs)",sm:"var(--pine-dimension-sm)",md:"var(--pine-dimension-md)",lg:"var(--pine-dimension-lg)",xl:"var(--pine-dimension-xl)",xxl:"var(--pine-dimension-xxl)"};if(e[this.gap]){return e[this.gap]}return"var(--pine-dimension-".concat(this.gap,")")};e.prototype.getAriaDescribedBy=function(){var e=[];if(this.errorMessage){e.push(messageId(this._groupId,"error"))}if(this.helperMessage){e.push(messageId(this._groupId,"helper"))}return e.length>0?e.join(" "):undefined};e.prototype.render=function(){var e=this;var i=this.getGapValue();var r=this.getAriaDescribedBy();return h(Host,{key:"53949e8e878887189482a13e0402402b8ee79c46",class:this.classNames(),id:this._groupId,role:"group","aria-describedby":r,style:{"--pds-radio-group-gap":i}},this.groupLabel&&h("div",{key:"9aa547ff0b60d1eb78ab6806c552391c119c6511",class:"pds-radio-group__label"},this.groupLabel),h("div",{key:"5bad4f6d4c685eca8a97b574511f21b93bdf4821",class:{"pds-radio-group__radios":true,"pds-radio-group__radios--row":this.direction==="row","pds-radio-group__radios--column":this.direction==="column"}},h("slot",{key:"ffd76f30b308f124e1df925b2fe354ffb80f59bc",onSlotchange:function(){return e.updateChildRadios()}})),this.helperMessage&&h("div",{key:"ea8995384b1e1c1e98d01d704bd969a97bfd2b2a",class:"pds-radio-group__message",id:messageId(this._groupId,"helper")},this.helperMessage),this.errorMessage&&h("div",{key:"30726bc368c7ad2820ae4cb43faf0a45e94a51e8",class:"pds-radio-group__message pds-radio-group__message--error",id:messageId(this._groupId,"error"),"aria-live":"assertive"},h("pds-icon",{key:"acc00b6e36ead10cc5cc01033ad0f619bd75f5da",icon:danger,size:"small"}),this.errorMessage))};Object.defineProperty(e.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{name:["handlePropsChange"],disabled:["handlePropsChange"],invalid:["handlePropsChange"],required:["handlePropsChange"]}},enumerable:false,configurable:true});return e}();PdsRadioGroup.style=pdsRadioGroupCss;export{PdsRadioGroup as pds_radio_group};
1
+ import{r as registerInstance,c as createEvent,h,H as Host,a as getElement}from"./index-DHPhrb5T.js";import{m as messageId}from"./form-CN-lL5QG.js";import{b as danger}from"./index-D094LgxJ.js";var pdsRadioGroupCss=".sc-pds-radio-group-h{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-sm)}.is-invalid.sc-pds-radio-group-h .pds-radio-group__message--error.sc-pds-radio-group{color:var(--pine-color-text-message-danger)}.pds-radio-group__label.sc-pds-radio-group{color:var(--pine-color-text-label);font:var(--pine-typography-heading-6);font-weight:var(--pine-font-weight-medium);letter-spacing:var(--pine-letter-spacing-heading-6)}.pds-radio-group__radios.sc-pds-radio-group{display:-ms-flexbox;display:flex;gap:var(--pds-radio-group-gap, var(--pine-dimension-xs))}.pds-radio-group__radios--row.sc-pds-radio-group{-ms-flex-align:start;align-items:flex-start;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.pds-radio-group__radios--column.sc-pds-radio-group{-ms-flex-direction:column;flex-direction:column}.pds-radio-group__message.sc-pds-radio-group{color:var(--pine-color-text-message);font:var(--pine-typography-body);width:100%}.pds-radio-group__message--error.sc-pds-radio-group{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-radio-group__message--error.sc-pds-radio-group pds-icon.sc-pds-radio-group{-webkit-margin-before:var(--pine-dimension-050);margin-block-start:var(--pine-dimension-050)}";var PdsRadioGroup=function(){function e(e){registerInstance(this,e);this.pdsRadioGroupChange=createEvent(this,"pdsRadioGroupChange");this.direction="column";this.gap="xs";this.disabled=false;this.invalid=false;this.required=false}e.prototype.handlePropsChange=function(){this.updateChildRadios()};e.prototype.handleRadioChange=function(e){var i=e.target;if(i.type!=="radio"){return}if(i.checked){var r=i.closest("pds-radio");if(r){this.pdsRadioGroupChange.emit({checked:true,value:r.value,componentId:r.componentId})}}};e.prototype.updateChildRadios=function(){var e=this;var i=this.el.querySelectorAll("pds-radio");i.forEach((function(i){if(e.name){i.setAttribute("name",e.name)}else{i.removeAttribute("name")}if(e.disabled){i.setAttribute("disabled","true")}else{i.removeAttribute("disabled")}if(e.invalid){i.setAttribute("invalid","true")}else{i.removeAttribute("invalid")}if(e.required){i.setAttribute("required","true")}else{i.removeAttribute("required")}}))};e.prototype.componentWillLoad=function(){if(this.componentId){this._groupId=this.componentId}else{var e=typeof crypto!=="undefined"&&crypto.randomUUID?crypto.randomUUID():"".concat(Date.now(),"-").concat(Math.random().toString(36).substring(2,9));this._groupId="radio-group-".concat(e)}};e.prototype.componentDidLoad=function(){if(!this.name){console.warn("pds-radio-group: name prop is required for proper radio group functionality")}this.updateChildRadios()};e.prototype.classNames=function(){var e=[];if(this.invalid){e.push("is-invalid")}return e.join(" ")};e.prototype.getGapValue=function(){var e={none:"0",xxs:"var(--pine-dimension-xxs)",xs:"var(--pine-dimension-xs)",sm:"var(--pine-dimension-sm)",md:"var(--pine-dimension-md)",lg:"var(--pine-dimension-lg)",xl:"var(--pine-dimension-xl)",xxl:"var(--pine-dimension-xxl)"};if(e[this.gap]){return e[this.gap]}return"var(--pine-dimension-".concat(this.gap,")")};e.prototype.getAriaDescribedBy=function(){var e=[];if(this.errorMessage){e.push(messageId(this._groupId,"error"))}if(this.helperMessage){e.push(messageId(this._groupId,"helper"))}return e.length>0?e.join(" "):undefined};e.prototype.render=function(){var e=this;var i=this.getGapValue();var r=this.getAriaDescribedBy();return h(Host,{key:"53949e8e878887189482a13e0402402b8ee79c46",class:this.classNames(),id:this._groupId,role:"group","aria-describedby":r,style:{"--pds-radio-group-gap":i}},this.groupLabel&&h("div",{key:"9aa547ff0b60d1eb78ab6806c552391c119c6511",class:"pds-radio-group__label"},this.groupLabel),h("div",{key:"5bad4f6d4c685eca8a97b574511f21b93bdf4821",class:{"pds-radio-group__radios":true,"pds-radio-group__radios--row":this.direction==="row","pds-radio-group__radios--column":this.direction==="column"}},h("slot",{key:"ffd76f30b308f124e1df925b2fe354ffb80f59bc",onSlotchange:function(){return e.updateChildRadios()}})),this.helperMessage&&h("div",{key:"ea8995384b1e1c1e98d01d704bd969a97bfd2b2a",class:"pds-radio-group__message",id:messageId(this._groupId,"helper")},this.helperMessage),this.errorMessage&&h("div",{key:"30726bc368c7ad2820ae4cb43faf0a45e94a51e8",class:"pds-radio-group__message pds-radio-group__message--error",id:messageId(this._groupId,"error"),"aria-live":"assertive"},h("pds-icon",{key:"acc00b6e36ead10cc5cc01033ad0f619bd75f5da",icon:danger,size:"small"}),this.errorMessage))};Object.defineProperty(e.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{name:["handlePropsChange"],disabled:["handlePropsChange"],invalid:["handlePropsChange"],required:["handlePropsChange"]}},enumerable:false,configurable:true});return e}();PdsRadioGroup.style=pdsRadioGroupCss;export{PdsRadioGroup as pds_radio_group};
2
2
  //# sourceMappingURL=pds-radio-group.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as registerInstance,c as createEvent,h,H as Host,a as getElement}from"./index-DHPhrb5T.js";import{e as exposeTypeProperty,a as assignDescription,m as messageId}from"./form-DwjNklzi.js";import{b as danger}from"./index-D094LgxJ.js";var labelCss=".sc-pds-radio-h{display:inline-block}[aria-disabled=true].sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-disabled)}[aria-readonly=true].sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-readonly)}label.sc-pds-radio{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";var pdsRadioCss='.sc-pds-radio-h{--sizing-check-size:6px;--sizing-input-size:var(--pine-dimension-sm);--sizing-margin-block-start:6px;-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;position:relative}.is-invalid.sc-pds-radio-h .pds-radio__message--error.sc-pds-radio{color:var(--pine-color-text-message-danger)}.has-border.sc-pds-radio-h{-ms-flex-align:start;align-items:flex-start;border:var(--pine-border);border-radius:var(--pine-dimension-125);-webkit-column-gap:var(--pine-dimension-xs);-moz-column-gap:var(--pine-dimension-xs);column-gap:var(--pine-dimension-xs);display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;padding:var(--pine-dimension-md)}@media (max-width: 767px){.has-border.sc-pds-radio-h{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex:1 1 100%;flex:1 1 100%;max-width:100%;min-width:0}}.has-border.sc-pds-radio-h:hover{border:var(--pine-border-hover)}.has-border.sc-pds-radio-h:has(input:checked){-webkit-box-shadow:0 0 0 2px var(--pine-color-primary-hover);box-shadow:0 0 0 2px var(--pine-color-primary-hover)}.has-border.sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text);font-weight:var(--pine-font-weight-semi-bold)}.has-border.sc-pds-radio-h label.sc-pds-radio::after{content:"";cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.has-border.sc-pds-radio-h:has(input:disabled){background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);cursor:not-allowed}.has-border.sc-pds-radio-h:has(input:disabled) label.sc-pds-radio{color:var(--pine-color-text-label-disabled);cursor:not-allowed}.has-border.is-invalid.sc-pds-radio-h .pds-radio__message--error.sc-pds-radio{color:var(--pine-color-text-message-danger)}input.sc-pds-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-border-radius-full);-ms-flex:none;flex:none;height:var(--sizing-input-size);margin:0;-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025);position:relative;width:var(--sizing-input-size)}input.visually-hidden.sc-pds-radio{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}input.sc-pds-radio:hover{background:var(--pine-color-background-container-hover);border:var(--pine-border-hover)}input.sc-pds-radio:checked{background:var(--pine-color-accent);border-color:var(--pine-color-accent)}input.sc-pds-radio:checked:hover{background:var(--pine-color-accent-hover);border-color:var(--pine-color-accent-hover)}input.sc-pds-radio:checked::after{background:var(--pine-color-white);border-radius:var(--pine-border-radius-full);content:"";display:block;height:var(--sizing-check-size);left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:var(--sizing-check-size)}input.sc-pds-radio:disabled{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);cursor:not-allowed}input.sc-pds-radio:disabled:checked{background-color:var(--pine-color-accent-disabled);border-color:var(--pine-color-border-disabled)}input.sc-pds-radio:disabled:checked::after{border-color:var(--pine-color-border-disabled)}input.sc-pds-radio:focus-visible{outline:var(--pine-outline-focus)}label.sc-pds-radio{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs)}label.sc-pds-radio:has(input:disabled){color:var(--pine-color-text-label-disabled);cursor:not-allowed}.sc-pds-radio-h:has(input:disabled) .pds-radio__message.sc-pds-radio{color:var(--pine-color-text-label-disabled)}.visually-hidden.sc-pds-radio{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pds-radio__message.sc-pds-radio{color:var(--pine-color-text-message);-ms-flex-preferred-size:100%;flex-basis:100%;font:var(--pine-typography-body);-webkit-margin-start:var(--pine-dimension-md);margin-inline-start:var(--pine-dimension-md);width:100%}.pds-radio__message--error.sc-pds-radio{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-radio__message--error.sc-pds-radio pds-icon.sc-pds-radio{-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}.has-image.sc-pds-radio-h{-ms-flex-align:center;align-items:center;border:var(--pine-border);border-radius:var(--pine-dimension-125);-webkit-column-gap:var(--pine-dimension-xs);-moz-column-gap:var(--pine-dimension-xs);column-gap:var(--pine-dimension-xs);display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding:var(--pine-dimension-md)}@media (max-width: 767px){.has-image.sc-pds-radio-h{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex:1 1 100%;flex:1 1 100%;max-width:100%;min-width:0}}.has-image.sc-pds-radio-h:hover{border:var(--pine-border-hover)}.has-image.sc-pds-radio-h:has(input:checked){-webkit-box-shadow:0 0 0 2px var(--pine-color-primary-hover);box-shadow:0 0 0 2px var(--pine-color-primary-hover)}.has-image.sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text);display:-ms-flexbox;display:flex;font-weight:var(--pine-font-weight-semi-bold);gap:var(--pine-dimension-xs)}.has-image.sc-pds-radio-h label.sc-pds-radio::after{content:"";cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.has-image.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio{-ms-flex-align:center;align-items:center;align-self:center;border:var(--pine-border);border-radius:var(--pine-border-radius-full);cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex:none;flex:none;grid-area:image;-ms-flex-pack:center;justify-content:center;overflow:hidden;position:relative;-webkit-transition:all 0.2s ease;transition:all 0.2s ease}.has-image.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio:hover{border-color:var(--pine-color-border-hover)}.has-image.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio .pds-radio__image.sc-pds-radio{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.has-image.sc-pds-radio-h .pds-radio__message.sc-pds-radio{grid-area:message;-webkit-margin-before:0;margin-block-start:0;-webkit-margin-start:0;margin-inline-start:0}.has-image.is-disabled.sc-pds-radio-h{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);cursor:not-allowed}.has-image.is-disabled.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio{border-color:var(--pine-color-border-disabled);cursor:not-allowed;opacity:0.5}.has-image.is-disabled.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio:hover{border-color:var(--pine-color-border-disabled)}.has-image.is-disabled.sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-disabled);cursor:not-allowed}.has-image.is-disabled.sc-pds-radio-h .pds-radio__message.sc-pds-radio{color:var(--pine-color-text-label-disabled)}.has-image.is-invalid.sc-pds-radio-h .pds-radio__message--error.sc-pds-radio{color:var(--pine-color-text-message-danger)}';var PdsRadio=function(){function e(e){var r=this;registerInstance(this,e);this.pdsRadioChange=createEvent(this,"pdsRadioChange");this._type="radio";this._hasImage=false;this.checked=false;this.disabled=false;this.hasBorder=false;this.invalid=false;this.required=false;this.handleRadioChange=function(e){if(r.disabled){return}var i=e.target;var a=i.checked;if(r.el.closest("pds-radio-group")){return}r.pdsRadioChange.emit(a)}}e.prototype.hasImageSlot=function(){var e=this.el.querySelector('[slot="image"]');return!!e};e.prototype.hasImage=function(){return this._hasImage};e.prototype.classNames=function(){var e=[];if(this.invalid){e.push("is-invalid")}if(this.disabled){e.push("is-disabled")}if(this.hasBorder){e.push("has-border")}if(this.hasImage()){e.push("has-image")}return e.join(" ")};e.prototype.componentWillLoad=function(){this._hasImage=this.hasImageSlot()};e.prototype.connectedCallback=function(){var e=this;exposeTypeProperty(this.el,(function(){return e._type}))};e.prototype.render=function(){var e=this;var r=function(){return[h("label",{htmlFor:e.componentId,key:"".concat(e.componentId,"-label")},h("input",{key:"75aca490be2db050f66ddd9cb45ce122bea4db53","aria-describedby":assignDescription(e.componentId,e.invalid,e.helperMessage),"aria-invalid":e.invalid?"true":undefined,type:"radio",id:e.componentId,name:e.name,value:e.value,checked:e.checked,required:e.required,disabled:e.disabled,onChange:e.handleRadioChange,class:e.hasImage()?"visually-hidden":""}),h("span",{key:"1bbc7398d3be35e301526b0f842274a3f1db4457",class:e.hideLabel?"visually-hidden":""},e.label)),e.helperMessage&&h("div",{key:"".concat(e.componentId,"-helper"),class:"pds-radio__message",id:messageId(e.componentId,"helper")},e.helperMessage),e.errorMessage&&h("div",{key:"".concat(e.componentId,"-error"),class:"pds-radio__message pds-radio__message--error",id:messageId(e.componentId,"error"),"aria-live":"assertive"},h("pds-icon",{key:"e1a1228fa52e68623098f09493d93aa03d2e65c4",icon:danger,size:"small"}),e.errorMessage)]};return h(Host,{key:"60fabeef5778fd30e46cfd23d05684e1743bc57f",class:this.classNames()},this.hasImage()&&h("div",{key:"9ba3e60182a68cc8e996623cf46e17001ff451f6",class:"pds-radio__image-container",part:"image-container"},h("slot",{key:"bf8927129eb68ee7ed07a1f8f8727f013254e133",name:"image",onSlotchange:function(){return e._hasImage=e.hasImageSlot()}})),this.hasImage()?h("div",{class:"pds-radio__content-wrapper"},r()):r())};Object.defineProperty(e.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});return e}();PdsRadio.style=labelCss+pdsRadioCss;export{PdsRadio as pds_radio};
1
+ import{r as registerInstance,c as createEvent,h,H as Host,a as getElement}from"./index-DHPhrb5T.js";import{e as exposeTypeProperty,a as assignDescription,m as messageId}from"./form-CN-lL5QG.js";import{b as danger}from"./index-D094LgxJ.js";var labelCss=".sc-pds-radio-h{display:inline-block}[aria-disabled=true].sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-disabled)}[aria-readonly=true].sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-readonly)}label.sc-pds-radio{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";var pdsRadioCss='.sc-pds-radio-h{--sizing-check-size:6px;--sizing-input-size:var(--pine-dimension-sm);--sizing-margin-block-start:6px;-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;position:relative}.is-invalid.sc-pds-radio-h .pds-radio__message--error.sc-pds-radio{color:var(--pine-color-text-message-danger)}.has-border.sc-pds-radio-h{-ms-flex-align:start;align-items:flex-start;border:var(--pine-border);border-radius:var(--pine-dimension-125);-webkit-column-gap:var(--pine-dimension-xs);-moz-column-gap:var(--pine-dimension-xs);column-gap:var(--pine-dimension-xs);display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;padding:var(--pine-dimension-md)}@media (max-width: 767px){.has-border.sc-pds-radio-h{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex:1 1 100%;flex:1 1 100%;max-width:100%;min-width:0}}.has-border.sc-pds-radio-h:hover{border:var(--pine-border-hover)}.has-border.sc-pds-radio-h:has(input:checked){-webkit-box-shadow:0 0 0 2px var(--pine-color-primary-hover);box-shadow:0 0 0 2px var(--pine-color-primary-hover)}.has-border.sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text);font-weight:var(--pine-font-weight-semi-bold)}.has-border.sc-pds-radio-h label.sc-pds-radio::after{content:"";cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.has-border.sc-pds-radio-h:has(input:disabled){background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);cursor:not-allowed}.has-border.sc-pds-radio-h:has(input:disabled) label.sc-pds-radio{color:var(--pine-color-text-label-disabled);cursor:not-allowed}.has-border.is-invalid.sc-pds-radio-h .pds-radio__message--error.sc-pds-radio{color:var(--pine-color-text-message-danger)}input.sc-pds-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-border-radius-full);-ms-flex:none;flex:none;height:var(--sizing-input-size);margin:0;-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025);position:relative;width:var(--sizing-input-size)}input.visually-hidden.sc-pds-radio{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}input.sc-pds-radio:hover{background:var(--pine-color-background-container-hover);border:var(--pine-border-hover)}input.sc-pds-radio:checked{background:var(--pine-color-accent);border-color:var(--pine-color-accent)}input.sc-pds-radio:checked:hover{background:var(--pine-color-accent-hover);border-color:var(--pine-color-accent-hover)}input.sc-pds-radio:checked::after{background:var(--pine-color-white);border-radius:var(--pine-border-radius-full);content:"";display:block;height:var(--sizing-check-size);left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:var(--sizing-check-size)}input.sc-pds-radio:disabled{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);cursor:not-allowed}input.sc-pds-radio:disabled:checked{background-color:var(--pine-color-accent-disabled);border-color:var(--pine-color-border-disabled)}input.sc-pds-radio:disabled:checked::after{border-color:var(--pine-color-border-disabled)}input.sc-pds-radio:focus-visible{outline:var(--pine-outline-focus)}label.sc-pds-radio{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs)}label.sc-pds-radio:has(input:disabled){color:var(--pine-color-text-label-disabled);cursor:not-allowed}.sc-pds-radio-h:has(input:disabled) .pds-radio__message.sc-pds-radio{color:var(--pine-color-text-label-disabled)}.visually-hidden.sc-pds-radio{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pds-radio__message.sc-pds-radio{color:var(--pine-color-text-message);-ms-flex-preferred-size:100%;flex-basis:100%;font:var(--pine-typography-body);-webkit-margin-start:var(--pine-dimension-md);margin-inline-start:var(--pine-dimension-md);width:100%}.pds-radio__message--error.sc-pds-radio{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-radio__message--error.sc-pds-radio pds-icon.sc-pds-radio{-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}.has-image.sc-pds-radio-h{-ms-flex-align:center;align-items:center;border:var(--pine-border);border-radius:var(--pine-dimension-125);-webkit-column-gap:var(--pine-dimension-xs);-moz-column-gap:var(--pine-dimension-xs);column-gap:var(--pine-dimension-xs);display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding:var(--pine-dimension-md)}@media (max-width: 767px){.has-image.sc-pds-radio-h{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex:1 1 100%;flex:1 1 100%;max-width:100%;min-width:0}}.has-image.sc-pds-radio-h:hover{border:var(--pine-border-hover)}.has-image.sc-pds-radio-h:has(input:checked){-webkit-box-shadow:0 0 0 2px var(--pine-color-primary-hover);box-shadow:0 0 0 2px var(--pine-color-primary-hover)}.has-image.sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text);display:-ms-flexbox;display:flex;font-weight:var(--pine-font-weight-semi-bold);gap:var(--pine-dimension-xs)}.has-image.sc-pds-radio-h label.sc-pds-radio::after{content:"";cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.has-image.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio{-ms-flex-align:center;align-items:center;align-self:center;border:var(--pine-border);border-radius:var(--pine-border-radius-full);cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex:none;flex:none;grid-area:image;-ms-flex-pack:center;justify-content:center;overflow:hidden;position:relative;-webkit-transition:all 0.2s ease;transition:all 0.2s ease}.has-image.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio:hover{border-color:var(--pine-color-border-hover)}.has-image.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio .pds-radio__image.sc-pds-radio{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.has-image.sc-pds-radio-h .pds-radio__message.sc-pds-radio{grid-area:message;-webkit-margin-before:0;margin-block-start:0;-webkit-margin-start:0;margin-inline-start:0}.has-image.is-disabled.sc-pds-radio-h{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);cursor:not-allowed}.has-image.is-disabled.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio{border-color:var(--pine-color-border-disabled);cursor:not-allowed;opacity:0.5}.has-image.is-disabled.sc-pds-radio-h .pds-radio__image-container.sc-pds-radio:hover{border-color:var(--pine-color-border-disabled)}.has-image.is-disabled.sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-disabled);cursor:not-allowed}.has-image.is-disabled.sc-pds-radio-h .pds-radio__message.sc-pds-radio{color:var(--pine-color-text-label-disabled)}.has-image.is-invalid.sc-pds-radio-h .pds-radio__message--error.sc-pds-radio{color:var(--pine-color-text-message-danger)}';var PdsRadio=function(){function e(e){var r=this;registerInstance(this,e);this.pdsRadioChange=createEvent(this,"pdsRadioChange");this._type="radio";this._hasImage=false;this.checked=false;this.disabled=false;this.hasBorder=false;this.invalid=false;this.required=false;this.handleRadioChange=function(e){if(r.disabled){return}var i=e.target;var a=i.checked;if(r.el.closest("pds-radio-group")){return}r.pdsRadioChange.emit(a)}}e.prototype.hasImageSlot=function(){var e=this.el.querySelector('[slot="image"]');return!!e};e.prototype.hasImage=function(){return this._hasImage};e.prototype.classNames=function(){var e=[];if(this.invalid){e.push("is-invalid")}if(this.disabled){e.push("is-disabled")}if(this.hasBorder){e.push("has-border")}if(this.hasImage()){e.push("has-image")}return e.join(" ")};e.prototype.componentWillLoad=function(){this._hasImage=this.hasImageSlot()};e.prototype.connectedCallback=function(){var e=this;exposeTypeProperty(this.el,(function(){return e._type}))};e.prototype.render=function(){var e=this;var r=function(){return[h("label",{htmlFor:e.componentId,key:"".concat(e.componentId,"-label")},h("input",{key:"75aca490be2db050f66ddd9cb45ce122bea4db53","aria-describedby":assignDescription(e.componentId,e.invalid,e.helperMessage),"aria-invalid":e.invalid?"true":undefined,type:"radio",id:e.componentId,name:e.name,value:e.value,checked:e.checked,required:e.required,disabled:e.disabled,onChange:e.handleRadioChange,class:e.hasImage()?"visually-hidden":""}),h("span",{key:"1bbc7398d3be35e301526b0f842274a3f1db4457",class:e.hideLabel?"visually-hidden":""},e.label)),e.helperMessage&&h("div",{key:"".concat(e.componentId,"-helper"),class:"pds-radio__message",id:messageId(e.componentId,"helper")},e.helperMessage),e.errorMessage&&h("div",{key:"".concat(e.componentId,"-error"),class:"pds-radio__message pds-radio__message--error",id:messageId(e.componentId,"error"),"aria-live":"assertive"},h("pds-icon",{key:"e1a1228fa52e68623098f09493d93aa03d2e65c4",icon:danger,size:"small"}),e.errorMessage)]};return h(Host,{key:"60fabeef5778fd30e46cfd23d05684e1743bc57f",class:this.classNames()},this.hasImage()&&h("div",{key:"9ba3e60182a68cc8e996623cf46e17001ff451f6",class:"pds-radio__image-container",part:"image-container"},h("slot",{key:"bf8927129eb68ee7ed07a1f8f8727f013254e133",name:"image",onSlotchange:function(){return e._hasImage=e.hasImageSlot()}})),this.hasImage()?h("div",{class:"pds-radio__content-wrapper"},r()):r())};Object.defineProperty(e.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});return e}();PdsRadio.style=labelCss+pdsRadioCss;export{PdsRadio as pds_radio};
2
2
  //# sourceMappingURL=pds-radio.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as registerInstance,c as createEvent,h,H as Host,a as getElement}from"./index-DHPhrb5T.js";import{e as exposeTypeProperty,m as messageId}from"./form-DwjNklzi.js";import{b as danger,e as enlarge}from"./index-D094LgxJ.js";var pdsSelectTokensCss=":host{--pine-select-color-background-danger:var(--pine-color-red-050)}";var labelCss=":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";var pdsSelectCss=':host{--pds-select-background:var(--pine-color-background-container);--pds-select-border:var(--pine-border);--pds-select-border-radius:var(--pine-dimension-125);--pds-select-border-radius-start-end:var(--pine-dimension-125);--pds-select-border-radius-start-start:var(--pine-dimension-125);--pds-select-border-radius-end-end:var(--pine-dimension-125);--pds-select-border-radius-end-start:var(--pine-dimension-125);--pds-select-min-height:36px;--box-shadow-focus:0 0 0 1px var(--pine-color-background-container), 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px var(--pine-color-background-container), 0 0 0 3px var(--pine-color-focus-ring-danger)}:host .hidden,:host :host([hidden]){display:none}.pds-select{color:var(--pine-color-text);display:grid;-ms-flex-direction:column;flex-direction:column;grid-template-areas:"label label" "field field" "message message";grid-template-columns:1fr minmax(2rem, -webkit-min-content);grid-template-columns:1fr minmax(2rem, min-content);grid-template-rows:-webkit-min-content -webkit-min-content -webkit-min-content;grid-template-rows:min-content min-content min-content;position:relative;width:100%}.pds-select__label-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;grid-area:label;-ms-flex-pack:justify;justify-content:space-between;-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-select__action{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);-webkit-margin-start:var(--pine-dimension-xs);margin-inline-start:var(--pine-dimension-xs)}label{-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-select__label-wrapper label{-webkit-margin-after:0;margin-block-end:0}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--pds-select-background);border:var(--pds-select-border);border-radius:var(--pds-select-border-radius);border-bottom-left-radius:var(--pds-select-border-radius-end-start, var(--pds-select-border-radius));border-bottom-right-radius:var(--pds-select-border-radius-end-end, var(--pds-select-border-radius));border-top-left-radius:var(--pds-select-border-radius-start-start, var(--pds-select-border-radius));border-top-right-radius:var(--pds-select-border-radius-start-end, var(--pds-select-border-radius));color:var(--pine-color-text);font:var(--pine-typography-body);grid-area:field;letter-spacing:var(--pine-letter-spacing);min-height:var(--pds-select-min-height);padding:calc(var(--pine-dimension-xs) - var(--pine-border-width)) var(--pine-dimension-150);-webkit-padding-end:var(--pine-dimension-450);padding-inline-end:var(--pine-dimension-450);position:relative}select:hover{border-color:var(--pine-color-border-hover);cursor:pointer}select:focus-visible{border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}select:disabled{background-color:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}select:has(~.pds-select__message .pds-select__error-message){background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}:host-context([data-theme=dark]) select:has(~.pds-select__message .pds-select__error-message){background-color:var(--pine-color-red-950)}select:has(~.pds-select__message .pds-select__error-message):focus-visible{outline-color:var(--pine-color-focus-ring-danger)}:host(.is-invalid) select{background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}:host-context([data-theme=dark]) :host(.is-invalid) select{background-color:var(--pine-color-red-950)}:host(.is-invalid) select:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}:host([highlight]:not(.is-disabled):not(.is-invalid)) select{background-color:var(--pine-color-accent-disabled);border-color:var(--pine-color-accent);color:var(--pine-color-text-accent)}:host([highlight]:not(.is-disabled):not(.is-invalid)) select:hover:not(:disabled){border-color:var(--pine-color-accent-hover)}:host([highlight]:not(.is-disabled):not(.is-invalid)) select:focus-visible{outline-color:var(--pine-color-focus-ring)}:host([highlight]:not(.is-disabled):not(.is-invalid)) .pds-select__select-icon{color:var(--pine-color-text-accent)}.pds-select__error-message,.pds-select__helper-message{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-after:0;margin-block-end:0;-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-select__error-message{color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-select__error-message pds-icon{-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}.pds-select__message{grid-area:message}.pds-select__select-icon{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;grid-column:-1/-2;grid-row:2/3;height:var(--pds-select-min-height);pointer-events:none;position:relative;z-index:var(--pine-z-index-raised)}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}';var PdsSelect=function(){function e(e){var i=this;registerInstance(this,e);this.pdsSelectChange=createEvent(this,"pdsSelectChange");this.pdsBlur=createEvent(this,"pdsBlur");this.pdsFocus=createEvent(this,"pdsFocus");this.pdsKeyDown=createEvent(this,"pdsKeyDown");this._type="select-one";this.disabled=false;this.multiple=false;this.required=false;this.onSelectUpdate=function(e){var s=e.target;var r=Array.from(s.options).filter((function(e){return e.selected})).map((function(e){return e.value}));if(r.length===1&&!i.multiple){i.value=r[0]}else{i.value=r}i.pdsSelectChange.emit(e)};this.onBlur=function(e){i.pdsBlur.emit(e)};this.onFocus=function(e){i.pdsFocus.emit(e)};this.onKeyDown=function(e){i.pdsKeyDown.emit(e)};this.handleSlotChange=function(){var e=i.slotContainer.querySelector("slot");i.selectEl.innerHTML="";var s=e.assignedElements({flatten:true});s.forEach((function(e){if(["OPTION","OPTGROUP"].includes(e.tagName)){var s=e.cloneNode(true);if(s.tagName==="OPTION"&&s.value===i.value){s.selected=true}i.selectEl.appendChild(s)}}));i.updateSelectedOption()}}e.prototype.valueChanged=function(){this.updateSelectedOption();this.updateFormValue()};e.prototype.multipleChanged=function(){this.updateType()};e.prototype.updateType=function(){this._type=this.multiple?"select-multiple":"select-one"};e.prototype.connectedCallback=function(){var e=this;if(this.el.attachInternals&&!this.internals){this.internals=this.el.attachInternals()}exposeTypeProperty(this.el,(function(){return e._type}))};e.prototype.componentWillLoad=function(){this.updateType();this.updateSelectedOption()};e.prototype.componentDidLoad=function(){this.updateFormValue()};e.prototype.updateSelectedOption=function(){var e=this;if(this.selectEl){var i=this.selectEl.options;Array.from(i).map((function(i){if(Array.isArray(e.value)){i.selected=e.value.includes(i.value)}else{i.selected=e.value===i.value}}))}};e.prototype.getHelperMessage=function(){return this.helperMessage&&h("p",{class:"pds-select__helper-message",id:messageId(this.componentId,"helper")},this.helperMessage)};e.prototype.getErrorMessage=function(){return this.errorMessage&&h("p",{class:"pds-select__error-message",id:messageId(this.componentId,"error"),"aria-live":"assertive"},h("pds-icon",{icon:danger,size:"small"}),this.errorMessage)};e.prototype.renderMessages=function(){if(!this.helperMessage&&!this.errorMessage)return null;return h("div",{class:"pds-select__message"},this.getHelperMessage(),this.getErrorMessage())};e.prototype.classNames=function(){var e=[];if(this.invalid){e.push("is-invalid")}if(this.disabled){e.push("is-disabled")}return e.join(" ")};e.prototype.renderAction=function(){var e=this.el.querySelector('[slot="action"]')!==null;if(e){return h("div",{class:"pds-select__action",part:"action"},h("slot",{name:"action"}))}return null};e.prototype.updateFormValue=function(){var e=this;if(this.internals&&this.internals.setFormValue){var i=this.value;if(Array.isArray(i)){if(i.length>1){var s=new FormData;i.forEach((function(i){return s.append(e.name||"",i)}));this.internals.setFormValue(s)}else{this.internals.setFormValue(i[0]||null)}}else{this.internals.setFormValue(i||null)}if(this.selectEl&&this.internals&&this.internals.setValidity){this.internals.setValidity(this.selectEl.validity,this.selectEl.validationMessage,this.selectEl)}}};e.prototype.formResetCallback=function(){this.value="";this.updateFormValue()};e.prototype.formDisabledCallback=function(e){this.disabled=e};e.prototype.formStateRestoreCallback=function(e){if(typeof e==="string"){this.value=e}else if(e instanceof FormData&&this.name){var i=e.getAll(this.name);if(i.length>1){this.value=i.filter((function(e){return typeof e==="string"}))}else if(i.length===1&&typeof i[0]==="string"){this.value=i[0]}}};e.prototype.render=function(){var e=this;var i=this.el.querySelector('[slot="action"]')!==null;return h(Host,{key:"d36bddf20910ae21ba2209bbf7e3f13b1ce9c3bf","aria-disabled":this.disabled?"true":null,class:this.classNames(),"has-action":i&&!this.hideLabel?"true":null},h("div",{key:"72fe6ee352834fbd6e8f5f9d9e96b1be232f2988",class:"pds-select"},!this.hideLabel&&h("div",{key:"c2894f7ec00402425f74f1145d449da13d870161",class:"pds-select__label-wrapper"},h("label",{key:"4f6277c3f7b40f3d52995231cb49824e58ebae1b",htmlFor:this.componentId},h("span",{key:"f1b0cf90091843c1a994699263905f811888d4bd",class:this.hideLabel?"visually-hidden":""},this.label)),i&&this.renderAction()),h("select",{key:"727c1644e8ea5afc194e33e29e9730d6b08c3784","aria-label":this.hideLabel?this.label:undefined,autocomplete:this.autocomplete||undefined,class:"pds-select__field",disabled:this.disabled,id:this.componentId,multiple:this.multiple,name:this.name,onBlur:this.onBlur,onChange:this.onSelectUpdate,onFocus:this.onFocus,onKeyDown:this.onKeyDown,part:"select",required:this.required,ref:function(i){return e.selectEl=i}}),h("div",{key:"d7c0c3f3b765b13c6dc34a9c5c13bbcfd081a274","aria-hidden":"true",class:"hidden",ref:function(i){return e.slotContainer=i}},h("slot",{key:"2305afcacb082c0d5faca8b77295919f8d9c9e0b",onSlotchange:this.handleSlotChange})),this.renderMessages(),!this.multiple&&h("pds-icon",{key:"4a1d6ced0ffc14ae17763d116a85324e5a6c7ce5",class:"pds-select__select-icon",icon:enlarge})))};Object.defineProperty(e,"formAssociated",{get:function(){return true},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{value:["valueChanged"],multiple:["multipleChanged"]}},enumerable:false,configurable:true});return e}();PdsSelect.style=pdsSelectTokensCss+(labelCss+pdsSelectCss);export{PdsSelect as pds_select};
1
+ import{r as registerInstance,c as createEvent,h,H as Host,a as getElement}from"./index-DHPhrb5T.js";import{e as exposeTypeProperty,m as messageId}from"./form-CN-lL5QG.js";import{b as danger,e as enlarge}from"./index-D094LgxJ.js";var pdsSelectTokensCss=":host{--pine-select-color-background-danger:var(--pine-color-red-050)}";var labelCss=":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";var pdsSelectCss=':host{--pds-select-background:var(--pine-color-background-container);--pds-select-border:var(--pine-border);--pds-select-border-radius:var(--pine-dimension-125);--pds-select-border-radius-start-end:var(--pine-dimension-125);--pds-select-border-radius-start-start:var(--pine-dimension-125);--pds-select-border-radius-end-end:var(--pine-dimension-125);--pds-select-border-radius-end-start:var(--pine-dimension-125);--pds-select-min-height:36px;--box-shadow-focus:0 0 0 1px var(--pine-color-background-container), 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px var(--pine-color-background-container), 0 0 0 3px var(--pine-color-focus-ring-danger)}:host .hidden,:host :host([hidden]){display:none}.pds-select{color:var(--pine-color-text);display:grid;-ms-flex-direction:column;flex-direction:column;grid-template-areas:"label label" "field field" "message message";grid-template-columns:1fr minmax(2rem, -webkit-min-content);grid-template-columns:1fr minmax(2rem, min-content);grid-template-rows:-webkit-min-content -webkit-min-content -webkit-min-content;grid-template-rows:min-content min-content min-content;position:relative;width:100%}.pds-select__label-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;grid-area:label;-ms-flex-pack:justify;justify-content:space-between;-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-select__action{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);-webkit-margin-start:var(--pine-dimension-xs);margin-inline-start:var(--pine-dimension-xs)}label{-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-select__label-wrapper label{-webkit-margin-after:0;margin-block-end:0}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--pds-select-background);border:var(--pds-select-border);border-radius:var(--pds-select-border-radius);border-bottom-left-radius:var(--pds-select-border-radius-end-start, var(--pds-select-border-radius));border-bottom-right-radius:var(--pds-select-border-radius-end-end, var(--pds-select-border-radius));border-top-left-radius:var(--pds-select-border-radius-start-start, var(--pds-select-border-radius));border-top-right-radius:var(--pds-select-border-radius-start-end, var(--pds-select-border-radius));color:var(--pine-color-text);font:var(--pine-typography-body);grid-area:field;letter-spacing:var(--pine-letter-spacing);min-height:var(--pds-select-min-height);padding:calc(var(--pine-dimension-xs) - var(--pine-border-width)) var(--pine-dimension-150);-webkit-padding-end:var(--pine-dimension-450);padding-inline-end:var(--pine-dimension-450);position:relative}select:hover{border-color:var(--pine-color-border-hover);cursor:pointer}select:focus-visible{border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}select:disabled{background-color:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}select:has(~.pds-select__message .pds-select__error-message){background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}:host-context([data-theme=dark]) select:has(~.pds-select__message .pds-select__error-message){background-color:var(--pine-color-red-950)}select:has(~.pds-select__message .pds-select__error-message):focus-visible{outline-color:var(--pine-color-focus-ring-danger)}:host(.is-invalid) select{background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}:host-context([data-theme=dark]) :host(.is-invalid) select{background-color:var(--pine-color-red-950)}:host(.is-invalid) select:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}:host([highlight]:not(.is-disabled):not(.is-invalid)) select{background-color:var(--pine-color-accent-disabled);border-color:var(--pine-color-accent);color:var(--pine-color-text-accent)}:host([highlight]:not(.is-disabled):not(.is-invalid)) select:hover:not(:disabled){border-color:var(--pine-color-accent-hover)}:host([highlight]:not(.is-disabled):not(.is-invalid)) select:focus-visible{outline-color:var(--pine-color-focus-ring)}:host([highlight]:not(.is-disabled):not(.is-invalid)) .pds-select__select-icon{color:var(--pine-color-text-accent)}.pds-select__error-message,.pds-select__helper-message{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-after:0;margin-block-end:0;-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-select__error-message{color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-select__error-message pds-icon{-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}.pds-select__message{grid-area:message}.pds-select__select-icon{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;grid-column:-1/-2;grid-row:2/3;height:var(--pds-select-min-height);pointer-events:none;position:relative;z-index:var(--pine-z-index-raised)}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}';var PdsSelect=function(){function e(e){var i=this;registerInstance(this,e);this.pdsSelectChange=createEvent(this,"pdsSelectChange");this.pdsBlur=createEvent(this,"pdsBlur");this.pdsFocus=createEvent(this,"pdsFocus");this.pdsKeyDown=createEvent(this,"pdsKeyDown");this._type="select-one";this.disabled=false;this.multiple=false;this.required=false;this.onSelectUpdate=function(e){var s=e.target;var r=Array.from(s.options).filter((function(e){return e.selected})).map((function(e){return e.value}));if(r.length===1&&!i.multiple){i.value=r[0]}else{i.value=r}i.pdsSelectChange.emit(e)};this.onBlur=function(e){i.pdsBlur.emit(e)};this.onFocus=function(e){i.pdsFocus.emit(e)};this.onKeyDown=function(e){i.pdsKeyDown.emit(e)};this.handleSlotChange=function(){var e=i.slotContainer.querySelector("slot");i.selectEl.innerHTML="";var s=e.assignedElements({flatten:true});s.forEach((function(e){if(["OPTION","OPTGROUP"].includes(e.tagName)){var s=e.cloneNode(true);if(s.tagName==="OPTION"&&s.value===i.value){s.selected=true}i.selectEl.appendChild(s)}}));i.updateSelectedOption()}}e.prototype.valueChanged=function(){this.updateSelectedOption();this.updateFormValue()};e.prototype.multipleChanged=function(){this.updateType()};e.prototype.updateType=function(){this._type=this.multiple?"select-multiple":"select-one"};e.prototype.connectedCallback=function(){var e=this;if(this.el.attachInternals&&!this.internals){this.internals=this.el.attachInternals()}exposeTypeProperty(this.el,(function(){return e._type}))};e.prototype.componentWillLoad=function(){this.updateType();this.updateSelectedOption()};e.prototype.componentDidLoad=function(){this.updateFormValue()};e.prototype.updateSelectedOption=function(){var e=this;if(this.selectEl){var i=this.selectEl.options;Array.from(i).map((function(i){if(Array.isArray(e.value)){i.selected=e.value.includes(i.value)}else{i.selected=e.value===i.value}}))}};e.prototype.getHelperMessage=function(){return this.helperMessage&&h("p",{class:"pds-select__helper-message",id:messageId(this.componentId,"helper")},this.helperMessage)};e.prototype.getErrorMessage=function(){return this.errorMessage&&h("p",{class:"pds-select__error-message",id:messageId(this.componentId,"error"),"aria-live":"assertive"},h("pds-icon",{icon:danger,size:"small"}),this.errorMessage)};e.prototype.renderMessages=function(){if(!this.helperMessage&&!this.errorMessage)return null;return h("div",{class:"pds-select__message"},this.getHelperMessage(),this.getErrorMessage())};e.prototype.classNames=function(){var e=[];if(this.invalid){e.push("is-invalid")}if(this.disabled){e.push("is-disabled")}return e.join(" ")};e.prototype.renderAction=function(){var e=this.el.querySelector('[slot="action"]')!==null;if(e){return h("div",{class:"pds-select__action",part:"action"},h("slot",{name:"action"}))}return null};e.prototype.updateFormValue=function(){var e=this;if(this.internals&&this.internals.setFormValue){var i=this.value;if(Array.isArray(i)){if(i.length>1){var s=new FormData;i.forEach((function(i){return s.append(e.name||"",i)}));this.internals.setFormValue(s)}else{this.internals.setFormValue(i[0]||null)}}else{this.internals.setFormValue(i||null)}if(this.selectEl&&this.internals&&this.internals.setValidity){this.internals.setValidity(this.selectEl.validity,this.selectEl.validationMessage,this.selectEl)}}};e.prototype.formResetCallback=function(){this.value="";this.updateFormValue()};e.prototype.formDisabledCallback=function(e){this.disabled=e};e.prototype.formStateRestoreCallback=function(e){if(typeof e==="string"){this.value=e}else if(e instanceof FormData&&this.name){var i=e.getAll(this.name);if(i.length>1){this.value=i.filter((function(e){return typeof e==="string"}))}else if(i.length===1&&typeof i[0]==="string"){this.value=i[0]}}};e.prototype.render=function(){var e=this;var i=this.el.querySelector('[slot="action"]')!==null;return h(Host,{key:"d36bddf20910ae21ba2209bbf7e3f13b1ce9c3bf","aria-disabled":this.disabled?"true":null,class:this.classNames(),"has-action":i&&!this.hideLabel?"true":null},h("div",{key:"72fe6ee352834fbd6e8f5f9d9e96b1be232f2988",class:"pds-select"},!this.hideLabel&&h("div",{key:"c2894f7ec00402425f74f1145d449da13d870161",class:"pds-select__label-wrapper"},h("label",{key:"4f6277c3f7b40f3d52995231cb49824e58ebae1b",htmlFor:this.componentId},h("span",{key:"f1b0cf90091843c1a994699263905f811888d4bd",class:this.hideLabel?"visually-hidden":""},this.label)),i&&this.renderAction()),h("select",{key:"727c1644e8ea5afc194e33e29e9730d6b08c3784","aria-label":this.hideLabel?this.label:undefined,autocomplete:this.autocomplete||undefined,class:"pds-select__field",disabled:this.disabled,id:this.componentId,multiple:this.multiple,name:this.name,onBlur:this.onBlur,onChange:this.onSelectUpdate,onFocus:this.onFocus,onKeyDown:this.onKeyDown,part:"select",required:this.required,ref:function(i){return e.selectEl=i}}),h("div",{key:"d7c0c3f3b765b13c6dc34a9c5c13bbcfd081a274","aria-hidden":"true",class:"hidden",ref:function(i){return e.slotContainer=i}},h("slot",{key:"2305afcacb082c0d5faca8b77295919f8d9c9e0b",onSlotchange:this.handleSlotChange})),this.renderMessages(),!this.multiple&&h("pds-icon",{key:"4a1d6ced0ffc14ae17763d116a85324e5a6c7ce5",class:"pds-select__select-icon",icon:enlarge})))};Object.defineProperty(e,"formAssociated",{get:function(){return true},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{value:["valueChanged"],multiple:["multipleChanged"]}},enumerable:false,configurable:true});return e}();PdsSelect.style=pdsSelectTokensCss+(labelCss+pdsSelectCss);export{PdsSelect as pds_select};
2
2
  //# sourceMappingURL=pds-select.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as registerInstance,c as createEvent,h,H as Host,a as getElement}from"./index-DHPhrb5T.js";import{e as exposeTypeProperty,m as messageId,a as assignDescription}from"./form-DwjNklzi.js";import{b as danger}from"./index-D094LgxJ.js";import{i as inheritAriaAttributes}from"./attributes-C0M1gTKv.js";var labelCss=":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";var pdsSwitchCss=':host{--sizing-input-toggle-size:calc(var(--pine-dimension-250) - (var(--pine-dimension-025) * 2));--pine-dimension-025:2px;--spacing-message-inline:calc(var(--pine-dimension-450) + var(--pine-dimension-150));--number-transition-timing:0.15s ease-out;-ms-flex-align:start;align-items:flex-start;color:var(--pine-color-text);display:-ms-inline-flexbox;display:inline-flex;-ms-flex-flow:row wrap;flex-flow:row wrap;position:relative}:host(.pds-switch--error){color:var(--pine-color-text-message-danger)}:host(.pds-switch--error) input,:host(.pds-switch--error) input:checked,:host(.pds-switch--error) input:hover:not(:disabled):not(:checked){background-color:var(--pine-color-danger)}:host(.pds-switch--error) input:focus-visible:not(:disabled):not(:checked){outline-color:var(--pine-color-focus-ring-danger)}:host(.pds-switch--error) label{color:var(--color-text-error)}input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--pine-color-neutral);border:0;border-radius:var(--pine-dimension-sm);cursor:pointer;display:inline-block;-ms-flex-negative:0;flex-shrink:0;height:var(--pine-dimension-250);margin:0;padding:0;position:relative;-webkit-transition:var(--number-transition-timing);transition:var(--number-transition-timing);-webkit-transition-property:background, border, color;transition-property:background, border, color;width:var(--pine-dimension-450)}input::after{background:var(--pine-color-secondary);border-radius:var(--pine-border-radius-full);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);content:"";display:block;height:var(--sizing-input-toggle-size);inset-block-start:50%;inset-inline-start:50%;position:absolute;-webkit-transform:translate3d(-100%, -50%, 0);transform:translate3d(-100%, -50%, 0);-webkit-transition:-webkit-transform var(--number-transition-timing);transition:-webkit-transform var(--number-transition-timing);transition:transform var(--number-transition-timing);transition:transform var(--number-transition-timing), -webkit-transform var(--number-transition-timing);width:var(--sizing-input-toggle-size)}label{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-150)}.pds-switch--error label{color:inherit}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pds-switch__message{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-xs);margin-block-start:var(--pine-dimension-xs);-webkit-margin-start:var(--spacing-message-inline);margin-inline-start:var(--spacing-message-inline);width:100%}.pds-switch__message+.pds-switch__message{-webkit-margin-before:var(--spacing-message-inline);margin-block-start:var(--spacing-message-inline)}.pds-switch__message--error{color:inherit;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-switch__message--error pds-icon{-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}input:disabled{background-color:var(--pine-color-neutral-disabled);cursor:not-allowed}input:disabled~label{cursor:initial}input:disabled:hover::after{background-color:var(--pine-color-secondary)}input:disabled .pds-switch__message{color:initial}input:hover:not(:disabled){background-color:var(--pine-color-neutral-hover)}input:focus-visible:not(:disabled){outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}input:checked::after{-webkit-transform:translate3d(0, -50%, 0);transform:translate3d(0, -50%, 0)}input:checked:not(:disabled){background-color:currentColor;color:var(--pine-color-accent)}input:checked:not(:disabled):hover{border-color:currentColor;color:var(--pine-color-accent-hover)}';var PdsSwitch=function(){function i(i){var e=this;registerInstance(this,i);this.pdsSwitchChange=createEvent(this,"pdsSwitchChange");this.inheritedAttributes={};this._type="checkbox";this.checked=false;this.disabled=false;this.invalid=false;this.required=false;this.onSwitchUpdate=function(i){if(e.disabled)return;var t=i.target;e.checked=t.checked;e.updateFormValue();e.pdsSwitchChange.emit(i)};this.switchClassNames=function(){var i="pds-switch";if(e.invalid===true){i+=" pds-switch--error"}if(e.helperMessage!==undefined){i+=" pds-switch--message"}return i}}i.prototype.connectedCallback=function(){var i=this;if(this.el.attachInternals&&!this.internals){this.internals=this.el.attachInternals()}exposeTypeProperty(this.el,(function(){return i._type}))};i.prototype.componentDidLoad=function(){this.updateFormValue()};i.prototype.checkedChanged=function(){this.updateFormValue()};i.prototype.updateFormValue=function(){var i;if(typeof jest!=="undefined"||typeof process!=="undefined"&&((i=process.env)===null||i===void 0?void 0:i.NODE_ENV)==="test"){return}if(this.internals&&this.internals.setFormValue){var e=this.checked?this.value||"on":null;this.internals.setFormValue(e)}if(this.internals&&this.internals.setValidity){this.internals.setValidity({})}};i.prototype.formStateRestoreCallback=function(i){if(i instanceof FormData){var e=this.value||"on";this.checked=i.get(this.name||this.componentId)===e}else if(typeof i==="string"){this.checked=i===(this.value||"on")}};i.prototype.componentWillLoad=function(){this.inheritedAttributes=Object.assign({},inheritAriaAttributes(this.el))};i.prototype.render=function(){return h(Host,{key:"e26422622075f925f0df3dbc2f5ea8223aed9902",class:this.switchClassNames(),"aria-disabled":this.disabled?"true":null},h("label",{key:"b63cdac80d3cd55bc4845979f15b382c92883cf5",htmlFor:this.componentId},h("input",Object.assign({key:"910a7f6cd2093a6062c57c63600bb1721c147c75","aria-describedby":assignDescription(this.componentId,this.invalid,this.errorMessage||this.helperMessage),"aria-invalid":this.invalid?"true":undefined,checked:this.checked,class:"pds-switch__input",disabled:this.disabled,id:this.componentId,name:this.name?this.name:this.componentId,onChange:this.onSwitchUpdate,required:this.required,type:"checkbox",value:this.value},this.inheritedAttributes)),h("span",{key:"45661afcaba7852a6ddf6ebbf4606502bc8b72e2",class:this.hideLabel?"visually-hidden":""},this.label)),this.helperMessage&&h("div",{key:"be3a6fbf3938b7846ca3a9e6eef54d6ee25391fa",class:"pds-switch__message",id:messageId(this.componentId,"helper")},this.helperMessage),this.errorMessage&&h("div",{key:"a5944169798ae8531f9e6414deac2c3631339b0a",class:"pds-switch__message pds-switch__message--error",id:messageId(this.componentId,"error"),"aria-live":"assertive"},h("pds-icon",{key:"5b864b6ac441c9bd71dc22dbc9722c87c1b781e6",icon:danger,size:"small"}),this.errorMessage))};Object.defineProperty(i,"formAssociated",{get:function(){return true},enumerable:false,configurable:true});Object.defineProperty(i.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(i,"watchers",{get:function(){return{checked:["checkedChanged"]}},enumerable:false,configurable:true});return i}();PdsSwitch.style=labelCss+pdsSwitchCss;export{PdsSwitch as pds_switch};
1
+ import{r as registerInstance,c as createEvent,h,H as Host,a as getElement}from"./index-DHPhrb5T.js";import{e as exposeTypeProperty,m as messageId,a as assignDescription}from"./form-CN-lL5QG.js";import{b as danger}from"./index-D094LgxJ.js";import{i as inheritAriaAttributes}from"./attributes-C0M1gTKv.js";var labelCss=":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";var pdsSwitchCss=':host{--sizing-input-toggle-size:calc(var(--pine-dimension-250) - (var(--pine-dimension-025) * 2));--pine-dimension-025:2px;--spacing-message-inline:calc(var(--pine-dimension-450) + var(--pine-dimension-150));--number-transition-timing:0.15s ease-out;-ms-flex-align:start;align-items:flex-start;color:var(--pine-color-text);display:-ms-inline-flexbox;display:inline-flex;-ms-flex-flow:row wrap;flex-flow:row wrap;position:relative}:host(.pds-switch--error){color:var(--pine-color-text-message-danger)}:host(.pds-switch--error) input,:host(.pds-switch--error) input:checked,:host(.pds-switch--error) input:hover:not(:disabled):not(:checked){background-color:var(--pine-color-danger)}:host(.pds-switch--error) input:focus-visible:not(:disabled):not(:checked){outline-color:var(--pine-color-focus-ring-danger)}:host(.pds-switch--error) label{color:var(--color-text-error)}input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--pine-color-neutral);border:0;border-radius:var(--pine-dimension-sm);cursor:pointer;display:inline-block;-ms-flex-negative:0;flex-shrink:0;height:var(--pine-dimension-250);margin:0;padding:0;position:relative;-webkit-transition:var(--number-transition-timing);transition:var(--number-transition-timing);-webkit-transition-property:background, border, color;transition-property:background, border, color;width:var(--pine-dimension-450)}input::after{background:var(--pine-color-secondary);border-radius:var(--pine-border-radius-full);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);content:"";display:block;height:var(--sizing-input-toggle-size);inset-block-start:50%;inset-inline-start:50%;position:absolute;-webkit-transform:translate3d(-100%, -50%, 0);transform:translate3d(-100%, -50%, 0);-webkit-transition:-webkit-transform var(--number-transition-timing);transition:-webkit-transform var(--number-transition-timing);transition:transform var(--number-transition-timing);transition:transform var(--number-transition-timing), -webkit-transform var(--number-transition-timing);width:var(--sizing-input-toggle-size)}label{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-150)}.pds-switch--error label{color:inherit}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pds-switch__message{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-xs);margin-block-start:var(--pine-dimension-xs);-webkit-margin-start:var(--spacing-message-inline);margin-inline-start:var(--spacing-message-inline);width:100%}.pds-switch__message+.pds-switch__message{-webkit-margin-before:var(--spacing-message-inline);margin-block-start:var(--spacing-message-inline)}.pds-switch__message--error{color:inherit;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-switch__message--error pds-icon{-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}input:disabled{background-color:var(--pine-color-neutral-disabled);cursor:not-allowed}input:disabled~label{cursor:initial}input:disabled:hover::after{background-color:var(--pine-color-secondary)}input:disabled .pds-switch__message{color:initial}input:hover:not(:disabled){background-color:var(--pine-color-neutral-hover)}input:focus-visible:not(:disabled){outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}input:checked::after{-webkit-transform:translate3d(0, -50%, 0);transform:translate3d(0, -50%, 0)}input:checked:not(:disabled){background-color:currentColor;color:var(--pine-color-accent)}input:checked:not(:disabled):hover{border-color:currentColor;color:var(--pine-color-accent-hover)}';var PdsSwitch=function(){function i(i){var e=this;registerInstance(this,i);this.pdsSwitchChange=createEvent(this,"pdsSwitchChange");this.inheritedAttributes={};this._type="checkbox";this.checked=false;this.disabled=false;this.invalid=false;this.required=false;this.onSwitchUpdate=function(i){if(e.disabled)return;var t=i.target;e.checked=t.checked;e.updateFormValue();e.pdsSwitchChange.emit(i)};this.switchClassNames=function(){var i="pds-switch";if(e.invalid===true){i+=" pds-switch--error"}if(e.helperMessage!==undefined){i+=" pds-switch--message"}return i}}i.prototype.connectedCallback=function(){var i=this;if(this.el.attachInternals&&!this.internals){this.internals=this.el.attachInternals()}exposeTypeProperty(this.el,(function(){return i._type}))};i.prototype.componentDidLoad=function(){this.updateFormValue()};i.prototype.checkedChanged=function(){this.updateFormValue()};i.prototype.updateFormValue=function(){var i;if(typeof jest!=="undefined"||typeof process!=="undefined"&&((i=process.env)===null||i===void 0?void 0:i.NODE_ENV)==="test"){return}if(this.internals&&this.internals.setFormValue){var e=this.checked?this.value||"on":null;this.internals.setFormValue(e)}if(this.internals&&this.internals.setValidity){this.internals.setValidity({})}};i.prototype.formStateRestoreCallback=function(i){if(i instanceof FormData){var e=this.value||"on";this.checked=i.get(this.name||this.componentId)===e}else if(typeof i==="string"){this.checked=i===(this.value||"on")}};i.prototype.componentWillLoad=function(){this.inheritedAttributes=Object.assign({},inheritAriaAttributes(this.el))};i.prototype.render=function(){return h(Host,{key:"e26422622075f925f0df3dbc2f5ea8223aed9902",class:this.switchClassNames(),"aria-disabled":this.disabled?"true":null},h("label",{key:"b63cdac80d3cd55bc4845979f15b382c92883cf5",htmlFor:this.componentId},h("input",Object.assign({key:"910a7f6cd2093a6062c57c63600bb1721c147c75","aria-describedby":assignDescription(this.componentId,this.invalid,this.errorMessage||this.helperMessage),"aria-invalid":this.invalid?"true":undefined,checked:this.checked,class:"pds-switch__input",disabled:this.disabled,id:this.componentId,name:this.name?this.name:this.componentId,onChange:this.onSwitchUpdate,required:this.required,type:"checkbox",value:this.value},this.inheritedAttributes)),h("span",{key:"45661afcaba7852a6ddf6ebbf4606502bc8b72e2",class:this.hideLabel?"visually-hidden":""},this.label)),this.helperMessage&&h("div",{key:"be3a6fbf3938b7846ca3a9e6eef54d6ee25391fa",class:"pds-switch__message",id:messageId(this.componentId,"helper")},this.helperMessage),this.errorMessage&&h("div",{key:"a5944169798ae8531f9e6414deac2c3631339b0a",class:"pds-switch__message pds-switch__message--error",id:messageId(this.componentId,"error"),"aria-live":"assertive"},h("pds-icon",{key:"5b864b6ac441c9bd71dc22dbc9722c87c1b781e6",icon:danger,size:"small"}),this.errorMessage))};Object.defineProperty(i,"formAssociated",{get:function(){return true},enumerable:false,configurable:true});Object.defineProperty(i.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(i,"watchers",{get:function(){return{checked:["checkedChanged"]}},enumerable:false,configurable:true});return i}();PdsSwitch.style=labelCss+pdsSwitchCss;export{PdsSwitch as pds_switch};
2
2
  //# sourceMappingURL=pds-switch.entry.js.map