From cb215c4d0d8375c5cc1c2cf1f6ab99839a0a3c19 Mon Sep 17 00:00:00 2001 From: Hunter Date: Sun, 6 Jun 2021 20:15:43 +0800 Subject: [PATCH 1/3] chore: Bump rollup, @rollup/plugin-commonjs, @rollup/plugin-node-resolve --- package.json | 6 +-- rollup.config.js | 12 ++++-- yarn.lock | 96 ++++++++++++++++++++++++++---------------------- 3 files changed, 64 insertions(+), 50 deletions(-) diff --git a/package.json b/package.json index 2a5d04a9..033bf8bf 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,8 @@ "@babel/core": "^7.11.6", "@babel/preset-env": "^7.11.5", "@rollup/plugin-babel": "^5.2.2", + "@rollup/plugin-commonjs": "^19.0.0", + "@rollup/plugin-node-resolve": "^13.0.0", "@vue/eslint-config-prettier": "^6.0.0", "@vue/test-utils": "^1.1.2", "autoprefixer": "^9.8.6", @@ -41,10 +43,8 @@ "eslint-plugin-vue": "^7.8.0", "jest": "^24.9.0", "lint-staged": "^10.5.4", - "rollup": "^2.44.0", + "rollup": "^2.51.0", "rollup-plugin-cleanup": "^3.2.1", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "^7.0.2", "rollup-plugin-vue": "^5.1.9", "vue-jest": "^3.0.5", diff --git a/rollup.config.js b/rollup.config.js index 41055899..8a63ec56 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,7 +1,7 @@ import VuePlugin from 'rollup-plugin-vue' import babel from '@rollup/plugin-babel' -import resolve from 'rollup-plugin-node-resolve' -import commonJS from 'rollup-plugin-commonjs' +import { nodeResolve } from '@rollup/plugin-node-resolve' +import commonJS from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' import cleanup from 'rollup-plugin-cleanup' import sizes from '@atomico/rollup-plugin-sizes' @@ -10,7 +10,7 @@ import autoprefixer from 'autoprefixer' const pkg = require('./package.json') const plugins = [ - resolve(), + nodeResolve(), commonJS(), VuePlugin({ normalizer: '~vue-runtime-helpers/dist/normalize-component.js', @@ -35,7 +35,10 @@ export default { file: pkg.main, format: 'umd', name: 'VueFinalModal', - sourcemap: true + sourcemap: true, + globals: { + vue: 'Vue' + } }, { file: pkg.module, @@ -43,5 +46,6 @@ export default { sourcemap: true } ], + external: ['vue'], plugins } diff --git a/yarn.lock b/yarn.lock index 4080432c..3eff6fd0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1109,6 +1109,31 @@ "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" +"@rollup/plugin-commonjs@^19.0.0": + version "19.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.0.tgz#8c3e71f9a66908e60d70cc1be205834ef3e45f71" + integrity sha512-adTpD6ATGbehdaQoZQ6ipDFhdjqsTgpOAhFiPwl+dzre4pPshsecptDPyEFb61JMJ1+mGljktaC4jI8ARMSNyw== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-node-resolve@^13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz#352f07e430ff377809ec8ec8a6fd636547162dc4" + integrity sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" @@ -1203,10 +1228,10 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" @@ -2092,6 +2117,11 @@ commander@^6.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -2336,6 +2366,11 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -2687,6 +2722,11 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3385,7 +3425,7 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.1.0, is-core-module@^2.2.0: +is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== @@ -3520,7 +3560,7 @@ is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-reference@^1.1.2: +is-reference@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== @@ -4422,7 +4462,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.25.2, magic-string@^0.25.7: +magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== @@ -5457,7 +5497,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -5465,14 +5505,6 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2: is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@^1.11.0, resolve@^1.11.1: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -5515,28 +5547,6 @@ rollup-plugin-cleanup@^3.2.1: js-cleanup "^1.2.0" rollup-pluginutils "^2.8.2" -rollup-plugin-commonjs@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-node-resolve@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - rollup-plugin-terser@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" @@ -5562,17 +5572,17 @@ rollup-plugin-vue@^5.1.9: source-map "0.7.3" vue-runtime-helpers "^1.1.2" -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: +rollup-pluginutils@^2.8.2: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" -rollup@^2.44.0: - version "2.44.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.44.0.tgz#8da324d1c4fd12beef9ae6e12f4068265b6d95eb" - integrity sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ== +rollup@^2.51.0: + version "2.51.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.51.0.tgz#ffd847882283998fc8611cd57af917f173b4ab5c" + integrity sha512-ITLt9sScNCBVspSHauw/W49lEZ0vjN8LyCzSNsNaqT67vTss2lYEfOyxltX8hjrhr1l/rQwmZ2wazzEqhZ/fUg== optionalDependencies: fsevents "~2.3.1" From 8a8e22501addf10d15d1cb5fb2268c8ff7d86da7 Mon Sep 17 00:00:00 2001 From: Hunter Date: Fri, 11 Jun 2021 01:50:45 +0800 Subject: [PATCH 2/3] feat: allow importing component directly --- dist/VueFinalModal.esm.js | 2 +- dist/VueFinalModal.esm.js.map | 2 +- dist/VueFinalModal.umd.js | 2 +- dist/VueFinalModal.umd.js.map | 2 +- .../examples/basic/BasicOptions.vue | 4 +- .../examples/basic/VAccessibility.vue | 4 +- .../examples/basic/VActionButtons.vue | 4 +- docs/components/examples/basic/VApiShow.vue | 8 +- .../components/examples/basic/VBackground.vue | 4 +- docs/components/examples/basic/VBasic.vue | 4 +- docs/components/examples/basic/VCentered.vue | 4 +- .../examples/basic/VCloseButton.vue | 4 +- docs/components/examples/basic/VContent.vue | 4 +- docs/components/examples/basic/VDynamic.vue | 2 +- .../examples/basic/VDynamicAdvanced.vue | 6 +- .../examples/basic/VDynamicModal.vue | 10 +- docs/components/examples/basic/VEvents.vue | 4 +- docs/components/examples/basic/VParams.vue | 18 +-- .../components/examples/basic/VScrollable.vue | 4 +- docs/components/examples/basic/VStackable.vue | 8 +- .../examples/basic/VStopBeforeClose.vue | 9 +- .../examples/basic/VStopBeforeOpen.vue | 9 +- .../hoc/{VModal.vue => CustomModal.vue} | 6 +- docs/components/examples/hoc/HocExample.vue | 4 +- .../examples/hoc/VTailwindModal.vue | 4 +- docs/content/en/api.md | 41 +++--- docs/content/en/dynamic-modal.md | 68 ++++++---- docs/content/en/examples/recommend.md | 14 +- docs/content/en/examples/stepByStep.md | 52 +++---- docs/content/en/examples/tailwind.md | 4 +- docs/content/en/guide/params.md | 6 +- docs/content/en/guide/properties.md | 18 +-- docs/content/en/guide/scoped-slots.md | 6 +- docs/content/en/options.md | 53 -------- docs/content/en/setup.md | 88 +++++++++--- docs/content/en/typescript.md | 15 ++- docs/content/zh-Hant/api.md | 45 ++++--- docs/content/zh-Hant/dynamic-modal.md | 38 +++--- docs/content/zh-Hant/examples/recommend.md | 14 +- docs/content/zh-Hant/examples/stepByStep.md | 52 +++---- docs/content/zh-Hant/examples/tailwind.md | 4 +- docs/content/zh-Hant/guide/params.md | 6 +- docs/content/zh-Hant/guide/properties.md | 18 +-- docs/content/zh-Hant/guide/scoped-slots.md | 6 +- docs/content/zh-Hant/options.md | 53 -------- docs/content/zh-Hant/setup.md | 75 ++++++++--- docs/content/zh-Hant/typescript.md | 15 ++- docs/plugins/global.js | 4 +- example/src/App.vue | 5 +- example/src/components/basic/BasicOptions.vue | 4 +- .../src/components/basic/VAccessibility.vue | 4 +- .../src/components/basic/VActionButtons.vue | 4 +- example/src/components/basic/VApiShow.vue | 8 +- example/src/components/basic/VBackground.vue | 4 +- example/src/components/basic/VBasic.vue | 4 +- example/src/components/basic/VCentered.vue | 4 +- example/src/components/basic/VCloseButton.vue | 4 +- example/src/components/basic/VContent.vue | 4 +- example/src/components/basic/VDynamic.vue | 2 +- .../src/components/basic/VDynamicAdvanced.vue | 6 +- .../src/components/basic/VDynamicModal.vue | 10 +- example/src/components/basic/VEvents.vue | 4 +- example/src/components/basic/VParams.vue | 18 +-- example/src/components/basic/VScrollable.vue | 4 +- example/src/components/basic/VStackable.vue | 8 +- .../src/components/basic/VStopBeforeClose.vue | 9 +- .../src/components/basic/VStopBeforeOpen.vue | 9 +- .../hoc/{VModal.vue => CustomModal.vue} | 6 +- example/src/components/hoc/HocExample.vue | 4 +- example/src/components/hoc/VTailwindModal.vue | 4 +- example/src/main.js | 9 +- lib/Plugin.js | 81 ++++++----- lib/PluginCore.js | 127 +++++++++--------- ...ModalsContainer.vue => VDynamicModals.vue} | 7 +- lib/{VueFinalModal.vue => VModal.vue} | 3 - lib/index.js | 4 +- lib/utils/errors.js | 6 - package.json | 1 + tests/unit/Plugin.spec.js | 69 +--------- tests/unit/VueFinalModal.spec.js | 74 +++++----- tests/unit/utils.js | 20 +-- types/index.d.ts | 16 +-- types/lib.d.ts | 3 - 83 files changed, 650 insertions(+), 726 deletions(-) rename docs/components/examples/hoc/{VModal.vue => CustomModal.vue} (96%) delete mode 100644 docs/content/en/options.md delete mode 100644 docs/content/zh-Hant/options.md rename example/src/components/hoc/{VModal.vue => CustomModal.vue} (96%) rename lib/{ModalsContainer.vue => VDynamicModals.vue} (90%) rename lib/{VueFinalModal.vue => VModal.vue} (99%) delete mode 100644 lib/utils/errors.js diff --git a/dist/VueFinalModal.esm.js b/dist/VueFinalModal.esm.js index 78a3d1d0..3de336e8 100644 --- a/dist/VueFinalModal.esm.js +++ b/dist/VueFinalModal.esm.js @@ -1,2 +1,2 @@ -function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n1),x=[],S=!1,E=0,T=-1,z=function(e,t){var n=!1;return function(e){for(var t=[];e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t}(e).forEach((function(e){(function(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;var t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&function(e,t){return!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0)}(e,t)&&(n=!0)})),n},C=function(e){return x.some((function(){return z(e,-E)}))},O=function(e){var t=e||window.event;return!!C(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},k=function(e,t){if(e){if(!x.some((function(t){return t.targetElement===e}))){var n={targetElement:e,options:t||{}};x=[].concat(r(x),[n]),w?(e.ontouchstart=function(e){1===e.targetTouches.length&&(T=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&function(e,t){E=e.targetTouches[0].clientY-T,!C(e.target)&&(t&&0===t.scrollTop&&E>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(t)&&E<0?O(e):e.stopPropagation())}(t,e)},S||(document.addEventListener("touchmove",O,p?{passive:!1}:void 0),S=!0)):function(e){if(void 0===b){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){var i=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);b=document.body.style.paddingRight,document.body.style.paddingRight="".concat(i+n,"px")}}void 0===g&&(g=document.body.style.overflow,document.body.style.overflow="hidden")}(t)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},_=function(e){e?(x=x.filter((function(t){return t.targetElement!==e})),w?(e.ontouchstart=null,e.ontouchmove=null,S&&0===x.length&&(document.removeEventListener("touchmove",O,p?{passive:!1}:void 0),S=!1)):x.length||(void 0!==b&&(document.body.style.paddingRight=b,b=void 0),void 0!==g&&(document.body.style.overflow=g,g=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")},$=function(){},D="enter",M="entering",R="leave",j="leavng";var L={type:[String,Object,Array],default:""},A={type:[Object,Array],default:function(){return{}}},N={t:"ns-resize",tr:"nesw-resize",r:"ew-resize",br:"nwse-resize",b:"ns-resize",bl:"nesw-resize",l:"ew-resize",tl:"nwse-resize"},B={props:{name:{type:String,default:null},value:{type:Boolean,default:!1},ssr:{type:Boolean,default:!0},classes:L,overlayClass:L,contentClass:L,styles:A,overlayStyle:A,contentStyle:A,lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},preventClick:{type:Boolean,default:!1},attach:{type:null,default:!1,validator:function(t){var n=e(t);return"boolean"===n||"string"===n||t.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:function(){return["t","tr","r","br","b","bl","l","tl"]},validator:function(e){return["t","tr","r","br","b","bl","l","tl"].filter((function(t){return-1!==e.indexOf(t)})).length===e.length}},minWidth:{type:Number,default:0},minHeight:{type:Number,default:0},maxWidth:{type:Number,default:1/0},maxHeight:{type:Number,default:1/0}},data:function(){return{modalStackIndex:null,visible:!1,visibility:{modal:!1,overlay:!1,resize:!1},overlayTransitionState:null,modalTransitionState:null,stopEvent:!1,params:{},dragResizeStyle:{},resolveToggle:$,rejectToggle:$,state:null}},computed:{api:function(){return this[this.$_options.key]},isComponentReadyToBeDestroyed:function(){return(this.hideOverlay||this.overlayTransitionState===R)&&this.modalTransitionState===R},calculateZIndex:function(){return!1===this.zIndex?!!this.zIndexAuto&&+this.zIndexBase+2*(this.modalStackIndex||0):this.zIndex},bindStyle:function(){return o({},!1!==this.calculateZIndex&&{zIndex:this.calculateZIndex})},bindContentStyle:function(){var e=[this.dragResizeStyle];return Array.isArray(this.contentStyle)?e.push.apply(e,r(this.contentStyle)):e.push(this.contentStyle),e},computedTransition:function(){return"string"==typeof this.transition?{name:this.transition}:o({},this.transition)},computedOverlayTransition:function(){return"string"==typeof this.overlayTransition?{name:this.overlayTransition}:o({},this.overlayTransition)}},watch:{value:function(e){if(this.stopEvent)this.stopEvent=!1;else if(this.mounted(),!e){if(this.emitEvent("before-close",!0))return void this.rejectToggle("hide");this.close()}},lockScroll:"handleLockScroll",hideOverlay:function(e){this.value&&!e&&(this.visibility.overlay=!0)},attach:"mounted",isComponentReadyToBeDestroyed:function(e){e&&(this.visible=!1)},drag:function(e){this.visible&&(e?this.addDragDown():this.removeDragDown())},resize:function(e){this.visible&&(e?this.addResizeDown():this.removeResizeDown())},keepChangedStyle:function(e){e||(this.dragResizeStyle={})}},created:function(){this.api.modals.push(this)},mounted:function(){this.$focusTrap=new c,this.mounted()},beforeDestroy:function(){var e,t=this;this.close(),this.lockScroll&&this.$refs.vfmContainer&&_(this.$refs.vfmContainer),null==this||null===(e=this.$el)||void 0===e||e.remove();var n=this.api.modals.findIndex((function(e){return e===t}));this.api.modals.splice(n,1)},methods:{mounted:function(){var e=this;if(this.value){if(this.emitEvent("before-open",!1))return void this.rejectToggle("show");var t=this.getAttachElement();if(t||!1===this.attach){!1!==this.attach&&t.appendChild(this.$el);var n=this.api.openedModals.findIndex((function(t){return t===e}));-1!==n&&this.api.openedModals.splice(n,1),this.api.openedModals.push(this),this.modalStackIndex=this.api.openedModals.length-1,this.handleLockScroll(),this.api.openedModals.filter((function(t){return t!==e})).forEach((function(e,n){e.getAttachElement()===t&&(e.modalStackIndex=n,e.visibility.overlay=!1)})),this.visible=!0,this.$nextTick((function(){e.startTransitionEnter()}))}else!1!==t&&console.warn("Unable to locate target ".concat(this.attach))}},close:function(){var e=this,t=this.api.openedModals.findIndex((function(t){return t===e}));if(-1!==t&&this.api.openedModals.splice(t,1),this.api.openedModals.length>0){var n=this.api.openedModals[this.api.openedModals.length-1];(n.focusRetain||n.focusTrap)&&n.$refs.vfmContainer.focus(),!n.hideOverlay&&(n.visibility.overlay=!0)}this.drag&&this.removeDragDown(),this.resize&&this.removeResizeDown(),this.state=null,this.startTransitionLeave()},startTransitionEnter:function(){this.visibility.overlay=!0,this.visibility.modal=!0},startTransitionLeave:function(){this.visibility.overlay=!1,this.visibility.modal=!1},handleLockScroll:function(){var e=this;this.value&&this.$nextTick((function(){e.lockScroll?k(e.$refs.vfmContainer,{reserveScrollBarGap:!0}):_(e.$refs.vfmContainer)}))},getAttachElement:function(){return!1!==this.attach&&("string"==typeof this.attach?!!window&&window.document.querySelector(this.attach):this.attach)},beforeOverlayEnter:function(){this.overlayTransitionState=M},afterOverlayEnter:function(){this.overlayTransitionState=D},beforeOverlayLeave:function(){this.overlayTransitionState=j},afterOverlayLeave:function(){this.overlayTransitionState=R},beforeModalEnter:function(){this.modalTransitionState=M},afterModalEnter:function(){this.modalTransitionState=D,(this.focusRetain||this.focusTrap)&&this.$refs.vfmContainer.focus(),this.focusTrap&&this.$focusTrap.enable(this.$refs.vfmContainer),this.drag&&this.addDragDown(),this.resize&&this.addResizeDown(),this.$emit("opened",this.createModalEvent({type:"opened"})),this.resolveToggle("show")},beforeModalLeave:function(){this.modalTransitionState=j,this.$focusTrap.enabled()&&this.$focusTrap.disable()},afterModalLeave:function(){this.modalTransitionState=R,this.modalStackIndex=null,this.lockScroll&&_(this.$refs.vfmContainer),this.keepChangedStyle||(this.dragResizeStyle={});var e=!1,t=this.createModalEvent({type:"closed",stop:function(){e=!0}});this.$emit("closed",t),this.resolveToggle("hide"),e||(this.params={})},onClickContainer:function(){"resize:move"!==this.state&&(this.$emit("click-outside",this.createModalEvent({type:"click-outside"})),this.clickToClose&&this.$emit("input",!1))},onEsc:function(){this.visible&&this.escToClose&&this.$emit("input",!1)},createModalEvent:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o({ref:this},e)},emitEvent:function(e,t){var n=!1,i=this.createModalEvent({type:e,stop:function(){n=!0}});return this.$emit(e,i),!!n&&(this.stopEvent=!0,this.$emit("input",t),!0)},emitState:function(e,t,n){this.state="".concat(t,":").concat(n),this.$emit(this.state,e)},toggle:function(e,t){var n=arguments,i=this;return new Promise((function(o,r){i.resolveToggle=function(e){o(e),i.resolveToggle=$},i.rejectToggle=function(e){r(e),i.rejectToggle=$};var a="boolean"==typeof e?e:!i.value;a&&2===n.length&&(i.params=t),i.$emit("input",a)}))},pointerDown:function(e){var t=this;e.stopPropagation();var n,i="resize",a="drag",s=this.$refs,l=s.vfmContainer,c=s.vfmContent,v=e.target.getAttribute("direction");if(v)n=i;else{if(!function(e,t,n){return""===n||r(t.querySelectorAll(n)).includes(e.target)}(e,c,this.dragSelector))return;n=a}this.emitState(e,n,"start");var p,y,g,b,w=u(e),x=l.getBoundingClientRect(),S=c.getBoundingClientRect(),E="absolute"===window.getComputedStyle(c).position,T=f(this.dragResizeStyle.top),z=f(this.dragResizeStyle.left),C=function(){if(t.fitParent){var e={absolute:function(){return{minTop:0,minLeft:0,maxTop:x.height-S.height,maxLeft:x.width-S.width}},relative:function(){return{minTop:T+x.top-S.top,minLeft:z+x.left-S.left,maxTop:T+x.bottom-S.bottom,maxLeft:z+x.right-S.right}}};return E?e.absolute():e.relative()}return{}}(),O=n===i&&(p=document.body,y="cursor",g=N[v],b=p.style[y],p.style[y]=g,function(){p.style[y]=b}),k=function(e){e.stopPropagation(),t.emitState(e,n,"move");var r,s,l=u(e),c={x:l.x-w.x,y:l.y-w.y};n===i&&(c=t.getResizeOffset(v,c,x,S,E)),E?(r=S.top-x.top+c.y,s=S.left-x.left+c.x):(r=T+c.y,s=z+c.x),n===a&&t.fitParent&&(r=d(C.minTop,r,C.maxTop),s=d(C.minLeft,s,C.maxLeft));var f=o(o(o({position:"relative",top:r+"px",left:s+"px",margin:"unset",touchAction:"none"},E&&{position:"absolute",transform:"unset",width:S.width+"px",height:S.height+"px"}),c.width&&{width:c.width+"px"}),c.height&&{height:c.height+"px"});t.dragResizeStyle=o(o({},t.dragResizeStyle),f)};h("move",document,k),h("up",document,(function e(o){o.stopPropagation(),n===i&&O&&O(),setTimeout((function(){t.emitState(o,n,"end")})),m("move",document,k),m("up",document,e)}))},addDragDown:function(){h("down",this.$refs.vfmContent,this.pointerDown),this.dragResizeStyle.touchAction="none"},removeDragDown:function(){m("down",this.$refs.vfmContent,this.pointerDown)},addResizeDown:function(){var e=this;this.visibility.resize=!0,this.$nextTick((function(){h("down",e.$refs.vfmResize,e.pointerDown)}))},removeResizeDown:function(){m("down",this.$refs.vfmResize,this.pointerDown),this.visibility.resize=!1},getResizeOffset:function(e,t,i,a,s){var l=this,c=function(e,t,n,o){var r,s=a[t],c=i[e]-a[e],u=(r=t).charAt(0).toUpperCase()+r.slice(1);return{axis:n,edgeName:t,min:o?c:-s,max:o?s:c,minEdge:l["min".concat(u)],maxEdge:l["max".concat(u)],getEdge:function(e){return a[t]-e*(o?1:-1)},getOffsetAxis:function(e,n){var i=a[t]-e;return n?o?i:0:(o?1:-1)*i/2}}},u={t:["top","height","y",!0],b:["bottom","height","y",!1],l:["left","width","x",!0],r:["right","width","x",!1]},f={x:0,y:0};return e.split("").forEach((function(e){var i=c.apply(void 0,r(u[e]));f=o(o({},f),function(e){var i,o=t[e.axis];o=l.fitParent?d(e.min,o,e.max):o;var r=d(e.minEdge,e.getEdge(o),e.maxEdge);return o=e.getOffsetAxis(r,s),n(i={},e.edgeName,r),n(i,e.axis,o),i}(i))})),f}}};var P,I=function(e,t,n,i,o,r,a,s,l,c){"boolean"!=typeof a&&(l=s,s=a,a=!1);var u,d="function"==typeof n?n.options:n;if(e&&e.render&&(d.render=e.render,d.staticRenderFns=e.staticRenderFns,d._compiled=!0,o&&(d.functional=!0)),i&&(d._scopeId=i),r?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,l(e)),e&&e._registeredComponents&&e._registeredComponents.add(r)},d._ssrRegister=u):t&&(u=a?function(e){t.call(this,c(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,s(e))}),u)if(d.functional){var f=d.render;d.render=function(e,t){return u.call(t),f(e,t)}}else{var v=d.beforeCreate;d.beforeCreate=v?[].concat(v,u):[u]}return n},H="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());var U={};var F=I({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.ssr||e.visible?n("div",{directives:[{name:"show",rawName:"v-show",value:!e.ssr||e.visible,expression:"!ssr || visible"}],staticClass:"vfm vfm--inset",class:[!1===e.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":e.preventClick}],style:e.bindStyle,on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.onEsc(t)}}},[n("transition",e._b({ref:"vfmOverlayTransition",on:{"before-enter":e.beforeOverlayEnter,"after-enter":e.afterOverlayEnter,"before-leave":e.beforeOverlayLeave,"after-leave":e.afterOverlayLeave}},"transition",e.computedOverlayTransition,!1),[n("div",{directives:[{name:"show",rawName:"v-show",value:!e.hideOverlay&&e.visibility.overlay,expression:"!hideOverlay && visibility.overlay"}],staticClass:"vfm__overlay vfm--overlay vfm--absolute vfm--inset",class:e.overlayClass,style:e.overlayStyle})]),e._v(" "),n("transition",e._b({ref:"vfmTransition",on:{"before-enter":e.beforeModalEnter,"after-enter":e.afterModalEnter,"before-leave":e.beforeModalLeave,"after-leave":e.afterModalLeave}},"transition",e.computedTransition,!1),[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visibility.modal,expression:"visibility.modal"}],ref:"vfmContainer",staticClass:"vfm__container vfm--absolute vfm--inset vfm--outline-none",class:e.classes,style:e.styles,attrs:{"aria-expanded":e.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1"},on:{click:function(t){return t.target!==t.currentTarget?null:e.onClickContainer(t)}}},[n("div",{ref:"vfmContent",staticClass:"vfm__content",class:[e.contentClass,{"vfm--prevent-auto":e.preventClick}],style:e.bindContentStyle},[e._t("default",null,{params:e.params,close:function(){return e.$emit("input",!1)}}),e._v(" "),e.visibility.resize&&e.visibility.modal?n("div",{ref:"vfmResize",staticClass:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},e._l(e.resizeDirections,(function(e){return n("div",{key:e,staticClass:"vfm--absolute vfm--prevent-auto",class:"vfm--resize-"+e,attrs:{direction:e}})})),0):e._e()],2)])])],1):e._e()},staticRenderFns:[]},(function(e){e&&e("data-v-30a92505_0",{source:".vfm--fixed[data-v-30a92505]{position:fixed}.vfm--absolute[data-v-30a92505]{position:absolute}.vfm--inset[data-v-30a92505]{top:0;right:0;bottom:0;left:0}.vfm--overlay[data-v-30a92505]{background-color:rgba(0,0,0,.5)}.vfm--prevent-none[data-v-30a92505]{pointer-events:none}.vfm--prevent-auto[data-v-30a92505]{pointer-events:auto}.vfm--outline-none[data-v-30a92505]:focus{outline:0}.vfm-enter-active[data-v-30a92505],.vfm-leave-active[data-v-30a92505]{transition:opacity .2s}.vfm-enter[data-v-30a92505],.vfm-leave-to[data-v-30a92505]{opacity:0}.vfm--touch-none[data-v-30a92505]{touch-action:none}.vfm--select-none[data-v-30a92505]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vfm--resize-bl[data-v-30a92505],.vfm--resize-br[data-v-30a92505],.vfm--resize-tl[data-v-30a92505],.vfm--resize-tr[data-v-30a92505]{width:12px;height:12px;z-index:10}.vfm--resize-t[data-v-30a92505]{top:-6px;left:0;width:100%;height:12px;cursor:ns-resize}.vfm--resize-tr[data-v-30a92505]{top:-6px;right:-6px;cursor:nesw-resize}.vfm--resize-r[data-v-30a92505]{top:0;right:-6px;width:12px;height:100%;cursor:ew-resize}.vfm--resize-br[data-v-30a92505]{bottom:-6px;right:-6px;cursor:nwse-resize}.vfm--resize-b[data-v-30a92505]{bottom:-6px;left:0;width:100%;height:12px;cursor:ns-resize}.vfm--resize-bl[data-v-30a92505]{bottom:-6px;left:-6px;cursor:nesw-resize}.vfm--resize-l[data-v-30a92505]{top:0;left:-6px;width:12px;height:100%;cursor:ew-resize}.vfm--resize-tl[data-v-30a92505]{top:-6px;left:-6px;cursor:nwse-resize}",map:void 0,media:void 0})}),B,"data-v-30a92505",false,undefined,!1,(function(e){return function(e,t){return function(e,t){var n=H?t.media||"default":e,i=U[n]||(U[n]={ids:new Set,styles:[]});if(!i.ids.has(e)){i.ids.add(e);var o=t.source;if(t.map&&(o+="\n/*# sourceURL="+t.map.sources[0]+" */",o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),i.element||(i.element=document.createElement("style"),i.element.type="text/css",t.media&&i.element.setAttribute("media",t.media),void 0===P&&(P=document.head||document.getElementsByTagName("head")[0]),P.appendChild(i.element)),"styleSheet"in i.element)i.styles.push(o),i.element.styleSheet.cssText=i.styles.filter(Boolean).join("\n");else{var r=i.ids.size-1,a=document.createTextNode(o),s=i.element.childNodes;s[r]&&i.element.removeChild(s[r]),s.length?i.element.insertBefore(a,s[r]):i.element.appendChild(a)}}}(e,t)}}),void 0,void 0),K=I({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"modals-container"},e._l(e.api.dynamicModals,(function(t,i){return n(t.component,e._g(e._b({key:t.id,tag:"component",on:{closed:function(t){return e.slice(i)},"before-open":function(n){return e.beforeOpen(n,t,i)},opened:t.opened},scopedSlots:e._u([e._l(t.slots,(function(t,i){return{key:i,fn:function(){return[e.isString(t)?n("div",{key:i,domProps:{innerHTML:e._s(t)}}):n(t.component,e._g(e._b({key:i,tag:"component"},"component",t.bind,!1),t.on))]},proxy:!0}}))],null,!0),model:{value:t.value,callback:function(n){e.$set(t,"value",n)},expression:"modal.value"}},"component",t.bind,!1),t.on))})),1)},staticRenderFns:[]},undefined,{props:{},computed:{api:function(){return this[this.$_options.key]}},methods:{slice:function(e){this.api.dynamicModals.splice(e,1)},beforeOpen:function(e,t,n){var i=this;e.ref.params=t.params,this.$nextTick((function(){t.value||(i.slice(n),t.reject("show"))}))},isString:function(e){return"string"==typeof e}}},undefined,false,undefined,!1,void 0,void 0,void 0);function V(e,t){var n=o({},e);return Object.assign(n.props,{$_options:{type:Object,default:function(){return t}}}),n}function W(t,n){var i=function(t,n){var i;return function(){return i={show:function(t){for(var i=this,o=arguments.length,r=new Array(o>1?o-1:0),a=1;a1?t-1:0),i=1;ie.length)&&(t=e.length);for(var n=0,i=new Array(t);n1),S=[],E=!1,T=0,z=-1,C=function(e,t){var n=!1;return function(e){for(var t=[];e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t}(e).forEach((function(e){(function(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;var t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&function(e,t){return!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0)}(e,t)&&(n=!0)})),n},O=function(e){return S.some((function(){return C(e,-T)}))},k=function(e){var t=e||window.event;return!!O(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},_=function(e,t){if(e){if(!S.some((function(t){return t.targetElement===e}))){var n={targetElement:e,options:t||{}};S=[].concat(a(S),[n]),x?(e.ontouchstart=function(e){1===e.targetTouches.length&&(z=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&function(e,t){T=e.targetTouches[0].clientY-z,!O(e.target)&&(t&&0===t.scrollTop&&T>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(t)&&T<0?k(e):e.stopPropagation())}(t,e)},E||(document.addEventListener("touchmove",k,y?{passive:!1}:void 0),E=!0)):function(e){if(void 0===w){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){var i=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);w=document.body.style.paddingRight,document.body.style.paddingRight="".concat(i+n,"px")}}void 0===g&&(g=document.body.style.overflow,document.body.style.overflow="hidden")}(t)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},M=function(e){e?(S=S.filter((function(t){return t.targetElement!==e})),x?(e.ontouchstart=null,e.ontouchmove=null,E&&0===S.length&&(document.removeEventListener("touchmove",k,y?{passive:!1}:void 0),E=!1)):S.length||(void 0!==w&&(document.body.style.paddingRight=w,w=void 0),void 0!==g&&(document.body.style.overflow=g,g=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")},D=function(){},$="enter",R="entering",L="leave",j="leavng";var A={type:[String,Object,Array],default:""},B={type:[Object,Array],default:function(){return{}}},I={t:"ns-resize",tr:"nesw-resize",r:"ew-resize",br:"nwse-resize",b:"ns-resize",bl:"nesw-resize",l:"ew-resize",tl:"nwse-resize"},P={props:{name:{type:String,default:null},value:{type:Boolean,default:!1},ssr:{type:Boolean,default:!0},classes:A,overlayClass:A,contentClass:A,styles:B,overlayStyle:B,contentStyle:B,lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},preventClick:{type:Boolean,default:!1},attach:{type:null,default:!1,validator:function(e){var n=t(e);return"boolean"===n||"string"===n||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:function(){return["t","tr","r","br","b","bl","l","tl"]},validator:function(e){return["t","tr","r","br","b","bl","l","tl"].filter((function(t){return-1!==e.indexOf(t)})).length===e.length}},minWidth:{type:Number,default:0},minHeight:{type:Number,default:0},maxWidth:{type:Number,default:1/0},maxHeight:{type:Number,default:1/0}},data:function(){return{modalStackIndex:null,visible:!1,visibility:{modal:!1,overlay:!1,resize:!1},overlayTransitionState:null,modalTransitionState:null,stopEvent:!1,params:{},dragResizeStyle:{},resolveToggle:D,rejectToggle:D,state:null}},computed:{isComponentReadyToBeDestroyed:function(){return(this.hideOverlay||this.overlayTransitionState===L)&&this.modalTransitionState===L},calculateZIndex:function(){return!1===this.zIndex?!!this.zIndexAuto&&+this.zIndexBase+2*(this.modalStackIndex||0):this.zIndex},bindStyle:function(){return r({},!1!==this.calculateZIndex&&{zIndex:this.calculateZIndex})},bindContentStyle:function(){var e=[this.dragResizeStyle];return Array.isArray(this.contentStyle)?e.push.apply(e,a(this.contentStyle)):e.push(this.contentStyle),e},computedTransition:function(){return"string"==typeof this.transition?{name:this.transition}:r({},this.transition)},computedOverlayTransition:function(){return"string"==typeof this.overlayTransition?{name:this.overlayTransition}:r({},this.overlayTransition)}},watch:{value:function(e){if(this.stopEvent)this.stopEvent=!1;else if(this.mounted(),!e){if(this.emitEvent("before-close",!0))return void this.rejectToggle("hide");this.close()}},lockScroll:"handleLockScroll",hideOverlay:function(e){this.value&&!e&&(this.visibility.overlay=!0)},attach:"mounted",isComponentReadyToBeDestroyed:function(e){e&&(this.visible=!1)},drag:function(e){this.visible&&(e?this.addDragDown():this.removeDragDown())},resize:function(e){this.visible&&(e?this.addResizeDown():this.removeResizeDown())},keepChangedStyle:function(e){e||(this.dragResizeStyle={})}},created:function(){this.api.modals.push(this)},mounted:function(){this.$focusTrap=new c,this.mounted()},beforeDestroy:function(){var e,t=this;this.close(),this.lockScroll&&this.$refs.vfmContainer&&M(this.$refs.vfmContainer),null==this||null===(e=this.$el)||void 0===e||e.remove();var n=this.api.modals.findIndex((function(e){return e===t}));this.api.modals.splice(n,1)},methods:{mounted:function(){var e=this;if(this.value){if(this.emitEvent("before-open",!1))return void this.rejectToggle("show");var t=this.getAttachElement();if(t||!1===this.attach){!1!==this.attach&&t.appendChild(this.$el);var n=this.api.openedModals.findIndex((function(t){return t===e}));-1!==n&&this.api.openedModals.splice(n,1),this.api.openedModals.push(this),this.modalStackIndex=this.api.openedModals.length-1,this.handleLockScroll(),this.api.openedModals.filter((function(t){return t!==e})).forEach((function(e,n){e.getAttachElement()===t&&(e.modalStackIndex=n,e.visibility.overlay=!1)})),this.visible=!0,this.$nextTick((function(){e.startTransitionEnter()}))}else!1!==t&&console.warn("Unable to locate target ".concat(this.attach))}},close:function(){var e=this,t=this.api.openedModals.findIndex((function(t){return t===e}));if(-1!==t&&this.api.openedModals.splice(t,1),this.api.openedModals.length>0){var n=this.api.openedModals[this.api.openedModals.length-1];(n.focusRetain||n.focusTrap)&&n.$refs.vfmContainer.focus(),!n.hideOverlay&&(n.visibility.overlay=!0)}this.drag&&this.removeDragDown(),this.resize&&this.removeResizeDown(),this.state=null,this.startTransitionLeave()},startTransitionEnter:function(){this.visibility.overlay=!0,this.visibility.modal=!0},startTransitionLeave:function(){this.visibility.overlay=!1,this.visibility.modal=!1},handleLockScroll:function(){var e=this;this.value&&this.$nextTick((function(){e.lockScroll?_(e.$refs.vfmContainer,{reserveScrollBarGap:!0}):M(e.$refs.vfmContainer)}))},getAttachElement:function(){return!1!==this.attach&&("string"==typeof this.attach?!!window&&window.document.querySelector(this.attach):this.attach)},beforeOverlayEnter:function(){this.overlayTransitionState=R},afterOverlayEnter:function(){this.overlayTransitionState=$},beforeOverlayLeave:function(){this.overlayTransitionState=j},afterOverlayLeave:function(){this.overlayTransitionState=L},beforeModalEnter:function(){this.modalTransitionState=R},afterModalEnter:function(){this.modalTransitionState=$,(this.focusRetain||this.focusTrap)&&this.$refs.vfmContainer.focus(),this.focusTrap&&this.$focusTrap.enable(this.$refs.vfmContainer),this.drag&&this.addDragDown(),this.resize&&this.addResizeDown(),this.$emit("opened",this.createModalEvent({type:"opened"})),this.resolveToggle("show")},beforeModalLeave:function(){this.modalTransitionState=j,this.$focusTrap.enabled()&&this.$focusTrap.disable()},afterModalLeave:function(){this.modalTransitionState=L,this.modalStackIndex=null,this.lockScroll&&M(this.$refs.vfmContainer),this.keepChangedStyle||(this.dragResizeStyle={});var e=!1,t=this.createModalEvent({type:"closed",stop:function(){e=!0}});this.$emit("closed",t),this.resolveToggle("hide"),e||(this.params={})},onClickContainer:function(){"resize:move"!==this.state&&(this.$emit("click-outside",this.createModalEvent({type:"click-outside"})),this.clickToClose&&this.$emit("input",!1))},onEsc:function(){this.visible&&this.escToClose&&this.$emit("input",!1)},createModalEvent:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r({ref:this},e)},emitEvent:function(e,t){var n=!1,i=this.createModalEvent({type:e,stop:function(){n=!0}});return this.$emit(e,i),!!n&&(this.stopEvent=!0,this.$emit("input",t),!0)},emitState:function(e,t,n){this.state="".concat(t,":").concat(n),this.$emit(this.state,e)},toggle:function(e,t){var n=arguments,i=this;return new Promise((function(o,r){i.resolveToggle=function(e){o(e),i.resolveToggle=D},i.rejectToggle=function(e){r(e),i.rejectToggle=D};var a="boolean"==typeof e?e:!i.value;a&&2===n.length&&(i.params=t),i.$emit("input",a)}))},pointerDown:function(e){var t=this;e.stopPropagation();var n,i="resize",o="drag",s=this.$refs,l=s.vfmContainer,d=s.vfmContent,c=e.target.getAttribute("direction");if(c)n=i;else{if(!function(e,t,n){return""===n||a(t.querySelectorAll(n)).includes(e.target)}(e,d,this.dragSelector))return;n=o}this.emitState(e,n,"start");var h,y,b,g,w=u(e),x=l.getBoundingClientRect(),S=d.getBoundingClientRect(),E="absolute"===window.getComputedStyle(d).position,T=v(this.dragResizeStyle.top),z=v(this.dragResizeStyle.left),C=function(){if(t.fitParent){var e={absolute:function(){return{minTop:0,minLeft:0,maxTop:x.height-S.height,maxLeft:x.width-S.width}},relative:function(){return{minTop:T+x.top-S.top,minLeft:z+x.left-S.left,maxTop:T+x.bottom-S.bottom,maxLeft:z+x.right-S.right}}};return E?e.absolute():e.relative()}return{}}(),O=n===i&&(h=document.body,y="cursor",b=I[c],g=h.style[y],h.style[y]=b,function(){h.style[y]=g}),k=function(e){e.stopPropagation(),t.emitState(e,n,"move");var a,s,l=u(e),d={x:l.x-w.x,y:l.y-w.y};n===i&&(d=t.getResizeOffset(c,d,x,S,E)),E?(a=S.top-x.top+d.y,s=S.left-x.left+d.x):(a=T+d.y,s=z+d.x),n===o&&t.fitParent&&(a=f(C.minTop,a,C.maxTop),s=f(C.minLeft,s,C.maxLeft));var v=r(r(r({position:"relative",top:a+"px",left:s+"px",margin:"unset",touchAction:"none"},E&&{position:"absolute",transform:"unset",width:S.width+"px",height:S.height+"px"}),d.width&&{width:d.width+"px"}),d.height&&{height:d.height+"px"});t.dragResizeStyle=r(r({},t.dragResizeStyle),v)};m("move",document,k),m("up",document,(function e(o){o.stopPropagation(),n===i&&O&&O(),setTimeout((function(){t.emitState(o,n,"end")})),p("move",document,k),p("up",document,e)}))},addDragDown:function(){m("down",this.$refs.vfmContent,this.pointerDown),this.dragResizeStyle.touchAction="none"},removeDragDown:function(){p("down",this.$refs.vfmContent,this.pointerDown)},addResizeDown:function(){var e=this;this.visibility.resize=!0,this.$nextTick((function(){m("down",e.$refs.vfmResize,e.pointerDown)}))},removeResizeDown:function(){p("down",this.$refs.vfmResize,this.pointerDown),this.visibility.resize=!1},getResizeOffset:function(e,t,n,o,s){var l=this,d=function(e,t,i,r){var a,s=o[t],d=n[e]-o[e],c=(a=t).charAt(0).toUpperCase()+a.slice(1);return{axis:i,edgeName:t,min:r?d:-s,max:r?s:d,minEdge:l["min".concat(c)],maxEdge:l["max".concat(c)],getEdge:function(e){return o[t]-e*(r?1:-1)},getOffsetAxis:function(e,n){var i=o[t]-e;return n?r?i:0:(r?1:-1)*i/2}}},c={t:["top","height","y",!0],b:["bottom","height","y",!1],l:["left","width","x",!0],r:["right","width","x",!1]},u={x:0,y:0};return e.split("").forEach((function(e){var n=d.apply(void 0,a(c[e]));u=r(r({},u),function(e){var n,o=t[e.axis];o=l.fitParent?f(e.min,o,e.max):o;var r=f(e.minEdge,e.getEdge(o),e.maxEdge);return o=e.getOffsetAxis(r,s),i(n={},e.edgeName,r),i(n,e.axis,o),n}(n))})),u}}};var N,V=function(e,t,n,i,o,r,a,s,l,d){"boolean"!=typeof a&&(l=s,s=a,a=!1);var c,u="function"==typeof n?n.options:n;if(e&&e.render&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0,o&&(u.functional=!0)),i&&(u._scopeId=i),r?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,l(e)),e&&e._registeredComponents&&e._registeredComponents.add(r)},u._ssrRegister=c):t&&(c=a?function(e){t.call(this,d(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,s(e))}),c)if(u.functional){var f=u.render;u.render=function(e,t){return c.call(t),f(e,t)}}else{var v=u.beforeCreate;u.beforeCreate=v?[].concat(v,c):[c]}return n},H="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());var U={};var K=V({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.ssr||e.visible?n("div",{directives:[{name:"show",rawName:"v-show",value:!e.ssr||e.visible,expression:"!ssr || visible"}],staticClass:"vfm vfm--inset",class:[!1===e.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":e.preventClick}],style:e.bindStyle,on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.onEsc(t)}}},[n("transition",e._b({ref:"vfmOverlayTransition",on:{"before-enter":e.beforeOverlayEnter,"after-enter":e.afterOverlayEnter,"before-leave":e.beforeOverlayLeave,"after-leave":e.afterOverlayLeave}},"transition",e.computedOverlayTransition,!1),[n("div",{directives:[{name:"show",rawName:"v-show",value:!e.hideOverlay&&e.visibility.overlay,expression:"!hideOverlay && visibility.overlay"}],staticClass:"vfm__overlay vfm--overlay vfm--absolute vfm--inset",class:e.overlayClass,style:e.overlayStyle})]),e._v(" "),n("transition",e._b({ref:"vfmTransition",on:{"before-enter":e.beforeModalEnter,"after-enter":e.afterModalEnter,"before-leave":e.beforeModalLeave,"after-leave":e.afterModalLeave}},"transition",e.computedTransition,!1),[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visibility.modal,expression:"visibility.modal"}],ref:"vfmContainer",staticClass:"vfm__container vfm--absolute vfm--inset vfm--outline-none",class:e.classes,style:e.styles,attrs:{"aria-expanded":e.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1"},on:{click:function(t){return t.target!==t.currentTarget?null:e.onClickContainer(t)}}},[n("div",{ref:"vfmContent",staticClass:"vfm__content",class:[e.contentClass,{"vfm--prevent-auto":e.preventClick}],style:e.bindContentStyle},[e._t("default",null,{params:e.params,close:function(){return e.$emit("input",!1)}}),e._v(" "),e.visibility.resize&&e.visibility.modal?n("div",{ref:"vfmResize",staticClass:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},e._l(e.resizeDirections,(function(e){return n("div",{key:e,staticClass:"vfm--absolute vfm--prevent-auto",class:"vfm--resize-"+e,attrs:{direction:e}})})),0):e._e()],2)])])],1):e._e()},staticRenderFns:[]},(function(e){e&&e("data-v-05b5dbd4_0",{source:".vfm--fixed[data-v-05b5dbd4]{position:fixed}.vfm--absolute[data-v-05b5dbd4]{position:absolute}.vfm--inset[data-v-05b5dbd4]{top:0;right:0;bottom:0;left:0}.vfm--overlay[data-v-05b5dbd4]{background-color:rgba(0,0,0,.5)}.vfm--prevent-none[data-v-05b5dbd4]{pointer-events:none}.vfm--prevent-auto[data-v-05b5dbd4]{pointer-events:auto}.vfm--outline-none[data-v-05b5dbd4]:focus{outline:0}.vfm-enter-active[data-v-05b5dbd4],.vfm-leave-active[data-v-05b5dbd4]{transition:opacity .2s}.vfm-enter[data-v-05b5dbd4],.vfm-leave-to[data-v-05b5dbd4]{opacity:0}.vfm--touch-none[data-v-05b5dbd4]{touch-action:none}.vfm--select-none[data-v-05b5dbd4]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vfm--resize-bl[data-v-05b5dbd4],.vfm--resize-br[data-v-05b5dbd4],.vfm--resize-tl[data-v-05b5dbd4],.vfm--resize-tr[data-v-05b5dbd4]{width:12px;height:12px;z-index:10}.vfm--resize-t[data-v-05b5dbd4]{top:-6px;left:0;width:100%;height:12px;cursor:ns-resize}.vfm--resize-tr[data-v-05b5dbd4]{top:-6px;right:-6px;cursor:nesw-resize}.vfm--resize-r[data-v-05b5dbd4]{top:0;right:-6px;width:12px;height:100%;cursor:ew-resize}.vfm--resize-br[data-v-05b5dbd4]{bottom:-6px;right:-6px;cursor:nwse-resize}.vfm--resize-b[data-v-05b5dbd4]{bottom:-6px;left:0;width:100%;height:12px;cursor:ns-resize}.vfm--resize-bl[data-v-05b5dbd4]{bottom:-6px;left:-6px;cursor:nesw-resize}.vfm--resize-l[data-v-05b5dbd4]{top:0;left:-6px;width:12px;height:100%;cursor:ew-resize}.vfm--resize-tl[data-v-05b5dbd4]{top:-6px;left:-6px;cursor:nwse-resize}",map:void 0,media:void 0})}),P,"data-v-05b5dbd4",false,undefined,!1,(function(e){return function(e,t){return function(e,t){var n=H?t.media||"default":e,i=U[n]||(U[n]={ids:new Set,styles:[]});if(!i.ids.has(e)){i.ids.add(e);var o=t.source;if(t.map&&(o+="\n/*# sourceURL="+t.map.sources[0]+" */",o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),i.element||(i.element=document.createElement("style"),i.element.type="text/css",t.media&&i.element.setAttribute("media",t.media),void 0===N&&(N=document.head||document.getElementsByTagName("head")[0]),N.appendChild(i.element)),"styleSheet"in i.element)i.styles.push(o),i.element.styleSheet.cssText=i.styles.filter(Boolean).join("\n");else{var r=i.ids.size-1,a=document.createTextNode(o),s=i.element.childNodes;s[r]&&i.element.removeChild(s[r]),s.length?i.element.insertBefore(a,s[r]):i.element.appendChild(a)}}}(e,t)}}),void 0,void 0),F=V({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"v-dynamic-modals"},e._l(e.api.dynamicModals,(function(t,i){return n(t.component,e._g(e._b({key:t.id,tag:"component",on:{closed:function(t){return e.slice(i)},"before-open":function(n){return e.beforeOpen(n,t,i)},opened:t.opened},scopedSlots:e._u([e._l(t.slots,(function(t,i){return{key:i,fn:function(){return[e.isString(t)?n("div",{key:i,domProps:{innerHTML:e._s(t)}}):n(t.component,e._g(e._b({key:i,tag:"component"},"component",t.bind,!1),t.on))]},proxy:!0}}))],null,!0),model:{value:t.value,callback:function(n){e.$set(t,"value",n)},expression:"modal.value"}},"component",t.bind,!1),t.on))})),1)},staticRenderFns:[]},undefined,{props:{},methods:{slice:function(e){this.api.dynamicModals.splice(e,1)},beforeOpen:function(e,t,n){var i=this;e.ref.params=t.params,this.$nextTick((function(){t.value||(i.slice(n),t.reject("show"))}))},isString:function(e){return"string"==typeof e}}},undefined,false,undefined,!1,void 0,void 0,void 0);function W(e,t){var n=r(r({},e),{},{props:r({},e.props)});return Object.assign(n.props,{api:{type:Object,default:function(){return t}}}),n}function Y(e){var t=W(K,e);return e._setDefaultModal(t),t}function q(e){return W(F,e)}var X=0,Z=ee(),G=Z.$modal,J=Z.VModal,Q=Z.VDynamicModals;function ee(){var n,i=(n=null,e.observable({show:function(e){for(var i=this,o=arguments.length,r=new Array(o>1?o-1:0),a=1;a1?t-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},n=0===X?Z:ee(),i=n.$modal,o=n.VModal,r=n.VDynamicModals;X+=1;var a=t.key||"$modal",s=t.name||"VModal",l=t.containerName||"VDynamicModals";e.prototype[a]=i,e.component(s,o),e.component(l,r)}te.install=ne;export{G as $modal,Q as VDynamicModals,J as VModal,ee as createVfm,ne as installVfm,te as vfmPlugin}; //# sourceMappingURL=VueFinalModal.esm.js.map diff --git a/dist/VueFinalModal.esm.js.map b/dist/VueFinalModal.esm.js.map index bdf4cbb2..860e0a22 100644 --- a/dist/VueFinalModal.esm.js.map +++ b/dist/VueFinalModal.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"VueFinalModal.esm.js","sources":["../lib/utils/focusTrap.js","../lib/utils/dragResize.js","../lib/utils/bodyScrollLock.js","../lib/VueFinalModal.vue","../lib/PluginCore.js","../lib/utils/errors.js","../lib/Plugin.js"],"sourcesContent":["// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n this.enable = this.enable.bind(this)\n this.disable = this.disable.bind(this)\n this.firstElement = this.firstElement.bind(this)\n this.lastElement = this.lastElement.bind(this)\n }\n\n lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n firstElement() {\n return this.elements[0] || null\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement())) {\n this.lastElement().focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement())) {\n this.firstElement().focus()\n event.preventDefault()\n return\n }\n }\n\n enabled() {\n return !!this.root\n }\n\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\nexport default FocusTrap\n","export const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nconst pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n","// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n","\n\n\n\n\n","import VueFinalModal from './VueFinalModal.vue'\nimport ModalsContainer from './ModalsContainer.vue'\n\nfunction assignOptions(component, options) {\n const _component = { ...component }\n Object.assign(_component.props, {\n $_options: { type: Object, default: () => options }\n })\n return _component\n}\n\nfunction createVfm(Vue, options) {\n let vfm\n\n return function() {\n vfm = {\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n return Promise.allSettled([\n new Promise((resolve, reject) => {\n const defaultModal = {\n value: true,\n id: Symbol('dynamicModal'),\n component: options.componentName,\n bind: {},\n slots: {},\n on: {},\n params: args[0],\n reject,\n opened() {\n resolve('show')\n }\n }\n this.dynamicModals.push(Object.assign(defaultModal, modal))\n })\n ])\n }\n }\n },\n hide(...names) {\n return this.toggle(names, false)\n },\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.name))\n },\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n },\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.name))\n },\n dynamicModals: [],\n openedModals: [],\n modals: []\n }\n return Vue.observable(vfm)\n }\n}\n\nexport function bindPrototype(Vue, options) {\n const vfm = createVfm(Vue, options)()\n Object.defineProperty(Vue.prototype, options.key, {\n get() {\n return vfm\n }\n })\n}\n\nexport function registModal(Vue, options) {\n Vue.component(options.componentName, assignOptions(VueFinalModal, options))\n}\nexport function registContainer(Vue, options) {\n Vue.component(options.dynamicContainerName, assignOptions(ModalsContainer, options))\n}\n","export const DUPLICATE_KEY = '[vue-final-modal] Duplicate registration API key of VueFinalModal.'\n\nexport const DUPLICATE_COMPONENT = '[vue-final-modal] Duplicate registration componentName of VueFinalModal.'\n\nexport const DUPLICATE_DYNAMIC_CONTAINER =\n '[vue-final-modal] Duplicate registration dynamicContainerName of ModalsContainer.'\n","import { bindPrototype, registModal, registContainer } from './PluginCore'\nimport { DUPLICATE_KEY, DUPLICATE_COMPONENT, DUPLICATE_DYNAMIC_CONTAINER } from './utils/errors'\n\nconst defaultOptions = {\n componentName: 'VueFinalModal',\n dynamicContainerName: 'ModalsContainer',\n key: '$vfm'\n}\n\nconst validPlugin = (duplicateKey, duplicateComponent, duplicateDynamicContainer) => {\n if (!(duplicateKey || duplicateComponent || duplicateDynamicContainer)) return true\n\n if (typeof window === 'undefined') return false\n\n duplicateKey && console.error(DUPLICATE_KEY)\n duplicateComponent && console.error(DUPLICATE_COMPONENT)\n duplicateDynamicContainer && console.error(DUPLICATE_DYNAMIC_CONTAINER)\n\n return false\n}\n\nconst Plugin = pluginOptions => ({\n install(Vue, options) {\n const _options = Object.assign({}, defaultOptions, pluginOptions, options)\n const duplicateKey = Vue.prototype[_options.key]\n const duplicateComponent = Vue.options.components[_options.componentName]\n const duplicateDynamicContainer = Vue.options.components[_options.dynamicContainerName]\n\n if (validPlugin(duplicateKey, duplicateComponent, duplicateDynamicContainer)) {\n bindPrototype(Vue, _options)\n registModal(Vue, _options)\n registContainer(Vue, _options)\n }\n }\n})\n\nexport default Plugin\n"],"names":["queryFocusableElements","element","selector","querySelectorAll","isFocused","document","activeElement","FocusTrap","root","elements","onKeyDown","this","bind","enable","disable","firstElement","lastElement","length","event","key","keyCode","isTabPressed","shiftKey","focus","preventDefault","addEventListener","removeEventListener","getPosition","e","targetTouches","x","clientX","y","clientY","clamp","min","num","max","Math","trimPx","distance","Number","replace","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","hasPassiveEvents","window","passiveTestOptions","previousBodyOverflowSetting","previousBodyPaddingRight","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","forEach","nodeType","Node","ELEMENT_NODE","style","getComputedStyle","includes","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","target","touches","disableBodyScroll","targetElement","options","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","stopPropagation","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","body","getPropertyValue","paddingRight","overflow","setOverflowHidden","console","error","enableBodyScroll","filter","dragSelector","value","cacheStyle","s","charAt","toUpperCase","slice","assignOptions","component","_component","Object","assign","props","$_options","bindPrototype","Vue","vfm","show","modal","args","toggle","Promise","allSettled","resolve","reject","defaultModal","id","Symbol","componentName","slots","on","params","opened","_this","dynamicModals","hide","names","hideAll","openedModals","map","name","modals","Array","isArray","get","observable","createVfm","defineProperty","prototype","defaultOptions","dynamicContainerName","pluginOptions","install","_options","duplicateKey","duplicateComponent","duplicateDynamicContainer","validPlugin","components","VueFinalModal","registModal","ModalsContainer","registContainer"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"VueFinalModal.esm.js","sources":["../lib/utils/focusTrap.js","../lib/utils/dragResize.js","../lib/utils/bodyScrollLock.js","../lib/VModal.vue","../lib/PluginCore.js","../lib/Plugin.js"],"sourcesContent":["// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n this.enable = this.enable.bind(this)\n this.disable = this.disable.bind(this)\n this.firstElement = this.firstElement.bind(this)\n this.lastElement = this.lastElement.bind(this)\n }\n\n lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n firstElement() {\n return this.elements[0] || null\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement())) {\n this.lastElement().focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement())) {\n this.firstElement().focus()\n event.preventDefault()\n return\n }\n }\n\n enabled() {\n return !!this.root\n }\n\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\nexport default FocusTrap\n","export const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nconst pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n","// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n","\n\n\n\n\n","import Vue from 'vue'\nimport VModal from './VModal.vue'\nimport VDynamicModals from './VDynamicModals.vue'\n\nexport function createApi() {\n let _modalComponent = null\n\n return Vue.observable({\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n return Promise.allSettled([\n new Promise((resolve, reject) => {\n const defaultModal = {\n value: true,\n id: Symbol('dynamicModal'),\n component: _modalComponent,\n bind: {},\n slots: {},\n on: {},\n params: args[0],\n reject,\n opened() {\n resolve('show')\n }\n }\n this.dynamicModals.push(Object.assign(defaultModal, modal))\n })\n ])\n }\n }\n },\n hide(...names) {\n return this.toggle(names, false)\n },\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.name))\n },\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n },\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.name))\n },\n dynamicModals: [],\n openedModals: [],\n modals: [],\n _setDefaultModal(modalComponent) {\n _modalComponent = modalComponent\n }\n })\n}\n\nexport function bindApi(component, api) {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => api }\n })\n return _component\n}\n\nexport function createModal(api) {\n const modalComponent = bindApi(VModal, api)\n api._setDefaultModal(modalComponent)\n return modalComponent\n}\n\nexport function createContainer(api) {\n return bindApi(VDynamicModals, api)\n}\n","import { createApi, createModal, createContainer } from './PluginCore'\n\n/**\n * @description Ensure that `_vfm` is used when function `installPlugin` is executed for the first time\n */\nlet _count = 0\n\n/**\n * @description Create a vfm instance by default for directly support `import { $modal, VModal, VDynamicModals } from 'vue-final-modal'`\n */\nconst _vfm = createVfm()\nconst { $modal, VModal, VDynamicModals } = _vfm\nexport { $modal, VModal, VDynamicModals }\n\n/**\n * @description Support create multiple vfm instance\n */\nexport function createVfm() {\n let api = createApi()\n const vfm = {\n $modal: api,\n VModal: createModal(api),\n VDynamicModals: createContainer(api)\n }\n return vfm\n}\n\n/**\n * @description Vue plugin for register vfm instance globally\n */\nexport function vfmPlugin(pluginOptions) {\n return {\n install(Vue, options) {\n const _options = Object.assign({}, pluginOptions, options)\n installVfm(Vue, _options)\n }\n }\n}\n\nvfmPlugin.install = installVfm\n\n/**\n * @description Register vfm instance globally\n */\nexport function installVfm(Vue, options = {}) {\n const { $modal, VModal, VDynamicModals } = _count === 0 ? _vfm : createVfm()\n _count += 1\n const key = options.key || '$modal'\n const name = options.name || 'VModal'\n const containerName = options.containerName || 'VDynamicModals'\n Vue.prototype[key] = $modal\n Vue.component(name, VModal)\n Vue.component(containerName, VDynamicModals)\n}\n"],"names":["queryFocusableElements","element","selector","querySelectorAll","isFocused","document","activeElement","FocusTrap","root","elements","onKeyDown","this","bind","enable","disable","firstElement","lastElement","length","event","key","keyCode","isTabPressed","shiftKey","focus","preventDefault","addEventListener","removeEventListener","getPosition","e","targetTouches","x","clientX","y","clientY","clamp","min","num","max","Math","trimPx","distance","Number","replace","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","hasPassiveEvents","window","passiveTestOptions","previousBodyOverflowSetting","previousBodyPaddingRight","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","forEach","nodeType","Node","ELEMENT_NODE","style","getComputedStyle","includes","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","target","touches","disableBodyScroll","targetElement","options","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","stopPropagation","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","body","getPropertyValue","paddingRight","overflow","setOverflowHidden","console","error","enableBodyScroll","filter","dragSelector","value","cacheStyle","s","charAt","toUpperCase","slice","bindApi","component","api","_component","props","Object","assign","createModal","modalComponent","VModal","_setDefaultModal","createContainer","VDynamicModals","_count","_vfm","createVfm","$modal","_modalComponent","Vue","observable","show","modal","args","toggle","Promise","allSettled","resolve","reject","defaultModal","id","Symbol","slots","on","params","opened","_this","dynamicModals","hide","names","hideAll","openedModals","map","name","modals","Array","isArray","get","vfmPlugin","pluginOptions","install","installVfm","containerName","prototype"],"mappings":"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"} \ No newline at end of file diff --git a/dist/VueFinalModal.umd.js b/dist/VueFinalModal.umd.js index a0abb16b..33d4594f 100644 --- a/dist/VueFinalModal.umd.js +++ b/dist/VueFinalModal.umd.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VueFinalModal=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n1),x=[],S=!1,E=0,T=-1,z=function(e,t){var n=!1;return function(e){for(var t=[];e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t}(e).forEach((function(e){(function(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;var t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&function(e,t){return!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0)}(e,t)&&(n=!0)})),n},C=function(e){return x.some((function(){return z(e,-E)}))},O=function(e){var t=e||window.event;return!!C(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},k=function(e,t){if(e){if(!x.some((function(t){return t.targetElement===e}))){var n={targetElement:e,options:t||{}};x=[].concat(r(x),[n]),w?(e.ontouchstart=function(e){1===e.targetTouches.length&&(T=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&function(e,t){E=e.targetTouches[0].clientY-T,!C(e.target)&&(t&&0===t.scrollTop&&E>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(t)&&E<0?O(e):e.stopPropagation())}(t,e)},S||(document.addEventListener("touchmove",O,p?{passive:!1}:void 0),S=!0)):function(e){if(void 0===b){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){var i=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);b=document.body.style.paddingRight,document.body.style.paddingRight="".concat(i+n,"px")}}void 0===g&&(g=document.body.style.overflow,document.body.style.overflow="hidden")}(t)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},_=function(e){e?(x=x.filter((function(t){return t.targetElement!==e})),w?(e.ontouchstart=null,e.ontouchmove=null,S&&0===x.length&&(document.removeEventListener("touchmove",O,p?{passive:!1}:void 0),S=!1)):x.length||(void 0!==b&&(document.body.style.paddingRight=b,b=void 0),void 0!==g&&(document.body.style.overflow=g,g=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")},$=function(){},D="enter",M="entering",R="leave",j="leavng";var L={type:[String,Object,Array],default:""},A={type:[Object,Array],default:function(){return{}}},N={t:"ns-resize",tr:"nesw-resize",r:"ew-resize",br:"nwse-resize",b:"ns-resize",bl:"nesw-resize",l:"ew-resize",tl:"nwse-resize"},B={props:{name:{type:String,default:null},value:{type:Boolean,default:!1},ssr:{type:Boolean,default:!0},classes:L,overlayClass:L,contentClass:L,styles:A,overlayStyle:A,contentStyle:A,lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},preventClick:{type:Boolean,default:!1},attach:{type:null,default:!1,validator:function(t){var n=e(t);return"boolean"===n||"string"===n||t.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:function(){return["t","tr","r","br","b","bl","l","tl"]},validator:function(e){return["t","tr","r","br","b","bl","l","tl"].filter((function(t){return-1!==e.indexOf(t)})).length===e.length}},minWidth:{type:Number,default:0},minHeight:{type:Number,default:0},maxWidth:{type:Number,default:1/0},maxHeight:{type:Number,default:1/0}},data:function(){return{modalStackIndex:null,visible:!1,visibility:{modal:!1,overlay:!1,resize:!1},overlayTransitionState:null,modalTransitionState:null,stopEvent:!1,params:{},dragResizeStyle:{},resolveToggle:$,rejectToggle:$,state:null}},computed:{api:function(){return this[this.$_options.key]},isComponentReadyToBeDestroyed:function(){return(this.hideOverlay||this.overlayTransitionState===R)&&this.modalTransitionState===R},calculateZIndex:function(){return!1===this.zIndex?!!this.zIndexAuto&&+this.zIndexBase+2*(this.modalStackIndex||0):this.zIndex},bindStyle:function(){return o({},!1!==this.calculateZIndex&&{zIndex:this.calculateZIndex})},bindContentStyle:function(){var e=[this.dragResizeStyle];return Array.isArray(this.contentStyle)?e.push.apply(e,r(this.contentStyle)):e.push(this.contentStyle),e},computedTransition:function(){return"string"==typeof this.transition?{name:this.transition}:o({},this.transition)},computedOverlayTransition:function(){return"string"==typeof this.overlayTransition?{name:this.overlayTransition}:o({},this.overlayTransition)}},watch:{value:function(e){if(this.stopEvent)this.stopEvent=!1;else if(this.mounted(),!e){if(this.emitEvent("before-close",!0))return void this.rejectToggle("hide");this.close()}},lockScroll:"handleLockScroll",hideOverlay:function(e){this.value&&!e&&(this.visibility.overlay=!0)},attach:"mounted",isComponentReadyToBeDestroyed:function(e){e&&(this.visible=!1)},drag:function(e){this.visible&&(e?this.addDragDown():this.removeDragDown())},resize:function(e){this.visible&&(e?this.addResizeDown():this.removeResizeDown())},keepChangedStyle:function(e){e||(this.dragResizeStyle={})}},created:function(){this.api.modals.push(this)},mounted:function(){this.$focusTrap=new c,this.mounted()},beforeDestroy:function(){var e,t=this;this.close(),this.lockScroll&&this.$refs.vfmContainer&&_(this.$refs.vfmContainer),null==this||null===(e=this.$el)||void 0===e||e.remove();var n=this.api.modals.findIndex((function(e){return e===t}));this.api.modals.splice(n,1)},methods:{mounted:function(){var e=this;if(this.value){if(this.emitEvent("before-open",!1))return void this.rejectToggle("show");var t=this.getAttachElement();if(t||!1===this.attach){!1!==this.attach&&t.appendChild(this.$el);var n=this.api.openedModals.findIndex((function(t){return t===e}));-1!==n&&this.api.openedModals.splice(n,1),this.api.openedModals.push(this),this.modalStackIndex=this.api.openedModals.length-1,this.handleLockScroll(),this.api.openedModals.filter((function(t){return t!==e})).forEach((function(e,n){e.getAttachElement()===t&&(e.modalStackIndex=n,e.visibility.overlay=!1)})),this.visible=!0,this.$nextTick((function(){e.startTransitionEnter()}))}else!1!==t&&console.warn("Unable to locate target ".concat(this.attach))}},close:function(){var e=this,t=this.api.openedModals.findIndex((function(t){return t===e}));if(-1!==t&&this.api.openedModals.splice(t,1),this.api.openedModals.length>0){var n=this.api.openedModals[this.api.openedModals.length-1];(n.focusRetain||n.focusTrap)&&n.$refs.vfmContainer.focus(),!n.hideOverlay&&(n.visibility.overlay=!0)}this.drag&&this.removeDragDown(),this.resize&&this.removeResizeDown(),this.state=null,this.startTransitionLeave()},startTransitionEnter:function(){this.visibility.overlay=!0,this.visibility.modal=!0},startTransitionLeave:function(){this.visibility.overlay=!1,this.visibility.modal=!1},handleLockScroll:function(){var e=this;this.value&&this.$nextTick((function(){e.lockScroll?k(e.$refs.vfmContainer,{reserveScrollBarGap:!0}):_(e.$refs.vfmContainer)}))},getAttachElement:function(){return!1!==this.attach&&("string"==typeof this.attach?!!window&&window.document.querySelector(this.attach):this.attach)},beforeOverlayEnter:function(){this.overlayTransitionState=M},afterOverlayEnter:function(){this.overlayTransitionState=D},beforeOverlayLeave:function(){this.overlayTransitionState=j},afterOverlayLeave:function(){this.overlayTransitionState=R},beforeModalEnter:function(){this.modalTransitionState=M},afterModalEnter:function(){this.modalTransitionState=D,(this.focusRetain||this.focusTrap)&&this.$refs.vfmContainer.focus(),this.focusTrap&&this.$focusTrap.enable(this.$refs.vfmContainer),this.drag&&this.addDragDown(),this.resize&&this.addResizeDown(),this.$emit("opened",this.createModalEvent({type:"opened"})),this.resolveToggle("show")},beforeModalLeave:function(){this.modalTransitionState=j,this.$focusTrap.enabled()&&this.$focusTrap.disable()},afterModalLeave:function(){this.modalTransitionState=R,this.modalStackIndex=null,this.lockScroll&&_(this.$refs.vfmContainer),this.keepChangedStyle||(this.dragResizeStyle={});var e=!1,t=this.createModalEvent({type:"closed",stop:function(){e=!0}});this.$emit("closed",t),this.resolveToggle("hide"),e||(this.params={})},onClickContainer:function(){"resize:move"!==this.state&&(this.$emit("click-outside",this.createModalEvent({type:"click-outside"})),this.clickToClose&&this.$emit("input",!1))},onEsc:function(){this.visible&&this.escToClose&&this.$emit("input",!1)},createModalEvent:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o({ref:this},e)},emitEvent:function(e,t){var n=!1,i=this.createModalEvent({type:e,stop:function(){n=!0}});return this.$emit(e,i),!!n&&(this.stopEvent=!0,this.$emit("input",t),!0)},emitState:function(e,t,n){this.state="".concat(t,":").concat(n),this.$emit(this.state,e)},toggle:function(e,t){var n=arguments,i=this;return new Promise((function(o,r){i.resolveToggle=function(e){o(e),i.resolveToggle=$},i.rejectToggle=function(e){r(e),i.rejectToggle=$};var a="boolean"==typeof e?e:!i.value;a&&2===n.length&&(i.params=t),i.$emit("input",a)}))},pointerDown:function(e){var t=this;e.stopPropagation();var n,i="resize",a="drag",s=this.$refs,l=s.vfmContainer,c=s.vfmContent,v=e.target.getAttribute("direction");if(v)n=i;else{if(!function(e,t,n){return""===n||r(t.querySelectorAll(n)).includes(e.target)}(e,c,this.dragSelector))return;n=a}this.emitState(e,n,"start");var p,y,g,b,w=u(e),x=l.getBoundingClientRect(),S=c.getBoundingClientRect(),E="absolute"===window.getComputedStyle(c).position,T=f(this.dragResizeStyle.top),z=f(this.dragResizeStyle.left),C=function(){if(t.fitParent){var e={absolute:function(){return{minTop:0,minLeft:0,maxTop:x.height-S.height,maxLeft:x.width-S.width}},relative:function(){return{minTop:T+x.top-S.top,minLeft:z+x.left-S.left,maxTop:T+x.bottom-S.bottom,maxLeft:z+x.right-S.right}}};return E?e.absolute():e.relative()}return{}}(),O=n===i&&(p=document.body,y="cursor",g=N[v],b=p.style[y],p.style[y]=g,function(){p.style[y]=b}),k=function(e){e.stopPropagation(),t.emitState(e,n,"move");var r,s,l=u(e),c={x:l.x-w.x,y:l.y-w.y};n===i&&(c=t.getResizeOffset(v,c,x,S,E)),E?(r=S.top-x.top+c.y,s=S.left-x.left+c.x):(r=T+c.y,s=z+c.x),n===a&&t.fitParent&&(r=d(C.minTop,r,C.maxTop),s=d(C.minLeft,s,C.maxLeft));var f=o(o(o({position:"relative",top:r+"px",left:s+"px",margin:"unset",touchAction:"none"},E&&{position:"absolute",transform:"unset",width:S.width+"px",height:S.height+"px"}),c.width&&{width:c.width+"px"}),c.height&&{height:c.height+"px"});t.dragResizeStyle=o(o({},t.dragResizeStyle),f)};h("move",document,k),h("up",document,(function e(o){o.stopPropagation(),n===i&&O&&O(),setTimeout((function(){t.emitState(o,n,"end")})),m("move",document,k),m("up",document,e)}))},addDragDown:function(){h("down",this.$refs.vfmContent,this.pointerDown),this.dragResizeStyle.touchAction="none"},removeDragDown:function(){m("down",this.$refs.vfmContent,this.pointerDown)},addResizeDown:function(){var e=this;this.visibility.resize=!0,this.$nextTick((function(){h("down",e.$refs.vfmResize,e.pointerDown)}))},removeResizeDown:function(){m("down",this.$refs.vfmResize,this.pointerDown),this.visibility.resize=!1},getResizeOffset:function(e,t,i,a,s){var l=this,c=function(e,t,n,o){var r,s=a[t],c=i[e]-a[e],u=(r=t).charAt(0).toUpperCase()+r.slice(1);return{axis:n,edgeName:t,min:o?c:-s,max:o?s:c,minEdge:l["min".concat(u)],maxEdge:l["max".concat(u)],getEdge:function(e){return a[t]-e*(o?1:-1)},getOffsetAxis:function(e,n){var i=a[t]-e;return n?o?i:0:(o?1:-1)*i/2}}},u={t:["top","height","y",!0],b:["bottom","height","y",!1],l:["left","width","x",!0],r:["right","width","x",!1]},f={x:0,y:0};return e.split("").forEach((function(e){var i=c.apply(void 0,r(u[e]));f=o(o({},f),function(e){var i,o=t[e.axis];o=l.fitParent?d(e.min,o,e.max):o;var r=d(e.minEdge,e.getEdge(o),e.maxEdge);return o=e.getOffsetAxis(r,s),n(i={},e.edgeName,r),n(i,e.axis,o),i}(i))})),f}}};var P,I=function(e,t,n,i,o,r,a,s,l,c){"boolean"!=typeof a&&(l=s,s=a,a=!1);var u,d="function"==typeof n?n.options:n;if(e&&e.render&&(d.render=e.render,d.staticRenderFns=e.staticRenderFns,d._compiled=!0,o&&(d.functional=!0)),i&&(d._scopeId=i),r?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,l(e)),e&&e._registeredComponents&&e._registeredComponents.add(r)},d._ssrRegister=u):t&&(u=a?function(e){t.call(this,c(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,s(e))}),u)if(d.functional){var f=d.render;d.render=function(e,t){return u.call(t),f(e,t)}}else{var v=d.beforeCreate;d.beforeCreate=v?[].concat(v,u):[u]}return n},H="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());var U={};var F=I({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.ssr||e.visible?n("div",{directives:[{name:"show",rawName:"v-show",value:!e.ssr||e.visible,expression:"!ssr || visible"}],staticClass:"vfm vfm--inset",class:[!1===e.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":e.preventClick}],style:e.bindStyle,on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.onEsc(t)}}},[n("transition",e._b({ref:"vfmOverlayTransition",on:{"before-enter":e.beforeOverlayEnter,"after-enter":e.afterOverlayEnter,"before-leave":e.beforeOverlayLeave,"after-leave":e.afterOverlayLeave}},"transition",e.computedOverlayTransition,!1),[n("div",{directives:[{name:"show",rawName:"v-show",value:!e.hideOverlay&&e.visibility.overlay,expression:"!hideOverlay && visibility.overlay"}],staticClass:"vfm__overlay vfm--overlay vfm--absolute vfm--inset",class:e.overlayClass,style:e.overlayStyle})]),e._v(" "),n("transition",e._b({ref:"vfmTransition",on:{"before-enter":e.beforeModalEnter,"after-enter":e.afterModalEnter,"before-leave":e.beforeModalLeave,"after-leave":e.afterModalLeave}},"transition",e.computedTransition,!1),[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visibility.modal,expression:"visibility.modal"}],ref:"vfmContainer",staticClass:"vfm__container vfm--absolute vfm--inset vfm--outline-none",class:e.classes,style:e.styles,attrs:{"aria-expanded":e.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1"},on:{click:function(t){return t.target!==t.currentTarget?null:e.onClickContainer(t)}}},[n("div",{ref:"vfmContent",staticClass:"vfm__content",class:[e.contentClass,{"vfm--prevent-auto":e.preventClick}],style:e.bindContentStyle},[e._t("default",null,{params:e.params,close:function(){return e.$emit("input",!1)}}),e._v(" "),e.visibility.resize&&e.visibility.modal?n("div",{ref:"vfmResize",staticClass:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},e._l(e.resizeDirections,(function(e){return n("div",{key:e,staticClass:"vfm--absolute vfm--prevent-auto",class:"vfm--resize-"+e,attrs:{direction:e}})})),0):e._e()],2)])])],1):e._e()},staticRenderFns:[]},(function(e){e&&e("data-v-30a92505_0",{source:".vfm--fixed[data-v-30a92505]{position:fixed}.vfm--absolute[data-v-30a92505]{position:absolute}.vfm--inset[data-v-30a92505]{top:0;right:0;bottom:0;left:0}.vfm--overlay[data-v-30a92505]{background-color:rgba(0,0,0,.5)}.vfm--prevent-none[data-v-30a92505]{pointer-events:none}.vfm--prevent-auto[data-v-30a92505]{pointer-events:auto}.vfm--outline-none[data-v-30a92505]:focus{outline:0}.vfm-enter-active[data-v-30a92505],.vfm-leave-active[data-v-30a92505]{transition:opacity .2s}.vfm-enter[data-v-30a92505],.vfm-leave-to[data-v-30a92505]{opacity:0}.vfm--touch-none[data-v-30a92505]{touch-action:none}.vfm--select-none[data-v-30a92505]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vfm--resize-bl[data-v-30a92505],.vfm--resize-br[data-v-30a92505],.vfm--resize-tl[data-v-30a92505],.vfm--resize-tr[data-v-30a92505]{width:12px;height:12px;z-index:10}.vfm--resize-t[data-v-30a92505]{top:-6px;left:0;width:100%;height:12px;cursor:ns-resize}.vfm--resize-tr[data-v-30a92505]{top:-6px;right:-6px;cursor:nesw-resize}.vfm--resize-r[data-v-30a92505]{top:0;right:-6px;width:12px;height:100%;cursor:ew-resize}.vfm--resize-br[data-v-30a92505]{bottom:-6px;right:-6px;cursor:nwse-resize}.vfm--resize-b[data-v-30a92505]{bottom:-6px;left:0;width:100%;height:12px;cursor:ns-resize}.vfm--resize-bl[data-v-30a92505]{bottom:-6px;left:-6px;cursor:nesw-resize}.vfm--resize-l[data-v-30a92505]{top:0;left:-6px;width:12px;height:100%;cursor:ew-resize}.vfm--resize-tl[data-v-30a92505]{top:-6px;left:-6px;cursor:nwse-resize}",map:void 0,media:void 0})}),B,"data-v-30a92505",false,undefined,!1,(function(e){return function(e,t){return function(e,t){var n=H?t.media||"default":e,i=U[n]||(U[n]={ids:new Set,styles:[]});if(!i.ids.has(e)){i.ids.add(e);var o=t.source;if(t.map&&(o+="\n/*# sourceURL="+t.map.sources[0]+" */",o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),i.element||(i.element=document.createElement("style"),i.element.type="text/css",t.media&&i.element.setAttribute("media",t.media),void 0===P&&(P=document.head||document.getElementsByTagName("head")[0]),P.appendChild(i.element)),"styleSheet"in i.element)i.styles.push(o),i.element.styleSheet.cssText=i.styles.filter(Boolean).join("\n");else{var r=i.ids.size-1,a=document.createTextNode(o),s=i.element.childNodes;s[r]&&i.element.removeChild(s[r]),s.length?i.element.insertBefore(a,s[r]):i.element.appendChild(a)}}}(e,t)}}),void 0,void 0),V=I({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"modals-container"},e._l(e.api.dynamicModals,(function(t,i){return n(t.component,e._g(e._b({key:t.id,tag:"component",on:{closed:function(t){return e.slice(i)},"before-open":function(n){return e.beforeOpen(n,t,i)},opened:t.opened},scopedSlots:e._u([e._l(t.slots,(function(t,i){return{key:i,fn:function(){return[e.isString(t)?n("div",{key:i,domProps:{innerHTML:e._s(t)}}):n(t.component,e._g(e._b({key:i,tag:"component"},"component",t.bind,!1),t.on))]},proxy:!0}}))],null,!0),model:{value:t.value,callback:function(n){e.$set(t,"value",n)},expression:"modal.value"}},"component",t.bind,!1),t.on))})),1)},staticRenderFns:[]},undefined,{props:{},computed:{api:function(){return this[this.$_options.key]}},methods:{slice:function(e){this.api.dynamicModals.splice(e,1)},beforeOpen:function(e,t,n){var i=this;e.ref.params=t.params,this.$nextTick((function(){t.value||(i.slice(n),t.reject("show"))}))},isString:function(e){return"string"==typeof e}}},undefined,false,undefined,!1,void 0,void 0,void 0);function K(e,t){var n=o({},e);return Object.assign(n.props,{$_options:{type:Object,default:function(){return t}}}),n}function W(t,n){var i=function(t,n){var i;return function(){return i={show:function(t){for(var i=this,o=arguments.length,r=new Array(o>1?o-1:0),a=1;a1?t-1:0),i=1;ie.length)&&(t=e.length);for(var n=0,i=new Array(t);n1),z=[],C=!1,O=0,k=-1,M=function(e,t){var n=!1;return function(e){for(var t=[];e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t}(e).forEach((function(e){(function(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;var t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&function(e,t){return!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0)}(e,t)&&(n=!0)})),n},_=function(e){return z.some((function(){return M(e,-O)}))},D=function(e){var t=e||window.event;return!!_(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},$=function(e,t){if(e){if(!z.some((function(t){return t.targetElement===e}))){var n={targetElement:e,options:t||{}};z=[].concat(d(z),[n]),T?(e.ontouchstart=function(e){1===e.targetTouches.length&&(k=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&function(e,t){O=e.targetTouches[0].clientY-k,!_(e.target)&&(t&&0===t.scrollTop&&O>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(t)&&O<0?D(e):e.stopPropagation())}(t,e)},C||(document.addEventListener("touchmove",D,w?{passive:!1}:void 0),C=!0)):function(e){if(void 0===E){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){var i=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);E=document.body.style.paddingRight,document.body.style.paddingRight="".concat(i+n,"px")}}void 0===S&&(S=document.body.style.overflow,document.body.style.overflow="hidden")}(t)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},R=function(e){e?(z=z.filter((function(t){return t.targetElement!==e})),T?(e.ontouchstart=null,e.ontouchmove=null,C&&0===z.length&&(document.removeEventListener("touchmove",D,w?{passive:!1}:void 0),C=!1)):z.length||(void 0!==E&&(document.body.style.paddingRight=E,E=void 0),void 0!==S&&(document.body.style.overflow=S,S=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")},j=function(){},L="enter",A="entering",B="leave",P="leavng";var I={type:[String,Object,Array],default:""},N={type:[Object,Array],default:function(){return{}}},V={t:"ns-resize",tr:"nesw-resize",r:"ew-resize",br:"nwse-resize",b:"ns-resize",bl:"nesw-resize",l:"ew-resize",tl:"nwse-resize"},H={props:{name:{type:String,default:null},value:{type:Boolean,default:!1},ssr:{type:Boolean,default:!0},classes:I,overlayClass:I,contentClass:I,styles:N,overlayStyle:N,contentStyle:N,lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},preventClick:{type:Boolean,default:!1},attach:{type:null,default:!1,validator:function(e){var t=o(e);return"boolean"===t||"string"===t||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:function(){return["t","tr","r","br","b","bl","l","tl"]},validator:function(e){return["t","tr","r","br","b","bl","l","tl"].filter((function(t){return-1!==e.indexOf(t)})).length===e.length}},minWidth:{type:Number,default:0},minHeight:{type:Number,default:0},maxWidth:{type:Number,default:1/0},maxHeight:{type:Number,default:1/0}},data:function(){return{modalStackIndex:null,visible:!1,visibility:{modal:!1,overlay:!1,resize:!1},overlayTransitionState:null,modalTransitionState:null,stopEvent:!1,params:{},dragResizeStyle:{},resolveToggle:j,rejectToggle:j,state:null}},computed:{isComponentReadyToBeDestroyed:function(){return(this.hideOverlay||this.overlayTransitionState===B)&&this.modalTransitionState===B},calculateZIndex:function(){return!1===this.zIndex?!!this.zIndexAuto&&+this.zIndexBase+2*(this.modalStackIndex||0):this.zIndex},bindStyle:function(){return l({},!1!==this.calculateZIndex&&{zIndex:this.calculateZIndex})},bindContentStyle:function(){var e=[this.dragResizeStyle];return Array.isArray(this.contentStyle)?e.push.apply(e,d(this.contentStyle)):e.push(this.contentStyle),e},computedTransition:function(){return"string"==typeof this.transition?{name:this.transition}:l({},this.transition)},computedOverlayTransition:function(){return"string"==typeof this.overlayTransition?{name:this.overlayTransition}:l({},this.overlayTransition)}},watch:{value:function(e){if(this.stopEvent)this.stopEvent=!1;else if(this.mounted(),!e){if(this.emitEvent("before-close",!0))return void this.rejectToggle("hide");this.close()}},lockScroll:"handleLockScroll",hideOverlay:function(e){this.value&&!e&&(this.visibility.overlay=!0)},attach:"mounted",isComponentReadyToBeDestroyed:function(e){e&&(this.visible=!1)},drag:function(e){this.visible&&(e?this.addDragDown():this.removeDragDown())},resize:function(e){this.visible&&(e?this.addResizeDown():this.removeResizeDown())},keepChangedStyle:function(e){e||(this.dragResizeStyle={})}},created:function(){this.api.modals.push(this)},mounted:function(){this.$focusTrap=new v,this.mounted()},beforeDestroy:function(){var e,t=this;this.close(),this.lockScroll&&this.$refs.vfmContainer&&R(this.$refs.vfmContainer),null==this||null===(e=this.$el)||void 0===e||e.remove();var n=this.api.modals.findIndex((function(e){return e===t}));this.api.modals.splice(n,1)},methods:{mounted:function(){var e=this;if(this.value){if(this.emitEvent("before-open",!1))return void this.rejectToggle("show");var t=this.getAttachElement();if(t||!1===this.attach){!1!==this.attach&&t.appendChild(this.$el);var n=this.api.openedModals.findIndex((function(t){return t===e}));-1!==n&&this.api.openedModals.splice(n,1),this.api.openedModals.push(this),this.modalStackIndex=this.api.openedModals.length-1,this.handleLockScroll(),this.api.openedModals.filter((function(t){return t!==e})).forEach((function(e,n){e.getAttachElement()===t&&(e.modalStackIndex=n,e.visibility.overlay=!1)})),this.visible=!0,this.$nextTick((function(){e.startTransitionEnter()}))}else!1!==t&&console.warn("Unable to locate target ".concat(this.attach))}},close:function(){var e=this,t=this.api.openedModals.findIndex((function(t){return t===e}));if(-1!==t&&this.api.openedModals.splice(t,1),this.api.openedModals.length>0){var n=this.api.openedModals[this.api.openedModals.length-1];(n.focusRetain||n.focusTrap)&&n.$refs.vfmContainer.focus(),!n.hideOverlay&&(n.visibility.overlay=!0)}this.drag&&this.removeDragDown(),this.resize&&this.removeResizeDown(),this.state=null,this.startTransitionLeave()},startTransitionEnter:function(){this.visibility.overlay=!0,this.visibility.modal=!0},startTransitionLeave:function(){this.visibility.overlay=!1,this.visibility.modal=!1},handleLockScroll:function(){var e=this;this.value&&this.$nextTick((function(){e.lockScroll?$(e.$refs.vfmContainer,{reserveScrollBarGap:!0}):R(e.$refs.vfmContainer)}))},getAttachElement:function(){return!1!==this.attach&&("string"==typeof this.attach?!!window&&window.document.querySelector(this.attach):this.attach)},beforeOverlayEnter:function(){this.overlayTransitionState=A},afterOverlayEnter:function(){this.overlayTransitionState=L},beforeOverlayLeave:function(){this.overlayTransitionState=P},afterOverlayLeave:function(){this.overlayTransitionState=B},beforeModalEnter:function(){this.modalTransitionState=A},afterModalEnter:function(){this.modalTransitionState=L,(this.focusRetain||this.focusTrap)&&this.$refs.vfmContainer.focus(),this.focusTrap&&this.$focusTrap.enable(this.$refs.vfmContainer),this.drag&&this.addDragDown(),this.resize&&this.addResizeDown(),this.$emit("opened",this.createModalEvent({type:"opened"})),this.resolveToggle("show")},beforeModalLeave:function(){this.modalTransitionState=P,this.$focusTrap.enabled()&&this.$focusTrap.disable()},afterModalLeave:function(){this.modalTransitionState=B,this.modalStackIndex=null,this.lockScroll&&R(this.$refs.vfmContainer),this.keepChangedStyle||(this.dragResizeStyle={});var e=!1,t=this.createModalEvent({type:"closed",stop:function(){e=!0}});this.$emit("closed",t),this.resolveToggle("hide"),e||(this.params={})},onClickContainer:function(){"resize:move"!==this.state&&(this.$emit("click-outside",this.createModalEvent({type:"click-outside"})),this.clickToClose&&this.$emit("input",!1))},onEsc:function(){this.visible&&this.escToClose&&this.$emit("input",!1)},createModalEvent:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return l({ref:this},e)},emitEvent:function(e,t){var n=!1,i=this.createModalEvent({type:e,stop:function(){n=!0}});return this.$emit(e,i),!!n&&(this.stopEvent=!0,this.$emit("input",t),!0)},emitState:function(e,t,n){this.state="".concat(t,":").concat(n),this.$emit(this.state,e)},toggle:function(e,t){var n=arguments,i=this;return new Promise((function(o,r){i.resolveToggle=function(e){o(e),i.resolveToggle=j},i.rejectToggle=function(e){r(e),i.rejectToggle=j};var a="boolean"==typeof e?e:!i.value;a&&2===n.length&&(i.params=t),i.$emit("input",a)}))},pointerDown:function(e){var t=this;e.stopPropagation();var n,i="resize",o="drag",r=this.$refs,a=r.vfmContainer,s=r.vfmContent,u=e.target.getAttribute("direction");if(u)n=i;else{if(!function(e,t,n){return""===n||d(t.querySelectorAll(n)).includes(e.target)}(e,s,this.dragSelector))return;n=o}this.emitState(e,n,"start");var c,f,v,y,w=h(e),x=a.getBoundingClientRect(),S=s.getBoundingClientRect(),E="absolute"===window.getComputedStyle(s).position,T=p(this.dragResizeStyle.top),z=p(this.dragResizeStyle.left),C=function(){if(t.fitParent){var e={absolute:function(){return{minTop:0,minLeft:0,maxTop:x.height-S.height,maxLeft:x.width-S.width}},relative:function(){return{minTop:T+x.top-S.top,minLeft:z+x.left-S.left,maxTop:T+x.bottom-S.bottom,maxLeft:z+x.right-S.right}}};return E?e.absolute():e.relative()}return{}}(),O=n===i&&(c=document.body,f="cursor",v=V[u],y=c.style[f],c.style[f]=v,function(){c.style[f]=y}),k=function(e){e.stopPropagation(),t.emitState(e,n,"move");var r,a,s=h(e),d={x:s.x-w.x,y:s.y-w.y};n===i&&(d=t.getResizeOffset(u,d,x,S,E)),E?(r=S.top-x.top+d.y,a=S.left-x.left+d.x):(r=T+d.y,a=z+d.x),n===o&&t.fitParent&&(r=m(C.minTop,r,C.maxTop),a=m(C.minLeft,a,C.maxLeft));var c=l(l(l({position:"relative",top:r+"px",left:a+"px",margin:"unset",touchAction:"none"},E&&{position:"absolute",transform:"unset",width:S.width+"px",height:S.height+"px"}),d.width&&{width:d.width+"px"}),d.height&&{height:d.height+"px"});t.dragResizeStyle=l(l({},t.dragResizeStyle),c)};b("move",document,k),b("up",document,(function e(o){o.stopPropagation(),n===i&&O&&O(),setTimeout((function(){t.emitState(o,n,"end")})),g("move",document,k),g("up",document,e)}))},addDragDown:function(){b("down",this.$refs.vfmContent,this.pointerDown),this.dragResizeStyle.touchAction="none"},removeDragDown:function(){g("down",this.$refs.vfmContent,this.pointerDown)},addResizeDown:function(){var e=this;this.visibility.resize=!0,this.$nextTick((function(){b("down",e.$refs.vfmResize,e.pointerDown)}))},removeResizeDown:function(){g("down",this.$refs.vfmResize,this.pointerDown),this.visibility.resize=!1},getResizeOffset:function(e,t,n,i,o){var r=this,s=function(e,t,o,a){var s,l=i[t],d=n[e]-i[e],u=(s=t).charAt(0).toUpperCase()+s.slice(1);return{axis:o,edgeName:t,min:a?d:-l,max:a?l:d,minEdge:r["min".concat(u)],maxEdge:r["max".concat(u)],getEdge:function(e){return i[t]-e*(a?1:-1)},getOffsetAxis:function(e,n){var o=i[t]-e;return n?a?o:0:(a?1:-1)*o/2}}},u={t:["top","height","y",!0],b:["bottom","height","y",!1],l:["left","width","x",!0],r:["right","width","x",!1]},c={x:0,y:0};return e.split("").forEach((function(e){var n=s.apply(void 0,d(u[e]));c=l(l({},c),function(e){var n,i=t[e.axis];i=r.fitParent?m(e.min,i,e.max):i;var s=m(e.minEdge,e.getEdge(i),e.maxEdge);return i=e.getOffsetAxis(s,o),a(n={},e.edgeName,s),a(n,e.axis,i),n}(n))})),c}}};var U,K=function(e,t,n,i,o,r,a,s,l,d){"boolean"!=typeof a&&(l=s,s=a,a=!1);var u,c="function"==typeof n?n.options:n;if(e&&e.render&&(c.render=e.render,c.staticRenderFns=e.staticRenderFns,c._compiled=!0,o&&(c.functional=!0)),i&&(c._scopeId=i),r?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,l(e)),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=u):t&&(u=a?function(e){t.call(this,d(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,s(e))}),u)if(c.functional){var f=c.render;c.render=function(e,t){return u.call(t),f(e,t)}}else{var v=c.beforeCreate;c.beforeCreate=v?[].concat(v,u):[u]}return n},F="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());var q={};var W=K({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.ssr||e.visible?n("div",{directives:[{name:"show",rawName:"v-show",value:!e.ssr||e.visible,expression:"!ssr || visible"}],staticClass:"vfm vfm--inset",class:[!1===e.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":e.preventClick}],style:e.bindStyle,on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.onEsc(t)}}},[n("transition",e._b({ref:"vfmOverlayTransition",on:{"before-enter":e.beforeOverlayEnter,"after-enter":e.afterOverlayEnter,"before-leave":e.beforeOverlayLeave,"after-leave":e.afterOverlayLeave}},"transition",e.computedOverlayTransition,!1),[n("div",{directives:[{name:"show",rawName:"v-show",value:!e.hideOverlay&&e.visibility.overlay,expression:"!hideOverlay && visibility.overlay"}],staticClass:"vfm__overlay vfm--overlay vfm--absolute vfm--inset",class:e.overlayClass,style:e.overlayStyle})]),e._v(" "),n("transition",e._b({ref:"vfmTransition",on:{"before-enter":e.beforeModalEnter,"after-enter":e.afterModalEnter,"before-leave":e.beforeModalLeave,"after-leave":e.afterModalLeave}},"transition",e.computedTransition,!1),[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visibility.modal,expression:"visibility.modal"}],ref:"vfmContainer",staticClass:"vfm__container vfm--absolute vfm--inset vfm--outline-none",class:e.classes,style:e.styles,attrs:{"aria-expanded":e.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1"},on:{click:function(t){return t.target!==t.currentTarget?null:e.onClickContainer(t)}}},[n("div",{ref:"vfmContent",staticClass:"vfm__content",class:[e.contentClass,{"vfm--prevent-auto":e.preventClick}],style:e.bindContentStyle},[e._t("default",null,{params:e.params,close:function(){return e.$emit("input",!1)}}),e._v(" "),e.visibility.resize&&e.visibility.modal?n("div",{ref:"vfmResize",staticClass:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},e._l(e.resizeDirections,(function(e){return n("div",{key:e,staticClass:"vfm--absolute vfm--prevent-auto",class:"vfm--resize-"+e,attrs:{direction:e}})})),0):e._e()],2)])])],1):e._e()},staticRenderFns:[]},(function(e){e&&e("data-v-05b5dbd4_0",{source:".vfm--fixed[data-v-05b5dbd4]{position:fixed}.vfm--absolute[data-v-05b5dbd4]{position:absolute}.vfm--inset[data-v-05b5dbd4]{top:0;right:0;bottom:0;left:0}.vfm--overlay[data-v-05b5dbd4]{background-color:rgba(0,0,0,.5)}.vfm--prevent-none[data-v-05b5dbd4]{pointer-events:none}.vfm--prevent-auto[data-v-05b5dbd4]{pointer-events:auto}.vfm--outline-none[data-v-05b5dbd4]:focus{outline:0}.vfm-enter-active[data-v-05b5dbd4],.vfm-leave-active[data-v-05b5dbd4]{transition:opacity .2s}.vfm-enter[data-v-05b5dbd4],.vfm-leave-to[data-v-05b5dbd4]{opacity:0}.vfm--touch-none[data-v-05b5dbd4]{touch-action:none}.vfm--select-none[data-v-05b5dbd4]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vfm--resize-bl[data-v-05b5dbd4],.vfm--resize-br[data-v-05b5dbd4],.vfm--resize-tl[data-v-05b5dbd4],.vfm--resize-tr[data-v-05b5dbd4]{width:12px;height:12px;z-index:10}.vfm--resize-t[data-v-05b5dbd4]{top:-6px;left:0;width:100%;height:12px;cursor:ns-resize}.vfm--resize-tr[data-v-05b5dbd4]{top:-6px;right:-6px;cursor:nesw-resize}.vfm--resize-r[data-v-05b5dbd4]{top:0;right:-6px;width:12px;height:100%;cursor:ew-resize}.vfm--resize-br[data-v-05b5dbd4]{bottom:-6px;right:-6px;cursor:nwse-resize}.vfm--resize-b[data-v-05b5dbd4]{bottom:-6px;left:0;width:100%;height:12px;cursor:ns-resize}.vfm--resize-bl[data-v-05b5dbd4]{bottom:-6px;left:-6px;cursor:nesw-resize}.vfm--resize-l[data-v-05b5dbd4]{top:0;left:-6px;width:12px;height:100%;cursor:ew-resize}.vfm--resize-tl[data-v-05b5dbd4]{top:-6px;left:-6px;cursor:nwse-resize}",map:void 0,media:void 0})}),H,"data-v-05b5dbd4",false,undefined,!1,(function(e){return function(e,t){return function(e,t){var n=F?t.media||"default":e,i=q[n]||(q[n]={ids:new Set,styles:[]});if(!i.ids.has(e)){i.ids.add(e);var o=t.source;if(t.map&&(o+="\n/*# sourceURL="+t.map.sources[0]+" */",o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),i.element||(i.element=document.createElement("style"),i.element.type="text/css",t.media&&i.element.setAttribute("media",t.media),void 0===U&&(U=document.head||document.getElementsByTagName("head")[0]),U.appendChild(i.element)),"styleSheet"in i.element)i.styles.push(o),i.element.styleSheet.cssText=i.styles.filter(Boolean).join("\n");else{var r=i.ids.size-1,a=document.createTextNode(o),s=i.element.childNodes;s[r]&&i.element.removeChild(s[r]),s.length?i.element.insertBefore(a,s[r]):i.element.appendChild(a)}}}(e,t)}}),void 0,void 0),Y=K({render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"v-dynamic-modals"},e._l(e.api.dynamicModals,(function(t,i){return n(t.component,e._g(e._b({key:t.id,tag:"component",on:{closed:function(t){return e.slice(i)},"before-open":function(n){return e.beforeOpen(n,t,i)},opened:t.opened},scopedSlots:e._u([e._l(t.slots,(function(t,i){return{key:i,fn:function(){return[e.isString(t)?n("div",{key:i,domProps:{innerHTML:e._s(t)}}):n(t.component,e._g(e._b({key:i,tag:"component"},"component",t.bind,!1),t.on))]},proxy:!0}}))],null,!0),model:{value:t.value,callback:function(n){e.$set(t,"value",n)},expression:"modal.value"}},"component",t.bind,!1),t.on))})),1)},staticRenderFns:[]},undefined,{props:{},methods:{slice:function(e){this.api.dynamicModals.splice(e,1)},beforeOpen:function(e,t,n){var i=this;e.ref.params=t.params,this.$nextTick((function(){t.value||(i.slice(n),t.reject("show"))}))},isString:function(e){return"string"==typeof e}}},undefined,false,undefined,!1,void 0,void 0,void 0);function X(e,t){var n=l(l({},e),{},{props:l({},e.props)});return Object.assign(n.props,{api:{type:Object,default:function(){return t}}}),n}function Z(e){var t=X(W,e);return e._setDefaultModal(t),t}function G(e){return X(Y,e)}var J=0,Q=ie(),ee=Q.$modal,te=Q.VModal,ne=Q.VDynamicModals;function ie(){var e,t=(e=null,i.default.observable({show:function(t){for(var n=this,i=arguments.length,r=new Array(i>1?i-1:0),a=1;a1?t-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},n=0===J?Q:ie(),i=n.$modal,o=n.VModal,r=n.VDynamicModals;J+=1;var a=t.key||"$modal",s=t.name||"VModal",l=t.containerName||"VDynamicModals";e.prototype[a]=i,e.component(s,o),e.component(l,r)}oe.install=re,e.$modal=ee,e.VDynamicModals=ne,e.VModal=te,e.createVfm=ie,e.installVfm=re,e.vfmPlugin=oe,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=VueFinalModal.umd.js.map diff --git a/dist/VueFinalModal.umd.js.map b/dist/VueFinalModal.umd.js.map index 024fc8bf..210ee905 100644 --- a/dist/VueFinalModal.umd.js.map +++ b/dist/VueFinalModal.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"VueFinalModal.umd.js","sources":["../lib/utils/focusTrap.js","../lib/utils/dragResize.js","../lib/utils/bodyScrollLock.js","../lib/VueFinalModal.vue","../lib/PluginCore.js","../lib/utils/errors.js","../lib/Plugin.js"],"sourcesContent":["// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n this.enable = this.enable.bind(this)\n this.disable = this.disable.bind(this)\n this.firstElement = this.firstElement.bind(this)\n this.lastElement = this.lastElement.bind(this)\n }\n\n lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n firstElement() {\n return this.elements[0] || null\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement())) {\n this.lastElement().focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement())) {\n this.firstElement().focus()\n event.preventDefault()\n return\n }\n }\n\n enabled() {\n return !!this.root\n }\n\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\nexport default FocusTrap\n","export const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nconst pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n","// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n","\n\n\n\n\n","import VueFinalModal from './VueFinalModal.vue'\nimport ModalsContainer from './ModalsContainer.vue'\n\nfunction assignOptions(component, options) {\n const _component = { ...component }\n Object.assign(_component.props, {\n $_options: { type: Object, default: () => options }\n })\n return _component\n}\n\nfunction createVfm(Vue, options) {\n let vfm\n\n return function() {\n vfm = {\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n return Promise.allSettled([\n new Promise((resolve, reject) => {\n const defaultModal = {\n value: true,\n id: Symbol('dynamicModal'),\n component: options.componentName,\n bind: {},\n slots: {},\n on: {},\n params: args[0],\n reject,\n opened() {\n resolve('show')\n }\n }\n this.dynamicModals.push(Object.assign(defaultModal, modal))\n })\n ])\n }\n }\n },\n hide(...names) {\n return this.toggle(names, false)\n },\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.name))\n },\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n },\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.name))\n },\n dynamicModals: [],\n openedModals: [],\n modals: []\n }\n return Vue.observable(vfm)\n }\n}\n\nexport function bindPrototype(Vue, options) {\n const vfm = createVfm(Vue, options)()\n Object.defineProperty(Vue.prototype, options.key, {\n get() {\n return vfm\n }\n })\n}\n\nexport function registModal(Vue, options) {\n Vue.component(options.componentName, assignOptions(VueFinalModal, options))\n}\nexport function registContainer(Vue, options) {\n Vue.component(options.dynamicContainerName, assignOptions(ModalsContainer, options))\n}\n","export const DUPLICATE_KEY = '[vue-final-modal] Duplicate registration API key of VueFinalModal.'\n\nexport const DUPLICATE_COMPONENT = '[vue-final-modal] Duplicate registration componentName of VueFinalModal.'\n\nexport const DUPLICATE_DYNAMIC_CONTAINER =\n '[vue-final-modal] Duplicate registration dynamicContainerName of ModalsContainer.'\n","import { bindPrototype, registModal, registContainer } from './PluginCore'\nimport { DUPLICATE_KEY, DUPLICATE_COMPONENT, DUPLICATE_DYNAMIC_CONTAINER } from './utils/errors'\n\nconst defaultOptions = {\n componentName: 'VueFinalModal',\n dynamicContainerName: 'ModalsContainer',\n key: '$vfm'\n}\n\nconst validPlugin = (duplicateKey, duplicateComponent, duplicateDynamicContainer) => {\n if (!(duplicateKey || duplicateComponent || duplicateDynamicContainer)) return true\n\n if (typeof window === 'undefined') return false\n\n duplicateKey && console.error(DUPLICATE_KEY)\n duplicateComponent && console.error(DUPLICATE_COMPONENT)\n duplicateDynamicContainer && console.error(DUPLICATE_DYNAMIC_CONTAINER)\n\n return false\n}\n\nconst Plugin = pluginOptions => ({\n install(Vue, options) {\n const _options = Object.assign({}, defaultOptions, pluginOptions, options)\n const duplicateKey = Vue.prototype[_options.key]\n const duplicateComponent = Vue.options.components[_options.componentName]\n const duplicateDynamicContainer = Vue.options.components[_options.dynamicContainerName]\n\n if (validPlugin(duplicateKey, duplicateComponent, duplicateDynamicContainer)) {\n bindPrototype(Vue, _options)\n registModal(Vue, _options)\n registContainer(Vue, _options)\n }\n }\n})\n\nexport default Plugin\n"],"names":["queryFocusableElements","element","selector","querySelectorAll","isFocused","document","activeElement","FocusTrap","root","elements","onKeyDown","this","bind","enable","disable","firstElement","lastElement","length","event","key","keyCode","isTabPressed","shiftKey","focus","preventDefault","addEventListener","removeEventListener","getPosition","e","targetTouches","x","clientX","y","clientY","clamp","min","num","max","Math","trimPx","distance","Number","replace","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","hasPassiveEvents","window","passiveTestOptions","previousBodyOverflowSetting","previousBodyPaddingRight","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","forEach","nodeType","Node","ELEMENT_NODE","style","getComputedStyle","includes","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","target","touches","disableBodyScroll","targetElement","options","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","stopPropagation","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","body","getPropertyValue","paddingRight","overflow","setOverflowHidden","console","error","enableBodyScroll","filter","dragSelector","value","cacheStyle","s","charAt","toUpperCase","slice","assignOptions","component","_component","Object","assign","props","$_options","bindPrototype","Vue","vfm","show","modal","args","toggle","Promise","allSettled","resolve","reject","defaultModal","id","Symbol","componentName","slots","on","params","opened","_this","dynamicModals","hide","names","hideAll","openedModals","map","name","modals","Array","isArray","get","observable","createVfm","defineProperty","prototype","defaultOptions","dynamicContainerName","pluginOptions","install","_options","duplicateKey","duplicateComponent","duplicateDynamicContainer","validPlugin","components","VueFinalModal","registModal","ModalsContainer","registContainer"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"VueFinalModal.umd.js","sources":["../lib/utils/focusTrap.js","../lib/utils/dragResize.js","../lib/utils/bodyScrollLock.js","../lib/VModal.vue","../lib/PluginCore.js","../lib/Plugin.js"],"sourcesContent":["// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n this.enable = this.enable.bind(this)\n this.disable = this.disable.bind(this)\n this.firstElement = this.firstElement.bind(this)\n this.lastElement = this.lastElement.bind(this)\n }\n\n lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n firstElement() {\n return this.elements[0] || null\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement())) {\n this.lastElement().focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement())) {\n this.firstElement().focus()\n event.preventDefault()\n return\n }\n }\n\n enabled() {\n return !!this.root\n }\n\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\nexport default FocusTrap\n","export const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nconst pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n","// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n","\n\n\n\n\n","import Vue from 'vue'\nimport VModal from './VModal.vue'\nimport VDynamicModals from './VDynamicModals.vue'\n\nexport function createApi() {\n let _modalComponent = null\n\n return Vue.observable({\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n return Promise.allSettled([\n new Promise((resolve, reject) => {\n const defaultModal = {\n value: true,\n id: Symbol('dynamicModal'),\n component: _modalComponent,\n bind: {},\n slots: {},\n on: {},\n params: args[0],\n reject,\n opened() {\n resolve('show')\n }\n }\n this.dynamicModals.push(Object.assign(defaultModal, modal))\n })\n ])\n }\n }\n },\n hide(...names) {\n return this.toggle(names, false)\n },\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.name))\n },\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n },\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.name))\n },\n dynamicModals: [],\n openedModals: [],\n modals: [],\n _setDefaultModal(modalComponent) {\n _modalComponent = modalComponent\n }\n })\n}\n\nexport function bindApi(component, api) {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => api }\n })\n return _component\n}\n\nexport function createModal(api) {\n const modalComponent = bindApi(VModal, api)\n api._setDefaultModal(modalComponent)\n return modalComponent\n}\n\nexport function createContainer(api) {\n return bindApi(VDynamicModals, api)\n}\n","import { createApi, createModal, createContainer } from './PluginCore'\n\n/**\n * @description Ensure that `_vfm` is used when function `installPlugin` is executed for the first time\n */\nlet _count = 0\n\n/**\n * @description Create a vfm instance by default for directly support `import { $modal, VModal, VDynamicModals } from 'vue-final-modal'`\n */\nconst _vfm = createVfm()\nconst { $modal, VModal, VDynamicModals } = _vfm\nexport { $modal, VModal, VDynamicModals }\n\n/**\n * @description Support create multiple vfm instance\n */\nexport function createVfm() {\n let api = createApi()\n const vfm = {\n $modal: api,\n VModal: createModal(api),\n VDynamicModals: createContainer(api)\n }\n return vfm\n}\n\n/**\n * @description Vue plugin for register vfm instance globally\n */\nexport function vfmPlugin(pluginOptions) {\n return {\n install(Vue, options) {\n const _options = Object.assign({}, pluginOptions, options)\n installVfm(Vue, _options)\n }\n }\n}\n\nvfmPlugin.install = installVfm\n\n/**\n * @description Register vfm instance globally\n */\nexport function installVfm(Vue, options = {}) {\n const { $modal, VModal, VDynamicModals } = _count === 0 ? _vfm : createVfm()\n _count += 1\n const key = options.key || '$modal'\n const name = options.name || 'VModal'\n const containerName = options.containerName || 'VDynamicModals'\n Vue.prototype[key] = $modal\n Vue.component(name, VModal)\n Vue.component(containerName, VDynamicModals)\n}\n"],"names":["queryFocusableElements","element","selector","querySelectorAll","isFocused","document","activeElement","FocusTrap","root","elements","onKeyDown","this","bind","enable","disable","firstElement","lastElement","length","event","key","keyCode","isTabPressed","shiftKey","focus","preventDefault","addEventListener","removeEventListener","getPosition","e","targetTouches","x","clientX","y","clientY","clamp","min","num","max","Math","trimPx","distance","Number","replace","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","hasPassiveEvents","window","passiveTestOptions","previousBodyOverflowSetting","previousBodyPaddingRight","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","forEach","nodeType","Node","ELEMENT_NODE","style","getComputedStyle","includes","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","target","touches","disableBodyScroll","targetElement","options","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","stopPropagation","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","body","getPropertyValue","paddingRight","overflow","setOverflowHidden","console","error","enableBodyScroll","filter","dragSelector","value","cacheStyle","s","charAt","toUpperCase","slice","bindApi","component","api","_component","props","Object","assign","createModal","modalComponent","VModal","_setDefaultModal","createContainer","VDynamicModals","_count","_vfm","createVfm","$modal","_modalComponent","Vue","observable","show","modal","args","toggle","Promise","allSettled","resolve","reject","defaultModal","id","Symbol","slots","on","params","opened","_this","dynamicModals","hide","names","hideAll","openedModals","map","name","modals","Array","isArray","get","vfmPlugin","pluginOptions","install","installVfm","containerName","prototype"],"mappings":"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"} \ No newline at end of file diff --git a/docs/components/examples/basic/BasicOptions.vue b/docs/components/examples/basic/BasicOptions.vue index 796e21c9..26dbd3cb 100644 --- a/docs/components/examples/basic/BasicOptions.vue +++ b/docs/components/examples/basic/BasicOptions.vue @@ -1,6 +1,6 @@