@adyen/bento-vue2 0.0.1

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 (172) hide show
  1. package/README.md +115 -0
  2. package/dist/@types/components/accordion/accordion.keys.d.ts +1 -0
  3. package/dist/@types/components/accordion/accordion.types.d.ts +24 -0
  4. package/dist/@types/components/accordion/accordion.vue.d.ts +57 -0
  5. package/dist/@types/components/accordion/components/accordion-item.vue.d.ts +35 -0
  6. package/dist/@types/components/accordion/index.d.ts +3 -0
  7. package/dist/@types/components/alert/alert.types.d.ts +6 -0
  8. package/dist/@types/components/alert/alert.vue.d.ts +34 -0
  9. package/dist/@types/components/alert/index.d.ts +2 -0
  10. package/dist/@types/components/badge/badge.types.d.ts +7 -0
  11. package/dist/@types/components/badge/badge.vue.d.ts +32 -0
  12. package/dist/@types/components/badge/index.d.ts +2 -0
  13. package/dist/@types/components/button/button.types.d.ts +11 -0
  14. package/dist/@types/components/button/button.vue.d.ts +68 -0
  15. package/dist/@types/components/button/components/button-actions/button-actions.types.d.ts +13 -0
  16. package/dist/@types/components/button/components/button-actions/button-actions.vue.d.ts +33 -0
  17. package/dist/@types/components/button/components/button-actions/index.d.ts +2 -0
  18. package/dist/@types/components/button/components/button-group.vue.d.ts +9 -0
  19. package/dist/@types/components/button/components/loading-button/index.d.ts +2 -0
  20. package/dist/@types/components/button/components/loading-button/loading-button.types.d.ts +9 -0
  21. package/dist/@types/components/button/components/loading-button/loading-button.vue.d.ts +55 -0
  22. package/dist/@types/components/button/index.d.ts +5 -0
  23. package/dist/@types/components/card/card.types.d.ts +10 -0
  24. package/dist/@types/components/card/card.vue.d.ts +44 -0
  25. package/dist/@types/components/card/components/card-image/card-image.vue.d.ts +20 -0
  26. package/dist/@types/components/card/index.d.ts +3 -0
  27. package/dist/@types/components/checkbox/checkbox.types.d.ts +2 -0
  28. package/dist/@types/components/checkbox/checkbox.vue.d.ts +59 -0
  29. package/dist/@types/components/checkbox/index.d.ts +2 -0
  30. package/dist/@types/components/data-grid/composables/useCalculateColumnWidth/useCalculateColumnWidth.d.ts +10 -0
  31. package/dist/@types/components/data-grid/composables/useCalculateColumnWidth/useCalculateColumnWidth.types.d.ts +10 -0
  32. package/dist/@types/components/data-grid/composables/useResizer.d.ts +17 -0
  33. package/dist/@types/components/data-grid/composables/useSelector.d.ts +11 -0
  34. package/dist/@types/components/data-grid/composables/useSorter.d.ts +8 -0
  35. package/dist/@types/components/data-grid/data-grid.types.d.ts +33 -0
  36. package/dist/@types/components/data-grid/data-grid.vue.d.ts +290 -0
  37. package/dist/@types/components/data-grid/index.d.ts +2 -0
  38. package/dist/@types/components/dropdown/components/dropdown-input-container/dropdown-input-container.vue.d.ts +68 -0
  39. package/dist/@types/components/dropdown/components/dropdown-input-container/index.d.ts +1 -0
  40. package/dist/@types/components/dropdown/components/dropdown-options-container/components/dropdown-option/dropdown-option.vue.d.ts +38 -0
  41. package/dist/@types/components/dropdown/components/dropdown-options-container/components/dropdown-option/index.d.ts +1 -0
  42. package/dist/@types/components/dropdown/components/dropdown-options-container/dropdown-options-container.vue.d.ts +86 -0
  43. package/dist/@types/components/dropdown/components/dropdown-options-container/index.d.ts +1 -0
  44. package/dist/@types/components/dropdown/dropdown.types.d.ts +7 -0
  45. package/dist/@types/components/dropdown/dropdown.vue.d.ts +59 -0
  46. package/dist/@types/components/dropdown/index.d.ts +2 -0
  47. package/dist/@types/components/filter-bar/components/base-filter/base-filter.vue.d.ts +94 -0
  48. package/dist/@types/components/filter-bar/components/base-filter/composables/index.d.ts +9 -0
  49. package/dist/@types/components/filter-bar/components/base-filter/index.d.ts +1 -0
  50. package/dist/@types/components/filter-bar/components/text-filter/index.d.ts +1 -0
  51. package/dist/@types/components/filter-bar/components/text-filter/text-filter.vue.d.ts +49 -0
  52. package/dist/@types/components/filter-bar/filter-bar.types.d.ts +15 -0
  53. package/dist/@types/components/filter-bar/filter-bar.vue.d.ts +19 -0
  54. package/dist/@types/components/filter-bar/index.d.ts +2 -0
  55. package/dist/@types/components/focus-trap/focus-trap.types.d.ts +18 -0
  56. package/dist/@types/components/focus-trap/focus-trap.utils.d.ts +8 -0
  57. package/dist/@types/components/focus-trap/focus-trap.vue.d.ts +39 -0
  58. package/dist/@types/components/focus-trap/index.d.ts +1 -0
  59. package/dist/@types/components/input-field/index.d.ts +1 -0
  60. package/dist/@types/components/input-field/input-field.types.d.ts +13 -0
  61. package/dist/@types/components/input-field/input-field.vue.d.ts +74 -0
  62. package/dist/@types/components/input-radio/index.d.ts +1 -0
  63. package/dist/@types/components/input-radio/input-radio.vue.d.ts +45 -0
  64. package/dist/@types/components/link/index.d.ts +1 -0
  65. package/dist/@types/components/link/link.vue.d.ts +25 -0
  66. package/dist/@types/components/loading-indicator/index.d.ts +2 -0
  67. package/dist/@types/components/loading-indicator/loading-indicator.types.d.ts +4 -0
  68. package/dist/@types/components/loading-indicator/loading-indicator.vue.d.ts +39 -0
  69. package/dist/@types/components/page-header/components/title-item/title-item.vue.d.ts +12 -0
  70. package/dist/@types/components/page-header/index.d.ts +1 -0
  71. package/dist/@types/components/page-header/page-header.vue.d.ts +12 -0
  72. package/dist/@types/components/pagination/components/pagination-context/pagination-context.vue.d.ts +32 -0
  73. package/dist/@types/components/pagination/components/pagination-controls/pagination-controls.vue.d.ts +39 -0
  74. package/dist/@types/components/pagination/components/pagination-results-per-page/pagination-results-per-page.vue.d.ts +35 -0
  75. package/dist/@types/components/pagination/index.d.ts +1 -0
  76. package/dist/@types/components/pagination/pagination.vue.d.ts +59 -0
  77. package/dist/@types/components/popover/components/popover-dismiss-button/popover-dismiss-button.vue.d.ts +20 -0
  78. package/dist/@types/components/popover/components/popover-image/index.d.ts +1 -0
  79. package/dist/@types/components/popover/components/popover-image/popover-image.vue.d.ts +20 -0
  80. package/dist/@types/components/popover/index.d.ts +2 -0
  81. package/dist/@types/components/popover/popover.types.d.ts +19 -0
  82. package/dist/@types/components/popover/popover.vue.d.ts +131 -0
  83. package/dist/@types/components/popper-container/index.d.ts +2 -0
  84. package/dist/@types/components/popper-container/popper-container.types.d.ts +54 -0
  85. package/dist/@types/components/popper-container/popper-container.utils.d.ts +23 -0
  86. package/dist/@types/components/popper-container/popper-container.vue.d.ts +116 -0
  87. package/dist/@types/components/profile-picture/index.d.ts +2 -0
  88. package/dist/@types/components/profile-picture/profile-picture.types.d.ts +4 -0
  89. package/dist/@types/components/profile-picture/profile-picture.vue.d.ts +42 -0
  90. package/dist/@types/components/segmented-control/components/segmented-option.vue.d.ts +59 -0
  91. package/dist/@types/components/segmented-control/index.d.ts +3 -0
  92. package/dist/@types/components/segmented-control/segmented-control.keys.d.ts +1 -0
  93. package/dist/@types/components/segmented-control/segmented-control.types.d.ts +15 -0
  94. package/dist/@types/components/segmented-control/segmented-control.vue.d.ts +42 -0
  95. package/dist/@types/components/status/index.d.ts +2 -0
  96. package/dist/@types/components/status/status.types.d.ts +8 -0
  97. package/dist/@types/components/status/status.vue.d.ts +23 -0
  98. package/dist/@types/components/tabs/components/tab.vue.d.ts +59 -0
  99. package/dist/@types/components/tabs/index.d.ts +3 -0
  100. package/dist/@types/components/tabs/tabs.keys.d.ts +1 -0
  101. package/dist/@types/components/tabs/tabs.types.d.ts +9 -0
  102. package/dist/@types/components/tabs/tabs.vue.d.ts +17 -0
  103. package/dist/@types/components/tag/index.d.ts +2 -0
  104. package/dist/@types/components/tag/tag.types.d.ts +7 -0
  105. package/dist/@types/components/tag/tag.vue.d.ts +37 -0
  106. package/dist/@types/components/textarea/index.d.ts +1 -0
  107. package/dist/@types/components/textarea/textarea.vue.d.ts +43 -0
  108. package/dist/@types/components/toggle/index.d.ts +2 -0
  109. package/dist/@types/components/toggle/toggle.types.d.ts +3 -0
  110. package/dist/@types/components/toggle/toggle.vue.d.ts +60 -0
  111. package/dist/@types/components/tooltip/index.d.ts +2 -0
  112. package/dist/@types/components/tooltip/tooltip.types.d.ts +17 -0
  113. package/dist/@types/components/tooltip/tooltip.vue.d.ts +62 -0
  114. package/dist/@types/components/typography/index.d.ts +2 -0
  115. package/dist/@types/components/typography/typography.types.d.ts +27 -0
  116. package/dist/@types/components/typography/typography.vue.d.ts +78 -0
  117. package/dist/@types/components.d.ts +75 -0
  118. package/dist/@types/directives/index.d.ts +1 -0
  119. package/dist/@types/directives/tooltip.d.ts +3 -0
  120. package/dist/@types/i18n/index.d.ts +8 -0
  121. package/dist/@types/index.d.ts +20 -0
  122. package/dist/@types/install.d.ts +10 -0
  123. package/dist/@types/types/index.d.ts +1 -0
  124. package/dist/@types/types/label-position.d.ts +4 -0
  125. package/dist/@types/types/maybe-ref.d.ts +2 -0
  126. package/dist/@types/types/utils-events.d.ts +9 -0
  127. package/dist/@types/types/vue-node-element.d.ts +2 -0
  128. package/dist/@types/utils/ts/events.d.ts +2 -0
  129. package/dist/@types/utils/ts/i18n.d.ts +12 -0
  130. package/dist/@types/utils/ts/inject-css.d.ts +2 -0
  131. package/dist/@types/utils/ts/resize.d.ts +1 -0
  132. package/dist/@types/utils/ts/storybook.d.ts +8 -0
  133. package/dist/@types/utils/ts/unique-id.d.ts +1 -0
  134. package/dist/fonts/Inter-Bold.otf +0 -0
  135. package/dist/fonts/Inter-Bold.ttf +0 -0
  136. package/dist/fonts/Inter-Bold.woff +0 -0
  137. package/dist/fonts/Inter-Bold.woff2 +0 -0
  138. package/dist/fonts/Inter-ExtraBold.otf +0 -0
  139. package/dist/fonts/Inter-ExtraBold.ttf +0 -0
  140. package/dist/fonts/Inter-ExtraBold.woff +0 -0
  141. package/dist/fonts/Inter-ExtraBold.woff2 +0 -0
  142. package/dist/fonts/Inter-ExtraLight.otf +0 -0
  143. package/dist/fonts/Inter-ExtraLight.ttf +0 -0
  144. package/dist/fonts/Inter-ExtraLight.woff +0 -0
  145. package/dist/fonts/Inter-ExtraLight.woff2 +0 -0
  146. package/dist/fonts/Inter-Italic.woff +0 -0
  147. package/dist/fonts/Inter-Italic.woff2 +0 -0
  148. package/dist/fonts/Inter-Light.otf +0 -0
  149. package/dist/fonts/Inter-Light.ttf +0 -0
  150. package/dist/fonts/Inter-Light.woff +0 -0
  151. package/dist/fonts/Inter-Light.woff2 +0 -0
  152. package/dist/fonts/Inter-Medium.otf +0 -0
  153. package/dist/fonts/Inter-Medium.ttf +0 -0
  154. package/dist/fonts/Inter-Medium.woff +0 -0
  155. package/dist/fonts/Inter-Medium.woff2 +0 -0
  156. package/dist/fonts/Inter-Regular.otf +0 -0
  157. package/dist/fonts/Inter-Regular.ttf +0 -0
  158. package/dist/fonts/Inter-Regular.woff +0 -0
  159. package/dist/fonts/Inter-Regular.woff2 +0 -0
  160. package/dist/fonts/Inter-SemiBold.otf +0 -0
  161. package/dist/fonts/Inter-SemiBold.ttf +0 -0
  162. package/dist/fonts/Inter-SemiBold.woff +0 -0
  163. package/dist/fonts/Inter-SemiBold.woff2 +0 -0
  164. package/dist/fonts/Inter-Thin.otf +0 -0
  165. package/dist/fonts/Inter-Thin.ttf +0 -0
  166. package/dist/fonts/Inter-Thin.woff +0 -0
  167. package/dist/fonts/Inter-Thin.woff2 +0 -0
  168. package/dist/fonts/fonts.css +71 -0
  169. package/dist/index.js +3189 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/web-types.json +2703 -0
  172. package/package.json +101 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/utils/ts/inject-css.ts","../src/install.ts","../src/components/button/button.types.ts","../src/components/typography/typography.types.ts","../src/components/typography/typography.vue","../src/components/button/button.vue","../src/components/button/components/button-actions/button-actions.types.ts","../src/components/button/components/button-actions/button-actions.vue","../src/components/button/components/loading-button/loading-button.types.ts","../src/components/loading-indicator/loading-indicator.types.ts","../src/components/loading-indicator/loading-indicator.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross-circle-fill.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark-circle-fill.vue","../src/components/button/components/loading-button/loading-button.vue","../src/utils/ts/resize.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-up.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-down.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark-small.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/minus-small.vue","../src/components/checkbox/checkbox.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-down.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-up.vue","../src/components/dropdown/components/dropdown-input-container/dropdown-input-container.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark.vue","../src/components/dropdown/components/dropdown-options-container/components/dropdown-option/dropdown-option.vue","../src/components/popper-container/popper-container.types.ts","../src/components/popper-container/popper-container.utils.ts","../src/components/popper-container/popper-container.vue","../src/components/dropdown/components/dropdown-options-container/dropdown-options-container.vue","../../../node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/uuid/dist/esm-browser/v4.js","../src/utils/ts/unique-id.ts","../src/components/dropdown/dropdown.vue","../src/components/pagination/components/pagination-results-per-page/pagination-results-per-page.vue","../src/components/pagination/components/pagination-context/pagination-context.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/skip-left.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/skip-right.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-left-small.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/chevron-right-small.vue","../src/components/pagination/components/pagination-controls/pagination-controls.vue","../src/components/pagination/pagination.vue","../src/components/filter-bar/filter-bar.types.ts","../src/components/popover/popover.types.ts","../src/components/popover/components/popover-dismiss-button/popover-dismiss-button.vue","../src/components/popover/popover.vue","../src/components/tooltip/tooltip.types.ts","../src/components/tooltip/tooltip.vue","../src/components/filter-bar/components/base-filter/composables/index.ts","../src/utils/ts/events.ts","../src/directives/tooltip.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross.vue","../src/components/filter-bar/components/base-filter/base-filter.vue","../src/components/input-field/input-field.types.ts","../src/components/input-field/input-field.vue","../src/components/filter-bar/components/text-filter/text-filter.vue","../src/components/filter-bar/filter-bar.vue","../src/components/data-grid/data-grid.types.ts","../src/components/data-grid/composables/useResizer.ts","../src/components/data-grid/composables/useCalculateColumnWidth/useCalculateColumnWidth.ts","../src/components/data-grid/composables/useSorter.ts","../src/components/data-grid/composables/useSelector.ts","../src/components/data-grid/data-grid.vue","../src/components/input-radio/input-radio.vue","../src/components/link/link.vue","../src/components/status/status.types.ts","../src/components/status/status.vue","../src/components/tag/tag.types.ts","../src/components/tag/tag.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross-small.vue","../src/components/toggle/toggle.types.ts","../src/types/label-position.ts","../src/components/toggle/toggle.vue"],"sourcesContent":["const injectCSS = (cssStyles: string) => {\n const cssCode = JSON.stringify(cssStyles?.trim());\n try {\n if (typeof document !== 'undefined') {\n const elementStyle = document.createElement('style');\n elementStyle.appendChild(document.createTextNode(cssCode));\n document.head.appendChild(elementStyle);\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('css vars injection error', e);\n }\n};\n\nexport default injectCSS;\n","import type { PluginFunction, PluginObject } from 'vue';\nimport bentoCssVars from '@adyen/bento-design-tokens/dist/css/bento/variables.css';\nimport bentoLegacyCssVars from '@adyen/bento-design-tokens/dist/css/bento/variables-legacy.css';\nimport injectCSS from './utils/ts/inject-css';\n\nexport enum BentoTheme {\n LEGACY = 'b-legacy-theme',\n BENTO = '',\n}\ninterface BentoVuePlugin {\n theme: BentoTheme;\n}\n\nconst setDefaultTheme = () => {\n document.body.classList.add(BentoTheme.LEGACY);\n};\n\nconst install: PluginFunction<BentoVuePlugin> = (_, options: { theme: BentoTheme }) => {\n if (options?.theme === BentoTheme.LEGACY) {\n setDefaultTheme();\n injectCSS(bentoLegacyCssVars);\n } else {\n injectCSS(bentoCssVars);\n }\n};\n\nexport default {\n install,\n} as PluginObject<BentoVuePlugin>;\n","export enum BentoButtonVariant {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n}\n\nexport enum BentoButtonPropClass {\n CONDENSED = 'condensed',\n GROUPED = 'grouped',\n DESTRUCTIVE = 'critical',\n ICON_ONLY = 'icon-only',\n}\n","export enum BentoTypographyVariant {\n CAPTION = 'caption',\n BODY = 'body',\n SUBTITLE = 'subtitle',\n TITLE = 'title',\n}\n\nexport enum BentoTypographyModifier {\n WIDE = 'wide',\n STRONGER = 'stronger',\n STRONGER_WIDE = 'stronger-wide',\n STRONGEST = 'strongest',\n STRONGEST_WIDE = 'strongest-wide',\n MEDIUM = 'm',\n LARGE = 'l',\n MOBILE = 'mobile',\n}\n\nexport enum BentoTypographyElement {\n H1 = 'h1',\n H2 = 'h2',\n H3 = 'h3',\n H4 = 'h4',\n H5 = 'h5',\n H6 = 'h6',\n DIV = 'div',\n PARAGRAPH = 'p',\n SPAN = 'span',\n}\n","<template>\n <component :is=\"el\" class=\"b-typography\" :class=\"conditionalClasses\" data-testid=\"typography\">\n <slot />\n </component>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTypographyElement, BentoTypographyModifier, BentoTypographyVariant } from './typography.types';\n\n /**\n * The Typography component makes it easy to apply a default set of font weights, sizes and other text styles\n * easily to text. The variants and properties match with those found in Figma.\n *\n * For example, seeing text with the typography styling of\n *\n * @example\n * import { BentoTypography } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoTypography },\n * template: `\n * <bento-typography>\n * ... text content\n * </bento-typography>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-typography',\n inheritAttrs: true,\n props: {\n /**\n * Sets the HTML DOM element.\n * @values h1, h2, h3, h4, h5, h6, div, p, span\n */\n el: {\n type: String as PropType<BentoTypographyElement>,\n default: BentoTypographyElement.PARAGRAPH,\n validator: (value: BentoTypographyElement) => Object.values(BentoTypographyElement).includes(value),\n },\n\n /**\n * Adds the stronger class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n stronger: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the strongest class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n strongest: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the type of typography variant.\n * @values caption, body, subtitle, title.\n */\n variant: {\n type: String as PropType<BentoTypographyVariant>,\n default: BentoTypographyVariant.BODY,\n validator: (value: BentoTypographyVariant) => Object.values(BentoTypographyVariant).includes(value),\n },\n\n /**\n * Adds the medium class modifier.\n * Applicable to the Title variant.\n */\n medium: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the large class modifier.\n * Applicable to the Title variant.\n */\n large: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the medium class modifier.\n * Applicable to tje Body variant.\n */\n wide: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n // Caption\n [`b-typography--${BentoTypographyVariant.CAPTION}`]: props.variant === BentoTypographyVariant.CAPTION,\n [`b-typography--${BentoTypographyVariant.CAPTION}-${BentoTypographyModifier.WIDE}`]:\n props.variant === BentoTypographyVariant.CAPTION && props.wide,\n [`b-typography--${BentoTypographyVariant.CAPTION}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.CAPTION && props.stronger,\n\n // Body\n [`b-typography--${BentoTypographyVariant.BODY}`]: props.variant === BentoTypographyVariant.BODY,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.WIDE}`]:\n props.variant === BentoTypographyVariant.BODY && props.wide,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.BODY && props.stronger,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.STRONGEST}`]:\n props.variant === BentoTypographyVariant.BODY && props.strongest,\n\n // Subtitle\n [`b-typography--${BentoTypographyVariant.SUBTITLE}`]: props.variant === BentoTypographyVariant.SUBTITLE,\n [`b-typography--${BentoTypographyVariant.SUBTITLE}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.SUBTITLE && props.stronger,\n\n // Title\n [`b-typography--${BentoTypographyVariant.TITLE}`]:\n props.variant === BentoTypographyVariant.TITLE && !props.medium && !props.large,\n [`b-typography--${BentoTypographyVariant.TITLE}-${BentoTypographyModifier.MEDIUM}`]:\n props.variant === BentoTypographyVariant.TITLE && props.medium,\n [`b-typography--${BentoTypographyVariant.TITLE}-${BentoTypographyModifier.LARGE}`]:\n props.variant === BentoTypographyVariant.TITLE && props.large,\n }));\n\n return {\n conditionalClasses,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./typography.scss\" />\n","<template>\n <button\n class=\"b-button\"\n :class=\"conditionalClasses\"\n :disabled=\"disabled\"\n :type=\"type\"\n :aria-label=\"ariaLabel\"\n @click=\"onClickButton\"\n >\n <span v-if=\"$slots.iconLeft\" class=\"b-button__icon-left\" data-testid=\"icon-button-left\">\n <slot name=\"iconLeft\" />\n </span>\n <bento-typography\n v-if=\"$slots.default\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n class=\"b-button__label\"\n >\n <slot />\n </bento-typography>\n <span v-if=\"$slots.iconRight\" class=\"b-button__icon-right\" data-testid=\"icon-button-right\">\n <slot name=\"iconRight\" />\n </span>\n </button>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import { BentoButtonPropClass, BentoButtonVariant } from './button.types';\n import type { ButtonHTMLAttributes } from 'vue/types/jsx';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n /**\n * Button component for all the various types of bento buttons.\n *\n * @usage\n * import { BentoButton, AdlIconPosition } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoButton },\n * template: `\n * <bento-button\n * disabled\n * :icon-position=\"AdlIconPosition.AFTER\"\n * >\n * Button text\n * </bento-button>\n * `,\n * }\n */\n export default defineComponent({\n name: 'bento-button',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Disables button functonality\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Displays button as critical\n */\n critical: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The default behavior of the button.\n * Possible values are: 'button', 'reset', 'submit'\n */\n type: {\n type: String as PropType<ButtonHTMLAttributes['type']>,\n default: 'type',\n },\n\n /**\n * Reduces sizing of button\n */\n condensed: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Types of flavour of Button\n * @values primary, secondary, tertiary\n */\n variant: {\n type: String as PropType<BentoButtonVariant>,\n default: BentoButtonVariant.PRIMARY,\n validator: (value: BentoButtonVariant) => Object.values(BentoButtonVariant).includes(value),\n },\n },\n data: () => ({ BentoTypographyElement, BentoTypographyVariant }),\n computed: {\n ariaLabel(): string | undefined {\n return this.$slots?.default?.[0]?.text;\n },\n conditionalClasses(): {\n [x: string]: boolean;\n } {\n return {\n ...this.variantClass,\n [`b-button--${BentoButtonPropClass.CONDENSED}`]: this.condensed,\n [`b-button--${BentoButtonPropClass.ICON_ONLY}`]: !this.$slots?.default,\n };\n },\n\n variantClass(): { [x: string]: boolean } {\n return {\n [`b-button--${this.variant}${this.critical ? `-${BentoButtonPropClass.DESTRUCTIVE}` : ''}`]: true,\n };\n },\n },\n methods: {\n onClickButton() {\n if (!this.disabled) {\n this.$emit('click');\n }\n },\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./button.scss\" />\n","import { VueNodeElement } from '../../../../types/vue-node-element';\n\nexport interface BentoButtonActionObject {\n title: string;\n event: (event: Event) => void;\n icon?: VueNodeElement;\n}\n\nexport type BentoButtonActionsList = Array<BentoButtonActionObject>;\n\nexport enum BentoButtonActionsLayout {\n BUTTONS_END = 'buttons-end',\n FILL_CONTAINER = 'fill-container',\n SPACE_BETWEEN = 'space-between',\n VERTICAL_STACK = 'vertical-stack',\n}\n","<template>\n <div class=\"b-button-actions\" :class=\"conditionalClasses\" role=\"group\">\n <template v-for=\"(button, index) in reversedActionsList\">\n <bento-button :key=\"index\" :variant=\"generateButtonVariantByIndex(index)\" @click=\"button.event\">\n <template v-if=\"button.icon\" #iconLeft>\n <component :is=\"button.icon\" :svg-title=\"button.title\"></component>\n </template>\n {{ button.title }}\n </bento-button>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import { BentoButtonActionsLayout, BentoButtonActionsList } from './button-actions.types';\n\n export default defineComponent({\n name: 'bento-button-actions',\n components: { BentoButton },\n inheritAttrs: false,\n props: {\n /**\n * List of actions that will be used to render the buttons.\n * First element in the list will be rendered as \"primary\".\n * All elements after the first will be rendered as \"secondary\".\n *\n * Each object in the list should have a `title`, an `event` and\n * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.\n *\n * `title`: Button's text.\n *\n * `event`: Event triggered when clicking the Button.\n *\n * `icon`: Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * ```\n * [{\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n required: true,\n },\n\n /**\n * Defines the layout in which the button actions is presented.\n * It can be one of:\n *\n * @values BUTTONS_END\n * @values FILL_CONTAINER\n * @values SPACE_BETWEEN\n * @values VERTICAL_STACK\n */\n layout: {\n type: String as PropType<BentoButtonActionsLayout>,\n default: BentoButtonActionsLayout.BUTTONS_END,\n validator: (layout: BentoButtonActionsLayout) =>\n Object.values(BentoButtonActionsLayout).includes(layout),\n },\n },\n setup(props) {\n const reversedActionsList = computed(() => props.actions.slice().reverse());\n const generateButtonVariantByIndex = actionIndex => {\n const lastActionIndex = props.actions.length - 1;\n return actionIndex === lastActionIndex ? BentoButtonVariant.PRIMARY : BentoButtonVariant.SECONDARY;\n };\n\n const conditionalClasses = computed(() => ({\n [`b-button-actions--${props.layout}`]: true,\n }));\n\n return {\n // Values\n conditionalClasses,\n reversedActionsList,\n\n // Methods\n generateButtonVariantByIndex,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./button-actions.scss\" />\n","export enum BentoLoadingButtonState {\n START = 'start',\n LOADING = 'loading',\n SUCCESS = 'success',\n FAIL = 'fail',\n}\n\nexport type BentoLoadingButtonIconState = Partial<{ [key in BentoLoadingButtonState]: string }>;\n","export enum BentoLoadingIndicatorEvent {\n START = 'loading-start',\n END = 'loading-end',\n}\n","<template>\n <div class=\"b-loading-indicator\" :class=\"conditionalClasses\" aria-hidden=\"true\" data-testid=\"loading-indicator\" />\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, onUnmounted } from 'vue';\n import { BentoLoadingIndicatorEvent } from './loading-indicator.types';\n\n export default defineComponent({\n name: 'bento-loading-indicator',\n inheritAttrs: false,\n props: {\n /**\n * Displays the loading indicator in a small size\n */\n small: { type: Boolean, default: false },\n /**\n * Displays the loading indicator in a large size\n */\n large: { type: Boolean, default: false },\n /**\n * Displays the loading indicator in a small size\n */\n inverse: { type: Boolean, default: false },\n },\n emits: [BentoLoadingIndicatorEvent.START, BentoLoadingIndicatorEvent.END],\n setup(props, { emit }) {\n onMounted(() => emit(BentoLoadingIndicatorEvent.START));\n\n onUnmounted(() => emit(BentoLoadingIndicatorEvent.END));\n\n const conditionalClasses = computed(() => ({\n 'b-loading-indicator--inverse': props.inverse,\n 'b-loading-indicator--small': props.small,\n 'b-loading-indicator--large': props.large,\n }));\n\n return {\n conditionalClasses,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./loading-indicator.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><g :clip-path=\"'url(#uia-icons-16-cross_circle_fill__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M0.25 8C0.25 3.71979 3.71979 0.25 8 0.25C12.2802 0.25 15.75 3.71979 15.75 8C15.75 12.2802 12.2802 15.75 8 15.75C3.71979 15.75 0.25 12.2802 0.25 8ZM5.46967 5.46967C5.76256 5.17678 6.23744 5.17678 6.53033 5.46967L8 6.93934L9.46967 5.46967C9.76256 5.17678 10.2374 5.17678 10.5303 5.46967C10.8232 5.76256 10.8232 6.23744 10.5303 6.53033L9.06066 8L10.5303 9.46967C10.8232 9.76256 10.8232 10.2374 10.5303 10.5303C10.2374 10.8232 9.76256 10.8232 9.46967 10.5303L8 9.06066L6.53033 10.5303C6.23744 10.8232 5.76256 10.8232 5.46967 10.5303C5.17678 10.2374 5.17678 9.76256 5.46967 9.46967L6.93934 8L5.46967 6.53033C5.17678 6.23744 5.17678 5.76256 5.46967 5.46967Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-cross_circle_fill__a' + uuid\"><rect width=\"16\" height=\"16\" fill=\"#fff\"/></clipPath></defs></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><g :clip-path=\"'url(#uia-icons-16-checkmark_circle_fill__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M0.249878 7.99988C0.249878 3.71967 3.71967 0.249878 7.99988 0.249878C12.2801 0.249878 15.7499 3.71967 15.7499 7.99988C15.7499 12.2801 12.2801 15.7499 7.99988 15.7499C3.71967 15.7499 0.249878 12.2801 0.249878 7.99988ZM11.5302 5.46955C11.8231 5.76244 11.8231 6.23731 11.5302 6.53021L7.53021 10.5302C7.27393 10.7865 6.87832 10.8185 6.5872 10.6263C6.54561 10.5989 6.50565 10.5663 6.46904 10.5297L4.46955 8.53021C4.17665 8.23732 4.17665 7.76244 4.46955 7.46955C4.76244 7.17665 5.23731 7.17665 5.53021 7.46955L6.99988 8.93922L10.4695 5.46955C10.7624 5.17665 11.2373 5.17665 11.5302 5.46955Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-checkmark_circle_fill__a' + uuid\"><rect width=\"16\" height=\"16\" fill=\"#fff\"/></clipPath></defs></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-loading-button\" data-testid=\"loading-button\" :class=\"conditionalClasses\">\n <bento-button\n :critical=\"state === BentoLoadingButtonState.FAIL\"\n :variant=\"variant\"\n :condensed=\"condensed\"\n :disabled=\"disabled\"\n @click=\"onClick\"\n >\n <slot></slot>\n <template v-if=\"state !== BentoLoadingButtonState.START\" #iconLeft>\n <span class=\"b-loading-button__icon\" data-testid=\"loading-button-rotating-icon\">\n <cross v-if=\"state === BentoLoadingButtonState.FAIL\" svg-title=\"failed\" />\n <checkmark v-else-if=\"state === BentoLoadingButtonState.SUCCESS\" svg-title=\"succeded\" />\n <!-- TODO: Replace with new loading-indicator component -->\n <bento-loading-indicator\n v-else-if=\"state === BentoLoadingButtonState.LOADING\"\n small\n :inverse=\"isInverseLoadingIndicator\"\n />\n </span>\n </template>\n </bento-button>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import { BentoLoadingButtonState } from './loading-button.types';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\n import Cross from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import Checkmark from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n\n export default defineComponent({\n name: 'bento-loading-button',\n components: { BentoButton, Cross, Checkmark, BentoLoadingIndicator },\n inheritAttrs: false,\n props: {\n /**\n * Reduces sizing of button\n */\n condensed: {\n type: BentoButton.props.condensed.type,\n default: false,\n },\n\n /**\n * Disables button functonality\n */\n disabled: {\n type: BentoButton.props.disabled.type,\n default: false,\n },\n\n /**\n * State of the button.\n * @values start, loading, success, fail\n */\n state: {\n type: String as PropType<BentoLoadingButtonState>,\n default: BentoLoadingButtonState.START,\n validator: (value: BentoLoadingButtonState) => Object.values(BentoLoadingButtonState).includes(value),\n },\n\n /**\n * Types of flavour of Button\n * @values primary, secondary, tertiary\n */\n variant: {\n type: BentoButton.props.variant.type,\n default: BentoButtonVariant.PRIMARY,\n validator: BentoButton.props.variant.validator,\n },\n },\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.LOADING}`]:\n props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.SUCCESS}`]:\n props.state === BentoLoadingButtonState.SUCCESS,\n }));\n\n const isInverseLoadingIndicator = computed(() => props.variant === BentoButtonVariant.PRIMARY);\n\n const onClick = () => {\n if (props.state !== BentoLoadingButtonState.LOADING) {\n emit('click');\n }\n };\n\n return {\n // Enums\n BentoLoadingButtonState,\n\n // Functions\n onClick,\n\n // Values\n conditionalClasses,\n isInverseLoadingIndicator,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./loading-button.scss\" />\n","import Vue from 'vue';\n\nconst callbackMap = new WeakMap();\nconst observerMap = new WeakMap();\n\nexport const observeSizeOfElement = (element, callback) => {\n if (!window.ResizeObserver) {\n return;\n }\n\n const elementToObserve = element instanceof Vue ? element.$el : element;\n\n const observer = new ResizeObserver(([entry]) => {\n requestAnimationFrame(() => {\n const callbackToInvoke = callbackMap.get(entry.target);\n if (callbackToInvoke) {\n callbackToInvoke(entry.target.getBoundingClientRect());\n }\n });\n });\n\n callbackMap.set(elementToObserve, callback);\n observerMap.set(elementToObserve, observer);\n observer.observe(elementToObserve);\n};\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11 10.75C11.2841 10.75 11.5438 10.5895 11.6708 10.3354C11.7979 10.0813 11.7705 9.77726 11.6 9.55L8.6 5.55C8.45836 5.36115 8.23607 5.25 8.00001 5.25C7.76394 5.25 7.54165 5.36115 7.40001 5.55L4.4 9.55C4.22956 9.77726 4.20214 10.0813 4.32918 10.3354C4.45623 10.5895 4.71593 10.75 5 10.75L11 10.75Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M5 5.25C4.71593 5.25 4.45623 5.4105 4.32918 5.66459C4.20214 5.91868 4.22956 6.22274 4.4 6.45L7.4 10.45C7.54165 10.6389 7.76394 10.75 8 10.75C8.23607 10.75 8.45836 10.6389 8.6 10.45L11.6 6.45C11.7705 6.22274 11.7979 5.91868 11.6708 5.66459C11.5438 5.4105 11.2841 5.25 11 5.25H5Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.5303 6.53033C11.8232 6.23744 11.8232 5.76256 11.5303 5.46967C11.2374 5.17678 10.7626 5.17678 10.4697 5.46967L7 8.93934L5.53033 7.46967C5.23744 7.17678 4.76256 7.17678 4.46967 7.46967C4.17678 7.76256 4.17678 8.23744 4.46967 8.53033L6.46967 10.5303C6.76256 10.8232 7.23744 10.8232 7.53033 10.5303C7.53021 10.5304 7.53045 10.5302 7.53033 10.5303L11.5303 6.53033Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M4.25 8C4.25 7.58579 4.58579 7.25 5 7.25H11C11.4142 7.25 11.75 7.58579 11.75 8C11.75 8.41421 11.4142 8.75 11 8.75H5C4.58579 8.75 4.25 8.41421 4.25 8Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <label class=\"b-checkbox\" :class=\"conditionalClass\">\n <div class=\"b-checkbox__input-container\">\n <!-- Don't change order because it matters for CSS. Icons first -->\n <checkmark-small-icon v-if=\"isChecked\" class=\"b-checkbox__icon\" svg-title=\"checked\" />\n <minus-small-icon v-if=\"isIndeterminate\" class=\"b-checkbox__icon\" svg-title=\"intermediate\" />\n <input\n ref=\"input\"\n role=\"checkbox\"\n class=\"b-checkbox__outline\"\n type=\"checkbox\"\n v-bind=\"$attrs\"\n :aria-label=\"ariaLabel\"\n :aria-checked=\"ariaChecked\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n :indeterminate.prop=\"isIndeterminate\"\n :value=\"value\"\n :class=\"conditionalClassOutline\"\n @change=\"onChange\"\n />\n </div>\n\n <span v-if=\"$slots.default || $slots.description\" class=\"b-checkbox__text\">\n <bento-typography\n class=\"b-checkbox__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n class=\"b-checkbox__description\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"description\"></slot>\n </bento-typography>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, toRefs } from 'vue';\n import { BentoCheckboxType, BentoMultiCheckboxType } from './checkbox.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import type { HTMLAttributes } from 'vue/types/jsx';\n import CheckmarkSmallIcon from '@adyen/ui-assets-icons-16/vue/checkmark-small';\n import MinusSmallIcon from '@adyen/ui-assets-icons-16/vue/minus-small';\n\n export default defineComponent({\n name: 'bento-checkbox',\n components: {\n BentoTypography,\n CheckmarkSmallIcon,\n MinusSmallIcon,\n },\n inheritAttrs: false,\n model: { prop: 'modelValue' },\n props: {\n /**\n * The value of the component. The DOM API casts this to a string.\n * The browser uses \"on\" as the default value.\n *\n * In the case of multiple checkboxes this value is used as a unique key.\n */\n value: { type: [String, Number], default: null },\n\n /**\n * When handling a single checkbox with a singular state, use a boolean.\n *\n * When handling multiple checkboxes, use an array of keys.\n * These keys exist as a set \"value\" prop for each checkbox.\n */\n modelValue: { type: [Boolean, Array] as PropType<BentoCheckboxType>, default: false },\n\n /**\n * Setting this property to true will disable the checkbox in your form.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * The :indeterminate CSS pseudo-class represents any form element\n * whose state is indeterminate, such as checkboxes which have their HTML indeterminate attribute\n * set to true, radio buttons which are members of a group in which all radio buttons are unchecked,\n * and indeterminate <progress> elements. https://developer.mozilla.org/en-US/docs/Web/CSS/:indeterminate\n * This property lets you control the input.indeterminate native property.\n */\n indeterminate: { type: Boolean, default: false },\n },\n emits: ['input'],\n setup(props, { emit, slots }) {\n const { disabled, indeterminate, modelValue, value } = toRefs(props);\n\n const isCheckboxGroup = computed(() => Array.isArray(modelValue.value));\n const isChecked = computed(() => {\n if (!isCheckboxGroup.value) {\n return modelValue.value as boolean;\n }\n\n return (modelValue.value as BentoMultiCheckboxType).some(item => item === value.value);\n });\n const isIndeterminate = computed(() => !isChecked.value && indeterminate.value);\n\n // ARIA fields\n const ariaChecked = computed<HTMLAttributes['aria-checked']>(() =>\n isIndeterminate.value ? 'mixed' : `${!!isChecked.value}`\n );\n const ariaLabel = computed(\n () => slots.default?.()[0]?.text || slots.description?.()[0]?.text || 'checkbox'\n );\n\n const conditionalClass = computed(() => ({ 'b-checkbox--disabled': disabled.value }));\n const conditionalClassOutline = computed(() => ({\n 'b-checkbox__outline--unchecked': !isChecked.value && !isIndeterminate.value,\n }));\n\n const onChange = (event: Event) => {\n if (disabled.value) {\n return;\n }\n\n const newValue: boolean = (event.target as HTMLInputElement).checked;\n\n if (isCheckboxGroup.value) {\n const newCheckedList = [...(modelValue.value as BentoMultiCheckboxType)];\n const index = newCheckedList.indexOf(value.value);\n\n if (index === -1) {\n newCheckedList.push(value.value);\n } else {\n newCheckedList.splice(index, 1);\n }\n emit('input', newCheckedList);\n } else {\n emit('input', newValue);\n }\n };\n\n return {\n // Values\n ariaLabel,\n ariaChecked,\n isCheckboxGroup,\n isChecked,\n isIndeterminate,\n conditionalClass,\n conditionalClassOutline,\n\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Events\n onChange,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./checkbox.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M2.46967 4.96967C2.76256 4.67678 3.23744 4.67678 3.53033 4.96967L8 9.43934L12.4697 4.96967C12.7626 4.67678 13.2374 4.67678 13.5303 4.96967C13.8232 5.26257 13.8232 5.73744 13.5303 6.03033L8.53033 11.0303C8.23744 11.3232 7.76256 11.3232 7.46967 11.0303L2.46967 6.03033C2.17678 5.73744 2.17678 5.26256 2.46967 4.96967Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M13.5303 11.0303C13.2374 11.3232 12.7626 11.3232 12.4697 11.0303L8 6.56066L3.53033 11.0303C3.23744 11.3232 2.76256 11.3232 2.46967 11.0303C2.17678 10.7374 2.17678 10.2626 2.46967 9.96967L7.46967 4.96967C7.76256 4.67678 8.23744 4.67678 8.53033 4.96967L13.5303 9.96967C13.8232 10.2626 13.8232 10.7374 13.5303 11.0303Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <!-- TODO: Add \"aria-activedescendant\" when the arrow navigation functionality gets added -->\n <div\n class=\"adl2-dropdown-input-container\"\n tabindex=\"0\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n :aria-label=\"ariaLabel\"\n :aria-controls=\"comboboxId\"\n :aria-expanded=\"ariaExpanded\"\n :class=\"conditionalClasses\"\n @click=\"onToggleDropdown\"\n @keydown.enter=\"onToggleDropdown\"\n @keydown.space=\"onToggleDropdown\"\n @keydown.esc=\"onCloseDropdown\"\n >\n <div class=\"adl2-dropdown-input-container__content\" :aria-hidden=\"!displayValue ? true : null\">\n <span v-show=\"shouldShowPlaceholder\" class=\"adl2-dropdown-input-container__placeholder\">\n {{ placeholder }}\n </span>\n <span v-show=\"!shouldShowPlaceholder\">\n {{ displayValue }}\n </span>\n </div>\n <div class=\"adl2-dropdown-input-container__chevron\" aria-hidden=\"true\">\n <chevron-up-icon v-show=\"isDropdownOpen\" svg-title=\"opened\" />\n <chevron-down-icon v-show=\"!isDropdownOpen\" svg-title=\"closed\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import type { HTMLAttributes } from 'vue/types/jsx';\n import ChevronDownIcon from '@adyen/ui-assets-icons-16/vue/chevron-down';\n import ChevronUpIcon from '@adyen/ui-assets-icons-16/vue/chevron-up';\n\n /**\n * Dropdown input field container.\n * It renders the Placeholder or the value that was selected.\n *\n * When it gets clicked it emits the \"click\" event.\n *\n * @example\n * <adl-dropdown-input-container\n * :open=\"true\"\n * value=\"Selected value\"\n * placeholder=\"Placeholder text\"\n * @click=\"openDropdown\"\n * />\n */\n export default defineComponent({\n components: {\n ChevronDownIcon,\n ChevronUpIcon,\n },\n inheritAttrs: false,\n props: {\n /**\n * Defines a string value that provides an accessible name for the dropdown.\n */\n ariaLabel: { type: String, default: null },\n\n /**\n * Identifies the listbox whose contents are controlled by the the combobox on which this attribute is set.\n */\n comboboxId: { type: String, required: true },\n\n /**\n * Disables dropdown functionality\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Selected option's label.\n */\n displayValue: { type: String, default: null },\n\n /**\n * Specifies a short hint that describes the expected value of the element.\n */\n placeholder: { type: String, default: null },\n\n /**\n * Indicates if the dropdown is open so that\n * the chevron can be turned around respectively.\n */\n open: { type: Boolean, default: false },\n },\n setup(props, { emit }) {\n const shouldShowPlaceholder = computed(() => !props.displayValue && !!props.placeholder);\n const isDropdownOpen = computed(() => props.open && !props.disabled);\n const ariaExpanded = computed<HTMLAttributes['aria-expanded']>(() => `${isDropdownOpen.value}`);\n const conditionalClasses = computed(() => ({\n 'adl2-dropdown-input-container--disabled': props.disabled,\n 'adl2-dropdown-input-container--opened': props.open,\n }));\n\n /**\n * Triggered on click, space and enter user events. It will open the dropdown.\n * @event open\n */\n const onOpenDropdown = () => (!props.disabled ? emit('open') : null);\n\n /**\n * Triggered on click, space, enter and esc user events. It will close the dropdown.\n * @event close\n */\n const onCloseDropdown = () => (props.open ? emit('close') : null);\n\n const onToggleDropdown = () => (props.open ? onCloseDropdown() : onOpenDropdown());\n\n return {\n // Values\n ariaExpanded,\n conditionalClasses,\n isDropdownOpen,\n shouldShowPlaceholder,\n\n // Events\n onCloseDropdown,\n onToggleDropdown,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-input-container.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M14.5303 4.53033C14.8232 4.23744 14.8232 3.76256 14.5303 3.46967C14.2374 3.17678 13.7626 3.17678 13.4697 3.46967L6 10.9393L2.53033 7.46967C2.23744 7.17678 1.76256 7.17678 1.46967 7.46967C1.17678 7.76256 1.17678 8.23744 1.46967 8.53033L5.46967 12.5303C5.50628 12.5669 5.54574 12.599 5.58732 12.6264C5.87844 12.8186 6.27405 12.7866 6.53033 12.5303L14.5303 4.53033Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div\n class=\"adl2-dropdown-option\"\n role=\"option\"\n :class=\"conditionalClasses\"\n :aria-selected=\"ariaSelected\"\n @click=\"onOptionSelected\"\n >\n <span>{{ label }}</span>\n <adl-checkmark v-show=\"selected\" svg-title=\"selected\" />\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { AdlDropdownOptionItem, AdlDropdownValue } from '@/components/dropdown/dropdown.types';\n import AdlCheckmark from '@adyen/ui-assets-icons-16/vue/checkmark';\n\n /**\n * Dropdown option element.\n *\n * @example\n * <adl-dropdown-option\n * v-for=\"option in options\"\n * :key=\"option.value\"\n * :label=\"option.label\"\n * :value=\"option.value\"\n * :selected=\"option.selected\"\n * @select=\"onOptionSelected\"\n * />\n */\n export default defineComponent({\n components: { AdlCheckmark },\n inheritAttrs: false,\n props: {\n /**\n * Text to be displayed in the option\n */\n label: { type: String, required: true },\n\n /**\n * Value of the option\n */\n value: { type: [String, Number] as PropType<AdlDropdownValue>, required: true },\n\n /**\n * Indicates if the value is selected. Only one element can be selected at a time.\n */\n selected: { type: Boolean, default: false },\n },\n emits: ['select'],\n setup(props, { emit }) {\n const onOptionSelected = () => {\n const { label, value } = props;\n /**\n * Trigerred when an option is clicked.\n * Indicates which option was selected.\n *\n * @event select\n * @property {object} selectedOption - Selected option\n */\n emit('select', { label, value } as AdlDropdownOptionItem);\n };\n\n const conditionalClasses = computed(() => ({\n 'adl2-dropdown-option--selected': props.selected,\n }));\n\n const ariaSelected = computed(() => (props.selected ? true : null));\n\n return {\n // Values\n conditionalClasses,\n ariaSelected,\n\n // Events\n onOptionSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-option.scss\" />\n","import type { Modifier, StrictModifiers } from '@popperjs/core';\n\ntype ArrowModifier = Modifier<'arrow', unknown>;\ntype ApplyArrowHideModifier = Modifier<'applyArrowHide', unknown>;\ntype SameWidthModifier = Modifier<'sameWidth', unknown>;\ntype TrackPositionModifer = Modifier<'trackPosition', unknown>;\ntype FlipModifer = Modifier<'flip', unknown>;\nexport type ExtendedModifiers =\n | StrictModifiers\n | ArrowModifier\n | ApplyArrowHideModifier\n | SameWidthModifier\n | TrackPositionModifer\n | FlipModifer;\n\nexport interface PopperContainerArrowProp {\n classes?: string[];\n padding?: string;\n}\n\nexport enum PopperContainerPositionBasic {\n TOP = 'top',\n RIGHT = 'right',\n BOTTOM = 'bottom',\n LEFT = 'left',\n}\n\nexport enum PopperContainerPositionExtended {\n AUTO = 'auto',\n AUTO_START = 'auto-start',\n AUTO_END = 'auto-end',\n TOP_START = 'top-start',\n TOP_END = 'top-end',\n RIGHT_START = 'right-start',\n RIGHT_END = 'right-end',\n BOTTOM_START = 'bottom-start',\n BOTTOM_END = 'bottom-end',\n LEFT_START = 'left-start',\n LEFT_END = 'left-end',\n}\n\n// TODO: add more roles as we figure them out\nexport enum PopperContainerAriaRole {\n TOOLTIP = 'tooltip',\n POPOVER = 'dialog',\n}\n\nexport const PopperContainerPosition = { ...PopperContainerPositionBasic, ...PopperContainerPositionExtended };\nexport type PopperContainerPosition = PopperContainerPositionBasic | PopperContainerPositionExtended;\n\nexport type FallbackPositionProp = PopperContainerPosition[] | PopperContainerPosition;\n","import { VueNodeElement } from '../../types/vue-node-element';\nimport { ExtendedModifiers, FallbackPositionProp, PopperContainerArrowProp } from './popper-container.types';\n\n/**\n * Creates an arrow modifier for popper container.\n * If padding is set in arrow props, then implement in modifier.\n * @param arrow arrow element\n * @param arrowProps arrow props\n * @returns ArrowModifier\n */\nexport const getArrowModifier = (arrow: VueNodeElement, arrowProps: PopperContainerArrowProp) => ({\n name: 'arrow',\n options: {\n element: arrow,\n padding: arrowProps.padding || 0,\n },\n});\n\n/**\n * Created an offset modifier for the popper.\n * If an arrow is set (i.e. an arrow is present in popper) then adjust offset accordingly.\n * See popper docs for more info: https://popper.js.org/docs/v2/modifiers/offset/\n * @param arrow arrow props\n * @param offset offset numbered array\n * @returns OffsetModifier\n */\nexport const getOffsetModifier = (arrowProps: PopperContainerArrowProp, offset: number[]) => ({\n name: 'offset',\n options: { offset: arrowProps ? [offset[0], offset[1] + 7] : offset },\n});\n\n/**\n * Creates popover fallback position for popper if it's scheduled to overflow a given boundary.\n * See docs for more info: https://popper.js.org/docs/v2/modifiers/flip/\n * @param fallbackPosition fallbackPosition\n * @returns FlipModifier\n */\nexport const getFlipModifier = (fallbackPosition: FallbackPositionProp) => ({\n name: 'flip',\n options: {\n fallbackPlacements: Array.isArray(fallbackPosition) ? fallbackPosition : [fallbackPosition],\n },\n});\n\n/**\n * Applies a data-hide attribute to arrow element depending on center offset.\n */\nexport const arrowDataHideAttributeModifier: ExtendedModifiers = {\n name: 'applyArrowHide',\n enabled: true,\n phase: 'write',\n fn({ state }) {\n const { arrow } = state.elements;\n\n if (arrow) {\n if (state.modifiersData.arrow.centerOffset !== 0) {\n arrow.setAttribute('data-hide', '');\n } else {\n arrow.removeAttribute('data-hide');\n }\n }\n },\n};\n\nexport const sameWidthModifier: ExtendedModifiers = {\n name: 'sameWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: ({ state }) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.width = `${(state.elements.reference as HTMLElement).offsetWidth}px`;\n },\n};\n","<template>\n <div class=\"b-popper-container\" :role=\"ariaRole\" :aria-label=\"ariaLabel\">\n <slot></slot>\n <span\n v-if=\"arrow\"\n ref=\"arrow\"\n :class=\"arrowClasses\"\n class=\"b-popper-container__arrow\"\n data-testid=\"arrow\"\n ></span>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { createPopper } from '@popperjs/core';\n import type { Instance, PositioningStrategy } from '@popperjs/core';\n import Vue, { defineComponent, PropType } from 'vue';\n import {\n ExtendedModifiers,\n FallbackPositionProp,\n PopperContainerAriaRole,\n PopperContainerArrowProp,\n PopperContainerPosition,\n } from './popper-container.types';\n import {\n arrowDataHideAttributeModifier,\n getArrowModifier,\n getFlipModifier,\n getOffsetModifier,\n sameWidthModifier,\n } from './popper-container.utils';\n import { VueNodeElement } from '@/types/vue-node-element';\n\n /**\n * A wrapper for the 'popper/core' package that overlays a small piece of content near a target element.\n *\n * NOTE: This component should not be used by itself but more implemented by other exported components\n * e.g. Tooltip\n * More info here on the package: https://popper.js.org/docs/v2/\n *\n * * @usage\n * import { PopperContainer } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { PopperContainer },\n * computed: {\n * targetElement() {\n * return this.$refs.tooltipTarget;\n * },\n * },\n * template: `\n * <popper-container\n * :target-element=\"targetElement\"\n * :position=\"position\"\n * >\n * {{ content }}\n * </popper-container>`,\n * }\n */\n export default defineComponent({\n inheritAttrs: false,\n props: {\n /**\n * Defines a string value that provides an accessible name for the popper-container.\n */\n ariaLabel: { type: String, default: null },\n /**\n * Reference to the DOM element or Vue component for positioning\n */\n targetElement: { type: [Element, Object] as PropType<VueNodeElement>, required: true },\n /**\n * Position relative to the target element\n * @see {@link https://popper.js.org/docs/v2/constructors/#placement}\n */\n position: {\n type: String as PropType<PopperContainerPosition>,\n default: PopperContainerPosition.AUTO,\n validator: value => Object.values(PopperContainerPosition).includes(value as PopperContainerPosition),\n },\n /**\n * Instructs popover to be visible outside of the containing container.\n * Useful when component would be used in limited containers like Modal, Side panel, etc.\n * https://popper.js.org/docs/v2/constructors/#strategy\n */\n fixedPositioning: { type: Boolean, default: false },\n /**\n * Indicates if container should have additional arrow, pointing at target element\n * Can be just a boolean flag, or an object with additional configuration:\n * @property {Array<string>} arrow.classes – apply any additional classes to the arrow element.\n * @property {string} arrow.padding – useful when content has rounded corners, https://popper.js.org/docs/v2/modifiers/arrow/#padding\n */\n arrow: { type: Object as PropType<PopperContainerArrowProp | boolean>, default: undefined },\n /**\n * Allows to displace a popper container from its target element.\n * @see {@link https://popper.js.org/docs/v2/modifiers/offset/}\n */\n offset: {\n type: Array as PropType<number[]>,\n default: () => [0, 0],\n validator: (value: number[]) => value?.length === 2,\n },\n /**\n * Instructs popper container to have the same width as target element.\n */\n matchWidth: { type: Boolean, default: false },\n // TODO: When focus trap component made, add this property in\n // /**\n // * Disables wrapping focus-trap component.\n // * Mostly useful for the storybook demo.\n // */\n // disabledFocusTrap: { type: Boolean, default: false },\n /**\n * Custom set of modifiers. Useful for low-level control over Popper behavior in some really complex use cases.\n */\n modifiers: { type: Array, default: null },\n /**\n * Allows to configure to fallback position to the one specified, it could be 'auto' or ['right', 'top', ...].\n * Useful when not using auto as starting placement.\n * https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\n */\n fallbackPosition: {\n type: [Array, String] as PropType<FallbackPositionProp>,\n default: null,\n },\n /**\n * The aria role assigned to the container. Defaults to null, which means it's not set if nothing is passed.\n */\n ariaRole: {\n type: String as PropType<PopperContainerAriaRole>,\n default: null,\n validator: value => Object.values(PopperContainerAriaRole).includes(value as PopperContainerAriaRole),\n },\n },\n data: () => ({\n popper: null,\n emittedPosition: null,\n }),\n computed: {\n strategy(): PositioningStrategy {\n return this.fixedPositioning ? 'fixed' : 'absolute';\n },\n /**\n * Retrieves all the popper modifiers to be applied to popover.\n * Read utils file for more info on each modifier.\n */\n allModifiers(): ExtendedModifiers[] {\n const currentModifiers: ExtendedModifiers[] = this.modifiers || [];\n const allModifiers = [\n // Create arrow modifier if arrow props are set\n ...(this.arrow ? [getArrowModifier(this.$refs.arrow as VueNodeElement, this.arrow)] : []),\n // Create offset modifier\n getOffsetModifier(this.arrow, this.offset),\n // Apply data-hide attribute to arrow element depnding on center offset.\n arrowDataHideAttributeModifier,\n // If matchWidth set to true, set the width of popover to same as target element.\n ...(this.matchWidth ? [sameWidthModifier] : []),\n // Emits position of popover when position is updated.\n {\n name: 'trackPosition',\n enabled: true,\n phase: 'afterWrite',\n fn: ({ state }) => {\n // Add conditional to make sure that event is only emitted for new placement values\n if (this.emittedPosition !== state.placement) {\n this.emittedPosition = state.placement;\n this.$emit('position', this.emittedPosition);\n }\n },\n },\n // Sets Flip modifier if fallbackPosition is set\n ...(this.fallbackPosition ? [getFlipModifier(this.fallbackPosition)] : []),\n ...(currentModifiers || []),\n ];\n return allModifiers as ExtendedModifiers[];\n },\n /**\n * Sets default arrow classes if none have been set.\n */\n arrowClasses(): string[] {\n return this?.arrow?.classes ?? [];\n },\n },\n watch: {\n targetElement(element: VueNodeElement) {\n this.destroyPopper();\n if (this.$el && element) {\n this.initPopper();\n }\n },\n position(position: PopperContainerPosition) {\n this.updatePopperOptions({ placement: position });\n },\n strategy(strategy: PositioningStrategy) {\n this.updatePopperOptions({ strategy });\n },\n async arrow(arrow: PopperContainerArrowProp | boolean) {\n if (arrow) {\n // Wait for the next rendering cycle to make sure that arrow element is rendered, but only when it is displayed\n await this.$nextTick();\n }\n this.updateModifiers();\n },\n offset: 'updateModifiers',\n matchWidth: 'updateModifiers',\n },\n mounted() {\n this.initPopper();\n },\n beforeDestroy() {\n this.destroyPopper();\n },\n methods: {\n initPopper() {\n const popperElement =\n this.targetElement instanceof Vue\n ? (this.targetElement as Vue).$el\n : (this.targetElement as Element);\n this.popper = createPopper<ExtendedModifiers>(popperElement, this.$el as HTMLElement, {\n placement: this.position,\n strategy: this.strategy,\n modifiers: this.allModifiers as ExtendedModifiers[],\n });\n },\n destroyPopper() {\n if (this.popper) {\n (this.popper as Instance).destroy();\n }\n },\n updatePopperOptions(options) {\n if (this.popper) {\n (this.popper as Instance).setOptions(options);\n }\n },\n updateModifiers() {\n this.updatePopperOptions({ modifiers: this.allModifiers });\n },\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./popper-container.scss\" />\n","<template>\n <popper-container\n v-show=\"isDropdownOpen\"\n :target-element=\"targetElement\"\n :position=\"PopperContainerPosition.BOTTOM_START\"\n :offset=\"[0, 8]\"\n match-width\n role=\"listbox\"\n >\n <div :id=\"id\" class=\"adl2-dropdown-options-container\" role=\"listbox\" tabindex=\"-1\" :aria-label=\"ariaLabel\">\n <adl-dropdown-option\n v-for=\"option in items\"\n :key=\"option.value\"\n :label=\"option.label\"\n :value=\"option.value\"\n :selected=\"option.value === selectedValue\"\n @select=\"onOptionSelected\"\n />\n </div>\n </popper-container>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { AdlDropdownOption } from './components/dropdown-option';\n import { AdlDropdownOptionItem, AdlDropdownOptions, AdlDropdownValue } from '../../dropdown.types';\n import { PopperContainer, PopperContainerPosition } from '@/components/popper-container';\n\n /**\n * Dropdown options container.\n * It lists all the available options.\n *\n * @example\n * <adl-dropdown-options-container\n * v-if=\"inputContainerRef\" <!-- Ref to the input to match the width -->\n * :id=\"dropdownOptionsContainerId\"\n * :target-element=\"inputContainerRef\"\n * :aria-label=\"ariaLabel\"\n * :open=\"isDropdownOpen\"\n * :disabled=\"disabled\"\n * :selected=\"value\"\n * :items=\"[{\n * { label: 'Option 1', value: 1 },\n * { label: 'Option 2', value: 2 },\n * }]\"\n * @select=\"onOptionSelected\"\n * />\n */\n export default defineComponent({\n components: {\n AdlDropdownOption,\n PopperContainer,\n },\n inheritAttrs: false,\n props: {\n /**\n * Defines a string value that labels an interactive element.\n */\n ariaLabel: { type: String, default: null },\n\n /**\n * Disables dropdown functionality\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Identifies the listbox whose contents are controlled by the the combobox on which the aria-controls attribute is set.\n */\n id: { type: String, required: true },\n\n /**\n * Indicates if the dropdown is open so that\n * the container can be displayed.\n */\n open: {\n type: Boolean,\n required: true,\n },\n\n /**\n * The option elements to populate the dropdown with.\n * It must be an array of {@see AdlDropdownOptionItem }\n * * @property {string} value.label - Text to be displayed in the option\n * * @property {string,number} value.value - Value of the option\n */\n items: {\n type: Array as PropType<AdlDropdownOptions>,\n required: true,\n },\n\n /**\n * The `input` value.\n * Providing an empty string will select no options.\n * Set to an empty string `''` if you don't want any of the available options to be selected.\n */\n selectedValue: {\n type: [String, Number] as PropType<AdlDropdownValue>,\n default: null,\n },\n\n /**\n * Reference to the DOM element or Vue component for positioning\n * the Dropdown container.\n */\n targetElement: {\n type: PopperContainer.props.targetElement.type,\n required: true,\n },\n },\n emits: ['select'],\n setup(props, { emit }) {\n const isDropdownOpen = computed(() => props.open && !props.disabled);\n const onOptionSelected = (selectedOption: AdlDropdownOptionItem) => {\n /**\n * Triggered when an option is clicked.\n *\n * Indicates the selected option from the \"options\" property.\n * @event select\n * @property {AdlDropdownOptionItem} selectedOption - Selected option that triggered the \"select\" event\n */\n emit('select', selectedOption);\n };\n\n return {\n // Values\n isDropdownOpen,\n\n // Enums\n PopperContainerPosition,\n\n // Events\n onOptionSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-options-container.scss\" />\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 } from 'uuid';\n\n/**\n * Returns a unique identifier optionally prefixed by a custom string\n * @param value - The string to be prepended to the unique identifier\n */\nexport const generateUid = (value: string): string => (value ? `${value}-${v4()}` : v4());\n","<template>\n <div class=\"adl2-dropdown\">\n <adl-dropdown-input-container\n ref=\"inputContainerRef\"\n :aria-label=\"ariaLabel\"\n :combobox-id=\"dropdownOptionsContainerId\"\n :open=\"isDropdownOpen\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :display-value=\"displayValue\"\n @open=\"toggleDropdown\"\n @close=\"toggleDropdown\"\n />\n <adl-dropdown-options-container\n v-if=\"inputContainerRef\"\n :id=\"dropdownOptionsContainerId\"\n :aria-label=\"ariaLabel\"\n :open=\"isDropdownOpen\"\n :disabled=\"disabled\"\n :selected-value=\"value\"\n :items=\"items\"\n :target-element=\"inputContainerRef\"\n @select=\"onOptionSelected\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { AdlDropdownOptionItem, AdlDropdownOptions, AdlDropdownSelectedValue } from './dropdown.types';\n import { AdlDropdownInputContainer } from './components/dropdown-input-container';\n import { AdlDropdownOptionsContainer } from './components/dropdown-options-container';\n import { generateUid } from '@/utils/ts/unique-id';\n\n /**\n * A Dropdown shows a selected option's.\n * Use a dropdown when you want users to select options\n * from a list of pre-defined options.\n *\n * @example\n * import { AdlDropdown } from '@adyen/bento-vue2';\n * import type { AdlDropdownOptions } from '@adyen/bento-vue2'\n *\n * export default {\n * components: { AdlDropdown },\n * template: `\n * <adl-dropdown\n * placeholder=\"Placeholder text\"\n * v-model=\"selectedValue\"\n * items=\"options\"\n * />\n * `,\n * setup() {\n * const selectedValue = ref(2) // Default value\n * const options: AdlDropdownOptions = [\n * { label: 'Option 1', value: 1 },\n * { label: 'Option 2', value: 2 },\n * ];\n * return { options, selectedValue };\n * }\n * }\n */\n export default defineComponent({\n name: 'adl-dropdown',\n components: {\n AdlDropdownInputContainer,\n AdlDropdownOptionsContainer,\n },\n inheritAttrs: false,\n props: {\n /**\n * Defines a string value that labels an interactive element.\n */\n ariaLabel: { type: String, default: null },\n\n /**\n * Disables dropdown functionality\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Specifies a short hint that describes the expected value of the element.\n */\n placeholder: { type: String, default: null },\n\n /**\n * The `input` value.\n * Providing an empty string will select no options.\n * Set to an empty string `''` if you don't want any of the available options to be selected.\n */\n value: {\n type: [String, Number] as PropType<AdlDropdownSelectedValue>,\n default: null,\n },\n\n /**\n * The option elements to populate the dropdown with.\n * It must be an array of {@see AdlDropdownOptionItem }\n * * @property {string} value.label - Text to be displayed in the option\n * * @property {string,number} value.value - Value of the option\n */\n items: {\n type: Array as PropType<AdlDropdownOptions>,\n default: () => [],\n },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const inputContainerRef = ref(null);\n const isDropdownOpen = ref(false);\n const dropdownOptionsContainerId = generateUid('adl-dropdown-options-cotainer');\n\n const displayValue = computed(() => {\n const selectedItem = props.items.find(({ value }) => value === props.value);\n return selectedItem?.label || null;\n });\n\n const toggleDropdown = () => {\n isDropdownOpen.value = !isDropdownOpen.value;\n };\n\n const onOptionSelected = (selectedOption: AdlDropdownOptionItem) => {\n isDropdownOpen.value = false;\n\n /**\n * Triggered when an option is clicked.\n *\n * Updates the selected option from the \"value\" property linked to the v-model.\n * @event input\n * @property {AdlDropdownSelectedValue} selectedOption - Value of the selected option\n */\n // emit('input', newOptions);\n emit('input', selectedOption.value);\n };\n\n return {\n // Values\n isDropdownOpen,\n displayValue,\n dropdownOptionsContainerId,\n\n // Refs\n inputContainerRef,\n\n // Events\n toggleDropdown,\n onOptionSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown.scss\" />\n","<template>\n <div class=\"b-pagination-results-per-page\">\n <bento-typography :el=\"BentoTypographyElement.DIV\">\n <i18n :path=\"translationPathKey\" tag=\"div\" :plural=\"totalCount\">\n <template #itemCount>\n <adl-dropdown\n :id=\"dropdownId\"\n :value=\"itemsPerPage\"\n :items=\"dropdownOptions\"\n class=\"b-pagination-results-per-page__dropdown\"\n :aria-label=\"$t(translationPathKey, { itemCount: itemsPerPage, totalCount })\"\n @input=\"onSelectChange\"\n />\n </template>\n <template v-if=\"!!totalCount\" #totalCount>{{ totalCount }}</template>\n </i18n>\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, ref } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { AdlDropdown } from '@/components/dropdown';\n import { generateUid } from '@/utils/ts/unique-id';\n\n import messages from './messages.json';\n\n const DEFAULT_NUMBER_OF_RESULTS = 50;\n const PREDEFINED_RESULTS_PER_PAGE_VALUES = [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 }, // DEFAULT_NUMBER_OF_RESULTS\n { label: '75', value: 75 },\n { label: '100', value: 100 },\n ];\n\n export default defineComponent({\n name: 'bento-pagination-context-results-per-page',\n i18n: { messages },\n components: {\n AdlDropdown,\n BentoTypography,\n },\n inheritAttrs: false,\n props: {\n /**\n * The amount of items the pager is paging through.\n */\n itemsPerPage: {\n type: Number,\n default: DEFAULT_NUMBER_OF_RESULTS,\n validator: (itemsPerPageValue: number) =>\n PREDEFINED_RESULTS_PER_PAGE_VALUES.some(({ value }) => value === itemsPerPageValue),\n },\n /**\n * The total number of items the pager is paging through.\n */\n totalCount: { type: Number, default: null },\n },\n emits: ['select'],\n setup(props, { emit }) {\n const dropdownId = generateUid('b-pagination-context-number-elements');\n const dropdownOptions = ref(PREDEFINED_RESULTS_PER_PAGE_VALUES);\n\n const onSelectChange = (selectedNumberOfResults: number) => {\n emit('select', selectedNumberOfResults);\n };\n\n const translationPathKey = computed(() => (props.totalCount ? 'showingItemsWithTotal' : 'showingItems'));\n\n return {\n // Values\n dropdownId,\n dropdownOptions,\n translationPathKey,\n\n // Enums\n BentoTypographyElement,\n\n // Events\n onSelectChange,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./pagination-results-per-page.scss\" />\n","<template>\n <div class=\"b-pagination-context\">\n <bento-typography v-if=\"totalPages > 1\" :el=\"BentoTypographyElement.DIV\">\n <i18n path=\"pageOfTotalPages\" tag=\"div\">\n <template #page>\n <adl-dropdown\n :id=\"dropdownId\"\n :value=\"page\"\n :items=\"listOfAvailablePages\"\n :aria-label=\"$t('pageOfTotalPages', { page, totalPages })\"\n class=\"b-pagination-context__dropdown\"\n @input=\"onPageSelectChange\"\n />\n </template>\n <template #totalPages>{{ totalPages }}</template>\n </i18n>\n </bento-typography>\n <bento-typography v-else-if=\"totalPages === 1\" :el=\"BentoTypographyElement.SPAN\">\n {{ $t('pageOneOfOne') }}\n </bento-typography>\n <bento-typography v-else :el=\"BentoTypographyElement.SPAN\">\n {{ $t('pageNumber', { page }) }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { AdlDropdown, AdlDropdownOptionItem } from '@/components/dropdown';\n import { generateUid } from '@/utils/ts/unique-id';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-pagination-context',\n components: {\n AdlDropdown,\n BentoTypography,\n },\n inheritAttrs: false,\n props: {\n /**\n * The current page number of the pager.\n */\n page: {\n type: Number,\n default: 1,\n validator: (value: number) => Number.isFinite(value) && value > 0,\n },\n\n /**\n * The total number of items the pager is paging through.\n */\n totalPages: { type: Number, default: null },\n },\n emits: ['page-selected'],\n setup(props, { emit }) {\n const dropdownId = generateUid('bento-pagination-context-current-page');\n const onPageSelectChange = (selectedPage: string | number) => emit('page-selected', selectedPage);\n\n // Generate a list of pages from 1 to \"totalPages\"\n const transformIntoOption = (value: number): AdlDropdownOptionItem => ({\n label: value.toString(),\n value,\n });\n const transformToPageNumber = (_, index) => index + 1;\n const listOfAvailablePages = computed(() =>\n Array.from(new Array(props.totalPages), transformToPageNumber).map(transformIntoOption)\n );\n\n return {\n // Values\n dropdownId,\n listOfAvailablePages,\n\n // Events\n onPageSelectChange,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./pagination-context.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M4.25 11C4.25 11.4142 4.58579 11.75 5 11.75C5.41421 11.75 5.75 11.4142 5.75 11L5.75 4.99999C5.75 4.58577 5.41421 4.24999 5 4.24999C4.58579 4.24999 4.25 4.58577 4.25 4.99998L4.25 11Z\" clip-rule=\"evenodd\"/><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.5303 5.53031C11.8232 5.23742 11.8232 4.76255 11.5303 4.46965C11.2374 4.17676 10.7626 4.17676 10.4697 4.46965L7.46967 7.46965C7.17678 7.76255 7.17678 8.23742 7.46967 8.53031L10.4697 11.5303C10.7626 11.8232 11.2374 11.8232 11.5303 11.5303C11.8232 11.2374 11.8232 10.7625 11.5303 10.4697L9.06066 7.99998L11.5303 5.53031Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M4.46967 10.4697C4.17678 10.7626 4.17678 11.2374 4.46967 11.5303C4.76256 11.8232 5.23744 11.8232 5.53033 11.5303L8.53033 8.53032C8.82322 8.23743 8.82322 7.76256 8.53033 7.46966L5.53033 4.46966C5.23744 4.17677 4.76256 4.17677 4.46967 4.46966C4.17678 4.76256 4.17678 5.23743 4.46967 5.53032L6.93934 7.99999L4.46967 10.4697Z\" clip-rule=\"evenodd\"/><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.75 4.99999C11.75 4.58578 11.4142 4.24999 11 4.24999C10.5858 4.24999 10.25 4.58578 10.25 4.99999V11C10.25 11.4142 10.5858 11.75 11 11.75C11.4142 11.75 11.75 11.4142 11.75 11L11.75 4.99999Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M10.0303 4.46967C10.3232 4.76256 10.3232 5.23744 10.0303 5.53033L7.56066 8L10.0303 10.4697C10.3232 10.7626 10.3232 11.2374 10.0303 11.5303C9.73744 11.8232 9.26256 11.8232 8.96967 11.5303L5.96967 8.53033C5.67678 8.23744 5.67678 7.76256 5.96967 7.46967L8.96967 4.46967C9.26256 4.17678 9.73744 4.17678 10.0303 4.46967Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M5.96967 11.5303C5.67678 11.2374 5.67678 10.7626 5.96967 10.4697L8.43934 8L5.96967 5.53033C5.67678 5.23744 5.67678 4.76256 5.96967 4.46967C6.26256 4.17678 6.73744 4.17678 7.03033 4.46967L10.0303 7.46967C10.171 7.61032 10.25 7.80109 10.25 8C10.25 8.19891 10.171 8.38968 10.0303 8.53033L7.03033 11.5303C6.73744 11.8232 6.26256 11.8232 5.96967 11.5303Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-pagination-controls\">\n <!-- Navigate to the first page -->\n <bento-button\n :disabled=\"isCurrentPageFirst\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n tertiary\n condensed\n @click=\"navigate(1)\"\n >\n <template #iconLeft>\n <skip-left :svg-title=\"$t('navigateToTheFirstPage')\" />\n </template>\n </bento-button>\n\n <!-- Navigate to the previous page -->\n <bento-button\n :disabled=\"isCurrentPageFirst\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n tertiary\n condensed\n @click=\"navigate(page - 1)\"\n >\n <template #iconLeft>\n <chevron-left :svg-title=\"$t('navigateToThePreviousPage')\" />\n </template>\n </bento-button>\n\n <!-- Navigate to the next page -->\n <bento-button\n :disabled=\"isNextButtonDisabled\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n tertiary\n condensed\n @click=\"navigate(page + 1)\"\n >\n <template #iconLeft>\n <chevron-right :svg-title=\"$t('navigateToTheNextPage')\" />\n </template>\n </bento-button>\n\n <!-- Navigate to the last page -->\n <bento-button\n :disabled=\"isLastPageButtonDisabled\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n tertiary\n condensed\n @click=\"navigate(totalPages)\"\n >\n <template #iconLeft>\n <skip-right :svg-title=\"$t('navigateToTheLastPage')\" />\n </template>\n </bento-button>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import SkipLeft from '@adyen/ui-assets-icons-16/vue/skip-left';\n import SkipRight from '@adyen/ui-assets-icons-16/vue/skip-right';\n import ChevronLeft from '@adyen/ui-assets-icons-16/vue/chevron-left-small';\n import ChevronRight from '@adyen/ui-assets-icons-16/vue/chevron-right-small';\n\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'adl-pagination-controls',\n components: {\n BentoButton,\n SkipLeft,\n SkipRight,\n ChevronLeft,\n ChevronRight,\n },\n inheritAttrs: false,\n props: {\n /**\n * Use to determine if the pager has a \"next page\".\n */\n hasNext: { type: Boolean, default: null },\n\n /**\n * The current page number of the pager.\n */\n page: { type: Number, required: true },\n\n /**\n * The current page number of the pager.\n */\n totalPages: { type: Number, default: null },\n },\n emits: ['navigate'],\n setup(props, { emit }) {\n const isCurrentPageFirst = computed(() => props.page === 1);\n const isCurrentPageLast = computed(() => props.page === props.totalPages);\n const isNextButtonDisabled = computed(() => {\n const hasNoNextPage = !props.hasNext;\n return hasNoNextPage || isCurrentPageLast.value;\n });\n const isLastPageButtonDisabled = computed(() => {\n const hasNoNextPage = !props.hasNext;\n const hasNoTotalPagesNumber = !props.totalPages;\n\n return hasNoNextPage || isCurrentPageLast.value || hasNoTotalPagesNumber;\n });\n\n const navigate = (pageArg: number) => {\n emit('navigate', pageArg);\n };\n\n return {\n // Values\n isNextButtonDisabled,\n isCurrentPageFirst,\n isCurrentPageLast,\n isLastPageButtonDisabled,\n\n // Events\n navigate,\n\n // Enums\n BentoButtonVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./pagination-controls.scss\" />\n","<template>\n <nav :aria-label=\"ariaLabel\" class=\"b-pagination\">\n <bento-pagination-results-per-page\n class=\"b-pagination__results-per-page\"\n :items-per-page=\"size\"\n :total-count=\"totalCount\"\n @select=\"onItemsPerPageChange\"\n />\n\n <div class=\"b-pagination__page-navigator\">\n <bento-pagination-context\n class=\"b-pagination__context\"\n :total-pages=\"totalPages\"\n :page=\"page\"\n :size=\"size\"\n :total-count=\"totalCount\"\n @page-selected=\"onPageSelected\"\n />\n\n <div class=\"b-pagination__divider\"></div>\n\n <bento-pagination-controls\n class=\"b-pagination__controls\"\n :has-next=\"hasNext\"\n :page=\"page\"\n :total-pages=\"totalPages\"\n @navigate=\"navigate\"\n />\n </div>\n </nav>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import BentoPaginationResultsPerPage from './components/pagination-results-per-page/pagination-results-per-page.vue';\n import BentoPaginationContext from './components/pagination-context/pagination-context.vue';\n import BentoPaginationControls from './components/pagination-controls/pagination-controls.vue';\n import messages from './messages.json';\n\n /**\n * Paginiation component to help users page through data sets.\n *\n * There are two ways of doing navigation in this component:\n * 1. (Basic) You tell the component if there is a next page (hasNext)\n * 2. (Enhanced) You tell the component:\n * - How many total items exist (totalCount)\n * - The max number of items that you show/fetch per page (size)\n * - In this case you should not set the hasNext props\n *\n * If you have the data available and opt to use the Enhanced way you get extra controls:\n * - Page dropdown selector\n * - Last page button\n * - \"Showing 10 of 200 items\" text\n *\n * @usage\n * import { BentoPagination } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoPagination },\n * template: `\n * <bento-pagination :has-next=\"isNextPage\" />\n * `,\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-pagination',\n components: {\n BentoPaginationContext,\n BentoPaginationControls,\n BentoPaginationResultsPerPage,\n },\n inheritAttrs: false,\n props: {\n /**\n * A brief description of the purpose of the navigation (for a11y).\n * Omit the term \"navigation\", as the screen reader will read both the role and the contents of the label.\n */\n ariaLabel: { type: String, default: null },\n\n /**\n * Use to determine if the pager has a \"next page\".\n */\n hasNext: { type: Boolean, default: null },\n\n /**\n * The current page number of the pager.\n */\n page: {\n type: Number,\n default: 1,\n validator: (value: number) => Number.isFinite(value) && value > 0,\n },\n\n /**\n * The size of the items the pager is paging through.\n */\n size: {\n type: Number,\n default: 50,\n validator: (itemsPerPageValue: number) => [10, 25, 50, 75, 100].includes(itemsPerPageValue),\n },\n\n /**\n * The total number of items the pager is paging through.\n */\n totalCount: { type: Number, default: null },\n },\n emits: ['navigate', 'items-page', 'update:page', 'update:size'],\n setup(props, { emit }) {\n const totalPages = computed(() =>\n !props.totalCount || !props.size ? null : Math.ceil(props.totalCount / props.size)\n );\n\n const navigate = (pageArg: number) => {\n emit('navigate', pageArg);\n emit('update:page', pageArg);\n };\n\n const onPageSelected = (pageNumber: number) => {\n navigate(pageNumber);\n };\n\n const onItemsPerPageChange = (elements: number) => {\n emit('items-page', elements);\n emit('update:size', elements);\n\n // Always go to first page when the\n // number of items page changes\n navigate(1);\n };\n\n return {\n // Values\n totalPages,\n\n // Events\n navigate,\n onItemsPerPageChange,\n onPageSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./pagination.scss\" />\n","export interface BentoFilterOptions {\n values: Array<unknown>;\n}\n\nexport enum BentoFilterItemType {\n TEXT = 'BentoTextFilter',\n}\n\nexport interface BentoFilterModel {\n alwaysShowNameInLabel?: boolean;\n field: string;\n label: string;\n type: BentoFilterItemType;\n options?: BentoFilterOptions;\n value?: string | null;\n}\n\nexport type BentoFilterBarModel = Array<BentoFilterModel>;\n","import { PopperContainerPosition } from '../popper-container';\n\nexport const BentoPopoverPositions = { ...PopperContainerPosition };\nexport type BentoPopoverPositions = PopperContainerPosition;\n","<template>\n <bento-button :class=\"conditionalClass\" :variant=\"BentoButtonVariant.TERTIARY\" @click=\"$emit('click')\">\n <template #iconLeft>\n <cross-circle-fill-icon svg-title=\"dismiss\" />\n </template>\n </bento-button>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoButton, BentoButtonVariant } from '@/components/button';\n import CrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n\n export default defineComponent({\n name: 'bento-popover-dismiss-button',\n components: { BentoButton, CrossCircleFillIcon },\n inheritAttrs: false,\n props: {\n onImage: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const conditionalClass = computed(() => ({ 'b-popover-dismiss-button--on-image': props.onImage }));\n\n return {\n // Values\n conditionalClass,\n\n // Enums\n BentoButtonVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./popover-dismiss-button.scss\" />\n","<template>\n <popper-container\n class=\"b-popover\"\n :aria-role=\"PopperContainerAriaRole.POPOVER\"\n :aria-label=\"computedAriaLabel\"\n :target-element=\"targetElement\"\n :position=\"position\"\n :offset=\"[0, 2]\"\n :modifiers=\"modifiers\"\n :fixed-positioning=\"fixedPositioning\"\n :disabled-focus-trap=\"disableFocusTrap\"\n :class=\"conditionalClasses\"\n :arrow=\"{ classes: ['b-popover__arrow'] }\"\n >\n <div v-if=\"$slots.image\" class=\"b-popover__image\">\n <div v-if=\"dismissible\" class=\"b-popover__image-dismiss-button\">\n <bento-popover-dismiss-button on-image @click=\"dismissPopover\" />\n </div>\n <slot name=\"image\"></slot>\n </div>\n <div v-if=\"title\" class=\"b-popover__header\">\n <div class=\"b-popover__header-title\">\n <slot v-if=\"$slots.headerIcon\" name=\"headerIcon\"></slot>\n <bento-typography\n strongest\n wide\n :variant=\"BentoTypographyVariant.BODY\"\n :el=\"BentoTypographyElement.SPAN\"\n >\n {{ title }}\n </bento-typography>\n </div>\n <div v-if=\"dismissible && !$slots.image\">\n <bento-popover-dismiss-button @click=\"dismissPopover\" />\n </div>\n </div>\n\n <div v-if=\"$slots.default\" class=\"b-popover__content\">\n <slot></slot>\n </div>\n\n <div v-if=\"actions\" class=\"b-popover__footer\">\n <bento-button-actions :actions=\"actions\" :layout=\"actionsLayout\"></bento-button-actions>\n </div>\n </popper-container>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { PopperContainer, PopperContainerAriaRole } from '@/components/popper-container';\n import { BentoPopoverPositions } from './popover.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoButtonActions, BentoButtonActionsLayout, BentoButtonActionsList } from '@/components/button';\n import BentoPopoverDismissButton from './components/popover-dismiss-button/popover-dismiss-button.vue';\n\n /**\n * Example description of the component...\n *\n * @example\n * import { BentoPopover } from '@adyen/adl-vue-components';\n *\n * export default {\n * components: { BentoPopover },\n * template: `\n * <bento-popover>\n * ...Example code of the component\n * </bento-popover>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-popover',\n components: {\n BentoPopoverDismissButton,\n BentoButtonActions,\n BentoTypography,\n PopperContainer,\n },\n inheritAttrs: false,\n props: {\n /**\n * List of actions that will be used to render the buttons.\n * First element in the list will be rendered as \"primary\".\n * All elements after the first will be rendered as \"secondary\".\n *\n * Each object in the list should have a `title`, an `event` and\n * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.\n *\n * `title`: Button's text.\n *\n * `event`: Event triggered when clicking the Button.\n *\n * `icon`: Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * ```\n * [{\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n default: null,\n },\n\n /**\n * Defines the layout in which the button actions is presented.\n * It can be one of:\n *\n * @values BUTTONS_END\n * @values FILL_CONTAINER\n * @values SPACE_BETWEEN\n * @values VERTICAL_STACK\n */\n actionsLayout: {\n type: String as PropType<BentoButtonActionsLayout>,\n default: BentoButtonActionsLayout.BUTTONS_END,\n validator: (value: BentoButtonActionsLayout) => Object.values(BentoButtonActionsLayout).includes(value),\n },\n\n /**\n * Defines a string value that provides an accessible name for the popover.\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Supports disabling focus trap functionality to avoid scroll into view behavior when we don't need it.\n * */\n disableFocusTrap: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds a \"dismiss\" icon that triggers the \"dismiss\" event.\n */\n dismissible: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Instructs popover to be visible outside of the containing container.\n * Useful when component would be used in limited containers like Modal, Side panel, etc.\n * https://popper.js.org/docs/v2/constructors/#strategy\n */\n fixedPositioning: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Displays the popover in a large size.\n */\n large: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Custom set of modifiers. Useful for low-level control over Popper behavior in some really complex use cases.\n */\n modifiers: { type: Array, default: null },\n\n /**\n * Popover's position relative to the target element.\n * Possible values are:\n * 'auto', 'auto-start', 'auto-end',\n * 'top', 'top-start', 'top-end'\n * 'right', 'right-start', 'right-end'\n * 'bottom', 'bottom-start', 'bottom-end'\n * 'left', 'left-start', 'left-end'\n */\n position: {\n type: String as PropType<BentoPopoverPositions>,\n default: BentoPopoverPositions.TOP,\n validator: (value: BentoPopoverPositions) => Object.values(BentoPopoverPositions).includes(value),\n },\n\n /**\n * Displays the popover in a small size.\n */\n small: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Indicates the title you want to give the popover.\n */\n title: {\n type: String,\n default: null,\n },\n\n /**\n * Popover's target element.\n * The popover will position itself relatively to target element, in specified position.\n */\n targetElement: {\n type: PopperContainer.props?.targetElement.type,\n required: true,\n },\n },\n emits: ['dismiss'],\n setup(props, { emit }) {\n const computedAriaLabel = computed(() => props.ariaLabel || props.title);\n const conditionalClasses = computed(() => ({\n 'b-popover--small': props.small && !props.large,\n 'b-popover--large': props.large && !props.small,\n }));\n\n const dismissPopover = () => emit('dismiss');\n\n return {\n // Values\n conditionalClasses,\n computedAriaLabel,\n\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n PopperContainerAriaRole,\n\n // Events\n dismissPopover,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./popover.scss\" />\n","import { PopperContainerPositionBasic } from '../popper-container';\n\nexport const BentoTooltipPosition = { ...PopperContainerPositionBasic };\nexport type BentoTooltipPosition = PopperContainerPositionBasic;\n\nexport enum BentoTooltipState {\n HIDDEN = 'hidden',\n}\n\nexport interface TooltipInstance {\n target: HTMLElement;\n content: string;\n position: BentoTooltipPosition;\n removeListeners: Array<() => void>;\n}\n","<template>\n <popper-container\n :target-element=\"targetElement\"\n :position=\"position\"\n :offset=\"[0, 4]\"\n :arrow=\"{ classes: ['b-tooltip__arrow'] }\"\n :aria-hidden=\"!isShown\"\n :class=\"conditionalClasses\"\n :tabindex=\"tabIndex\"\n class=\"b-tooltip\"\n :aria-role=\"PopperContainerAriaRole.TOOLTIP\"\n >\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.CAPTION\">\n {{ content }}\n </bento-typography>\n </popper-container>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onBeforeMount, PropType } from 'vue';\n import { generateUid } from '@/utils/ts/unique-id';\n import { BentoTooltipPosition, BentoTooltipState } from './tooltip.types';\n import { PopperContainer, PopperContainerAriaRole } from '../popper-container';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '../typography';\n\n /**\n * If tooltip needs to be rendered as a component instead of a directive (directives/tooltip).\n * When used as a component the position of the tooltip will be according to where it is placed\n * on the page.\n *\n * @usage\n * import { BentoTooltip, BentoTooltipPosition } from '@adyen/ds-vue-components';\n *\n * export default {\n * components: { BentoTooltip },\n * computed: {\n * tooltipTarget() {\n * return this.$refs.tooltipTarget;\n * },\n * },\n * template: `<div>\n * <p ref=\"tooltipTarget\">I am a tooltip target</[div]>\n * <tooltip :position=\"BentoTooltipPosition.TOP\" content=\"tooltip content\" />\n *\n * <!-- It is possible to specify target element -->\n * <tooltip :target-element=\"tooltipTarget\" content=\"tooltip content\" />\n * </div>`,\n * }\n */\n export default defineComponent({\n name: 'bento-tooltip',\n components: { BentoTypography, PopperContainer },\n inheritAttrs: false,\n props: {\n /**\n * Tooltip's target reference to the DOM element or Vue component.\n * The tooltip will position itself relatively to target element, in specified position.\n */\n targetElement: { type: PopperContainer.props?.targetElement.type, required: true },\n /**\n * Tooltip's position relative to the target element.\n * Possible values are: 'top', 'bottom', 'left' and 'right'.\n */\n position: {\n type: String as PropType<BentoTooltipPosition>,\n default: BentoTooltipPosition.TOP,\n validator: value => Object.values(BentoTooltipPosition).includes(value as BentoTooltipPosition),\n },\n /**\n * Tooltip's offset.\n * If specified, the tooltip will have an offset in pixels between it and the target element\n * in specified position.\n */\n offset: { type: Number, default: 0 },\n /**\n * Tooltip's text content.\n */\n content: { type: String, required: true },\n /**\n * Shows / Hides the Tooltip component\n */\n isShown: { type: Boolean, default: false },\n },\n setup(props) {\n let id = 'id-init';\n\n onBeforeMount(() => {\n id = generateUid('tooltip');\n });\n\n const conditionalClasses = computed((): { [x: string]: boolean } => ({\n [`b-tooltip--${BentoTooltipState.HIDDEN}`]: !props.isShown,\n }));\n\n const tabIndex = computed((): number => (props.isShown ? 1 : -1));\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n PopperContainerAriaRole,\n\n // Values\n id,\n conditionalClasses,\n tabIndex,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./tooltip.scss\" />\n","import { computed, Ref } from 'vue';\n\ninterface UseLabelOptions {\n alwaysShowNameInLabel: Ref<boolean>;\n isActive: Ref<boolean>;\n}\n\n/**\n * Generate the text that will be displayed for the filter based on the value and the alwaysShowNameInLabel property.\n *\n * If the filter is active (i.e. has a value) then it will return the \"filterValue\"\n * If the filter is inactive (i.e. has no value) then it will return the \"filterLabel\"\n * If ithe filter is active and \"alwaysShowNameInLabel\" is set to \"true\" it will return \"filterLabel: filterValue\"\n *\n * @param {string} filterLabel Filter text\n * @param {Ref<string>} filterValue Filter value\n * @param {Object} [options] Label options\n * @param {Ref<boolean>} options.alwaysShowNameInLabel Indicates if filterLabel should always be returned\n * @param {Ref<boolean>} options.isActive Indicates if the filter is active (i.e. has a value)\n *\n * @returns {string} Text to be used as label for the filter based on \"filterLabel\" and \"filterValue\"\n */\nexport const useFilterLabel = (filterLabel: string, filterValue: Ref<string>, options: UseLabelOptions) => {\n const label = computed(() => {\n if (options.isActive.value) {\n return options.alwaysShowNameInLabel.value ? `${filterLabel}: ${filterValue.value}` : filterValue.value;\n }\n\n return filterLabel;\n });\n\n return { label };\n};\n","import Vue from 'vue';\nimport { ListenOptions } from '../../types/utils-events';\n\n/**\n * Browser event options object feature support\n * @type {object}\n * @property {boolean} capture\n * @property {boolean} passive\n * @property {boolean} once\n */\nconst optionsSupport = (() => {\n const support = {\n capture: false,\n passive: false,\n once: false,\n };\n\n try {\n // `addEventListener`/`removeEventListener` last argument can be boolean or Object.\n // Old browsers only support boolean, so passing an Object would make them evaluate are true.\n // To detect Object support and each feature, we provide an object with getters.\n // If the getter is invoked means that browser supports that specific feature.\n const options = {\n get capture() {\n support.capture = true;\n return false;\n },\n get passive() {\n support.passive = true;\n return false;\n },\n get once() {\n support.once = true;\n return false;\n },\n };\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n document.addEventListener('test', null, options);\n document.removeEventListener('test', null, options);\n } catch {\n // ignored\n }\n\n return support;\n})();\n\n/**\n * Attach event listeners using options object (implementing browser fallbacks), easy cleanup\n *\n * @param {EventTarget} target - Target where the event will be attached\n * @param {string} type - Event type(s). Accepts multiple types separated by space\n * @param {EventHandler} listener - Handler function\n * @param {ListenOptions}[options] - Listener options\n * @param {boolean} [options.capture] - Capture event listener\n * @param {boolean} [options.passive] - Passive event listener\n * @param {boolean} [options.once] - Auto cleanup after event is fired for the first time\n * @param {boolean} [options.self] - Only trigger if the target of the event is itself\n * @param {Vue} [options.vm] - Auto cleanup when vue instance is destroyed\n * @param {Function} [options.onCleanup] - Callback function invoked after cleaning up\n * @return {Function} Cleanup function that removes the listener\n */\nexport function listen(target: EventTarget, type: string, listener: EventListener, options?: ListenOptions) {\n if (type.indexOf(' ') >= 0) {\n const cleanupBatch = type.split(' ').map(eventType => listen(target, eventType, listener, options));\n return () => cleanupBatch.forEach(cleanup => cleanup && cleanup());\n }\n\n let cleanup;\n let eventOptions: boolean | AddEventListenerOptions;\n let useNativeOnce = false;\n\n // Listener wrapper\n const eventListener = event => {\n if (options?.self && event.target !== target) {\n return;\n }\n try {\n listener(event);\n } finally {\n if (options?.once) {\n cleanup();\n }\n }\n };\n\n // Cleanup function\n cleanup = () => {\n if (!useNativeOnce) {\n target.removeEventListener(type, eventListener, eventOptions);\n }\n options?.vm?.$off('hook:beforeDestroy', cleanup);\n options?.onCleanup?.();\n };\n\n // addEventListener options adjustments\n if (options?.capture) {\n eventOptions = optionsSupport.capture ? { capture: true } : true;\n }\n\n if (options?.passive && optionsSupport.passive) {\n eventOptions = { ...(eventOptions as AddEventListenerOptions), passive: true };\n }\n\n if (options?.once && optionsSupport.once) {\n // `self`, `vm` and `onCleanup` options forces to skip native `once`\n if (!options?.self && !options?.vm && !options?.onCleanup) {\n useNativeOnce = true;\n eventOptions = { ...(eventOptions as AddEventListenerOptions), once: true };\n }\n }\n\n if (options?.vm) {\n if (!(options.vm instanceof Vue)) {\n throw new TypeError('options.vm is not a Vue component instance');\n }\n options.vm.$once('hook:beforeDestroy', cleanup);\n }\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n target.addEventListener(type, eventListener, eventOptions);\n return cleanup;\n}\n","import Vue, { DirectiveOptions } from 'vue';\nimport { listen } from '../utils/ts/events';\nimport Tooltip from '../components/tooltip/tooltip.vue';\nimport { BentoTooltipPosition, TooltipInstance } from '../components/tooltip/tooltip.types';\nimport type { DirectiveBinding } from 'vue/types/options';\n\nconst TooltipComponent = Vue.extend(Tooltip);\nconst tooltipInstances: Array<TooltipInstance> = [];\nconst ariaDescribedByAttr = 'aria-describedby';\n\n// Reusable Tooltip component instance.\nlet tooltip;\n// Global visibility state to prevent tooltips from showing after it being instructed to hide\nlet open = false;\n\n/**\n * Creates a new Tooltip component instance and inserts it into DOM.\n * @param {HTMLElement} el the target element for the Tooltip\n * @internal\n */\nconst createTooltip = (el: HTMLElement) => {\n tooltip = new TooltipComponent({ propsData: { targetElement: el, content: '' } }).$mount();\n // Tooltip is not mountied to any element, so it have to be manually appended to the DOM\n document.body.appendChild(tooltip.$el);\n};\n\n/**\n * Removes Tooltip component instance from the DOM and destroys it.\n * @internal\n */\nconst destroyTooltip = () => {\n document.body.removeChild(tooltip.$el);\n tooltip.$destroy();\n tooltip = undefined;\n};\n\n/**\n * Returns tooltip position based on the specified argument.\n * By default returns 'top' if no argument is specified.\n * @param {DirectiveBinding} binding Directive binding object.\n * @returns {string} Tooltip position.\n * @internal\n */\nconst getTooltipPosition = (binding: DirectiveBinding): BentoTooltipPosition =>\n Object.values(BentoTooltipPosition).includes(binding.arg as BentoTooltipPosition)\n ? (binding.arg as BentoTooltipPosition)\n : BentoTooltipPosition.TOP;\n\n/**\n * Get the correct Tooltip instance for the given target element\n * @param {HTMLElement} el the target element for the Tooltip\n * @returns\n */\nconst getTooltipInstanceForTarget = (el: HTMLElement): TooltipInstance =>\n tooltipInstances.find(\n ctx =>\n // isEqualNode doesn't work correct for svg element, hence the second check here\n ctx.target.isEqualNode(el) && ctx.target === el\n );\n\n/**\n * On mouse enter event updates tooltip with correct content and position, and shows tooltip.\n * @param {?HTMLElement} el - Target element\n * @internal\n */\nconst showTooltip = (el?: HTMLElement) => {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n\n // If tooltip content is empty – do not show the tooltip\n if (!tooltipInstance.content || !el) {\n return;\n }\n\n if (!el.getAttribute(ariaDescribedByAttr)) {\n el.setAttribute(ariaDescribedByAttr, tooltip.id);\n }\n\n open = true;\n tooltip.content = tooltipInstance.content;\n tooltip.position = tooltipInstance.position;\n\n // Do calculations on a next tick, otherwise tooltip position calculations will be wrong\n Vue.nextTick(() => {\n // Do not open tooltip if it has been instructed to hide in process\n if (!open) {\n return;\n }\n tooltip.targetElement = el;\n tooltip.isShown = true;\n });\n};\n\n/**\n * On mouse leave event hides the tooltip.\n * @param {?HTMLElement} el - Target element\n * @internal\n */\nconst hideTooltip = (el?: HTMLElement) => {\n open = false;\n if (el && el.getAttribute(ariaDescribedByAttr) === tooltip.id) {\n el.removeAttribute(ariaDescribedByAttr);\n }\n tooltip.isShown = false;\n};\n\n/**\n * This directive allows you to bind a tooltip to an element.\n * Tooltip can be configured to be shown in one of four positions: `top`, `left`, `right` and `bottom`.\n *\n * @example\n * import { BentoTooltipDirective as BentoTooltip, TooltipPosition } from '@adyen/ds-vue-components';\n *\n * export default {\n * directives: { BentoTooltip },\n * methods: {\n * contentExpression() {\n * return 'tooltip content';\n * },\n * },\n * template: `<div>\n * <div v-adl-tooltip:left=\"'tooltip content'\"></div>\n * <div v-adl-tooltip:[TooltipPosition.BOTTOM]=\"'bottom tooltip content'\"></div>\n *\n * <!-- If you don't specify the position then by default it's `TooltipPosition.TOP` -->\n * <div v-adl-tooltip=\"'tooltip content'\"></div>\n *\n * <!-- Tooltip content can also be a data property or a method or a computed property as well -->\n * <div v-adl-tooltip=\"contentExpression()\"></div>\n * </div>`,\n * };\n */\nconst TooltipDirective: DirectiveOptions = {\n bind(el, binding) {\n // Create Tooltip component singleton instance\n if (tooltipInstances.length === 0) {\n createTooltip(el);\n }\n\n const show = () => showTooltip(el);\n const hide = () => hideTooltip(el);\n\n // Create and store context object, which has directive related handlers and content.\n const tooltipInstance: TooltipInstance = {\n target: el,\n content: binding.value,\n position: getTooltipPosition(binding),\n removeListeners: [\n listen(el, 'mouseenter', show),\n listen(el, 'mouseleave', hide),\n listen(el, 'focus', show),\n listen(el, 'blur', hide),\n ],\n };\n\n tooltipInstances.push(tooltipInstance);\n },\n update(el, binding) {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n\n // Update tooltip content value if it is changed\n if (tooltipInstance.content !== binding.value) {\n tooltipInstance.content = binding.value;\n\n // If tooltip is currently shown for current element – update tooltip's content value\n if (tooltip.isShown && tooltip.targetElement.isEqualNode(el)) {\n if (!tooltipInstance.content) {\n tooltip.isShown = false;\n } else {\n tooltip.content = binding.value;\n }\n }\n }\n\n // Update tooltip position if it is changed\n if (tooltipInstance.position !== binding.arg) {\n const position = getTooltipPosition(binding);\n tooltipInstance.position = position;\n tooltip.position = position;\n }\n },\n unbind(el) {\n const context = getTooltipInstanceForTarget(el);\n\n context.removeListeners.forEach(removeListener => {\n removeListener();\n });\n\n // If el is removed while tooltip is displayed, the tooltip doesnt hide as\n // there is no el to trigger mouseleave/blur.\n hideTooltip(el);\n\n tooltipInstances.splice(tooltipInstances.indexOf(context), 1);\n\n // If all the elements using the directive are removed, then no point having\n // the component on the page.\n if (tooltipInstances.length === 0) {\n destroyTooltip();\n }\n },\n};\n\nexport default TooltipDirective;\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.4697 12.5303C11.7626 12.8232 12.2374 12.8232 12.5303 12.5303C12.8232 12.2374 12.8232 11.7626 12.5303 11.4697L9.06066 8L12.5303 4.53033C12.8232 4.23744 12.8232 3.76256 12.5303 3.46967C12.2374 3.17678 11.7626 3.17678 11.4697 3.46967L8 6.93934L4.53033 3.46967C4.23744 3.17678 3.76256 3.17678 3.46967 3.46967C3.17678 3.76256 3.17678 4.23744 3.46967 4.53033L6.93934 8L3.46967 11.4697C3.17678 11.7626 3.17678 12.2374 3.46967 12.5303C3.76256 12.8232 4.23744 12.8232 4.53033 12.5303L8 9.06066L11.4697 12.5303Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","<template>\n <div class=\"b-base-filter\" :class=\"conditionalClasses\">\n <bento-button-group v-bento-tooltip-directive=\"isTooltipVisible ? label : null\">\n <bento-button ref=\"filterButtonRef\" condensed :variant=\"buttonVariant\" @click=\"onClickFilter\">\n {{ displayLabel }}\n </bento-button>\n <bento-button v-if=\"isActive\" condensed :variant=\"buttonVariant\" @click=\"onClickDismissFilter\">\n <template #iconLeft>\n <cross-icon svg-title=\"dismiss\" />\n </template>\n </bento-button>\n </bento-button-group>\n\n <bento-popover\n v-if=\"isOpen && filterButtonRef\"\n :target-element=\"filterButtonRef\"\n :position=\"BentoPopoverPositions.BOTTOM_START\"\n >\n <div>\n <slot></slot>\n </div>\n <div class=\"b-base-filter__popover-footer\">\n <bento-button condensed :variant=\"BentoButtonVariant.SECONDARY\" @click=\"onClickClear\">\n {{ $t('clear') }}\n </bento-button>\n <bento-button condensed :disabled=\"disableApplyButton\" @click=\"onClickApply\">{{\n $t('apply')\n }}</bento-button>\n </div>\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, ref, toRefs } from 'vue';\n import { BentoButton, BentoButtonGroup, BentoButtonVariant } from '@/components/button';\n import { BentoPopover, BentoPopoverPositions } from '@/components/popover';\n import { BentoTooltipPosition } from '@/components/tooltip';\n import { useFilterLabel } from './composables';\n import BentoTooltipDirective from '@/directives/tooltip';\n import CrossIcon from '@adyen/ui-assets-icons-16/vue/cross';\n import messages from './messages.json';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-base-filter',\n components: {\n BentoButton,\n BentoButtonGroup,\n BentoPopover,\n CrossIcon,\n },\n directives: { BentoTooltipDirective },\n inheritAttrs: false,\n props: {\n /**\n * Display the \"label\" prop alongside value when the filter is active\n *\n * E.g.\n * label: \"Company\"\n * value: \"Adyen\"\n *\n * \"Company: Adyen\"\n */\n alwaysShowNameInLabel: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Disable the apply button\n */\n disableApplyButton: {\n type: Boolean,\n deafault: false,\n },\n\n /**\n * Filter name/key referencing the actual property name in the data set.\n * Should be unique per filter bar.\n */\n field: {\n type: String,\n required: true,\n },\n\n /**\n * Label text to be displayed\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Shows/hides the filter's popover content\n */\n isOpen: {\n type: Boolean,\n required: true,\n },\n\n /**\n * Current value of the filter\n */\n value: {\n type: String,\n default: null,\n },\n },\n emits: ['apply', 'clear', 'open', 'close', 'dismiss'],\n setup(props, { emit }) {\n const filterButtonRef = ref(null);\n\n // Active when the value is not undefined/null\n const isActive = computed(() => props.value != null);\n\n // Only display the tooltip when it's active and doesn't display the label in the text (i.e alwaysShowNameInLabel is false)\n const isTooltipVisible = computed(() => !props.alwaysShowNameInLabel && isActive.value);\n\n const { value, alwaysShowNameInLabel } = toRefs(props);\n const { label: displayLabel } = useFilterLabel(props.label, value, { alwaysShowNameInLabel, isActive });\n\n const onClickClear = () => emit('clear');\n const closePopover = () => emit('close');\n const onClickFilter = () => {\n if (props.isOpen) {\n closePopover();\n } else {\n emit('open');\n }\n };\n const onClickDismissFilter = () => {\n closePopover();\n emit('dismiss');\n };\n const onClickApply = () => {\n closePopover();\n emit('apply');\n };\n\n const conditionalClasses = computed(() => ({\n 'b-base-filter--inactive': !isActive.value,\n }));\n\n // Change filter looks based in it's active state\n const buttonVariant = computed(() =>\n isActive.value ? BentoButtonVariant.PRIMARY : BentoButtonVariant.SECONDARY\n );\n\n return {\n displayLabel,\n buttonVariant,\n isTooltipVisible,\n isActive,\n conditionalClasses,\n\n // Enums\n BentoPopoverPositions,\n BentoTooltipPosition,\n\n // Events\n onClickFilter,\n onClickDismissFilter,\n onClickApply,\n onClickClear,\n\n // Refs\n filterButtonRef,\n\n // Enums\n BentoButtonVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./base-filter.scss\"></style>\n","export enum BentoInputFieldVariant {\n DEFAULT = 'default',\n PAYMENT_METHOD = 'payment-method',\n STATIC_VALUE = 'static-value',\n}\n\nexport enum BentoInputFieldStaticValuePosition {\n START = 'start',\n END = 'end',\n}\n\nexport enum BentoInputFieldStateClass {\n DISABLED = 'disabled',\n ERROR = 'error',\n}\n","<template>\n <div class=\"b-input-field\" data-testid=\"input-text-container\" :class=\"inputFieldConditionalClasses\">\n <label v-if=\"$slots.default\" class=\"b-input-field__label\" data-testid=\"input-field-label\" @click=\"focusInput\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.BODY\" stronger>\n <slot></slot>\n </bento-typography>\n </label>\n\n <div class=\"b-input-field__input-box\" :aria-disabled=\"disabled\">\n <!-- Optional Icon for Default text variant -->\n <span\n v-if=\"variant === BentoInputFieldVariant.DEFAULT && $slots.defaultIconBefore\"\n aria-hidden=\"true\"\n class=\"b-input-field__default-icon-before\"\n >\n <slot name=\"defaultIconBefore\" />\n </span>\n\n <!-- Mandatory Icon for Payment Method variant -->\n <span\n v-if=\"variant === BentoInputFieldVariant.PAYMENT_METHOD && $slots.paymentMethod\"\n aria-hidden=\"true\"\n class=\"b-input-field__payment-method\"\n >\n <slot name=\"paymentMethod\" />\n </span>\n\n <!-- Static Value at start -->\n <bento-typography\n v-if=\"shouldDisplayStaticValueAtStart\"\n class=\"b-input-field__static-value b-input-field__static-value--start\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"staticValue\" />\n </bento-typography>\n\n <!-- TODO: to fix a11y, removing static aria-label -->\n <input\n ref=\"inputFieldElement\"\n class=\"b-input-field__input\"\n aria-label=\"input-field\"\n type=\"text\"\n :value=\"value\"\n :disabled=\"disabled\"\n @input=\"onInput\"\n />\n <span\n v-if=\"$slots.iconAfter\"\n aria-hidden=\"true\"\n class=\"b-input-field__icon-after\"\n data-testid=\"input-text__icon-after\"\n >\n <slot name=\"iconAfter\" />\n </span>\n\n <!-- Static Value at the end -->\n <bento-typography\n v-if=\"shouldDisplayStaticValueAtEnd\"\n class=\"b-input-field__static-value b-input-field__static-value--end\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"staticValue\" />\n </bento-typography>\n </div>\n\n <span class=\"b-input-field__description\" @click=\"focusInput\">\n <bento-typography\n v-if=\"$slots.description\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"description\" />\n </bento-typography>\n </span>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import {\n BentoInputFieldStateClass,\n BentoInputFieldStaticValuePosition,\n BentoInputFieldVariant,\n } from '@/components/input-field/input-field.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n export default defineComponent({\n name: 'bento-input-field',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Disables the possibility of changing value in the input-field\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * Adds error validation class for outlining input-field\n */\n error: {\n type: Boolean,\n default: false,\n },\n /**\n * Static text that displayed before or after input value\n * Applicable to the Static Value variant\n */\n staticValue: {\n type: String,\n default: '',\n },\n /**\n * Position of Static Value before or after input value\n */\n staticValuePosition: {\n type: String as PropType<BentoInputFieldStaticValuePosition>,\n default: BentoInputFieldStaticValuePosition.START,\n },\n /**\n * Text displayed as the value of the input-field\n */\n value: {\n type: String,\n default: '',\n },\n /**\n * Describes the different variants for the input element\n */\n variant: {\n type: String as PropType<BentoInputFieldVariant>,\n default: BentoInputFieldVariant.DEFAULT,\n },\n },\n emits: ['input'],\n setup(props, { slots, emit }) {\n const inputFieldElement = ref(null);\n\n const shouldShowStaticValue = computed(\n () => props.variant === BentoInputFieldVariant.STATIC_VALUE && slots.staticValue\n );\n\n const shouldDisplayStaticValueAtStart = computed(\n () =>\n shouldShowStaticValue.value &&\n props.staticValuePosition === BentoInputFieldStaticValuePosition.START\n );\n const shouldDisplayStaticValueAtEnd = computed(\n () =>\n shouldShowStaticValue.value && props.staticValuePosition === BentoInputFieldStaticValuePosition.END\n );\n\n const inputFieldConditionalClasses = computed(() => ({\n [`b-input-field--${BentoInputFieldStateClass.DISABLED}`]: props.disabled,\n [`b-input-field--${BentoInputFieldStateClass.ERROR}`]: props.error,\n }));\n\n const onInput = (event: Event) => {\n if (!props.disabled) {\n /**\n * Triggered when input value is changed\n *\n * @event input\n * @property {String} inputValue - the updated input-field value\n */\n emit('input', (event.target as HTMLInputElement).value);\n }\n };\n\n const focusInput = () => {\n inputFieldElement.value.focus();\n };\n\n return {\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n BentoInputFieldVariant,\n\n // Functions\n onInput,\n focusInput,\n\n // Values\n inputFieldConditionalClasses,\n inputFieldElement,\n shouldDisplayStaticValueAtStart,\n shouldDisplayStaticValueAtEnd,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./input-field.scss\" />\n","<template>\n <bento-base-filter\n v-bind=\"$props\"\n :is-open=\"isFilterOpen\"\n :disable-apply-button=\"isApplyButtonDisabled\"\n @apply=\"updateFilter\"\n @clear=\"clearFilter\"\n @close=\"closeFilter\"\n @dismiss=\"dismissFilter\"\n @open=\"openFilter\"\n >\n <div\n class=\"b-text-filter\"\n data-testid=\"b-text-filter-content\"\n @keydown.enter=\"updateFilter\"\n @keydown.esc=\"closeFilter\"\n >\n <bento-input-field ref=\"inputTextRef\" v-model=\"internalValue\">\n {{ label }}\n </bento-input-field>\n </div>\n </bento-base-filter>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, nextTick, ref } from 'vue';\n import { BentoBaseFilter } from '../base-filter';\n import { BentoInputField } from '@/components/input-field';\n\n export default defineComponent({\n name: 'bento-text-filter',\n components: {\n BentoBaseFilter,\n BentoInputField,\n },\n inheritAttrs: false,\n props: {\n /**\n * Display the \"label\" prop alongside its \"value\" when the filter is active\n *\n * E.g.\n * label: \"Company\"\n * value: \"Adyen\"\n *\n * \"Company: Adyen\"\n */\n alwaysShowNameInLabel: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Filter name/key referencing the actual property name in the data set.\n * Should be unique per filter bar.\n */\n field: {\n type: String,\n required: true,\n },\n\n /**\n * Label text to be displayed\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Current value of the filter\n */\n value: {\n type: String,\n default: null,\n },\n },\n emits: ['update', 'dismiss'],\n setup(props, { emit }) {\n const internalValue = ref(props.value);\n const isFilterOpen = ref(false);\n const inputTextRef = ref(null);\n\n // Computed\n const isApplyButtonDisabled = computed(() => internalValue.value === props.value);\n\n const closeFilter = () => {\n isFilterOpen.value = false;\n };\n\n const clearFilter = () => {\n internalValue.value = null;\n };\n\n const openFilter = () => {\n isFilterOpen.value = true;\n internalValue.value = props.value;\n\n // TODO: Focus in the child input without calling the method. Focus trap will do this\n nextTick(() => inputTextRef.value.focusInput());\n };\n\n const dismissFilter = () => {\n internalValue.value = null;\n emit('dismiss', { ...props, value: internalValue.value });\n };\n\n const updateFilter = () => {\n isFilterOpen.value = false;\n\n // TODO: Set focus back on the button. Focus trap will do this\n\n if (internalValue.value) {\n emit('update', { ...props, value: internalValue.value });\n } else {\n dismissFilter();\n }\n };\n\n return {\n // values\n internalValue,\n isFilterOpen,\n isApplyButtonDisabled,\n\n // refs\n inputTextRef,\n\n // actions\n updateFilter,\n clearFilter,\n openFilter,\n closeFilter,\n dismissFilter,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./text-filter.scss\" />\n","<template>\n <div class=\"b-filter-bar\">\n <component\n :is=\"filter.type\"\n v-for=\"filter in value\"\n :key=\"filter.field\"\n :field=\"filter.field\"\n :value=\"filter.value\"\n :label=\"filter.label\"\n :always-show-name-in-label=\"filter.alwaysShowNameInLabel\"\n @update=\"updateFilterHandler\"\n @dismiss=\"dismissFilterHandler\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import { BentoFilterBarModel, BentoFilterModel } from './filter-bar.types';\n import BentoTextFilter from './components/text-filter/text-filter.vue';\n\n /**\n * The filter bar filters item lists and tables according to various filter criteria.\n *\n * @example\n * import { BentoFilterBar } from '@adyen/bento-vue2'\n *\n * export default {\n * components: { BentoFilterBar },\n * data: () => ({\n * filters: [{\n * field: 'name',\n * label: 'Name',\n * value: null,\n * type: FilterType.TEXT,\n * }]\n * }),\n * template: `\n * <bento-filter-bar\n * v-model=\"filter\"\n * />\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-filter-bar',\n components: {\n BentoTextFilter,\n },\n inheritAttrs: false,\n props: {\n /**\n * Array of filters based on {@see FilterBarModel}.\n * Each one of the elements in the array correspond to a filter that will\n * be created and rendered in the FilterBar.\n *\n * Can be used with v-model or independently with the @input event.\n *\n * @example\n * [{\n * field: 'company',\n * label: 'Company',\n * value: '200',\n * alwaysShowNameInLabel: true,\n * type: FilterType.TEXT,\n * }, {\n * field: 'name',\n * label: 'Name',\n * value: null,\n * type: FilterType.TEXT,\n * }]\n */\n value: {\n type: Array as PropType<BentoFilterBarModel>,\n default: null,\n },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const updateFilterHandler = (updatedFilter: BentoFilterModel) => {\n const filterIndex = props.value.findIndex(filter => filter.field === updatedFilter.field);\n const newFilters = props.value.slice();\n newFilters[filterIndex].value = updatedFilter.value;\n\n emit('input', newFilters);\n };\n\n const dismissFilterHandler = (dismissedFilter: BentoFilterModel) => {\n updateFilterHandler(dismissedFilter);\n };\n\n return {\n dismissFilterHandler,\n updateFilterHandler,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./filter-bar.scss\" />\n","import { BentoPagination } from '../pagination';\n\nexport interface BentoColumn {\n field: string;\n label: string;\n width?: number;\n minWidth?: number;\n flex?: number;\n sortable?: boolean;\n padding?: {\n left?: boolean;\n right?: boolean;\n };\n}\n\nexport enum BentoDatagridStyleState {\n OUTLINE = 'outline',\n}\n\nexport enum BentoDatagridSortDirection {\n ASCENDING = 'asc',\n DESCENDING = 'desc',\n}\n\nexport interface BentoDatagridSortByColumn {\n field: BentoColumn['field'];\n direction: BentoDatagridSortDirection;\n}\n\nexport interface BentoDatagridDataItem {\n id?: string;\n [fieldName: string]: unknown;\n}\n\nexport type BentoDatagridData = BentoDatagridDataItem[];\n\nexport type BentoDatagridDataItemId = string | number;\n\nexport type BentoDatagridGetDataItemIdFn = (item: BentoDatagridDataItem) => BentoDatagridDataItemId;\n\nexport type BentoDatagridIsDataItemDisabledFn = (item: BentoDatagridDataItem) => boolean;\n\nexport type BentoDatagridPaginationProps = InstanceType<typeof BentoPagination>['$props'];\n","import { computed, reactive, Ref, toRefs, watchEffect } from 'vue';\nimport { listen } from '../../../utils/ts/events';\nimport { BentoColumn } from '../data-grid.types';\n\n/**\n * Contains all the resize methods and logic to allow users to resize column widths.\n * We listen for 3 main events:\n * - startResize: when the user clicks on a column divider.\n * - onResize: the tracking of the user dragging the columns divider left or right.\n * - stopResize: when the user fires the mouseup event and the column needs to be resized.\n *\n * With these 3 events we can track and store users manually changing column width.\n *\n * @param columns an array of columns definitions\n * @returns all resize refs, variables and methods\n */\nexport const useResizer = (columns: Ref<BentoColumn[]>, emit: (event: string, ...args: unknown[]) => void) => {\n // Initalise resize refs, reactive obects and computed variables\n // Set up column refs for each column header identified by the key\n const colKeyLookup = columns.value.reduce((acc, col) => {\n acc[col.field] = null;\n return acc;\n }, {});\n const columnsRefs = reactive(colKeyLookup);\n const allColumnRefs = toRefs(columnsRefs);\n\n // Setup the reactive resize data object to be used in all the event methods\n const defaultResizedColumnWidths = computed(() =>\n Object.fromEntries(columns.value.map(({ field, width, minWidth }) => [field, { width, minWidth }]))\n );\n\n const resizeData = reactive({\n resizingColumnField: '',\n offsetLeft: 0,\n stepPositionX: 0,\n resizedColumnsWidths: defaultResizedColumnWidths.value,\n });\n // eslint-disable-next-line no-return-assign\n watchEffect(() => (resizeData.resizedColumnsWidths = defaultResizedColumnWidths.value));\n\n // Intialise resize methods\n let removeMouseMoveResizeListener: () => void = null;\n let removeMouseUpResizeListener: () => void = null;\n\n // When the user is resizing the column keep track of mouse position and update column width\n const onResizeColumn = (event: MouseEvent) => {\n const sizeChange = event.clientX - resizeData.stepPositionX;\n const currResizingColumnField = resizeData.resizingColumnField;\n\n const resizedColumnWidth = resizeData.resizedColumnsWidths[currResizingColumnField].width + sizeChange;\n // If the column width is more than the minWidth set the new resized width or else use the minWidth\n resizeData.resizedColumnsWidths[currResizingColumnField].width =\n resizedColumnWidth > resizeData.resizedColumnsWidths[currResizingColumnField].minWidth\n ? resizedColumnWidth\n : resizeData.resizedColumnsWidths[currResizingColumnField].minWidth;\n\n resizeData.stepPositionX = event.clientX;\n };\n\n // When the user fires the mouse up event, set the resizing column width\n const stopResize = () => {\n removeMouseMoveResizeListener?.();\n removeMouseUpResizeListener?.();\n\n if (resizeData?.resizingColumnField) {\n /**\n * Triggered when a column is resized\n *\n * @event column-resize\n * @property {field: string; width: number;} resizedColumn - the resized columns field name and new width.\n */\n emit('column-resize', {\n field: resizeData.resizingColumnField,\n width: resizeData.resizedColumnsWidths[resizeData.resizingColumnField].width,\n });\n }\n\n // Reset all resize vars back to defaults\n removeMouseMoveResizeListener = null;\n removeMouseUpResizeListener = null;\n resizeData.resizingColumnField = '';\n resizeData.stepPositionX = null;\n };\n\n // When the user interacts with the column resizer, set it's start position and the column we are interacting with\n const startResize = (hasResizableColumns: boolean, field: BentoColumn['field'], event: MouseEvent) => {\n event.preventDefault();\n if (hasResizableColumns) {\n if (event.buttons !== 1) {\n stopResize();\n return;\n }\n\n resizeData.resizingColumnField = field;\n resizeData.offsetLeft = columnsRefs?.[field][0].getBoundingClientRect().right;\n resizeData.stepPositionX = event.clientX;\n\n removeMouseMoveResizeListener = listen(window, 'mousemove', onResizeColumn);\n removeMouseUpResizeListener = listen(window, 'mouseup', stopResize);\n }\n };\n\n return { resizeData, allColumnRefs, startResize };\n};\n","import { computed, ref } from 'vue';\nimport { MaybeRef } from '../../../../types/maybe-ref';\nimport { BentoColumn } from '../../data-grid.types';\nimport { CalculateColumnWidthOptions, FlexColumnLookup } from './useCalculateColumnWidth.types';\n\n// Default constants\nexport const DEFAULT_COLUMN_WIDTH = 100;\nexport const DEFAULT_COLUMN_MIN_WIDTH = 50;\nexport const DATAGRID_SELECT_FIELD_NAME = 'b-select';\n\n/**\n * For fluid width caclulations we adhere to the caclulations done for the CSS flexbox:\n * https://drafts.csswg.org/css-flexbox-1/#resolve-flexible-lengths\n *\n * @param initialFreeSpace the amount of freespace to allow flex columns within\n * @param totalFlexUnits the total amount of flex units to allocate\n * @param flexCols an array of columns with a flex unit assigned to them\n * @returns a keyed object of columns and their computed widths\n */\nconst computeFlexColumnsWidth = (initialFreeSpace: number, totalFlexUnits: number, flexCols: BentoColumn[]) => {\n const flexColumnsLookup: FlexColumnLookup = {};\n const frozenColumnKeys: BentoColumn['field'][] = [];\n\n const freezeColumn = (field: BentoColumn['field']) => {\n const value = flexColumnsLookup[field];\n if (value && value.frozen !== true) {\n flexColumnsLookup[field].frozen = true;\n frozenColumnKeys.push(field);\n }\n };\n\n // Step 5 of https://drafts.csswg.org/css-flexbox-1/#resolve-flexible-lengths\n function processFlexItems() {\n // 5a: If all the flex items on the line are frozen, free space has been distributed.\n if (frozenColumnKeys.length === flexCols.length) {\n return;\n }\n\n const violationsLookup: {\n min: Record<BentoColumn['field'], boolean>;\n max: Record<BentoColumn['field'], boolean>;\n } = { min: {}, max: {} };\n\n let remainingFreeSpace = initialFreeSpace;\n let flexUnits = totalFlexUnits;\n let totalViolation = 0;\n\n // 5b: Calculate the remaining free space\n frozenColumnKeys.forEach(field => {\n remainingFreeSpace -= flexColumnsLookup[field].computedWidth;\n flexUnits -= flexColumnsLookup[field].flex;\n });\n\n for (let i = 0, flexColsLength = flexCols.length; i < flexColsLength; i += 1) {\n const column = flexCols[i];\n\n // If this column is frozen no need to re-recalculate it's width\n if (flexColumnsLookup[column.field] && flexColumnsLookup[column.field].frozen === true) {\n // NOTE: the following eslint rule was disabled because we check each column's frozen status\n // and if one exists we need to keep recursively caclulating the flex column widths.\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // 5c: Distribute remaining free space proportional to the flex factors\n const widthPerFlexUnit = remainingFreeSpace / flexUnits;\n let computedWidth = widthPerFlexUnit * column.flex;\n\n // 5d: Fix minWidth violations\n if (computedWidth < column.minWidth) {\n totalViolation += column.minWidth - computedWidth;\n computedWidth = column.minWidth;\n violationsLookup.min[column.field] = true;\n }\n\n flexColumnsLookup[column.field] = {\n frozen: false,\n computedWidth,\n flex: column.flex,\n };\n }\n\n // 5e: Freeze over-flexed items\n if (totalViolation > 0) {\n // Freeze all the items with minWidth violations\n Object.keys(violationsLookup.min).forEach(field => {\n freezeColumn(field);\n });\n } else {\n // Freeze all items\n flexCols.forEach(({ field: key }) => {\n freezeColumn(key);\n });\n }\n\n // 5f: Return to the start of this loop\n processFlexItems();\n }\n\n processFlexItems();\n\n return flexColumnsLookup;\n};\n\n/**\n * Calculates the width of the columns using width, minWidth and/or a fluid number.\n *\n * @param columns an array of column definitions\n * @param gridWidth the width of the data grid\n * @param options optional options for the calculator to be aware of.\n */\nexport const useCalculateColumnWidth = (\n newColumns: MaybeRef<BentoColumn[]>,\n newGridWidth: MaybeRef<number>,\n options?: CalculateColumnWidthOptions\n) => {\n const columns = ref(newColumns);\n const gridWidth = ref(newGridWidth);\n const caclulatedWidths = computed(() => {\n // Setup vars\n const flexCols = [];\n let totalFlexUnits = 0;\n let widthAllocatedBeforeFlex = 0;\n // reduce columns into keyed object\n const columnsLookup: {\n [columnKey: string]: BentoColumn;\n } = {};\n let columnDefs: BentoColumn[] = columns.value;\n // Prepend a column if needs selecting functionality\n if (options?.hasSelectableColumn.value) {\n columnDefs = [{ field: DATAGRID_SELECT_FIELD_NAME, label: '', width: 40 }, ...columnDefs];\n }\n\n // For the non-flex columns, compute their width\n // For the flex columns, compute there minimum width and how much width must be allocated during the flex allocation\n columnDefs.forEach(col => {\n const fluidCol: BentoColumn = { ...col };\n let width: number;\n if (fluidCol.flex && fluidCol.flex > 0) {\n // If a fluid column, add flex units to total and prepare them for calculation\n totalFlexUnits += fluidCol.flex;\n width = 0;\n flexCols.push(fluidCol);\n } else {\n // If not a fluid column use the width (or minWidth if this is a larger value)\n width = Math.max(\n fluidCol?.width ?? DEFAULT_COLUMN_WIDTH,\n fluidCol?.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH\n );\n }\n\n widthAllocatedBeforeFlex += width;\n fluidCol.width = width;\n fluidCol.minWidth = fluidCol?.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH;\n\n columnsLookup[fluidCol.field] = fluidCol;\n });\n\n // Calculate how much space we have available for fluids widths by subtracting the non-fluid column widths\n const initialFreeSpace = Math.max(gridWidth.value - widthAllocatedBeforeFlex, 0);\n\n // Allocate the remaining space to the flex columns\n if (totalFlexUnits > 0 && gridWidth.value > 0) {\n const computedColumnWidths = computeFlexColumnsWidth(initialFreeSpace, totalFlexUnits, flexCols);\n\n Object.keys(computedColumnWidths).forEach(field => {\n columnsLookup[field].width = computedColumnWidths[field].computedWidth;\n });\n }\n\n return Object.values(columnsLookup);\n });\n\n return { caclulatedWidths };\n};\n\nexport default useCalculateColumnWidth;\n","import { Ref } from 'vue';\nimport { BentoColumn, BentoDatagridSortByColumn, BentoDatagridSortDirection } from '../data-grid.types';\n\nexport const useSorter = (\n sortBy: Ref<BentoDatagridSortByColumn[]>,\n columns: Ref<BentoColumn[]>,\n emit: (event: string, updatedSortBy: BentoDatagridSortByColumn[]) => void\n) => {\n // Get column sort direction if it has been sorted\n const conditionalSortDirectionClasses = (field: string, direction: BentoDatagridSortDirection) => ({\n 'b-data-grid__column-sort-icon--sorted': sortBy.value.some(\n sortedCol => sortedCol.field === field && sortedCol.direction === direction\n ),\n });\n\n // The column head click event to sort data by certain field and direction\n const sortByColumnField = (field: string) => {\n // First check if column is sortable\n if (!columns.value.some(col => col.field === field && col.sortable)) {\n return;\n }\n\n // Return the updated sortBy array of sorted columns\n const newColumnSort: BentoDatagridSortByColumn = {\n field,\n direction:\n sortBy.value.find(sortedCol => sortedCol.field === field)?.direction ===\n BentoDatagridSortDirection.DESCENDING\n ? BentoDatagridSortDirection.ASCENDING\n : BentoDatagridSortDirection.DESCENDING,\n };\n\n const updatedSortBy = [newColumnSort];\n\n emit('sort', updatedSortBy);\n };\n\n return { conditionalSortDirectionClasses, sortByColumnField };\n};\n","import { nextTick, reactive, ref, Ref } from 'vue';\nimport {\n BentoDatagridData,\n BentoDatagridDataItemId,\n BentoDatagridGetDataItemIdFn,\n BentoDatagridIsDataItemDisabledFn,\n} from '../data-grid.types';\n\n/**\n * Exposed selection variables and methods for a data component to use and react to.\n * @param selection a list of unique IDs\n * @param emit the emit function to fire upon selection\n * @param data the list of data items\n * @param getDataItemId the method to retrieve the unique ID of a data item\n * @param isDataItemDisabled the method to determine if the data item is disabled for selection\n */\nexport const useSelector = (\n selection: Ref<BentoDatagridDataItemId[]>,\n emit: (event: string, emitedSelectedItems: BentoDatagridDataItemId[]) => void,\n data: Ref<BentoDatagridData>,\n getDataItemId: BentoDatagridGetDataItemIdFn,\n isDataItemDisabled: BentoDatagridIsDataItemDisabledFn\n) => {\n const selectedItems = ref<BentoDatagridDataItemId[]>(selection.value);\n const allItemsSelectedState = reactive<{ allItemsSelected: boolean; isIndeterminate: boolean }>({\n allItemsSelected: false,\n isIndeterminate: false,\n });\n\n const emitSelect = () => {\n emit('select', selectedItems.value);\n };\n\n const onAllRowSelect = () => {\n nextTick(() => {\n if (allItemsSelectedState.allItemsSelected) {\n // eslint-disable-next-line no-param-reassign\n selectedItems.value = data.value\n ?.filter(dataItem => !isDataItemDisabled(dataItem))\n ?.map(dataItem => getDataItemId(dataItem));\n } else {\n // eslint-disable-next-line no-param-reassign\n selectedItems.value = [];\n }\n allItemsSelectedState.isIndeterminate = false;\n emitSelect();\n });\n };\n\n const onRowSelect = () => {\n nextTick(() => {\n const isEveryItemSelected = data.value.every(item => selectedItems.value.includes(getDataItemId(item)));\n\n allItemsSelectedState.isIndeterminate = selectedItems.value.length > 0 && !isEveryItemSelected;\n\n if (isEveryItemSelected) {\n allItemsSelectedState.allItemsSelected = true;\n } else if (allItemsSelectedState.isIndeterminate || !isEveryItemSelected) {\n allItemsSelectedState.allItemsSelected = false;\n }\n\n emitSelect();\n });\n };\n\n return { onAllRowSelect, onRowSelect, allItemsSelectedState, selectedItems };\n};\n","<template>\n <div\n class=\"b-data-grid\"\n role=\"grid\"\n tabindex=\"0\"\n :class=\"conditionalGridClasses\"\n :aria-rowcount=\"data.length\"\n :aria-colcount=\"columns.length\"\n :aria-label=\"ariaGridHeaderText\"\n >\n <div v-if=\"filters\" class=\"b-data-grid__filters\">\n <bento-filter-bar :value=\"filters\" @input=\"filters => $emit('update:filters', filters)\" />\n </div>\n <div v-if=\"$slots.header\" class=\"b-data-grid__header\">\n <slot name=\"header\"></slot>\n </div>\n <div ref=\"body\" class=\"b-data-grid__body\">\n <div role=\"rowgroup\">\n <div :style=\"gridColumnWidthStyle\" class=\"b-data-grid__columns\" role=\"row\">\n <div\n v-for=\"(column, index) in processedColumns\"\n :key=\"column.field\"\n :ref=\"column.field\"\n :aria-colindex=\"index + 1\"\n :aria-label=\"column.label\"\n :class=\"conditionalColumnClasses(column)\"\n :data-testid=\"`${column.field}-column-header`\"\n class=\"b-data-grid__column\"\n role=\"columnheader\"\n @click=\"sortByColumnField(column.field)\"\n >\n <template v-if=\"column.field !== DATAGRID_SELECT_FIELD_NAME\">\n <bento-typography :el=\"BentoTypographyElement.DIV\" strongest>\n <slot :column=\"column\" :name=\"`head-${column.field}`\">\n <span>{{ column.label }}</span>\n </slot>\n </bento-typography>\n <div v-if=\"column.sortable\" class=\"b-data-grid__column-sort\">\n <triangle-up\n class=\"b-data-grid__column-sort-icon\"\n :class=\"\n conditionalSortDirectionClasses(\n column.field,\n BentoDatagridSortDirection.ASCENDING\n )\n \"\n :svg-title=\"`${column.field} sort ascending`\"\n :data-testid=\"`${column.field}-sort-icon-asc`\"\n />\n <triangle-down\n class=\"b-data-grid__column-sort-icon\"\n :class=\"\n conditionalSortDirectionClasses(\n column.field,\n BentoDatagridSortDirection.DESCENDING\n )\n \"\n :svg-title=\"`${column.field}sort descending`\"\n :data-testid=\"`${column.field}-sort-icon-desc`\"\n />\n </div>\n <div\n v-if=\"index !== columns.length - 1\"\n :data-testid=\"`data-grid-column-${column.field}`\"\n :class=\"conditionalColumnSeperatorClasses\"\n class=\"b-data-grid__column-seperator-container\"\n role=\"presentation\"\n @mousedown=\"startResize(hasResizableColumns, column.field, $event)\"\n @click.stop\n >\n <div class=\"b-data-grid__column-seperator\"></div>\n </div>\n </template>\n <template v-else>\n <bento-checkbox\n v-model=\"allItemsSelectedState.allItemsSelected\"\n data-testid=\"checkbox-select-all\"\n :indeterminate=\"allItemsSelectedState.isIndeterminate\"\n value=\"data-grid-select-all\"\n @input=\"onAllRowSelect\"\n />\n </template>\n </div>\n </div>\n </div>\n <div class=\"b-data-grid__rows\" role=\"rowgroup\">\n <div\n v-for=\"(rowData, index) in data\"\n :key=\"index\"\n :style=\"gridColumnWidthStyle\"\n class=\"b-data-grid__row\"\n :class=\"conditionalRowClasses(rowData)\"\n role=\"row\"\n :aria-rowindex=\"index + 1\"\n >\n <div\n v-for=\"column in processedColumns\"\n :key=\"`cell-${column.field}`\"\n :data-testid=\"`cell-${column.field}`\"\n class=\"b-data-grid__cell\"\n :class=\"conditionalRowCellClasses(column)\"\n role=\"gridcell\"\n >\n <template v-if=\"column.field !== DATAGRID_SELECT_FIELD_NAME\">\n <bento-typography :el=\"BentoTypographyElement.DIV\">\n <slot :item=\"rowData\" :name=\"`item-${column.field}`\">\n <span>{{ rowData[column.field] || '-' }}</span>\n </slot>\n </bento-typography>\n </template>\n <template v-else>\n <bento-checkbox\n v-model=\"selectedItems\"\n :disabled=\"isDataItemDisabled(rowData)\"\n :value=\"getDataItemId(rowData)\"\n @input=\"onRowSelect\"\n />\n </template>\n </div>\n </div>\n </div>\n </div>\n <div v-if=\"pagination\" class=\"b-data-grid__pagination\" :class=\"conditionalPaginationClasses\">\n <bento-pagination\n v-bind=\"pagination\"\n :aria-label=\"`${ariaGridHeaderText} navigation`\"\n @navigate=\"paginationNavigate\"\n @items-page=\"onItemsPerPageChange\"\n />\n </div>\n <div v-if=\"$slots.footer\" class=\"b-data-grid__footer\"><slot name=\"footer\"></slot></div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, nextTick, onMounted, PropType, ref, toRef } from 'vue';\n import { observeSizeOfElement } from '@/utils/ts/resize';\n import TriangleUp from '@adyen/ui-assets-icons-16/vue/triangle-up';\n import TriangleDown from '@adyen/ui-assets-icons-16/vue/triangle-down';\n import { BentoCheckbox } from '../checkbox';\n import { BentoPagination } from '../pagination';\n import { BentoFilterBar } from '../filter-bar';\n import {\n BentoColumn,\n BentoDatagridData,\n BentoDatagridDataItem,\n BentoDatagridDataItemId,\n BentoDatagridGetDataItemIdFn,\n BentoDatagridIsDataItemDisabledFn,\n BentoDatagridPaginationProps,\n BentoDatagridSortByColumn,\n BentoDatagridSortDirection,\n BentoDatagridStyleState,\n } from './data-grid.types';\n import { useResizer } from './composables/useResizer';\n import {\n DATAGRID_SELECT_FIELD_NAME,\n useCalculateColumnWidth,\n } from './composables/useCalculateColumnWidth/useCalculateColumnWidth';\n import { useSorter } from './composables/useSorter';\n import { useSelector } from './composables/useSelector';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n export default defineComponent({\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n BentoPagination,\n BentoFilterBar,\n BentoTypography,\n TriangleUp,\n TriangleDown,\n },\n inheritAttrs: false,\n props: {\n /**\n * Sets the row cells to the condensed padding state.\n */\n condensed: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Column definitions using 'key' to relate to data object.\n */\n columns: {\n type: Array as PropType<BentoColumn[]>,\n required: true,\n },\n\n /**\n * An array of data objects to display.\n */\n data: {\n type: Array as PropType<BentoDatagridData>,\n required: true,\n },\n\n /**\n * filter-bar value (i.e. filters) that will be passed down to inner filter-bar component\n */\n filters: {\n type: BentoFilterBar.props.value.type,\n default: undefined,\n },\n\n /**\n * A customisable method to retrieve a unique identifier for a data item in the array of data supplied.\n * This is used selecting and performance reasons and must exist in each data item.\n */\n getDataItemId: {\n type: Function as PropType<BentoDatagridGetDataItemIdFn>,\n default: (item: BentoDatagridDataItem) => item.id,\n },\n\n /**\n * If resize is enabled\n */\n hasResizableColumns: {\n type: Boolean,\n default: true,\n },\n\n /**\n * A customisable method to determine if a row is not selectable.\n * The default is that every row is selectable.\n */\n isDataItemDisabled: {\n type: Function as PropType<BentoDatagridIsDataItemDisabledFn>,\n default: () => false,\n },\n\n /**\n * Enables / Disables the table's surrounding border.\n */\n outline: {\n type: Boolean,\n default: false,\n },\n\n /**\n * pagination props that will passed down to inner pagination component\n */\n pagination: {\n type: Object as PropType<BentoDatagridPaginationProps>,\n default: undefined,\n },\n\n /**\n * Enables / Disables rows to be selected via a checkbox. On select the \"select\" event will be emitted.\n */\n selectable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Selected items\n */\n selection: {\n type: Array as PropType<BentoDatagridDataItemId[]>,\n default: () => [],\n },\n\n /**\n * Sortby handles proper rendering of sort icon in header. Sorting currently is only supported server side.\n * It does make sure the currently sorted column has a more visible sort icon, and the sort icon points in the right direction.\n */\n sortBy: {\n type: Array as PropType<BentoDatagridSortByColumn[]>, // NOTE: is an array to allow multi-sorting in the future\n default: () => [],\n },\n },\n emits: ['column-resize', 'sort', 'select', 'navigate', 'update:filters', 'items-page'],\n setup(props, { emit, slots }) {\n /* == Variables and references == */\n // Create refs for elements\n const body = ref(null);\n\n // Observe the size of the table body to use this for more advance column width calculations later\n const tableBodyWidth = ref<number>();\n onMounted(() => {\n nextTick(() => {\n observeSizeOfElement(body.value, ({ width }) => {\n tableBodyWidth.value = width;\n });\n });\n });\n\n /* == Composable logic == */\n // Selecting\n const data = toRef(props, 'data'); // Note: this done to not lose reactivity to the prop if it changes\n const selection = toRef(props, 'selection'); // Note: this done to not lose reactivity to the prop if it changes\n const { onAllRowSelect, onRowSelect, allItemsSelectedState, selectedItems } = useSelector(\n selection,\n emit,\n data,\n props.getDataItemId,\n props.isDataItemDisabled\n );\n\n // Column Widths\n const columns = toRef(props, 'columns'); // Note: this done to not lose reactivity to the prop if it changes\n const hasSelectableColumn = toRef(props, 'selectable'); // Note: this done to not lose reactivity to the prop if it changes\n const { caclulatedWidths: columnDefs } = useCalculateColumnWidth(columns, tableBodyWidth, {\n hasSelectableColumn,\n });\n\n // Resizing\n const { resizeData, allColumnRefs, startResize } = useResizer(columnDefs, emit);\n\n // Sorting\n const sortBy = toRef(props, 'sortBy'); // Note: this done to not lose reactivity to the prop if it changes\n const { conditionalSortDirectionClasses, sortByColumnField } = useSorter(sortBy, columns, emit);\n\n /* == Styles == */\n // Process columns after (possible resizes)\n const processedColumns = computed(() =>\n columnDefs.value.map(col => ({\n ...col,\n // Override column width with resized ones\n width:\n resizeData.resizedColumnsWidths?.[col.field]?.width !== col.width\n ? resizeData.resizedColumnsWidths?.[col.field]?.width\n : col.width,\n }))\n );\n\n // Generate grid width styles\n const totalWidthOfAllColumns = computed(() => {\n const totalWidthOfAllCalculatedWidths = processedColumns.value.reduce((acc, val) => val.width + acc, 0);\n return tableBodyWidth.value > totalWidthOfAllCalculatedWidths\n ? tableBodyWidth.value\n : totalWidthOfAllCalculatedWidths;\n });\n\n const gridColumnWidthStyle = computed(() => ({\n gridTemplateColumns: processedColumns.value.map(({ width }) => `${width}px`).join(' '),\n gridColumnEnd: processedColumns.value.length + 1,\n width: `${totalWidthOfAllColumns.value}px`,\n }));\n\n // Conditional grid styles\n const conditionalGridClasses = computed(() => ({\n [`b-data-grid--${BentoDatagridStyleState.OUTLINE}`]: props.outline,\n }));\n\n // Conditional column styles\n const conditionalColumnClasses = (column: BentoColumn) => ({\n 'b-data-grid__column--sortable': column.sortable,\n 'b-data-grid__column--padding-left-unset': column?.padding?.left === false,\n 'b-data-grid__column--padding-right-unset': column?.padding?.right === false,\n });\n\n const conditionalColumnSeperatorClasses = computed(() => ({\n 'b-data-grid__column-seperator-container--is-resizeable': props.hasResizableColumns,\n }));\n\n const conditionalRowClasses = (row: BentoDatagridDataItem) => ({\n 'b-data-grid__row--disabled': props.isDataItemDisabled(row),\n });\n\n const conditionalRowCellClasses = (column: BentoColumn) => ({\n 'b-data-grid__cell--padding-left-unset': column?.padding?.left === false,\n 'b-data-grid__cell--padding-right-unset': column?.padding?.right === false,\n 'b-data-grid__cell--condensed': props.condensed,\n });\n\n const conditionalPaginationClasses = computed(() => ({\n 'b-data-grid__pagination--padding-left-unset': props.columns?.[0]?.padding?.left === false,\n 'b-data-grid__pagination--padding-right-unset':\n props.columns?.[props.columns.length - 1]?.padding?.right === false,\n }));\n\n // TODO: Fix the issue where users provide components into the slot\n // a11y grid header label text\n const ariaGridHeaderText = computed<string>(\n () => (slots?.header && slots?.header()[0].text?.trim()) ?? 'data grid'\n );\n\n // Pagination\n const paginationNavigate = (page: number) => emit('navigate', page);\n const onItemsPerPageChange = (itemsPerPage: number) => emit('items-page', itemsPerPage);\n\n return {\n // Refs\n body,\n ...allColumnRefs,\n processedColumns,\n\n // Labels and text\n ariaGridHeaderText,\n\n // Styles and classes\n gridColumnWidthStyle,\n conditionalGridClasses,\n conditionalColumnClasses,\n conditionalRowClasses,\n conditionalRowCellClasses,\n conditionalColumnSeperatorClasses,\n conditionalPaginationClasses,\n\n // Resizing\n resizeData,\n startResize,\n\n // Sorting\n conditionalSortDirectionClasses,\n sortByColumnField,\n\n // Select\n allItemsSelectedState,\n selectedItems,\n onAllRowSelect,\n onRowSelect,\n DATAGRID_SELECT_FIELD_NAME,\n\n // Enums\n BentoDatagridSortDirection,\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Pagination props and events\n paginationNavigate,\n onItemsPerPageChange,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n @import 'data-grid';\n</style>\n","<template>\n <label class=\"b-input-radio\" data-testid=\"input-radio-container\" :class=\"conditionalClass\">\n <input\n :aria-checked=\"isChecked\"\n :aria-label=\"ariaLabel\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n :value=\"value\"\n type=\"radio\"\n class=\"b-input-radio__input\"\n role=\"radio\"\n @change=\"onClick\"\n />\n\n <span v-if=\"shouldShowDescription\" class=\"b-input-radio__description\">\n <bento-typography\n v-if=\"shouldShowLabel\"\n class=\"b-input-radio__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n v-if=\"shouldShowSubLabel\"\n class=\"b-input-radio__sub-label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"subLabel\"></slot>\n </bento-typography>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\">\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { computed, ComputedRef, defineComponent } from 'vue';\n\n /**\n * Radio buttons are used when two or more options are mutually exclusive,\n * the user can only select a single option from a list of pre-defined options.\n * The label tag area is also clickable.\n *\n * @usage\n * import { BentoInputRadio } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoInputRadio },\n * template: `\n * <bento-input-radio\n * disabled\n * value=\"inputRadio\"\n * >\n * Label text\n * <template #subLabel>Sub label text</template>\n * </bento-input-radio>\n * `,\n * }\n */\n export default defineComponent({\n name: 'bento-input-radio',\n components: { BentoTypography },\n inheritAttrs: false,\n model: { prop: 'modelValue' },\n props: {\n /**\n * Disable the input radio (optional)\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Indicates the value of the input that will be returned when it's checked\n */\n value: {\n type: [String, Number],\n required: true,\n },\n /**\n * This property should not be used directly.\n * It will be used by v-model directive on radio component.\n */\n modelValue: {\n type: [String, Number],\n default: null,\n },\n },\n emits: ['input'],\n setup(props, { slots, emit }) {\n const conditionalClass = computed(() => ({ 'b-input-radio--disabled': props.disabled }));\n\n const ariaLabel = computed(() => slots.default?.()[0].text.trim() || (props.value as string));\n\n const isChecked: ComputedRef<boolean> = computed(() => props.value === props.modelValue);\n\n const shouldShowLabel: ComputedRef<boolean> = computed(() => slots.default?.()?.[0].text.trim() !== '');\n\n const shouldShowSubLabel: ComputedRef<boolean> = computed(() => slots.subLabel?.()?.[0].text.trim() !== '');\n\n const shouldShowDescription: ComputedRef<boolean> = computed(\n () => shouldShowLabel.value || shouldShowSubLabel.value\n );\n\n const onClick = () => {\n if (!props.disabled) {\n emit('input', props.value);\n }\n };\n\n return {\n // Values\n ariaLabel,\n isChecked,\n shouldShowDescription,\n shouldShowLabel,\n shouldShowSubLabel,\n conditionalClass,\n\n // Events\n onClick,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./input-radio.scss\" />\n","<template>\n <a v-if=\"external\" class=\"b-link\" :href=\"linkProps.to.toString()\" target=\"_blank\">\n <slot />\n </a>\n <router-link v-else v-slot=\"slotProps\" class=\"b-link\" v-bind=\"linkProps\" :to=\"linkProps.to\">\n <a\n v-bind=\"$attrs\"\n :href=\"slotProps.href\"\n :class=\"slotProps.isActive ? linkProps.activeClass : ''\"\n @click=\"slotProps.navigate\"\n >\n <slot v-bind=\"slotProps\" />\n </a>\n </router-link>\n</template>\n\n<script lang=\"ts\">\n import { RouterLink } from 'vue-router';\n import { useAttrs } from 'vue';\n import type { RouterLinkProps } from 'vue-router/types/router';\n /**\n * Extends the `router-link` from the `vue-router` NPM package.\n *\n * @example\n * import { BentoLink, BentoTypography } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoLink, BentoTypography },\n * template: `\n * <bento-typography>\n * <bento-link to=\"/\">\n * link\n * </bento-link>\n * </bento-typography>\n * `\n * }\n */\n export default {\n name: 'bento-link',\n inheritAttrs: false,\n };\n</script>\n\n<script setup lang=\"ts\">\n // TODO: replace all this code when migrated to Vue 3 is complete as this is the only\n // current way to extend the `router-link` component in Vue 2 and Vue Router 3\n export interface Props extends RouterLinkProps {\n args?: { props: RouterLinkProps };\n /**\n * Set the rendered link to a regular external anchor link.\n */\n external?: boolean;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const props = defineProps<Props>();\n\n const attributes = useAttrs() as unknown;\n const linkProps = attributes as RouterLinkProps;\n</script>\n\n<style lang=\"scss\" scoped src=\"./link.scss\" />\n","export enum BentoStatusVariant {\n BLUE = 'blue',\n GREEN = 'green',\n GREY = 'grey',\n ORANGE = 'orange',\n RED = 'red',\n YELLOW = 'yellow',\n}\n","<template>\n <div class=\"b-status\" role=\"status\">\n <span class=\"b-status__indicator\" :class=\"conditionalClass\" role=\"presentation\"></span>\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.BODY\">\n <slot></slot>\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoStatusVariant } from './status.types';\n\n /**\n * A Status component is used to indicate a\n * passage of time or a particular step of a process.\n *\n * @example\n * import { BentoStatus, BentoStatusVariant } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoStatus },\n * template: `\n * <bento-status :variant=\"BentoStatusVariant.RED\">\n * 1 week ago\n * </bento-status>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-status',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n variant: {\n type: String as PropType<BentoStatusVariant>,\n required: true,\n validator: (type: BentoStatusVariant) => Object.values(BentoStatusVariant).includes(type),\n },\n },\n setup(props) {\n const conditionalClass = computed(() => ({\n [`b-status__indicator--${props.variant}`]: true,\n }));\n\n return {\n // Values\n conditionalClass,\n\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./status.scss\" />\n","export enum BentoTagVariant {\n DEFAULT = 'default',\n BLUE = 'blue',\n GREEN = 'green',\n ORANGE = 'orange',\n RED = 'red',\n}\n","<template>\n <div\n v-bento-tooltip-directive=\"shouldShowTooltip ? textFromSlot : null\"\n class=\"b-tag\"\n :class=\"tagConditionalClasses\"\n :aria-label=\"textFromSlot\"\n role=\"mark\"\n >\n <bento-typography\n class=\"b-tag__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.CAPTION\"\n stronger\n >\n {{ formattedText }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTagVariant } from './tag.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoTooltipDirective } from '@/directives';\n\n export default defineComponent({\n name: 'bento-tag',\n components: { BentoTypography },\n directives: { BentoTooltipDirective },\n inheritAttrs: false,\n props: {\n /**\n * The variant variant of tag\n */\n variant: {\n type: String as PropType<BentoTagVariant>,\n default: BentoTagVariant.DEFAULT,\n validator: (value: BentoTagVariant) => Object.values(BentoTagVariant).includes(value),\n },\n /**\n * The number of characters to limit the number of displayed characters for the tag text, truncating it with an ellipsis of three dots \"...\".\n */\n truncate: { type: Number, default: null },\n },\n setup(props, { slots }) {\n const tagConditionalClasses = computed(() => ({\n [`b-tag--${props.variant}`]: props.variant,\n }));\n\n const textFromSlot = slots.default?.()[0].text.trim() || 'tag';\n const shouldShowTooltip = computed(() => props.truncate && textFromSlot.length > props.truncate);\n\n const formattedText = computed(() => {\n if (!props.truncate) {\n return textFromSlot;\n }\n\n return shouldShowTooltip.value ? `${textFromSlot.slice(0, props.truncate)}...` : textFromSlot;\n });\n\n return {\n // Values\n textFromSlot,\n formattedText,\n tagConditionalClasses,\n shouldShowTooltip,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./tag.scss\" />\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M11.0303 6.03033C11.3232 5.73744 11.3232 5.26256 11.0303 4.96967C10.7374 4.67678 10.2626 4.67678 9.96967 4.96967L8 6.93934L6.03033 4.96967C5.73744 4.67678 5.26256 4.67678 4.96967 4.96967C4.67678 5.26256 4.67678 5.73744 4.96967 6.03033L6.93934 8L4.96967 9.96967C4.67678 10.2626 4.67678 10.7374 4.96967 11.0303C5.26256 11.3232 5.73744 11.3232 6.03033 11.0303L8 9.06066L9.96967 11.0303C10.2626 11.3232 10.7374 11.3232 11.0303 11.0303C11.3232 10.7374 11.3232 10.2626 11.0303 9.96967L9.06066 8L11.0303 6.03033Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","export enum BentoTogglePropClass {\n LABEL_FIRST = 'label-first',\n}\n","export enum AdlLabelPosition {\n BEFORE = 'before',\n AFTER = 'after',\n}\n","<template>\n <label class=\"b-toggle\" :class=\"conditionalClasses\" data-testid=\"label\">\n <input\n ref=\"toggleInput\"\n :checked=\"value\"\n :value=\"value\"\n :aria-label=\"computedAriaLabel\"\n :aria-describedby=\"computedDescription\"\n :disabled=\"disabled\"\n role=\"switch\"\n class=\"b-toggle__input\"\n type=\"checkbox\"\n @change=\"$event => onChange($event)\"\n />\n <span class=\"b-toggle__track\" aria-hidden=\"true\">\n <span class=\"b-toggle__handle\"></span>\n <checkmark-small\n v-if=\"disabled && isChecked()\"\n class=\"b-toggle__icon-disabled b-toggle__icon-disabled--toggled\"\n />\n <cross-small\n v-if=\"disabled && !isChecked()\"\n class=\"b-toggle__icon-disabled b-toggle__icon-disabled--not-toggled\"\n />\n </span>\n <span v-if=\"shouldDisplayLabelSlot || shouldDisplaySubLabelSlot\" class=\"b-toggle__description\">\n <bento-typography\n v-if=\"shouldDisplayLabelSlot\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n stronger\n data-testid=\"inner-label\"\n >\n <slot></slot>\n </bento-typography>\n <bento-typography\n v-if=\"shouldDisplaySubLabelSlot\"\n :id=\"descriptionId\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n class=\"b-toggle__sub-label\"\n >\n <slot name=\"subLabel\"></slot>\n </bento-typography>\n </span>\n </label>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import CrossSmall from '@adyen/ui-assets-icons-16/vue/cross-small';\n import CheckmarkSmall from '@adyen/ui-assets-icons-16/vue/checkmark-small';\n import { BentoTogglePropClass } from './toggle.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { AdlLabelPosition } from '@/types';\n import { generateUid } from '@/utils/ts/unique-id';\n\n /**\n * A wrapper around the bento toggle, providing checkbox functionality with a knob-like toggle\n *\n * @usage\n * import { BentoToggle, BentoLabelPosition } from '@adyen/adl-vue-components';\n *\n * export default {\n * components: { BentoToggle },\n * template: `\n * <bento-toggle\n * :value=\"toggleValue\"`\n * label-position=\"LabelPosition.BEFORE\"\n * @input=\"optionalHandler($event)\"\n * >\n * Label Text\n * </bento-toggle>\n * `,\n * }\n */\n export default defineComponent({\n name: 'bento-toggle',\n components: { BentoTypography, CrossSmall, CheckmarkSmall },\n inheritAttrs: false,\n props: {\n /**\n * Disable the toggle (optional)\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * Position of the label relative to the toggle (optional)\n * @values before, after\n */\n labelPosition: {\n type: String as PropType<AdlLabelPosition>,\n default: AdlLabelPosition.BEFORE,\n validator: (value: AdlLabelPosition) => Object.values(AdlLabelPosition).includes(value),\n },\n /**\n * Indicates if the switch is \"on\" or \"off\"\n */\n value: {\n type: Boolean,\n default: false,\n },\n /**\n * Accessible name for the toggle. It is strongly recommended to pass such value when the toggle is used without a label\n */\n ariaLabel: {\n type: String,\n default: undefined,\n },\n },\n emits: ['input'],\n setup(props, { slots, emit }) {\n const toggleInput = ref();\n const descriptionId: string = generateUid('toggle-description');\n\n const labelSlot = computed((): string => (slots.default ? slots.default()[0]?.text : null));\n\n const subLabelSlot = computed((): string => (slots.subLabel ? slots.subLabel()[0]?.text : null));\n\n const computedAriaLabel = computed((): string => {\n if (props.ariaLabel) {\n return props.ariaLabel;\n }\n if (labelSlot.value) {\n return labelSlot.value;\n }\n return 'toggle';\n });\n\n const computedDescription = computed((): string | null => subLabelSlot.value ?? null);\n\n const shouldDisplayLabelSlot = computed((): boolean => !!slots.default);\n\n const shouldDisplaySubLabelSlot = computed((): boolean => !!slots.subLabel);\n\n const conditionalClasses = computed((): { [key: string]: boolean } => ({\n [`b-toggle--${BentoTogglePropClass.LABEL_FIRST}`]: props.labelPosition === AdlLabelPosition.BEFORE,\n 'b-toggle--disabled': props.disabled,\n }));\n\n const isChecked = (): boolean => toggleInput?.value?.checked;\n\n const onChange = (event: Event) => {\n emit('input', (event.target as HTMLInputElement).checked);\n };\n\n return {\n // Refs\n toggleInput,\n\n // Types\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n computedAriaLabel,\n computedDescription,\n shouldDisplayLabelSlot,\n shouldDisplaySubLabelSlot,\n conditionalClasses,\n descriptionId,\n\n // Methods\n isChecked,\n\n // Events\n onChange,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./toggle.scss\" />\n"],"names":["injectCSS","cssStyles","cssCode","elementStyle","e","BentoTheme","setDefaultTheme","install","_","options","bentoLegacyCssVars","bentoCssVars","BentoVue","BentoButtonVariant","BentoButtonPropClass","BentoTypographyVariant","BentoTypographyModifier","BentoTypographyElement","_sfc_main$H","defineComponent","value","props","computed","_sfc_main$G","BentoTypography","_c","_b","_a","BentoButtonActionsLayout","_sfc_main$E","BentoButton","layout","reversedActionsList","generateButtonVariantByIndex","actionIndex","lastActionIndex","BentoLoadingButtonState","BentoLoadingIndicatorEvent","_sfc_main$D","emit","onMounted","onUnmounted","uuid","_sfc_main","_sfc_main$A","Cross","Checkmark","BentoLoadingIndicator","conditionalClasses","isInverseLoadingIndicator","callbackMap","observerMap","observeSizeOfElement","element","callback","elementToObserve","Vue","observer","entry","callbackToInvoke","_sfc_main$v","CheckmarkSmallIcon","MinusSmallIcon","slots","disabled","indeterminate","modelValue","toRefs","isCheckboxGroup","isChecked","item","isIndeterminate","ariaChecked","ariaLabel","_d","conditionalClass","conditionalClassOutline","event","newValue","newCheckedList","index","_sfc_main$s","ChevronDownIcon","ChevronUpIcon","shouldShowPlaceholder","isDropdownOpen","ariaExpanded","onOpenDropdown","onCloseDropdown","_sfc_main$q","AdlCheckmark","onOptionSelected","label","ariaSelected","PopperContainerPositionBasic","PopperContainerPositionExtended","PopperContainerAriaRole","PopperContainerPosition","getArrowModifier","arrow","arrowProps","getOffsetModifier","offset","getFlipModifier","fallbackPosition","arrowDataHideAttributeModifier","state","sameWidthModifier","_sfc_main$p","currentModifiers","position","strategy","popperElement","createPopper","_sfc_main$o","AdlDropdownOption","PopperContainer","selectedOption","getRandomValues","rnds8","rng","byteToHex","i","unsafeStringify","arr","randomUUID","native","v4","buf","rnds","generateUid","_sfc_main$n","AdlDropdownInputContainer","AdlDropdownOptionsContainer","inputContainerRef","ref","dropdownOptionsContainerId","displayValue","selectedItem","DEFAULT_NUMBER_OF_RESULTS","PREDEFINED_RESULTS_PER_PAGE_VALUES","_sfc_main$m","messages","AdlDropdown","itemsPerPageValue","dropdownId","dropdownOptions","onSelectChange","selectedNumberOfResults","translationPathKey","_sfc_main$l","onPageSelectChange","selectedPage","transformIntoOption","transformToPageNumber","listOfAvailablePages","_sfc_main$g","SkipLeft","SkipRight","ChevronLeft","ChevronRight","isCurrentPageFirst","isCurrentPageLast","isNextButtonDisabled","isLastPageButtonDisabled","hasNoNextPage","hasNoTotalPagesNumber","pageArg","_sfc_main$f","BentoPaginationContext","BentoPaginationControls","BentoPaginationResultsPerPage","totalPages","navigate","elements","pageNumber","BentoFilterItemType","BentoPopoverPositions","_sfc_main$e","CrossCircleFillIcon","_sfc_main$d","BentoPopoverDismissButton","BentoButtonActions","computedAriaLabel","BentoTooltipPosition","BentoTooltipState","_sfc_main$c","id","onBeforeMount","tabIndex","useFilterLabel","filterLabel","filterValue","optionsSupport","support","listen","target","type","listener","cleanupBatch","eventType","cleanup","eventOptions","useNativeOnce","eventListener","TooltipComponent","Tooltip","tooltipInstances","ariaDescribedByAttr","tooltip","open","createTooltip","el","destroyTooltip","getTooltipPosition","binding","getTooltipInstanceForTarget","ctx","showTooltip","tooltipInstance","hideTooltip","TooltipDirective","show","hide","context","removeListener","_sfc_main$a","BentoButtonGroup","BentoPopover","CrossIcon","BentoTooltipDirective","filterButtonRef","isActive","isTooltipVisible","alwaysShowNameInLabel","displayLabel","onClickClear","closePopover","onClickFilter","onClickDismissFilter","onClickApply","buttonVariant","BentoInputFieldVariant","BentoInputFieldStaticValuePosition","BentoInputFieldStateClass","_sfc_main$9","inputFieldElement","shouldShowStaticValue","shouldDisplayStaticValueAtStart","shouldDisplayStaticValueAtEnd","inputFieldConditionalClasses","_sfc_main$8","BentoBaseFilter","BentoInputField","internalValue","isFilterOpen","inputTextRef","isApplyButtonDisabled","closeFilter","clearFilter","openFilter","nextTick","dismissFilter","_sfc_main$7","BentoTextFilter","updateFilterHandler","updatedFilter","filterIndex","filter","newFilters","dismissedFilter","BentoDatagridStyleState","BentoDatagridSortDirection","useResizer","columns","colKeyLookup","acc","col","columnsRefs","reactive","allColumnRefs","defaultResizedColumnWidths","field","width","minWidth","resizeData","watchEffect","removeMouseMoveResizeListener","removeMouseUpResizeListener","onResizeColumn","sizeChange","currResizingColumnField","resizedColumnWidth","stopResize","hasResizableColumns","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MIN_WIDTH","DATAGRID_SELECT_FIELD_NAME","computeFlexColumnsWidth","initialFreeSpace","totalFlexUnits","flexCols","flexColumnsLookup","frozenColumnKeys","freezeColumn","processFlexItems","violationsLookup","remainingFreeSpace","flexUnits","totalViolation","flexColsLength","column","computedWidth","key","useCalculateColumnWidth","newColumns","newGridWidth","gridWidth","widthAllocatedBeforeFlex","columnsLookup","columnDefs","fluidCol","computedColumnWidths","useSorter","sortBy","direction","sortedCol","updatedSortBy","useSelector","selection","data","getDataItemId","isDataItemDisabled","selectedItems","allItemsSelectedState","emitSelect","dataItem","isEveryItemSelected","_sfc_main$6","BentoCheckbox","BentoPagination","BentoFilterBar","TriangleUp","TriangleDown","body","tableBodyWidth","toRef","onAllRowSelect","onRowSelect","hasSelectableColumn","startResize","conditionalSortDirectionClasses","sortByColumnField","processedColumns","totalWidthOfAllColumns","totalWidthOfAllCalculatedWidths","val","gridColumnWidthStyle","conditionalGridClasses","conditionalColumnClasses","conditionalColumnSeperatorClasses","conditionalRowClasses","row","conditionalRowCellClasses","conditionalPaginationClasses","_f","_e","ariaGridHeaderText","page","itemsPerPage","_sfc_main$5","shouldShowLabel","shouldShowSubLabel","shouldShowDescription","__default__","attributes","useAttrs","BentoStatusVariant","_sfc_main$3","BentoTagVariant","_sfc_main$2","tagConditionalClasses","textFromSlot","shouldShowTooltip","formattedText","BentoTogglePropClass","AdlLabelPosition","CrossSmall","CheckmarkSmall","toggleInput","descriptionId","labelSlot","subLabelSlot","computedDescription","shouldDisplayLabelSlot","shouldDisplaySubLabelSlot"],"mappings":"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"}