@adyen/bento-vue3 1.43.0 → 1.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@types/packages/vue2/src/components/button/components/button-actions/composables/use-stack-buttons/use-stack-buttons.d.ts +10 -0
- package/dist/@types/packages/vue2/src/components/card/card.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/checkbox/checkbox.vue.d.ts +3 -3
- package/dist/@types/packages/vue2/src/components/checkbox/components/checkbox-group/checkbox-group.vue.d.ts +8 -8
- package/dist/@types/packages/vue2/src/components/code-snippet/code-snippet.vue.d.ts +50 -32
- package/dist/@types/packages/vue2/src/components/data-grid/components/data-grid-config-settings/data-grid-config-settings.vue.d.ts +3 -3
- package/dist/@types/packages/vue2/src/components/data-grid/data-grid.vue.d.ts +3 -3
- package/dist/@types/packages/vue2/src/components/date-picker/date-picker.vue.d.ts +21 -15
- package/dist/@types/packages/vue2/src/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.vue.d.ts +56 -38
- package/dist/@types/packages/vue2/src/components/date-range-picker/date-range-picker.vue.d.ts +77 -53
- package/dist/@types/packages/vue2/src/components/dropdown/components/dropdown-base-textbox/dropdown-base-textbox.vue.d.ts +6 -4
- package/dist/@types/packages/vue2/src/components/dropdown/components/dropdown-default-textbox/dropdown-default-textbox.vue.d.ts +4 -2
- package/dist/@types/packages/vue2/src/components/dropdown/components/dropdown-small-textbox/dropdown-small-textbox.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/dropdown/dropdown.vue.d.ts +20 -12
- package/dist/@types/packages/vue2/src/components/empty-state/empty-state.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/file-uploader/file-uploader.types.d.ts +6 -2
- package/dist/@types/packages/vue2/src/components/filter-bar/components/all-filters-modal/all-filters-modal.vue.d.ts +228 -180
- package/dist/@types/packages/vue2/src/components/filter-bar/components/base-filter/base-filter.vue.d.ts +6 -6
- package/dist/@types/packages/vue2/src/components/filter-bar/components/boolean-filter/boolean-filter.vue.d.ts +12 -12
- package/dist/@types/packages/vue2/src/components/filter-bar/components/date-filter/date-filter.vue.d.ts +27 -21
- package/dist/@types/packages/vue2/src/components/filter-bar/components/date-range-filter/date-range-filter.vue.d.ts +139 -97
- package/dist/@types/packages/vue2/src/components/filter-bar/components/filter-bar-button/filter-bar-button.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/filter-bar/components/input-filter/input-filter.vue.d.ts +15 -15
- package/dist/@types/packages/vue2/src/components/filter-bar/components/range-filter/range-filter.vue.d.ts +15 -15
- package/dist/@types/packages/vue2/src/components/filter-bar/filter-bar.vue.d.ts +208 -160
- package/dist/@types/packages/vue2/src/components/header/header.vue.d.ts +9 -0
- package/dist/@types/packages/vue2/src/components/input-field/input-field.vue.d.ts +3 -3
- package/dist/@types/packages/vue2/src/components/input-field-password/input-field-password.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/internal/button-actions-with-menu/button-actions-with-menu.keys.d.ts +1 -0
- package/dist/@types/packages/vue2/src/components/internal/button-actions-with-menu/button-actions-with-menu.vue.d.ts +16 -1
- package/dist/@types/packages/vue2/src/components/internal/button-actions-with-menu/index.d.ts +2 -0
- package/dist/@types/packages/vue2/src/components/internal/checkbox-input/checkbox-input.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/internal/controls-group/controls-group.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/internal/field-label/field-label.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/internal/index.d.ts +1 -0
- package/dist/@types/packages/vue2/src/components/internal/listbox/components/listbox-multi-select/components/listbox-multi-select-options/components/listbox-multi-select-category/listbox-multi-select-category.vue.d.ts +3 -3
- package/dist/@types/packages/vue2/src/components/internal/listbox/components/listbox-multi-select/components/listbox-multi-select-options/listbox-multi-select-options.vue.d.ts +6 -6
- package/dist/@types/packages/vue2/src/components/internal/listbox/components/listbox-multi-select/listbox-multi-select.vue.d.ts +9 -9
- package/dist/@types/packages/vue2/src/components/internal/listbox/listbox.vue.d.ts +15 -15
- package/dist/@types/packages/vue2/src/components/internal/radio-input/radio-input.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/internal/tooltip/tooltip.vue.d.ts +5 -5
- package/dist/@types/packages/vue2/src/components/menu/components/menu-item-list/menu-item-list.vue.d.ts +15 -0
- package/dist/@types/packages/vue2/src/components/menu/menu.vue.d.ts +48 -3
- package/dist/@types/packages/vue2/src/components/modal/components/base-modal/base-modal.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/modal/components/modal-default/modal-default.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/modal/components/modal-dialog/modal-dialog.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/modal/components/modal-page/modal-page.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/modal/modal.vue.d.ts +7 -7
- package/dist/@types/packages/vue2/src/components/modal-fullscreen/components/modal-fullscreen-page.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/modal-fullscreen/modal-fullscreen.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/popover/popover.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/popper-container/popper-container.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/promo-banner/promo-banner.vue.d.ts +2 -2
- package/dist/@types/packages/vue2/src/components/radio-group/radio-group.vue.d.ts +2 -2
- package/dist/@types/packages/vue2/src/components/selection-card/components/selection-card-group/selection-card-group.vue.d.ts +3 -3
- package/dist/@types/packages/vue2/src/components/sidepanel/components/sidepanel-page.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/summary-grid/components/summary-grid-item/summary-grid-item.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/summary-grid/components/summary-grid-item-amount/summary-grid-item-amount.vue.d.ts +2 -2
- package/dist/@types/packages/vue2/src/components/summary-grid/components/summary-grid-item-custom/summary-grid-item-custom.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/summary-grid/components/summary-grid-item-numeric/summary-grid-item-numeric.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/summary-grid/components/summary-grid-item-percentage/summary-grid-item-percentage.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/summary-grid/components/summary-grid-item-text/summary-grid-item-text.vue.d.ts +1 -1
- package/dist/@types/packages/vue2/src/components/textarea/textarea.vue.d.ts +6 -4
- package/dist/@types/packages/vue2/src/components/timeline/timeline.vue.d.ts +6 -4
- package/dist/@types/packages/vue2/src/composables/use-form-validate/use-form.d.ts +9 -6
- package/dist/@types/packages/vue2/src/composables/use-form-validate/use-form.types.d.ts +5 -1
- package/dist/action-bar.js +1 -1
- package/dist/assets/accordion-item.css +1 -1
- package/dist/assets/action-bar.css +1 -1
- package/dist/assets/base-modal.css +1 -1
- package/dist/assets/button-actions-with-menu.css +1 -1
- package/dist/assets/button-actions.css +1 -1
- package/dist/assets/card.css +1 -1
- package/dist/assets/data-grid.css +1 -1
- package/dist/assets/dialog-page.css +1 -1
- package/dist/assets/dropdown-default-textbox.css +1 -1
- package/dist/assets/dropdown.css +1 -1
- package/dist/assets/file-uploader.css +1 -1
- package/dist/assets/header.css +1 -1
- package/dist/assets/inspector.css +1 -1
- package/dist/assets/menu.css +1 -1
- package/dist/assets/modal-fullscreen.css +1 -1
- package/dist/assets/popover.css +1 -1
- package/dist/assets/selection-card-group.css +1 -1
- package/dist/assets/sidepanel.css +1 -1
- package/dist/assets/textarea.css +1 -1
- package/dist/button.js +7 -8
- package/dist/button.js.map +1 -1
- package/dist/card.js +1 -1
- package/dist/checkbox.js +2 -2
- package/dist/chunks/{action-bar.COQrEUYU.js → action-bar.B-_JS43H.js} +10 -9
- package/dist/chunks/action-bar.B-_JS43H.js.map +1 -0
- package/dist/chunks/{base-modal.ku0lyHOs.js → base-modal.BR_pB6eH.js} +2 -2
- package/dist/chunks/{base-modal.ku0lyHOs.js.map → base-modal.BR_pB6eH.js.map} +1 -1
- package/dist/chunks/button-actions-with-menu.GT_kNv28.js +119 -0
- package/dist/chunks/button-actions-with-menu.GT_kNv28.js.map +1 -0
- package/dist/chunks/button-actions.BjlQS6tm.js +322 -0
- package/dist/chunks/button-actions.BjlQS6tm.js.map +1 -0
- package/dist/chunks/{card.D_XL2TWr.js → card.BrEfcUoE.js} +2 -2
- package/dist/chunks/{card.D_XL2TWr.js.map → card.BrEfcUoE.js.map} +1 -1
- package/dist/chunks/{checkbox-group.BUmkYc2R.js → checkbox-group.C5IweVVx.js} +2 -2
- package/dist/chunks/{checkbox-group.BUmkYc2R.js.map → checkbox-group.C5IweVVx.js.map} +1 -1
- package/dist/chunks/{checkbox.L94hTcPY.js → checkbox.B72ok3Yu.js} +15 -15
- package/dist/chunks/{checkbox.L94hTcPY.js.map → checkbox.B72ok3Yu.js.map} +1 -1
- package/dist/chunks/{code-snippet.DbUGxmYi.js → code-snippet.S5NdUu0p.js} +4 -4
- package/dist/chunks/{code-snippet.DbUGxmYi.js.map → code-snippet.S5NdUu0p.js.map} +1 -1
- package/dist/chunks/{dashboard-section.YU5gKDEJ.js → dashboard-section.LWxBcOV_.js} +2 -2
- package/dist/chunks/{dashboard-section.YU5gKDEJ.js.map → dashboard-section.LWxBcOV_.js.map} +1 -1
- package/dist/chunks/{dashed-underline.BKfUevuM.js → dashed-underline.CRlWNPrd.js} +2 -2
- package/dist/chunks/{dashed-underline.BKfUevuM.js.map → dashed-underline.CRlWNPrd.js.map} +1 -1
- package/dist/chunks/{data-grid-template.DI27ou71.js → data-grid-template.BZVeRN6g.js} +2 -2
- package/dist/chunks/{data-grid-template.DI27ou71.js.map → data-grid-template.BZVeRN6g.js.map} +1 -1
- package/dist/chunks/{data-grid.DgPWs1hH.js → data-grid.CKDW-rbM.js} +10 -10
- package/dist/chunks/{data-grid.DgPWs1hH.js.map → data-grid.CKDW-rbM.js.map} +1 -1
- package/dist/chunks/{date-picker.DDsfecHp.js → date-picker.BrZ2X1nQ.js} +3 -3
- package/dist/chunks/{date-picker.DDsfecHp.js.map → date-picker.BrZ2X1nQ.js.map} +1 -1
- package/dist/chunks/{date-range-picker.DjPmRy0E.js → date-range-picker.4y2goCI8.js} +6 -6
- package/dist/chunks/{date-range-picker.DjPmRy0E.js.map → date-range-picker.4y2goCI8.js.map} +1 -1
- package/dist/chunks/{dropdown-default-textbox.CcRQ1f4U.js → dropdown-default-textbox.ZjVeMHVC.js} +131 -120
- package/dist/chunks/{dropdown-default-textbox.CcRQ1f4U.js.map → dropdown-default-textbox.ZjVeMHVC.js.map} +1 -1
- package/dist/chunks/{dropdown-tag.BKDmDRSv.js → dropdown-tag.ClKm4xAo.js} +2 -2
- package/dist/chunks/{dropdown-tag.BKDmDRSv.js.map → dropdown-tag.ClKm4xAo.js.map} +1 -1
- package/dist/chunks/dropdown.Sj2OLuEF.js +911 -0
- package/dist/chunks/{dropdown.DpjMobyf.js.map → dropdown.Sj2OLuEF.js.map} +1 -1
- package/dist/chunks/es6.C-HLzYPA.js +11 -0
- package/dist/chunks/{es6.b4enG1py.js.map → es6.C-HLzYPA.js.map} +1 -1
- package/dist/chunks/{file-uploader.cRbwpcAw.js → file-uploader.BgRbkW2V.js} +368 -365
- package/dist/chunks/file-uploader.BgRbkW2V.js.map +1 -0
- package/dist/chunks/{filter-bar.BwJTrH5U.js → filter-bar.CM1FZ02d.js} +16 -17
- package/dist/chunks/{filter-bar.BwJTrH5U.js.map → filter-bar.CM1FZ02d.js.map} +1 -1
- package/dist/chunks/{footer-actions.DvIVWqWv.js → footer-actions.Dvsb0g5Y.js} +2 -2
- package/dist/chunks/{footer-actions.DvIVWqWv.js.map → footer-actions.Dvsb0g5Y.js.map} +1 -1
- package/dist/chunks/{header.C0NBlBJv.js → header.8BzBNgxj.js} +23 -23
- package/dist/chunks/{header.C0NBlBJv.js.map → header.8BzBNgxj.js.map} +1 -1
- package/dist/chunks/{input-field-password.DxNS4MmO.js → input-field-password.CXsERnQX.js} +3 -3
- package/dist/chunks/{input-field-password.DxNS4MmO.js.map → input-field-password.CXsERnQX.js.map} +1 -1
- package/dist/chunks/{input-field.BQKEQIZd.js → input-field.C-7_iMIS.js} +2 -2
- package/dist/chunks/{input-field.BQKEQIZd.js.map → input-field.C-7_iMIS.js.map} +1 -1
- package/dist/chunks/{menu.BpqOdkxR.js → menu.hDynz4lc.js} +132 -104
- package/dist/chunks/menu.hDynz4lc.js.map +1 -0
- package/dist/chunks/{modal-fullscreen.DtgTb1Xh.js → modal-fullscreen.BCGaxVNb.js} +2 -2
- package/dist/chunks/{modal-fullscreen.DtgTb1Xh.js.map → modal-fullscreen.BCGaxVNb.js.map} +1 -1
- package/dist/chunks/{modal.vue_vue_type_script_setup_true_lang.CjD91zJo.js → modal.vue_vue_type_script_setup_true_lang.DJXx8ftn.js} +4 -4
- package/dist/chunks/{modal.vue_vue_type_script_setup_true_lang.CjD91zJo.js.map → modal.vue_vue_type_script_setup_true_lang.DJXx8ftn.js.map} +1 -1
- package/dist/chunks/{pagination.C34l_EYf.js → pagination.C9kqX5tD.js} +2 -2
- package/dist/chunks/{pagination.C34l_EYf.js.map → pagination.C9kqX5tD.js.map} +1 -1
- package/dist/chunks/{popover.D9Zw4w9l.js → popover.DwGgnCyn.js} +2 -2
- package/dist/chunks/{popover.D9Zw4w9l.js.map → popover.DwGgnCyn.js.map} +1 -1
- package/dist/chunks/{search-bar.Dy0dBek2.js → search-bar.DPC0amNg.js} +3 -3
- package/dist/chunks/{search-bar.Dy0dBek2.js.map → search-bar.DPC0amNg.js.map} +1 -1
- package/dist/chunks/{secondary-nav.DYFnrUIK.js → secondary-nav.DH7aXddE.js} +3 -3
- package/dist/chunks/{secondary-nav.DYFnrUIK.js.map → secondary-nav.DH7aXddE.js.map} +1 -1
- package/dist/chunks/{selection-card-group.BY8o4PYF.js → selection-card-group.DDBJ423n.js} +19 -19
- package/dist/chunks/{selection-card-group.BY8o4PYF.js.map → selection-card-group.DDBJ423n.js.map} +1 -1
- package/dist/chunks/{sidepanel.BywianGe.js → sidepanel.8NclWh0V.js} +2 -2
- package/dist/chunks/{sidepanel.BywianGe.js.map → sidepanel.8NclWh0V.js.map} +1 -1
- package/dist/chunks/{teleport.CI0k6eaC.js → teleport.B255JhsV.js} +26 -17
- package/dist/chunks/teleport.B255JhsV.js.map +1 -0
- package/dist/chunks/{textarea.vAp6HFi9.js → textarea.D1weaQCC.js} +72 -68
- package/dist/chunks/{textarea.vAp6HFi9.js.map → textarea.D1weaQCC.js.map} +1 -1
- package/dist/chunks/{timeline-item.ND_EMuwP.js → timeline-item.BDYrjKhM.js} +3 -3
- package/dist/chunks/{timeline-item.ND_EMuwP.js.map → timeline-item.BDYrjKhM.js.map} +1 -1
- package/dist/chunks/{tutorial.vue_vue_type_script_setup_true_lang.LBw_ALfS.js → tutorial.vue_vue_type_script_setup_true_lang.ltZUbc6M.js} +4 -4
- package/dist/chunks/{tutorial.vue_vue_type_script_setup_true_lang.LBw_ALfS.js.map → tutorial.vue_vue_type_script_setup_true_lang.ltZUbc6M.js.map} +1 -1
- package/dist/chunks/{use-cached-selected-values.BOZK76mN.js → use-cached-selected-values.B6beyyvX.js} +3 -3
- package/dist/chunks/{use-cached-selected-values.BOZK76mN.js.map → use-cached-selected-values.B6beyyvX.js.map} +1 -1
- package/dist/code-snippet.js +1 -1
- package/dist/dashboard-template.js +1 -1
- package/dist/dashed-underline.js +1 -1
- package/dist/data-grid-template.js +1 -1
- package/dist/data-grid.js +1 -1
- package/dist/date-picker.js +1 -1
- package/dist/date-range-picker.js +1 -1
- package/dist/dropdown.js +4 -4
- package/dist/file-uploader.js +1 -1
- package/dist/filter-bar.js +1 -1
- package/dist/header.js +1 -1
- package/dist/index.js +67 -68
- package/dist/index.js.map +1 -1
- package/dist/input-field-password.js +1 -1
- package/dist/input-field.js +1 -1
- package/dist/internal.js +28 -24
- package/dist/internal.js.map +1 -1
- package/dist/menu.js +1 -1
- package/dist/modal-fullscreen.js +1 -1
- package/dist/modal.js +2 -2
- package/dist/pagination.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/search-bar.js +2 -2
- package/dist/secondary-nav.js +1 -1
- package/dist/selection-card.js +1 -1
- package/dist/sidepanel.js +1 -1
- package/dist/textarea.js +1 -1
- package/dist/timeline.js +1 -1
- package/dist/tutorial.js +1 -1
- package/dist/web-types.json +1 -1
- package/package.json +2 -2
- package/dist/@types/packages/vue2/src/components/button/button.demo.d.ts +0 -6
- package/dist/assets/loading-button.css +0 -1
- package/dist/chunks/action-bar.COQrEUYU.js.map +0 -1
- package/dist/chunks/button-actions-with-menu.Bn7Kdx4v.js +0 -106
- package/dist/chunks/button-actions-with-menu.Bn7Kdx4v.js.map +0 -1
- package/dist/chunks/button-actions.Bjfo46Q_.js +0 -150
- package/dist/chunks/button-actions.Bjfo46Q_.js.map +0 -1
- package/dist/chunks/dropdown.DpjMobyf.js +0 -907
- package/dist/chunks/es6.b4enG1py.js +0 -10
- package/dist/chunks/file-uploader.cRbwpcAw.js.map +0 -1
- package/dist/chunks/loading-button.CNWhVIPK.js +0 -137
- package/dist/chunks/loading-button.CNWhVIPK.js.map +0 -1
- package/dist/chunks/menu.BpqOdkxR.js.map +0 -1
- package/dist/chunks/teleport.CI0k6eaC.js.map +0 -1
- package/dist/chunks/use-click-outside.D6aIgS15.js +0 -14
- package/dist/chunks/use-click-outside.D6aIgS15.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader.cRbwpcAw.js","sources":["../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/upload.vue","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/bin.vue","../../../vue2/src/components/file-uploader/components/file-uploader-file-card/composables/use-truncated-file-name.ts","../../../vue2/src/components/file-uploader/utils/format-file-size/format-file-size.ts","../../../vue2/src/components/file-uploader/file-uploader.types.ts","../../../vue2/src/components/file-uploader/utils/get-file-type/get-file-type.ts","../../../vue2/src/components/file-uploader/utils/read-file/read-file.ts","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/attachment.vue","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/collection.vue","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/document-1.vue","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/document-lines.vue","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/folder.vue","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/image.vue","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/play-circle.vue","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/sound.vue","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/table.vue","../../../vue2/src/components/file-uploader/components/file-uploader-file-card/utils/get-file-icon/get-file-icon.ts","../../../vue2/src/components/file-uploader/components/file-uploader-file-card/utils/get-file-icon-color/get-file-icon-color.ts","../../../vue2/src/components/file-uploader/components/file-uploader-file-card/file-uploader-file-card.vue","../../../vue2/src/components/file-uploader/components/file-uploader-restrictions/file-uploader-restrictions.vue","../../../vue2/src/components/file-uploader/composables/use-file-type-list/use-file-type-list.ts","../../../vue2/src/components/file-uploader/file-uploader.vue"],"sourcesContent":["\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M8.00011 0.939453L12.0608 5.00011L11.0001 6.06077L8.75 3.81066V11.75H7.25V3.81089L5.00011 6.06077L3.93945 5.00011L8.00011 0.939453Z\"/><path fill=\"#00112C\" d=\"M2.75 12.5V10.25H1.25V12.5C1.25 13.0967 1.48705 13.669 1.90901 14.091C2.33097 14.5129 2.90326 14.75 3.5 14.75H12.5C13.0967 14.75 13.669 14.5129 14.091 14.091C14.5129 13.669 14.75 13.0967 14.75 12.5V10.25H13.25V12.5C13.25 12.6989 13.171 12.8897 13.0303 13.0303C12.8897 13.171 12.6989 13.25 12.5 13.25H3.5C3.30109 13.25 3.11032 13.171 2.96967 13.0303C2.82902 12.8897 2.75 12.6989 2.75 12.5Z\"/></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>\n @import '../css/main.css';\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M7.25 6.25H5.75V12.75H7.25V6.25Z\"/><path fill=\"#00112C\" d=\"M8.75 6.25H10.25V12.75H8.75V6.25Z\"/><path fill=\"#00112C\" d=\"M14.75 3.24999H12.54L12.05 1.74999C11.9 1.29999 11.61 0.92999 11.22 0.64999C10.83 0.37999 10.34 0.24999 9.92 0.23999H6.09C5.64 0.23999 5.17 0.37999 4.78 0.64999C4.39 0.91999 4.11 1.29999 3.95 1.75999L3.46 3.23999H1.25V4.73999H2.32L3.14 13.7C3.19 14.26 3.45 14.78 3.86 15.16C4.27 15.54 4.81 15.75 5.37 15.75H10.64C11.2 15.75 11.74 15.54 12.15 15.16C12.57 14.78 12.82 14.26 12.87 13.7L13.69 4.73999H14.76V3.23999L14.75 3.24999ZM5.37 2.24999C5.42 2.09999 5.52 1.97999 5.64 1.88999C5.77 1.79999 5.92 1.74999 6.08 1.75999H9.93C10.08 1.75999 10.23 1.80999 10.35 1.88999C10.48 1.97999 10.57 2.09999 10.62 2.23999L10.95 3.25999H5.02L5.35 2.25999L5.37 2.24999ZM11.37 13.58C11.35 13.77 11.27 13.94 11.13 14.06C10.99 14.19 10.81 14.25 10.63 14.25H5.36C5.17 14.25 5 14.18 4.86 14.06C4.72 13.93 4.64 13.76 4.62 13.57L3.81 4.74999H12.17L11.36 13.57L11.37 13.58Z\"/></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>\n @import '../css/main.css';\n</style>\n","import { VueInstance } from '@/types';\nimport { onMounted, onUnmounted, ref, Ref } from 'vue';\n\n/**\n * Verifies if the content defined is being truncated when it is overflowing the container.\n *\n * @param target Element that contains the text to be truncated\n * @param container Scrollable container that defines the boundaries\n * @returns Boolean indicating whether or not the content will be truncated\n */\nexport function useTruncatedFileName(target: Ref<VueInstance>, container: Ref<HTMLElement>) {\n const isContainerTruncating = ref<boolean>(false);\n let observer: IntersectionObserver;\n\n function disconnectObserver() {\n if (observer) {\n observer.disconnect();\n }\n }\n\n onUnmounted(() => {\n disconnectObserver();\n });\n\n onMounted(() => {\n disconnectObserver();\n\n observer = new IntersectionObserver(\n entries => {\n isContainerTruncating.value = !entries[0].isIntersecting;\n },\n {\n root: container.value,\n threshold: 1.0,\n }\n );\n\n observer.observe(target.value.$el);\n });\n\n return isContainerTruncating;\n}\n","const UNITS = ['byte', 'kilobyte', 'megabyte', 'gigabyte', 'terabyte', 'petabyte'];\n\n/**\n * Converts size in bytes to a human readable format.\n * For example, it transforms \"1000\" to \"1kB\"\n *\n * @param locale App's set locale (e.g. en, es, pt-BR)\n * @param size Size of file\n * @returns Size of file using metrics\n */\nexport function formatFileSize(locale: string, size: number) {\n let unitIndex = 0;\n let bytes = size;\n\n while (bytes >= 1000 && unitIndex < UNITS.length - 1) {\n bytes /= 1000;\n unitIndex++;\n }\n\n return new Intl.NumberFormat(locale, {\n style: 'unit',\n unit: UNITS[unitIndex],\n unitDisplay: 'short', // Displays as \"kB\" instead of \"kilobytes\"\n maximumFractionDigits: 2, // Limits to 2 decimal places\n }).format(bytes);\n}\n","export type BentoFileUploaderValue = string | Array<string> | File | Array<File>;\nexport interface BentoFileUploaderProps {\n /**\n * A string that defines the file types the file input should accept.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept\n */\n accept?: HTMLInputElement['accept'];\n\n /**\n * Reduces the size of the uploader area.\n */\n condensed?: boolean;\n\n /**\n * Descriptive supporting text visbile underneath the label.\n */\n description?: string;\n\n /**\n * Disable the radio button (optional).\n */\n disabled?: boolean;\n\n /**\n * Renders file-uploader with an error state and the error message beneath the input box\n */\n errorMessage?: string;\n\n /**\n * The label of the component.\n */\n label: string;\n\n /**\n * Sets a maximum file count. Allows for uploading multiple files.\n */\n maxCount?: number;\n\n /**\n * Sets a maximum image size (for image file types only).\n */\n maxDimensions?: { width?: number; height?: number };\n\n /**\n * Sets a maximum file size in Bytes\n */\n maxSize?: number;\n\n /**\n * Used to support `v-model`. Doesn't actually set the value of the file uploader.\n */\n modelValue?: BentoFileUploaderValue;\n\n /**\n * Sets the field as optional.\n */\n optional?: boolean;\n\n /**\n * Sets the field as required.\n */\n required?: boolean;\n\n /**\n * Adds a info icon next to the label to display the passed tooltip message.\n */\n tooltipText?: string;\n}\n\n/**\n * Private types\n */\nexport enum FileState {\n LOADING = 'loading',\n ERROR_SIZE = 'error-size',\n ERROR_LOAD = 'error-load',\n ERROR_DIMENSIONS = 'error-dimensions',\n ERROR_TYPE = 'error-type',\n SUCCESS = 'success',\n}\n\nexport enum FileUploaderState {\n DISABLED = 'disabled',\n DRAG_OVER = 'drag-over',\n ERROR = 'error',\n READONLY = 'readonly',\n}\n\nexport enum FileType {\n TABLE = 'table',\n IMAGE = 'image',\n VIDEO = 'video',\n AUDIO = 'audio',\n TEXT = 'text',\n PDF = 'pdf',\n SLIDES = 'slides',\n COMPRESSED = 'compressed',\n GENERIC = 'generic',\n}\n\nexport interface FileObject {\n id: string;\n data: File;\n state: FileState;\n type: FileType;\n progress: number | null;\n dimensions?: { width: number; height: number };\n}\n\nexport type SupportedFileTypes = string;\n","import { FileType } from '@/components/file-uploader/file-uploader.types';\n\nconst textFileExtraTypes = [\n 'application/msword', // .doc\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx\n 'application/rtf', // .rtf\n];\n\nconst tableFileTypes = [\n 'application/vnd.ms-excel', // .xls\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // .xlsx\n 'application/vnd.oasis.opendocument.spreadsheet', //.ods\n 'application/vnd.apple.numbers', // .numbers\n 'application/x-iwork-numbers-sffnumbers', // .numbers\n 'text/csv', // .csv\n];\n\nconst slidesFileTypes = [\n 'application/vnd.ms-powerpoint', // .ppt\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation', // .pptx\n 'application/vnd.oasis.opendocument.presentation', // .odp\n];\n\nconst compressedFileTypes = [\n 'application/zip', // .zip\n 'application/vnd.rar', // .rar\n 'application/x-7z-compressed', // .7z\n 'application/gzip', // .gz, .tar.gz, .tgz\n 'application/x-tar', // .tar\n 'application/x-bzip2', // .bz2\n 'application/x-xz', // .xz\n 'application/x-lzma', // .lzma\n 'application/x-compress', // .Z\n 'application/vnd.ms-cab-compressed', // .cab\n];\n\n/**\n * Categorizes the type of a file. Maps all types of text, image, video,\n * audio and documents to an specific category such as \"text/*\" or \"image/*\" respectively\n * @param file File to be typed\n * @returns Type category of the file being uploaded\n */\nexport function getFileType(file: File) {\n if (tableFileTypes.includes(file.type)) {\n return FileType.TABLE;\n }\n\n if (file.type.startsWith('text/') || textFileExtraTypes.includes(file.type)) {\n return FileType.TEXT;\n }\n\n if (file.type.startsWith('image/')) {\n return FileType.IMAGE;\n }\n\n if (file.type.startsWith('video/')) {\n return FileType.VIDEO;\n }\n\n if (file.type.startsWith('audio/')) {\n return FileType.AUDIO;\n }\n\n if (file.type === 'application/pdf') {\n return FileType.PDF;\n }\n\n if (slidesFileTypes.includes(file.type)) {\n return FileType.SLIDES;\n }\n\n if (compressedFileTypes.includes(file.type)) {\n return FileType.COMPRESSED;\n }\n\n return FileType.GENERIC;\n}\n","import { type FileObject, FileState, FileType } from '@/components/file-uploader/file-uploader.types';\n\n/**\n * Validates if a File has the correct type accepted for the current instance of\n * BentoFileUploader.\n *\n * @param file File being processed\n * @param accept HTML MIME types valid for the file to be processed\n * @returns Whether or not the file has the right type\n */\nfunction isFileTypeAccepted(file: File, accept?: string) {\n if (!accept) {\n return true;\n }\n\n // Split accept attribute into individual rules (e.g., 'image/*', '.png')\n const acceptPatterns = accept.split(',').map(type => type.trim());\n\n for (const pattern of acceptPatterns) {\n if (pattern.startsWith('.')) {\n // Check for file extension\n if (file.name.endsWith(pattern)) {\n return true;\n }\n } else if (pattern.endsWith('/*')) {\n // Check for type category (e.g., 'image/*')\n const category = pattern.split('/')[0];\n if (file.type.startsWith(category)) {\n return true;\n }\n } else {\n // Check for exact MIME type match\n if (file.type === pattern) {\n return true;\n }\n }\n }\n\n return false; // No matches found\n}\n\n/**\n * Process a file to verify if it fulfills the accepted type restrictions defined in \"accept\",\n * the dimensions for \"image/*\" types defined by \"maxDimensions\". The state of the \"fileObject\" will\n * be updated according to the restrictions or if it was successfully uploaded.\n *\n * @param fileObject File to be processed\n * @param accept HTML MIME types valid for the file to be processed\n * @param maxDimensions Width and height restrictions for \"image/*\" files\n */\nexport function readFile(\n fileObject: FileObject,\n accept?: string,\n maxDimensions?: { width?: number; height?: number }\n): void {\n const reader = new FileReader();\n // Can't be cloned because the events are async\n const file = fileObject; // avoid ESLint no-param-reassign\n\n // Verify file type - skip the rest if invalid\n if (!isFileTypeAccepted(file.data, accept)) {\n file.state = FileState.ERROR_TYPE;\n return;\n }\n\n reader.onload = event => {\n if (maxDimensions && file.type === FileType.IMAGE) {\n const blob = new Blob([event.target.result], { type: file.data.type });\n const url = URL.createObjectURL(blob);\n const img = new Image();\n\n img.onload = function () {\n if (img.width > maxDimensions.width || img.height > maxDimensions.height) {\n file.state = FileState.ERROR_DIMENSIONS;\n }\n URL.revokeObjectURL(url);\n };\n\n img.onerror = function () {\n URL.revokeObjectURL(url);\n };\n\n img.src = url;\n }\n };\n\n reader.onprogress = event => {\n if (event.lengthComputable) {\n file.progress = (event.loaded / event.total) * 100;\n }\n };\n\n reader.onloadend = () => {\n if (file.state !== FileState.ERROR_SIZE) {\n file.state = FileState.SUCCESS;\n }\n\n file.progress = null;\n };\n\n reader.onerror = () => {\n file.state = FileState.ERROR_LOAD;\n file.progress = null;\n };\n\n reader.readAsArrayBuffer(file.data);\n}\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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-attachment__a' + uuid + ')'\"><path fill=\"#00112C\" d=\"M12.866 4.09026C11.5689 2.79315 9.4638 2.79315 8.1667 4.09026L2.7267 9.53026C1.95959 10.2974 1.95959 11.5425 2.7267 12.3096C3.49381 13.0767 4.73893 13.0767 5.50604 12.3096L10.946 6.8696C11.1831 6.63249 11.1831 6.24737 10.946 6.01026C10.7089 5.77316 10.3238 5.77316 10.0867 6.01026L4.75637 11.3406L3.69571 10.2799L9.02604 4.9496C9.84893 4.12671 11.1838 4.12671 12.0067 4.9496C12.8296 5.7725 12.8296 7.10737 12.0067 7.93026L6.5667 13.3703C5.2138 14.7232 3.01893 14.7232 1.66604 13.3703C0.313144 12.0174 0.313144 9.82249 1.66604 8.4696L7.10604 3.0296C8.98893 1.14671 12.0438 1.14671 13.9267 3.0296C15.8096 4.91249 15.8096 7.96737 13.9267 9.85026L11.1564 12.6206L10.0957 11.5599L12.866 8.7896C14.1631 7.49249 14.1631 5.38737 12.866 4.09026Z\"/></g><defs><clipPath :id=\"'uia-icons-16-attachment__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>\n @import '../css/main.css';\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M13.75 9.58159C14.3412 9.30073 14.75 8.6981 14.75 8V2C14.75 1.0335 13.9665 0.25 13 0.25H3C2.0335 0.25 1.25 1.0335 1.25 2V8C1.25 8.6981 1.65876 9.30073 2.25 9.58159V11C2.25 11.4641 2.43438 11.9092 2.76256 12.2374C2.90555 12.3804 3.07072 12.4961 3.25 12.5811V14C3.25 14.4641 3.43438 14.9092 3.76256 15.2374C4.09075 15.5656 4.53587 15.75 5 15.75H11C11.4641 15.75 11.9092 15.5656 12.2374 15.2374C12.5656 14.9092 12.75 14.4641 12.75 14V12.5811C12.9293 12.4961 13.0945 12.3804 13.2374 12.2374C13.5656 11.9092 13.75 11.4641 13.75 11V9.58159ZM3 1.75H13C13.1381 1.75 13.25 1.86193 13.25 2V8C13.25 8.13807 13.1381 8.25 13 8.25H3C2.86193 8.25 2.75 8.13807 2.75 8V2C2.75 1.86193 2.86193 1.75 3 1.75ZM12.25 9.75V11C12.25 11.0663 12.2237 11.1299 12.1768 11.1768C12.1299 11.2237 12.0663 11.25 12 11.25H4C3.9337 11.25 3.87011 11.2237 3.82322 11.1768C3.77634 11.1299 3.75 11.0663 3.75 11V9.75H12.25ZM11.25 12.75V14C11.25 14.0663 11.2237 14.1299 11.1768 14.1768C11.1299 14.2237 11.0663 14.25 11 14.25H5C4.9337 14.25 4.87011 14.2237 4.82322 14.1768C4.77634 14.1299 4.75 14.0663 4.75 14V12.75H11.25Z\"/></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>\n @import '../css/main.css';\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M13.75 13.5C13.75 14.7442 12.7442 15.75 11.5 15.75H4.5C3.25579 15.75 2.25 14.7442 2.25 13.5V2.5C2.25 1.25579 3.25579 0.25 4.5 0.25H9.31055L13.75 4.68728V13.5ZM3.75 2.5V13.5C3.75 13.9158 4.08421 14.25 4.5 14.25H11.5C11.9158 14.25 12.25 13.9158 12.25 13.5V6.75H9.5C8.25736 6.75 7.25 5.74264 7.25 4.5V1.75H4.5C4.08421 1.75 3.75 2.08421 3.75 2.5ZM8.75 1.81052V4.5C8.75 4.91421 9.08579 5.25 9.5 5.25H12.1912L8.75 1.81052Z\"/></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>\n @import '../css/main.css';\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M10.7461 8.25V9.75H5.24609V8.25H10.7461Z\"/><path fill=\"#00112C\" d=\"M5.24609 11.25H10.7461V12.75H5.24609V11.25Z\"/><path fill=\"#00112C\" d=\"M13.7461 13.5C13.7461 14.7442 12.7403 15.75 11.4961 15.75H4.49609C3.25188 15.75 2.24609 14.7442 2.24609 13.5V2.5C2.24609 1.25579 3.25188 0.25 4.49609 0.25H9.30665L13.7461 4.68728V13.5ZM3.74609 2.5V13.5C3.74609 13.9158 4.08031 14.25 4.49609 14.25H11.4961C11.9119 14.25 12.2461 13.9158 12.2461 13.5V6.75H9.49609C8.25345 6.75 7.24609 5.74264 7.24609 4.5V1.75H4.49609C4.08031 1.75 3.74609 2.08421 3.74609 2.5ZM8.74609 1.81052V4.5C8.74609 4.91421 9.08188 5.25 9.49609 5.25H12.1873L8.74609 1.81052Z\"/></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>\n @import '../css/main.css';\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M1.24609 4.5C1.24609 3.25579 2.25188 2.25 3.49609 2.25H6.37609C6.97727 2.25 7.54738 2.49062 7.96642 2.90967L10.0864 5.02967C10.2274 5.17062 10.4173 5.25 10.6161 5.25H12.4961C13.7403 5.25 14.7461 6.25579 14.7461 7.5V12.5C14.7461 13.7442 13.7403 14.75 12.4961 14.75H3.49609C2.25188 14.75 1.24609 13.7442 1.24609 12.5V4.5ZM3.49609 3.75C3.08031 3.75 2.74609 4.08421 2.74609 4.5V12.5C2.74609 12.9158 3.08031 13.25 3.49609 13.25H12.4961C12.9119 13.25 13.2461 12.9158 13.2461 12.5V7.5C13.2461 7.08421 12.9119 6.75 12.4961 6.75H10.6161C10.0149 6.75 9.44481 6.50938 9.02576 6.09033L6.90576 3.97033C6.76481 3.82938 6.57492 3.75 6.37609 3.75H3.49609Z\"/></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>\n @import '../css/main.css';\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M9.99609 3.24805C8.47731 3.24805 7.24609 4.47926 7.24609 5.99805C7.24609 7.51683 8.47731 8.74805 9.99609 8.74805C11.5149 8.74805 12.7461 7.51683 12.7461 5.99805C12.7461 4.47926 11.5149 3.24805 9.99609 3.24805ZM8.74609 5.99805C8.74609 5.30769 9.30574 4.74805 9.99609 4.74805C10.6865 4.74805 11.2461 5.30769 11.2461 5.99805C11.2461 6.6884 10.6865 7.24805 9.99609 7.24805C9.30574 7.24805 8.74609 6.6884 8.74609 5.99805Z\"/><path fill=\"#00112C\" d=\"M1.24609 3.49805C1.24609 2.25541 2.25345 1.24805 3.49609 1.24805H12.4961C13.7387 1.24805 14.7461 2.25541 14.7461 3.49805V12.498C14.7461 13.7407 13.7387 14.748 12.4961 14.748H3.49609C2.25345 14.748 1.24609 13.7407 1.24609 12.498V3.49805ZM3.49609 2.74805C3.08188 2.74805 2.74609 3.08383 2.74609 3.49805V6.68756L3.99615 5.4375L11.8067 13.248H12.4961C12.9103 13.248 13.2461 12.9123 13.2461 12.498V3.49805C13.2461 3.08383 12.9103 2.74805 12.4961 2.74805H3.49609ZM2.74609 12.498C2.74609 12.9123 3.08188 13.248 3.49609 13.248H9.68538L3.99615 7.55882L2.74609 8.80888V12.498Z\"/></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>\n @import '../css/main.css';\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><g fill=\"#00112C\" :clip-path=\"'url(#uia-icons-16-play_circle__a' + uuid + ')'\"><path d=\"M10.9722 8.00002L6.62012 5.09863V10.9014L10.9722 8.00002Z\"/><path 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.704529 4.96881 1.55611 3.69433C2.40769 2.41985 3.61808 1.42652 5.0342 0.839937ZM9.21931 1.8701C8.00693 1.62894 6.75027 1.75271 5.60823 2.22576C4.46619 2.6988 3.49007 3.49988 2.80331 4.52769C2.11656 5.5555 1.75 6.76387 1.75 8C1.75 9.65761 2.40848 11.2473 3.58058 12.4194C4.75268 13.5915 6.3424 14.25 8 14.25C9.23613 14.25 10.4445 13.8834 11.4723 13.1967C12.5001 12.5099 13.3012 11.5338 13.7742 10.3918C14.2473 9.24974 14.3711 7.99307 14.1299 6.78069C13.8887 5.56831 13.2935 4.45466 12.4194 3.58059C11.5453 2.70651 10.4317 2.11125 9.21931 1.8701Z\"/></g><defs><clipPath :id=\"'uia-icons-16-play_circle__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>\n @import '../css/main.css';\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M5.68934 2.25H8.75V13.75H5.68934L2.68934 10.75H0.25V5.25H2.68934L5.68934 2.25ZM6.31066 3.75L3.31066 6.75H1.75V9.25H3.31066L6.31066 12.25H7.25V3.75H6.31066Z\"/><path fill=\"#00112C\" d=\"M13.0111 4.99174C12.2099 4.19982 11.1294 3.75 10 3.75V2.25C11.53 2.25 12.9888 2.85964 14.0675 3.92684L14.0703 3.92966C15.1527 5.01199 15.75 6.47347 15.75 8C15.75 9.52995 15.1404 10.9888 14.0732 12.0675L14.0703 12.0703C12.988 13.1527 11.5265 13.75 10 13.75V12.25C11.1328 12.25 12.2107 11.8079 13.0082 11.0111C13.8002 10.21 14.25 9.1294 14.25 8C14.25 6.8672 13.8079 5.78927 13.0111 4.99174Z\"/><path fill=\"#00112C\" d=\"M10 6.75V5.25C10.7257 5.25 11.4295 5.53694 11.9438 6.06319C12.4593 6.58041 12.75 7.26849 12.75 8C12.75 8.72573 12.4631 9.42951 11.9368 9.94383C11.4196 10.4593 10.7315 10.75 10 10.75V9.25C10.3268 9.25 10.6373 9.12206 10.8797 8.87967L10.8868 8.87265C11.1182 8.64727 11.25 8.33261 11.25 8C11.25 7.67317 11.1221 7.36272 10.8797 7.12033L10.8726 7.11321C10.6473 6.88175 10.3326 6.75 10 6.75Z\"/></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>\n @import '../css/main.css';\n</style>\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M3.5 1.25L3.49505 1.25002C2.90084 1.25394 2.33208 1.49173 1.91191 1.91191C1.49173 2.33208 1.25392 2.90084 1.25 3.49505V12.5C1.25 13.0967 1.48705 13.669 1.90901 14.091C2.33097 14.5129 2.90326 14.75 3.5 14.75H12.5C13.0967 14.75 13.669 14.5129 14.091 14.091C14.5129 13.669 14.75 13.0967 14.75 12.5V3.5C14.75 2.90326 14.5129 2.33097 14.091 1.90901C13.669 1.48705 13.0967 1.25 12.5 1.25H3.5ZM5.25 2.75V5.25H2.75V3.5029C2.75185 3.30382 2.83175 3.11338 2.97257 2.97257C3.11338 2.83175 3.30382 2.75185 3.5029 2.75H5.25ZM5.25 6.75V9.25H2.75V6.75H5.25ZM6.75 9.25V6.75H13.25V9.25H6.75ZM5.25 10.75V13.25H3.5C3.30109 13.25 3.11032 13.171 2.96967 13.0303C2.82902 12.8897 2.75 12.6989 2.75 12.5V10.75H5.25ZM6.75 13.25V10.75H13.25V12.5C13.25 12.6989 13.171 12.8897 13.0303 13.0303C12.8897 13.171 12.6989 13.25 12.5 13.25H6.75ZM6.75 5.25V2.75H12.5C12.6989 2.75 12.8897 2.82902 13.0303 2.96967C13.171 3.11032 13.25 3.30109 13.25 3.5V5.25H6.75Z\"/></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>\n @import '../css/main.css';\n</style>\n","import { VueNodeElement } from '@/types';\nimport { type FileObject, FileType } from '@/components/file-uploader/file-uploader.types';\n\nimport AttachmentIcon from '@adyen/ui-assets-icons-16/vue/attachment';\nimport CollectionIcon from '@adyen/ui-assets-icons-16/vue/collection';\nimport DocumentIcon from '@adyen/ui-assets-icons-16/vue/document-1';\nimport DocumentLinesIcon from '@adyen/ui-assets-icons-16/vue/document-lines';\nimport FolderIcon from '@adyen/ui-assets-icons-16/vue/folder';\nimport ImageIcon from '@adyen/ui-assets-icons-16/vue/image';\nimport PlayCircleIcon from '@adyen/ui-assets-icons-16/vue/play-circle';\nimport SoundIcon from '@adyen/ui-assets-icons-16/vue/sound';\nimport TableIcon from '@adyen/ui-assets-icons-16/vue/table';\n\nconst FILE_TYPE_ICON_MAP: Record<FileType, VueNodeElement> = {\n [FileType.AUDIO]: SoundIcon,\n [FileType.COMPRESSED]: FolderIcon,\n [FileType.GENERIC]: AttachmentIcon,\n [FileType.IMAGE]: ImageIcon,\n [FileType.PDF]: DocumentIcon,\n [FileType.SLIDES]: CollectionIcon,\n [FileType.TABLE]: TableIcon,\n [FileType.TEXT]: DocumentLinesIcon,\n [FileType.VIDEO]: PlayCircleIcon,\n};\n\n/**\n * Return an icon Vue component that can be used with a given File type @see FileType\n * @param file File object containing a type\n * @returns Icon for the respective type\n */\nexport function getFileIcon(file: FileObject) {\n return FILE_TYPE_ICON_MAP[file.type];\n}\n","import { type FileObject, FileType } from '@/components/file-uploader/file-uploader.types';\n\n/**\n * Returns the color to be used for the icon of a given type.\n *\n * @param file File with a given type\n * @returns Color to be used with their respective file type\n */\nexport function getFileIconColor(file: FileObject) {\n switch (file.type) {\n case FileType.COMPRESSED:\n case FileType.GENERIC:\n return 'grey';\n case FileType.PDF:\n case FileType.SLIDES:\n return 'orange';\n case FileType.TEXT:\n return 'blue';\n default:\n return 'green';\n }\n}\n","<template>\n <div class=\"b-file-uploader-file-card\" :class=\"conditionalClasses\">\n <div class=\"b-file-uploader-file-card__details\">\n <div class=\"b-file-uploader-file-card__info\">\n <file-uploader-file-card-animation\n :name=\"\n isVue2 ? 'b-file-uploader-file-card__animation' : 'b-file-uploader-file-card__animation--vue3'\n \"\n :show-file-icon=\"showFileIcon\"\n >\n <component\n :is=\"fileUploaderIcon\"\n :key=\"JSON.stringify(fileUploaderIcon)\"\n small\n class=\"b-file-uploader-file-card__icon\"\n :class=\"conditionalIconClasses\"\n data-testid=\"file-uploader-item-icon\"\n />\n </file-uploader-file-card-animation>\n\n <div ref=\"fileNameContainerRef\" class=\"b-file-uploader-file-card__file-name\">\n <bento-link\n :download=\"file.data.name\"\n :to=\"downloadUrl\"\n disable-typography\n is-not-routing\n variant=\"quiet\"\n >\n <bento-typography\n ref=\"fileNameRef\"\n v-bento-tooltip-directive=\"isFileNameTruncated ? file.data.name : null\"\n stronger\n el=\"span\"\n >\n {{ file.data.name }}\n </bento-typography>\n </bento-link>\n </div>\n\n <bento-typography v-if=\"file.progress\" el=\"span\">{{ progressLabel }}</bento-typography>\n <bento-typography v-else-if=\"file.data.size\" class=\"b-file-uploader-file-card__file-size\" el=\"span\">{{\n sizeLabel\n }}</bento-typography>\n </div>\n\n <bento-typography v-if=\"hasSizeError\" class=\"b-file-uploader-file-card__error-message\">\n {{ t('fileExceedsSizeLimit') }}\n </bento-typography>\n <bento-typography v-else-if=\"hasDimensionsError\" class=\"b-file-uploader-file-card__error-message\">\n {{ t('imageDimensionsExceedLimits') }}\n </bento-typography>\n <bento-typography\n v-else-if=\"hasTypeError && supportedFileTypes\"\n class=\"b-file-uploader-file-card__error-message\"\n >\n {{ t('fileTypeMustBe', { list: supportedFileTypes }) }}\n </bento-typography>\n </div>\n\n <div class=\"b-file-uploader-file-card__actions\">\n <bento-button v-if=\"hasLoadError\" variant=\"tertiary\" @click=\"emit('retry')\">\n <template #iconLeft>\n <refresh-icon :svg-title=\"t('retry')\" />\n </template>\n {{ t('retry') }}\n </bento-button>\n <bento-button v-if=\"isLoading || hasError\" variant=\"tertiary\" @click=\"emit('cancel')\">\n <template #iconLeft>\n <cross-icon :svg-title=\"t('cancel')\" />\n </template>\n </bento-button>\n <bento-button v-else variant=\"tertiary\" @click=\"emit('remove')\">\n <template #iconLeft>\n <bin-icon :svg-title=\"t('remove')\" />\n </template>\n </bento-button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, ref, watch } from 'vue';\n import { isVue2 } from 'vue-demi';\n import { FileUploaderFileCardAnimation } from './components';\n import BinIcon from '@adyen/ui-assets-icons-16/vue/bin';\n import CheckmarkCircleFilledIcon from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n import CrossIcon from '@adyen/ui-assets-icons-16/vue/cross';\n import RefreshIcon from '@adyen/ui-assets-icons-16/vue/refresh';\n import WarningFilledIcon from '@adyen/ui-assets-icons-16/vue/warning-filled';\n\n import { BentoTooltipDirective as vBentoTooltipDirective } from '@/directives';\n import { BentoButton } from '@/components/button';\n import { BentoLink } from '@/components/link';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\n import { BentoTypography } from '@/components/typography';\n import { useTruncatedFileName } from './composables/use-truncated-file-name';\n\n import { useI18n } from '@/utils/ts/i18n';\n import { formatFileSize } from '../../utils';\n import { getFileIcon, getFileIconColor } from './utils';\n import { FileState } from '@/components/file-uploader/file-uploader.types';\n import type { FileUploaderFileCardProps } from './file-uploader-file-card.types';\n import type { VueInstance } from '@/types';\n\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const ICON_TIMER = 1200;\n\n const props = withDefaults(defineProps<FileUploaderFileCardProps>(), {\n supportedFileTypes: null,\n });\n\n const emit = defineEmits<{\n /**\n * Triggered when the \"cancel\" button is clicked\n */\n (e: 'cancel'): void;\n\n /**\n * Triggered when the \"remove\" button is clicked\n */\n (e: 'remove'): void;\n\n /**\n * Triggered when the \"retry\" button is clicked\n */\n (e: 'retry'): void;\n }>();\n\n const { t, locale } = useI18n<{ message: MessageSchema }>({ messages });\n\n // If initial state is success, immediately show file icon\n const showFileIcon = ref(props.file.state === FileState.SUCCESS);\n\n const downloadUrl = computed(() => URL.createObjectURL(props.file.data));\n const hasError = computed(() => props.file.state.startsWith('error'));\n const hasLoadError = computed(() => props.file.state === FileState.ERROR_LOAD);\n const hasSizeError = computed(() => props.file.state === FileState.ERROR_SIZE);\n const hasDimensionsError = computed(() => props.file.state === FileState.ERROR_DIMENSIONS);\n const hasTypeError = computed(() => props.file.state === FileState.ERROR_TYPE);\n const isLoading = computed(() => props.file.state === FileState.LOADING);\n const progressLabel = computed(() => props.file.progress && `(${props.file.progress.toFixed(0)}%)`);\n const sizeLabel = computed(() => formatFileSize(locale.value, props.file.data.size));\n\n // Truncation tooltip\n const fileNameRef = ref<VueInstance>();\n const fileNameContainerRef = ref<HTMLDivElement>();\n const isFileNameTruncated = useTruncatedFileName(fileNameRef, fileNameContainerRef);\n\n const conditionalClasses = computed(() => ({\n 'b-file-uploader-file-card--error': hasError.value,\n }));\n\n const conditionalIconClasses = computed(() => ({\n [`b-file-uploader-file-card__icon--${getFileIconColor(props.file)}`]: showFileIcon.value,\n 'b-file-uploader-file-card__icon--error': hasError.value,\n }));\n\n // Compute the icon to be displayed\n const fileUploaderIcon = computed(() => {\n if (isLoading.value) {\n return BentoLoadingIndicator;\n }\n if (hasError.value) {\n return WarningFilledIcon;\n }\n return showFileIcon.value ? getFileIcon(props.file) : CheckmarkCircleFilledIcon;\n });\n\n // Animation when success icon turns to file icon.\n watch(\n () => props.file.state,\n value => {\n if (value === FileState.SUCCESS && !showFileIcon.value) {\n const changeTimer = setTimeout(() => {\n showFileIcon.value = true;\n clearTimeout(changeTimer);\n }, ICON_TIMER);\n }\n }\n );\n</script>\n\n<script lang=\"ts\">\n /**\n *\n * Individual file items that are listed inside \"bento-file-uploader\" that can\n * be retried, removed or cancelled as they are being uploaded.\n *\n * @example\n * import { FileUploaderFileCard, FileObject } from './';\n *\n * export default {\n * components: { FileUploaderFileCard },\n * template: `\n * <file-uploader-file-card\n * :file=\"file\"\n * supportedFileTypes=\"video files, image files\"\n * @retry=\"retryFile(file)\"\n * @cancel=\"removeFile(file)\"\n * @remove=\"removeFile(file)\"\n * />\n * `,\n * setup() {\n * const file = ref<FileObject>({\n * id: 'stub-file',\n * type: FileType.AUDIO,\n * data: new File(['blob'], 'File name'),\n * state: FileState.SUCCESS,\n * progress: 99,\n * });\n * }\n * }\n */\n export default {\n name: 'file-uploader-file-card',\n i18n: { messages },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./file-uploader-file-card.scss\" />\n","<template>\n <div class=\"b-file-uploader-restrictions\" :class=\"conditionalClasses\">\n <bento-typography v-if=\"supportedFileTypes\" :class=\"setRestrictionErrorClass(supportedFileTypes.error)\">\n {{ t('supportedFileTypes', { list: supportedFileTypes.value }) }}\n </bento-typography>\n <bento-typography v-if=\"maxSize\" :class=\"setRestrictionErrorClass(maxSize.error)\">\n {{ t('maxFileSize', { size: formatFileSize(locale, maxSize.value) }) }}\n </bento-typography>\n <bento-typography v-if=\"maxDimensions\" :class=\"setRestrictionErrorClass(maxDimensions.error)\">\n {{ maxDimensionsLabel }}\n </bento-typography>\n <bento-typography v-if=\"maxCount\" :class=\"setRestrictionErrorClass(maxCount.error)\">\n {{ tc('maxUpload', maxCount.value) }}\n </bento-typography>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue';\n import { BentoTypography } from '@/components/typography';\n import { useI18n } from '@/utils/ts/i18n';\n import { formatFileSize } from '../../utils';\n import type { FileUploaderRestrictionsProps } from './file-uploader-restrictions.types';\n\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const props = withDefaults(defineProps<FileUploaderRestrictionsProps>(), {\n condensed: null,\n disabled: null,\n maxCount: null,\n maxDimensions: null,\n maxSize: null,\n supportedFileTypes: null,\n });\n\n const { t, tc, locale } = useI18n<{ message: MessageSchema }>({ messages });\n\n const conditionalClasses = computed(() => ({\n ['b-file-uploader-restrictions--condensed']: props.condensed,\n ['b-file-uploader-restrictions--disabled']: props.disabled,\n }));\n\n /**\n * Returns the error class to be set if a restriction has an error\n * @param error Indicates if the restriction has errored\n * @returns Conditional error class\n */\n function setRestrictionErrorClass(error: boolean) {\n return {\n 'b-file-uploader-restrictions--error': error,\n };\n }\n\n const maxDimensionsLabel = computed(() => {\n if (!props.maxDimensions) {\n return null;\n }\n\n const {\n value: { width, height },\n } = props.maxDimensions;\n\n if (width && height) {\n return t('maxImageDimensions', { width, height });\n }\n if (width) {\n return t('maxImageWidth', { width });\n }\n if (height) {\n return t('maxImageHeight', { height });\n }\n return null;\n });\n</script>\n\n<script lang=\"ts\">\n /**\n * List of restrictions defined for \"bento-file-uploader\".\n *\n * @example\n * import { FileUploaderRestrictions } from './';\n *\n * export default {\n * components: { FileUploaderRestrictions },\n * template: `\n * <file-uploader-restrictions\n * :maxCount=\"1\"\n * :maxSize=\"5000\"\n * :maxDimensions=\"{ width: 100, height: 200 }\"\n * supportedFileTypes=\"audio/*,.pdf,.jpg\"\n * />\n * `\n * }\n */\n export default {\n i18n: { messages },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./file-uploader-restrictions.scss\" />\n","import { computed, Ref } from 'vue';\nimport { useI18n } from '@/utils/ts/i18n';\n\n/**\n * Transforms a list of accepted file types @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept}\n * into a human readable list of accepted types\n *\n * @param accept String containing a list of unique file type specifiers.\n * @returns String with types transformed to human readable text\n */\nexport function useFileTypeList(accept?: Ref<string>) {\n const { locale, t } = useI18n();\n\n const supportedFileTypeList = computed<string>(() => {\n const formatter = new Intl.ListFormat(locale.value, { style: 'short', type: 'unit' });\n\n return accept?.value\n ? formatter.format(\n accept.value.split(',').map(type => {\n const value = type.trim();\n switch (value) {\n case 'audio/*':\n return t('audioFiles');\n case 'image/*':\n return t('imageFiles');\n case 'video/*':\n return t('videoFiles');\n default:\n return value.toUpperCase();\n }\n })\n )\n : null;\n });\n\n return { supportedFileTypeList };\n}\n","<template>\n <div class=\"b-file-uploader\" :class=\"conditionalClasses\">\n <field-label\n :condensed=\"condensed\"\n :for=\"inputFieldId\"\n :label=\"label\"\n :optional=\"optional\"\n :required=\"required\"\n :tooltip-text=\"tooltipText\"\n class=\"b-file-uploader__label\"\n />\n\n <input\n :id=\"inputFieldId\"\n ref=\"input\"\n type=\"file\"\n tabindex=\"-1\"\n data-testid=\"input\"\n class=\"b-file-uploader__input\"\n :accept=\"accept\"\n :disabled=\"disabled\"\n :multiple=\"isMultiple\"\n @change=\"onInputChange\"\n />\n\n <div\n v-if=\"!hideArea\"\n class=\"b-file-uploader__area\"\n :aria-label=\"t('dropArea')\"\n :tabindex=\"disabled ? -1 : 0\"\n @click=\"input.click()\"\n @dragenter.stop.prevent=\"onDragEnter\"\n @dragleave.stop.prevent=\"onDragLeave\"\n @drop.stop.prevent=\"onDrop\"\n @dragover=\"onDragOver\"\n @keydown.enter.prevent.capture=\"input.click()\"\n @keydown.space.prevent.capture=\"input.click()\"\n >\n <div class=\"b-file-uploader__icon\">\n <warning-filled-icon v-if=\"hasError\" :svg-title=\"t('warning')\" />\n <upload-icon v-else :svg-title=\"t('upload')\" />\n </div>\n\n <template v-if=\"!condensed\">\n <bento-typography el=\"span\" strongest class=\"b-file-uploader__title\">\n {{ tc('dropFiles', +!isMultiple) }}\n </bento-typography>\n\n <bento-typography v-if=\"description\" el=\"span\" class=\"b-file-uploader__description\">\n {{ description }}\n </bento-typography>\n\n <file-uploader-restrictions v-bind=\"fileUploadRestrictionsProps\" />\n </template>\n\n <bento-button\n :disabled=\"disabled\"\n :variant=\"condensed ? 'tertiary' : 'secondary'\"\n condensed\n tabindex=\"-1\"\n class=\"b-file-uploader__button\"\n >\n {{ t('browseFiles') }}\n </bento-button>\n </div>\n\n <error-message\n v-if=\"hasError && errorMessage\"\n :id=\"errorId\"\n :error-message=\"errorMessage\"\n class=\"b-file-uploader__error-message\"\n />\n\n <bento-typography\n v-if=\"condensed && description\"\n el=\"span\"\n class=\"b-file-uploader__description b-file-uploader__description--condensed\"\n >\n {{ description }}\n </bento-typography>\n\n <file-uploader-restrictions v-if=\"condensed\" v-bind=\"fileUploadRestrictionsProps\" />\n\n <bento-alert v-if=\"maxFileError\" type=\"critical\" class=\"b-file-uploader__alert\">\n {{ t('tooManyFiles') }}\n <template #description>\n {{ t('youHaveExceededTheMaximum', { count: props.maxCount }) }}\n </template>\n </bento-alert>\n\n <div v-show=\"files?.length\" class=\"b-file-uploader__files\">\n <file-uploader-file-card\n v-for=\"file in files\"\n :key=\"file.id\"\n :file=\"file\"\n :supported-file-types=\"supportedFileTypeList\"\n @cancel=\"removeFile(file)\"\n @remove=\"removeFile(file)\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, reactive, ref, toRef, watch } from 'vue';\n import UploadIcon from '@adyen/ui-assets-icons-16/vue/upload';\n import WarningFilledIcon from '@adyen/ui-assets-icons-16/vue/warning-filled';\n\n import { BentoAlert } from '@/components/alert';\n import { BentoButton } from '@/components/button';\n import { BentoTypography } from '@/components/typography';\n import { ErrorMessage, FieldLabel } from '@/internal';\n import { FileUploaderFileCard } from './components/file-uploader-file-card';\n import { FileUploaderRestrictions } from './components/file-uploader-restrictions';\n\n import { useI18n } from '@/utils/ts/i18n';\n import { generateUid } from '@/core/utils/ts';\n import { getFileType, readFile } from './utils';\n import { useFileTypeList } from './composables';\n\n import { type BentoFileUploaderProps, FileObject, FileState, FileUploaderState } from './file-uploader.types';\n import type { FileUploaderRestrictionsProps } from '@/components/file-uploader/components/file-uploader-restrictions/file-uploader-restrictions.types';\n\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const props = withDefaults(defineProps<BentoFileUploaderProps>(), {\n accept: null,\n description: null,\n errorMessage: null,\n maxCount: 1, // One file by default\n maxDimensions: null,\n maxSize: null,\n modelValue: null,\n tooltipText: null,\n });\n\n const emit = defineEmits<{\n /**\n * Emit that emits the input value\n */\n (e: 'change', value?: FileList): void;\n\n /**\n * Emit that emits the input value\n */\n (e: 'update:modelValue', value?: FileList): void;\n }>();\n\n const { t, tc } = useI18n<{ message: MessageSchema }>({ messages });\n\n const inputFieldId = generateUid('input');\n const errorId = generateUid('input-error');\n const input = ref<HTMLInputElement>(null);\n\n // Prevents trigerring \"dragleave\" events on children elements\n const enterTarget = ref<EventTarget>();\n\n const dragState = reactive({\n dragging: false,\n error: false,\n });\n\n const files = ref<Array<FileObject>>(null);\n const { supportedFileTypeList } = useFileTypeList(toRef(props, 'accept'));\n\n const maxFileError = ref(false);\n\n const hasError = computed(() => !!props.errorMessage || dragState.error);\n const isMultiple = computed(() => props.maxCount > 1);\n\n const conditionalClasses = computed(() => ({\n [`b-file-uploader--${FileUploaderState.DISABLED}`]: props.disabled,\n [`b-file-uploader--${FileUploaderState.DRAG_OVER}`]: dragState.dragging,\n [`b-file-uploader--${FileUploaderState.ERROR}`]: hasError.value,\n [`b-file-uploader--condensed`]: props.condensed,\n }));\n\n const hideArea = computed(() => {\n return props.maxCount && files.value?.length >= props.maxCount;\n });\n\n const fileUploadRestrictionsProps = computed<FileUploaderRestrictionsProps>(() => ({\n condensed: props.condensed,\n disabled: props.disabled,\n maxCount: isMultiple.value\n ? {\n value: props.maxCount,\n error: maxFileError.value,\n }\n : null,\n maxDimensions: props.maxDimensions\n ? {\n value: props.maxDimensions,\n error: files.value?.some(file => file.state === FileState.ERROR_DIMENSIONS),\n }\n : null,\n maxSize: props.maxSize\n ? {\n value: props.maxSize,\n error: files.value?.some(file => file.state === FileState.ERROR_SIZE),\n }\n : null,\n supportedFileTypes: supportedFileTypeList.value\n ? {\n value: supportedFileTypeList.value,\n error: files.value?.some(file => file.state === FileState.ERROR_TYPE),\n }\n : null,\n }));\n\n function verifyFileCount(fileList: Array<FileObject>) {\n const isValid = props.maxCount && fileList.length <= props.maxCount;\n maxFileError.value = !isValid;\n }\n\n function verifyFileSize(fileList: Array<FileObject>) {\n if (props.maxSize) {\n fileList.forEach(file => {\n const item = file; // Prevent eslint no-param-reassign\n if (item.data.size > props.maxSize) {\n item.state = FileState.ERROR_SIZE;\n }\n });\n }\n }\n\n function onDragOver(event: DragEvent) {\n event.preventDefault();\n\n // Disable drag n drop and change the cursor if disabled\n if (props.disabled) {\n // eslint-disable-next-line no-param-reassign\n event.dataTransfer.dropEffect = 'none';\n }\n }\n\n /**\n * Creates a FileObject from a native File and tracks its client-load progress.\n * @param file The native File object.\n * @returns A FileObject.\n */\n function processFile(file: File) {\n const fileObject = reactive<FileObject>({\n id: generateUid('file'),\n data: file,\n state: FileState.LOADING,\n type: getFileType(file),\n progress: null,\n });\n readFile(fileObject, props.accept, props.maxDimensions);\n return fileObject;\n }\n\n function onFileInput(fileList: FileList | Array<File>) {\n // if (props.multiple) {\n if (isMultiple.value) {\n // Add the new files to the file selection.\n // Removing files should be done by interacting with the file list below the area.\n files.value = [...(files.value || []), ...Array.from(fileList).map(file => processFile(file))];\n } else {\n files.value = [processFile(fileList[0])];\n }\n }\n\n function onInputChange() {\n // Prevent adding many files if maxCount is 1\n if (props.maxCount === 1 && input.value.files?.length > props.maxCount) {\n resetDragState();\n return;\n }\n\n if (input.value.files?.length) {\n onFileInput(input.value.files);\n }\n\n // Reset input value\n input.value.value = '';\n }\n\n function resetDragState() {\n // Reset enter target when drop and dragleave are called\n enterTarget.value = null;\n\n // Prevent changing state if disabled\n if (props.disabled) {\n return;\n }\n\n dragState.dragging = false;\n dragState.error = false;\n }\n\n function onDragEnter(event: DragEvent) {\n // Set the \"dragarea\" as target\n enterTarget.value = event.target;\n\n // Prevent changing state if disabled\n if (props.disabled) {\n return;\n }\n\n dragState.dragging = true;\n\n if (!event.dataTransfer.types.includes('Files') || event.dataTransfer.items?.length > props.maxCount) {\n dragState.error = true;\n }\n }\n\n function onDragLeave(event: DragEvent) {\n // If target enter and leave are the same it means the drag has left the \"dragarea\"\n if (enterTarget.value === event.target) {\n resetDragState();\n }\n }\n\n function onDrop(event: DragEvent) {\n // Prevent events when the input is disabled\n if (props.disabled) {\n return;\n }\n\n // Prevent adding many files if maxCount is 1\n if (props.maxCount === 1 && event.dataTransfer.files?.length > props.maxCount) {\n resetDragState();\n return;\n }\n\n if (event.dataTransfer.files?.length) {\n onFileInput(event.dataTransfer.files);\n }\n resetDragState();\n }\n\n function removeFile(file: FileObject) {\n files.value = files.value.filter(({ id }) => id !== file.id);\n }\n\n function convertToFileList(fileList: Array<FileObject>) {\n // Filter out files with errors\n const validFiles = fileList.filter(\n ({ state }) => state !== FileState.ERROR_LOAD && state !== FileState.ERROR_SIZE\n );\n\n if (validFiles.length) {\n const dataTransfer = new DataTransfer();\n validFiles.forEach(({ data }) => dataTransfer.items.add(data));\n return dataTransfer.files;\n }\n return undefined;\n }\n\n watch(files, newList => {\n if (newList) {\n verifyFileCount(newList);\n verifyFileSize(newList);\n\n const value = convertToFileList(newList);\n\n emit('change', value);\n emit('update:modelValue', value);\n } else {\n emit('change');\n emit('update:modelValue');\n }\n });\n</script>\n\n<script lang=\"ts\">\n /**\n * The file uploader component enables users to upload one or multiple files from their device to our system.\n *\n * @example\n * import { BentoFileUploader, type BentoFileValue } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFileUploader },\n * template: `\n * <bento-file-uploader\n * accept=\"image/*,video/*,.pdf,.png\"\n * condensed\n * description=\"Custom supporting text\"\n * disabled\n * errorMessage=\"Custom error message\"\n * label=\"Bento file uploader\"\n * :maxCount=\"1\"\n * :maxDimensions=\"{ width: 200, height: 100 }\"\n * :maxSize=\"1000\"\n * v-model=\"files\"\n * multiple\n * :optional=\"false\"\n * required\n * tooltipText=\"Useful information\"\n * />\n * `,\n * setup() {\n * const files = ref<BentoFileValue>()\n * }\n * }\n */\n export default {\n model: { prop: 'modelValue' },\n i18n: { messages },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./file-uploader.scss\" />\n"],"names":["uuid$a","openBlock","createElementBlock","mergeProps","_ctx","createCommentVNode","uuid$9","useTruncatedFileName","target","container","isContainerTruncating","ref","observer","disconnectObserver","onUnmounted","onMounted","entries","UNITS","formatFileSize","locale","size","unitIndex","bytes","FileState","FileState2","FileUploaderState","FileUploaderState2","FileType","FileType2","textFileExtraTypes","tableFileTypes","slidesFileTypes","compressedFileTypes","getFileType","file","isFileTypeAccepted","accept","acceptPatterns","type","pattern","category","readFile","fileObject","maxDimensions","reader","event","blob","url","img","uuid$8","_hoisted_2$3","_hoisted_3$3","uuid$7","uuid$6","uuid$5","uuid$4","uuid$3","uuid$2","_hoisted_2$2","_hoisted_3$2","uuid$1","uuid","FILE_TYPE_ICON_MAP","SoundIcon","FolderIcon","AttachmentIcon","ImageIcon","DocumentIcon","CollectionIcon","TableIcon","DocumentLinesIcon","PlayCircleIcon","getFileIcon","getFileIconColor","__default__$2","messages$2","props","__props","emit","__emit","t","useI18n","showFileIcon","downloadUrl","computed","hasError","hasLoadError","hasSizeError","hasDimensionsError","hasTypeError","isLoading","progressLabel","sizeLabel","fileNameRef","fileNameContainerRef","isFileNameTruncated","conditionalClasses","conditionalIconClasses","fileUploaderIcon","BentoLoadingIndicator","WarningFilledIcon","CheckmarkCircleFillIcon","watch","value","changeTimer","__default__$1","messages$1","tc","setRestrictionErrorClass","error","maxDimensionsLabel","width","height","useFileTypeList","formatter","__default__","messages","inputFieldId","generateUid","errorId","input","enterTarget","dragState","reactive","files","supportedFileTypeList","toRef","maxFileError","isMultiple","hideArea","_a","fileUploadRestrictionsProps","_b","_c","verifyFileCount","fileList","isValid","verifyFileSize","item","onDragOver","processFile","onFileInput","onInputChange","resetDragState","onDragEnter","onDragLeave","onDrop","removeFile","id","convertToFileList","validFiles","state","dataTransfer","data","newList"],"mappings":"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","x_google_ignoreList":[0,1,7,8,9,10,11,12,13,14,15]}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { defineComponent as I, useSlots as k, computed as r, openBlock as o, createBlock as l, normalizeClass as L, withModifiers as A, createSlots as h, withCtx as c, renderSlot as u, unref as s, createElementVNode as N, createCommentVNode as B } from "vue";
|
|
2
|
-
import { B as F } from "./loading-indicator.N_WV9Gwz.js";
|
|
3
|
-
import { B as i } from "./button.pwNCxwPu.js";
|
|
4
|
-
import { C as O } from "./cross-circle-fill.DN5b3_eL.js";
|
|
5
|
-
import { C as T } from "./checkmark-circle-fill.ClIf1E3H.js";
|
|
6
|
-
import { u as $ } from "./use-has-slot.B7eQSabc.js";
|
|
7
|
-
import { u as D } from "./i18n.CPGoe9tN.js";
|
|
8
|
-
import { _ as G } from "./_plugin-vue_export-helper.CHgC5LLL.js";
|
|
9
|
-
import "../assets/loading-button.css";
|
|
10
|
-
var a = /* @__PURE__ */ ((t) => (t.START = "start", t.LOADING = "loading", t.SUCCESS = "success", t.FAIL = "fail", t))(a || {});
|
|
11
|
-
const f = {
|
|
12
|
-
"en-US": {
|
|
13
|
-
failed: "Failed",
|
|
14
|
-
succeded: "Succeded"
|
|
15
|
-
},
|
|
16
|
-
"pt-BR": {
|
|
17
|
-
failed: "Falha"
|
|
18
|
-
},
|
|
19
|
-
"ja-JP": {
|
|
20
|
-
failed: "失敗しました"
|
|
21
|
-
}
|
|
22
|
-
}, E = {
|
|
23
|
-
class: "b-loading-button__icon",
|
|
24
|
-
"data-testid": "loading-button-rotating-icon"
|
|
25
|
-
}, R = {
|
|
26
|
-
i18n: { messages: f }
|
|
27
|
-
}, U = /* @__PURE__ */ I({
|
|
28
|
-
...R,
|
|
29
|
-
__name: "loading-button",
|
|
30
|
-
props: {
|
|
31
|
-
/**
|
|
32
|
-
* Reduces sizing of button
|
|
33
|
-
*/
|
|
34
|
-
condensed: {
|
|
35
|
-
type: i.props.condensed.type,
|
|
36
|
-
default: !1
|
|
37
|
-
},
|
|
38
|
-
/**
|
|
39
|
-
* Displays loading-button as critical
|
|
40
|
-
*/
|
|
41
|
-
critical: {
|
|
42
|
-
type: i.props.critical.type,
|
|
43
|
-
default: !1
|
|
44
|
-
},
|
|
45
|
-
/**
|
|
46
|
-
* Disables button functonality
|
|
47
|
-
*/
|
|
48
|
-
disabled: {
|
|
49
|
-
type: i.props.disabled.type,
|
|
50
|
-
default: !1
|
|
51
|
-
},
|
|
52
|
-
/**
|
|
53
|
-
* Sets color set to inverse
|
|
54
|
-
*/
|
|
55
|
-
inverse: {
|
|
56
|
-
type: Boolean,
|
|
57
|
-
default: !1
|
|
58
|
-
},
|
|
59
|
-
/**
|
|
60
|
-
* State of the button.
|
|
61
|
-
* @values start, loading, success, fail
|
|
62
|
-
*/
|
|
63
|
-
state: {
|
|
64
|
-
type: String,
|
|
65
|
-
default: a.START,
|
|
66
|
-
validator: (t) => Object.values(a).includes(t)
|
|
67
|
-
},
|
|
68
|
-
/**
|
|
69
|
-
* Types of flavour of Button
|
|
70
|
-
*/
|
|
71
|
-
variant: {
|
|
72
|
-
type: i.props.variant.type,
|
|
73
|
-
default: "primary",
|
|
74
|
-
validator: i.props.variant.validator
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
emits: ["click"],
|
|
78
|
-
setup(t, { emit: v }) {
|
|
79
|
-
const e = t, m = v, p = k(), b = $(p), { t: d } = D({ messages: f }), C = r(() => ({
|
|
80
|
-
[`b-loading-button--${e.variant}-${a.LOADING}`]: e.state === a.LOADING && !e.disabled,
|
|
81
|
-
"b-loading-button--loading": e.state === a.LOADING && !e.disabled,
|
|
82
|
-
[`b-loading-button--${e.variant}-${a.SUCCESS}`]: e.state === a.SUCCESS,
|
|
83
|
-
"b-loading-button--inverse": e.inverse
|
|
84
|
-
})), g = r(
|
|
85
|
-
() => e.variant === "primary" && !e.inverse || e.variant !== "primary" && e.inverse
|
|
86
|
-
), y = r(
|
|
87
|
-
() => e.critical && e.state === a.START || e.state === a.FAIL
|
|
88
|
-
), S = (n) => {
|
|
89
|
-
n.stopPropagation(), e.state !== a.LOADING && m("click", n);
|
|
90
|
-
};
|
|
91
|
-
return (n, j) => (o(), l(i, {
|
|
92
|
-
critical: y.value,
|
|
93
|
-
variant: t.variant,
|
|
94
|
-
condensed: t.condensed,
|
|
95
|
-
disabled: t.disabled,
|
|
96
|
-
inverse: t.inverse,
|
|
97
|
-
class: L(["b-loading-button", C.value]),
|
|
98
|
-
onClickCapture: A(S, ["stop"])
|
|
99
|
-
}, h({
|
|
100
|
-
default: c(() => [
|
|
101
|
-
u(n.$slots, "default", {}, void 0, !0)
|
|
102
|
-
]),
|
|
103
|
-
_: 2
|
|
104
|
-
}, [
|
|
105
|
-
t.state === "start" && s(b)("iconLeft") ? {
|
|
106
|
-
name: "iconLeft",
|
|
107
|
-
fn: c(() => [
|
|
108
|
-
u(n.$slots, "iconLeft", {}, void 0, !0)
|
|
109
|
-
]),
|
|
110
|
-
key: "0"
|
|
111
|
-
} : t.state !== "start" ? {
|
|
112
|
-
name: "iconLeft",
|
|
113
|
-
fn: c(() => [
|
|
114
|
-
N("span", E, [
|
|
115
|
-
t.state === "fail" ? (o(), l(s(O), {
|
|
116
|
-
key: 0,
|
|
117
|
-
"svg-title": s(d)("failed")
|
|
118
|
-
}, null, 8, ["svg-title"])) : t.state === "success" ? (o(), l(s(T), {
|
|
119
|
-
key: 1,
|
|
120
|
-
"svg-title": s(d)("succeded")
|
|
121
|
-
}, null, 8, ["svg-title"])) : t.state === "loading" ? (o(), l(s(F), {
|
|
122
|
-
key: 2,
|
|
123
|
-
small: "",
|
|
124
|
-
inverse: g.value
|
|
125
|
-
}, null, 8, ["inverse"])) : B("", !0)
|
|
126
|
-
])
|
|
127
|
-
]),
|
|
128
|
-
key: "1"
|
|
129
|
-
} : void 0
|
|
130
|
-
]), 1032, ["critical", "variant", "condensed", "disabled", "inverse", "class"]));
|
|
131
|
-
}
|
|
132
|
-
}), q = /* @__PURE__ */ G(U, [["__scopeId", "data-v-07b9c537"]]);
|
|
133
|
-
export {
|
|
134
|
-
q as B,
|
|
135
|
-
a
|
|
136
|
-
};
|
|
137
|
-
//# sourceMappingURL=loading-button.CNWhVIPK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loading-button.CNWhVIPK.js","sources":["../../../core/src/components/loading-button/loading-button.types.ts","../../../vue2/src/components/button/components/loading-button/loading-button.vue"],"sourcesContent":["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","<template>\n <bento-button\n :critical=\"isCritical\"\n :variant=\"variant\"\n :condensed=\"condensed\"\n :disabled=\"disabled\"\n :inverse=\"inverse\"\n class=\"b-loading-button\"\n :class=\"conditionalClasses\"\n @click.capture.stop=\"onClick\"\n >\n <slot></slot>\n\n <template v-if=\"state === 'start' && hasSlot('iconLeft')\" #iconLeft>\n <slot name=\"iconLeft\"></slot>\n </template>\n <template v-else-if=\"state !== 'start'\" #iconLeft>\n <span class=\"b-loading-button__icon\" data-testid=\"loading-button-rotating-icon\">\n <cross v-if=\"state === 'fail'\" :svg-title=\"t('failed')\" />\n <checkmark v-else-if=\"state === 'success'\" :svg-title=\"t('succeded')\" />\n <!-- TODO: Replace with new loading-indicator component -->\n <bento-loading-indicator v-else-if=\"state === 'loading'\" small :inverse=\"isInverseLoadingIndicator\" />\n </span>\n </template>\n </bento-button>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, PropType, useSlots } from 'vue';\n import { BentoLoadingButtonState } from '@/core/components/loading-button/loading-button.types';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\n import BentoButton from '@/components/button/button.vue';\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 import { useHasSlot } from '@/composables/use-has-slot/use-has-slot';\n\n import { useI18n } from '@/utils/ts/i18n';\n\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const props = defineProps({\n /**\n * Reduces sizing of button\n */\n condensed: {\n type: BentoButton.props.condensed.type,\n default: false,\n },\n\n /**\n * Displays loading-button as critical\n */\n critical: {\n type: BentoButton.props.critical.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 * Sets color set to inverse\n */\n inverse: {\n type: Boolean,\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 | `${BentoLoadingButtonState}`>,\n default: BentoLoadingButtonState.START,\n validator: (value: BentoLoadingButtonState) => Object.values(BentoLoadingButtonState).includes(value),\n },\n\n /**\n * Types of flavour of Button\n */\n variant: {\n type: BentoButton.props.variant.type,\n default: 'primary',\n validator: BentoButton.props.variant.validator,\n },\n });\n\n const emit = defineEmits<{\n /**\n * Click event handler\n */\n (e: 'click', event: MouseEvent): void;\n }>();\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n\n const conditionalClasses = computed(() => ({\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.LOADING}`]:\n props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n 'b-loading-button--loading': props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.SUCCESS}`]:\n props.state === BentoLoadingButtonState.SUCCESS,\n [`b-loading-button--inverse`]: props.inverse,\n }));\n\n const isInverseLoadingIndicator = computed(\n () => (props.variant === 'primary' && !props.inverse) || (props.variant !== 'primary' && props.inverse)\n );\n const isCritical = computed(\n () =>\n (props.critical && props.state === BentoLoadingButtonState.START) ||\n props.state === BentoLoadingButtonState.FAIL\n );\n\n const onClick = (e: MouseEvent) => {\n // Prevent Vue3 from triggering event twice\n e.stopPropagation();\n\n if (props.state !== BentoLoadingButtonState.LOADING) {\n emit('click', e);\n }\n };\n</script>\n\n<script lang=\"ts\">\n /**\n * Loading Button component is used for cases where pressing a button starts an event that requires a loading state, e.g. when you have any sort of asynchronous action and are waiting for a response\n *\n * @example\n * import { BentoLoadingButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoLoadingButton },\n * template: `\n * <bento-loading-button state=\"loading\" variant=\"secondary\">\n * Loading\n * </bento-loading button>\n * `\n * }\n */\n export default {\n i18n: { messages },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"@/core/components/loading-button/loading-button.scss\" />\n"],"names":["BentoLoadingButtonState","BentoLoadingButtonState2","__default__","messages","props","__props","emit","__emit","slots","useSlots","hasSlot","useHasSlot","t","useI18n","conditionalClasses","computed","isInverseLoadingIndicator","isCritical","onClick","e"],"mappings":";;;;;;;;;AAAY,IAAAA,IAAA,kBAAAC,OACRA,EAAA,QAAA,SACAA,EAAA,UAAA,WACAA,EAAA,UAAA,WACAA,EAAA,OAAA,QAJQA,IAAAD,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;GCsJRE,IAAA;AAAA,EAAe,MAAA,EAAA,UAAAC,EAAA;AAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA9GA,UAAAC,IAAAC,GAqDAC,IAAAC,GAOAC,IAAAC,EAAA,GACAC,IAAAC,EAAAH,CAAA,GACA,EAAA,GAAAI,EAAA,IAAAC,EAAA,EAAA,UAAAV,EAAA,CAAA,GAEAW,IAAAC,EAAA,OAAA;AAAA,MAA2C,CAAA,qBAAAX,EAAA,OAAA,IAAAJ,EAAA,OAAA,EAAA,GAAAI,EAAA,UAAAJ,EAAA,WAAA,CAAAI,EAAA;AAAA,MAEuB,6BAAAA,EAAA,UAAAJ,EAAA,WAAA,CAAAI,EAAA;AAAA,MACyB,CAAA,qBAAAA,EAAA,OAAA,IAAAJ,EAAA,OAAA,EAAA,GAAAI,EAAA,UAAAJ,EAAA;AAAA,MAE3C,6BAAAI,EAAA;AAAA,IACP,EAAA,GAGzCY,IAAAD;AAAA,MAAkC,MAAAX,EAAA,YAAA,aAAA,CAAAA,EAAA,WAAAA,EAAA,YAAA,aAAAA,EAAA;AAAA,IACiE,GAEnGa,IAAAF;AAAA,MAAmB,MAAAX,EAAA,YAAAA,EAAA,UAAAJ,EAAA,SAAAI,EAAA,UAAAJ,EAAA;AAAA,IAG6B,GAGhDkB,IAAA,CAAAC,MAAA;AAEI,MAAAA,EAAA,gBAAA,GAEAf,EAAA,UAAAJ,EAAA,WACIM,EAAA,SAAAa,CAAA;AAAA,IACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"menu.BpqOdkxR.js","sources":["../../../vue2/src/components/menu/components/menu-item/menu-item.vue","../../../vue2/src/components/menu/menu.types.ts","../../../vue2/src/components/data-grid/components/data-grid-cell/data-grid-cell.keys.ts","../../../vue2/src/components/menu/components/menu-list-container/menu-list-container.vue","../../../vue2/src/components/menu/components/sub-menu-item-list/sub-menu-item-list.vue","../../../vue2/src/components/menu/components/menu-item-list/menu-item-list.vue","../../../vue2/src/components/menu/menu.keys.ts","../../../../node_modules/.pnpm/@adyen+ui-assets-icons-16@4.1.0_vue@2.7.16/node_modules/@adyen/ui-assets-icons-16/dist/vue/options-vertical.vue","../../../vue2/src/components/menu/menu.vue"],"sourcesContent":["<template>\n <base-button\n class=\"b-menu-item\"\n role=\"menuitem\"\n :class=\"conditionalClasses\"\n :disabled=\"disabled\"\n tabindex=\"-1\"\n @click=\"onClick\"\n >\n <template v-if=\"icon\" #iconLeft>\n <component :is=\"icon\" class=\"b-menu-item__icon-left\" aria-hidden=\"true\" />\n </template>\n <template #default>\n <bento-typography el=\"span\" variant=\"body\" :stronger=\"isTitle\" class=\"b-menu-item__primary-text\">\n {{ text }}\n </bento-typography>\n <bento-typography v-if=\"secondaryText\" el=\"span\" variant=\"body\" class=\"b-menu-item__secondary-text\">\n {{ secondaryText }}\n </bento-typography>\n </template>\n <template v-if=\"chevron\" #iconRight><chevron-right-icon aria-hidden=\"true\" /></template>\n </base-button>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import ChevronRightIcon from '@adyen/ui-assets-icons-16/vue/chevron-right';\n import { BaseButton, BentoBaseButtonEvent } from '@/components/internal/base-button';\n import { BentoTypography } from '@/components/typography';\n import { BentoMenuItem } from './menu-item.types';\n\n /**\n * Menu item component to render items in a menu. For internal use only.\n */\n export default defineComponent({\n name: 'menu-item',\n components: { BaseButton, BentoTypography, ChevronRightIcon },\n props: {\n /**\n * menu-item text that gets displayed as the main label\n */\n text: {\n type: String,\n required: true,\n },\n /**\n * menu-item action that gets executed when the MeniItem is clicked\n */\n handler: {\n type: Function as PropType<BentoMenuItem['handler']>,\n required: true,\n },\n /**\n * menu-item text that gets displayed as the secondary label\n */\n secondaryText: {\n type: String,\n default: null,\n },\n /**\n * Optional chevron icon displayed to the right of the menu-item\n */\n chevron: {\n type: Boolean,\n default: false,\n },\n /**\n * Optional icon displayed to the left of the menu-item\n */\n icon: {\n // Types for Vue2 (Object) and Vue3 (Function)\n // TODO: Remove Object when fully migrated to Vue3\n type: [Object, Function] as PropType<BentoMenuItem['icon']>,\n default: null,\n },\n /**\n * Disables menu-item button functionality\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * Displays an indent variant od the menu-item\n */\n indent: {\n type: Boolean,\n default: false,\n },\n /**\n * Displays menu-item button as critical\n */\n critical: {\n type: Boolean,\n default: false,\n },\n /**\n * Renders the text in a bold variant\n */\n isTitle: {\n type: Boolean,\n default: false,\n },\n },\n emits: [BentoBaseButtonEvent.CLICK],\n setup(props, { emit }) {\n const conditionalClasses = computed(() => ({\n 'b-menu-item--critical': props.critical,\n 'b-menu-item--indent': props.indent,\n }));\n\n const onClick = (e: MouseEvent) => {\n e.stopPropagation();\n props.handler();\n emit(BentoBaseButtonEvent.CLICK);\n };\n\n return {\n // Values\n conditionalClasses,\n\n // Methods\n onClick,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./menu-item.scss\" />\n","import { BentoButton } from '../button';\n\nexport * from './components/menu-item/menu-item.types';\n\nexport enum BentoMenuEvent {\n BACK = 'back',\n CLOSE = 'close',\n OPEN = 'open',\n}\n\ntype ButtonProps = InstanceType<typeof BentoButton>['$props'];\n\nexport type BentoMenuButtonProps = {\n variant?: ButtonProps['variant'];\n condensed?: ButtonProps['condensed'];\n disabled?: ButtonProps['disabled'];\n};\n","export const DATA_GRID_CELL_MENU_REGISTERING_INJECTION_KEY = Symbol('menu registering injection key');\n","<template>\n <div\n ref=\"menuListContainerRef\"\n class=\"b-menu-list-container\"\n data-testid=\"menu-list-container\"\n v-on=\"menuListContainerEvents\"\n ><slot></slot\n ></div>\n</template>\n\n<script setup lang=\"ts\">\n import { DATA_GRID_CELL_MENU_REGISTERING_INJECTION_KEY } from '@/components/data-grid/components/data-grid-cell/data-grid-cell.keys';\n import { inject, ref } from 'vue';\n import type { DataGridCellRegisterMenu } from '@/components/data-grid/components/data-grid-cell/data-grid-cell.types';\n\n const menuListContainerRef = ref<HTMLDivElement>();\n const menuListContainerEvents = ref({});\n const registeringAndMousingOut = inject<DataGridCellRegisterMenu | false>(\n DATA_GRID_CELL_MENU_REGISTERING_INJECTION_KEY,\n false\n );\n\n // This is needed by the DataGridCell component in order to keep track of if a teleported menu\n // is being hovered over in the DataGridCellActions.\n if (registeringAndMousingOut) {\n const { registerMenuContainerElement } = registeringAndMousingOut;\n registerMenuContainerElement(menuListContainerRef);\n menuListContainerEvents.value = {\n mouseleave: registeringAndMousingOut?.menuMouseLeave,\n };\n }\n</script>\n\n<script lang=\"ts\">\n /**\n * Menu list container component to set the correct styling in a menu list. For internal use only.\n */\n export default {\n name: 'bento-menu-list-container',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./menu-list-container.scss\" />\n","<template>\n <transition name=\"b-sub-menu-item-list__transition\" appear>\n <menu-list-container class=\"b-sub-menu-item-list\">\n <ul\n ref=\"subMenuItemListRefLocal\"\n role=\"menu\"\n class=\"b-sub-menu-item-list__list\"\n @keydown.down.stop=\"focusNext\"\n @keydown.up.stop=\"focusPrevious\"\n @keydown.esc.stop=\"onBackButton\"\n >\n <li v-for=\"(item, index) in computedItems\" :key=\"`sub-menu-item-list-item-${index}`\" role=\"none\">\n <menu-item\n :text=\"item.text\"\n :handler=\"item.handler\"\n :secondary-text=\"item.secondaryText\"\n :icon=\"item.icon\"\n :is-title=\"item.isTitle\"\n :disabled=\"item.disabled\"\n :critical=\"item.critical\"\n :indent=\"item.indent\"\n :tabindex=\"index === subMenuFocusedIndex ? '0' : '-1'\"\n @click=\"item.clickHandler\"\n />\n <bento-divider v-if=\"item.addDivider\" class=\"b-sub-menu-item-list__divider\" />\n </li>\n </ul>\n </menu-list-container>\n </transition>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType, ref } from 'vue';\n import { BentoDivider } from '@/components/divider';\n import { BentoMenuItem, MenuItem } from '../menu-item';\n import MenuListContainer from '../menu-list-container/menu-list-container.vue';\n import ChevronLeftIcon from '@adyen/ui-assets-icons-16/vue/chevron-left';\n import { BentoMenuEvent } from '../../menu.types';\n import messages from '../../messages.json';\n\n /**\n * SubMenuItemList component to render a submenu with the sliding transition. For internal use only.\n */\n export default defineComponent({\n i18n: { messages },\n name: 'sub-menu-item-list',\n components: { BentoDivider, MenuItem, MenuListContainer },\n props: {\n items: {\n type: Array as PropType<BentoMenuItem[]>,\n required: true,\n },\n title: {\n type: String,\n required: true,\n },\n },\n emits: [BentoMenuEvent.CLOSE, BentoMenuEvent.BACK],\n setup(props, { emit }) {\n const subMenuItemListRefLocal = ref(null);\n const subMenuFocusedIndex = ref(0);\n const numberOfItems = ref(props.items.length);\n\n const closeMenu = () => emit(BentoMenuEvent.CLOSE);\n\n const onBackButton = () => emit(BentoMenuEvent.BACK);\n\n const computedItems = computed(() => {\n const items = props.items?.map(el => ({\n ...el,\n indent: !el.icon,\n isTitle: false,\n clickHandler: closeMenu,\n }));\n return [\n {\n text: props.title,\n secondaryText: null,\n critical: false,\n icon: ChevronLeftIcon,\n isTitle: true,\n disabled: false,\n indent: false,\n handler: onBackButton,\n clickHandler: onBackButton,\n addDivider: true,\n },\n ...items,\n ];\n });\n\n const focusItem = async () => {\n subMenuItemListRefLocal.value?.children?.[subMenuFocusedIndex.value]?.children?.[0]?.focus();\n };\n\n onMounted(async () => {\n // Using setTimeout otherwise the sliding animation doesn't work anymore. The timeout imer is the same as the transition time (0.15s)\n setTimeout(() => focusItem(), 150);\n });\n\n const focusPrevious = () => {\n if (subMenuFocusedIndex.value > 0) {\n subMenuFocusedIndex.value -= 1;\n if (computedItems.value[subMenuFocusedIndex.value].disabled) {\n focusPrevious();\n }\n } else {\n subMenuFocusedIndex.value = numberOfItems.value;\n }\n focusItem();\n };\n\n const focusNext = () => {\n if (subMenuFocusedIndex.value < numberOfItems.value) {\n subMenuFocusedIndex.value += 1;\n if (computedItems.value[subMenuFocusedIndex.value].disabled) {\n focusNext();\n }\n } else {\n subMenuFocusedIndex.value = 0;\n }\n focusItem();\n };\n\n return {\n // Enums\n BentoMenuEvent,\n\n // Values\n subMenuItemListRefLocal,\n subMenuFocusedIndex,\n ChevronLeftIcon,\n computedItems,\n\n // Methods\n closeMenu,\n onBackButton,\n focusPrevious,\n focusNext,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./sub-menu-item-list.scss\" />\n","<template>\n <menu-list-container ref=\"menuItemListWrapperRef\" :style=\"{ height: computedHeight }\">\n <ul\n ref=\"menuItemListRef\"\n class=\"b-menu-item-list\"\n role=\"menu\"\n @keydown.down=\"focusNext\"\n @keydown.up=\"focusPrevious\"\n @keydown.esc=\"closeMenu\"\n @keydown.tab=\"closeMenu\"\n >\n <li\n v-for=\"(item, index) in computedData\"\n :key=\"`menu-item-${index}`\"\n class=\"b-menu-item-list__item\"\n role=\"none\"\n @keydown.right=\"focusRight(item, index)\"\n @keydown.left=\"focusLeft()\"\n >\n <menu-item\n :text=\"item.text\"\n :handler=\"!item.items?.length ? item.handler : () => null\"\n :secondary-text=\"item.secondaryText\"\n :icon=\"item.icon\"\n :chevron=\"!!item.items?.length\"\n :disabled=\"item.disabled\"\n :critical=\"item.critical\"\n :indent=\"item.indent\"\n :tabindex=\"index === subMenuFocusedIndex ? '0' : '-1'\"\n :aria-haspopup=\"!!item.items?.length\"\n :aria-expanded=\"showSubMenu && visibleSubMenuIndex === index\"\n @click=\"menuItemClick(item, index)\"\n />\n <bento-divider v-if=\"item.addDivider\" class=\"b-menu-item-list__divider\" />\n <sub-menu-item-list\n v-if=\"item.items?.length && showSubMenu && visibleSubMenuIndex === index\"\n ref=\"subMenuItemListRef\"\n :items=\"item.items\"\n :title=\"item.text\"\n @back=\"onBackButton\"\n @close=\"closeMenu\"\n />\n </li>\n </ul>\n </menu-list-container>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref } from 'vue';\n import { BentoDivider } from '@/components/divider';\n import { BentoMenuItem, MenuItem } from '../menu-item';\n import { BentoMenuEvent } from '../../menu.types';\n import MenuListContainer from '../menu-list-container/menu-list-container.vue';\n import SubMenuItemList from '../sub-menu-item-list/sub-menu-item-list.vue';\n\n /**\n * MenuItem list to be used in the Menu component. For internal use only.\n */\n export default defineComponent({\n name: 'menu-item-list',\n components: { BentoDivider, MenuItem, MenuListContainer, SubMenuItemList },\n props: {\n /**\n * The data to be displayed in the list\n */\n data: {\n type: Array as PropType<BentoMenuItem[]>,\n required: true,\n },\n /**\n * Displays the menu-items of the list in the indent variant. Only applies to elements that don't have an icon to their left.\n */\n indentItems: {\n type: Boolean,\n default: false,\n },\n /**\n * If set to true, focuses the last item on the list instead of the first. Used for accessibility purposes when the menu is opened with the 'up' arrow key.\n */\n focusLastElement: {\n type: Boolean,\n default: false,\n },\n },\n emits: [BentoMenuEvent.CLOSE, 'menu-item-click'],\n setup(props, { emit }) {\n const menuItemListRef = ref(null);\n const menuItemListWrapperRef = ref(null);\n const subMenuItemListRef = ref(null);\n const showSubMenu = ref(false);\n const visibleSubMenuIndex = ref(null);\n const focusedIndex = ref(props.focusLastElement ? props.data.length - 1 : 0);\n const subMenuFocusedIndex = ref(0);\n const numberOfItems = ref(props.data.length - 1);\n const hasMenuItemsWithIcon = computed(() => props.data.some(el => el.icon));\n\n const computedData = computed(() => {\n if (props.indentItems || hasMenuItemsWithIcon.value) {\n return props.data.map(el => {\n let indent = false;\n if (!el.icon) {\n indent = true;\n }\n return {\n ...el,\n // eslint-disable-next-line no-param-reassign\n indent,\n };\n });\n }\n return props.data;\n });\n\n const focusItem = () => menuItemListRef.value?.children[focusedIndex.value]?.children[0]?.focus();\n\n const closeMenu = () => emit(BentoMenuEvent.CLOSE);\n\n const menuItemClick = (item: BentoMenuItem, index: number) => {\n if (item.items) {\n visibleSubMenuIndex.value = index;\n showSubMenu.value = true;\n } else {\n visibleSubMenuIndex.value = index;\n showSubMenu.value = false;\n closeMenu();\n emit('menu-item-click');\n }\n };\n\n const focusPrevious = () => {\n if (focusedIndex.value > 0) {\n focusedIndex.value -= 1;\n if (computedData.value[focusedIndex.value].disabled) {\n focusPrevious();\n }\n } else {\n focusedIndex.value = numberOfItems.value;\n }\n focusItem();\n };\n\n const focusNext = () => {\n if (focusedIndex.value < numberOfItems.value) {\n focusedIndex.value += 1;\n if (computedData.value[focusedIndex.value].disabled) {\n focusNext();\n }\n } else {\n focusedIndex.value = 0;\n }\n focusItem();\n };\n\n const focusRight = (item, index) => {\n if (item?.items?.length) {\n visibleSubMenuIndex.value = index;\n showSubMenu.value = true;\n }\n };\n\n const focusLeft = () => {\n if (visibleSubMenuIndex.value && showSubMenu.value) {\n visibleSubMenuIndex.value = null;\n showSubMenu.value = false;\n }\n };\n\n const onBackButton = () => {\n showSubMenu.value = false;\n visibleSubMenuIndex.value = null;\n // Focus the right element\n focusItem();\n };\n\n const subMenuHeight = computed(() => subMenuItemListRef.value?.[0]?.$el?.offsetHeight);\n\n // When we show the sub menu we need to set the height of the container because of the way the submenus are handled,\n // but the main menu doesn't need a height, as the popover will generate it with the right height\n const computedHeight = computed(() => (showSubMenu.value ? `${subMenuHeight.value}px` : ''));\n\n return {\n // Values\n menuItemListRef,\n menuItemListWrapperRef,\n subMenuItemListRef,\n\n computedData,\n computedHeight,\n\n focusedIndex,\n subMenuFocusedIndex,\n\n showSubMenu,\n visibleSubMenuIndex,\n\n // Methods\n menuItemClick,\n closeMenu,\n focusPrevious,\n focusNext,\n focusRight,\n focusLeft,\n onBackButton,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./menu-item-list.scss\" />\n","export const MENU_INVERSE_INJECTION_KEY = Symbol('menu inverse style injection key');\n","\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" 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\" d=\"M8 4C8.29667 4 8.58668 3.91203 8.83335 3.74721C9.08003 3.58238 9.27229 3.34811 9.38582 3.07403C9.49935 2.79994 9.52906 2.49834 9.47118 2.20737C9.4133 1.91639 9.27044 1.64912 9.06066 1.43934C8.85088 1.22956 8.58361 1.0867 8.29264 1.02882C8.00167 0.970945 7.70006 1.00065 7.42598 1.11418C7.15189 1.22771 6.91762 1.41997 6.7528 1.66665C6.58797 1.91332 6.5 2.20333 6.5 2.5C6.5 2.89783 6.65803 3.27936 6.93934 3.56066C7.22064 3.84197 7.60218 4 8 4Z\"/><path fill=\"#00112C\" d=\"M8 15C8.29667 15 8.58668 14.912 8.83335 14.7472C9.08003 14.5824 9.27229 14.3481 9.38582 14.074C9.49935 13.7999 9.52906 13.4983 9.47118 13.2074C9.4133 12.9164 9.27044 12.6491 9.06066 12.4393C8.85088 12.2296 8.58361 12.0867 8.29264 12.0288C8.00167 11.9709 7.70006 12.0007 7.42598 12.1142C7.15189 12.2277 6.91762 12.42 6.7528 12.6666C6.58797 12.9133 6.5 13.2033 6.5 13.5C6.5 13.8978 6.65803 14.2794 6.93934 14.5607C7.22064 14.842 7.60218 15 8 15Z\"/><path fill=\"#00112C\" d=\"M8.83335 9.24721C8.58668 9.41203 8.29667 9.5 8 9.5C7.60218 9.5 7.22064 9.34197 6.93934 9.06066C6.65803 8.77936 6.5 8.39783 6.5 8C6.5 7.70333 6.58797 7.41332 6.7528 7.16665C6.91762 6.91997 7.15189 6.72771 7.42598 6.61418C7.70006 6.50065 8.00167 6.47094 8.29264 6.52882C8.58361 6.5867 8.85088 6.72956 9.06066 6.93934C9.27044 7.14912 9.4133 7.41639 9.47118 7.70737C9.52906 7.99834 9.49935 8.29994 9.38582 8.57403C9.27229 8.84811 9.08003 9.08238 8.83335 9.24721Z\"/></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>\n @import '../css/main.css';\n</style>\n","<template>\n <div\n :class=\"computedClasses\"\n class=\"b-menu\"\n @keydown.down=\"onKeyDown\"\n @keydown.up=\"onKeyUp\"\n @keydown.esc=\"closeMenu\"\n >\n <bento-toggle-button\n ref=\"menuButtonRef\"\n aria-haspopup=\"true\"\n v-bind=\"computedButtonPropsWithDefaults\"\n :aria-controls=\"showMenu ? menuId : null\"\n :toggled=\"showMenu\"\n :inverse=\"isInverseColorSet\"\n @click=\"toggleShowMenu\"\n >\n <template v-if=\"!hasSlot('default') || hasSlot('iconLeft')\" #iconLeft>\n <slot name=\"iconLeft\">\n <options-vertical-icon :title=\"t('menuButton')\" />\n </slot>\n </template>\n <template v-if=\"hasSlot('default')\" #default>\n <slot />\n </template>\n <template v-if=\"hasSlot('iconRight')\" #iconRight>\n <slot name=\"iconRight\" />\n </template>\n </bento-toggle-button>\n\n <bento-teleport v-if=\"menuButtonRef\" :disabled=\"!teleport\">\n <bento-popover\n v-if=\"menuButtonRef\"\n :id=\"menuId\"\n ref=\"popoverRef\"\n :open=\"showMenu\"\n class=\"b-menu__popover\"\n :style=\"computedMenuWidth\"\n :target-element=\"menuButtonRef\"\n :position=\"menuPosition\"\n :fixed-positioning=\"menuFixedPositioning\"\n :fallback-position=\"[\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end',\n 'right-start',\n 'right-end',\n 'left-start',\n 'left-end',\n ]\"\n :teleport=\"teleport\"\n without-space\n >\n <menu-item-list\n :data=\"data\"\n :focus-last-element=\"isLastElementFocused\"\n @close=\"closeMenu\"\n @menu-item-click=\"menuItemClick\"\n />\n </bento-popover>\n </bento-teleport>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, inject, PropType, provide, ref } from 'vue';\n import { generateUid } from '@/core/utils/ts';\n import { BentoToggleButton } from '@/components/button';\n import { BentoPopover, BentoPopoverPositions } from '@/components/popover';\n import { BentoMenuItem, MenuItemList } from './components';\n import { BentoMenuButtonProps, BentoMenuEvent } from './menu.types';\n import { DIVIDER_INVERSE_INJECTION_KEY } from '@/components/divider/divider.keys';\n import { MENU_INVERSE_INJECTION_KEY } from './menu.keys';\n import { BentoTeleport } from '@/internal';\n import { useClickOutside, useHasSlot } from '@/composables';\n import { useI18n } from '@/utils/ts/i18n';\n import OptionsVerticalIcon from '@adyen/ui-assets-icons-16/vue/options-vertical';\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n /**\n * Menu component to render a series of buttons. Csan render nested submenus.\n *\n * @example\n * import { BentoMenu } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoMenu },\n * template: `\n * <bento-menu\n * :data=[\n * { text: 'Menu item text', handler: () => { some code here } },\n * { text: 'Another menu item text', handler: () => { some other code here }, critical: true }\n * ]\n * />\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-menu',\n components: { BentoToggleButton, BentoPopover, BentoTeleport, MenuItemList, OptionsVerticalIcon },\n props: {\n /**\n * Object containing props to change the menu button appearance. Accepts the same props present in BentoButton.\n */\n button: {\n type: Object as PropType<BentoMenuButtonProps>,\n default: () =>\n ({\n variant: 'secondary',\n } as BentoMenuButtonProps),\n },\n /**\n * The data to be displayed in the list\n */\n data: {\n type: Array as PropType<BentoMenuItem[]>,\n required: true,\n },\n\n /**\n * The position of where the menu should open.\n */\n menuPosition: {\n type: String as PropType<BentoPopoverPositions | `${BentoPopoverPositions}`>,\n default: BentoPopoverPositions.BOTTOM_START,\n validator: (value: BentoPopoverPositions) => Object.values(BentoPopoverPositions).includes(value),\n },\n\n /**\n * Instructs the menu popover to be visible outside of the containing container.\n * @see {@link https://floating-ui.com/docs/usefloating#strategy}\n */\n menuFixedPositioning: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets a custom width for the menu popover.\n */\n menuWidth: {\n type: Number,\n default: null,\n },\n\n /**\n * Can be used to set the inner teleport component to render the menu's popover in the root `body` DOM node\n * (or `dialog` if popover is inside a dialog).\n */\n teleport: {\n type: Boolean,\n default: false,\n },\n },\n emits: [BentoMenuEvent.CLOSE, BentoMenuEvent.OPEN, 'menu-item-click'],\n setup(props, { emit, slots }) {\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n const menuButtonRef = ref(null);\n const showMenu = ref(false);\n const isLastElementFocused = ref(false);\n const popoverRef = ref<HTMLElement>(null);\n const menuId = generateUid('menu');\n const popoverId = generateUid('menu-popover');\n\n const isInverseColorSet = inject(MENU_INVERSE_INJECTION_KEY, ref(false));\n provide(DIVIDER_INVERSE_INJECTION_KEY, isInverseColorSet);\n\n const computedClasses = computed(() => ({\n 'b-menu--inverse': isInverseColorSet.value,\n }));\n\n const computedMenuWidth = computed(() => (props.menuWidth ? { width: `${props.menuWidth}px` } : null));\n const computedButtonPropsWithDefaults = computed<BentoMenuButtonProps>(() => {\n if (!props?.button) {\n return undefined;\n }\n return {\n variant: 'secondary',\n ...props.button,\n };\n });\n\n const openMenu = () => {\n showMenu.value = true;\n emit(BentoMenuEvent.OPEN);\n };\n\n const closeMenu = () => {\n if (showMenu.value) {\n showMenu.value = false;\n menuButtonRef.value.$el.focus();\n emit(BentoMenuEvent.CLOSE);\n }\n };\n\n const toggleShowMenu = (e: MouseEvent) => {\n e.stopPropagation();\n if (!showMenu.value) {\n openMenu();\n } else {\n closeMenu();\n }\n };\n\n const onKeyDown = () => {\n isLastElementFocused.value = false;\n openMenu();\n };\n\n const onKeyUp = () => {\n isLastElementFocused.value = true;\n openMenu();\n };\n\n const menuItemClick = () => {\n emit('menu-item-click');\n };\n\n // Ignore the events inside the Button and the Popover\n useClickOutside(popoverRef, closeMenu, { ignore: [menuButtonRef] });\n\n return {\n // Refs\n popoverRef,\n menuButtonRef,\n\n // Values\n menuId,\n popoverId,\n showMenu,\n computedButtonPropsWithDefaults,\n computedMenuWidth,\n isLastElementFocused,\n\n // Classes\n computedClasses,\n isInverseColorSet,\n\n // Methods\n hasSlot: useHasSlot(slots),\n onKeyDown,\n onKeyUp,\n closeMenu,\n menuItemClick,\n toggleShowMenu,\n\n // Translations\n t,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./menu.scss\" />\n"],"names":["_sfc_main$5","defineComponent","BaseButton","BentoTypography","ChevronRightIcon","BentoBaseButtonEvent","props","emit","computed","e","normalizeClass","_ctx","onClick","createSlots","withCtx","createVNode","_component_bento_typography","createTextVNode","toDisplayString","secondaryText","createCommentVNode","icon","openBlock","createBlock","resolveDynamicComponent","_component_chevron_right_icon","BentoMenuEvent","BentoMenuEvent2","DATA_GRID_CELL_MENU_REGISTERING_INJECTION_KEY","__default__","menuListContainerRef","ref","menuListContainerEvents","registeringAndMousingOut","inject","registerMenuContainerElement","_sfc_main$3","messages","BentoDivider","MenuItem","MenuListContainer","subMenuItemListRefLocal","subMenuFocusedIndex","numberOfItems","closeMenu","onBackButton","computedItems","items","_a","el","ChevronLeftIcon","focusItem","_e","_d","_c","_b","onMounted","focusPrevious","focusNext","_component_menu_list_container","resolveComponent","Transition","createElementVNode","_cache","withKeys","withModifiers","args","createElementBlock","Fragment","renderList","item","index","_component_bento_divider","_sfc_main$2","SubMenuItemList","menuItemListRef","menuItemListWrapperRef","subMenuItemListRef","showSubMenu","visibleSubMenuIndex","focusedIndex","hasMenuItemsWithIcon","computedData","indent","menuItemClick","focusRight","focusLeft","subMenuHeight","computedHeight","$event","_component_sub_menu_item_list","MENU_INVERSE_INJECTION_KEY","uuid","mergeProps","_sfc_main","BentoToggleButton","BentoPopover","BentoTeleport","MenuItemList","OptionsVerticalIcon","BentoPopoverPositions","value","slots","t","useI18n","menuButtonRef","showMenu","isLastElementFocused","popoverRef","menuId","generateUid","popoverId","isInverseColorSet","provide","DIVIDER_INVERSE_INJECTION_KEY","computedClasses","computedMenuWidth","computedButtonPropsWithDefaults","openMenu","toggleShowMenu","onKeyDown","onKeyUp","useClickOutside","useHasSlot","renderSlot","_component_options_vertical_icon","_component_bento_teleport","_component_bento_popover","normalizeStyle","menuFixedPositioning","_component_menu_item_list"],"mappings":"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","x_google_ignoreList":[7]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"teleport.CI0k6eaC.js","sources":["../../../vue2/src/components/internal/teleport/teleport.vue"],"sourcesContent":["<!-- Taken from: https://github.com/Mechazawa/vue2-teleport/blob/master/src/Teleport.vue -->\n<template>\n <div v-if=\"isVue2\" :class=\"classes\">\n <slot />\n </div>\n <Teleport v-else :to=\"defaultTo\" :where=\"where\" :disabled=\"disabled\" :class=\"classes\">\n <slot />\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\n import { isVue2 } from 'vue-demi';\n import { defineComponent, inject } from 'vue';\n import { MODAL_DIALOG_ID_INJECTION_KEY } from '@/components/modal/components/base-modal/base-modal.keys';\n import { SIDEPANEL_DIALOG_ID_INJECTION_KEY } from '@/components/sidepanel/sidepanel.keys';\n import { MODAL_FULLSCREEN_DIALOG_ID_INJECTION_KEY } from '@/components/modal-fullscreen/modal-fullscreen.keys';\n</script>\n\n<script lang=\"ts\">\n export default defineComponent({\n name: 'teleport',\n props: {\n to: {\n type: String,\n default: '',\n },\n where: {\n type: String,\n default: 'after',\n },\n disabled: Boolean,\n },\n data: () => ({\n childObserver: null,\n nodes: [],\n waiting: false,\n observer: null,\n parent: null,\n isVue2,\n }),\n computed: {\n classes() {\n if (this.disabled) {\n return ['b-teleport'];\n }\n\n return ['b-teleport', 'b-teleport--hidden'];\n },\n defaultTo() {\n if (this.to) {\n return this.to;\n }\n\n const injectionKey =\n inject<string>(MODAL_DIALOG_ID_INJECTION_KEY, '') ||\n inject<string>(MODAL_FULLSCREEN_DIALOG_ID_INJECTION_KEY, '') ||\n inject<string>(SIDEPANEL_DIALOG_ID_INJECTION_KEY, '');\n\n const teleportElement = injectionKey ? `#${injectionKey}` : 'body';\n return teleportElement;\n },\n },\n watch: {\n to: 'maybeMove',\n where: 'maybeMove',\n disabled(value) {\n if (value) {\n this.disable();\n // Ensure all event done.\n this.$nextTick(() => {\n this.teardownObserver();\n });\n } else {\n this.bootObserver();\n this.move();\n }\n },\n },\n mounted() {\n // Store a reference to the nodes\n this.nodes = Array.from(this.$el.childNodes);\n\n if (!this.disabled) {\n this.bootObserver();\n }\n\n // Move slot content to target\n this.maybeMove();\n },\n beforeDestroy() {\n // Fix nodes reference\n this.nodes = this.getComponentChildrenNode();\n\n // Move back\n this.disable();\n\n // Stop observing\n this.teardownObserver();\n },\n methods: {\n // Using a fragment is faster because it'll trigger only a single reflow\n // See https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment\n getFragment(): DocumentFragment {\n const fragment = document.createDocumentFragment();\n\n this.nodes.forEach(node => fragment.appendChild(node));\n\n return fragment;\n },\n disable() {\n this.$el.appendChild(this.getFragment());\n this.parent = null;\n },\n move() {\n this.waiting = false;\n\n this.parent = document.querySelector(this.defaultTo);\n\n if (!this.parent) {\n this.disable();\n\n this.waiting = true;\n\n return;\n }\n\n if (this.where === 'before') {\n this.parent.prepend(this.getFragment());\n } else {\n this.parent.appendChild(this.getFragment());\n }\n },\n maybeMove() {\n if (!this.disabled) {\n this.move();\n }\n },\n onMutations(mutations) {\n // Makes sure the move operation is only done once\n let shouldMove = false;\n\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < mutations.length; i++) {\n const mutation = mutations[i];\n const filteredAddedNodes = Array.from(mutation.addedNodes).filter(\n node => !this.nodes.includes(node)\n );\n\n if (Array.from(mutation.removedNodes).includes(this.parent)) {\n this.disable();\n this.waiting = !this.disabled;\n } else if (this.waiting && filteredAddedNodes.length > 0) {\n shouldMove = true;\n }\n }\n\n if (shouldMove) {\n this.move();\n }\n },\n bootObserver() {\n if (this.observer) {\n return;\n }\n\n this.observer = new MutationObserver(mutations => this.onMutations(mutations));\n\n this.observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false,\n });\n\n if (this.childObserver) {\n return;\n }\n // watch childNodes change\n this.childObserver = new MutationObserver(mutations => {\n const childChangeRecord = mutations.find(i => i.target === this.$el);\n if (childChangeRecord) {\n // Remove old nodes before update position.\n this.nodes.forEach(node => node.parentNode && node.parentNode.removeChild(node));\n this.nodes = this.getComponentChildrenNode();\n this.maybeMove();\n }\n });\n\n this.childObserver.observe(this.$el, {\n childList: true,\n subtree: false,\n attributes: false,\n characterData: false,\n });\n },\n teardownObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n if (this.childObserver) {\n this.childObserver.disconnect();\n this.childObserver = null;\n }\n },\n getComponentChildrenNode() {\n // Vue3\n if (!isVue2) {\n return [];\n }\n\n // Trick for Vue3 type checking\n return (this as any).$vnode.componentOptions.children.map(i => i.elm).filter(i => i);\n },\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./teleport.scss\" />\n"],"names":["__default__","defineComponent","isVue2","injectionKey","inject","MODAL_DIALOG_ID_INJECTION_KEY","MODAL_FULLSCREEN_DIALOG_ID_INJECTION_KEY","SIDEPANEL_DIALOG_ID_INJECTION_KEY","value","fragment","node","mutations","shouldMove","i","mutation","filteredAddedNodes"],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { o as e } from "./on-click-outside.MUWbmGDn.js";
|
|
2
|
-
import { onMounted as u, onUnmounted as s } from "vue";
|
|
3
|
-
const m = (t, i, n = {}) => {
|
|
4
|
-
let o;
|
|
5
|
-
u(() => {
|
|
6
|
-
o = e(t, i, n);
|
|
7
|
-
}), s(() => {
|
|
8
|
-
o && (o(), o = null);
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
export {
|
|
12
|
-
m as u
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=use-click-outside.D6aIgS15.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-click-outside.D6aIgS15.js","sources":["../../../vue2/src/composables/use-click-outside/use-click-outside.ts"],"sourcesContent":["import { onClickOutside } from '@/directives/click-outside/on-click-outside';\nimport { OnClickOutsideHandler, OnClickOutsideOptions } from '@/directives/click-outside/types';\nimport { MaybeElementRef } from '@/types';\nimport { onMounted, onUnmounted } from 'vue';\n\n/**\n * Composable to listen for clicks outside of an element ref.\n *\n * @param {MaybeElementRef} target - HTML Element or \"ref\" to an Element on which the click outside listener will be attached to\n * @param {OnClickOutsideHandler} handler - Function that will be called when the listener gets triggered\n * @param {OnClickOutsideOptions} options - Options to be passed to the listener\n */\nexport const useClickOutside = <T extends OnClickOutsideOptions>(\n target: MaybeElementRef,\n handler: OnClickOutsideHandler,\n options: T = {} as T\n) => {\n let onClickOutsideStop: () => void;\n\n onMounted(() => {\n onClickOutsideStop = onClickOutside(target, handler, options);\n });\n\n onUnmounted(() => {\n if (onClickOutsideStop) {\n onClickOutsideStop();\n\n onClickOutsideStop = null;\n }\n });\n};\n"],"names":["useClickOutside","target","handler","options","onClickOutsideStop","onMounted","onClickOutside","onUnmounted"],"mappings":";;AAYO,MAAMA,IAAkB,CAC3BC,GACAC,GACAC,IAAa,CAAA,MACZ;AACG,MAAAC;AAEJ,EAAAC,EAAU,MAAM;AACS,IAAAD,IAAAE,EAAeL,GAAQC,GAASC,CAAO;AAAA,EAAA,CAC/D,GAEDI,EAAY,MAAM;AACd,IAAIH,MACmBA,EAAA,GAEEA,IAAA;AAAA,EACzB,CACH;AACL;"}
|