@adyen/bento-vue2 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/@types/components/avatar/avatar.vue.d.ts +13 -2
  2. package/dist/@types/components/button/button.vue.d.ts +1 -1
  3. package/dist/@types/components/currency/currency.types.d.ts +170 -0
  4. package/dist/@types/components/currency/currency.vue.d.ts +32 -0
  5. package/dist/@types/components/currency/index.d.ts +2 -0
  6. package/dist/@types/components/data-grid/data-grid.vue.d.ts +1 -0
  7. package/dist/@types/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.types.d.ts +53 -0
  8. package/dist/@types/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.vue.d.ts +62 -21
  9. package/dist/@types/components/dropdown/components/dropdown-default-textbox/dropdown-default-textbox.vue.d.ts +129 -0
  10. package/dist/@types/components/dropdown/components/dropdown-options-container/components/{dropdown-option/dropdown-option.vue.d.ts → dropdown-single-select-option/dropdown-single-select-option.vue.d.ts} +18 -4
  11. package/dist/@types/components/dropdown/components/dropdown-options-container/components/dropdown-single-select-option/index.d.ts +1 -0
  12. package/dist/@types/components/dropdown/components/dropdown-options-container/dropdown-options-container.vue.d.ts +22 -13
  13. package/dist/@types/components/dropdown/components/dropdown-options-container/index.d.ts +1 -1
  14. package/dist/@types/components/dropdown/components/dropdown-small-textbox/dropdown-small-textbox.vue.d.ts +128 -0
  15. package/dist/@types/components/dropdown/components/index.d.ts +1 -0
  16. package/dist/@types/components/dropdown/dropdown.types.d.ts +1 -0
  17. package/dist/@types/components/dropdown/dropdown.vue.d.ts +60 -1
  18. package/dist/@types/components/filter-bar/components/base-filter/components/filter-button/filter-button.vue.d.ts +32 -0
  19. package/dist/@types/components/search-bar/search-bar.vue.d.ts +1 -1
  20. package/dist/@types/components/search-bar/useSearchBarDataFilter.d.ts +2 -2
  21. package/dist/@types/components/tag/tag.vue.d.ts +10 -1
  22. package/dist/@types/components/user-profile/index.d.ts +1 -0
  23. package/dist/@types/components/user-profile/user-profile.vue.d.ts +40 -0
  24. package/dist/@types/components.d.ts +4 -0
  25. package/dist/@types/composables/index.d.ts +1 -0
  26. package/dist/@types/composables/initials.d.ts +3 -0
  27. package/dist/@types/index.d.ts +2 -0
  28. package/dist/@types/types/index.d.ts +1 -0
  29. package/dist/@types/types/prop-types.d.ts +1 -0
  30. package/dist/@types/utils/ts/currency/countries-list.d.ts +4 -0
  31. package/dist/@types/utils/ts/currency/currency.d.ts +6 -0
  32. package/dist/@types/utils/ts/currency/currency.types.d.ts +24 -0
  33. package/dist/@types/utils/ts/debounce/debounce.d.ts +1 -2
  34. package/dist/@types/utils/ts/deep-merge/deep-merge.d.ts +1 -0
  35. package/dist/@types/utils/ts/deep-merge/index.d.ts +1 -0
  36. package/dist/index.js +2671 -2169
  37. package/dist/index.js.map +1 -1
  38. package/package.json +2 -2
  39. package/dist/@types/components/dropdown/components/dropdown-input-container/dropdown-input-container.vue.d.ts +0 -68
  40. package/dist/@types/components/dropdown/components/dropdown-input-container/index.d.ts +0 -1
  41. package/dist/@types/components/dropdown/components/dropdown-options-container/components/dropdown-option/index.d.ts +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/ts/inject-css.ts","../src/install.ts","../src/components/alert/alert.types.ts","../src/components/button/button.types.ts","../src/components/typography/typography.types.ts","../src/components/typography/typography.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/warning-filled.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","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/info-filled.vue","../src/utils/ts/aria-label.ts","../src/utils/ts/hasSlot.ts","../src/components/button/button.vue","../src/components/alert/alert.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","../src/components/button/components/loading-button/loading-button.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","../src/components/controls-group/controls-group.vue","../src/components/checkbox/components/checkbox-group/checkbox-group.types.ts","../src/components/checkbox/components/checkbox-group/checkbox-group.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","../../../node_modules/focus-lock/dist/es2015/constants.js","../../../node_modules/focus-lock/dist/es2015/utils/array.js","../../../node_modules/focus-lock/dist/es2015/utils/is.js","../../../node_modules/focus-lock/dist/es2015/utils/tabOrder.js","../../../node_modules/focus-lock/dist/es2015/utils/tabbables.js","../../../node_modules/focus-lock/dist/es2015/utils/tabUtils.js","../../../node_modules/focus-lock/dist/es2015/utils/DOMutils.js","../../../node_modules/focus-lock/dist/es2015/utils/all-affected.js","../../../node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","../../../node_modules/focus-lock/dist/es2015/focusInside.js","../../../node_modules/focus-lock/dist/es2015/focusIsHidden.js","../../../node_modules/focus-lock/dist/es2015/utils/correctFocus.js","../../../node_modules/focus-lock/dist/es2015/utils/firstFocus.js","../../../node_modules/focus-lock/dist/es2015/solver.js","../../../node_modules/focus-lock/dist/es2015/utils/parenting.js","../../../node_modules/focus-lock/dist/es2015/focusMerge.js","../../../node_modules/focus-lock/dist/es2015/focusables.js","../../../node_modules/focus-lock/dist/es2015/setFocus.js","../src/components/focus-trap/focus-trap.types.ts","../src/components/focus-trap/focus-trap.utils.ts","../src/components/focus-trap/focus-trap.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","../src/directives/click-outside/utils.ts","../src/directives/click-outside/useEventListener/index.ts","../src/directives/click-outside/on-click-outside.ts","../src/directives/click-outside/directive.ts","../../../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-title/popover-title.vue","../src/components/popover/components/popover-dismiss-button/popover-dismiss-button.vue","../src/components/popover/popover.vue","../src/directives/tooltip/tooltip.types.ts","../src/utils/ts/events.ts","../src/types/utils-events.ts","../src/components/tooltip/tooltip.vue","../src/directives/tooltip/tooltip.ts","../src/components/filter-bar/components/base-filter/composables/index.ts","../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","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-up.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-down.vue","../src/components/data-grid/composables/useResizer.ts","../src/utils/ts/resize.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/composables/useConfigSettings.ts","../src/components/data-grid/components/data-grid-columns/data-grid-columns.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/settings.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","../src/components/data-grid/components/data-grid-config-settings/data-grid-config-settings.vue","../src/components/data-grid/data-grid.vue","../src/components/click-outside/click-outside.ts","../src/components/country/composables/useCountryCapital/useCountryCapital.ts","../src/components/country/composables/useCountryFlag.ts","../src/components/country/composables/useCountryName/useCountryName.ts","../src/components/country/composables/useCountryPhoneCode/useCountryPhoneCode.ts","../src/components/country/country.types.ts","../src/utils/ts/i18n.ts","../src/components/country/country.vue","../src/components/link/link.types.ts","../src/components/link/link.vue","../src/components/radio-group/radio-group.types.ts","../src/components/radio-group/components/radio-button/radio-button.vue","../src/components/radio-group/radio-group.vue","../src/utils/ts/debounce/debounce.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/search.vue","../src/components/search-bar/search-bar.vue","../src/components/search-bar/useSearchBarDataFilter.ts","../src/components/status/status.types.ts","../src/components/status/status.vue","../src/components/tag/tag.types.ts","../src/components/tag/tag.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 adlCssVars from '@adyen/bento-design-tokens/dist/css/adl/variables.css';\nimport adlLegacyCssVars from '@adyen/bento-design-tokens/dist/css/adl/variables-legacy.css';\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(adlLegacyCssVars);\n injectCSS(bentoLegacyCssVars);\n } else {\n injectCSS(adlCssVars);\n injectCSS(bentoCssVars);\n }\n};\n\nexport default {\n install,\n} as PluginObject<BentoVuePlugin>;\n","export enum BentoAlertSeverityOption {\n WARNING = 'warning',\n CRITICAL = 'critical',\n HIGHLIGHT = 'highlight',\n SUCCESS = 'success',\n}\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","\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","\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=\"M15.349 11.5376L9.99897 2.19758C9.79966 1.85738 9.51482 1.57524 9.17274 1.37919C8.83066 1.18314 8.44325 1.07999 8.04897 1.07999C7.65469 1.07999 7.26727 1.18314 6.92519 1.37919C6.58311 1.57524 6.29827 1.85738 6.09897 2.19758L0.648967 11.5376C0.450427 11.8833 0.347305 12.2755 0.350155 12.6742C0.353005 13.0728 0.461725 13.4636 0.665188 13.8064C0.868651 14.1493 1.15955 14.4319 1.50812 14.6254C1.85668 14.8188 2.2504 14.9162 2.64897 14.9076H13.399C13.7933 14.9073 14.1807 14.8034 14.5222 14.6063C14.8638 14.4092 15.1475 14.1258 15.345 13.7845C15.5425 13.4431 15.6468 13.0559 15.6475 12.6615C15.6482 12.2672 15.5453 11.8796 15.349 11.5376ZM7.24897 5.32758C7.24897 5.12866 7.32798 4.9379 7.46864 4.79725C7.60929 4.65659 7.80006 4.57758 7.99897 4.57758C8.19788 4.57758 8.38864 4.65659 8.5293 4.79725C8.66995 4.9379 8.74897 5.12866 8.74897 5.32758V8.32758C8.74897 8.52649 8.66995 8.71725 8.5293 8.85791C8.38864 8.99856 8.19788 9.07758 7.99897 9.07758C7.80006 9.07758 7.60929 8.99856 7.46864 8.85791C7.32798 8.71725 7.24897 8.52649 7.24897 8.32758V5.32758ZM7.99897 12.3276C7.80119 12.3276 7.60785 12.2689 7.4434 12.159C7.27895 12.0492 7.15077 11.893 7.07509 11.7103C6.9994 11.5275 6.9796 11.3265 7.01818 11.1325C7.05677 10.9385 7.15201 10.7603 7.29186 10.6205C7.43171 10.4806 7.6099 10.3854 7.80388 10.3468C7.99786 10.3082 8.19893 10.328 8.38165 10.4037C8.56438 10.4794 8.72056 10.6076 8.83044 10.772C8.94032 10.9365 8.99897 11.1298 8.99897 11.3276C8.99897 11.5928 8.89361 11.8471 8.70607 12.0347C8.51854 12.2222 8.26418 12.3276 7.99897 12.3276Z\" 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><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","\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-info_filled__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M5.0342 0.839937C6.45033 0.253358 8.0086 0.0998821 9.51195 0.398918C11.0153 0.697953 12.3962 1.43607 13.4801 2.51993C14.5639 3.60378 15.3021 4.9847 15.6011 6.48805C15.9001 7.99141 15.7466 9.54967 15.1601 10.9658C14.5735 12.3819 13.5801 13.5923 12.3057 14.4439C11.0312 15.2955 9.53281 15.75 8 15.75C5.94457 15.75 3.97333 14.9335 2.51992 13.4801C1.06652 12.0267 0.25 10.0554 0.25 8C0.25 6.4672 0.70453 4.96881 1.55611 3.69433C2.40769 2.41985 3.61808 1.42652 5.0342 0.839937ZM8.75 4.5C8.75 4.69778 8.69135 4.89112 8.58147 5.05557C8.47159 5.22002 8.31541 5.34819 8.13268 5.42388C7.94996 5.49957 7.74889 5.51937 7.55491 5.48079C7.36093 5.4422 7.18275 5.34696 7.04289 5.20711C6.90304 5.06725 6.8078 4.88907 6.76922 4.69509C6.73063 4.50111 6.75043 4.30004 6.82612 4.11732C6.90181 3.93459 7.02998 3.77841 7.19443 3.66853C7.35888 3.55865 7.55222 3.5 7.75 3.5C8.01522 3.5 8.26957 3.60536 8.45711 3.79289C8.64464 3.98043 8.75 4.23478 8.75 4.5ZM7 6.25C6.58579 6.25 6.25 6.58579 6.25 7C6.25 7.41421 6.58579 7.75 7 7.75H7.25V10.25H7C6.58579 10.25 6.25 10.5858 6.25 11C6.25 11.4142 6.58579 11.75 7 11.75H9C9.41421 11.75 9.75 11.4142 9.75 11C9.75 10.5858 9.41421 10.25 9 10.25H8.75V7C8.75 6.58579 8.41421 6.25 8 6.25H7Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-info_filled__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","import { computed, ComputedRef, ref } from 'vue';\nimport { MaybeRef } from '../../types/maybe-ref';\n\ninterface ariaLabelOptions {\n ariaLabel?: MaybeRef<string | null>;\n label?: MaybeRef<string | null>;\n defaultFallback?: MaybeRef<string | null>;\n}\n\n/**\n * Returns a valid aria-label for the element it's invoked for\n * @param ariaLabel - The aria label, which has to be set manually through the homonymous prop\n * @param label - Any other label provided, usually the component's main text\n * @param defaultFallback - The default fallback if no other value is provided\n * @returns {string | null} - A string corresponding to the aria label or null if no value is provided\n */\nexport const useAriaLabel = ({\n ariaLabel = null,\n label = null,\n defaultFallback = null,\n}: ariaLabelOptions): ComputedRef<string> => {\n const computedAriaLabel = ref(ariaLabel);\n const computedLabel = ref(label);\n const computedDefaultFallback = ref(defaultFallback);\n\n return computed(() => computedAriaLabel.value ?? computedLabel.value ?? computedDefaultFallback.value);\n};\n","import type { Slots } from 'vue/types/v3-setup-context';\n\n/**\n * High order function that allows to verify if a Slot exits in a component.\n *\n * @example\n * <script lang=\"ts\">\n * import { hasSlot } from '@/utils/ts/hasSlot';\n *\n * export default defineComponent({\n * setup(props, { slots }) {\n * return {\n * //...\n *\n * // Methods\n * hasSlot: hasSlot(slots),\n * }\n * }\n * })\n * </script>\n *\n * @param {function(slots: Slots)} hasSlots Encloses the slots object to be checked when the closure is called\n * @returns {function(name: string)} Checks if the named slot defined by \"name\" exists in the component\n */\nexport const hasSlot = (slots: Slots) => (name: string) => !!slots[name];\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=\"hasSlot('iconLeft')\" class=\"b-button__icon-left\" data-testid=\"icon-button-left\">\n <slot name=\"iconLeft\" />\n </span>\n <bento-typography\n v-if=\"hasSlot('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=\"hasSlot('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 { computed, 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 import { useAriaLabel } from '@/utils/ts/aria-label';\n import { hasSlot } from '@/utils/ts/hasSlot';\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 functionality\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: 'button',\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 emits: ['click', 'focus', 'blur', 'keydown.esc'],\n setup(props, { slots, emit }) {\n const labelSlot = computed((): string => (slots.default ? slots.default()[0]?.text : null));\n\n const ariaLabel = useAriaLabel({ ariaLabel: labelSlot });\n\n const variantClass = computed((): { [x: string]: boolean } => ({\n [`b-button--${props.variant}${props.critical ? `-${BentoButtonPropClass.DESTRUCTIVE}` : ''}`]: true,\n }));\n\n const conditionalClasses = computed(\n (): {\n [x: string]: boolean;\n } => ({\n ...variantClass.value,\n [`b-button--${BentoButtonPropClass.CONDENSED}`]: props.condensed,\n [`b-button--${BentoButtonPropClass.ICON_ONLY}`]: !slots.default,\n })\n );\n\n const onClickButton = () => {\n if (!props.disabled) {\n emit('click');\n }\n };\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n ariaLabel,\n conditionalClasses,\n\n // Methods\n onClickButton,\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./button.scss\" />\n","<template>\n <div class=\"b-alert\" :role=\"computedRole\" data-testid=\"alert-container\">\n <div class=\"b-alert__inner-container\" :class=\"alertConditionalClasses\">\n <div class=\"b-alert__severity-icon\" data-testid=\"alert-severity-icon\" aria-hidden=\"true\">\n <checked-circle\n v-if=\"severity === BentoAlertSeverityOption.SUCCESS\"\n :svg-title=\"BentoAlertSeverityOption.SUCCESS\"\n />\n <info\n v-else-if=\"severity === BentoAlertSeverityOption.HIGHLIGHT\"\n :svg-title=\"BentoAlertSeverityOption.HIGHLIGHT\"\n />\n <warning\n v-else-if=\"severity === BentoAlertSeverityOption.WARNING\"\n :svg-title=\"BentoAlertSeverityOption.WARNING\"\n />\n <cross-circle\n v-else-if=\"severity === BentoAlertSeverityOption.CRITICAL\"\n :svg-title=\"BentoAlertSeverityOption.CRITICAL\"\n />\n </div>\n\n <div class=\"b-alert__content\">\n <bento-typography\n v-if=\"$slots.default\"\n class=\"b-alert__content-title\"\n aria-label=\"alert title\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n strongest\n >\n <slot />\n </bento-typography>\n\n <bento-typography\n v-if=\"$slots.description\"\n class=\"b-alert__content-description\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"description\" />\n </bento-typography>\n\n <div v-if=\"$slots.actions\" class=\"b-alert__content-actions\" aria-label=\"alert actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <bento-button\n v-if=\"closeButton\"\n class=\"b-alert__close-button\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n type=\"button\"\n @click=\"onCloseButtonClick\"\n >\n <cross svg-title=\"close\" />\n </bento-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType } from 'vue';\n import { BentoAlertSeverityOption } from '@/components/alert/alert.types';\n import { BentoButtonVariant } from '@/components/button/button.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n import Cross from '@adyen/ui-assets-icons-16/vue/cross';\n import Warning from '@adyen/ui-assets-icons-16/vue/warning-filled';\n import CrossCircle from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import CheckedCircle from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n import Info from '@adyen/ui-assets-icons-16/vue/info-filled';\n import BentoButton from '../button/button.vue';\n\n /**\n * An Alert component is used to display a persistent\n * notification containing information important to the user\n *\n * @example\n * import { BentoAlert, BentoAlertSeverityOption } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoAlert },\n * template: `\n * <bento-alert :severity=\"BentoAlertSeverityOption.HIGHLIGHT\">\n * Title of the Alert\n * </bento-alert>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-alert',\n components: { Cross, BentoButton, Warning, CrossCircle, CheckedCircle, Info, BentoTypography },\n inheritAttrs: false,\n props: {\n // TODO to rename the property to \"type\" or any other name, when designers finalize it\n /**\n * severity levels set a distinctive icon and color\n */\n severity: {\n type: String as PropType<BentoAlertSeverityOption>,\n default: BentoAlertSeverityOption.HIGHLIGHT,\n },\n /**\n * adds a cross icon on the right side of the alert\n */\n closeButton: {\n type: Boolean,\n default: false,\n },\n /**\n * Alert has less padding and is overall smaller than the default option\n */\n inline: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['close-alert'],\n setup(props, { slots, emit }) {\n const alertConditionalClasses = computed(() => ({\n [`b-alert--${props.severity}`]: props.severity,\n 'b-alert--inline': props.inline,\n }));\n\n const computedRole = computed(() =>\n props.severity === BentoAlertSeverityOption.CRITICAL ||\n props.severity === BentoAlertSeverityOption.WARNING\n ? 'alert'\n : 'status'\n );\n\n const onCloseButtonClick = () => {\n emit('close-alert');\n };\n\n onMounted(() => {\n if (!slots.default) {\n throw new Error('Alert Component requires header title in the slot');\n }\n });\n\n return {\n // Values\n alertConditionalClasses,\n computedRole,\n\n // Methods\n onCloseButtonClick,\n\n // Enums\n BentoButtonVariant,\n BentoAlertSeverityOption,\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./alert.scss\" />\n","import type { VueNodeElement } from '../../../../types';\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\">\n <div class=\"b-button-actions__container-wrapper\" :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 </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 white variant\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","<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","\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=\"computedAriaLabel\"\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 <span v-if=\"defaultSlot || descriptionSlot\" class=\"b-checkbox__text\">\n <bento-typography\n v-if=\"defaultSlot\"\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 v-if=\"descriptionSlot\"\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 import { useAriaLabel } from '@/utils/ts/aria-label';\n\n /**\n * Checkboxes are used to make a binary choice about an option.\n * The label tag area is also clickable.\n *\n * @usage\n * import { BentoCheckbox } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoCheckbox },\n * template: `\n * <bento-checkbox>\n * Label text\n * <template #description>Sub label text</template>\n * </bento-checkbox>\n * `,\n * }\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 * Accessible name for the radio button component. It is strongly recommended to pas this value in case this component is used without a label.\n */\n ariaLabel: { type: String, default: null },\n },\n emits: ['input'],\n setup(props, { emit, slots }) {\n const { ariaLabel, disabled, indeterminate, modelValue, value } = toRefs(props);\n\n const defaultSlot = computed(() => (slots.default ? slots?.default()[0]?.text : null));\n const descriptionSlot = computed(() => (slots.description ? slots?.description()[0]?.text.trim() : null));\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\n const computedAriaLabel = useAriaLabel({\n ariaLabel,\n label: slots.default?.()[0]?.text,\n defaultFallback: '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 ariaChecked,\n computedAriaLabel,\n conditionalClass,\n conditionalClassOutline,\n defaultSlot,\n descriptionSlot,\n isCheckboxGroup,\n isChecked,\n isIndeterminate,\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","<template>\n <fieldset class=\"b-controls-group\" :class=\"conditionalClasses\" :form=\"form\" :disabled=\"disabled\">\n <legend class=\"b-controls-group__label\" :class=\"legendConditionalClasses\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">\n {{ label }}\n </bento-typography>\n </legend>\n <slot />\n </fieldset>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n\n /**\n * A controls group components should be used whenever it is necessary to group a set of controls (i.e. radio buttons or checkboxes)\n * This component conforms to the official WAI-ARIA guidelines for grouping controls: https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * NOTE: This component should not be used by itself but more implemented by other exported components\n * @example\n * import { ControlsGroup, BentoCheckbox } from '@adyen/bento-vue2/';\n *\n * export default {\n * components: { ControlsGroup, RadioButton },\n * template: `\n * <controls-group label=\"Your group label\">\n * <radio-button\n * disabled\n * value=\"inputRadio\"\n * >\n * Label text\n * </radio-button>\n * <radio-button\n * value=\"inputRadio\"\n * >\n * Another label text\n * </radio-button>\n * </controls-group>\n * `\n * };\n */\n export default defineComponent({\n name: 'controls-group',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * The name associated with the group. Required for accessibility purposes.\n */\n label: { type: String, required: true },\n /**\n * Shows/hides the group label.\n */\n showLabel: { type: Boolean, default: false },\n /**\n * The value of the id attribute of a <form> element the <fieldset> is to part of, even if it is not inside the form itself.\n */\n form: { type: String, default: null },\n /**\n * Sets all child controls of the <fieldset> as disabled.\n */\n disabled: { type: Boolean, default: false },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n 'b-controls-group--disabled': props.disabled,\n }));\n\n const legendConditionalClasses = computed(() => ({\n 'b-controls-group__label--hidden': !props.showLabel,\n }));\n\n return {\n // Enums\n BentoTypographyElement,\n\n // Values\n conditionalClasses,\n legendConditionalClasses,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./controls-group.scss\" />\n","export enum BentoCheckboxGroupVariant {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport interface BentoCheckboxGroupItem {\n value: string | number;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport type BentoCheckboxGroupItems = Array<BentoCheckboxGroupItem>;\n","<template>\n <controls-group\n class=\"b-checkbox-group\"\n :class=\"conditionalClasses\"\n :form=\"formId\"\n :disabled=\"disabled\"\n :label=\"label\"\n >\n <bento-checkbox\n v-for=\"item in items\"\n :key=\"item.value\"\n v-model=\"modelValue\"\n :value=\"item.value\"\n :disabled=\"disabled || item.disabled\"\n @input=\"onInput\"\n >\n {{ item.label }}\n <template v-if=\"item.description\" #description>{{ item.description }}</template>\n </bento-checkbox>\n </controls-group>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { BentoCheckbox } from '@/components/checkbox';\n import { ControlsGroup } from '@/components/controls-group';\n import { BentoCheckboxGroupItems, BentoCheckboxGroupVariant } from './checkbox-group.types';\n\n /**\n * A checkbox group component should be used whenever it is necessary to group a set of checkboxes that are related together\n * This component conforms to the official WAI-ARIA guidelines for grouping controls: https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * import { BentoCheckboxGroup } from '@adyen/bento-vue2/';\n *\n * export default {\n * components: { BentoCheckboxGroup },\n * template: `\n * <bento-checkbox-group\n * label=\"Your group label\"\n * :items=\"[\n * { value: 1, label: 'Your label' },\n * { value: 2, label: 'Another label', description: 'Your sub label' },\n * ]\"\n * />\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-checkbox-group',\n components: { BentoCheckbox, ControlsGroup },\n inheritAttrs: false,\n props: {\n /**\n * The checkbox group's items.\n */\n items: {\n type: Array as PropType<BentoCheckboxGroupItems>,\n required: true,\n },\n /**\n * The checkbox group's layout. It can be vertical or horizontal. Defaults to vertical.\n */\n variant: {\n type: String as PropType<BentoCheckboxGroupVariant>,\n default: BentoCheckboxGroupVariant.VERTICAL,\n validator: (value: BentoCheckboxGroupVariant) =>\n Object.values(BentoCheckboxGroupVariant).includes(value),\n },\n /**\n * The form id the checkbox group is associated with. Defaults to null, as a checkbox group can also be used standalone.\n */\n formId: {\n type: String,\n default: null,\n },\n /**\n * If set to true, renders all checkboxes in the group in a disabled state.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * The name associated with the group. Required for accessibility purposes.\n */\n label: { type: String, required: true },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n 'b-checkbox-group--horizontal': props.variant === BentoCheckboxGroupVariant.HORIZONTAL,\n }));\n const modelValue = ref([]);\n\n const onInput = value => {\n emit('input', value);\n };\n\n return {\n // Values\n conditionalClasses,\n modelValue,\n\n // Methods\n onInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./checkbox-group.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","/**\n * defines a focus group\n */\nexport var FOCUS_GROUP = 'data-focus-lock';\n/**\n * disables element discovery inside a group marked by key\n */\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\n/**\n * allows uncontrolled focus within the marked area, effectively disabling focus lock for it's content\n */\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\n/**\n * instructs autofocus engine to pick default autofocus inside a given node\n * can be set on the element or container\n */\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n/**\n * instructs autofocus to ignore elements within a given node\n * can be set on the element or container\n */\nexport var FOCUS_NO_AUTOFOCUS = 'data-no-autofocus';\n","/*\nIE11 support\n */\nexport var toArray = function (a) {\n var ret = Array(a.length);\n for (var i = 0; i < a.length; ++i) {\n ret[i] = a[i];\n }\n return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","import { FOCUS_NO_AUTOFOCUS } from '../constants';\nvar isElementHidden = function (node) {\n // we can measure only \"elements\"\n // consider others as \"visible\"\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n var computedStyle = window.getComputedStyle(node, null);\n if (!computedStyle || !computedStyle.getPropertyValue) {\n return false;\n }\n return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar getParentNode = function (node) {\n // DOCUMENT_FRAGMENT_NODE can also point on ShadowRoot. In this case .host will point on the next node\n return node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node.parentNode.host\n : node.parentNode;\n};\nvar isTopNode = function (node) {\n // @ts-ignore\n return node === document || (node && node.nodeType === Node.DOCUMENT_NODE);\n};\nvar isVisibleUncached = function (node, checkParent) {\n return !node || isTopNode(node) || (!isElementHidden(node) && checkParent(getParentNode(node)));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n var cached = visibilityCache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n visibilityCache.set(node, result);\n return result;\n};\nvar isAutoFocusAllowedUncached = function (node, checkParent) {\n return node && !isTopNode(node) ? (isAutoFocusAllowed(node) ? checkParent(getParentNode(node)) : false) : true;\n};\nexport var isAutoFocusAllowedCached = function (cache, node) {\n var cached = cache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isAutoFocusAllowedUncached(node, isAutoFocusAllowedCached.bind(undefined, cache));\n cache.set(node, result);\n return result;\n};\nexport var getDataset = function (node) {\n // @ts-ignore\n return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled));\n};\nexport var isAutoFocusAllowed = function (node) {\n var attribute = node.getAttribute(FOCUS_NO_AUTOFOCUS);\n return ![true, 'true', ''].includes(attribute);\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n var tabDiff = a.tabIndex - b.tabIndex;\n var indexDiff = a.index - b.index;\n if (tabDiff) {\n if (!a.tabIndex) {\n return 1;\n }\n if (!b.tabIndex) {\n return -1;\n }\n }\n return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n return toArray(nodes)\n .map(function (node, index) { return ({\n node: node,\n index: index,\n tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n }); })\n .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n .sort(tabSort);\n};\n","/**\n * list of the object to be considered as focusable\n */\nexport var tabbables = [\n 'button:enabled',\n 'select:enabled',\n 'textarea:enabled',\n 'input:enabled',\n // elements with explicit roles will also use explicit tabindex\n // '[role=\"button\"]',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n];\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nvar getFocusablesWithShadowDom = function (parent, withGuards) {\n var _a;\n return toArray(((_a = parent.shadowRoot) === null || _a === void 0 ? void 0 : _a.children) || parent.children).reduce(function (acc, child) {\n return acc.concat(child.matches(withGuards ? queryGuardTabbables : queryTabbables) ? [child] : [], getFocusablesWithShadowDom(child));\n }, []);\n};\nexport var getFocusables = function (parents, withGuards) {\n return parents.reduce(function (acc, parent) {\n return acc.concat(\n // add all tabbables inside and within shadow DOMs in DOM order\n getFocusablesWithShadowDom(parent, withGuards), \n // add if node is tabbable itself\n parent.parentNode\n ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n : []);\n }, []);\n};\n/**\n * return a list of focusable nodes within an area marked as \"auto-focusable\"\n * @param parent\n */\nexport var getParentAutofocusables = function (parent) {\n var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n return toArray(parentFocus)\n .map(function (node) { return getFocusables([node]); })\n .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","import { toArray } from './array';\nimport { isAutoFocusAllowedCached, isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\n/**\n * given list of focusable elements keeps the ones user can interact with\n * @param nodes\n * @param visibilityCache\n */\nexport var filterFocusable = function (nodes, visibilityCache) {\n return toArray(nodes)\n .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n .filter(function (node) { return notHiddenInput(node); });\n};\nexport var filterAutoFocusable = function (nodes, cache) {\n if (cache === void 0) { cache = new Map(); }\n return toArray(nodes).filter(function (node) { return isAutoFocusAllowedCached(cache, node); });\n};\n/**\n * only tabbable ones\n * (but with guards which would be ignored)\n */\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\n/**\n * actually anything \"focusable\", not only tabbable\n * (without guards, as long as they are not expected to be focused)\n */\nexport var getAllTabbableNodes = function (topNodes, visibilityCache) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\n/**\n * return list of nodes which are expected to be auto-focused\n * @param topNode\n * @param visibilityCache\n */\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n/*\n * Determines if element is contained in scope, including nested shadow DOMs\n */\nexport var contains = function (scope, element) {\n return ((scope.shadowRoot\n ? contains(scope.shadowRoot, element)\n : scope.contains(element)) || Array.from(scope.children).some(function (child) { return contains(child, element); }));\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\n/**\n * in case of multiple nodes nested inside each other\n * keeps only top ones\n * this is O(nlogn)\n * @param nodes\n * @returns {*}\n */\nvar filterNested = function (nodes) {\n var contained = new Set();\n var l = nodes.length;\n for (var i = 0; i < l; i += 1) {\n for (var j = i + 1; j < l; j += 1) {\n var position = nodes[i].compareDocumentPosition(nodes[j]);\n /* eslint-disable no-bitwise */\n if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n contained.add(j);\n }\n if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n contained.add(i);\n }\n /* eslint-enable */\n }\n }\n return nodes.filter(function (_, index) { return !contained.has(index); });\n};\n/**\n * finds top most parent for a node\n * @param node\n * @returns {*}\n */\nvar getTopParent = function (node) {\n return node.parentNode ? getTopParent(node.parentNode) : node;\n};\n/**\n * returns all \"focus containers\" inside a given node\n * @param node\n * @returns {T}\n */\nexport var getAllAffectedNodes = function (node) {\n var nodes = asArray(node);\n return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n var group = currentNode.getAttribute(FOCUS_GROUP);\n acc.push.apply(acc, (group\n ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n : [currentNode]));\n return acc;\n }, []);\n};\n","var getNestedShadowActiveElement = function (shadowRoot) {\n return shadowRoot.activeElement\n ? shadowRoot.activeElement.shadowRoot\n ? getNestedShadowActiveElement(shadowRoot.activeElement.shadowRoot)\n : shadowRoot.activeElement\n : undefined;\n};\n/**\n * returns active element from document or from nested shadowdoms\n */\nexport var getActiveElement = function () {\n return (document.activeElement\n ? document.activeElement.shadowRoot\n ? getNestedShadowActiveElement(document.activeElement.shadowRoot)\n : document.activeElement\n : undefined); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n};\n","import { contains } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\n/**\n * @returns {Boolean} true, if the current focus is inside given node or nodes\n */\nexport var focusInside = function (topNode) {\n var activeElement = document && getActiveElement();\n if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n return false;\n }\n return getAllAffectedNodes(topNode).some(function (node) { return contains(node, activeElement) || focusInsideIframe(node); });\n};\n","import { FOCUS_ALLOW } from './constants';\nimport { contains } from './utils/DOMutils';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\n/**\n * focus is hidden FROM the focus-lock\n * ie contained inside a node focus-lock shall ignore\n * @returns {boolean} focus is currently is in \"allow\" area\n */\nexport var focusIsHidden = function () {\n var activeElement = document && getActiveElement();\n if (!activeElement) {\n return false;\n }\n // this does not support setting FOCUS_ALLOW within shadow dom\n return toArray(document.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return contains(node, activeElement); });\n};\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n return nodes\n .filter(isRadioElement)\n .filter(function (el) { return el.name === node.name; })\n .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n if (isRadioElement(node) && node.name) {\n return findSelectedRadio(node, nodes);\n }\n return node;\n};\n/**\n * giving a set of radio inputs keeps only selected (tabbable) ones\n * @param nodes\n */\nexport var correctNodes = function (nodes) {\n // IE11 has no Set(array) constructor\n var resultSet = new Set();\n nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n // using filter to support IE11\n return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n if (nodes[0] && nodes.length > 1) {\n return correctNode(nodes[0], nodes);\n }\n return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n if (nodes.length > 1) {\n return nodes.indexOf(correctNode(nodes[index], nodes));\n }\n return index;\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\n/**\n * Main solver for the \"find next focus\" question\n * @param innerNodes\n * @param outerNodes\n * @param activeElement\n * @param lastNode\n * @returns {number|string|undefined|*}\n */\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n var cnt = innerNodes.length;\n var firstFocus = innerNodes[0];\n var lastFocus = innerNodes[cnt - 1];\n var isOnGuard = isGuard(activeElement);\n // focus is inside\n if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n return undefined;\n }\n var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n var indexDiff = activeIndex - lastIndex;\n var firstNodeIndex = outerNodes.indexOf(firstFocus);\n var lastNodeIndex = outerNodes.indexOf(lastFocus);\n var correctedNodes = correctNodes(outerNodes);\n var correctedIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n var correctedIndexDiff = correctedIndex - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n var returnFirstNode = pickFocusable(innerNodes, 0);\n var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n // new focus\n if (activeIndex === -1 || lastNodeInside === -1) {\n return NEW_FOCUS;\n }\n // old focus\n if (!indexDiff && lastNodeInside >= 0) {\n return lastNodeInside;\n }\n // first element\n if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnLastNode;\n }\n // last element\n if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnFirstNode;\n }\n // jump out, but not on the guard\n if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n return lastNodeInside;\n }\n // focus above lock\n if (activeIndex <= firstNodeIndex) {\n return returnLastNode;\n }\n // focus below lock\n if (activeIndex > lastNodeIndex) {\n return returnFirstNode;\n }\n // index is inside tab order, but outside Lock\n if (indexDiff) {\n if (Math.abs(indexDiff) > 1) {\n return lastNodeInside;\n }\n return (cnt + lastNodeInside + indexDiff) % cnt;\n }\n // do nothing\n return undefined;\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { contains } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n if (parents === void 0) { parents = []; }\n parents.push(node);\n if (node.parentNode) {\n getParents(node.parentNode.host || node.parentNode, parents);\n }\n return parents;\n};\n/**\n * finds a parent for both nodeA and nodeB\n * @param nodeA\n * @param nodeB\n * @returns {boolean|*}\n */\nexport var getCommonParent = function (nodeA, nodeB) {\n var parentsA = getParents(nodeA);\n var parentsB = getParents(nodeB);\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < parentsA.length; i += 1) {\n var currentParent = parentsA[i];\n if (parentsB.indexOf(currentParent) >= 0) {\n return currentParent;\n }\n }\n return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n var activeElements = asArray(baseActiveElement);\n var leftEntries = asArray(leftEntry);\n var activeElement = activeElements[0];\n var topCommon = false;\n leftEntries.filter(Boolean).forEach(function (entry) {\n topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n rightEntries.filter(Boolean).forEach(function (subEntry) {\n var common = getCommonParent(activeElement, subEntry);\n if (common) {\n if (!topCommon || contains(common, topCommon)) {\n topCommon = common;\n }\n else {\n topCommon = getCommonParent(common, topCommon);\n }\n }\n });\n });\n // TODO: add assert here?\n return topCommon;\n};\n/**\n * return list of nodes which are expected to be autofocused inside a given top nodes\n * @param entries\n * @param visibilityCache\n */\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { filterAutoFocusable, getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { getDataset, isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) {\n return function (node) { var _a; \n // @ts-expect-error\n return node.autofocus || !!((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus) || autoFocusables.indexOf(node) >= 0; };\n};\nvar reorderNodes = function (srcNodes, dstNodes) {\n var remap = new Map();\n // no Set(dstNodes) for IE11 :(\n dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n // remap to dstNodes\n return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\n/**\n * given top node(s) and the last active element return the element to be focused next\n * @param topNode\n * @param lastNode\n */\nexport var getFocusMerge = function (topNode, lastNode) {\n var activeElement = document && getActiveElement();\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n var visibilityCache = new Map();\n var anyFocusable = getAllTabbableNodes(entries, visibilityCache);\n var innerElements = getTabbableNodes(entries, visibilityCache).filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n });\n if (!innerElements[0]) {\n innerElements = anyFocusable;\n if (!innerElements[0]) {\n return undefined;\n }\n }\n var outerNodes = getAllTabbableNodes([commonParent], visibilityCache).map(function (_a) {\n var node = _a.node;\n return node;\n });\n var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n var innerNodes = orderedInnerElements.map(function (_a) {\n var node = _a.node;\n return node;\n });\n var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n if (newId === NEW_FOCUS) {\n var autoFocusable = filterAutoFocusable(anyFocusable.map(function (_a) {\n var node = _a.node;\n return node;\n })).filter(findAutoFocused(allParentAutofocusables(entries, visibilityCache)));\n return {\n node: autoFocusable && autoFocusable.length\n ? pickFirstFocus(autoFocusable)\n : pickFirstFocus(filterAutoFocusable(innerNodes)),\n };\n }\n if (newId === undefined) {\n return newId;\n }\n return orderedInnerElements[newId];\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\n/**\n * return list of focusable elements inside a given top node\n * @deprecated use {@link getFocusableIn}. Yep, there is typo in the function name\n */\nexport var getFocusabledIn = function (topNode) {\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(topNode, topNode, entries);\n var visibilityCache = new Map();\n var outerNodes = getTabbableNodes([commonParent], visibilityCache, true);\n var innerElements = getTabbableNodes(entries, visibilityCache)\n .filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n })\n .map(function (_a) {\n var node = _a.node;\n return node;\n });\n return outerNodes.map(function (_a) {\n var node = _a.node, index = _a.index;\n return ({\n node: node,\n index: index,\n lockItem: innerElements.indexOf(node) >= 0,\n guard: isGuard(node),\n });\n });\n};\n/**\n * return list of focusable elements inside a given top node\n */\nexport var getFocusableIn = getFocusabledIn;\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target, focusOptions) {\n if ('focus' in target) {\n target.focus(focusOptions);\n }\n if ('contentWindow' in target && target.contentWindow) {\n target.contentWindow.focus();\n }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\n/**\n * Sets focus at a given node. The last focused element will help to determine which element(first or last) should be focused.\n * HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus\n * @param topNode\n * @param lastNode\n * @param options\n */\nexport var setFocus = function (topNode, lastNode, options) {\n if (options === void 0) { options = {}; }\n var focusable = getFocusMerge(topNode, lastNode);\n if (lockDisabled) {\n return;\n }\n if (focusable) {\n if (guardCount > 2) {\n // tslint:disable-next-line:no-console\n console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n 'See https://github.com/theKashey/focus-lock/#focus-fighting');\n lockDisabled = true;\n setTimeout(function () {\n lockDisabled = false;\n }, 1);\n return;\n }\n guardCount++;\n focusOn(focusable.node, options.focusOptions);\n guardCount--;\n }\n};\n","export enum BentoFocusTrapArrowNavigationDirection {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n}\n\nexport enum BentoFocusTrapVerticalNavigationEvent {\n ARROW_UP = 'arrowup',\n ARROW_DOWN = 'arrowdown',\n}\n\nexport enum BentoFocusTrapHorizontalNavigationEvent {\n ARROW_LEFT = 'arrowleft',\n ARROW_RIGHT = 'arrowright',\n}\n\nexport interface BentoFocusTrapFocusableIn {\n node: HTMLElement;\n /**\n * tab index\n */\n index: number;\n /**\n * true, if this node belongs to a Lock\n */\n lockItem: boolean;\n /**\n * true, if this node is a focus-guard (system node)\n */\n guard: boolean;\n}\n","import { getFocusableIn } from 'focus-lock';\nimport {\n BentoFocusTrapFocusableIn,\n BentoFocusTrapHorizontalNavigationEvent,\n BentoFocusTrapVerticalNavigationEvent,\n} from './focus-trap.types';\n\n/**\n * Perform callback before next re-paint frame of browser.\n *\n * @param action\n * @returns\n */\nexport const deferAction = (callback: FrameRequestCallback) => requestAnimationFrame(callback);\n\n/**\n * Get's the index number of the current node inside an array of focusable elements.\n *\n * @param node an HTMLElement node\n * @param nodes an array of focusable elements\n * @returns\n */\nconst getNodeIndex = (node: Element, nodes: BentoFocusTrapFocusableIn[]) => {\n const index = nodes.findIndex(item => item.node === node);\n return index === -1 ? 0 : index;\n};\n\n/**\n * Retrieves the next focusable element using a factor to either choose\n * the next or previous focusable element.\n *\n * @param factor a number +1 or -1\n * @param element the element to checks for focusable elements inside of\n * @returns\n */\nexport const getNextFocusableElement = (factor, element): HTMLElement => {\n const currentFocusedEl = document.activeElement;\n const focusableElements = getFocusableIn(element);\n const nextIndex = getNodeIndex(currentFocusedEl, focusableElements) + factor;\n return focusableElements[nextIndex]?.node || (currentFocusedEl as HTMLElement);\n};\n\n/**\n * Returns an object is if keyboard event key is an arrow previous or next key.\n * this changes depending on if the arrow navigation is horizontal or vertical.\n *\n * @param event\n * @param arrowOrder\n * @returns { isArrowNext: boolean, isArrowPrev: boolean }\n */\nexport const getArrowType = (\n event: KeyboardEvent,\n arrowOrder: BentoFocusTrapVerticalNavigationEvent[] | BentoFocusTrapHorizontalNavigationEvent[]\n) => {\n const eventKey = event.key.toLowerCase();\n return {\n isArrowNext: eventKey === arrowOrder[0],\n isArrowPrev: eventKey === arrowOrder[1],\n };\n};\n\n/**\n * Default scrolling into view options\n */\nexport const SCROLL_INTO_VIEW_OPTIONS: ScrollIntoViewOptions = {\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n};\n","<template>\n <div\n v-if=\"$slots.default\"\n class=\"b-focus-trap\"\n data-testid=\"focus-trap\"\n tabindex=\"-1\"\n v-on=\"arrowNavigation ? { keydown: onKeyDown } : null\"\n @focusout=\"onBlur\"\n >\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import moveFocusInside, { focusInside, focusIsHidden } from 'focus-lock';\n import {\n BentoFocusTrapArrowNavigationDirection,\n BentoFocusTrapHorizontalNavigationEvent,\n BentoFocusTrapVerticalNavigationEvent,\n } from './focus-trap.types';\n import { deferAction, getArrowType, getNextFocusableElement, SCROLL_INTO_VIEW_OPTIONS } from './focus-trap.utils';\n\n /**\n * Locks the focus inside an element for a11y navigation.\n * Useful for things like modals, popovers, etc...\n *\n * @example\n * import { BentoFocusTrap, BentoButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFocusTrap, BentoButton },\n * template: `\n * <div id=\"import-choice\">\n * <bento-focus-trap>\n * Make a choice to proceed further!\n * <bento-button>Yes</bento-button>\n * <bento-button>No</bento-button>\n * </bento-focus-trap>\n * </div>\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-focus-trap',\n props: {\n /**\n * Enables / Disables arrow navigation as well can determine the type of arrow navigation.\n * The types of arrow navigation are horizontal and vertical.\n */\n arrowNavigation: {\n type: String as PropType<BentoFocusTrapArrowNavigationDirection>,\n default: undefined,\n validator: value =>\n Object.values(BentoFocusTrapArrowNavigationDirection).includes(\n value as BentoFocusTrapArrowNavigationDirection\n ),\n },\n /**\n * Enables / disables the focus trap.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n data: () => ({\n lastFocusedElement: null,\n }),\n computed: {\n isHorizontalArrowNavigation(): boolean {\n return this.arrowNavigation === BentoFocusTrapArrowNavigationDirection.HORIZONTAL;\n },\n isVerticalArrowNavigation(): boolean {\n return this.arrowNavigation === BentoFocusTrapArrowNavigationDirection.VERTICAL;\n },\n arrowOrder() {\n return this.isVerticalArrowNavigation\n ? Object.values(BentoFocusTrapVerticalNavigationEvent)\n : Object.values(BentoFocusTrapHorizontalNavigationEvent);\n },\n },\n watch: {\n /**\n * If the disabled prop changes, then enable / disable the focus trap.\n */\n disabled() {\n if (this.disabled) {\n this.disable();\n } else {\n this.setFocusInside();\n }\n },\n },\n mounted() {\n if (this.disabled) {\n return;\n }\n this.setFocusInside();\n },\n beforeDestroy() {\n if (this.disabled) {\n return;\n }\n this.disable();\n },\n methods: {\n /**\n * Set focus back inside the element area, giving the last focus element\n * `focus-lock` can determine the next interable element to focus on.\n */\n async setFocusInside() {\n const isFocusOnBody = document.activeElement === document.body;\n if (isFocusOnBody || focusIsHidden() || !this.lastFocusedElement) {\n if (!focusInside(this.$el as HTMLElement)) {\n moveFocusInside(this.$el as HTMLElement, this.lastFocusedElement);\n }\n this.lastFocusedElement = document.activeElement;\n }\n },\n /**\n * On blur, trap the focus inside!\n */\n onBlur() {\n if (this.disabled) {\n return;\n }\n deferAction(this.setFocusInside);\n },\n /**\n * If the no arrow navigation is enabled\n * or if the currently focus element is a textarea or an input then prevent navigation.\n */\n shouldPreventNavigation() {\n if (!this.isVerticalArrowNavigation && !this.isHorizontalArrowNavigation) {\n return false;\n }\n\n const currentTag = document.activeElement.tagName.toLowerCase();\n const possibleFormControls = this.isVerticalArrowNavigation\n ? ['textarea', 'select']\n : ['input', 'textarea'];\n return possibleFormControls.includes(currentTag);\n },\n /**\n * When an arrow key is pressed then navigate to the next focusable element.\n * If trap is disabled or is content editable then prevent arrow navigation.\n *\n * @param event on keyboard press event\n */\n onKeyDown(event: KeyboardEvent) {\n if (\n this.disabled ||\n (document.activeElement as HTMLElement).isContentEditable ||\n this.shouldPreventNavigation()\n ) {\n return;\n }\n\n const { isArrowNext, isArrowPrev } = getArrowType(event, this.arrowOrder);\n if (isArrowPrev || isArrowNext) {\n event.preventDefault();\n event.stopPropagation();\n const focusableEl = getNextFocusableElement(isArrowPrev ? 1 : -1, this.$el);\n focusableEl.focus();\n if ('scrollIntoView' in focusableEl) {\n const options =\n 'scrollBehavior' in document.documentElement.style ? SCROLL_INTO_VIEW_OPTIONS : false;\n focusableEl.scrollIntoView(options);\n }\n }\n },\n /**\n * If focus trap is disabled then return focus to last focus element, parent node or simply the document body.\n */\n disable() {\n const focusOnDestroyEl = this.lastFocusedElement || this.$el.parentNode || document.body;\n if (focusOnDestroyEl) {\n focusOnDestroyEl.focus();\n }\n },\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .b-focus-trap {\n outline: none;\n }\n</style>\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 type { VueNodeElement } from '../../types';\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 <bento-focus-trap\n :id=\"id\"\n :disabled=\"disabledFocusTrap\"\n class=\"b-popper-container\"\n :role=\"ariaRole\"\n :aria-label=\"ariaLabel\"\n >\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 </bento-focus-trap>\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 { BentoFocusTrap } from '@/components/focus-trap';\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 type { VueNodeElement } from '@/types';\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 components: { BentoFocusTrap },\n inheritAttrs: false,\n props: {\n /**\n * The id to be set on the component. Use it for accessibility purposes.\n */\n id: { type: String, default: null },\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 /**\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","import type { AnyFn, MaybeComputedElementRef, MaybeElement, VueInstance } from '../../types';\nimport { unref } from 'vue';\n\nconst isClient = typeof window !== 'undefined';\n\nexport const defaultWindow = /* #__PURE__ */ isClient ? window : undefined;\n\nexport const isIOS =\n /* #__PURE__ */ isClient && window?.navigator?.userAgent && /iP(ad|hone|od)/.test(window.navigator.userAgent);\n\n/**\n * Get the value of value/ref/getter.\n */\nexport function resolveUnref<T>(r): T {\n return typeof r === 'function' ? (r as AnyFn<T>)() : unref<T>(r);\n}\n\n/**\n * Get the dom element of a ref of element or Vue component instance\n *\n * @param elRef\n */\nexport function unrefElement<T extends MaybeElement>(elRef: MaybeComputedElementRef<T>): any {\n const plain = resolveUnref(elRef);\n return (plain as VueInstance)?.$el ?? plain;\n}\n\n// No operation\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {};\n","import type { Fn, MaybeComputedRef, MaybeElementRef } from '../../../types';\nimport type { Arrayable, GeneralEventListener } from './types';\nimport { watch } from 'vue';\nimport { defaultWindow, noop, resolveUnref, unrefElement } from '../utils';\n\n/**\n * Verify type of input value\n * @param val Value to be evaluated as string\n * @returns {boolean} true if the value is a \"string\", false if it's something else\n */\nconst isString = (val: unknown): val is string => typeof val === 'string';\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 1: Omitted Window target\n *\n * @see https://vueuse.org/useEventListener\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<E extends keyof WindowEventMap>(\n event: Arrayable<E>,\n listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => unknown>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 2: Explicitly Window target\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<E extends keyof WindowEventMap>(\n target: Window,\n event: Arrayable<E>,\n listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => unknown>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 3: Explicitly Document target\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<E extends keyof DocumentEventMap>(\n target: DocumentOrShadowRoot,\n event: Arrayable<E>,\n listener: Arrayable<(this: Document, ev: DocumentEventMap[E]) => unknown>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 4: Custom event target with event type infer\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<Names extends string, EventType = Event>(\n target: EventTarget,\n event: Arrayable<Names>,\n listener: Arrayable<GeneralEventListener<EventType>>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 5: Custom event target fallback\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<EventType = Event>(\n target: MaybeComputedRef<EventTarget | null | undefined>,\n event: Arrayable<string>,\n listener: Arrayable<GeneralEventListener<EventType>>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\nexport function useEventListener(...args) {\n let target: MaybeComputedRef<EventTarget> | undefined;\n let events: Arrayable<string>;\n let listeners: Arrayable<EventListenerOrEventListenerObject>;\n let options: MaybeComputedRef<boolean | AddEventListenerOptions> | undefined;\n\n if (isString(args[0]) || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n\n if (!target) return noop;\n\n if (!Array.isArray(events)) events = [events];\n if (!Array.isArray(listeners)) listeners = [listeners];\n\n const cleanups: Array<() => void> = [];\n const cleanup = () => {\n cleanups.forEach(fn => fn());\n cleanups.length = 0;\n };\n\n const register = (\n el: EventTarget,\n event: string,\n listener: EventListenerOrEventListenerObject,\n registerOptions: boolean | AddEventListenerOptions\n ) => {\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n el.addEventListener(event, listener, registerOptions);\n return () => el.removeEventListener(event, listener, registerOptions);\n };\n\n const stopWatch = watch(\n () => [unrefElement(target as unknown as MaybeElementRef), resolveUnref(options)],\n ([el, stopWatchOptions]) => {\n cleanup();\n if (!el) return;\n\n cleanups.push(\n ...(events as string[]).flatMap(event =>\n (listeners as EventListenerOrEventListenerObject[]).map(listener =>\n register(\n el as EventTarget,\n event,\n listener as EventListenerOrEventListenerObject,\n stopWatchOptions as boolean | AddEventListenerOptions\n )\n )\n )\n );\n },\n { immediate: true, flush: 'post' }\n );\n\n const stop = () => {\n stopWatch();\n cleanup();\n };\n\n return stop;\n}\n","import type { Fn, MaybeElementRef } from '../../types';\nimport type { OnClickOutsideHandler, OnClickOutsideOptions } from './types';\nimport { useEventListener } from './useEventListener';\nimport { defaultWindow, isIOS, noop, unrefElement } from './utils';\n\n// eslint-disable-next-line no-underscore-dangle\nlet _iOSWorkaround = false;\n\n/**\n * Listen for clicks outside of an element.\n *\n * @see https://vueuse.org/onClickOutside\n * @param target\n * @param handler\n * @param options\n */\nexport function onClickOutside<T extends OnClickOutsideOptions>(\n target: MaybeElementRef,\n handler: OnClickOutsideHandler,\n options: T = {} as T\n) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n\n if (!window) return;\n\n // Fixes \"onClickOutside not working on Safari iOS\": https://github.com/vueuse/vueuse/issues/1520\n // How it works: https://stackoverflow.com/a/39712411\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n Array.from(window.document.body.children).forEach((el: Element) => el.addEventListener('click', noop));\n }\n\n let shouldListen = true;\n\n const shouldIgnore = (event: PointerEvent) =>\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ignore.some(target => {\n if (typeof target === 'string') {\n return Array.from(window.document.querySelectorAll(target)).some(\n (el: Element) => el === event.target || event.composedPath().includes(el)\n );\n }\n\n const el = unrefElement(target) as EventTarget;\n return el && (event.target === el || event.composedPath().includes(el));\n });\n\n const listener = (event: PointerEvent) => {\n const el = unrefElement(target) as EventTarget;\n\n if (!el || el === event.target || event.composedPath().includes(el)) return;\n\n if (event.detail === 0) shouldListen = !shouldIgnore(event);\n\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n\n handler(event);\n };\n\n const cleanup = [\n useEventListener(window, 'click', listener, { passive: true, capture }),\n useEventListener(\n window,\n 'pointerdown',\n e => {\n const el = unrefElement(target) as EventTarget;\n if (el) shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n },\n { passive: true }\n ),\n detectIframe &&\n useEventListener(window, 'blur', event => {\n const el: Element = unrefElement(target);\n if (window.document.activeElement?.tagName === 'IFRAME' && !el?.contains(window.document.activeElement))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler(event as any);\n }),\n ].filter(Boolean) as Fn[];\n\n const stop = () => cleanup.forEach(fn => fn());\n\n // eslint-disable-next-line consistent-return\n return stop;\n}\n","import type { ObjectDirective } from 'vue';\nimport { onClickOutside } from './on-click-outside';\n\ntype Element = HTMLElement & { __onClickOutside_stop?: () => void };\n\nexport const BentoClickOutsideDirective: ObjectDirective<Element> = {\n // Attach listener to target element\n inserted(targetElement, binding) {\n const capture = !binding.modifiers.bubble;\n if (typeof binding.value === 'function') {\n // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n targetElement.__onClickOutside_stop = onClickOutside(targetElement, binding.value, { capture });\n } else {\n const [handler, options] = binding.value;\n // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n targetElement.__onClickOutside_stop = onClickOutside(targetElement, handler, { capture, ...options });\n }\n },\n // Remove listener from the target element\n unbind(targetElement) {\n // eslint-disable-next-line no-underscore-dangle\n targetElement.__onClickOutside_stop();\n },\n};\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 v-bento-click-outside-directive=\"closeOpenedDropdown\" 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 { BentoClickOutsideDirective } from '@/directives/click-outside';\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 directives: { BentoClickOutsideDirective },\n inheritAttrs: false,\n props: {\n /**\n * Defines a string value that labels an interactive element.\n */\n // TODO: define aria label approach and use useAriaLabel\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 const closeOpenedDropdown = () => {\n if (isDropdownOpen.value) {\n isDropdownOpen.value = false;\n }\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 closeOpenedDropdown,\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: '20', value: 20 },\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 <div class=\"b-pagination\">\n <nav :aria-label=\"ariaLabel\" class=\"b-pagination__navigation\" :class=\"navigationConditionalClasses\">\n <bento-pagination-results-per-page\n v-if=\"!hidePageSize\"\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 </div>\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 * Toggles the visibility of the \"results per page\" part of the pagination component.\n */\n hidePageSize: {\n type: Boolean,\n default: false,\n },\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: 20,\n validator: (itemsPerPageValue: number) => [10, 20, 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 const navigationConditionalClasses = computed(() => ({\n 'b-pagination__navigation--no-results-per-page': props.hidePageSize,\n }));\n\n return {\n // Values\n totalPages,\n navigationConditionalClasses,\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-typography :strongest=\"isStrongest\" :variant=\"titleVariant\" :el=\"BentoTypographyElement.SPAN\">\n {{ title }}\n </bento-typography>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n export default defineComponent({\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Indicates if the popover contains an image.\n */\n isImageTitle: { type: Boolean, default: false },\n\n /**\n * Indicates the title you want to give the popover.\n */\n title: { type: String, default: null },\n },\n setup(props) {\n // Use strongest only when it has no image\n const isStrongest = computed(() => !props.isImageTitle);\n\n // If an image is present, change the variant from BODY to SUBTITLE and remove the \"strongest\" property of the title\n const titleVariant = computed(() =>\n props.isImageTitle ? BentoTypographyVariant.SUBTITLE : BentoTypographyVariant.BODY\n );\n\n return {\n // Values\n isStrongest,\n titleVariant,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\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-popover-title :title=\"title\" :is-image-title=\"!!$slots.image\" />\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\" :class=\"contentConditionalClasses\">\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, toRefs } from 'vue';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { PopperContainer, PopperContainerAriaRole } from '@/components/popper-container';\n import { BentoPopoverPositions } from './popover.types';\n import { BentoButtonActions, BentoButtonActionsLayout, BentoButtonActionsList } from '@/components/button';\n import BentoPopoverTitle from './components/popover-title/popover-title.vue';\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-vue2';\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 BentoButtonActions,\n BentoPopoverDismissButton,\n BentoPopoverTitle,\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 { ariaLabel, title } = toRefs(props);\n\n const computedAriaLabel = useAriaLabel({ ariaLabel, label: title });\n\n const conditionalClasses = computed(() => ({\n 'b-popover--small': props.small && !props.large,\n 'b-popover--large': props.large && !props.small,\n }));\n\n const contentConditionalClasses = computed(() => ({\n 'b-popover__content--with-title': !!props.title,\n }));\n\n const dismissPopover = () => emit('dismiss');\n\n return {\n // Values\n conditionalClasses,\n contentConditionalClasses,\n computedAriaLabel,\n\n // Enums\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 '../../components/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","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 from 'vue';\n\nexport interface ListenOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n self?: boolean;\n vm?: Vue;\n onCleanup?: () => void;\n}\n\nexport enum KeyCode {\n ESCAPE = 27,\n}\n","<template>\n <popper-container\n :id=\"id\"\n :target-element=\"targetElement\"\n :position=\"position\"\n :fallback-position=\"PopperContainerPositionExtended.AUTO\"\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, PropType } from 'vue';\n import { BentoTooltipPosition, BentoTooltipState } from '@/directives/tooltip/tooltip.types';\n import {\n PopperContainer,\n PopperContainerAriaRole,\n PopperContainerPositionExtended,\n } from '@/components/popper-container';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n /**\n * Tooltip container, to be used internally to render the tooltip container where the text is shown.\n */\n export default defineComponent({\n name: 'tooltip',\n components: { BentoTypography, PopperContainer },\n inheritAttrs: false,\n props: {\n /**\n * The tooltip's id. Necessary for accessibility purposes.\n */\n id: { type: String, default: null },\n /**\n * Tooltip's target reference to the DOM element or Vue component.\n * The tooltip will position itself relatively to target element, in the 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 const conditionalClasses = computed(() => ({\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 PopperContainerPositionExtended,\n\n // Values\n conditionalClasses,\n tabIndex,\n };\n },\n });\n\n export class Tooltip {}\n</script>\n\n<style lang=\"scss\" scoped src=\"./tooltip.scss\" />\n","import Vue, { DirectiveOptions } from 'vue';\nimport { listen } from '../../utils/ts/events';\nimport { generateUid } from '../../utils/ts/unique-id';\nimport { KeyCode } from '../../types/utils-events';\nimport Tooltip from '../../components/tooltip/tooltip.vue';\nimport { BentoTooltipPosition, TooltipInstance } from './tooltip.types';\nimport type { DirectiveBinding } from 'vue/types/options';\n\n/**\n * Tooltip directive to render a tooltip on a given HTML element or component.\n *\n * @usage\n * import { BentoTooltipDirective } from '@adyen/bento-vue2';\n *\n * export default {\n * directives: { BentoTooltipDirective },\n * template: `\n * <bento-button\n * v-bento-tooltip-directive:top=\"Tooltip Content\"\n * >\n * Button text\n * </bento-button>\n * `,\n * }\n */\nconst TooltipComponent = Vue.extend(Tooltip);\nconst tooltipInstances: Array<TooltipInstance> = [];\nconst ariaDescribedByAttr = 'aria-describedby';\nconst tooltipId = generateUid('tooltip');\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 // Sets the target's 'aria-describedby' attribute\n el.setAttribute(ariaDescribedByAttr, tooltipId);\n // Sets the target's tabindex so as to make the tooltip interactive via keyboard navigation\n el.setAttribute('tabindex', '0');\n // eslint-disable-next-line no-param-reassign\n el.style.width = 'fit-content';\n tooltip = new TooltipComponent({ propsData: { targetElement: el, content: '', id: tooltipId } }).$mount();\n // Tooltip is not mounted 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 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 * @internal\n */\nconst hideTooltip = () => {\n open = false;\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-vue2';\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 */\nexport const BentoTooltipDirective: 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();\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 listen(el, 'keydown', evt => {\n const keyboardEvent = <KeyboardEvent>evt;\n if (keyboardEvent.keyCode === KeyCode.ESCAPE) {\n hide();\n }\n }),\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();\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","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","<template>\n <div v-bento-click-outside-directive=\"onClickOutside\" 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 { BentoClickOutsideDirective, BentoTooltipDirective, BentoTooltipPosition } from '@/directives';\n import { useFilterLabel } from './composables';\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: {\n BentoClickOutsideDirective,\n BentoTooltipDirective,\n },\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 onClickOutside = () => closePopover();\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 onClickOutside,\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\nexport enum BentoInputFieldType {\n SEARCH = 'search',\n TEXT = 'text',\n}\n","<template>\n <bento-typography\n class=\"b-input-field\"\n data-testid=\"input-text-container\"\n :class=\"inputFieldConditionalClasses\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\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=\"ariaHidden ? 'true' : undefined\"\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=\"ariaHidden ? 'true' : undefined\"\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 <input\n ref=\"inputFieldElement\"\n class=\"b-input-field__input\"\n :aria-label=\"ariaLabel\"\n :type=\"type\"\n :value=\"value\"\n :disabled=\"disabled\"\n @input=\"onInput\"\n />\n <span\n v-if=\"$slots.iconAfter\"\n :aria-hidden=\"ariaHidden ? 'true' : undefined\"\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 </bento-typography>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import {\n BentoInputFieldStateClass,\n BentoInputFieldStaticValuePosition,\n BentoInputFieldType,\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 * Indicates whether the element is exposed to an accessibility API.\n */\n ariaHidden: { type: Boolean, default: true },\n\n /**\n * Text that labels an the input element\n */\n ariaLabel: { type: String, default: undefined },\n\n /**\n * Disables the possibility of changing value in the input-field\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Adds error validation class for outlining input-field\n */\n error: { type: Boolean, default: false },\n\n /**\n * Static text that displayed before or after input value\n * Applicable to the Static Value variant\n */\n staticValue: { type: String, 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 /**\n * A string specifying the type of control to render.\n */\n type: {\n type: String as PropType<BentoInputFieldType>,\n default: BentoInputFieldType.TEXT,\n },\n\n /**\n * Text displayed as the value of the input-field\n */\n value: { type: String, 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 enum BentoColumnOverflow {\n WRAP = 'wrap',\n ELLIPSIS = 'ellipsis',\n}\n\nexport interface BentoColumn {\n field: string;\n label: string;\n width?: number;\n minWidth?: number;\n flex?: number;\n sortable?: boolean;\n numeric?: boolean;\n padding?: {\n left?: boolean;\n right?: boolean;\n };\n overflow?: BentoColumnOverflow;\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\nexport interface BentoColumnWidthOverridesLookup {\n [field: string]: {\n width: BentoColumn['width'];\n minWidth: BentoColumn['minWidth'];\n };\n}\n\nexport interface BentoDatagridAllItemsSelectedState {\n allItemsSelected: boolean;\n isIndeterminate: boolean;\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","/* eslint-disable no-param-reassign */\nimport { computed, reactive, ref, Ref, toRefs, watchEffect } from 'vue';\nimport { listen } from '../../../utils/ts/events';\nimport { BentoColumn, BentoColumnWidthOverridesLookup } 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 const columnWidthOverridesLookup = ref<BentoColumnWidthOverridesLookup>(undefined);\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 let stepPositionX = 0;\n let resizingColumnField = '';\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 // eslint-disable-next-line no-return-assign\n watchEffect(() => (columnWidthOverridesLookup.value = 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 - stepPositionX;\n const currResizingColumnField = resizingColumnField;\n\n const resizedColumnWidth = columnWidthOverridesLookup.value[currResizingColumnField].width + sizeChange;\n // If the column width is more than the minWidth set the new resized width or else use the minWidth\n columnWidthOverridesLookup.value[currResizingColumnField].width =\n resizedColumnWidth > columnWidthOverridesLookup.value[currResizingColumnField].minWidth\n ? resizedColumnWidth\n : columnWidthOverridesLookup.value[currResizingColumnField].minWidth;\n /**\n * Triggered when a column is resized\n *\n * @event column-resizing\n * @property BentoColumnWidthOverridesLookup columnWidthOverridesLookup - the column width overrides.\n */\n emit('column-resizing', columnWidthOverridesLookup.value);\n\n 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 (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: resizingColumnField,\n width: columnWidthOverridesLookup.value[resizingColumnField].width,\n });\n }\n\n // Reset all resize vars back to defaults\n removeMouseMoveResizeListener = null;\n removeMouseUpResizeListener = null;\n resizingColumnField = '';\n 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 resizingColumnField = field;\n stepPositionX = event.clientX;\n\n removeMouseMoveResizeListener = listen(window, 'mousemove', onResizeColumn);\n removeMouseUpResizeListener = listen(window, 'mouseup', stopResize);\n }\n };\n\n return { resizeData: columnWidthOverridesLookup, allColumnRefs, startResize };\n};\n\nexport default useResizer;\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","import { computed, nextTick, onMounted, ref } from 'vue';\nimport { BentoColumn, BentoColumnWidthOverridesLookup } from '../../data-grid.types';\nimport { CalculateColumnWidthOptions, FlexColumnLookup } from './useCalculateColumnWidth.types';\nimport { MaybeRef } from '../../../../types';\nimport { observeSizeOfElement } from '../../../../utils/ts/resize';\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 bodyRef: MaybeRef<HTMLDivElement | undefined>,\n options?: CalculateColumnWidthOptions\n) => {\n const columns = ref(newColumns);\n const body = ref(bodyRef);\n\n // Observe the size of the table body and store the width for column and CSS width calculations\n const gridWidth = ref<number>();\n onMounted(() => {\n nextTick(() => {\n observeSizeOfElement(body.value, ({ width }) => {\n gridWidth.value = width;\n });\n });\n });\n\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 // RESIZE OBJECT\n const columnWidthOverridesLookup = ref<BentoColumnWidthOverridesLookup>(undefined);\n\n const onColumnWidthOverride = (newColumnWidthOverridesLookup: BentoColumnWidthOverridesLookup) => {\n columnWidthOverridesLookup.value = newColumnWidthOverridesLookup;\n };\n\n const processedColumns = computed(() =>\n caclulatedWidths.value.map(col => ({\n ...col,\n // Override column width with resized ones\n width: columnWidthOverridesLookup.value?.[col.field]?.width ?? 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 gridWidth.value > totalWidthOfAllCalculatedWidths ? gridWidth.value : 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 return { columnDefs: processedColumns, gridColumnWidthStyle, onColumnWidthOverride };\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-columns__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.ASCENDING\n ? BentoDatagridSortDirection.DESCENDING\n : BentoDatagridSortDirection.ASCENDING,\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 BentoDatagridAllItemsSelectedState,\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<BentoDatagridAllItemsSelectedState>({\n allItemsSelected: false,\n isIndeterminate: false,\n });\n\n const emitSelect = () => {\n emit('select', selectedItems.value);\n };\n\n const onAllRowSelect = (allItemsSelected: boolean) => {\n nextTick(() => {\n if (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.allItemsSelected = allItemsSelected;\n allItemsSelectedState.isIndeterminate = false;\n emitSelect();\n });\n };\n\n const onRowSelect = () => {\n nextTick(() => {\n const isEveryItemSelected = data.value\n ?.filter(dataItem => !isDataItemDisabled(dataItem))\n .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 onRowSelect();\n\n return { onAllRowSelect, onRowSelect, allItemsSelectedState, selectedItems };\n};\n","import { ref } from 'vue';\nimport { MaybeRef } from '../../../types';\n\n/**\n * All Datagrid configuration settings logic:\n * - Compact view toggle\n *\n * @param condensed - initial state of compact view toggle\n * @returns compact view data & event handler\n */\nexport const useConfigSettings = (condensed: MaybeRef<boolean>) => {\n const compactView = ref(condensed);\n\n // eslint-disable-next-line no-return-assign\n const onConfigSettingsUpdate = (isCompactView: boolean) => (compactView.value = isCompactView);\n\n return { compactView, onConfigSettingsUpdate };\n};\n","<template>\n <div :style=\"gridColumnWidthStyle\" class=\"b-data-grid-columns\" role=\"row\">\n <div\n v-for=\"(column, index) in columns\"\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-columns__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-columns__column-sort\">\n <triangle-up\n class=\"b-data-grid-columns__column-sort-icon\"\n :class=\"conditionalSortDirectionClasses(column.field, BentoDatagridSortDirection.ASCENDING)\"\n :svg-title=\"`${column.field} sort ascending`\"\n :data-testid=\"`${column.field}-sort-icon-asc`\"\n />\n <triangle-down\n class=\"b-data-grid-columns__column-sort-icon\"\n :class=\"conditionalSortDirectionClasses(column.field, BentoDatagridSortDirection.DESCENDING)\"\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-columns__column-seperator-container\"\n role=\"presentation\"\n @mousedown=\"startResize(hasResizableColumns, column.field, $event)\"\n @click.stop\n >\n <div class=\"b-data-grid-columns__column-seperator\"></div>\n </div>\n </template>\n <template v-else>\n <bento-checkbox\n v-model=\"allItemsSelectedCheckboxState.allItemsSelected\"\n data-testid=\"checkbox-select-all\"\n :indeterminate=\"allItemsSelectedCheckboxState.isIndeterminate\"\n value=\"data-grid-select-all\"\n @input=\"onAllRowSelect\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRefs } from 'vue';\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 '@/components/checkbox';\n import {\n BentoColumn,\n BentoDatagridAllItemsSelectedState,\n BentoDatagridSortByColumn,\n BentoDatagridSortDirection,\n } from '../../data-grid.types';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { DATAGRID_SELECT_FIELD_NAME, useResizer, useSorter } from '../../composables';\n\n export default defineComponent({\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n BentoTypography,\n TriangleUp,\n TriangleDown,\n },\n inheritAttrs: false,\n props: {\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 * If resize is enabled\n */\n hasResizableColumns: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The column all items selected state\n */\n allItemsSelectedState: {\n type: Object as PropType<BentoDatagridAllItemsSelectedState>,\n default: undefined,\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 /**\n */\n gridColumnWidthStyle: {\n type: Object,\n required: true,\n },\n },\n emits: ['column-resize', 'sort', 'select-all-rows'],\n setup(props, { emit }) {\n const { columns, sortBy } = toRefs(props);\n\n // Selecting\n const allItemsSelectedCheckboxState = ref(props.allItemsSelectedState);\n const onAllRowSelect = (areAllItemsSelected: boolean) => emit('select-all-rows', areAllItemsSelected);\n // Resizing\n const { allColumnRefs, startResize } = useResizer(columns, emit);\n\n // Sorting\n const { conditionalSortDirectionClasses, sortByColumnField } = useSorter(sortBy, columns, emit);\n\n // Conditional column styles\n const conditionalColumnClasses = (column: BentoColumn) => ({\n 'b-data-grid-columns__column--sortable': column.sortable,\n 'b-data-grid-columns__column--padding-left-unset': column?.padding?.left === false,\n 'b-data-grid-columns__column--padding-right-unset': column?.padding?.right === false,\n 'b-data-grid-columns__column--numeric': column?.numeric,\n });\n\n const conditionalColumnSeperatorClasses = computed(() => ({\n 'b-data-grid-columns__column-seperator-container--is-resizeable': props.hasResizableColumns,\n }));\n\n return {\n // Refs\n ...allColumnRefs,\n\n // Values\n DATAGRID_SELECT_FIELD_NAME,\n\n // Styles and classes\n conditionalColumnClasses,\n conditionalColumnSeperatorClasses,\n\n // Selecting\n allItemsSelectedCheckboxState,\n onAllRowSelect,\n\n // Sorting\n conditionalSortDirectionClasses,\n sortByColumnField,\n\n // Resizing\n startResize,\n\n // ENums\n BentoDatagridSortDirection,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n @import 'data-grid-columns';\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-settings__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8.75 1C8.75 0.585786 8.41421 0.25 8 0.25C7.58579 0.25 7.25 0.585786 7.25 1V1.2979C6.57635 1.37321 5.91783 1.54959 5.29672 1.82106L5.15026 1.56623C4.94387 1.2071 4.48542 1.08329 4.12629 1.28969C3.76716 1.49608 3.64335 1.95453 3.84974 2.31366L3.99751 2.57078C3.45281 2.97189 2.97145 3.45265 2.56967 3.99684L2.31372 3.84974C1.95459 3.64335 1.49614 3.76716 1.28975 4.12629C1.08335 4.48542 1.20717 4.94387 1.56629 5.15026L1.81832 5.29511C1.54577 5.91658 1.36849 6.57567 1.29247 7.25H1C0.585786 7.25 0.25 7.58579 0.25 8C0.25 8.41421 0.585786 8.75 1 8.75H1.29249C1.36851 9.42433 1.54581 10.0834 1.81837 10.7049L1.56629 10.8497C1.20717 11.0561 1.08335 11.5146 1.28975 11.8737C1.49614 12.2328 1.95459 12.3567 2.31372 12.1503L2.56974 12.0031C2.97151 12.5473 3.45284 13.028 3.99752 13.4291L3.84974 13.6862C3.64335 14.0454 3.76716 14.5038 4.12629 14.7102C4.48542 14.9166 4.94387 14.7928 5.15027 14.4337L5.29669 14.1789C5.91781 14.4504 6.57634 14.6267 7.25 14.7021V15C7.25 15.4142 7.58579 15.75 8 15.75C8.41421 15.75 8.75 15.4142 8.75 15V14.7021C9.42366 14.6267 10.0822 14.4504 10.7033 14.1789L10.8497 14.4337C11.0561 14.7928 11.5146 14.9166 11.8737 14.7102C12.2328 14.5038 12.3567 14.0454 12.1503 13.6862L12.0025 13.4291C12.5472 13.028 13.0285 12.5473 13.4303 12.0031L13.6863 12.1503C14.0454 12.3567 14.5039 12.2328 14.7103 11.8737C14.9167 11.5146 14.7928 11.0561 14.4337 10.8497L14.1817 10.7049C14.4542 10.0834 14.6315 9.42433 14.7075 8.75H15C15.4142 8.75 15.75 8.41421 15.75 8C15.75 7.58579 15.4142 7.25 15 7.25H14.7075C14.6315 6.57567 14.4542 5.91659 14.1817 5.29512L14.4337 5.15027C14.7928 4.94387 14.9167 4.48542 14.7103 4.12629C14.5039 3.76716 14.0454 3.64335 13.6863 3.84974L13.4303 3.99685C13.0285 3.45266 12.5472 2.9719 12.0025 2.57079L12.1503 2.31366C12.3567 1.95453 12.2328 1.49608 11.8737 1.28969C11.5146 1.08329 11.0561 1.2071 10.8497 1.56623L10.7033 1.82106C10.0822 1.54959 9.42365 1.37321 8.75 1.2979V1ZM3.46027 10.6263C3.46894 10.6414 3.47703 10.6567 3.48455 10.6721C3.81553 11.2301 4.24603 11.7202 4.75273 12.119L6.02977 9.90977C5.87643 9.75181 5.74113 9.57619 5.62698 9.38602L5.62041 9.37508C5.5299 9.2183 5.45553 9.0535 5.39784 8.88345C5.36087 8.77446 5.33077 8.66327 5.30773 8.55053C5.27085 8.37007 5.25205 8.18563 5.25205 7.99994C5.25205 7.51721 5.37912 7.04299 5.62048 6.62494L5.62686 6.61388C5.74103 6.4237 5.87643 6.24812 6.02979 6.09014L4.75273 3.88083C4.24621 4.27955 3.81584 4.76943 3.4849 5.32721C3.47729 5.34287 3.46908 5.35839 3.46027 5.37372C3.45059 5.39055 3.44036 5.40687 3.42962 5.42266C2.98528 6.20874 2.75106 7.09641 2.75 7.99994C2.75106 8.90376 2.98543 9.79172 3.43005 10.578C3.44064 10.5936 3.45072 10.6097 3.46027 10.6263ZM9.22412 7.75044C9.24103 7.83222 9.24976 7.9158 9.25 7.99998C9.24939 8.21721 9.19217 8.4305 9.08403 8.61885C8.96887 8.80892 8.80952 8.96837 8.61952 9.08363C8.43083 9.1913 8.21731 9.24795 8 9.24795C7.78331 9.24795 7.57039 9.19162 7.3821 9.08455C7.19161 8.96935 7.03182 8.80977 6.91637 8.61945C6.876 8.5487 6.84279 8.47445 6.81706 8.39782C6.80127 8.35077 6.78829 8.30283 6.77819 8.25425C6.76089 8.17096 6.75208 8.08579 6.75208 8.00002C6.75208 7.78271 6.80873 7.56919 6.91639 7.38051C7.03152 7.19073 7.19073 7.03152 7.38051 6.91639C7.56919 6.80873 7.78271 6.75208 8.00002 6.75208C8.21734 6.75208 8.43085 6.80873 8.61954 6.91639C8.80954 7.03165 8.96889 7.1911 9.08405 7.38117C9.12468 7.45192 9.15811 7.52619 9.18406 7.60287C9.20042 7.6512 9.21379 7.70048 9.22412 7.75044ZM10.6447 7.24995H13.1953C13.102 6.60939 12.8908 5.98951 12.5703 5.4225C12.5596 5.40676 12.5494 5.39049 12.5397 5.37372C12.531 5.35844 12.5228 5.34299 12.5152 5.32739C12.0559 4.55324 11.4051 3.90987 10.625 3.45947C9.8269 2.99869 8.92157 2.7561 8 2.7561C7.33041 2.7561 6.66938 2.88417 6.05183 3.13095L7.32631 5.3358C7.54562 5.28038 7.77186 5.252 8 5.252C8.48273 5.252 8.95695 5.37907 9.375 5.62043L9.38606 5.62681C9.79104 5.86991 10.1299 6.20898 10.373 6.61395L10.3788 6.62358C10.4505 6.74721 10.5122 6.87582 10.5635 7.00811C10.5944 7.08748 10.6214 7.16818 10.6447 7.24995ZM6.05183 12.869L7.3263 10.6642C7.54562 10.7196 7.77187 10.748 8.00002 10.748C8.48275 10.748 8.95697 10.6209 9.37502 10.3795L9.38602 10.3731C9.791 10.13 10.13 9.791 10.3731 9.38602L10.3788 9.37636C10.4935 9.17854 10.5826 8.96807 10.6448 8.75H13.1953C13.102 9.3907 12.8907 10.0107 12.5701 10.5778C12.5594 10.5935 12.5493 10.6096 12.5397 10.6263C12.531 10.6415 12.5229 10.6568 12.5154 10.6723C12.0574 11.4444 11.4089 12.0864 10.6317 12.5366L10.6263 12.5397L10.6183 12.5443C9.82186 13.0026 8.919 13.2438 8 13.2438C7.33041 13.2438 6.66938 13.1158 6.05183 12.869Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-settings__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><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, toRefs } 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 import { useAriaLabel } from '@/utils/ts/aria-label';\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-vue2';\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 { ariaLabel } = toRefs(props);\n\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 computedAriaLabel = useAriaLabel({\n ariaLabel,\n label: labelSlot,\n defaultFallback: 'toggle',\n });\n\n const computedDescription = computed((): string | null => descriptionId ?? 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","<template>\n <div class=\"b-data-grid-config-settings\">\n <bento-button\n ref=\"configSettingsButtonRef\"\n :variant=\"BentoButtonVariant.SECONDARY\"\n @click=\"toggleConfigSettingsPanelVisibility\"\n >\n <template #iconLeft>\n <bento-settings-icon :svg-title=\"$t('toggleConfigSettingsPanelVisibility')\" />\n </template>\n </bento-button>\n <bento-popover\n v-if=\"isConfigSettingsPanelOpen && configSettingsButtonRef\"\n :aria-label=\"$t('configSettingsPanel')\"\n :target-element=\"configSettingsButtonRef\"\n :position=\"BentoPopoverPositions.BOTTOM_END\"\n >\n <div class=\"b-data-grid-config-settings__panel-header\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" strongest>\n {{ $t('configuration') }}\n </bento-typography>\n <bento-button :variant=\"BentoButtonVariant.TERTIARY\" @click=\"toggleConfigSettingsPanelVisibility\">\n <template #iconLeft>\n <bento-cross-circle-fill-icon :svg-title=\"$t('closeConfigSettingsPanel')\" />\n </template>\n </bento-button>\n </div>\n <bento-typography\n class=\"b-data-grid-config-settings__compact-view-title\"\n :el=\"BentoTypographyElement.SPAN\"\n stronger\n >{{ $t('density') }}</bento-typography\n >\n <bento-toggle\n :label-position=\"AdlLabelPosition.AFTER\"\n :aria-label=\"$t('compactViewToggle')\"\n :value=\"condensed\"\n @input=\"emitCondensedToggle\"\n >\n {{ $t('compactView') }}\n </bento-toggle>\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, ref } from 'vue';\n import { BentoPopover, BentoPopoverPositions } from '../../../popover';\n import BentoSettingsIcon from '@adyen/ui-assets-icons-16/vue/settings';\n import BentoCrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import { BentoButton, BentoButtonVariant } from '../../../button';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '../../../typography';\n import { BentoToggle } from '../../../toggle';\n import messages from './messages.json';\n import { AdlLabelPosition } from '../../../../types';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCrossCircleFillIcon,\n BentoPopover,\n BentoSettingsIcon,\n BentoButton,\n BentoToggle,\n BentoTypography,\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 emits: ['config-settings'],\n setup(_props, { emit }) {\n const configSettingsButtonRef = ref(null);\n const isConfigSettingsPanelOpen = ref<boolean>(false);\n const toggleConfigSettingsPanelVisibility = () => {\n isConfigSettingsPanelOpen.value = !isConfigSettingsPanelOpen.value;\n };\n\n const emitCondensedToggle = (isCompactView: boolean) => emit('config-settings', isCompactView);\n\n return {\n // Values\n configSettingsButtonRef,\n isConfigSettingsPanelOpen,\n\n // Methods\n toggleConfigSettingsPanelVisibility,\n emitCondensedToggle,\n\n // Enum\n AdlLabelPosition,\n BentoTypographyElement,\n BentoTypographyVariant,\n BentoButtonVariant,\n BentoPopoverPositions,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./data-grid-config-settings.scss\" />\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 class=\"b-data-grid__filters-and-col-settings\">\n <bento-filter-bar v-if=\"filters\" :value=\"filters\" @input=\"filters => $emit('update:filters', filters)\" />\n <bento-data-grid-config-settings :condensed=\"compactView\" @config-settings=\"onConfigSettingsUpdate\" />\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\" tabindex=\"0\" :aria-busy=\"loading\" aria-live=\"polite\">\n <div role=\"rowgroup\">\n <bento-data-grid-columns\n :columns=\"columnDefs\"\n :has-resizable-columns=\"hasResizableColumns\"\n :grid-column-width-style=\"gridColumnWidthStyle\"\n :sort-by=\"sortBy\"\n :all-items-selected-state=\"allItemsSelectedState\"\n @column-resize=\"onColumnResized\"\n @column-resizing=\"onColumnWidthOverride\"\n @sort=\"onSort\"\n @select-all-rows=\"onAllRowSelect\"\n >\n <template v-for=\"(_, slot) of $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-data-grid-columns>\n </div>\n <div v-if=\"loading\" class=\"b-data-grid__loading\">\n <bento-loading-indicator class=\"b-data-grid__loading-indicator\" large />\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.CAPTION\">{{\n $t('gettingYourData')\n }}</bento-typography>\n </div>\n <div v-else 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 columnDefs\"\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 :title=\"conditionalTitleAttribute(column, rowData[column.field])\">{{\n rowData[column.field] || '-'\n }}</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=\"onPaginationNavigate\"\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, PropType, ref, toRefs } from 'vue';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { BentoCheckbox } from '../checkbox';\n import { BentoPagination } from '../pagination';\n import { BentoFilterBar } from '../filter-bar';\n import { BentoLoadingIndicator } from '../loading-indicator';\n import {\n BentoColumn,\n BentoColumnOverflow,\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 { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoDataGridColumns, BentoDataGridConfigSettings } from './components';\n import messages from './messages.json';\n import { DATAGRID_SELECT_FIELD_NAME, useCalculateColumnWidth, useConfigSettings, useSelector } from './composables';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n BentoDataGridColumns,\n BentoDataGridConfigSettings,\n BentoLoadingIndicator,\n BentoPagination,\n BentoFilterBar,\n BentoTypography,\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 * If the loading indicator should be shown.\n */\n loading: {\n type: Boolean,\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<HTMLDivElement>(null);\n const { columns, selectable, data, selection, condensed } = toRefs(props);\n /* == Composable logic == */\n // Config Settings\n const { compactView, onConfigSettingsUpdate } = useConfigSettings(condensed);\n\n // Selecting\n const { onAllRowSelect, onRowSelect, selectedItems, allItemsSelectedState } = useSelector(\n selection,\n emit,\n data,\n props.getDataItemId,\n props.isDataItemDisabled\n );\n\n // Column width calculation\n const { columnDefs, onColumnWidthOverride, gridColumnWidthStyle } = useCalculateColumnWidth(columns, body, {\n hasSelectableColumn: selectable,\n });\n\n /* == Styles == */\n // Conditional grid classes\n const conditionalGridClasses = computed(() => ({\n [`b-data-grid--${BentoDatagridStyleState.OUTLINE}`]: props.outline,\n }));\n\n // Conditional row classes\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--numeric': column?.numeric,\n 'b-data-grid__cell--condensed': compactView.value,\n [`b-data-grid__cell--overflow-${BentoColumnOverflow.ELLIPSIS}`]:\n column?.overflow === BentoColumnOverflow.ELLIPSIS,\n });\n\n const conditionalTitleAttribute = (column: BentoColumn, content: unknown) =>\n column?.overflow === BentoColumnOverflow.ELLIPSIS ? `${content}` : undefined;\n\n // Conditional pagination classes\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 = useAriaLabel({\n label: slots?.header ? slots?.header()[0].text?.trim() : null,\n defaultFallback: 'data grid',\n });\n\n /* == Emits == */\n // Resizing\n const onColumnResized = (resizeEvent: { field: string; width: number }) =>\n emit('column-resize', resizeEvent);\n // Sorting\n const onSort = (updatedSortBy: BentoDatagridSortByColumn[]) => emit('sort', updatedSortBy);\n // Pagination\n const onPaginationNavigate = (page: number) => emit('navigate', page);\n const onItemsPerPageChange = (itemsPerPage: number) => emit('items-page', itemsPerPage);\n\n return {\n // Refs\n body,\n columnDefs,\n\n // Labels and text\n ariaGridHeaderText,\n conditionalTitleAttribute,\n\n // Styles and classes\n gridColumnWidthStyle,\n conditionalGridClasses,\n conditionalRowClasses,\n conditionalRowCellClasses,\n conditionalPaginationClasses,\n\n // Resizing\n onColumnWidthOverride,\n onColumnResized,\n\n // Sorting\n onSort,\n\n // Select\n allItemsSelectedState,\n selectedItems,\n onAllRowSelect,\n onRowSelect,\n DATAGRID_SELECT_FIELD_NAME,\n\n // Config settings\n compactView,\n onConfigSettingsUpdate,\n\n // Enums\n BentoDatagridSortDirection,\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Pagination props and events\n onPaginationNavigate,\n onItemsPerPageChange,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n @import 'data-grid';\n</style>\n","import { defineComponent, h, ref } from 'vue';\nimport { onClickOutside } from '../../directives/click-outside/on-click-outside';\n\nexport const BentoClickOutside = /* #__PURE__ */ defineComponent({\n name: 'bento-click-outside',\n props: {\n /**\n * Sets the HTML DOM element.\n */\n el: { type: String, default: 'div' },\n },\n emits: ['handler'],\n setup(props, { emit, slots }) {\n const target = ref(null);\n\n onClickOutside(target, event => emit('handler', event));\n\n return () => h(props.el, { ref: target }, slots.default?.());\n },\n});\n","import { MaybeRef } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport VueI18n from 'vue-i18n';\nimport messages from './messages.json';\n\n/**\n * The local VueI18n object where the country name translations reside.\n */\nlet i18n: VueI18n;\n\n/**\n * Maps an ISO code to the country's translated capital city.\n *\n * @returns a translated country name\n */\nexport const useCountryCapital = (code: MaybeRef<string>, locale: MaybeRef<string>, useFallback = true) => {\n const countryCode = ref(code);\n const languageLocale = ref(locale);\n if (!i18n) {\n i18n = new VueI18n({ messages });\n }\n\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n if (!i18n.te(normalizedCode, languageLocale.value)) {\n return useFallback ? countryCode.value : null;\n }\n return i18n.t(normalizedCode, { locale: languageLocale.value });\n });\n};\n\nexport default useCountryCapital;\n","import { ref, Ref, watch } from 'vue';\n\n/**\n * Dynamically retrieves the country flag SVG from the @adyen/ui-assets-flag-icons package.\n *\n * @param code 2 character code in ISO 3166-1 alpha-2 format\n * @param useFallback if fallback flag should be used in case of error\n * @returns\n */\nexport const useCountryFlag = (code: Ref<string>, useFallback = true) => {\n const countryCode = ref(code);\n const flagSrc = ref<string>();\n\n watch(\n countryCode,\n // eslint-disable-next-line consistent-return\n async newCountryCode => {\n if (newCountryCode == null) {\n return null;\n }\n try {\n // Dynamically resolve flags icons URLs\n // Using import() here would make it asyncronous, requiring an update\n // right after the first render.\n // The only way to do it dynamically and syncronous is using require().\n // NOTE: This won't work for Vite because vite handles dynamic imports differently\n // This however works:\n // const flagCool = await import(\n // `../../../../../../node_modules/@adyen/ui-assets-flag-icons/dist/svg/${newCountryCode.toLowerCase()}.svg`\n // );\n // See: https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars\n\n const flag = await import(`@adyen/ui-assets-flag-icons/dist/svg/${newCountryCode.toLowerCase()}.svg`);\n flagSrc.value = flag?.default;\n } catch (e) {\n if (useFallback) {\n const unknownFlag = await import('@adyen/ui-assets-flag-icons/dist/svg/zz.svg');\n flagSrc.value = unknownFlag.default;\n } else {\n flagSrc.value = null;\n }\n }\n },\n { immediate: true }\n );\n\n return flagSrc;\n};\n","import { computed, ref } from 'vue';\nimport VueI18n from 'vue-i18n';\nimport messages from './messages.json';\nimport { MaybeRef } from '../../../../types';\n\n/**\n * The local VueI18n object where the country name translations reside.\n */\nlet i18n: VueI18n;\n\n/**\n * Maps an ISO code to it's translated country name.\n *\n * @returns a translated country name\n */\nexport const useCountryName = (code: MaybeRef<string>, locale: MaybeRef<string>, useFallback = true) => {\n const countryCode = ref(code);\n const languageLocale = ref(locale);\n if (!i18n) {\n i18n = new VueI18n({ messages });\n }\n\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n if (!i18n.te(normalizedCode, languageLocale.value)) {\n return useFallback ? countryCode.value : null;\n }\n return i18n.t(normalizedCode, languageLocale.value) as string;\n });\n};\n","import { MaybeRef } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport countryISOToPhoneCodes from './country-to-phone-codes.json';\n\n/**\n * Retrieves a country's phone number code.\n *\n * @param countryCode 2 character code in ISO 3166-1 alpha-2 format\n * @returns\n */\nexport const useCountryPhoneCode = (countryCode: MaybeRef<string>) => {\n const code = ref(countryCode);\n\n return computed(() => countryISOToPhoneCodes?.[code.value]?.join('/'));\n};\n\nexport default useCountryPhoneCode;\n","export enum BentoCountryVariant {\n ISO = 'iso',\n NAME = 'name',\n PHONE_CODE = 'phone_code',\n CAPITAL = 'capital',\n}\nexport enum BentoCountryCode {\n BD = 'BD',\n BE = 'BE',\n BF = 'BF',\n BG = 'BG',\n BA = 'BA',\n BB = 'BB',\n WF = 'WF',\n BL = 'BL',\n BM = 'BM',\n BN = 'BN',\n BO = 'BO',\n BH = 'BH',\n BI = 'BI',\n BJ = 'BJ',\n BT = 'BT',\n JM = 'JM',\n BV = 'BV',\n BW = 'BW',\n WS = 'WS',\n BQ = 'BQ',\n BR = 'BR',\n BS = 'BS',\n JE = 'JE',\n BY = 'BY',\n BZ = 'BZ',\n RU = 'RU',\n RW = 'RW',\n RS = 'RS',\n TL = 'TL',\n RE = 'RE',\n TM = 'TM',\n TJ = 'TJ',\n RO = 'RO',\n TK = 'TK',\n GW = 'GW',\n GU = 'GU',\n GT = 'GT',\n GS = 'GS',\n GR = 'GR',\n GQ = 'GQ',\n GP = 'GP',\n JP = 'JP',\n GY = 'GY',\n GG = 'GG',\n GF = 'GF',\n GE = 'GE',\n GD = 'GD',\n GB = 'GB',\n GA = 'GA',\n SV = 'SV',\n GN = 'GN',\n GM = 'GM',\n GL = 'GL',\n GI = 'GI',\n GH = 'GH',\n OM = 'OM',\n TN = 'TN',\n JO = 'JO',\n HR = 'HR',\n HT = 'HT',\n HU = 'HU',\n HK = 'HK',\n HN = 'HN',\n HM = 'HM',\n VE = 'VE',\n PR = 'PR',\n PS = 'PS',\n PW = 'PW',\n PT = 'PT',\n SJ = 'SJ',\n PY = 'PY',\n IQ = 'IQ',\n PA = 'PA',\n PF = 'PF',\n PG = 'PG',\n PE = 'PE',\n PK = 'PK',\n PH = 'PH',\n PN = 'PN',\n PL = 'PL',\n PM = 'PM',\n ZM = 'ZM',\n EH = 'EH',\n EE = 'EE',\n EG = 'EG',\n ZA = 'ZA',\n EC = 'EC',\n IT = 'IT',\n VN = 'VN',\n SB = 'SB',\n ET = 'ET',\n SO = 'SO',\n ZW = 'ZW',\n SA = 'SA',\n ES = 'ES',\n ER = 'ER',\n ME = 'ME',\n MD = 'MD',\n MG = 'MG',\n MF = 'MF',\n MA = 'MA',\n MC = 'MC',\n UZ = 'UZ',\n MM = 'MM',\n ML = 'ML',\n MO = 'MO',\n MN = 'MN',\n MH = 'MH',\n MK = 'MK',\n MU = 'MU',\n MT = 'MT',\n MW = 'MW',\n MV = 'MV',\n MQ = 'MQ',\n MP = 'MP',\n MS = 'MS',\n MR = 'MR',\n IM = 'IM',\n UG = 'UG',\n TZ = 'TZ',\n MY = 'MY',\n MX = 'MX',\n IL = 'IL',\n FR = 'FR',\n IO = 'IO',\n SH = 'SH',\n FI = 'FI',\n FJ = 'FJ',\n FK = 'FK',\n FM = 'FM',\n FO = 'FO',\n NI = 'NI',\n NL = 'NL',\n NO = 'NO',\n NA = 'NA',\n VU = 'VU',\n NC = 'NC',\n NE = 'NE',\n NF = 'NF',\n NG = 'NG',\n NZ = 'NZ',\n NP = 'NP',\n NR = 'NR',\n NU = 'NU',\n CK = 'CK',\n XK = 'XK',\n CI = 'CI',\n CH = 'CH',\n CO = 'CO',\n CN = 'CN',\n CM = 'CM',\n CL = 'CL',\n CC = 'CC',\n CA = 'CA',\n CG = 'CG',\n CF = 'CF',\n CD = 'CD',\n CZ = 'CZ',\n CY = 'CY',\n CX = 'CX',\n CR = 'CR',\n CW = 'CW',\n CV = 'CV',\n CU = 'CU',\n SZ = 'SZ',\n SY = 'SY',\n SX = 'SX',\n KG = 'KG',\n KE = 'KE',\n SS = 'SS',\n SR = 'SR',\n KI = 'KI',\n KH = 'KH',\n KN = 'KN',\n KM = 'KM',\n ST = 'ST',\n SK = 'SK',\n KR = 'KR',\n SI = 'SI',\n KP = 'KP',\n KW = 'KW',\n SN = 'SN',\n SM = 'SM',\n SL = 'SL',\n SC = 'SC',\n KZ = 'KZ',\n KY = 'KY',\n SG = 'SG',\n SE = 'SE',\n SD = 'SD',\n DO = 'DO',\n DM = 'DM',\n DJ = 'DJ',\n DK = 'DK',\n VG = 'VG',\n DE = 'DE',\n YE = 'YE',\n DZ = 'DZ',\n US = 'US',\n UY = 'UY',\n YT = 'YT',\n UM = 'UM',\n LB = 'LB',\n LC = 'LC',\n LA = 'LA',\n TV = 'TV',\n TW = 'TW',\n TT = 'TT',\n TR = 'TR',\n LK = 'LK',\n LI = 'LI',\n LV = 'LV',\n TO = 'TO',\n LT = 'LT',\n LU = 'LU',\n LR = 'LR',\n LS = 'LS',\n TH = 'TH',\n TF = 'TF',\n TG = 'TG',\n TD = 'TD',\n TC = 'TC',\n LY = 'LY',\n VA = 'VA',\n VC = 'VC',\n AE = 'AE',\n AD = 'AD',\n AG = 'AG',\n AF = 'AF',\n AI = 'AI',\n VI = 'VI',\n IS = 'IS',\n IR = 'IR',\n AM = 'AM',\n AL = 'AL',\n AO = 'AO',\n AQ = 'AQ',\n AS = 'AS',\n AR = 'AR',\n AU = 'AU',\n AT = 'AT',\n AW = 'AW',\n IN = 'IN',\n AX = 'AX',\n AZ = 'AZ',\n IE = 'IE',\n ID = 'ID',\n UA = 'UA',\n QA = 'QA',\n MZ = 'MZ',\n UNKNOWN = 'ZZ',\n}\n","import Vue, { computed, getCurrentInstance } from 'vue';\nimport type { WritableComputedRef } from 'vue';\nimport VueI18n from 'vue-i18n';\n\nexport const defaultI18nOptions = {\n locale: 'en-US',\n fallbackLocale: 'en-US',\n fallbackRoot: false,\n};\n\nlet i18n: VueI18n = null;\n\nexport function createI18n(options = defaultI18nOptions): VueI18n {\n i18n = new VueI18n(options);\n return i18n;\n}\n\nexport interface Composer {\n locale: WritableComputedRef<string>;\n t: typeof VueI18n.prototype.t;\n tc: typeof VueI18n.prototype.tc;\n te: typeof VueI18n.prototype.te;\n d: typeof VueI18n.prototype.d;\n n: typeof VueI18n.prototype.n;\n}\n\nexport function useI18n(): Composer {\n const instance = getCurrentInstance() as { proxy: Vue & { _i18n: VueI18n } } | null;\n const vm = instance.proxy;\n // If no VueI18n has been intialised then attempt to get the globally attached one from the Vue VM\n // eslint-disable-next-line no-underscore-dangle\n if (vm?._i18n) {\n // eslint-disable-next-line no-underscore-dangle -- reading the i18n local instance\n i18n = vm._i18n;\n }\n\n const locale = computed({\n get() {\n return i18n.locale;\n },\n set(v: string) {\n i18n.locale = v;\n },\n });\n\n return {\n locale,\n t: vm.$t.bind(vm),\n tc: vm.$tc.bind(vm),\n d: vm.$d.bind(vm),\n te: vm.$te.bind(vm),\n n: vm.$n.bind(vm),\n };\n}\n","<template>\n <div class=\"b-country\">\n <div class=\"b-country__flag\">\n <img :alt=\"countryName\" class=\"b-country__flag-icon\" :src=\"flagIconSrc\" />\n </div>\n <div class=\"b-country__label\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">{{ label }}</bento-typography>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType, ref, toRefs, watch } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '../typography';\n import { useCountryCapital, useCountryFlag, useCountryName, useCountryPhoneCode } from './composables';\n import { BentoCountryCode, BentoCountryVariant } from './country.types';\n import { useI18n } from '../../utils/ts/i18n';\n\n /**\n * A component to display a country's flag and label.\n * The label comes in four variates: iso code, country name, phone number code or capital city.\n *\n * @example\n * import { BentoCountry, BentoCountryCode } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoCountry },\n * template: `\n * <bento-country :code=\"BentoCountryCode.NL\" />\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-country',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Two character country code ([ISO 3166-1 alpha-2 format](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).\n */\n code: {\n type: String as PropType<BentoCountryCode>,\n default: BentoCountryCode.UNKNOWN,\n },\n\n /**\n * Which label variant to display.\n * @values iso, name, phone_code, capital\n */\n variant: {\n type: String as PropType<BentoCountryVariant>,\n default: BentoCountryVariant.NAME,\n validator: (value: BentoCountryVariant) => Object.values(BentoCountryVariant).includes(value),\n },\n },\n\n setup(props) {\n const { code, variant } = toRefs(props);\n const { locale } = useI18n();\n const flagIconSrc = useCountryFlag(code);\n const countryName = useCountryName(code, locale);\n const label = ref();\n\n const getLabel = () => {\n switch (variant.value) {\n case BentoCountryVariant.ISO:\n return code;\n case BentoCountryVariant.PHONE_CODE:\n return useCountryPhoneCode(code);\n case BentoCountryVariant.CAPITAL:\n // TODO: do we need an API OR get a longer translations list???\n // Need to be able TRANSLATE as well as map...\n return useCountryCapital(code, locale);\n case BentoCountryVariant.NAME:\n default:\n return countryName;\n }\n };\n\n // Update label if variant prop changes\n watch(\n [variant, locale],\n () => {\n label.value = getLabel().value;\n },\n { immediate: true }\n );\n\n return {\n // Values\n flagIconSrc,\n countryName,\n label,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./country.scss\" />\n","export enum BentoLinkVariant {\n DEFAULT = 'default',\n QUIET = 'quiet',\n}\n","<template>\n <a\n v-if=\"external\"\n class=\"b-link\"\n :class=\"conditionalClasses\"\n :href=\"linkProps.to.toString()\"\n target=\"_blank\"\n :title=\"linkProps.title\"\n >\n <slot />\n </a>\n <router-link\n v-else\n v-slot=\"slotProps\"\n class=\"b-link\"\n :class=\"conditionalClasses\"\n v-bind=\"linkProps\"\n :to=\"linkProps.to\"\n custom\n >\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 { computed, useAttrs } from 'vue';\n import { BentoLinkVariant } from './link.types';\n import type { RouterLinkProps } from 'vue-router/types/router';\n import type { AnchorHTMLAttributes } from 'vue/types/jsx';\n\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, AnchorHTMLAttributes {\n // eslint-disable-next-line vue/require-default-prop\n args?: { props: RouterLinkProps };\n /**\n * Set the rendered link to a regular external anchor link.\n */\n external?: boolean;\n\n /**\n * Link variant type affecting visual style.\n * @values default, quiet\n */\n variant?: BentoLinkVariant;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const props = withDefaults(defineProps<Props>(), {\n variant: BentoLinkVariant.DEFAULT,\n });\n\n const conditionalClasses = computed(() => ({\n [`b-link--${BentoLinkVariant.QUIET}`]: props.variant === BentoLinkVariant.QUIET,\n }));\n\n // TODO: replace this when Vue allows users to extend props properly, read above for more info\n const attributes = useAttrs() as unknown;\n const linkProps = attributes as Props;\n</script>\n\n<style lang=\"scss\" scoped src=\"./link.scss\" />\n","export enum BentoRadioGroupVariant {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport interface BentoRadioGroupItem {\n value: string | number;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport type BentoRadioGroupItems = Array<BentoRadioGroupItem>;\n","<template>\n <div class=\"b-radio-button\" data-testid=\"radio-button-container\" :class=\"conditionalClass\">\n <input\n :id=\"radioButtonId\"\n :aria-checked=\"isChecked\"\n :aria-label=\"ariaLabel\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n :value=\"value\"\n type=\"radio\"\n class=\"b-radio-button__input\"\n role=\"radio\"\n @change=\"onClick\"\n />\n <label v-if=\"shouldShowDescription\" :for=\"radioButtonId\" class=\"b-radio-button__description\">\n <bento-typography\n v-if=\"shouldShowLabel\"\n class=\"b-radio-button__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-radio-button__sub-label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"subLabel\"></slot>\n </bento-typography>\n </label>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { generateUid } from '@/utils/ts/unique-id';\n import { computed, ComputedRef, defineComponent, toRefs } 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 * Only to be used internally.\n *\n * @usage\n * import { RadioButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { RadioButton },\n * template: `\n * <radio-button\n * disabled\n * value=\"inputRadio\"\n * >\n * Label text\n * <template #subLabel>Sub label text</template>\n * </radio-button>\n * `,\n * }\n */\n export default defineComponent({\n name: 'radio-button',\n components: { BentoTypography },\n inheritAttrs: false,\n model: { prop: 'modelValue' },\n props: {\n /**\n * Disable the radio button (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 { value } = toRefs(props);\n const radioButtonId = generateUid('radio-button');\n\n const conditionalClass = computed(() => ({ 'b-radio-button--disabled': props.disabled }));\n\n const ariaLabel = useAriaLabel({\n ariaLabel: slots.default?.()[0].text.trim(),\n label: value.value as string,\n });\n\n const isChecked: ComputedRef<boolean> = computed(() => props.value === props.modelValue);\n\n const shouldShowLabel = computed(() => (slots.default ? slots.default?.()?.[0].text.trim() : null));\n\n const shouldShowSubLabel = computed(() => (slots.subLabel ? slots.subLabel?.()?.[0].text.trim() : null));\n\n const shouldShowDescription = computed(() => shouldShowLabel.value || shouldShowSubLabel.value);\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 radioButtonId,\n\n // Events\n onClick,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./radio-button.scss\" />\n","<template>\n <controls-group\n class=\"b-radio-group\"\n :class=\"conditionalClasses\"\n :form=\"formId\"\n :disabled=\"disabled\"\n :label=\"label\"\n >\n <radio-button\n v-for=\"item in items\"\n :key=\"item.value\"\n v-model=\"inputValue\"\n :value=\"item.value\"\n :disabled=\"disabled || item.disabled\"\n @input=\"onInput\"\n >\n {{ item.label }}\n <template v-if=\"item.description\" #subLabel>{{ item.description }}</template>\n </radio-button>\n </controls-group>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { ControlsGroup } from '@/components/controls-group';\n import { BentoRadioGroupItems, BentoRadioGroupVariant } from './radio-group.types';\n import RadioButton from './components/radio-button/radio-button.vue';\n\n /**\n * A radio group component should be used whenever it is necessary to use a set of radio buttons\n * This component conforms to the official WAI-ARIA guidelines for grouping controls: https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * import { BentoRadioGroup, BentoRadioGroupVariant } from '@adyen/bento-vue2/';\n *\n * export default {\n * components: { BentoRadioGroup },\n * template: `\n * <bento-radio-group\n * label=\"Your group label\"\n * :items=\"[\n * { value: 1, label: 'Your label' },\n * { value: 2, label: 'Another label', description: 'Your sub label' },\n * ]\"\n * :variant=\"BentoRadioGroupVariant.HORIZONTAL\"\n * />\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-radio-group',\n components: { ControlsGroup, RadioButton },\n inheritAttrs: false,\n props: {\n /**\n * The checkbox group's items.\n */\n items: {\n type: Array as PropType<BentoRadioGroupItems>,\n required: true,\n },\n /**\n * The checkbox group's layout. It can be vertical or horizontal. Defaults to vertical.\n */\n variant: {\n type: String as PropType<BentoRadioGroupVariant>,\n default: BentoRadioGroupVariant.VERTICAL,\n validator: (value: BentoRadioGroupVariant) => Object.values(BentoRadioGroupVariant).includes(value),\n },\n /**\n * The form id the checkbox group is associated with. Defaults to null, as a checkbox group can also be used standalone.\n */\n formId: {\n type: String,\n default: null,\n },\n /**\n * If set to true, renders all checkboxes in the group in a disabled state.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * The name associated with the group. Required for accessibility purposes.\n */\n label: { type: String, required: true },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n 'b-radio-group--horizontal': props.variant === BentoRadioGroupVariant.HORIZONTAL,\n }));\n const inputValue = ref(props.items[0].value);\n\n const onInput = value => {\n emit('input', value);\n };\n\n return {\n // Values\n conditionalClasses,\n inputValue,\n\n // Methods\n onInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./radio-group.scss\" />\n","import { AnyFn } from '../../../types';\n\n/**\n * The debounce() method is used to create a debounced function which\n * delays the given callback function until after the stated wait time\n * in milliseconds have passed since the last time this debounced function was called.\n *\n * @param {Function} callback - The function to debounce.\n * @param debounceTime - The number of milliseconds to delay.\n * @returns {Function} - Returns the new debounced function.\n */\nexport const debounce = <T>(callback: AnyFn<T>, debounceTime: number) => {\n let timeoutID: NodeJS.Timeout;\n\n return function debounceWrapper(...args: T[]) {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n\n timeoutID = setTimeout(() => {\n timeoutID = null;\n callback(args as T);\n }, debounceTime);\n };\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><g :clip-path=\"'url(#uia-icons-16-search__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8.31686 0.379702C7.00749 0.119252 5.65029 0.252925 4.41689 0.763816C3.18349 1.27471 2.12928 2.13987 1.38758 3.2499C0.645881 4.35994 0.25 5.66498 0.25 7C0.25 8.79021 0.961159 10.5071 2.22703 11.773C3.4929 13.0388 5.20979 13.75 7 13.75C8.33502 13.75 9.64007 13.3541 10.7501 12.6124C10.9096 12.5059 11.064 12.3928 11.2131 12.2737L14.4697 15.5303C14.7626 15.8232 15.2374 15.8232 15.5303 15.5303C15.8232 15.2374 15.8232 14.7626 15.5303 14.4697L12.2738 11.2131C12.6674 10.7203 12.9922 10.1721 13.2362 9.58312C13.7471 8.34972 13.8808 6.99252 13.6203 5.68314C13.3598 4.37377 12.717 3.17104 11.773 2.22703C10.829 1.28303 9.62623 0.640153 8.31686 0.379702ZM10.7619 10.6621C11.2239 10.1875 11.5943 9.6272 11.8504 9.00909C12.2477 8.04978 12.3517 6.99418 12.1491 5.97578C11.9465 4.95738 11.4465 4.02192 10.7123 3.28769C9.97808 2.55347 9.04262 2.05345 8.02422 1.85088C7.00582 1.64831 5.95022 1.75228 4.99091 2.14964C4.0316 2.547 3.21166 3.2199 2.63478 4.08326C2.05791 4.94662 1.75 5.96165 1.75 7C1.75 8.39239 2.30312 9.72775 3.28769 10.7123C4.27226 11.6969 5.60761 12.25 7 12.25C8.03835 12.25 9.05339 11.9421 9.91674 11.3652C10.1843 11.1864 10.4336 10.9843 10.6621 10.7619C10.677 10.7439 10.6928 10.7265 10.7097 10.7097C10.7265 10.6928 10.7439 10.677 10.7619 10.6621Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-search__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-search-bar\">\n <bento-input-field\n v-model=\"searchTerm\"\n :type=\"BentoInputFieldType.SEARCH\"\n :aria-label=\"ariaLabel\"\n :aria-hidden=\"false\"\n @input=\"onInputEvent\"\n >\n <template #defaultIconBefore>\n <search-icon :svg-title=\"$t('search')\" />\n </template>\n\n <template v-if=\"searchTerm\" #iconAfter>\n <div\n class=\"b-search-bar__clear-search\"\n tabindex=\"0\"\n data-testid=\"b-search-bar-clear-search-button\"\n @click=\"onClearSearch\"\n @keypress.enter=\"onClearSearch\"\n @keyup.space=\"onClearSearch\"\n >\n <cross-circle-fill-icon :svg-title=\"$t('clearSearch')\" />\n </div>\n </template>\n </bento-input-field>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, ref } from 'vue';\n import { BentoInputField, BentoInputFieldType } from '@/components/input-field';\n import { debounce } from '@/utils/ts/debounce';\n import SearchIcon from '@adyen/ui-assets-icons-16/vue/search';\n import CrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n\n import messages from './messages.json';\n\n /**\n * Search functionality to help users find the desired data quicker.\n * When a user starts typing, the data is dynamically filtered to\n * only show the relevant results.\n *\n * Clearing the search field displays the entire list again.\n *\n * @example\n * import {\n * BentoSearchBar,\n * BentoSearchBarData,\n * useSearchBarFilter\n * } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSearchBar },\n * template: `\n * <bento-search-bar\n * aria-description=\"Search bar\"\n * v-modal=\"searchTerm\"\n * @input=\"onInput\"\n * @clear-search=\"onClearSearch\"\n * />\n * // Render the filtered data\n * {{ filteredData }}\n * `,\n * setup() {\n * const searchTerm = ref('');\n * const data = ref<BentoSearchBarData>([]);\n * const filteredData = useSearchBarFilter(searchTerm, data);\n *\n * consdt onInput = () => {}\n * consdt onClearSearch = () => {}\n *\n * return {\n * searchTerm,\n * filteredData,\n * onInput,\n * onClearSearch,\n * };\n * }\n * }\n */\n export default defineComponent({\n name: 'bento-search-bar',\n i18n: { messages },\n components: {\n CrossCircleFillIcon,\n BentoInputField,\n SearchIcon,\n },\n inheritAttrs: false,\n props: {\n /**\n * Text that labels an the search bar input element\n */\n ariaLabel: { type: String, required: true },\n\n /**\n * Custom debounce time. Default: 300\n */\n debounceTime: { type: Number, default: 300 },\n\n /**\n * Text displayed as the value being searched\n */\n value: { type: String, default: undefined },\n },\n emits: ['input', 'clear'],\n setup(props, { emit }) {\n const searchTerm = ref(props.value);\n\n const onClearSearch = () => {\n searchTerm.value = '';\n emit('clear');\n emit('input', '');\n };\n\n const onInputEvent = debounce(() => {\n emit('input', searchTerm.value);\n }, props.debounceTime);\n\n return {\n // Values\n searchTerm,\n\n // Emits\n onClearSearch,\n onInputEvent,\n\n // Enums\n BentoInputFieldType,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./search-bar.scss\" />\n","import { computed, ref, Ref } from 'vue';\nimport { BentoSearchBarData } from './search-bar.types';\n\n/**\n * Filters an array {@see BentoSearchBarData} containing elements of type {@see BentoSearchBarItem}\n * by the {@param searchTerm}.\n *\n * @param {Ref<String>} searchTerm - Text that satisfies the search criteria.\n * @param {Ref<BentoSearchBarData>} data - Array to be filtered by {@param searchTerm}\n * @returns {Ref<BentoSearchBarData>} New instance of the array filtered by the {@param searchTerm} text\n */\nexport const useSearchBarFilter = (searchTerm: Ref<string>, data: Ref<BentoSearchBarData>) => {\n const searchTermRef = ref(searchTerm);\n const dataRef = ref(data);\n\n const filterInputData = computed(() => {\n const searchTermLowerCased = searchTermRef.value.toLocaleLowerCase();\n return dataRef.value.filter(({ label }) => label.toLowerCase().includes(searchTermLowerCased));\n });\n\n return filterInputData;\n};\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=\"computedAriaLabel\"\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 import { useAriaLabel } from '@/utils/ts/aria-label';\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 computedAriaLabel = useAriaLabel({\n label: slots.default?.()[0].text.trim(),\n defaultFallback: 'tag',\n });\n\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 computedAriaLabel,\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"],"names":["injectCSS","cssStyles","cssCode","elementStyle","e","BentoTheme","setDefaultTheme","install","_","options","adlLegacyCssVars","bentoLegacyCssVars","adlCssVars","bentoCssVars","BentoVue","BentoAlertSeverityOption","BentoButtonVariant","BentoButtonPropClass","BentoTypographyVariant","BentoTypographyModifier","BentoTypographyElement","_sfc_main$V","defineComponent","value","props","computed","uuid","_sfc_main","useAriaLabel","ariaLabel","label","defaultFallback","computedAriaLabel","ref","computedLabel","computedDefaultFallback","hasSlot","slots","name","_sfc_main$P","BentoTypography","emit","labelSlot","_a","variantClass","conditionalClasses","_sfc_main$O","Cross","BentoButton","Warning","CrossCircle","CheckedCircle","Info","alertConditionalClasses","computedRole","onCloseButtonClick","onMounted","BentoButtonActionsLayout","_sfc_main$M","layout","reversedActionsList","generateButtonVariantByIndex","actionIndex","lastActionIndex","BentoLoadingButtonState","BentoLoadingIndicatorEvent","_sfc_main$L","onUnmounted","_sfc_main$K","Checkmark","BentoLoadingIndicator","isInverseLoadingIndicator","_sfc_main$H","CheckmarkSmallIcon","MinusSmallIcon","disabled","indeterminate","modelValue","toRefs","defaultSlot","descriptionSlot","isCheckboxGroup","isChecked","item","isIndeterminate","ariaChecked","_b","conditionalClass","conditionalClassOutline","event","newValue","newCheckedList","index","_sfc_main$G","legendConditionalClasses","BentoCheckboxGroupVariant","_sfc_main$F","BentoCheckbox","ControlsGroup","_sfc_main$C","ChevronDownIcon","ChevronUpIcon","shouldShowPlaceholder","isDropdownOpen","ariaExpanded","onOpenDropdown","onCloseDropdown","_sfc_main$A","AdlCheckmark","onOptionSelected","ariaSelected","FOCUS_GROUP","FOCUS_DISABLED","FOCUS_ALLOW","FOCUS_AUTO","FOCUS_NO_AUTOFOCUS","toArray","a","ret","i","asArray","isElementHidden","node","computedStyle","getParentNode","isTopNode","isVisibleUncached","checkParent","isVisibleCached","visibilityCache","cached","result","isAutoFocusAllowedUncached","isAutoFocusAllowed","isAutoFocusAllowedCached","cache","getDataset","isHTMLButtonElement","isHTMLInputElement","isRadioElement","notHiddenInput","attribute","isGuard","isNotAGuard","isDefined","x","tabSort","b","tabDiff","indexDiff","orderByTabIndex","nodes","filterNegative","keepGuards","data","tabbables","queryTabbables","queryGuardTabbables","getFocusablesWithShadowDom","parent","withGuards","acc","child","getFocusables","parents","getParentAutofocusables","parentFocus","filterFocusable","filterAutoFocusable","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","topNode","contains","scope","element","filterNested","contained","l","j","position","getTopParent","getAllAffectedNodes","currentNode","group","getNestedShadowActiveElement","shadowRoot","getActiveElement","focusInFrame","frame","focusInsideIframe","focusInside","activeElement","focusIsHidden","findSelectedRadio","el","correctNode","correctNodes","resultSet","pickFirstFocus","pickFocusable","NEW_FOCUS","newFocus","innerNodes","outerNodes","lastNode","cnt","firstFocus","lastFocus","isOnGuard","activeIndex","lastIndex","lastNodeInside","firstNodeIndex","lastNodeIndex","correctedNodes","correctedIndex","correctedIndexDiff","returnFirstNode","returnLastNode","getParents","getCommonParent","nodeA","nodeB","parentsA","parentsB","currentParent","getTopCommonParent","baseActiveElement","leftEntry","rightEntries","activeElements","leftEntries","topCommon","entry","subEntry","common","allParentAutofocusables","entries","findAutoFocused","autoFocusables","reorderNodes","srcNodes","dstNodes","remap","entity","getFocusMerge","commonParent","anyFocusable","innerElements","orderedInnerElements","newId","autoFocusable","getFocusabledIn","getFocusableIn","focusOn","target","focusOptions","guardCount","lockDisabled","setFocus","focusable","BentoFocusTrapArrowNavigationDirection","BentoFocusTrapVerticalNavigationEvent","BentoFocusTrapHorizontalNavigationEvent","deferAction","callback","getNodeIndex","getNextFocusableElement","factor","currentFocusedEl","focusableElements","nextIndex","getArrowType","arrowOrder","eventKey","SCROLL_INTO_VIEW_OPTIONS","_sfc_main$z","moveFocusInside","currentTag","isArrowNext","isArrowPrev","focusableEl","focusOnDestroyEl","PopperContainerPositionBasic","PopperContainerPositionExtended","PopperContainerAriaRole","PopperContainerPosition","getArrowModifier","arrow","arrowProps","getOffsetModifier","offset","getFlipModifier","fallbackPosition","arrowDataHideAttributeModifier","state","sameWidthModifier","_sfc_main$y","BentoFocusTrap","currentModifiers","strategy","popperElement","Vue","createPopper","_sfc_main$x","AdlDropdownOption","PopperContainer","selectedOption","isClient","defaultWindow","isIOS","resolveUnref","r","unref","unrefElement","elRef","plain","noop","isString","val","useEventListener","args","events","listeners","cleanups","cleanup","fn","register","listener","registerOptions","stopWatch","watch","stopWatchOptions","_iOSWorkaround","onClickOutside","handler","window","ignore","capture","detectIframe","shouldListen","shouldIgnore","BentoClickOutsideDirective","targetElement","binding","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","arr","randomUUID","native","v4","buf","rnds","generateUid","_sfc_main$w","AdlDropdownInputContainer","AdlDropdownOptionsContainer","inputContainerRef","dropdownOptionsContainerId","displayValue","selectedItem","DEFAULT_NUMBER_OF_RESULTS","PREDEFINED_RESULTS_PER_PAGE_VALUES","_sfc_main$v","messages","AdlDropdown","itemsPerPageValue","dropdownId","dropdownOptions","onSelectChange","selectedNumberOfResults","translationPathKey","_sfc_main$u","onPageSelectChange","selectedPage","transformIntoOption","transformToPageNumber","listOfAvailablePages","_sfc_main$p","SkipLeft","SkipRight","ChevronLeft","ChevronRight","isCurrentPageFirst","isCurrentPageLast","isNextButtonDisabled","isLastPageButtonDisabled","hasNoNextPage","hasNoTotalPagesNumber","pageArg","_sfc_main$o","BentoPaginationContext","BentoPaginationControls","BentoPaginationResultsPerPage","totalPages","navigate","onPageSelected","pageNumber","onItemsPerPageChange","elements","navigationConditionalClasses","BentoFilterItemType","BentoPopoverPositions","_sfc_main$n","isStrongest","titleVariant","_sfc_main$m","CrossCircleFillIcon","_sfc_main$l","BentoButtonActions","BentoPopoverDismissButton","BentoPopoverTitle","title","contentConditionalClasses","BentoTooltipPosition","BentoTooltipState","optionsSupport","support","listen","type","cleanupBatch","eventType","eventOptions","useNativeOnce","eventListener","KeyCode","_sfc_main$k","tabIndex","TooltipComponent","Tooltip","tooltipInstances","ariaDescribedByAttr","tooltipId","tooltip","open","createTooltip","destroyTooltip","getTooltipPosition","getTooltipInstanceForTarget","ctx","showTooltip","tooltipInstance","hideTooltip","BentoTooltipDirective","show","hide","evt","context","removeListener","useFilterLabel","filterLabel","filterValue","_sfc_main$j","BentoButtonGroup","BentoPopover","CrossIcon","filterButtonRef","isActive","isTooltipVisible","alwaysShowNameInLabel","displayLabel","onClickClear","closePopover","onClickFilter","onClickDismissFilter","onClickApply","buttonVariant","BentoInputFieldVariant","BentoInputFieldStaticValuePosition","BentoInputFieldStateClass","BentoInputFieldType","_sfc_main$i","inputFieldElement","shouldShowStaticValue","shouldDisplayStaticValueAtStart","shouldDisplayStaticValueAtEnd","inputFieldConditionalClasses","_sfc_main$h","BentoBaseFilter","BentoInputField","internalValue","isFilterOpen","inputTextRef","isApplyButtonDisabled","closeFilter","clearFilter","openFilter","nextTick","dismissFilter","_sfc_main$g","BentoTextFilter","updateFilterHandler","updatedFilter","filterIndex","filter","newFilters","dismissedFilter","BentoColumnOverflow","BentoDatagridStyleState","BentoDatagridSortDirection","useResizer","columns","columnWidthOverridesLookup","colKeyLookup","col","columnsRefs","reactive","allColumnRefs","stepPositionX","resizingColumnField","defaultResizedColumnWidths","field","width","minWidth","watchEffect","removeMouseMoveResizeListener","removeMouseUpResizeListener","onResizeColumn","sizeChange","currResizingColumnField","resizedColumnWidth","stopResize","hasResizableColumns","callbackMap","observerMap","observeSizeOfElement","elementToObserve","observer","callbackToInvoke","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","bodyRef","body","gridWidth","caclulatedWidths","widthAllocatedBeforeFlex","columnsLookup","columnDefs","fluidCol","computedColumnWidths","onColumnWidthOverride","newColumnWidthOverridesLookup","processedColumns","totalWidthOfAllColumns","totalWidthOfAllCalculatedWidths","gridColumnWidthStyle","useSorter","sortBy","direction","sortedCol","updatedSortBy","useSelector","selection","getDataItemId","isDataItemDisabled","selectedItems","allItemsSelectedState","emitSelect","onAllRowSelect","allItemsSelected","dataItem","onRowSelect","isEveryItemSelected","useConfigSettings","condensed","compactView","isCompactView","_sfc_main$d","TriangleUp","TriangleDown","allItemsSelectedCheckboxState","areAllItemsSelected","startResize","conditionalSortDirectionClasses","sortByColumnField","conditionalColumnClasses","conditionalColumnSeperatorClasses","BentoTogglePropClass","AdlLabelPosition","_sfc_main$a","CrossSmall","CheckmarkSmall","toggleInput","descriptionId","computedDescription","shouldDisplayLabelSlot","shouldDisplaySubLabelSlot","_sfc_main$9","BentoCrossCircleFillIcon","BentoSettingsIcon","BentoToggle","_props","configSettingsButtonRef","isConfigSettingsPanelOpen","_sfc_main$8","BentoDataGridColumns","BentoDataGridConfigSettings","BentoPagination","BentoFilterBar","selectable","onConfigSettingsUpdate","conditionalGridClasses","conditionalRowClasses","row","conditionalRowCellClasses","conditionalTitleAttribute","content","conditionalPaginationClasses","_c","_f","_e","_d","ariaGridHeaderText","resizeEvent","page","itemsPerPage","BentoClickOutside","h","i18n","useCountryCapital","code","locale","useFallback","countryCode","languageLocale","VueI18n","normalizedCode","useCountryFlag","flagSrc","newCountryCode","flag","unknownFlag","useCountryName","useCountryPhoneCode","countryISOToPhoneCodes","BentoCountryVariant","BentoCountryCode","useI18n","vm","getCurrentInstance","v","_sfc_main$7","variant","flagIconSrc","countryName","getLabel","BentoLinkVariant","__default__","attributes","useAttrs","BentoRadioGroupVariant","_sfc_main$5","radioButtonId","shouldShowLabel","shouldShowSubLabel","shouldShowDescription","_sfc_main$4","RadioButton","inputValue","debounce","debounceTime","timeoutID","_sfc_main$2","SearchIcon","searchTerm","onClearSearch","onInputEvent","useSearchBarFilter","searchTermRef","dataRef","searchTermLowerCased","BentoStatusVariant","_sfc_main$1","BentoTagVariant","tagConditionalClasses","textFromSlot","shouldShowTooltip","formattedText"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,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","x_google_ignoreList":[6,7,8,9,10,21,22,27,28,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,61,62,63,64,69,70,71,72,92,93,101,102,122]}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/ts/inject-css.ts","../src/install.ts","../src/components/alert/alert.types.ts","../src/components/button/button.types.ts","../src/components/typography/typography.types.ts","../src/components/typography/typography.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross-small.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/warning-filled.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","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/info-filled.vue","../src/utils/ts/aria-label.ts","../src/utils/ts/hasSlot.ts","../src/components/button/button.vue","../src/components/alert/alert.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","../src/components/button/components/loading-button/loading-button.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","../src/components/controls-group/controls-group.vue","../src/components/checkbox/components/checkbox-group/checkbox-group.types.ts","../src/components/checkbox/components/checkbox-group/checkbox-group.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/checkmark.vue","../src/components/dropdown/components/dropdown-options-container/components/dropdown-single-select-option/dropdown-single-select-option.vue","../../../node_modules/focus-lock/dist/es2015/constants.js","../../../node_modules/focus-lock/dist/es2015/utils/array.js","../../../node_modules/focus-lock/dist/es2015/utils/is.js","../../../node_modules/focus-lock/dist/es2015/utils/tabOrder.js","../../../node_modules/focus-lock/dist/es2015/utils/tabbables.js","../../../node_modules/focus-lock/dist/es2015/utils/tabUtils.js","../../../node_modules/focus-lock/dist/es2015/utils/DOMutils.js","../../../node_modules/focus-lock/dist/es2015/utils/all-affected.js","../../../node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","../../../node_modules/focus-lock/dist/es2015/focusInside.js","../../../node_modules/focus-lock/dist/es2015/focusIsHidden.js","../../../node_modules/focus-lock/dist/es2015/utils/correctFocus.js","../../../node_modules/focus-lock/dist/es2015/utils/firstFocus.js","../../../node_modules/focus-lock/dist/es2015/solver.js","../../../node_modules/focus-lock/dist/es2015/utils/parenting.js","../../../node_modules/focus-lock/dist/es2015/focusMerge.js","../../../node_modules/focus-lock/dist/es2015/focusables.js","../../../node_modules/focus-lock/dist/es2015/setFocus.js","../src/components/focus-trap/focus-trap.types.ts","../src/components/focus-trap/focus-trap.utils.ts","../src/components/focus-trap/focus-trap.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","../src/directives/click-outside/utils.ts","../src/directives/click-outside/useEventListener/index.ts","../src/directives/click-outside/on-click-outside.ts","../src/directives/click-outside/directive.ts","../../../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/utils/ts/debounce/debounce.ts","../src/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.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-default-textbox/dropdown-default-textbox.vue","../src/components/input-field/input-field.types.ts","../src/components/input-field/input-field.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/search.vue","../src/components/search-bar/search-bar.vue","../src/components/search-bar/useSearchBarDataFilter.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-title/popover-title.vue","../src/components/popover/components/popover-dismiss-button/popover-dismiss-button.vue","../src/components/popover/popover.vue","../src/directives/tooltip/tooltip.types.ts","../src/utils/ts/events.ts","../src/types/utils-events.ts","../src/components/tooltip/tooltip.vue","../src/directives/tooltip/tooltip.ts","../src/components/filter-bar/components/base-filter/composables/index.ts","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross.vue","../src/components/filter-bar/components/base-filter/base-filter.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","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-up.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/triangle-down.vue","../src/components/data-grid/composables/useResizer.ts","../src/utils/ts/resize.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/composables/useConfigSettings.ts","../src/components/data-grid/components/data-grid-columns/data-grid-columns.vue","../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/settings.vue","../src/components/toggle/toggle.types.ts","../src/types/label-position.ts","../src/components/toggle/toggle.vue","../src/components/data-grid/components/data-grid-config-settings/data-grid-config-settings.vue","../src/components/data-grid/data-grid.vue","../src/components/click-outside/click-outside.ts","../src/components/country/composables/useCountryCapital/useCountryCapital.ts","../src/components/country/composables/useCountryFlag.ts","../src/components/country/composables/useCountryName/useCountryName.ts","../src/components/country/composables/useCountryPhoneCode/useCountryPhoneCode.ts","../src/components/country/country.types.ts","../src/utils/ts/i18n.ts","../src/components/country/country.vue","../src/utils/ts/currency/countries-list.ts","../src/utils/ts/currency/currency.ts","../src/components/currency/currency.types.ts","../src/components/currency/currency.vue","../src/components/link/link.types.ts","../src/components/link/link.vue","../src/components/radio-group/radio-group.types.ts","../src/components/radio-group/components/radio-button/radio-button.vue","../src/components/radio-group/radio-group.vue","../src/components/status/status.types.ts","../src/components/status/status.vue","../src/components/tag/tag.types.ts","../src/components/tag/tag.vue","../src/components/avatar/avatar.types.ts","../src/composables/initials.ts","../src/components/avatar/avatar.vue","../src/components/user-profile/user-profile.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 adlCssVars from '@adyen/bento-design-tokens/dist/css/adl/variables.css';\nimport adlLegacyCssVars from '@adyen/bento-design-tokens/dist/css/adl/variables-legacy.css';\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(adlLegacyCssVars);\n injectCSS(bentoLegacyCssVars);\n } else {\n injectCSS(adlCssVars);\n injectCSS(bentoCssVars);\n }\n};\n\nexport default {\n install,\n} as PluginObject<BentoVuePlugin>;\n","export enum BentoAlertSeverityOption {\n WARNING = 'warning',\n CRITICAL = 'critical',\n HIGHLIGHT = 'highlight',\n SUCCESS = 'success',\n}\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","\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","\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=\"M15.349 11.5376L9.99897 2.19758C9.79966 1.85738 9.51482 1.57524 9.17274 1.37919C8.83066 1.18314 8.44325 1.07999 8.04897 1.07999C7.65469 1.07999 7.26727 1.18314 6.92519 1.37919C6.58311 1.57524 6.29827 1.85738 6.09897 2.19758L0.648967 11.5376C0.450427 11.8833 0.347305 12.2755 0.350155 12.6742C0.353005 13.0728 0.461725 13.4636 0.665188 13.8064C0.868651 14.1493 1.15955 14.4319 1.50812 14.6254C1.85668 14.8188 2.2504 14.9162 2.64897 14.9076H13.399C13.7933 14.9073 14.1807 14.8034 14.5222 14.6063C14.8638 14.4092 15.1475 14.1258 15.345 13.7845C15.5425 13.4431 15.6468 13.0559 15.6475 12.6615C15.6482 12.2672 15.5453 11.8796 15.349 11.5376ZM7.24897 5.32758C7.24897 5.12866 7.32798 4.9379 7.46864 4.79725C7.60929 4.65659 7.80006 4.57758 7.99897 4.57758C8.19788 4.57758 8.38864 4.65659 8.5293 4.79725C8.66995 4.9379 8.74897 5.12866 8.74897 5.32758V8.32758C8.74897 8.52649 8.66995 8.71725 8.5293 8.85791C8.38864 8.99856 8.19788 9.07758 7.99897 9.07758C7.80006 9.07758 7.60929 8.99856 7.46864 8.85791C7.32798 8.71725 7.24897 8.52649 7.24897 8.32758V5.32758ZM7.99897 12.3276C7.80119 12.3276 7.60785 12.2689 7.4434 12.159C7.27895 12.0492 7.15077 11.893 7.07509 11.7103C6.9994 11.5275 6.9796 11.3265 7.01818 11.1325C7.05677 10.9385 7.15201 10.7603 7.29186 10.6205C7.43171 10.4806 7.6099 10.3854 7.80388 10.3468C7.99786 10.3082 8.19893 10.328 8.38165 10.4037C8.56438 10.4794 8.72056 10.6076 8.83044 10.772C8.94032 10.9365 8.99897 11.1298 8.99897 11.3276C8.99897 11.5928 8.89361 11.8471 8.70607 12.0347C8.51854 12.2222 8.26418 12.3276 7.99897 12.3276Z\" 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><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","\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-info_filled__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M5.0342 0.839937C6.45033 0.253358 8.0086 0.0998821 9.51195 0.398918C11.0153 0.697953 12.3962 1.43607 13.4801 2.51993C14.5639 3.60378 15.3021 4.9847 15.6011 6.48805C15.9001 7.99141 15.7466 9.54967 15.1601 10.9658C14.5735 12.3819 13.5801 13.5923 12.3057 14.4439C11.0312 15.2955 9.53281 15.75 8 15.75C5.94457 15.75 3.97333 14.9335 2.51992 13.4801C1.06652 12.0267 0.25 10.0554 0.25 8C0.25 6.4672 0.70453 4.96881 1.55611 3.69433C2.40769 2.41985 3.61808 1.42652 5.0342 0.839937ZM8.75 4.5C8.75 4.69778 8.69135 4.89112 8.58147 5.05557C8.47159 5.22002 8.31541 5.34819 8.13268 5.42388C7.94996 5.49957 7.74889 5.51937 7.55491 5.48079C7.36093 5.4422 7.18275 5.34696 7.04289 5.20711C6.90304 5.06725 6.8078 4.88907 6.76922 4.69509C6.73063 4.50111 6.75043 4.30004 6.82612 4.11732C6.90181 3.93459 7.02998 3.77841 7.19443 3.66853C7.35888 3.55865 7.55222 3.5 7.75 3.5C8.01522 3.5 8.26957 3.60536 8.45711 3.79289C8.64464 3.98043 8.75 4.23478 8.75 4.5ZM7 6.25C6.58579 6.25 6.25 6.58579 6.25 7C6.25 7.41421 6.58579 7.75 7 7.75H7.25V10.25H7C6.58579 10.25 6.25 10.5858 6.25 11C6.25 11.4142 6.58579 11.75 7 11.75H9C9.41421 11.75 9.75 11.4142 9.75 11C9.75 10.5858 9.41421 10.25 9 10.25H8.75V7C8.75 6.58579 8.41421 6.25 8 6.25H7Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-info_filled__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","import { computed, ComputedRef, ref } from 'vue';\nimport { MaybeRef } from '../../types/maybe-ref';\n\ninterface ariaLabelOptions {\n ariaLabel?: MaybeRef<string | null>;\n label?: MaybeRef<string | null>;\n defaultFallback?: MaybeRef<string | null>;\n}\n\n/**\n * Returns a valid aria-label for the element it's invoked for\n * @param ariaLabel - The aria label, which has to be set manually through the homonymous prop\n * @param label - Any other label provided, usually the component's main text\n * @param defaultFallback - The default fallback if no other value is provided\n * @returns {string | null} - A string corresponding to the aria label or null if no value is provided\n */\nexport const useAriaLabel = ({\n ariaLabel = null,\n label = null,\n defaultFallback = null,\n}: ariaLabelOptions): ComputedRef<string> => {\n const computedAriaLabel = ref(ariaLabel);\n const computedLabel = ref(label);\n const computedDefaultFallback = ref(defaultFallback);\n\n return computed(() => computedAriaLabel.value ?? computedLabel.value ?? computedDefaultFallback.value);\n};\n","import type { Slots } from 'vue/types/v3-setup-context';\n\n/**\n * High order function that allows to verify if a Slot exits in a component.\n *\n * @example\n * <script lang=\"ts\">\n * import { hasSlot } from '@/utils/ts/hasSlot';\n *\n * export default defineComponent({\n * setup(props, { slots }) {\n * return {\n * //...\n *\n * // Methods\n * hasSlot: hasSlot(slots),\n * }\n * }\n * })\n * </script>\n *\n * @param {function(slots: Slots)} hasSlots Encloses the slots object to be checked when the closure is called\n * @returns {function(name: string)} Checks if the named slot defined by \"name\" exists in the component\n */\nexport const hasSlot = (slots: Slots) => (name: string) => !!slots[name];\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=\"hasSlot('iconLeft')\" class=\"b-button__icon-left\" data-testid=\"icon-button-left\">\n <slot name=\"iconLeft\" />\n </span>\n <bento-typography\n v-if=\"hasSlot('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=\"hasSlot('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 { computed, 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 import { useAriaLabel } from '@/utils/ts/aria-label';\n import { hasSlot } from '@/utils/ts/hasSlot';\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 functionality\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: 'button',\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 emits: ['click', 'focus', 'blur', 'keydown.esc'],\n setup(props, { slots, emit }) {\n const labelSlot = computed((): string => (slots.default ? slots.default()[0]?.text : null));\n\n const ariaLabel = useAriaLabel({ ariaLabel: labelSlot });\n\n const variantClass = computed((): { [x: string]: boolean } => ({\n [`b-button--${props.variant}${props.critical ? `-${BentoButtonPropClass.DESTRUCTIVE}` : ''}`]: true,\n }));\n\n const conditionalClasses = computed(\n (): {\n [x: string]: boolean;\n } => ({\n ...variantClass.value,\n [`b-button--${BentoButtonPropClass.CONDENSED}`]: props.condensed,\n [`b-button--${BentoButtonPropClass.ICON_ONLY}`]: !slots.default,\n })\n );\n\n const onClickButton = (e: MouseEvent) => {\n if (!props.disabled) {\n emit('click', e);\n }\n };\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n ariaLabel,\n conditionalClasses,\n\n // Methods\n onClickButton,\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./button.scss\" />\n","<template>\n <div class=\"b-alert\" :role=\"computedRole\" data-testid=\"alert-container\">\n <div class=\"b-alert__inner-container\" :class=\"alertConditionalClasses\">\n <div class=\"b-alert__severity-icon\" data-testid=\"alert-severity-icon\" aria-hidden=\"true\">\n <checked-circle\n v-if=\"severity === BentoAlertSeverityOption.SUCCESS\"\n :svg-title=\"BentoAlertSeverityOption.SUCCESS\"\n />\n <info\n v-else-if=\"severity === BentoAlertSeverityOption.HIGHLIGHT\"\n :svg-title=\"BentoAlertSeverityOption.HIGHLIGHT\"\n />\n <warning\n v-else-if=\"severity === BentoAlertSeverityOption.WARNING\"\n :svg-title=\"BentoAlertSeverityOption.WARNING\"\n />\n <cross-circle\n v-else-if=\"severity === BentoAlertSeverityOption.CRITICAL\"\n :svg-title=\"BentoAlertSeverityOption.CRITICAL\"\n />\n </div>\n\n <div class=\"b-alert__content\">\n <bento-typography\n v-if=\"$slots.default\"\n class=\"b-alert__content-title\"\n aria-label=\"alert title\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n strongest\n >\n <slot />\n </bento-typography>\n\n <bento-typography\n v-if=\"$slots.description\"\n class=\"b-alert__content-description\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"description\" />\n </bento-typography>\n\n <div v-if=\"$slots.actions\" class=\"b-alert__content-actions\" aria-label=\"alert actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <bento-button\n v-if=\"closeButton\"\n class=\"b-alert__close-button\"\n :variant=\"BentoButtonVariant.TERTIARY\"\n type=\"button\"\n @click=\"onCloseButtonClick\"\n >\n <cross-small svg-title=\"close\" />\n </bento-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType } from 'vue';\n import { BentoAlertSeverityOption } from '@/components/alert/alert.types';\n import { BentoButtonVariant } from '@/components/button/button.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n import CrossSmall from '@adyen/ui-assets-icons-16/vue/cross-small';\n import Warning from '@adyen/ui-assets-icons-16/vue/warning-filled';\n import CrossCircle from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import CheckedCircle from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n import Info from '@adyen/ui-assets-icons-16/vue/info-filled';\n import BentoButton from '../button/button.vue';\n\n /**\n * An Alert component is used to display a persistent\n * notification containing information important to the user\n *\n * @example\n * import { BentoAlert, BentoAlertSeverityOption } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoAlert },\n * template: `\n * <bento-alert :severity=\"BentoAlertSeverityOption.HIGHLIGHT\">\n * Title of the Alert\n * </bento-alert>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-alert',\n components: { CrossSmall, BentoButton, Warning, CrossCircle, CheckedCircle, Info, BentoTypography },\n inheritAttrs: false,\n props: {\n // TODO to rename the property to \"type\" or any other name, when designers finalize it\n /**\n * severity levels set a distinctive icon and color\n */\n severity: {\n type: String as PropType<BentoAlertSeverityOption>,\n default: BentoAlertSeverityOption.HIGHLIGHT,\n },\n /**\n * adds a cross icon on the right side of the alert\n */\n closeButton: {\n type: Boolean,\n default: false,\n },\n /**\n * Alert has less padding and is overall smaller than the default option\n */\n inline: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['close-alert'],\n setup(props, { slots, emit }) {\n const alertConditionalClasses = computed(() => ({\n [`b-alert--${props.severity}`]: props.severity,\n 'b-alert--inline': props.inline,\n }));\n\n const computedRole = computed(() =>\n props.severity === BentoAlertSeverityOption.CRITICAL ||\n props.severity === BentoAlertSeverityOption.WARNING\n ? 'alert'\n : 'status'\n );\n\n const onCloseButtonClick = () => {\n emit('close-alert');\n };\n\n onMounted(() => {\n if (!slots.default) {\n throw new Error('Alert Component requires header title in the slot');\n }\n });\n\n return {\n // Values\n alertConditionalClasses,\n computedRole,\n\n // Methods\n onCloseButtonClick,\n\n // Enums\n BentoButtonVariant,\n BentoAlertSeverityOption,\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./alert.scss\" />\n","import type { VueNodeElement } from '../../../../types';\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\">\n <div class=\"b-button-actions__container-wrapper\" :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 </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 white variant\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","<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","\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=\"computedAriaLabel\"\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 <span v-if=\"defaultSlot || descriptionSlot\" class=\"b-checkbox__text\">\n <bento-typography\n v-if=\"defaultSlot\"\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 v-if=\"descriptionSlot\"\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 import { useAriaLabel } from '@/utils/ts/aria-label';\n\n /**\n * Checkboxes are used to make a binary choice about an option.\n * The label tag area is also clickable.\n *\n * @usage\n * import { BentoCheckbox } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoCheckbox },\n * template: `\n * <bento-checkbox>\n * Label text\n * <template #description>Sub label text</template>\n * </bento-checkbox>\n * `,\n * }\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 * Accessible name for the radio button component. It is strongly recommended to pas this value in case this component is used without a label.\n */\n ariaLabel: { type: String, default: null },\n },\n emits: ['input'],\n setup(props, { emit, slots }) {\n const { ariaLabel, disabled, indeterminate, modelValue, value } = toRefs(props);\n\n const defaultSlot = computed(() => (slots.default ? slots?.default()[0]?.text : null));\n const descriptionSlot = computed(() => (slots.description ? slots?.description()[0]?.text.trim() : null));\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\n const computedAriaLabel = useAriaLabel({\n ariaLabel,\n label: slots.default?.()[0]?.text,\n defaultFallback: '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 ariaChecked,\n computedAriaLabel,\n conditionalClass,\n conditionalClassOutline,\n defaultSlot,\n descriptionSlot,\n isCheckboxGroup,\n isChecked,\n isIndeterminate,\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","<template>\n <fieldset class=\"b-controls-group\" :class=\"conditionalClasses\" :form=\"form\" :disabled=\"disabled\">\n <legend class=\"b-controls-group__label\" :class=\"legendConditionalClasses\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">\n {{ label }}\n </bento-typography>\n </legend>\n <slot />\n </fieldset>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n\n /**\n * A controls group components should be used whenever it is necessary to group a set of controls (i.e. radio buttons or checkboxes)\n * This component conforms to the official WAI-ARIA guidelines for grouping controls: https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * NOTE: This component should not be used by itself but more implemented by other exported components\n * @example\n * import { ControlsGroup, BentoCheckbox } from '@adyen/bento-vue2/';\n *\n * export default {\n * components: { ControlsGroup, RadioButton },\n * template: `\n * <controls-group label=\"Your group label\">\n * <radio-button\n * disabled\n * value=\"inputRadio\"\n * >\n * Label text\n * </radio-button>\n * <radio-button\n * value=\"inputRadio\"\n * >\n * Another label text\n * </radio-button>\n * </controls-group>\n * `\n * };\n */\n export default defineComponent({\n name: 'controls-group',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * The name associated with the group. Required for accessibility purposes.\n */\n label: { type: String, required: true },\n /**\n * Shows/hides the group label.\n */\n showLabel: { type: Boolean, default: false },\n /**\n * The value of the id attribute of a <form> element the <fieldset> is to part of, even if it is not inside the form itself.\n */\n form: { type: String, default: null },\n /**\n * Sets all child controls of the <fieldset> as disabled.\n */\n disabled: { type: Boolean, default: false },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n 'b-controls-group--disabled': props.disabled,\n }));\n\n const legendConditionalClasses = computed(() => ({\n 'b-controls-group__label--hidden': !props.showLabel,\n }));\n\n return {\n // Enums\n BentoTypographyElement,\n\n // Values\n conditionalClasses,\n legendConditionalClasses,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./controls-group.scss\" />\n","export enum BentoCheckboxGroupVariant {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport interface BentoCheckboxGroupItem {\n value: string | number;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport type BentoCheckboxGroupItems = Array<BentoCheckboxGroupItem>;\n","<template>\n <controls-group\n class=\"b-checkbox-group\"\n :class=\"conditionalClasses\"\n :form=\"formId\"\n :disabled=\"disabled\"\n :label=\"label\"\n >\n <bento-checkbox\n v-for=\"item in items\"\n :key=\"item.value\"\n v-model=\"modelValue\"\n :value=\"item.value\"\n :disabled=\"disabled || item.disabled\"\n @input=\"onInput\"\n >\n {{ item.label }}\n <template v-if=\"item.description\" #description>{{ item.description }}</template>\n </bento-checkbox>\n </controls-group>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { BentoCheckbox } from '@/components/checkbox';\n import { ControlsGroup } from '@/components/controls-group';\n import { BentoCheckboxGroupItems, BentoCheckboxGroupVariant } from './checkbox-group.types';\n\n /**\n * A checkbox group component should be used whenever it is necessary to group a set of checkboxes that are related together\n * This component conforms to the official WAI-ARIA guidelines for grouping controls: https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * import { BentoCheckboxGroup } from '@adyen/bento-vue2/';\n *\n * export default {\n * components: { BentoCheckboxGroup },\n * template: `\n * <bento-checkbox-group\n * label=\"Your group label\"\n * :items=\"[\n * { value: 1, label: 'Your label' },\n * { value: 2, label: 'Another label', description: 'Your sub label' },\n * ]\"\n * />\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-checkbox-group',\n components: { BentoCheckbox, ControlsGroup },\n inheritAttrs: false,\n props: {\n /**\n * The checkbox group's items.\n */\n items: {\n type: Array as PropType<BentoCheckboxGroupItems>,\n required: true,\n },\n /**\n * The checkbox group's layout. It can be vertical or horizontal. Defaults to vertical.\n */\n variant: {\n type: String as PropType<BentoCheckboxGroupVariant>,\n default: BentoCheckboxGroupVariant.VERTICAL,\n validator: (value: BentoCheckboxGroupVariant) =>\n Object.values(BentoCheckboxGroupVariant).includes(value),\n },\n /**\n * The form id the checkbox group is associated with. Defaults to null, as a checkbox group can also be used standalone.\n */\n formId: {\n type: String,\n default: null,\n },\n /**\n * If set to true, renders all checkboxes in the group in a disabled state.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * The name associated with the group. Required for accessibility purposes.\n */\n label: { type: String, required: true },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n 'b-checkbox-group--horizontal': props.variant === BentoCheckboxGroupVariant.HORIZONTAL,\n }));\n const modelValue = ref([]);\n\n const onInput = value => {\n emit('input', value);\n };\n\n return {\n // Values\n conditionalClasses,\n modelValue,\n\n // Methods\n onInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./checkbox-group.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=\"b-dropdown-single-select-option\"\n role=\"option\"\n :class=\"conditionalClasses\"\n :aria-selected=\"ariaSelected\"\n :aria-disabled=\"ariaDisabled\"\n :tabindex=\"tabIndex\"\n @click=\"onOptionSelected\"\n >\n <bento-typography :el=\"BentoTypographyElement.SPAN\">{{ label }}</bento-typography>\n <checkmark-icon v-show=\"selected\" svg-title=\"selected\" />\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import type {\n AdlDropdownOptionItem as BentoDropdownOptionItem,\n AdlDropdownValue as BentoDropdownValue,\n } from '@/components/dropdown/dropdown.types';\n import CheckmarkIcon from '@adyen/ui-assets-icons-16/vue/checkmark';\n\n /**\n * Dropdown option element.\n *\n * @example\n * <bento-dropdown-single-select-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 name: 'bento-dropdown-single-select-option',\n components: {\n BentoTypography,\n CheckmarkIcon,\n },\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<BentoDropdownValue>, 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 /**\n * Setting this property to true will disable the option.\n */\n disabled: { type: Boolean, default: false },\n },\n emits: ['select'],\n setup(props, { emit }) {\n const onOptionSelected = () => {\n if (props.disabled) {\n return;\n }\n\n const { label, value } = props;\n\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 BentoDropdownOptionItem);\n };\n\n const conditionalClasses = computed(() => ({\n 'b-dropdown-single-select-option--disabled': props.disabled,\n 'b-dropdown-single-select-option--selected': props.selected,\n }));\n\n const ariaDisabled = computed(() => (props.disabled ? true : null));\n const ariaSelected = computed(() => (props.selected ? true : null));\n const tabIndex = computed(() => (props.disabled ? -1 : 0));\n\n return {\n // Values\n conditionalClasses,\n ariaDisabled,\n ariaSelected,\n tabIndex,\n\n // Enums\n BentoTypographyElement,\n\n // Events\n onOptionSelected,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-single-select-option.scss\" />\n","/**\n * defines a focus group\n */\nexport var FOCUS_GROUP = 'data-focus-lock';\n/**\n * disables element discovery inside a group marked by key\n */\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\n/**\n * allows uncontrolled focus within the marked area, effectively disabling focus lock for it's content\n */\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\n/**\n * instructs autofocus engine to pick default autofocus inside a given node\n * can be set on the element or container\n */\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n/**\n * instructs autofocus to ignore elements within a given node\n * can be set on the element or container\n */\nexport var FOCUS_NO_AUTOFOCUS = 'data-no-autofocus';\n","/*\nIE11 support\n */\nexport var toArray = function (a) {\n var ret = Array(a.length);\n for (var i = 0; i < a.length; ++i) {\n ret[i] = a[i];\n }\n return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","import { FOCUS_NO_AUTOFOCUS } from '../constants';\nvar isElementHidden = function (node) {\n // we can measure only \"elements\"\n // consider others as \"visible\"\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n var computedStyle = window.getComputedStyle(node, null);\n if (!computedStyle || !computedStyle.getPropertyValue) {\n return false;\n }\n return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar getParentNode = function (node) {\n // DOCUMENT_FRAGMENT_NODE can also point on ShadowRoot. In this case .host will point on the next node\n return node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node.parentNode.host\n : node.parentNode;\n};\nvar isTopNode = function (node) {\n // @ts-ignore\n return node === document || (node && node.nodeType === Node.DOCUMENT_NODE);\n};\nvar isVisibleUncached = function (node, checkParent) {\n return !node || isTopNode(node) || (!isElementHidden(node) && checkParent(getParentNode(node)));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n var cached = visibilityCache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n visibilityCache.set(node, result);\n return result;\n};\nvar isAutoFocusAllowedUncached = function (node, checkParent) {\n return node && !isTopNode(node) ? (isAutoFocusAllowed(node) ? checkParent(getParentNode(node)) : false) : true;\n};\nexport var isAutoFocusAllowedCached = function (cache, node) {\n var cached = cache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isAutoFocusAllowedUncached(node, isAutoFocusAllowedCached.bind(undefined, cache));\n cache.set(node, result);\n return result;\n};\nexport var getDataset = function (node) {\n // @ts-ignore\n return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled));\n};\nexport var isAutoFocusAllowed = function (node) {\n var attribute = node.getAttribute(FOCUS_NO_AUTOFOCUS);\n return ![true, 'true', ''].includes(attribute);\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n var tabDiff = a.tabIndex - b.tabIndex;\n var indexDiff = a.index - b.index;\n if (tabDiff) {\n if (!a.tabIndex) {\n return 1;\n }\n if (!b.tabIndex) {\n return -1;\n }\n }\n return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n return toArray(nodes)\n .map(function (node, index) { return ({\n node: node,\n index: index,\n tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n }); })\n .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n .sort(tabSort);\n};\n","/**\n * list of the object to be considered as focusable\n */\nexport var tabbables = [\n 'button:enabled',\n 'select:enabled',\n 'textarea:enabled',\n 'input:enabled',\n // elements with explicit roles will also use explicit tabindex\n // '[role=\"button\"]',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n];\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nvar getFocusablesWithShadowDom = function (parent, withGuards) {\n var _a;\n return toArray(((_a = parent.shadowRoot) === null || _a === void 0 ? void 0 : _a.children) || parent.children).reduce(function (acc, child) {\n return acc.concat(child.matches(withGuards ? queryGuardTabbables : queryTabbables) ? [child] : [], getFocusablesWithShadowDom(child));\n }, []);\n};\nexport var getFocusables = function (parents, withGuards) {\n return parents.reduce(function (acc, parent) {\n return acc.concat(\n // add all tabbables inside and within shadow DOMs in DOM order\n getFocusablesWithShadowDom(parent, withGuards), \n // add if node is tabbable itself\n parent.parentNode\n ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n : []);\n }, []);\n};\n/**\n * return a list of focusable nodes within an area marked as \"auto-focusable\"\n * @param parent\n */\nexport var getParentAutofocusables = function (parent) {\n var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n return toArray(parentFocus)\n .map(function (node) { return getFocusables([node]); })\n .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","import { toArray } from './array';\nimport { isAutoFocusAllowedCached, isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\n/**\n * given list of focusable elements keeps the ones user can interact with\n * @param nodes\n * @param visibilityCache\n */\nexport var filterFocusable = function (nodes, visibilityCache) {\n return toArray(nodes)\n .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n .filter(function (node) { return notHiddenInput(node); });\n};\nexport var filterAutoFocusable = function (nodes, cache) {\n if (cache === void 0) { cache = new Map(); }\n return toArray(nodes).filter(function (node) { return isAutoFocusAllowedCached(cache, node); });\n};\n/**\n * only tabbable ones\n * (but with guards which would be ignored)\n */\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\n/**\n * actually anything \"focusable\", not only tabbable\n * (without guards, as long as they are not expected to be focused)\n */\nexport var getAllTabbableNodes = function (topNodes, visibilityCache) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\n/**\n * return list of nodes which are expected to be auto-focused\n * @param topNode\n * @param visibilityCache\n */\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n/*\n * Determines if element is contained in scope, including nested shadow DOMs\n */\nexport var contains = function (scope, element) {\n return ((scope.shadowRoot\n ? contains(scope.shadowRoot, element)\n : scope.contains(element)) || Array.from(scope.children).some(function (child) { return contains(child, element); }));\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\n/**\n * in case of multiple nodes nested inside each other\n * keeps only top ones\n * this is O(nlogn)\n * @param nodes\n * @returns {*}\n */\nvar filterNested = function (nodes) {\n var contained = new Set();\n var l = nodes.length;\n for (var i = 0; i < l; i += 1) {\n for (var j = i + 1; j < l; j += 1) {\n var position = nodes[i].compareDocumentPosition(nodes[j]);\n /* eslint-disable no-bitwise */\n if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n contained.add(j);\n }\n if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n contained.add(i);\n }\n /* eslint-enable */\n }\n }\n return nodes.filter(function (_, index) { return !contained.has(index); });\n};\n/**\n * finds top most parent for a node\n * @param node\n * @returns {*}\n */\nvar getTopParent = function (node) {\n return node.parentNode ? getTopParent(node.parentNode) : node;\n};\n/**\n * returns all \"focus containers\" inside a given node\n * @param node\n * @returns {T}\n */\nexport var getAllAffectedNodes = function (node) {\n var nodes = asArray(node);\n return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n var group = currentNode.getAttribute(FOCUS_GROUP);\n acc.push.apply(acc, (group\n ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n : [currentNode]));\n return acc;\n }, []);\n};\n","var getNestedShadowActiveElement = function (shadowRoot) {\n return shadowRoot.activeElement\n ? shadowRoot.activeElement.shadowRoot\n ? getNestedShadowActiveElement(shadowRoot.activeElement.shadowRoot)\n : shadowRoot.activeElement\n : undefined;\n};\n/**\n * returns active element from document or from nested shadowdoms\n */\nexport var getActiveElement = function () {\n return (document.activeElement\n ? document.activeElement.shadowRoot\n ? getNestedShadowActiveElement(document.activeElement.shadowRoot)\n : document.activeElement\n : undefined); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n};\n","import { contains } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\n/**\n * @returns {Boolean} true, if the current focus is inside given node or nodes\n */\nexport var focusInside = function (topNode) {\n var activeElement = document && getActiveElement();\n if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n return false;\n }\n return getAllAffectedNodes(topNode).some(function (node) { return contains(node, activeElement) || focusInsideIframe(node); });\n};\n","import { FOCUS_ALLOW } from './constants';\nimport { contains } from './utils/DOMutils';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\n/**\n * focus is hidden FROM the focus-lock\n * ie contained inside a node focus-lock shall ignore\n * @returns {boolean} focus is currently is in \"allow\" area\n */\nexport var focusIsHidden = function () {\n var activeElement = document && getActiveElement();\n if (!activeElement) {\n return false;\n }\n // this does not support setting FOCUS_ALLOW within shadow dom\n return toArray(document.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return contains(node, activeElement); });\n};\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n return nodes\n .filter(isRadioElement)\n .filter(function (el) { return el.name === node.name; })\n .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n if (isRadioElement(node) && node.name) {\n return findSelectedRadio(node, nodes);\n }\n return node;\n};\n/**\n * giving a set of radio inputs keeps only selected (tabbable) ones\n * @param nodes\n */\nexport var correctNodes = function (nodes) {\n // IE11 has no Set(array) constructor\n var resultSet = new Set();\n nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n // using filter to support IE11\n return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n if (nodes[0] && nodes.length > 1) {\n return correctNode(nodes[0], nodes);\n }\n return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n if (nodes.length > 1) {\n return nodes.indexOf(correctNode(nodes[index], nodes));\n }\n return index;\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\n/**\n * Main solver for the \"find next focus\" question\n * @param innerNodes\n * @param outerNodes\n * @param activeElement\n * @param lastNode\n * @returns {number|string|undefined|*}\n */\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n var cnt = innerNodes.length;\n var firstFocus = innerNodes[0];\n var lastFocus = innerNodes[cnt - 1];\n var isOnGuard = isGuard(activeElement);\n // focus is inside\n if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n return undefined;\n }\n var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n var indexDiff = activeIndex - lastIndex;\n var firstNodeIndex = outerNodes.indexOf(firstFocus);\n var lastNodeIndex = outerNodes.indexOf(lastFocus);\n var correctedNodes = correctNodes(outerNodes);\n var correctedIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n var correctedIndexDiff = correctedIndex - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n var returnFirstNode = pickFocusable(innerNodes, 0);\n var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n // new focus\n if (activeIndex === -1 || lastNodeInside === -1) {\n return NEW_FOCUS;\n }\n // old focus\n if (!indexDiff && lastNodeInside >= 0) {\n return lastNodeInside;\n }\n // first element\n if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnLastNode;\n }\n // last element\n if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnFirstNode;\n }\n // jump out, but not on the guard\n if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n return lastNodeInside;\n }\n // focus above lock\n if (activeIndex <= firstNodeIndex) {\n return returnLastNode;\n }\n // focus below lock\n if (activeIndex > lastNodeIndex) {\n return returnFirstNode;\n }\n // index is inside tab order, but outside Lock\n if (indexDiff) {\n if (Math.abs(indexDiff) > 1) {\n return lastNodeInside;\n }\n return (cnt + lastNodeInside + indexDiff) % cnt;\n }\n // do nothing\n return undefined;\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { contains } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n if (parents === void 0) { parents = []; }\n parents.push(node);\n if (node.parentNode) {\n getParents(node.parentNode.host || node.parentNode, parents);\n }\n return parents;\n};\n/**\n * finds a parent for both nodeA and nodeB\n * @param nodeA\n * @param nodeB\n * @returns {boolean|*}\n */\nexport var getCommonParent = function (nodeA, nodeB) {\n var parentsA = getParents(nodeA);\n var parentsB = getParents(nodeB);\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < parentsA.length; i += 1) {\n var currentParent = parentsA[i];\n if (parentsB.indexOf(currentParent) >= 0) {\n return currentParent;\n }\n }\n return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n var activeElements = asArray(baseActiveElement);\n var leftEntries = asArray(leftEntry);\n var activeElement = activeElements[0];\n var topCommon = false;\n leftEntries.filter(Boolean).forEach(function (entry) {\n topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n rightEntries.filter(Boolean).forEach(function (subEntry) {\n var common = getCommonParent(activeElement, subEntry);\n if (common) {\n if (!topCommon || contains(common, topCommon)) {\n topCommon = common;\n }\n else {\n topCommon = getCommonParent(common, topCommon);\n }\n }\n });\n });\n // TODO: add assert here?\n return topCommon;\n};\n/**\n * return list of nodes which are expected to be autofocused inside a given top nodes\n * @param entries\n * @param visibilityCache\n */\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { filterAutoFocusable, getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { getDataset, isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) {\n return function (node) { var _a; \n // @ts-expect-error\n return node.autofocus || !!((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus) || autoFocusables.indexOf(node) >= 0; };\n};\nvar reorderNodes = function (srcNodes, dstNodes) {\n var remap = new Map();\n // no Set(dstNodes) for IE11 :(\n dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n // remap to dstNodes\n return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\n/**\n * given top node(s) and the last active element return the element to be focused next\n * @param topNode\n * @param lastNode\n */\nexport var getFocusMerge = function (topNode, lastNode) {\n var activeElement = document && getActiveElement();\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n var visibilityCache = new Map();\n var anyFocusable = getAllTabbableNodes(entries, visibilityCache);\n var innerElements = getTabbableNodes(entries, visibilityCache).filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n });\n if (!innerElements[0]) {\n innerElements = anyFocusable;\n if (!innerElements[0]) {\n return undefined;\n }\n }\n var outerNodes = getAllTabbableNodes([commonParent], visibilityCache).map(function (_a) {\n var node = _a.node;\n return node;\n });\n var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n var innerNodes = orderedInnerElements.map(function (_a) {\n var node = _a.node;\n return node;\n });\n var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n if (newId === NEW_FOCUS) {\n var autoFocusable = filterAutoFocusable(anyFocusable.map(function (_a) {\n var node = _a.node;\n return node;\n })).filter(findAutoFocused(allParentAutofocusables(entries, visibilityCache)));\n return {\n node: autoFocusable && autoFocusable.length\n ? pickFirstFocus(autoFocusable)\n : pickFirstFocus(filterAutoFocusable(innerNodes)),\n };\n }\n if (newId === undefined) {\n return newId;\n }\n return orderedInnerElements[newId];\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\n/**\n * return list of focusable elements inside a given top node\n * @deprecated use {@link getFocusableIn}. Yep, there is typo in the function name\n */\nexport var getFocusabledIn = function (topNode) {\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(topNode, topNode, entries);\n var visibilityCache = new Map();\n var outerNodes = getTabbableNodes([commonParent], visibilityCache, true);\n var innerElements = getTabbableNodes(entries, visibilityCache)\n .filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n })\n .map(function (_a) {\n var node = _a.node;\n return node;\n });\n return outerNodes.map(function (_a) {\n var node = _a.node, index = _a.index;\n return ({\n node: node,\n index: index,\n lockItem: innerElements.indexOf(node) >= 0,\n guard: isGuard(node),\n });\n });\n};\n/**\n * return list of focusable elements inside a given top node\n */\nexport var getFocusableIn = getFocusabledIn;\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target, focusOptions) {\n if ('focus' in target) {\n target.focus(focusOptions);\n }\n if ('contentWindow' in target && target.contentWindow) {\n target.contentWindow.focus();\n }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\n/**\n * Sets focus at a given node. The last focused element will help to determine which element(first or last) should be focused.\n * HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus\n * @param topNode\n * @param lastNode\n * @param options\n */\nexport var setFocus = function (topNode, lastNode, options) {\n if (options === void 0) { options = {}; }\n var focusable = getFocusMerge(topNode, lastNode);\n if (lockDisabled) {\n return;\n }\n if (focusable) {\n if (guardCount > 2) {\n // tslint:disable-next-line:no-console\n console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n 'See https://github.com/theKashey/focus-lock/#focus-fighting');\n lockDisabled = true;\n setTimeout(function () {\n lockDisabled = false;\n }, 1);\n return;\n }\n guardCount++;\n focusOn(focusable.node, options.focusOptions);\n guardCount--;\n }\n};\n","export enum BentoFocusTrapArrowNavigationDirection {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n}\n\nexport enum BentoFocusTrapVerticalNavigationEvent {\n ARROW_UP = 'arrowup',\n ARROW_DOWN = 'arrowdown',\n}\n\nexport enum BentoFocusTrapHorizontalNavigationEvent {\n ARROW_LEFT = 'arrowleft',\n ARROW_RIGHT = 'arrowright',\n}\n\nexport interface BentoFocusTrapFocusableIn {\n node: HTMLElement;\n /**\n * tab index\n */\n index: number;\n /**\n * true, if this node belongs to a Lock\n */\n lockItem: boolean;\n /**\n * true, if this node is a focus-guard (system node)\n */\n guard: boolean;\n}\n","import { getFocusableIn } from 'focus-lock';\nimport {\n BentoFocusTrapFocusableIn,\n BentoFocusTrapHorizontalNavigationEvent,\n BentoFocusTrapVerticalNavigationEvent,\n} from './focus-trap.types';\n\n/**\n * Perform callback before next re-paint frame of browser.\n *\n * @param action\n * @returns\n */\nexport const deferAction = (callback: FrameRequestCallback) => requestAnimationFrame(callback);\n\n/**\n * Get's the index number of the current node inside an array of focusable elements.\n *\n * @param node an HTMLElement node\n * @param nodes an array of focusable elements\n * @returns\n */\nconst getNodeIndex = (node: Element, nodes: BentoFocusTrapFocusableIn[]) => {\n const index = nodes.findIndex(item => item.node === node);\n return index === -1 ? 0 : index;\n};\n\n/**\n * Retrieves the next focusable element using a factor to either choose\n * the next or previous focusable element.\n *\n * @param factor a number +1 or -1\n * @param element the element to checks for focusable elements inside of\n * @returns\n */\nexport const getNextFocusableElement = (factor, element): HTMLElement => {\n const currentFocusedEl = document.activeElement;\n const focusableElements = getFocusableIn(element);\n const nextIndex = getNodeIndex(currentFocusedEl, focusableElements) + factor;\n return focusableElements[nextIndex]?.node || (currentFocusedEl as HTMLElement);\n};\n\n/**\n * Returns an object is if keyboard event key is an arrow previous or next key.\n * this changes depending on if the arrow navigation is horizontal or vertical.\n *\n * @param event\n * @param arrowOrder\n * @returns { isArrowNext: boolean, isArrowPrev: boolean }\n */\nexport const getArrowType = (\n event: KeyboardEvent,\n arrowOrder: BentoFocusTrapVerticalNavigationEvent[] | BentoFocusTrapHorizontalNavigationEvent[]\n) => {\n const eventKey = event.key.toLowerCase();\n return {\n isArrowNext: eventKey === arrowOrder[0],\n isArrowPrev: eventKey === arrowOrder[1],\n };\n};\n\n/**\n * Default scrolling into view options\n */\nexport const SCROLL_INTO_VIEW_OPTIONS: ScrollIntoViewOptions = {\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n};\n","<template>\n <div\n v-if=\"$slots.default\"\n class=\"b-focus-trap\"\n data-testid=\"focus-trap\"\n tabindex=\"-1\"\n v-on=\"arrowNavigation ? { keydown: onKeyDown } : null\"\n @focusout=\"onBlur\"\n >\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType } from 'vue';\n import moveFocusInside, { focusInside, focusIsHidden } from 'focus-lock';\n import {\n BentoFocusTrapArrowNavigationDirection,\n BentoFocusTrapHorizontalNavigationEvent,\n BentoFocusTrapVerticalNavigationEvent,\n } from './focus-trap.types';\n import { deferAction, getArrowType, getNextFocusableElement, SCROLL_INTO_VIEW_OPTIONS } from './focus-trap.utils';\n\n /**\n * Locks the focus inside an element for a11y navigation.\n * Useful for things like modals, popovers, etc...\n *\n * @example\n * import { BentoFocusTrap, BentoButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFocusTrap, BentoButton },\n * template: `\n * <div id=\"import-choice\">\n * <bento-focus-trap>\n * Make a choice to proceed further!\n * <bento-button>Yes</bento-button>\n * <bento-button>No</bento-button>\n * </bento-focus-trap>\n * </div>\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-focus-trap',\n props: {\n /**\n * Enables / Disables arrow navigation as well can determine the type of arrow navigation.\n * The types of arrow navigation are horizontal and vertical.\n */\n arrowNavigation: {\n type: String as PropType<BentoFocusTrapArrowNavigationDirection>,\n default: undefined,\n validator: value =>\n Object.values(BentoFocusTrapArrowNavigationDirection).includes(\n value as BentoFocusTrapArrowNavigationDirection\n ),\n },\n /**\n * Enables / disables the focus trap.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n data: () => ({\n lastFocusedElement: null,\n }),\n computed: {\n isHorizontalArrowNavigation(): boolean {\n return this.arrowNavigation === BentoFocusTrapArrowNavigationDirection.HORIZONTAL;\n },\n isVerticalArrowNavigation(): boolean {\n return this.arrowNavigation === BentoFocusTrapArrowNavigationDirection.VERTICAL;\n },\n arrowOrder() {\n return this.isVerticalArrowNavigation\n ? Object.values(BentoFocusTrapVerticalNavigationEvent)\n : Object.values(BentoFocusTrapHorizontalNavigationEvent);\n },\n },\n watch: {\n /**\n * If the disabled prop changes, then enable / disable the focus trap.\n */\n disabled() {\n if (this.disabled) {\n this.disable();\n } else {\n this.setFocusInside();\n }\n },\n },\n mounted() {\n if (this.disabled) {\n return;\n }\n this.setFocusInside();\n },\n beforeDestroy() {\n if (this.disabled) {\n return;\n }\n this.disable();\n },\n methods: {\n /**\n * Set focus back inside the element area, giving the last focus element\n * `focus-lock` can determine the next interable element to focus on.\n */\n async setFocusInside() {\n const isFocusOnBody = document.activeElement === document.body;\n if (isFocusOnBody || focusIsHidden() || !this.lastFocusedElement) {\n if (!focusInside(this.$el as HTMLElement)) {\n moveFocusInside(this.$el as HTMLElement, this.lastFocusedElement);\n }\n this.lastFocusedElement = document.activeElement;\n }\n },\n /**\n * On blur, trap the focus inside!\n */\n onBlur() {\n if (this.disabled) {\n return;\n }\n deferAction(this.setFocusInside);\n },\n /**\n * If the no arrow navigation is enabled\n * or if the currently focus element is a textarea or an input then prevent navigation.\n */\n shouldPreventNavigation() {\n if (!this.isVerticalArrowNavigation && !this.isHorizontalArrowNavigation) {\n return false;\n }\n\n const currentTag = document.activeElement.tagName.toLowerCase();\n const possibleFormControls = this.isVerticalArrowNavigation\n ? ['textarea', 'select']\n : ['input', 'textarea'];\n return possibleFormControls.includes(currentTag);\n },\n /**\n * When an arrow key is pressed then navigate to the next focusable element.\n * If trap is disabled or is content editable then prevent arrow navigation.\n *\n * @param event on keyboard press event\n */\n onKeyDown(event: KeyboardEvent) {\n if (\n this.disabled ||\n (document.activeElement as HTMLElement).isContentEditable ||\n this.shouldPreventNavigation()\n ) {\n return;\n }\n\n const { isArrowNext, isArrowPrev } = getArrowType(event, this.arrowOrder);\n if (isArrowPrev || isArrowNext) {\n event.preventDefault();\n event.stopPropagation();\n const focusableEl = getNextFocusableElement(isArrowPrev ? 1 : -1, this.$el);\n focusableEl.focus();\n if ('scrollIntoView' in focusableEl) {\n const options =\n 'scrollBehavior' in document.documentElement.style ? SCROLL_INTO_VIEW_OPTIONS : false;\n focusableEl.scrollIntoView(options);\n }\n }\n },\n /**\n * If focus trap is disabled then return focus to last focus element, parent node or simply the document body.\n */\n disable() {\n const focusOnDestroyEl = this.lastFocusedElement || this.$el.parentNode || document.body;\n if (focusOnDestroyEl) {\n focusOnDestroyEl.focus();\n }\n },\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .b-focus-trap {\n outline: none;\n }\n</style>\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 type { VueNodeElement } from '../../types';\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 <bento-focus-trap\n :id=\"id\"\n :disabled=\"disabledFocusTrap\"\n class=\"b-popper-container\"\n :role=\"ariaRole\"\n :aria-label=\"ariaLabel\"\n >\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 </bento-focus-trap>\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 { BentoFocusTrap } from '@/components/focus-trap';\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 type { VueNodeElement } from '@/types';\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 components: { BentoFocusTrap },\n inheritAttrs: false,\n props: {\n /**\n * The id to be set on the component. Use it for accessibility purposes.\n */\n id: { type: String, default: null },\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 /**\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=\"b-dropdown-options-container\" role=\"listbox\" tabindex=\"-1\" :aria-label=\"ariaLabel\">\n <bento-dropdown-single-select-option\n v-for=\"option in items\"\n :key=\"option.value\"\n :label=\"option.label\"\n :value=\"option.value\"\n :disabled=\"isOptionDisabled ? isOptionDisabled(option) : null\"\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 { BentoDropdownSingleSelectOption } from './components/dropdown-single-select-option';\n import type {\n BentoDropdownIsOptionDisabled,\n AdlDropdownOptionItem as BentoDropdownOptionItem,\n AdlDropdownOptions as BentoDropdownOptions,\n AdlDropdownValue as BentoDropdownValue,\n } 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 * <bento-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 * :isOptionDisabled=\"option => option.value === 2\"\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 name: 'bento-dropdown-options-container',\n components: {\n BentoDropdownSingleSelectOption,\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 * Function that allows the options to be disabled\n *\n * @type {BentoDropdownIsOptionDisabled}\n * @param {AdlDropdownOptionItem} option - Dropdown option object\n * @param {string} option.label - Option's label text\n * @param {string|number} option.value - Option's value\n */\n isOptionDisabled: {\n type: Function as PropType<BentoDropdownIsOptionDisabled>,\n default: undefined,\n },\n\n /**\n * The option elements to populate the dropdown with.\n * It must be an array of {@see BentoDropdownOptionItem }\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<BentoDropdownOptions>,\n required: true,\n },\n\n /**\n * Indicates if the dropdown is open so that\n * the container can be displayed.\n */\n open: { type: Boolean, required: true },\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<BentoDropdownValue>,\n default: null,\n },\n\n /**\n * Reference to the DOM element or Vue component for positioning\n * the Dropdown container.\n */\n targetElement: { type: PopperContainer.props.targetElement.type, required: true },\n },\n emits: ['select'],\n setup(props, { emit }) {\n const isDropdownOpen = computed(() => props.open && !props.disabled);\n const onOptionSelected = (selectedOption: BentoDropdownOptionItem) => {\n /**\n * Triggered when an option is clicked.\n *\n * Indicates the selected option from the \"options\" property.\n * @event select\n * @property {BentoDropdownOptionItem} 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","import type { AnyFn, MaybeComputedElementRef, MaybeElement, VueInstance } from '../../types';\nimport { unref } from 'vue';\n\nconst isClient = typeof window !== 'undefined';\n\nexport const defaultWindow = /* #__PURE__ */ isClient ? window : undefined;\n\nexport const isIOS =\n /* #__PURE__ */ isClient && window?.navigator?.userAgent && /iP(ad|hone|od)/.test(window.navigator.userAgent);\n\n/**\n * Get the value of value/ref/getter.\n */\nexport function resolveUnref<T>(r): T {\n return typeof r === 'function' ? (r as AnyFn<T>)() : unref<T>(r);\n}\n\n/**\n * Get the dom element of a ref of element or Vue component instance\n *\n * @param elRef\n */\nexport function unrefElement<T extends MaybeElement>(elRef: MaybeComputedElementRef<T>): any {\n const plain = resolveUnref(elRef);\n return (plain as VueInstance)?.$el ?? plain;\n}\n\n// No operation\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {};\n","import type { Fn, MaybeComputedRef, MaybeElementRef } from '../../../types';\nimport type { Arrayable, GeneralEventListener } from './types';\nimport { watch } from 'vue';\nimport { defaultWindow, noop, resolveUnref, unrefElement } from '../utils';\n\n/**\n * Verify type of input value\n * @param val Value to be evaluated as string\n * @returns {boolean} true if the value is a \"string\", false if it's something else\n */\nconst isString = (val: unknown): val is string => typeof val === 'string';\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 1: Omitted Window target\n *\n * @see https://vueuse.org/useEventListener\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<E extends keyof WindowEventMap>(\n event: Arrayable<E>,\n listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => unknown>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 2: Explicitly Window target\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<E extends keyof WindowEventMap>(\n target: Window,\n event: Arrayable<E>,\n listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => unknown>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 3: Explicitly Document target\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<E extends keyof DocumentEventMap>(\n target: DocumentOrShadowRoot,\n event: Arrayable<E>,\n listener: Arrayable<(this: Document, ev: DocumentEventMap[E]) => unknown>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 4: Custom event target with event type infer\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<Names extends string, EventType = Event>(\n target: EventTarget,\n event: Arrayable<Names>,\n listener: Arrayable<GeneralEventListener<EventType>>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\n/**\n * Register using addEventListener on mounted, and removeEventListener automatically on unmounted.\n *\n * Overload 5: Custom event target fallback\n *\n * @see https://vueuse.org/useEventListener\n * @param target\n * @param event\n * @param listener\n * @param options\n */\nexport function useEventListener<EventType = Event>(\n target: MaybeComputedRef<EventTarget | null | undefined>,\n event: Arrayable<string>,\n listener: Arrayable<GeneralEventListener<EventType>>,\n options?: MaybeComputedRef<boolean | AddEventListenerOptions>\n): Fn;\n\nexport function useEventListener(...args) {\n let target: MaybeComputedRef<EventTarget> | undefined;\n let events: Arrayable<string>;\n let listeners: Arrayable<EventListenerOrEventListenerObject>;\n let options: MaybeComputedRef<boolean | AddEventListenerOptions> | undefined;\n\n if (isString(args[0]) || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n\n if (!target) return noop;\n\n if (!Array.isArray(events)) events = [events];\n if (!Array.isArray(listeners)) listeners = [listeners];\n\n const cleanups: Array<() => void> = [];\n const cleanup = () => {\n cleanups.forEach(fn => fn());\n cleanups.length = 0;\n };\n\n const register = (\n el: EventTarget,\n event: string,\n listener: EventListenerOrEventListenerObject,\n registerOptions: boolean | AddEventListenerOptions\n ) => {\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n el.addEventListener(event, listener, registerOptions);\n return () => el.removeEventListener(event, listener, registerOptions);\n };\n\n const stopWatch = watch(\n () => [unrefElement(target as unknown as MaybeElementRef), resolveUnref(options)],\n ([el, stopWatchOptions]) => {\n cleanup();\n if (!el) return;\n\n cleanups.push(\n ...(events as string[]).flatMap(event =>\n (listeners as EventListenerOrEventListenerObject[]).map(listener =>\n register(\n el as EventTarget,\n event,\n listener as EventListenerOrEventListenerObject,\n stopWatchOptions as boolean | AddEventListenerOptions\n )\n )\n )\n );\n },\n { immediate: true, flush: 'post' }\n );\n\n const stop = () => {\n stopWatch();\n cleanup();\n };\n\n return stop;\n}\n","import type { Fn, MaybeElementRef } from '../../types';\nimport type { OnClickOutsideHandler, OnClickOutsideOptions } from './types';\nimport { useEventListener } from './useEventListener';\nimport { defaultWindow, isIOS, noop, unrefElement } from './utils';\n\n// eslint-disable-next-line no-underscore-dangle\nlet _iOSWorkaround = false;\n\n/**\n * Listen for clicks outside of an element.\n *\n * @see https://vueuse.org/onClickOutside\n * @param target\n * @param handler\n * @param options\n */\nexport function onClickOutside<T extends OnClickOutsideOptions>(\n target: MaybeElementRef,\n handler: OnClickOutsideHandler,\n options: T = {} as T\n) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n\n if (!window) return;\n\n // Fixes \"onClickOutside not working on Safari iOS\": https://github.com/vueuse/vueuse/issues/1520\n // How it works: https://stackoverflow.com/a/39712411\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n // eslint-disable-next-line scanjs-rules/call_addEventListener\n Array.from(window.document.body.children).forEach((el: Element) => el.addEventListener('click', noop));\n }\n\n let shouldListen = true;\n\n const shouldIgnore = (event: PointerEvent) =>\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ignore.some(target => {\n if (typeof target === 'string') {\n return Array.from(window.document.querySelectorAll(target)).some(\n (el: Element) => el === event.target || event.composedPath().includes(el)\n );\n }\n\n const el = unrefElement(target) as EventTarget;\n return el && (event.target === el || event.composedPath().includes(el));\n });\n\n const listener = (event: PointerEvent) => {\n const el = unrefElement(target) as EventTarget;\n\n if (!el || el === event.target || event.composedPath().includes(el)) return;\n\n if (event.detail === 0) shouldListen = !shouldIgnore(event);\n\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n\n handler(event);\n };\n\n const cleanup = [\n useEventListener(window, 'click', listener, { passive: true, capture }),\n useEventListener(\n window,\n 'pointerdown',\n e => {\n const el = unrefElement(target) as EventTarget;\n if (el) shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n },\n { passive: true }\n ),\n detectIframe &&\n useEventListener(window, 'blur', event => {\n const el: Element = unrefElement(target);\n if (window.document.activeElement?.tagName === 'IFRAME' && !el?.contains(window.document.activeElement))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler(event as any);\n }),\n ].filter(Boolean) as Fn[];\n\n const stop = () => cleanup.forEach(fn => fn());\n\n // eslint-disable-next-line consistent-return\n return stop;\n}\n","import type { ObjectDirective } from 'vue';\nimport { onClickOutside } from './on-click-outside';\n\ntype Element = HTMLElement & { __onClickOutside_stop?: () => void };\n\nexport const BentoClickOutsideDirective: ObjectDirective<Element> = {\n // Attach listener to target element\n inserted(targetElement, binding) {\n const capture = !binding.modifiers.bubble;\n if (typeof binding.value === 'function') {\n // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n targetElement.__onClickOutside_stop = onClickOutside(targetElement, binding.value, { capture });\n } else {\n const [handler, options] = binding.value;\n // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n targetElement.__onClickOutside_stop = onClickOutside(targetElement, handler, { capture, ...options });\n }\n },\n // Remove listener from the target element\n unbind(targetElement) {\n // eslint-disable-next-line no-underscore-dangle\n targetElement.__onClickOutside_stop();\n },\n};\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","/**\n * The debounce() method is used to create a debounced function which\n * delays the given callback function until after the stated wait time\n * in milliseconds have passed since the last time this debounced function was called.\n *\n * @param {Function} callback - The function to debounce.\n * @param debounceTime - The number of milliseconds to delay.\n * @returns {Function} - Returns the new debounced function.\n */\nexport const debounce = <T extends (...args: any[]) => any>(callback: T, debounceTime = 300) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n\n const callable = (...args: any) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => callback(args), debounceTime);\n };\n return <T>(<any>callable);\n};\n","<template>\n <div\n data-testid=\"textbox-wrapper\"\n @click=\"onToggleDropdown\"\n @keydown.enter.self=\"onToggleDropdown\"\n @keydown.space.self=\"onToggleDropdown\"\n @keydown.esc=\"onCloseDropdown\"\n >\n <bento-typography class=\"b-dropdown-base-textbox\" :class=\"conditionalClasses\" :el=\"BentoTypographyElement.DIV\">\n <input\n v-if=\"dynamicFiltering\"\n v-bind=\"ariaAttributes\"\n :id=\"textboxId\"\n ref=\"textbox\"\n class=\"b-dropdown-base-textbox__input\"\n role=\"combobox\"\n type=\"text\"\n aria-autocomplete=\"list\"\n :value=\"open ? value : displayValue\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled ? true : null\"\n @input=\"onInputEvent\"\n />\n <div\n v-else\n :id=\"textboxId\"\n v-bind=\"ariaAttributes\"\n ref=\"textbox\"\n class=\"b-dropdown-base-textbox__input\"\n role=\"combobox\"\n :tabindex=\"0\"\n >\n <span :aria-hidden=\"!displayValue ? true : null\">\n {{ computedDisplayValue }}\n </span>\n </div>\n <span v-if=\"additionalItemsSelected\" class=\"b-dropdown-base-textbox__additional-items\">\n +{{ additionalItemsSelected }}\n </span>\n <span v-if=\"hasSlot('icon') && !isFiltering\" aria-hidden=\"true\">\n <slot name=\"icon\"></slot>\n </span>\n <span\n v-if=\"isFiltering\"\n class=\"b-dropdown-base-textbox__clear-search\"\n tabindex=\"0\"\n data-testid=\"clear-search-button\"\n @click=\"onClearSearch\"\n @keypress.enter=\"onClearSearch\"\n @keyup.space=\"onClearSearch\"\n >\n <cross-circle-fill-icon :svg-title=\"'clearSearch'\" />\n </span>\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { generateUid } from '@/utils/ts/unique-id';\n import { hasSlot } from '@/utils/ts/hasSlot';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import CrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import { debounce } from '@/utils/ts/debounce';\n import { Booleanish } from '@/types';\n import type { HTMLAttributes } from 'vue/types/jsx';\n\n /**\n * Only for internal use, implements the logic of the textbox element to be implemented in the combobox.\n */\n export default defineComponent({\n name: 'dropdown-base-textbox',\n components: { BentoTypography, CrossCircleFillIcon },\n props: {\n /**\n * The number of additional items that have been selected in the dropdown.\n */\n additionalItemsSelected: { type: Number, default: 0 },\n\n /**\n * Sets the aria-controls attribute on the textbox. This should correspond to the popover's id that the textbox triggers.\n */\n ariaControls: {\n type: String,\n required: true,\n },\n\n /**\n * Indicates whether the content the textbox triggers is visible or not. Needs to be set accordingly when the textbox is used and changed every time the popover is shown/hidden.\n */\n ariaExpanded: {\n type: [String, Boolean] as PropType<Booleanish>,\n required: true,\n },\n\n /**\n * If no label element is used then the aria-label is be set should be set.\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Corresponds to the label's id that labels the textbox element.\n */\n ariaLabelledby: {\n type: String,\n default: null,\n },\n\n /**\n * Custom debounce time for the user type event.\n */\n debounceTime: { type: Number, default: 300 },\n\n /**\n * Disables any textbox 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 * Sets the possibility to type into the textbox.\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Marks the textbox as invalid, rendering an error state\n */\n isInvalid: { type: Boolean, default: false },\n\n /**\n * Indicates if the dropdown is open so that\n * the respective event can be emitted\n */\n open: { 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 */\n value: { type: String, default: '' },\n },\n emits: ['open', 'close', 'input', 'clear'],\n setup(props, { emit, slots }) {\n const textbox = ref(null);\n const textboxId = generateUid('textbox');\n\n const conditionalClasses = computed(() => ({\n 'b-dropdown-base-textbox--disabled': props.disabled,\n }));\n const shouldShowPlaceholder = computed(() => !props.displayValue && !!props.placeholder);\n const computedDisplayValue = computed(() =>\n shouldShowPlaceholder.value ? props.placeholder : props.displayValue\n );\n const isFiltering = computed(() => props.dynamicFiltering && !!props.value);\n\n const ariaAttributes = computed(\n () =>\n ({\n 'aria-haspopup': 'listbox',\n 'aria-controls': props.ariaControls,\n 'aria-expanded': props.ariaExpanded ? 'true' : 'false',\n 'aria-labelledby': props.ariaLabelledby,\n 'aria-label': props.ariaLabelledby ? null : props.ariaLabel,\n 'aria-invalid': props.isInvalid,\n 'aria-disabled': props.disabled ? true : null,\n } as HTMLAttributes)\n );\n\n /**\n * Triggered on click, space and enter user events. It will open the dropdown.\n * @event open\n */\n const onOpenDropdown = () => {\n if (!props.disabled) {\n textbox.value.focus();\n emit('open');\n }\n };\n\n /**\n * Triggered on click, space, enter and esc user events. It will close the dropdown.\n * @event close\n */\n const onCloseDropdown = () => {\n if (props.open) {\n textbox.value.focus();\n emit('close');\n }\n };\n\n const onToggleDropdown = () => (props.open ? onCloseDropdown() : onOpenDropdown());\n const onClearSearch = () => {\n emit('clear');\n emit('input', '');\n };\n const onInputEvent = debounce<(event: Event) => void>((event: Event) => {\n emit('input', (event.target as HTMLInputElement).value);\n }, props.debounceTime);\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n conditionalClasses,\n computedDisplayValue,\n shouldShowPlaceholder,\n textboxId,\n textbox,\n isFiltering,\n ariaAttributes,\n\n // Events\n onCloseDropdown,\n onToggleDropdown,\n onClearSearch,\n onInputEvent,\n\n // Methods\n hasSlot: hasSlot(slots),\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-base-textbox.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 <div class=\"b-dropdown-default-textbox\" :class=\"conditionalClasses\">\n <dropdown-base-textbox\n v-bind=\"{ ...$attrs, ...$props }\"\n class=\"b-dropdown-default-textbox__textbox\"\n :value=\"value\"\n @input=\"e => $emit('input', e)\"\n @open=\"$emit('open')\"\n @close=\"$emit('close')\"\n @clear=\"$emit('clear')\"\n >\n <template #icon>\n <div class=\"b-dropdown-default-textbox__chevron\">\n <chevron-up-icon v-show=\"isDropdownOpen\" svg-title=\"opened\" />\n <chevron-down-icon v-show=\"!isDropdownOpen\" svg-title=\"closed\" />\n </div>\n </template>\n </dropdown-base-textbox>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import DropdownBaseTextbox from '@/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.vue';\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 import { Booleanish } from '../../../../types';\n\n /**\n * For internal use only, textbox component used in the dropdown component.\n */\n export default defineComponent({\n name: 'dropdown-default-textbox',\n components: { ChevronDownIcon, ChevronUpIcon, DropdownBaseTextbox },\n emits: ['open', 'close', 'input', 'clear'],\n props: {\n /**\n * The number of additional items that have been selected in the dropdown.\n */\n additionalItemsSelected: { type: Number, default: 0 },\n\n /**\n * Sets the aria-controls attribute on the textbox. This should correspond to the popover's id that the textbox triggers.\n */\n ariaControls: {\n type: String,\n required: true,\n },\n\n /**\n * Indicates whether the content the textbox triggers is visible or not. Needs to be set accordingly when the textbox is used and changed every time the popover is shown/hidden.\n */\n ariaExpanded: {\n type: [String, Boolean] as PropType<Booleanish>,\n required: true,\n },\n\n /**\n * If no label element is used then the aria-label is be set should be set.\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Corresponds to the label's id that labels the textbox element.\n */\n ariaLabelledby: {\n type: String,\n default: null,\n },\n\n /**\n * Custom debounce time. Default: 300\n */\n debounceTime: { type: Number, default: 300 },\n\n /**\n * Disables any textbox 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 * Sets the possibility to type into the textbox\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Marks the textbox as invalid, rendering an error state\n */\n isInvalid: { type: Boolean, default: false },\n\n /**\n * Indicates if the dropdown is open so that\n * the respective event can be emitted\n */\n open: { 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 */\n value: { type: String, default: '' },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n 'b-dropdown-default-textbox--error': props.isInvalid,\n 'b-dropdown-default-textbox--disabled': props.disabled,\n 'b-dropdown-default-textbox--opened': props.open,\n }));\n\n const isDropdownOpen = computed(() => props.open && !props.disabled);\n\n return {\n // Values\n conditionalClasses,\n isDropdownOpen,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./dropdown-default-textbox.scss\" />\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\nexport enum BentoInputFieldType {\n SEARCH = 'search',\n TEXT = 'text',\n}\n","<template>\n <bento-typography\n class=\"b-input-field\"\n data-testid=\"input-text-container\"\n :class=\"inputFieldConditionalClasses\"\n :el=\"BentoTypographyElement.DIV\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\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=\"ariaHidden ? 'true' : undefined\"\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=\"ariaHidden ? 'true' : undefined\"\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 <input\n ref=\"inputFieldElement\"\n class=\"b-input-field__input\"\n :aria-label=\"ariaLabel\"\n :type=\"type\"\n :value=\"value\"\n :disabled=\"disabled\"\n @input=\"onInput\"\n />\n <span\n v-if=\"$slots.iconAfter\"\n :aria-hidden=\"ariaHidden ? 'true' : undefined\"\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 </bento-typography>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import {\n BentoInputFieldStateClass,\n BentoInputFieldStaticValuePosition,\n BentoInputFieldType,\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 * Indicates whether the element is exposed to an accessibility API.\n */\n ariaHidden: { type: Boolean, default: true },\n\n /**\n * Text that labels an the input element\n */\n ariaLabel: { type: String, default: undefined },\n\n /**\n * Disables the possibility of changing value in the input-field\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Adds error validation class for outlining input-field\n */\n error: { type: Boolean, default: false },\n\n /**\n * Static text that displayed before or after input value\n * Applicable to the Static Value variant\n */\n staticValue: { type: String, 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 /**\n * A string specifying the type of control to render.\n */\n type: {\n type: String as PropType<BentoInputFieldType>,\n default: BentoInputFieldType.TEXT,\n },\n\n /**\n * Text displayed as the value of the input-field\n */\n value: { type: String, 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","\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-search__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8.31686 0.379702C7.00749 0.119252 5.65029 0.252925 4.41689 0.763816C3.18349 1.27471 2.12928 2.13987 1.38758 3.2499C0.645881 4.35994 0.25 5.66498 0.25 7C0.25 8.79021 0.961159 10.5071 2.22703 11.773C3.4929 13.0388 5.20979 13.75 7 13.75C8.33502 13.75 9.64007 13.3541 10.7501 12.6124C10.9096 12.5059 11.064 12.3928 11.2131 12.2737L14.4697 15.5303C14.7626 15.8232 15.2374 15.8232 15.5303 15.5303C15.8232 15.2374 15.8232 14.7626 15.5303 14.4697L12.2738 11.2131C12.6674 10.7203 12.9922 10.1721 13.2362 9.58312C13.7471 8.34972 13.8808 6.99252 13.6203 5.68314C13.3598 4.37377 12.717 3.17104 11.773 2.22703C10.829 1.28303 9.62623 0.640153 8.31686 0.379702ZM10.7619 10.6621C11.2239 10.1875 11.5943 9.6272 11.8504 9.00909C12.2477 8.04978 12.3517 6.99418 12.1491 5.97578C11.9465 4.95738 11.4465 4.02192 10.7123 3.28769C9.97808 2.55347 9.04262 2.05345 8.02422 1.85088C7.00582 1.64831 5.95022 1.75228 4.99091 2.14964C4.0316 2.547 3.21166 3.2199 2.63478 4.08326C2.05791 4.94662 1.75 5.96165 1.75 7C1.75 8.39239 2.30312 9.72775 3.28769 10.7123C4.27226 11.6969 5.60761 12.25 7 12.25C8.03835 12.25 9.05339 11.9421 9.91674 11.3652C10.1843 11.1864 10.4336 10.9843 10.6621 10.7619C10.677 10.7439 10.6928 10.7265 10.7097 10.7097C10.7265 10.6928 10.7439 10.677 10.7619 10.6621Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-search__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-search-bar\">\n <bento-input-field\n v-model=\"searchTerm\"\n :type=\"BentoInputFieldType.SEARCH\"\n :aria-label=\"ariaLabel\"\n :aria-hidden=\"false\"\n @input=\"onInputEvent\"\n >\n <template #defaultIconBefore>\n <search-icon :svg-title=\"$t('search')\" />\n </template>\n\n <template v-if=\"searchTerm\" #iconAfter>\n <div\n class=\"b-search-bar__clear-search\"\n tabindex=\"0\"\n data-testid=\"b-search-bar-clear-search-button\"\n @click=\"onClearSearch\"\n @keypress.enter=\"onClearSearch\"\n @keyup.space=\"onClearSearch\"\n >\n <cross-circle-fill-icon :svg-title=\"$t('clearSearch')\" />\n </div>\n </template>\n </bento-input-field>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, ref } from 'vue';\n import { BentoInputField, BentoInputFieldType } from '@/components/input-field';\n import { debounce } from '@/utils/ts/debounce';\n import SearchIcon from '@adyen/ui-assets-icons-16/vue/search';\n import CrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n\n import messages from './messages.json';\n\n /**\n * Search functionality to help users find the desired data quicker.\n * When a user starts typing, the data is dynamically filtered to\n * only show the relevant results.\n *\n * Clearing the search field displays the entire list again.\n *\n * @example\n * import {\n * BentoSearchBar,\n * BentoSearchBarData,\n * useSearchBarFilter\n * } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSearchBar },\n * template: `\n * <bento-search-bar\n * aria-description=\"Search bar\"\n * v-modal=\"searchTerm\"\n * @input=\"onInput\"\n * @clear-search=\"onClearSearch\"\n * />\n * // Render the filtered data\n * {{ filteredData }}\n * `,\n * setup() {\n * const searchTerm = ref('');\n * const data = ref<BentoSearchBarData>([]);\n * const filteredData = useSearchBarFilter(searchTerm, data);\n *\n * consdt onInput = () => {}\n * consdt onClearSearch = () => {}\n *\n * return {\n * searchTerm,\n * filteredData,\n * onInput,\n * onClearSearch,\n * };\n * }\n * }\n */\n export default defineComponent({\n name: 'bento-search-bar',\n i18n: { messages },\n components: {\n CrossCircleFillIcon,\n BentoInputField,\n SearchIcon,\n },\n inheritAttrs: false,\n props: {\n /**\n * Text that labels an the search bar input element\n */\n ariaLabel: { type: String, required: true },\n\n /**\n * Custom debounce time. Default: 300\n */\n debounceTime: { type: Number, default: 300 },\n\n /**\n * Text displayed as the value being searched\n */\n value: { type: String, default: undefined },\n },\n emits: ['input', 'clear'],\n setup(props, { emit }) {\n const searchTerm = ref(props.value);\n\n const onClearSearch = () => {\n searchTerm.value = '';\n emit('clear');\n emit('input', '');\n };\n\n const onInputEvent = debounce(() => {\n emit('input', searchTerm.value);\n }, props.debounceTime);\n\n return {\n // Values\n searchTerm,\n\n // Emits\n onClearSearch,\n onInputEvent,\n\n // Enums\n BentoInputFieldType,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./search-bar.scss\" />\n","import { computed, ref, Ref } from 'vue';\nimport { BentoSearchBarItem } from './search-bar.types';\n\n/**\n * Filters an array {@see BentoSearchBarData} containing elements of type {@see BentoSearchBarItem}\n * by the {@param searchTerm}.\n *\n * @param {Ref<String>} searchTerm - Text that satisfies the search criteria.\n * @param {Ref<BentoSearchBarData>} data - Array to be filtered by {@param searchTerm}\n * @returns {Ref<BentoSearchBarData>} New instance of the array filtered by the {@param searchTerm} text\n */\nexport function useSearchBarFilter<T extends BentoSearchBarItem>(searchTerm: Ref<string>, data: Ref<T[]>) {\n const searchTermRef = ref(searchTerm);\n const dataRef = ref(data);\n\n const filterInputData = computed(() => {\n const searchTermLowerCased = searchTermRef.value.toLocaleLowerCase();\n return dataRef.value.filter(({ label }) => label.toLowerCase().includes(searchTermLowerCased));\n });\n\n return filterInputData;\n}\n","<!-- TODO: Remove aria props as these are part of JSX elements /vue/types/jsx.d.ts -->\n<!-- eslint-disable vue/attribute-hyphenation -->\n<template>\n <div v-bento-click-outside-directive=\"closeOpenedDropdown\" class=\"b-dropdown\">\n <div v-if=\"label\" :id=\"labelId\" class=\"b-dropdown__label\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" stronger>{{ label }}</bento-typography>\n <bento-typography v-if=\"optional\" class=\"b-dropdown__label-requirement\" :el=\"BentoTypographyElement.SPAN\">\n ({{ $t('optional') }})\n </bento-typography>\n <bento-typography v-if=\"required\" class=\"b-dropdown__label-requirement\" :el=\"BentoTypographyElement.SPAN\">\n ({{ $t('required') }})\n </bento-typography>\n </div>\n <dropdown-input-default\n ref=\"inputContainerRef\"\n v-model=\"searchTerm\"\n :ariaControls=\"dropdownOptionsContainerId\"\n :ariaExpanded=\"isDropdownOpen\"\n :aria-labelledby=\"label ? labelId : null\"\n :aria-label=\"ariaLabel ? ariaLabel : null\"\n :open=\"isDropdownOpen\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :display-value=\"displayValue\"\n :dynamic-filtering=\"dynamicFiltering\"\n :is-invalid=\"false\"\n @open=\"toggleDropdown\"\n @close=\"toggleDropdown\"\n />\n <bento-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 :is-option-disabled=\"isOptionDisabled\"\n :items=\"filteredItems\"\n :target-element=\"inputContainerRef\"\n @select=\"onOptionSelected\"\n />\n <bento-typography v-if=\"description\" class=\"b-dropdown__description\" :el=\"BentoTypographyElement.SPAN\">\n {{ description }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRef } from 'vue';\n import {\n AdlDropdownOptionItem,\n AdlDropdownOptions,\n AdlDropdownSelectedValue,\n BentoDropdownIsOptionDisabled,\n } from './dropdown.types';\n import { BentoDropdownOptionsContainer } from './components/dropdown-options-container';\n import { BentoClickOutsideDirective } from '@/directives/click-outside';\n import { generateUid } from '@/utils/ts/unique-id';\n import { DropdownInputDefault } from './components';\n import { useSearchBarFilter } from '../search-bar';\n import { BentoTypography, BentoTypographyElement } from '../typography';\n import messages from './messages.json';\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 * v-model=\"selectedValue\"\n * placeholder=\"Placeholder text\"\n * :disabled=\"false\"\n * :isOptionsDisabled=\"option => option.value === 2\"\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 i18n: { messages },\n name: 'b-dropdown',\n components: {\n BentoDropdownOptionsContainer,\n BentoTypography,\n DropdownInputDefault,\n },\n directives: { BentoClickOutsideDirective },\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 * Sets the possibility to type into the textbox\n */\n dynamicFiltering: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Text that is displayed as a label above the element\n */\n label: { type: String, default: null },\n\n /**\n * Descriptive supporting text visbile underneath the dropdown.\n */\n description: { type: String, default: null },\n\n /**\n * Highlights the dropdown is optional.\n */\n optional: { 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 * Function that allows the options to be disabled\n *\n * @type {BentoDropdownIsOptionDisabled}\n * @param {AdlDropdownOptionItem} option - Dropdown option object\n * @param {string} option.label - Option's label text\n * @param {string|number} option.value - Option's value\n */\n isOptionDisabled: {\n type: Function as PropType<BentoDropdownIsOptionDisabled>,\n default: undefined,\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 /**\n * Highlights the dropdown is required.\n */\n required: { type: Boolean, default: false },\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 const labelId = generateUid('dropdown-label');\n\n // Filtering\n const searchTerm = ref('');\n const items = toRef(props, 'items');\n const filteredItems = useSearchBarFilter<AdlDropdownOptionItem>(searchTerm, items);\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 closeOpenedDropdown = () => {\n if (isDropdownOpen.value) {\n isDropdownOpen.value = false;\n }\n };\n\n const onOptionSelected = (selectedOption: AdlDropdownOptionItem) => {\n searchTerm.value = '';\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', selectedOption.value);\n };\n\n return {\n // Values\n isDropdownOpen,\n displayValue,\n dropdownOptionsContainerId,\n filteredItems,\n searchTerm,\n labelId,\n\n // Refs\n inputContainerRef,\n\n // Events\n closeOpenedDropdown,\n toggleDropdown,\n onOptionSelected,\n\n // Enums\n BentoTypographyElement,\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: '20', value: 20 },\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 <div class=\"b-pagination\">\n <nav :aria-label=\"ariaLabel\" class=\"b-pagination__navigation\" :class=\"navigationConditionalClasses\">\n <bento-pagination-results-per-page\n v-if=\"!hidePageSize\"\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 </div>\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 * Toggles the visibility of the \"results per page\" part of the pagination component.\n */\n hidePageSize: {\n type: Boolean,\n default: false,\n },\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: 20,\n validator: (itemsPerPageValue: number) => [10, 20, 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 const navigationConditionalClasses = computed(() => ({\n 'b-pagination__navigation--no-results-per-page': props.hidePageSize,\n }));\n\n return {\n // Values\n totalPages,\n navigationConditionalClasses,\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-typography :strongest=\"isStrongest\" :variant=\"titleVariant\" :el=\"BentoTypographyElement.SPAN\">\n {{ title }}\n </bento-typography>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent } from 'vue';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n export default defineComponent({\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Indicates if the popover contains an image.\n */\n isImageTitle: { type: Boolean, default: false },\n\n /**\n * Indicates the title you want to give the popover.\n */\n title: { type: String, default: null },\n },\n setup(props) {\n // Use strongest only when it has no image\n const isStrongest = computed(() => !props.isImageTitle);\n\n // If an image is present, change the variant from BODY to SUBTITLE and remove the \"strongest\" property of the title\n const titleVariant = computed(() =>\n props.isImageTitle ? BentoTypographyVariant.SUBTITLE : BentoTypographyVariant.BODY\n );\n\n return {\n // Values\n isStrongest,\n titleVariant,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\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-popover-title :title=\"title\" :is-image-title=\"!!$slots.image\" />\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\" :class=\"contentConditionalClasses\">\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, toRefs } from 'vue';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { PopperContainer, PopperContainerAriaRole } from '@/components/popper-container';\n import { BentoPopoverPositions } from './popover.types';\n import { BentoButtonActions, BentoButtonActionsLayout, BentoButtonActionsList } from '@/components/button';\n import BentoPopoverTitle from './components/popover-title/popover-title.vue';\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-vue2';\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 BentoButtonActions,\n BentoPopoverDismissButton,\n BentoPopoverTitle,\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 { ariaLabel, title } = toRefs(props);\n\n const computedAriaLabel = useAriaLabel({ ariaLabel, label: title });\n\n const conditionalClasses = computed(() => ({\n 'b-popover--small': props.small && !props.large,\n 'b-popover--large': props.large && !props.small,\n }));\n\n const contentConditionalClasses = computed(() => ({\n 'b-popover__content--with-title': !!props.title,\n }));\n\n const dismissPopover = () => emit('dismiss');\n\n return {\n // Values\n conditionalClasses,\n contentConditionalClasses,\n computedAriaLabel,\n\n // Enums\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 '../../components/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","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 from 'vue';\n\nexport interface ListenOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n self?: boolean;\n vm?: Vue;\n onCleanup?: () => void;\n}\n\nexport enum KeyCode {\n ESCAPE = 27,\n}\n","<template>\n <popper-container\n :id=\"id\"\n :target-element=\"targetElement\"\n :position=\"position\"\n :fallback-position=\"PopperContainerPositionExtended.AUTO\"\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, PropType } from 'vue';\n import { BentoTooltipPosition, BentoTooltipState } from '@/directives/tooltip/tooltip.types';\n import {\n PopperContainer,\n PopperContainerAriaRole,\n PopperContainerPositionExtended,\n } from '@/components/popper-container';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n\n /**\n * Tooltip container, to be used internally to render the tooltip container where the text is shown.\n */\n export default defineComponent({\n name: 'tooltip',\n components: { BentoTypography, PopperContainer },\n inheritAttrs: false,\n props: {\n /**\n * The tooltip's id. Necessary for accessibility purposes.\n */\n id: { type: String, default: null },\n /**\n * Tooltip's target reference to the DOM element or Vue component.\n * The tooltip will position itself relatively to target element, in the 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 const conditionalClasses = computed(() => ({\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 PopperContainerPositionExtended,\n\n // Values\n conditionalClasses,\n tabIndex,\n };\n },\n });\n\n export class Tooltip {}\n</script>\n\n<style lang=\"scss\" scoped src=\"./tooltip.scss\" />\n","import Vue, { DirectiveOptions } from 'vue';\nimport { listen } from '../../utils/ts/events';\nimport { generateUid } from '../../utils/ts/unique-id';\nimport { KeyCode } from '../../types/utils-events';\nimport Tooltip from '../../components/tooltip/tooltip.vue';\nimport { BentoTooltipPosition, TooltipInstance } from './tooltip.types';\nimport type { DirectiveBinding } from 'vue/types/options';\n\n/**\n * Tooltip directive to render a tooltip on a given HTML element or component.\n *\n * @usage\n * import { BentoTooltipDirective } from '@adyen/bento-vue2';\n *\n * export default {\n * directives: { BentoTooltipDirective },\n * template: `\n * <bento-button\n * v-bento-tooltip-directive:top=\"Tooltip Content\"\n * >\n * Button text\n * </bento-button>\n * `,\n * }\n */\nconst TooltipComponent = Vue.extend(Tooltip);\nconst tooltipInstances: Array<TooltipInstance> = [];\nconst ariaDescribedByAttr = 'aria-describedby';\nconst tooltipId = generateUid('tooltip');\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 // Sets the target's 'aria-describedby' attribute\n el.setAttribute(ariaDescribedByAttr, tooltipId);\n // Sets the target's tabindex so as to make the tooltip interactive via keyboard navigation\n el.setAttribute('tabindex', '0');\n // eslint-disable-next-line no-param-reassign\n el.style.width = 'fit-content';\n tooltip = new TooltipComponent({ propsData: { targetElement: el, content: '', id: tooltipId } }).$mount();\n // Tooltip is not mounted 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 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 * @internal\n */\nconst hideTooltip = () => {\n open = false;\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-vue2';\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 */\nexport const BentoTooltipDirective: 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();\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 listen(el, 'keydown', evt => {\n const keyboardEvent = <KeyboardEvent>evt;\n if (keyboardEvent.keyCode === KeyCode.ESCAPE) {\n hide();\n }\n }),\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();\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","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","\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 v-bento-click-outside-directive=\"onClickOutside\" 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 { BentoClickOutsideDirective, BentoTooltipDirective, BentoTooltipPosition } from '@/directives';\n import { useFilterLabel } from './composables';\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: {\n BentoClickOutsideDirective,\n BentoTooltipDirective,\n },\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 onClickOutside = () => closePopover();\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 onClickOutside,\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","<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 enum BentoColumnOverflow {\n WRAP = 'wrap',\n ELLIPSIS = 'ellipsis',\n}\n\nexport interface BentoColumn {\n field: string;\n label: string;\n width?: number;\n minWidth?: number;\n flex?: number;\n sortable?: boolean;\n numeric?: boolean;\n padding?: {\n left?: boolean;\n right?: boolean;\n };\n overflow?: BentoColumnOverflow;\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\nexport interface BentoColumnWidthOverridesLookup {\n [field: string]: {\n width: BentoColumn['width'];\n minWidth: BentoColumn['minWidth'];\n };\n}\n\nexport interface BentoDatagridAllItemsSelectedState {\n allItemsSelected: boolean;\n isIndeterminate: boolean;\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","/* eslint-disable no-param-reassign */\nimport { computed, reactive, ref, Ref, toRefs, watchEffect } from 'vue';\nimport { listen } from '../../../utils/ts/events';\nimport { BentoColumn, BentoColumnWidthOverridesLookup } 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 const columnWidthOverridesLookup = ref<BentoColumnWidthOverridesLookup>(undefined);\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 let stepPositionX = 0;\n let resizingColumnField = '';\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 // eslint-disable-next-line no-return-assign\n watchEffect(() => (columnWidthOverridesLookup.value = 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 - stepPositionX;\n const currResizingColumnField = resizingColumnField;\n\n const resizedColumnWidth = columnWidthOverridesLookup.value[currResizingColumnField].width + sizeChange;\n // If the column width is more than the minWidth set the new resized width or else use the minWidth\n columnWidthOverridesLookup.value[currResizingColumnField].width =\n resizedColumnWidth > columnWidthOverridesLookup.value[currResizingColumnField].minWidth\n ? resizedColumnWidth\n : columnWidthOverridesLookup.value[currResizingColumnField].minWidth;\n /**\n * Triggered when a column is resized\n *\n * @event column-resizing\n * @property BentoColumnWidthOverridesLookup columnWidthOverridesLookup - the column width overrides.\n */\n emit('column-resizing', columnWidthOverridesLookup.value);\n\n 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 (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: resizingColumnField,\n width: columnWidthOverridesLookup.value[resizingColumnField].width,\n });\n }\n\n // Reset all resize vars back to defaults\n removeMouseMoveResizeListener = null;\n removeMouseUpResizeListener = null;\n resizingColumnField = '';\n 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 resizingColumnField = field;\n stepPositionX = event.clientX;\n\n removeMouseMoveResizeListener = listen(window, 'mousemove', onResizeColumn);\n removeMouseUpResizeListener = listen(window, 'mouseup', stopResize);\n }\n };\n\n return { resizeData: columnWidthOverridesLookup, allColumnRefs, startResize };\n};\n\nexport default useResizer;\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","import { computed, nextTick, onMounted, ref } from 'vue';\nimport { BentoColumn, BentoColumnWidthOverridesLookup } from '../../data-grid.types';\nimport { CalculateColumnWidthOptions, FlexColumnLookup } from './useCalculateColumnWidth.types';\nimport { MaybeRef } from '../../../../types';\nimport { observeSizeOfElement } from '../../../../utils/ts/resize';\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 bodyRef: MaybeRef<HTMLDivElement | undefined>,\n options?: CalculateColumnWidthOptions\n) => {\n const columns = ref(newColumns);\n const body = ref(bodyRef);\n\n // Observe the size of the table body and store the width for column and CSS width calculations\n const gridWidth = ref<number>();\n onMounted(() => {\n nextTick(() => {\n observeSizeOfElement(body.value, ({ width }) => {\n gridWidth.value = width;\n });\n });\n });\n\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 // RESIZE OBJECT\n const columnWidthOverridesLookup = ref<BentoColumnWidthOverridesLookup>(undefined);\n\n const onColumnWidthOverride = (newColumnWidthOverridesLookup: BentoColumnWidthOverridesLookup) => {\n columnWidthOverridesLookup.value = newColumnWidthOverridesLookup;\n };\n\n const processedColumns = computed(() =>\n caclulatedWidths.value.map(col => ({\n ...col,\n // Override column width with resized ones\n width: columnWidthOverridesLookup.value?.[col.field]?.width ?? 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 gridWidth.value > totalWidthOfAllCalculatedWidths ? gridWidth.value : 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 return { columnDefs: processedColumns, gridColumnWidthStyle, onColumnWidthOverride };\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-columns__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.ASCENDING\n ? BentoDatagridSortDirection.DESCENDING\n : BentoDatagridSortDirection.ASCENDING,\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 BentoDatagridAllItemsSelectedState,\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<BentoDatagridAllItemsSelectedState>({\n allItemsSelected: false,\n isIndeterminate: false,\n });\n\n const emitSelect = () => {\n emit('select', selectedItems.value);\n };\n\n const onAllRowSelect = (allItemsSelected: boolean) => {\n nextTick(() => {\n if (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.allItemsSelected = allItemsSelected;\n allItemsSelectedState.isIndeterminate = false;\n emitSelect();\n });\n };\n\n const onRowSelect = () => {\n nextTick(() => {\n const isEveryItemSelected = data.value\n ?.filter(dataItem => !isDataItemDisabled(dataItem))\n .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 onRowSelect();\n\n return { onAllRowSelect, onRowSelect, allItemsSelectedState, selectedItems };\n};\n","import { ref } from 'vue';\nimport { MaybeRef } from '../../../types';\n\n/**\n * All Datagrid configuration settings logic:\n * - Compact view toggle\n *\n * @param condensed - initial state of compact view toggle\n * @returns compact view data & event handler\n */\nexport const useConfigSettings = (condensed: MaybeRef<boolean>) => {\n const compactView = ref(condensed);\n\n // eslint-disable-next-line no-return-assign\n const onConfigSettingsUpdate = (isCompactView: boolean) => (compactView.value = isCompactView);\n\n return { compactView, onConfigSettingsUpdate };\n};\n","<template>\n <div :style=\"gridColumnWidthStyle\" class=\"b-data-grid-columns\" role=\"row\">\n <div\n v-for=\"(column, index) in columns\"\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-columns__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-columns__column-sort\">\n <triangle-up\n class=\"b-data-grid-columns__column-sort-icon\"\n :class=\"conditionalSortDirectionClasses(column.field, BentoDatagridSortDirection.ASCENDING)\"\n :svg-title=\"`${column.field} sort ascending`\"\n :data-testid=\"`${column.field}-sort-icon-asc`\"\n />\n <triangle-down\n class=\"b-data-grid-columns__column-sort-icon\"\n :class=\"conditionalSortDirectionClasses(column.field, BentoDatagridSortDirection.DESCENDING)\"\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-columns__column-seperator-container\"\n role=\"presentation\"\n @mousedown=\"startResize(hasResizableColumns, column.field, $event)\"\n @click.stop\n >\n <div class=\"b-data-grid-columns__column-seperator\"></div>\n </div>\n </template>\n <template v-else>\n <bento-checkbox\n v-model=\"allItemsSelectedCheckboxState.allItemsSelected\"\n data-testid=\"checkbox-select-all\"\n :indeterminate=\"allItemsSelectedCheckboxState.isIndeterminate\"\n value=\"data-grid-select-all\"\n @input=\"onAllRowSelect\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRefs } from 'vue';\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 '@/components/checkbox';\n import {\n BentoColumn,\n BentoDatagridAllItemsSelectedState,\n BentoDatagridSortByColumn,\n BentoDatagridSortDirection,\n } from '../../data-grid.types';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { DATAGRID_SELECT_FIELD_NAME, useResizer, useSorter } from '../../composables';\n\n export default defineComponent({\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n BentoTypography,\n TriangleUp,\n TriangleDown,\n },\n inheritAttrs: false,\n props: {\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 * If resize is enabled\n */\n hasResizableColumns: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The column all items selected state\n */\n allItemsSelectedState: {\n type: Object as PropType<BentoDatagridAllItemsSelectedState>,\n default: undefined,\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 /**\n */\n gridColumnWidthStyle: {\n type: Object,\n required: true,\n },\n },\n emits: ['column-resize', 'sort', 'select-all-rows'],\n setup(props, { emit }) {\n const { columns, sortBy } = toRefs(props);\n\n // Selecting\n const allItemsSelectedCheckboxState = ref(props.allItemsSelectedState);\n const onAllRowSelect = (areAllItemsSelected: boolean) => emit('select-all-rows', areAllItemsSelected);\n // Resizing\n const { allColumnRefs, startResize } = useResizer(columns, emit);\n\n // Sorting\n const { conditionalSortDirectionClasses, sortByColumnField } = useSorter(sortBy, columns, emit);\n\n // Conditional column styles\n const conditionalColumnClasses = (column: BentoColumn) => ({\n 'b-data-grid-columns__column--sortable': column.sortable,\n 'b-data-grid-columns__column--padding-left-unset': column?.padding?.left === false,\n 'b-data-grid-columns__column--padding-right-unset': column?.padding?.right === false,\n 'b-data-grid-columns__column--numeric': column?.numeric,\n });\n\n const conditionalColumnSeperatorClasses = computed(() => ({\n 'b-data-grid-columns__column-seperator-container--is-resizeable': props.hasResizableColumns,\n }));\n\n return {\n // Refs\n ...allColumnRefs,\n\n // Values\n DATAGRID_SELECT_FIELD_NAME,\n\n // Styles and classes\n conditionalColumnClasses,\n conditionalColumnSeperatorClasses,\n\n // Selecting\n allItemsSelectedCheckboxState,\n onAllRowSelect,\n\n // Sorting\n conditionalSortDirectionClasses,\n sortByColumnField,\n\n // Resizing\n startResize,\n\n // ENums\n BentoDatagridSortDirection,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n @import 'data-grid-columns';\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-settings__a' + uuid + ')'\"><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M8.75 1C8.75 0.585786 8.41421 0.25 8 0.25C7.58579 0.25 7.25 0.585786 7.25 1V1.2979C6.57635 1.37321 5.91783 1.54959 5.29672 1.82106L5.15026 1.56623C4.94387 1.2071 4.48542 1.08329 4.12629 1.28969C3.76716 1.49608 3.64335 1.95453 3.84974 2.31366L3.99751 2.57078C3.45281 2.97189 2.97145 3.45265 2.56967 3.99684L2.31372 3.84974C1.95459 3.64335 1.49614 3.76716 1.28975 4.12629C1.08335 4.48542 1.20717 4.94387 1.56629 5.15026L1.81832 5.29511C1.54577 5.91658 1.36849 6.57567 1.29247 7.25H1C0.585786 7.25 0.25 7.58579 0.25 8C0.25 8.41421 0.585786 8.75 1 8.75H1.29249C1.36851 9.42433 1.54581 10.0834 1.81837 10.7049L1.56629 10.8497C1.20717 11.0561 1.08335 11.5146 1.28975 11.8737C1.49614 12.2328 1.95459 12.3567 2.31372 12.1503L2.56974 12.0031C2.97151 12.5473 3.45284 13.028 3.99752 13.4291L3.84974 13.6862C3.64335 14.0454 3.76716 14.5038 4.12629 14.7102C4.48542 14.9166 4.94387 14.7928 5.15027 14.4337L5.29669 14.1789C5.91781 14.4504 6.57634 14.6267 7.25 14.7021V15C7.25 15.4142 7.58579 15.75 8 15.75C8.41421 15.75 8.75 15.4142 8.75 15V14.7021C9.42366 14.6267 10.0822 14.4504 10.7033 14.1789L10.8497 14.4337C11.0561 14.7928 11.5146 14.9166 11.8737 14.7102C12.2328 14.5038 12.3567 14.0454 12.1503 13.6862L12.0025 13.4291C12.5472 13.028 13.0285 12.5473 13.4303 12.0031L13.6863 12.1503C14.0454 12.3567 14.5039 12.2328 14.7103 11.8737C14.9167 11.5146 14.7928 11.0561 14.4337 10.8497L14.1817 10.7049C14.4542 10.0834 14.6315 9.42433 14.7075 8.75H15C15.4142 8.75 15.75 8.41421 15.75 8C15.75 7.58579 15.4142 7.25 15 7.25H14.7075C14.6315 6.57567 14.4542 5.91659 14.1817 5.29512L14.4337 5.15027C14.7928 4.94387 14.9167 4.48542 14.7103 4.12629C14.5039 3.76716 14.0454 3.64335 13.6863 3.84974L13.4303 3.99685C13.0285 3.45266 12.5472 2.9719 12.0025 2.57079L12.1503 2.31366C12.3567 1.95453 12.2328 1.49608 11.8737 1.28969C11.5146 1.08329 11.0561 1.2071 10.8497 1.56623L10.7033 1.82106C10.0822 1.54959 9.42365 1.37321 8.75 1.2979V1ZM3.46027 10.6263C3.46894 10.6414 3.47703 10.6567 3.48455 10.6721C3.81553 11.2301 4.24603 11.7202 4.75273 12.119L6.02977 9.90977C5.87643 9.75181 5.74113 9.57619 5.62698 9.38602L5.62041 9.37508C5.5299 9.2183 5.45553 9.0535 5.39784 8.88345C5.36087 8.77446 5.33077 8.66327 5.30773 8.55053C5.27085 8.37007 5.25205 8.18563 5.25205 7.99994C5.25205 7.51721 5.37912 7.04299 5.62048 6.62494L5.62686 6.61388C5.74103 6.4237 5.87643 6.24812 6.02979 6.09014L4.75273 3.88083C4.24621 4.27955 3.81584 4.76943 3.4849 5.32721C3.47729 5.34287 3.46908 5.35839 3.46027 5.37372C3.45059 5.39055 3.44036 5.40687 3.42962 5.42266C2.98528 6.20874 2.75106 7.09641 2.75 7.99994C2.75106 8.90376 2.98543 9.79172 3.43005 10.578C3.44064 10.5936 3.45072 10.6097 3.46027 10.6263ZM9.22412 7.75044C9.24103 7.83222 9.24976 7.9158 9.25 7.99998C9.24939 8.21721 9.19217 8.4305 9.08403 8.61885C8.96887 8.80892 8.80952 8.96837 8.61952 9.08363C8.43083 9.1913 8.21731 9.24795 8 9.24795C7.78331 9.24795 7.57039 9.19162 7.3821 9.08455C7.19161 8.96935 7.03182 8.80977 6.91637 8.61945C6.876 8.5487 6.84279 8.47445 6.81706 8.39782C6.80127 8.35077 6.78829 8.30283 6.77819 8.25425C6.76089 8.17096 6.75208 8.08579 6.75208 8.00002C6.75208 7.78271 6.80873 7.56919 6.91639 7.38051C7.03152 7.19073 7.19073 7.03152 7.38051 6.91639C7.56919 6.80873 7.78271 6.75208 8.00002 6.75208C8.21734 6.75208 8.43085 6.80873 8.61954 6.91639C8.80954 7.03165 8.96889 7.1911 9.08405 7.38117C9.12468 7.45192 9.15811 7.52619 9.18406 7.60287C9.20042 7.6512 9.21379 7.70048 9.22412 7.75044ZM10.6447 7.24995H13.1953C13.102 6.60939 12.8908 5.98951 12.5703 5.4225C12.5596 5.40676 12.5494 5.39049 12.5397 5.37372C12.531 5.35844 12.5228 5.34299 12.5152 5.32739C12.0559 4.55324 11.4051 3.90987 10.625 3.45947C9.8269 2.99869 8.92157 2.7561 8 2.7561C7.33041 2.7561 6.66938 2.88417 6.05183 3.13095L7.32631 5.3358C7.54562 5.28038 7.77186 5.252 8 5.252C8.48273 5.252 8.95695 5.37907 9.375 5.62043L9.38606 5.62681C9.79104 5.86991 10.1299 6.20898 10.373 6.61395L10.3788 6.62358C10.4505 6.74721 10.5122 6.87582 10.5635 7.00811C10.5944 7.08748 10.6214 7.16818 10.6447 7.24995ZM6.05183 12.869L7.3263 10.6642C7.54562 10.7196 7.77187 10.748 8.00002 10.748C8.48275 10.748 8.95697 10.6209 9.37502 10.3795L9.38602 10.3731C9.791 10.13 10.13 9.791 10.3731 9.38602L10.3788 9.37636C10.4935 9.17854 10.5826 8.96807 10.6448 8.75H13.1953C13.102 9.3907 12.8907 10.0107 12.5701 10.5778C12.5594 10.5935 12.5493 10.6096 12.5397 10.6263C12.531 10.6415 12.5229 10.6568 12.5154 10.6723C12.0574 11.4444 11.4089 12.0864 10.6317 12.5366L10.6263 12.5397L10.6183 12.5443C9.82186 13.0026 8.919 13.2438 8 13.2438C7.33041 13.2438 6.66938 13.1158 6.05183 12.869Z\" clip-rule=\"evenodd\"/></g><defs><clipPath :id=\"'uia-icons-16-settings__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","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, toRefs } 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 import { useAriaLabel } from '@/utils/ts/aria-label';\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-vue2';\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 { ariaLabel } = toRefs(props);\n\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 computedAriaLabel = useAriaLabel({\n ariaLabel,\n label: labelSlot,\n defaultFallback: 'toggle',\n });\n\n const computedDescription = computed((): string | null => descriptionId ?? 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","<template>\n <div class=\"b-data-grid-config-settings\">\n <bento-button\n ref=\"configSettingsButtonRef\"\n :variant=\"BentoButtonVariant.SECONDARY\"\n @click=\"toggleConfigSettingsPanelVisibility\"\n >\n <template #iconLeft>\n <bento-settings-icon :svg-title=\"$t('toggleConfigSettingsPanelVisibility')\" />\n </template>\n </bento-button>\n <bento-popover\n v-if=\"isConfigSettingsPanelOpen && configSettingsButtonRef\"\n :aria-label=\"$t('configSettingsPanel')\"\n :target-element=\"configSettingsButtonRef\"\n :position=\"BentoPopoverPositions.BOTTOM_END\"\n >\n <div class=\"b-data-grid-config-settings__panel-header\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" strongest>\n {{ $t('configuration') }}\n </bento-typography>\n <bento-button :variant=\"BentoButtonVariant.TERTIARY\" @click=\"toggleConfigSettingsPanelVisibility\">\n <template #iconLeft>\n <bento-cross-circle-fill-icon :svg-title=\"$t('closeConfigSettingsPanel')\" />\n </template>\n </bento-button>\n </div>\n <bento-typography\n class=\"b-data-grid-config-settings__compact-view-title\"\n :el=\"BentoTypographyElement.SPAN\"\n stronger\n >{{ $t('density') }}</bento-typography\n >\n <bento-toggle\n :label-position=\"AdlLabelPosition.AFTER\"\n :aria-label=\"$t('compactViewToggle')\"\n :value=\"condensed\"\n @input=\"emitCondensedToggle\"\n >\n {{ $t('compactView') }}\n </bento-toggle>\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, ref } from 'vue';\n import { BentoPopover, BentoPopoverPositions } from '../../../popover';\n import BentoSettingsIcon from '@adyen/ui-assets-icons-16/vue/settings';\n import BentoCrossCircleFillIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import { BentoButton, BentoButtonVariant } from '../../../button';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '../../../typography';\n import { BentoToggle } from '../../../toggle';\n import messages from './messages.json';\n import { AdlLabelPosition } from '../../../../types';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCrossCircleFillIcon,\n BentoPopover,\n BentoSettingsIcon,\n BentoButton,\n BentoToggle,\n BentoTypography,\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 emits: ['config-settings'],\n setup(_props, { emit }) {\n const configSettingsButtonRef = ref(null);\n const isConfigSettingsPanelOpen = ref<boolean>(false);\n const toggleConfigSettingsPanelVisibility = () => {\n isConfigSettingsPanelOpen.value = !isConfigSettingsPanelOpen.value;\n };\n\n const emitCondensedToggle = (isCompactView: boolean) => emit('config-settings', isCompactView);\n\n return {\n // Values\n configSettingsButtonRef,\n isConfigSettingsPanelOpen,\n\n // Methods\n toggleConfigSettingsPanelVisibility,\n emitCondensedToggle,\n\n // Enum\n AdlLabelPosition,\n BentoTypographyElement,\n BentoTypographyVariant,\n BentoButtonVariant,\n BentoPopoverPositions,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./data-grid-config-settings.scss\" />\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 class=\"b-data-grid__filters-and-col-settings\">\n <bento-filter-bar v-if=\"filters\" :value=\"filters\" @input=\"filters => $emit('update:filters', filters)\" />\n <bento-data-grid-config-settings :condensed=\"compactView\" @config-settings=\"onConfigSettingsUpdate\" />\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\" tabindex=\"0\" :aria-busy=\"loading\" aria-live=\"polite\">\n <div role=\"rowgroup\">\n <bento-data-grid-columns\n :columns=\"columnDefs\"\n :has-resizable-columns=\"hasResizableColumns\"\n :grid-column-width-style=\"gridColumnWidthStyle\"\n :sort-by=\"sortBy\"\n :all-items-selected-state=\"allItemsSelectedState\"\n @column-resize=\"onColumnResized\"\n @column-resizing=\"onColumnWidthOverride\"\n @sort=\"onSort\"\n @select-all-rows=\"onAllRowSelect\"\n >\n <template v-for=\"(_, slot) of $slots\" #[slot]=\"scope\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </template>\n </bento-data-grid-columns>\n </div>\n <div v-if=\"loading\" class=\"b-data-grid__loading\">\n <bento-loading-indicator class=\"b-data-grid__loading-indicator\" large />\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.CAPTION\">{{\n $t('gettingYourData')\n }}</bento-typography>\n </div>\n <div v-else 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 columnDefs\"\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 :title=\"conditionalTitleAttribute(column, rowData[column.field])\">{{\n getRowData(rowData[column.field])\n }}</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=\"onPaginationNavigate\"\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, PropType, ref, toRefs } from 'vue';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { BentoCheckbox } from '../checkbox';\n import { BentoPagination } from '../pagination';\n import { BentoFilterBar } from '../filter-bar';\n import { BentoLoadingIndicator } from '../loading-indicator';\n import {\n BentoColumn,\n BentoColumnOverflow,\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 { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoDataGridColumns, BentoDataGridConfigSettings } from './components';\n import messages from './messages.json';\n import { DATAGRID_SELECT_FIELD_NAME, useCalculateColumnWidth, useConfigSettings, useSelector } from './composables';\n\n export default defineComponent({\n i18n: { messages },\n name: 'bento-data-grid',\n components: {\n BentoCheckbox,\n BentoDataGridColumns,\n BentoDataGridConfigSettings,\n BentoLoadingIndicator,\n BentoPagination,\n BentoFilterBar,\n BentoTypography,\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 * If the loading indicator should be shown.\n */\n loading: {\n type: Boolean,\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<HTMLDivElement>(null);\n const { columns, selectable, data, selection, condensed } = toRefs(props);\n /* == Composable logic == */\n // Config Settings\n const { compactView, onConfigSettingsUpdate } = useConfigSettings(condensed);\n\n // Selecting\n const { onAllRowSelect, onRowSelect, selectedItems, allItemsSelectedState } = useSelector(\n selection,\n emit,\n data,\n props.getDataItemId,\n props.isDataItemDisabled\n );\n\n // Column width calculation\n const { columnDefs, onColumnWidthOverride, gridColumnWidthStyle } = useCalculateColumnWidth(columns, body, {\n hasSelectableColumn: selectable,\n });\n\n /* == Styles == */\n // Conditional grid classes\n const conditionalGridClasses = computed(() => ({\n [`b-data-grid--${BentoDatagridStyleState.OUTLINE}`]: props.outline,\n }));\n\n // Conditional row classes\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--numeric': column?.numeric,\n 'b-data-grid__cell--condensed': compactView.value,\n [`b-data-grid__cell--overflow-${BentoColumnOverflow.ELLIPSIS}`]:\n column?.overflow === BentoColumnOverflow.ELLIPSIS,\n });\n\n const conditionalTitleAttribute = (column: BentoColumn, content: unknown) =>\n column?.overflow === BentoColumnOverflow.ELLIPSIS ? `${content}` : undefined;\n\n const getRowData = (rowData: unknown) => rowData ?? '-';\n\n // Conditional pagination classes\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 = useAriaLabel({\n label: slots?.header ? slots?.header()[0].text?.trim() : null,\n defaultFallback: 'data grid',\n });\n\n /* == Emits == */\n // Resizing\n const onColumnResized = (resizeEvent: { field: string; width: number }) =>\n emit('column-resize', resizeEvent);\n // Sorting\n const onSort = (updatedSortBy: BentoDatagridSortByColumn[]) => emit('sort', updatedSortBy);\n // Pagination\n const onPaginationNavigate = (page: number) => emit('navigate', page);\n const onItemsPerPageChange = (itemsPerPage: number) => emit('items-page', itemsPerPage);\n\n return {\n // Refs\n body,\n columnDefs,\n\n // Labels and text\n ariaGridHeaderText,\n conditionalTitleAttribute,\n getRowData,\n\n // Styles and classes\n gridColumnWidthStyle,\n conditionalGridClasses,\n conditionalRowClasses,\n conditionalRowCellClasses,\n conditionalPaginationClasses,\n\n // Resizing\n onColumnWidthOverride,\n onColumnResized,\n\n // Sorting\n onSort,\n\n // Select\n allItemsSelectedState,\n selectedItems,\n onAllRowSelect,\n onRowSelect,\n DATAGRID_SELECT_FIELD_NAME,\n\n // Config settings\n compactView,\n onConfigSettingsUpdate,\n\n // Enums\n BentoDatagridSortDirection,\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Pagination props and events\n onPaginationNavigate,\n onItemsPerPageChange,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped>\n @import 'data-grid';\n</style>\n","import { defineComponent, h, ref } from 'vue';\nimport { onClickOutside } from '../../directives/click-outside/on-click-outside';\n\nexport const BentoClickOutside = /* #__PURE__ */ defineComponent({\n name: 'bento-click-outside',\n props: {\n /**\n * Sets the HTML DOM element.\n */\n el: { type: String, default: 'div' },\n },\n emits: ['handler'],\n setup(props, { emit, slots }) {\n const target = ref(null);\n\n onClickOutside(target, event => emit('handler', event));\n\n return () => h(props.el, { ref: target }, slots.default?.());\n },\n});\n","import { MaybeRef } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport VueI18n from 'vue-i18n';\nimport messages from './messages.json';\n\n/**\n * The local VueI18n object where the country name translations reside.\n */\nlet i18n: VueI18n;\n\n/**\n * Maps an ISO code to the country's translated capital city.\n *\n * @returns a translated country name\n */\nexport const useCountryCapital = (code: MaybeRef<string>, locale: MaybeRef<string>, useFallback = true) => {\n const countryCode = ref(code);\n const languageLocale = ref(locale);\n if (!i18n) {\n i18n = new VueI18n({ messages });\n }\n\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n if (!i18n.te(normalizedCode, languageLocale.value)) {\n return useFallback ? countryCode.value : null;\n }\n return i18n.t(normalizedCode, { locale: languageLocale.value });\n });\n};\n\nexport default useCountryCapital;\n","import { ref, Ref, watch } from 'vue';\n\n/**\n * Dynamically retrieves the country flag SVG from the @adyen/ui-assets-flag-icons package.\n *\n * @param code 2 character code in ISO 3166-1 alpha-2 format\n * @param useFallback if fallback flag should be used in case of error\n * @returns\n */\nexport const useCountryFlag = (code: Ref<string>, useFallback = true) => {\n const countryCode = ref(code);\n const flagSrc = ref<string>();\n\n watch(\n countryCode,\n // eslint-disable-next-line consistent-return\n async newCountryCode => {\n if (newCountryCode == null) {\n return null;\n }\n try {\n // Dynamically resolve flags icons URLs\n // Using import() here would make it asyncronous, requiring an update\n // right after the first render.\n // The only way to do it dynamically and syncronous is using require().\n // NOTE: This won't work for Vite because vite handles dynamic imports differently\n // This however works:\n // const flagCool = await import(\n // `../../../../../../node_modules/@adyen/ui-assets-flag-icons/dist/svg/${newCountryCode.toLowerCase()}.svg`\n // );\n // See: https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars\n\n const flag = await import(`@adyen/ui-assets-flag-icons/dist/svg/${newCountryCode.toLowerCase()}.svg`);\n flagSrc.value = flag?.default;\n } catch (e) {\n if (useFallback) {\n const unknownFlag = await import('@adyen/ui-assets-flag-icons/dist/svg/zz.svg');\n flagSrc.value = unknownFlag.default;\n } else {\n flagSrc.value = null;\n }\n }\n },\n { immediate: true }\n );\n\n return flagSrc;\n};\n","import { computed, ref } from 'vue';\nimport VueI18n from 'vue-i18n';\nimport messages from './messages.json';\nimport { MaybeRef } from '../../../../types';\n\n/**\n * The local VueI18n object where the country name translations reside.\n */\nlet i18n: VueI18n;\n\n/**\n * Maps an ISO code to it's translated country name.\n *\n * @returns a translated country name\n */\nexport const useCountryName = (code: MaybeRef<string>, locale: MaybeRef<string>, useFallback = true) => {\n const countryCode = ref(code);\n const languageLocale = ref(locale);\n if (!i18n) {\n i18n = new VueI18n({ messages });\n }\n\n return computed(() => {\n const normalizedCode = countryCode?.value?.toUpperCase();\n if (!i18n.te(normalizedCode, languageLocale.value)) {\n return useFallback ? countryCode.value : null;\n }\n return i18n.t(normalizedCode, languageLocale.value) as string;\n });\n};\n","import { MaybeRef } from '../../../../types';\nimport { computed, ref } from 'vue';\nimport countryISOToPhoneCodes from './country-to-phone-codes.json';\n\n/**\n * Retrieves a country's phone number code.\n *\n * @param countryCode 2 character code in ISO 3166-1 alpha-2 format\n * @returns\n */\nexport const useCountryPhoneCode = (countryCode: MaybeRef<string>) => {\n const code = ref(countryCode);\n\n return computed(() => countryISOToPhoneCodes?.[code.value]?.join('/'));\n};\n\nexport default useCountryPhoneCode;\n","export enum BentoCountryVariant {\n ISO = 'iso',\n NAME = 'name',\n PHONE_CODE = 'phone_code',\n CAPITAL = 'capital',\n}\nexport enum BentoCountryCode {\n BD = 'BD',\n BE = 'BE',\n BF = 'BF',\n BG = 'BG',\n BA = 'BA',\n BB = 'BB',\n WF = 'WF',\n BL = 'BL',\n BM = 'BM',\n BN = 'BN',\n BO = 'BO',\n BH = 'BH',\n BI = 'BI',\n BJ = 'BJ',\n BT = 'BT',\n JM = 'JM',\n BV = 'BV',\n BW = 'BW',\n WS = 'WS',\n BQ = 'BQ',\n BR = 'BR',\n BS = 'BS',\n JE = 'JE',\n BY = 'BY',\n BZ = 'BZ',\n RU = 'RU',\n RW = 'RW',\n RS = 'RS',\n TL = 'TL',\n RE = 'RE',\n TM = 'TM',\n TJ = 'TJ',\n RO = 'RO',\n TK = 'TK',\n GW = 'GW',\n GU = 'GU',\n GT = 'GT',\n GS = 'GS',\n GR = 'GR',\n GQ = 'GQ',\n GP = 'GP',\n JP = 'JP',\n GY = 'GY',\n GG = 'GG',\n GF = 'GF',\n GE = 'GE',\n GD = 'GD',\n GB = 'GB',\n GA = 'GA',\n SV = 'SV',\n GN = 'GN',\n GM = 'GM',\n GL = 'GL',\n GI = 'GI',\n GH = 'GH',\n OM = 'OM',\n TN = 'TN',\n JO = 'JO',\n HR = 'HR',\n HT = 'HT',\n HU = 'HU',\n HK = 'HK',\n HN = 'HN',\n HM = 'HM',\n VE = 'VE',\n PR = 'PR',\n PS = 'PS',\n PW = 'PW',\n PT = 'PT',\n SJ = 'SJ',\n PY = 'PY',\n IQ = 'IQ',\n PA = 'PA',\n PF = 'PF',\n PG = 'PG',\n PE = 'PE',\n PK = 'PK',\n PH = 'PH',\n PN = 'PN',\n PL = 'PL',\n PM = 'PM',\n ZM = 'ZM',\n EH = 'EH',\n EE = 'EE',\n EG = 'EG',\n ZA = 'ZA',\n EC = 'EC',\n IT = 'IT',\n VN = 'VN',\n SB = 'SB',\n ET = 'ET',\n SO = 'SO',\n ZW = 'ZW',\n SA = 'SA',\n ES = 'ES',\n ER = 'ER',\n ME = 'ME',\n MD = 'MD',\n MG = 'MG',\n MF = 'MF',\n MA = 'MA',\n MC = 'MC',\n UZ = 'UZ',\n MM = 'MM',\n ML = 'ML',\n MO = 'MO',\n MN = 'MN',\n MH = 'MH',\n MK = 'MK',\n MU = 'MU',\n MT = 'MT',\n MW = 'MW',\n MV = 'MV',\n MQ = 'MQ',\n MP = 'MP',\n MS = 'MS',\n MR = 'MR',\n IM = 'IM',\n UG = 'UG',\n TZ = 'TZ',\n MY = 'MY',\n MX = 'MX',\n IL = 'IL',\n FR = 'FR',\n IO = 'IO',\n SH = 'SH',\n FI = 'FI',\n FJ = 'FJ',\n FK = 'FK',\n FM = 'FM',\n FO = 'FO',\n NI = 'NI',\n NL = 'NL',\n NO = 'NO',\n NA = 'NA',\n VU = 'VU',\n NC = 'NC',\n NE = 'NE',\n NF = 'NF',\n NG = 'NG',\n NZ = 'NZ',\n NP = 'NP',\n NR = 'NR',\n NU = 'NU',\n CK = 'CK',\n XK = 'XK',\n CI = 'CI',\n CH = 'CH',\n CO = 'CO',\n CN = 'CN',\n CM = 'CM',\n CL = 'CL',\n CC = 'CC',\n CA = 'CA',\n CG = 'CG',\n CF = 'CF',\n CD = 'CD',\n CZ = 'CZ',\n CY = 'CY',\n CX = 'CX',\n CR = 'CR',\n CW = 'CW',\n CV = 'CV',\n CU = 'CU',\n SZ = 'SZ',\n SY = 'SY',\n SX = 'SX',\n KG = 'KG',\n KE = 'KE',\n SS = 'SS',\n SR = 'SR',\n KI = 'KI',\n KH = 'KH',\n KN = 'KN',\n KM = 'KM',\n ST = 'ST',\n SK = 'SK',\n KR = 'KR',\n SI = 'SI',\n KP = 'KP',\n KW = 'KW',\n SN = 'SN',\n SM = 'SM',\n SL = 'SL',\n SC = 'SC',\n KZ = 'KZ',\n KY = 'KY',\n SG = 'SG',\n SE = 'SE',\n SD = 'SD',\n DO = 'DO',\n DM = 'DM',\n DJ = 'DJ',\n DK = 'DK',\n VG = 'VG',\n DE = 'DE',\n YE = 'YE',\n DZ = 'DZ',\n US = 'US',\n UY = 'UY',\n YT = 'YT',\n UM = 'UM',\n LB = 'LB',\n LC = 'LC',\n LA = 'LA',\n TV = 'TV',\n TW = 'TW',\n TT = 'TT',\n TR = 'TR',\n LK = 'LK',\n LI = 'LI',\n LV = 'LV',\n TO = 'TO',\n LT = 'LT',\n LU = 'LU',\n LR = 'LR',\n LS = 'LS',\n TH = 'TH',\n TF = 'TF',\n TG = 'TG',\n TD = 'TD',\n TC = 'TC',\n LY = 'LY',\n VA = 'VA',\n VC = 'VC',\n AE = 'AE',\n AD = 'AD',\n AG = 'AG',\n AF = 'AF',\n AI = 'AI',\n VI = 'VI',\n IS = 'IS',\n IR = 'IR',\n AM = 'AM',\n AL = 'AL',\n AO = 'AO',\n AQ = 'AQ',\n AS = 'AS',\n AR = 'AR',\n AU = 'AU',\n AT = 'AT',\n AW = 'AW',\n IN = 'IN',\n AX = 'AX',\n AZ = 'AZ',\n IE = 'IE',\n ID = 'ID',\n UA = 'UA',\n QA = 'QA',\n MZ = 'MZ',\n UNKNOWN = 'ZZ',\n}\n","import Vue, { computed, getCurrentInstance } from 'vue';\nimport type { WritableComputedRef } from 'vue';\nimport VueI18n from 'vue-i18n';\n\nexport const defaultI18nOptions = {\n locale: 'en-US',\n fallbackLocale: 'en-US',\n fallbackRoot: false,\n};\n\nlet i18n: VueI18n = null;\n\nexport function createI18n(options = defaultI18nOptions): VueI18n {\n i18n = new VueI18n(options);\n return i18n;\n}\n\nexport interface Composer {\n locale: WritableComputedRef<string>;\n t: typeof VueI18n.prototype.t;\n tc: typeof VueI18n.prototype.tc;\n te: typeof VueI18n.prototype.te;\n d: typeof VueI18n.prototype.d;\n n: typeof VueI18n.prototype.n;\n}\n\nexport function useI18n(): Composer {\n const instance = getCurrentInstance() as { proxy: Vue & { _i18n: VueI18n } } | null;\n const vm = instance.proxy;\n // If no VueI18n has been intialised then attempt to get the globally attached one from the Vue VM\n // eslint-disable-next-line no-underscore-dangle\n if (vm?._i18n) {\n // eslint-disable-next-line no-underscore-dangle -- reading the i18n local instance\n i18n = vm._i18n;\n }\n\n const locale = computed({\n get() {\n return i18n.locale;\n },\n set(v: string) {\n i18n.locale = v;\n },\n });\n\n return {\n locale,\n t: vm.$t.bind(vm),\n tc: vm.$tc.bind(vm),\n d: vm.$d.bind(vm),\n te: vm.$te.bind(vm),\n n: vm.$n.bind(vm),\n };\n}\n","<template>\n <div class=\"b-country\">\n <div class=\"b-country__flag\">\n <img :alt=\"countryName\" class=\"b-country__flag-icon\" :src=\"flagIconSrc\" />\n </div>\n <div class=\"b-country__label\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\">{{ label }}</bento-typography>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, PropType, ref, toRefs, watch } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '../typography';\n import { useCountryCapital, useCountryFlag, useCountryName, useCountryPhoneCode } from './composables';\n import { BentoCountryCode, BentoCountryVariant } from './country.types';\n import { useI18n } from '../../utils/ts/i18n';\n\n /**\n * A component to display a country's flag and label.\n * The label comes in four variates: iso code, country name, phone number code or capital city.\n *\n * @example\n * import { BentoCountry, BentoCountryCode } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoCountry },\n * template: `\n * <bento-country :code=\"BentoCountryCode.NL\" />\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-country',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Two character country code ([ISO 3166-1 alpha-2 format](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).\n */\n code: {\n type: String as PropType<BentoCountryCode>,\n default: BentoCountryCode.UNKNOWN,\n },\n\n /**\n * Which label variant to display.\n * @values iso, name, phone_code, capital\n */\n variant: {\n type: String as PropType<BentoCountryVariant>,\n default: BentoCountryVariant.NAME,\n validator: (value: BentoCountryVariant) => Object.values(BentoCountryVariant).includes(value),\n },\n },\n\n setup(props) {\n const { code, variant } = toRefs(props);\n const { locale } = useI18n();\n const flagIconSrc = useCountryFlag(code);\n const countryName = useCountryName(code, locale);\n const label = ref();\n\n const getLabel = () => {\n switch (variant.value) {\n case BentoCountryVariant.ISO:\n return code;\n case BentoCountryVariant.PHONE_CODE:\n return useCountryPhoneCode(code);\n case BentoCountryVariant.CAPITAL:\n // TODO: do we need an API OR get a longer translations list???\n // Need to be able TRANSLATE as well as map...\n return useCountryCapital(code, locale);\n case BentoCountryVariant.NAME:\n default:\n return countryName;\n }\n };\n\n // Update label if variant prop changes\n watch(\n [variant, locale],\n () => {\n label.value = getLabel().value;\n },\n { immediate: true }\n );\n\n return {\n // Values\n flagIconSrc,\n countryName,\n label,\n\n // Enums\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./country.scss\" />\n","/**\n * Contains mapping configuration between currency code and exponent for amount in the corresponding currency.\n * Since the majority of the currencies have an exponent equal to 2, they are not listed here.\n * https://docs.adyen.com/development-resources/currency-codes\n * @type {Array}\n * @internal\n */\nexport const currencyExponentMap = [\n {\n exponent: 0,\n currencies: [\n 'CVE',\n 'DJF',\n 'GNF',\n 'IDR',\n 'JPY',\n 'KMF',\n 'KRW',\n 'PYG',\n 'RWF',\n 'UGX',\n 'VND',\n 'VUV',\n 'XAF',\n 'XOF',\n 'XPF',\n ],\n },\n {\n exponent: 1,\n currencies: ['MRO'],\n },\n {\n exponent: 3,\n currencies: ['BHD', 'IQD', 'JOD', 'KWD', 'LYD', 'OMR', 'TND'],\n },\n];\n","import { CurrencyAmount, CurrencyOptions, NumberFormatOptionsResult } from './currency.types';\nimport { currencyExponentMap } from './countries-list';\n\n/**\n * Returns exponent for specified currency code.\n */\nexport const getExponent = (currencyCode: string): number =>\n currencyExponentMap.find(obj => obj.currencies.includes(currencyCode))?.exponent ?? 2;\n\n/**\n * Converts passed amount from regular to minor units, based on currency exponent\n */\nexport const getMinorUnitsAmount = (amount: CurrencyAmount): number => {\n const exponent = getExponent(amount.currency);\n const value = Number(amount.value);\n\n return Math.round(value * 10 ** exponent);\n};\n\n/**\n * Returns normalized amount value from minor units as decimal point number (when exponent is more than zero).\n */\nexport const getNormalizedAmount = (amount: CurrencyAmount, exponent: number) =>\n // Amount is in minor units and have to be converted to number with fraction digits\n // return (amount.value * 100) / 10 ** exp;\n amount.value / 10 ** exponent;\n\n/**\n * /**\n * Prepares amount to be rendered by Intl.NumberFormat function.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat\n *\n * It enables language-sensitive number formatting.\n * Adds currency symbol and ISO code based on provided options\n * The result of execution - is a configuration object that is used in 'getLocalizedCurrencyValue' function\n *\n * @param amount - the value and currency to format.\n * @param options - the formatting options that are passed to the Intl.NumberFormat function.\n */\nexport function getNumberFormatOptions(\n amount: CurrencyAmount,\n options: CurrencyOptions = {}\n): NumberFormatOptionsResult {\n // Exponent is based on currency, if not specified explicitly.\n const exp = options?.exponent ?? getExponent(amount.currency);\n // Minor Units have to be retrieved from component passed amount\n const minorAmount = getMinorUnitsAmount(amount);\n const amountInMinorUnits: CurrencyAmount = { ...amount, value: minorAmount };\n // Amount is in minor units and have to be converted to number with fraction digits\n const value = getNormalizedAmount(amountInMinorUnits, exp);\n // This is the requirement for currency component - to remove currency symbol for negative values\n const style = value < 0 ? 'decimal' : options?.style || 'currency';\n // If optionalFractions is true, numbers will not contain fraction digits when they are zero (e.g. 100.00 will be 100)\n const minimumFractionDigits = options?.optionalFractions ? 0 : exp;\n // If highPrecision is true, numbers can contain 10 fraction digits (highest precision in Adyen is about 5)\n const maximumFractionDigits = options?.highPrecision ? 10 : exp;\n\n return {\n value,\n format: {\n style,\n currency: amount.currency,\n currencyDisplay: 'symbol',\n minimumFractionDigits,\n maximumFractionDigits,\n },\n };\n}\n\n/**\n * Get a formatted and localised currency string given an amount and currency type.\n *\n * @param amountValue - the amount of the currency.\n * @param currency - the ISO 4217 currency code.\n * @param isShort - if set to true, removes currency symbol before the number value.\n */\nexport const getLocalizedCurrencyValue = (amountValue: string, currency: string, isShort?: boolean): string => {\n const amount: CurrencyAmount = { value: parseFloat(amountValue), currency };\n const formatOptions = isShort ? { style: 'decimal' } : null;\n\n const numberFormatOptions = getNumberFormatOptions(amount, formatOptions);\n // TODO replace hardcoded locale with dynamic one, when i18n strategy is defined\n const formatter = new Intl.NumberFormat('en-US', numberFormatOptions.format);\n\n return formatter.format(numberFormatOptions.value);\n};\n","export enum BentoCurrencyISOCode {\n AFA = 'AFA',\n ALL = 'ALL',\n DZD = 'DZD',\n AOA = 'AOA',\n ARS = 'ARS',\n AMD = 'AMD',\n AWG = 'AWG',\n AUD = 'AUD',\n AZN = 'AZN',\n BSD = 'BSD',\n BHD = 'BHD',\n BDT = 'BDT',\n BBD = 'BBD',\n BYR = 'BYR',\n BEF = 'BEF',\n BZD = 'BZD',\n BMD = 'BMD',\n BTN = 'BTN',\n BTC = 'BTC',\n BOB = 'BOB',\n BAM = 'BAM',\n BWP = 'BWP',\n BRL = 'BRL',\n GBP = 'GBP',\n BND = 'BND',\n BGN = 'BGN',\n BIF = 'BIF',\n KHR = 'KHR',\n CAD = 'CAD',\n CVE = 'CVE',\n KYD = 'KYD',\n XOF = 'XOF',\n XAF = 'XAF',\n XPF = 'XPF',\n CLP = 'CLP',\n CLF = 'CLF',\n CNY = 'CNY',\n COP = 'COP',\n KMF = 'KMF',\n CDF = 'CDF',\n CRC = 'CRC',\n HRK = 'HRK',\n CUC = 'CUC',\n CZK = 'CZK',\n DKK = 'DKK',\n DJF = 'DJF',\n DOP = 'DOP',\n XCD = 'XCD',\n EGP = 'EGP',\n ERN = 'ERN',\n EEK = 'EEK',\n ETB = 'ETB',\n EUR = 'EUR',\n FKP = 'FKP',\n FJD = 'FJD',\n GMD = 'GMD',\n GEL = 'GEL',\n DEM = 'DEM',\n GHS = 'GHS',\n GIP = 'GIP',\n GRD = 'GRD',\n GTQ = 'GTQ',\n GNF = 'GNF',\n GYD = 'GYD',\n HTG = 'HTG',\n HNL = 'HNL',\n HKD = 'HKD',\n HUF = 'HUF',\n ISK = 'ISK',\n INR = 'INR',\n IDR = 'IDR',\n IRR = 'IRR',\n IQD = 'IQD',\n ILS = 'ILS',\n ITL = 'ITL',\n JMD = 'JMD',\n JPY = 'JPY',\n JOD = 'JOD',\n KZT = 'KZT',\n KES = 'KES',\n KWD = 'KWD',\n KGS = 'KGS',\n LAK = 'LAK',\n LVL = 'LVL',\n LBP = 'LBP',\n LSL = 'LSL',\n LRD = 'LRD',\n LYD = 'LYD',\n LTC = 'LTC',\n LTL = 'LTL',\n MOP = 'MOP',\n MKD = 'MKD',\n MGA = 'MGA',\n MWK = 'MWK',\n MYR = 'MYR',\n MVR = 'MVR',\n MRO = 'MRO',\n MUR = 'MUR',\n MXN = 'MXN',\n MDL = 'MDL',\n MNT = 'MNT',\n MAD = 'MAD',\n MZM = 'MZM',\n MMK = 'MMK',\n NAD = 'NAD',\n NPR = 'NPR',\n ANG = 'ANG',\n TWD = 'TWD',\n NZD = 'NZD',\n NIO = 'NIO',\n NGN = 'NGN',\n KPW = 'KPW',\n NOK = 'NOK',\n OMR = 'OMR',\n PKR = 'PKR',\n PAB = 'PAB',\n PGK = 'PGK',\n PYG = 'PYG',\n PEN = 'PEN',\n PHP = 'PHP',\n PLN = 'PLN',\n QAR = 'QAR',\n RON = 'RON',\n RUB = 'RUB',\n RWF = 'RWF',\n SVC = 'SVC',\n WST = 'WST',\n STD = 'STD',\n SAR = 'SAR',\n RSD = 'RSD',\n SCR = 'SCR',\n SLL = 'SLL',\n SGD = 'SGD',\n SKK = 'SKK',\n SBD = 'SBD',\n SOS = 'SOS',\n ZAR = 'ZAR',\n KRW = 'KRW',\n SSP = 'SSP',\n XDR = 'XDR',\n LKR = 'LKR',\n SHP = 'SHP',\n SDG = 'SDG',\n SRD = 'SRD',\n SZL = 'SZL',\n SEK = 'SEK',\n CHF = 'CHF',\n SYP = 'SYP',\n TJS = 'TJS',\n TZS = 'TZS',\n THB = 'THB',\n TOP = 'TOP',\n TTD = 'TTD',\n TND = 'TND',\n TRY = 'TRY',\n TMT = 'TMT',\n UGX = 'UGX',\n UAH = 'UAH',\n AED = 'AED',\n UYU = 'UYU',\n USD = 'USD',\n UZS = 'UZS',\n VUV = 'VUV',\n VEF = 'VEF',\n VND = 'VND',\n YER = 'YER',\n ZMK = 'ZMK',\n ZWL = 'ZWL',\n}\n","<template>\n <div class=\"b-currency\">\n <bento-typography\n class=\"b-currency__amount\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n strong\n >\n {{ formattedCurrency }} {{ currency }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { getLocalizedCurrencyValue } from '@/utils/ts/currency/currency';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { BentoCurrencyISOCode } from '@/components/currency/currency.types';\n\n /**\n * A Currency component is used to display a formatted currency value.\n *\n * @example\n * import { BentoCurrency } from '@adyen/adl-vue-components';\n * import { BentoCurrency, BentoCurrencyCode } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoCurrency },\n * template: `\n * <bento-currency :currency=\"CurrencyCode.USD\">\n * 76.33\n * </bento-currency>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-currency',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n currency: {\n type: String as PropType<BentoCurrencyISOCode>,\n default: BentoCurrencyISOCode.EUR,\n validator: (value: BentoCurrencyISOCode) => Object.values(BentoCurrencyISOCode).includes(value),\n },\n /**\n * Removes currency symbol before the number value\n */\n shorthand: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const formattedCurrency = computed((): string => {\n const value = slots.default ? slots.default()[0]?.text : null;\n return getLocalizedCurrencyValue(value, props.currency, props.shorthand);\n });\n\n return {\n // Values\n formattedCurrency,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n","export enum BentoLinkVariant {\n DEFAULT = 'default',\n QUIET = 'quiet',\n}\n","<template>\n <a\n v-if=\"external\"\n class=\"b-link\"\n :class=\"conditionalClasses\"\n :href=\"linkProps.to.toString()\"\n target=\"_blank\"\n :title=\"linkProps.title\"\n >\n <slot />\n </a>\n <router-link\n v-else\n v-slot=\"slotProps\"\n class=\"b-link\"\n :class=\"conditionalClasses\"\n v-bind=\"linkProps\"\n :to=\"linkProps.to\"\n custom\n >\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 { computed, useAttrs } from 'vue';\n import { BentoLinkVariant } from './link.types';\n import type { RouterLinkProps } from 'vue-router/types/router';\n import type { AnchorHTMLAttributes } from 'vue/types/jsx';\n\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, AnchorHTMLAttributes {\n // eslint-disable-next-line vue/require-default-prop\n args?: { props: RouterLinkProps };\n /**\n * Set the rendered link to a regular external anchor link.\n */\n external?: boolean;\n\n /**\n * Link variant type affecting visual style.\n * @values default, quiet\n */\n variant?: BentoLinkVariant;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const props = withDefaults(defineProps<Props>(), {\n variant: BentoLinkVariant.DEFAULT,\n });\n\n const conditionalClasses = computed(() => ({\n [`b-link--${BentoLinkVariant.QUIET}`]: props.variant === BentoLinkVariant.QUIET,\n }));\n\n // TODO: replace this when Vue allows users to extend props properly, read above for more info\n const attributes = useAttrs() as unknown;\n const linkProps = attributes as Props;\n</script>\n\n<style lang=\"scss\" scoped src=\"./link.scss\" />\n","export enum BentoRadioGroupVariant {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport interface BentoRadioGroupItem {\n value: string | number;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport type BentoRadioGroupItems = Array<BentoRadioGroupItem>;\n","<template>\n <div class=\"b-radio-button\" data-testid=\"radio-button-container\" :class=\"conditionalClass\">\n <input\n :id=\"radioButtonId\"\n :aria-checked=\"isChecked\"\n :aria-label=\"ariaLabel\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n :value=\"value\"\n type=\"radio\"\n class=\"b-radio-button__input\"\n role=\"radio\"\n @change=\"onClick\"\n />\n <label v-if=\"shouldShowDescription\" :for=\"radioButtonId\" class=\"b-radio-button__description\">\n <bento-typography\n v-if=\"shouldShowLabel\"\n class=\"b-radio-button__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-radio-button__sub-label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n <slot name=\"subLabel\"></slot>\n </bento-typography>\n </label>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { generateUid } from '@/utils/ts/unique-id';\n import { computed, ComputedRef, defineComponent, toRefs } 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 * Only to be used internally.\n *\n * @usage\n * import { RadioButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { RadioButton },\n * template: `\n * <radio-button\n * disabled\n * value=\"inputRadio\"\n * >\n * Label text\n * <template #subLabel>Sub label text</template>\n * </radio-button>\n * `,\n * }\n */\n export default defineComponent({\n name: 'radio-button',\n components: { BentoTypography },\n inheritAttrs: false,\n model: { prop: 'modelValue' },\n props: {\n /**\n * Disable the radio button (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 { value } = toRefs(props);\n const radioButtonId = generateUid('radio-button');\n\n const conditionalClass = computed(() => ({ 'b-radio-button--disabled': props.disabled }));\n\n const ariaLabel = useAriaLabel({\n ariaLabel: slots.default?.()[0].text.trim(),\n label: value.value as string,\n });\n\n const isChecked: ComputedRef<boolean> = computed(() => props.value === props.modelValue);\n\n const shouldShowLabel = computed(() => (slots.default ? slots.default?.()?.[0].text.trim() : null));\n\n const shouldShowSubLabel = computed(() => (slots.subLabel ? slots.subLabel?.()?.[0].text.trim() : null));\n\n const shouldShowDescription = computed(() => shouldShowLabel.value || shouldShowSubLabel.value);\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 radioButtonId,\n\n // Events\n onClick,\n\n // Enums\n BentoTypographyVariant,\n BentoTypographyElement,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./radio-button.scss\" />\n","<template>\n <controls-group\n class=\"b-radio-group\"\n :class=\"conditionalClasses\"\n :form=\"formId\"\n :disabled=\"disabled\"\n :label=\"label\"\n >\n <radio-button\n v-for=\"item in items\"\n :key=\"item.value\"\n v-model=\"inputValue\"\n :value=\"item.value\"\n :disabled=\"disabled || item.disabled\"\n @input=\"onInput\"\n >\n {{ item.label }}\n <template v-if=\"item.description\" #subLabel>{{ item.description }}</template>\n </radio-button>\n </controls-group>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { ControlsGroup } from '@/components/controls-group';\n import { BentoRadioGroupItems, BentoRadioGroupVariant } from './radio-group.types';\n import RadioButton from './components/radio-button/radio-button.vue';\n\n /**\n * A radio group component should be used whenever it is necessary to use a set of radio buttons\n * This component conforms to the official WAI-ARIA guidelines for grouping controls: https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * import { BentoRadioGroup, BentoRadioGroupVariant } from '@adyen/bento-vue2/';\n *\n * export default {\n * components: { BentoRadioGroup },\n * template: `\n * <bento-radio-group\n * label=\"Your group label\"\n * :items=\"[\n * { value: 1, label: 'Your label' },\n * { value: 2, label: 'Another label', description: 'Your sub label' },\n * ]\"\n * :variant=\"BentoRadioGroupVariant.HORIZONTAL\"\n * />\n * `\n * };\n */\n export default defineComponent({\n name: 'bento-radio-group',\n components: { ControlsGroup, RadioButton },\n inheritAttrs: false,\n props: {\n /**\n * The checkbox group's items.\n */\n items: {\n type: Array as PropType<BentoRadioGroupItems>,\n required: true,\n },\n /**\n * The checkbox group's layout. It can be vertical or horizontal. Defaults to vertical.\n */\n variant: {\n type: String as PropType<BentoRadioGroupVariant>,\n default: BentoRadioGroupVariant.VERTICAL,\n validator: (value: BentoRadioGroupVariant) => Object.values(BentoRadioGroupVariant).includes(value),\n },\n /**\n * The form id the checkbox group is associated with. Defaults to null, as a checkbox group can also be used standalone.\n */\n formId: {\n type: String,\n default: null,\n },\n /**\n * If set to true, renders all checkboxes in the group in a disabled state.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * The name associated with the group. Required for accessibility purposes.\n */\n label: { type: String, required: true },\n },\n emits: ['input'],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n 'b-radio-group--horizontal': props.variant === BentoRadioGroupVariant.HORIZONTAL,\n }));\n const inputValue = ref(props.items[0].value);\n\n const onInput = value => {\n emit('input', value);\n };\n\n return {\n // Values\n conditionalClasses,\n inputValue,\n\n // Methods\n onInput,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./radio-group.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=\"computedAriaLabel\"\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 import { useAriaLabel } from '@/utils/ts/aria-label';\n\n export default defineComponent({\n name: 'bento-tag',\n components: { BentoTypography },\n directives: { BentoTooltipDirective },\n inheritAttrs: false,\n props: {\n /**\n * The label text content of the Tag.\n */\n label: { type: String, default: null },\n\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 /**\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 computedAriaLabel = useAriaLabel({\n label: props.label || slots.default?.()[0].text.trim(),\n defaultFallback: 'tag',\n });\n\n const tagConditionalClasses = computed(() => ({\n [`b-tag--${props.variant}`]: props.variant,\n }));\n\n const textFromSlot = computed(() => props.label || slots.default?.()[0].text.trim() || 'tag');\n const shouldShowTooltip = computed(() => props.truncate && textFromSlot.value.length > props.truncate);\n\n const formattedText = computed(() => {\n if (!props.truncate) {\n return textFromSlot.value;\n }\n\n return shouldShowTooltip.value\n ? `${textFromSlot.value.slice(0, props.truncate)}...`\n : textFromSlot.value;\n });\n\n return {\n // Values\n computedAriaLabel,\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","export enum BentoAvatarVariant {\n LARGE = 'large',\n SMALL = 'small',\n}\n\nexport enum BentoAvatarColor {\n BLUE = 'blue',\n GREEN = 'green',\n RED = 'red',\n YELLOW = 'yellow',\n}\n","import { computed, ComputedRef, ref } from 'vue';\nimport { MaybeRef } from '../types';\n\n/** Extracts the first letter of a username\n * @param username - The name to return the initials of\n * Common patterns:\n * 1. John => J\n * 2. John Smith => J\n * John Smith Doe Holly => J\n */\nexport const useInitials = (username: MaybeRef<string | null>): ComputedRef<string | null> => {\n const computedUsername = ref(username);\n return computed(() => (computedUsername.value ? computedUsername.value.trim().charAt(0).toUpperCase() : null));\n};\n","<template>\n <div class=\"b-avatar\" :class=\"conditionalClasses\" aria-hidden=\"true\" data-testid=\"avatar\">\n <img v-if=\"src\" :src=\"src\" class=\"b-avatar__image\" alt=\"Profile picture\" data-testid=\"avatar-content\" />\n <div v-else class=\"b-avatar__default\" data-testid=\"avatar-content\">\n <bento-typography :el=\"BentoTypographyElement.SPAN\" :variant=\"BentoTypographyVariant.BODY\" strongest>\n {{ initials }}\n </bento-typography>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, toRefs } from 'vue';\n import { BentoAvatarColor, BentoAvatarVariant } from './avatar.types';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n export default defineComponent({\n name: 'avatar',\n components: { BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Image src to load the profile picture.\n */\n src: {\n type: String,\n default: null,\n },\n /**\n * Name of the user that will be used to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username: {\n type: String,\n default: null,\n },\n /**\n * Variants supported for small and large.\n * Default - large\n */\n variant: {\n type: String as PropType<BentoAvatarVariant>,\n default: BentoAvatarVariant.LARGE,\n validator: (value: BentoAvatarVariant) => Object.values(BentoAvatarVariant).includes(value),\n },\n /**\n * Avatar color. Defaults to yellow.\n */\n color: {\n type: String as PropType<BentoAvatarColor>,\n default: BentoAvatarColor.YELLOW,\n validator: (value: BentoAvatarColor) => Object.values(BentoAvatarColor).includes(value),\n },\n },\n setup(props) {\n const { username } = toRefs(props);\n const initials = useInitials(username);\n\n const conditionalClasses = computed(() => ({\n [`b-avatar--${BentoAvatarVariant.SMALL}`]: props.variant === BentoAvatarVariant.SMALL,\n [`b-avatar--${props.color}`]: props.color,\n }));\n\n return {\n // Enums\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n conditionalClasses,\n initials,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./avatar.scss\" />\n","<template>\n <div class=\"b-user-profile\" :aria-label=\"computedAriaLabel\">\n <avatar :src=\"src\" :username=\"computedUsername\" :variant=\"BentoAvatarVariant.SMALL\" :color=\"avatarColor\" />\n <bento-typography\n v-if=\"!iconOnly\"\n class=\"b-user-profile__label\"\n :el=\"BentoTypographyElement.SPAN\"\n :variant=\"BentoTypographyVariant.BODY\"\n >\n {{ username }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, toRefs } from 'vue';\n import { Avatar, BentoAvatarColor, BentoAvatarVariant } from '@/components/avatar';\n import { BentoTypography, BentoTypographyElement, BentoTypographyVariant } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n /**\n * Displays an user profile including an avatar and optionally a label.\n *\n * @example\n * import { BentoUserProfile } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoUserProfile },\n * template: `\n * <bento-user-profile :src=\"userAvatarSrc\" username=\"Jane\" />\n */\n export default defineComponent({\n name: 'bento-user-profile',\n components: { Avatar, BentoTypography },\n inheritAttrs: false,\n props: {\n /**\n * Displays the user profile without the label.\n */\n iconOnly: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Name of the user that will be used both in the label and to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username: {\n type: String,\n required: true,\n },\n\n /**\n * Image src to load the profile picture.\n */\n src: {\n type: String,\n default: null,\n },\n },\n\n setup(props) {\n const { username } = toRefs(props);\n\n const computedAriaLabel = computed(() => (props.iconOnly ? props.username : null));\n const computedUsername = computed(() => (!props.src ? props.username : null));\n const initials = useInitials(username);\n\n // Returns the UTF-16 char code\n const charCode = computed(() => (initials.value ? initials.value.charCodeAt(0) - 65 : null));\n\n // Returns a computed color based on the letter passed\n const avatarColor = computed(() => {\n const numberOfAlphabetLetters = 26;\n const numberOfColors = Object.keys(BentoAvatarColor).length;\n const rangeStep = numberOfAlphabetLetters / numberOfColors;\n\n if (charCode.value <= rangeStep) {\n return BentoAvatarColor.YELLOW;\n }\n if (charCode.value <= rangeStep * 2) {\n return BentoAvatarColor.BLUE;\n }\n if (charCode.value <= rangeStep * 3) {\n return BentoAvatarColor.GREEN;\n }\n return BentoAvatarColor.RED;\n });\n\n return {\n // Enums\n BentoAvatarVariant,\n BentoTypographyElement,\n BentoTypographyVariant,\n\n // Values\n computedAriaLabel,\n computedUsername,\n avatarColor,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./user-profile.scss\" />\n"],"names":["injectCSS","cssStyles","cssCode","elementStyle","e","BentoTheme","setDefaultTheme","install","_","options","adlLegacyCssVars","bentoLegacyCssVars","adlCssVars","bentoCssVars","BentoVue","BentoAlertSeverityOption","BentoButtonVariant","BentoButtonPropClass","BentoTypographyVariant","BentoTypographyModifier","BentoTypographyElement","_sfc_main$Z","defineComponent","value","props","computed","uuid","_sfc_main","useAriaLabel","ariaLabel","label","defaultFallback","computedAriaLabel","ref","computedLabel","computedDefaultFallback","hasSlot","slots","name","_sfc_main$T","BentoTypography","emit","labelSlot","_a","variantClass","conditionalClasses","_sfc_main$S","CrossSmall","BentoButton","Warning","CrossCircle","CheckedCircle","Info","alertConditionalClasses","computedRole","onCloseButtonClick","onMounted","BentoButtonActionsLayout","_sfc_main$Q","layout","reversedActionsList","generateButtonVariantByIndex","actionIndex","lastActionIndex","BentoLoadingButtonState","BentoLoadingIndicatorEvent","_sfc_main$P","onUnmounted","_sfc_main$O","Cross","Checkmark","BentoLoadingIndicator","isInverseLoadingIndicator","_sfc_main$L","CheckmarkSmallIcon","MinusSmallIcon","disabled","indeterminate","modelValue","toRefs","defaultSlot","descriptionSlot","isCheckboxGroup","isChecked","item","isIndeterminate","ariaChecked","_b","conditionalClass","conditionalClassOutline","event","newValue","newCheckedList","index","_sfc_main$K","legendConditionalClasses","BentoCheckboxGroupVariant","_sfc_main$J","BentoCheckbox","ControlsGroup","_sfc_main$H","CheckmarkIcon","onOptionSelected","ariaDisabled","ariaSelected","tabIndex","FOCUS_GROUP","FOCUS_DISABLED","FOCUS_ALLOW","FOCUS_AUTO","FOCUS_NO_AUTOFOCUS","toArray","a","ret","i","asArray","isElementHidden","node","computedStyle","getParentNode","isTopNode","isVisibleUncached","checkParent","isVisibleCached","visibilityCache","cached","result","isAutoFocusAllowedUncached","isAutoFocusAllowed","isAutoFocusAllowedCached","cache","getDataset","isHTMLButtonElement","isHTMLInputElement","isRadioElement","notHiddenInput","attribute","isGuard","isNotAGuard","isDefined","x","tabSort","b","tabDiff","indexDiff","orderByTabIndex","nodes","filterNegative","keepGuards","data","tabbables","queryTabbables","queryGuardTabbables","getFocusablesWithShadowDom","parent","withGuards","acc","child","getFocusables","parents","getParentAutofocusables","parentFocus","filterFocusable","filterAutoFocusable","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","topNode","contains","scope","element","filterNested","contained","l","j","position","getTopParent","getAllAffectedNodes","currentNode","group","getNestedShadowActiveElement","shadowRoot","getActiveElement","focusInFrame","frame","focusInsideIframe","focusInside","activeElement","focusIsHidden","findSelectedRadio","el","correctNode","correctNodes","resultSet","pickFirstFocus","pickFocusable","NEW_FOCUS","newFocus","innerNodes","outerNodes","lastNode","cnt","firstFocus","lastFocus","isOnGuard","activeIndex","lastIndex","lastNodeInside","firstNodeIndex","lastNodeIndex","correctedNodes","correctedIndex","correctedIndexDiff","returnFirstNode","returnLastNode","getParents","getCommonParent","nodeA","nodeB","parentsA","parentsB","currentParent","getTopCommonParent","baseActiveElement","leftEntry","rightEntries","activeElements","leftEntries","topCommon","entry","subEntry","common","allParentAutofocusables","entries","findAutoFocused","autoFocusables","reorderNodes","srcNodes","dstNodes","remap","entity","getFocusMerge","commonParent","anyFocusable","innerElements","orderedInnerElements","newId","autoFocusable","getFocusabledIn","getFocusableIn","focusOn","target","focusOptions","guardCount","lockDisabled","setFocus","focusable","BentoFocusTrapArrowNavigationDirection","BentoFocusTrapVerticalNavigationEvent","BentoFocusTrapHorizontalNavigationEvent","deferAction","callback","getNodeIndex","getNextFocusableElement","factor","currentFocusedEl","focusableElements","nextIndex","getArrowType","arrowOrder","eventKey","SCROLL_INTO_VIEW_OPTIONS","_sfc_main$G","moveFocusInside","currentTag","isArrowNext","isArrowPrev","focusableEl","focusOnDestroyEl","PopperContainerPositionBasic","PopperContainerPositionExtended","PopperContainerAriaRole","PopperContainerPosition","getArrowModifier","arrow","arrowProps","getOffsetModifier","offset","getFlipModifier","fallbackPosition","arrowDataHideAttributeModifier","state","sameWidthModifier","_sfc_main$F","BentoFocusTrap","currentModifiers","strategy","popperElement","Vue","createPopper","_sfc_main$E","BentoDropdownSingleSelectOption","PopperContainer","selectedOption","isClient","defaultWindow","isIOS","resolveUnref","r","unref","unrefElement","elRef","plain","noop","isString","val","useEventListener","args","events","listeners","cleanups","cleanup","fn","register","listener","registerOptions","stopWatch","watch","stopWatchOptions","_iOSWorkaround","onClickOutside","handler","window","ignore","capture","detectIframe","shouldListen","shouldIgnore","BentoClickOutsideDirective","targetElement","binding","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","arr","randomUUID","native","v4","buf","rnds","generateUid","debounce","debounceTime","timeoutId","_sfc_main$D","CrossCircleFillIcon","textbox","textboxId","shouldShowPlaceholder","computedDisplayValue","isFiltering","ariaAttributes","onOpenDropdown","onCloseDropdown","onToggleDropdown","onClearSearch","onInputEvent","_sfc_main$A","ChevronDownIcon","ChevronUpIcon","DropdownBaseTextbox","isDropdownOpen","BentoInputFieldVariant","BentoInputFieldStaticValuePosition","BentoInputFieldStateClass","BentoInputFieldType","_sfc_main$z","inputFieldElement","shouldShowStaticValue","shouldDisplayStaticValueAtStart","shouldDisplayStaticValueAtEnd","inputFieldConditionalClasses","_sfc_main$x","messages","BentoInputField","SearchIcon","searchTerm","useSearchBarFilter","searchTermRef","dataRef","searchTermLowerCased","_sfc_main$w","BentoDropdownOptionsContainer","DropdownInputDefault","inputContainerRef","dropdownOptionsContainerId","labelId","items","toRef","filteredItems","displayValue","selectedItem","DEFAULT_NUMBER_OF_RESULTS","PREDEFINED_RESULTS_PER_PAGE_VALUES","_sfc_main$v","AdlDropdown","itemsPerPageValue","dropdownId","dropdownOptions","onSelectChange","selectedNumberOfResults","translationPathKey","_sfc_main$u","onPageSelectChange","selectedPage","transformIntoOption","transformToPageNumber","listOfAvailablePages","_sfc_main$p","SkipLeft","SkipRight","ChevronLeft","ChevronRight","isCurrentPageFirst","isCurrentPageLast","isNextButtonDisabled","isLastPageButtonDisabled","hasNoNextPage","hasNoTotalPagesNumber","pageArg","_sfc_main$o","BentoPaginationContext","BentoPaginationControls","BentoPaginationResultsPerPage","totalPages","navigate","onPageSelected","pageNumber","onItemsPerPageChange","elements","navigationConditionalClasses","BentoFilterItemType","BentoPopoverPositions","_sfc_main$n","isStrongest","titleVariant","_sfc_main$m","_sfc_main$l","BentoButtonActions","BentoPopoverDismissButton","BentoPopoverTitle","title","contentConditionalClasses","BentoTooltipPosition","BentoTooltipState","optionsSupport","support","listen","type","cleanupBatch","eventType","eventOptions","useNativeOnce","eventListener","KeyCode","_sfc_main$k","TooltipComponent","Tooltip","tooltipInstances","ariaDescribedByAttr","tooltipId","tooltip","open","createTooltip","destroyTooltip","getTooltipPosition","getTooltipInstanceForTarget","ctx","showTooltip","tooltipInstance","hideTooltip","BentoTooltipDirective","show","hide","evt","context","removeListener","useFilterLabel","filterLabel","filterValue","_sfc_main$i","BentoButtonGroup","BentoPopover","CrossIcon","filterButtonRef","isActive","isTooltipVisible","alwaysShowNameInLabel","displayLabel","onClickClear","closePopover","onClickFilter","onClickDismissFilter","onClickApply","buttonVariant","_sfc_main$h","BentoBaseFilter","internalValue","isFilterOpen","inputTextRef","isApplyButtonDisabled","closeFilter","clearFilter","openFilter","nextTick","dismissFilter","_sfc_main$g","BentoTextFilter","updateFilterHandler","updatedFilter","filterIndex","filter","newFilters","dismissedFilter","BentoColumnOverflow","BentoDatagridStyleState","BentoDatagridSortDirection","useResizer","columns","columnWidthOverridesLookup","colKeyLookup","col","columnsRefs","reactive","allColumnRefs","stepPositionX","resizingColumnField","defaultResizedColumnWidths","field","width","minWidth","watchEffect","removeMouseMoveResizeListener","removeMouseUpResizeListener","onResizeColumn","sizeChange","currResizingColumnField","resizedColumnWidth","stopResize","hasResizableColumns","callbackMap","observerMap","observeSizeOfElement","elementToObserve","observer","callbackToInvoke","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","bodyRef","body","gridWidth","caclulatedWidths","widthAllocatedBeforeFlex","columnsLookup","columnDefs","fluidCol","computedColumnWidths","onColumnWidthOverride","newColumnWidthOverridesLookup","processedColumns","totalWidthOfAllColumns","totalWidthOfAllCalculatedWidths","gridColumnWidthStyle","useSorter","sortBy","direction","sortedCol","updatedSortBy","useSelector","selection","getDataItemId","isDataItemDisabled","selectedItems","allItemsSelectedState","emitSelect","onAllRowSelect","allItemsSelected","dataItem","onRowSelect","isEveryItemSelected","useConfigSettings","condensed","compactView","isCompactView","_sfc_main$d","TriangleUp","TriangleDown","allItemsSelectedCheckboxState","areAllItemsSelected","startResize","conditionalSortDirectionClasses","sortByColumnField","conditionalColumnClasses","conditionalColumnSeperatorClasses","BentoTogglePropClass","AdlLabelPosition","_sfc_main$b","CheckmarkSmall","toggleInput","descriptionId","computedDescription","shouldDisplayLabelSlot","shouldDisplaySubLabelSlot","_sfc_main$a","BentoCrossCircleFillIcon","BentoSettingsIcon","BentoToggle","_props","configSettingsButtonRef","isConfigSettingsPanelOpen","_sfc_main$9","BentoDataGridColumns","BentoDataGridConfigSettings","BentoPagination","BentoFilterBar","selectable","onConfigSettingsUpdate","conditionalGridClasses","conditionalRowClasses","row","conditionalRowCellClasses","conditionalTitleAttribute","content","getRowData","rowData","conditionalPaginationClasses","_c","_f","_e","_d","ariaGridHeaderText","resizeEvent","page","itemsPerPage","BentoClickOutside","h","i18n","useCountryCapital","code","locale","useFallback","countryCode","languageLocale","VueI18n","normalizedCode","useCountryFlag","flagSrc","newCountryCode","flag","unknownFlag","useCountryName","useCountryPhoneCode","countryISOToPhoneCodes","BentoCountryVariant","BentoCountryCode","useI18n","vm","getCurrentInstance","v","_sfc_main$8","variant","flagIconSrc","countryName","getLabel","currencyExponentMap","getExponent","currencyCode","obj","getMinorUnitsAmount","amount","exponent","getNormalizedAmount","getNumberFormatOptions","exp","minorAmount","amountInMinorUnits","style","minimumFractionDigits","maximumFractionDigits","getLocalizedCurrencyValue","amountValue","currency","isShort","numberFormatOptions","BentoCurrencyISOCode","_sfc_main$7","BentoLinkVariant","__default__","attributes","useAttrs","BentoRadioGroupVariant","_sfc_main$5","radioButtonId","shouldShowLabel","shouldShowSubLabel","shouldShowDescription","_sfc_main$4","RadioButton","inputValue","BentoStatusVariant","_sfc_main$3","BentoTagVariant","_sfc_main$2","tagConditionalClasses","textFromSlot","shouldShowTooltip","formattedText","BentoAvatarVariant","BentoAvatarColor","useInitials","username","computedUsername","_sfc_main$1","initials","Avatar","charCode","avatarColor","rangeStep"],"mappings":"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;AAAA,IACA,EAAE,WAAW,GAAK;AAAA,EAAA,GAGfA;AACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA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,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,MAAM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","x_google_ignoreList":[6,7,8,9,10,21,22,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,58,59,60,61,65,66,70,76,77,78,79,93,98,99,107]}