From 49f37cead26d91308538004bcb954eef34cc0d50 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Thu, 6 Apr 2023 21:24:34 +1000 Subject: [PATCH] Add usage example, fix build for use with bundlers and browser (#552) Co-authored-by: Sergiu Cazac --- .github/workflows/node.js.yml | 3 +- build/build.lib.mjs | 5 +- build/vite.config.dist.mjs | 24 +- build/vite.config.lib.provider.mjs | 23 +- dist/keen-ui.css | 5282 +++- dist/keen-ui.esm.js | 10012 ++++++ dist/keen-ui.js | 25502 ++++++---------- package.json | 18 +- src/index.js | 14 +- usage-example-static/README.md | 11 + usage-example-static/index.html | 39 + usage-example-vite/.gitignore | 24 + usage-example-vite/README.md | 18 + usage-example-vite/index.html | 13 + usage-example-vite/package.json | 18 + usage-example-vite/public/vite.svg | 1 + usage-example-vite/src/App.vue | 20 + .../src/components/UsesDefaultExport.vue | 10 + .../src/components/UsesLibExport.vue | 10 + .../src/components/UsesNamedExport.vue | 10 + .../src/components/UsesSrcExport.vue | 7 + usage-example-vite/src/main.js | 7 + usage-example-vite/src/style.css | 9 + usage-example-vite/vite.config.js | 7 + usage-example-vite/yarn.lock | 365 + 25 files changed, 23977 insertions(+), 17475 deletions(-) create mode 100644 dist/keen-ui.esm.js create mode 100644 usage-example-static/README.md create mode 100644 usage-example-static/index.html create mode 100644 usage-example-vite/.gitignore create mode 100644 usage-example-vite/README.md create mode 100644 usage-example-vite/index.html create mode 100644 usage-example-vite/package.json create mode 100644 usage-example-vite/public/vite.svg create mode 100644 usage-example-vite/src/App.vue create mode 100644 usage-example-vite/src/components/UsesDefaultExport.vue create mode 100644 usage-example-vite/src/components/UsesLibExport.vue create mode 100644 usage-example-vite/src/components/UsesNamedExport.vue create mode 100644 usage-example-vite/src/components/UsesSrcExport.vue create mode 100644 usage-example-vite/src/main.js create mode 100644 usage-example-vite/src/style.css create mode 100644 usage-example-vite/vite.config.js create mode 100644 usage-example-vite/yarn.lock diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 9b815d42..4d66bad4 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -27,8 +27,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - node-version: [14.x, 16.x, 18.x] + node-version: [lts/*] # latest LTS version of Node steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} diff --git a/build/build.lib.mjs b/build/build.lib.mjs index 23f72dea..27484bba 100644 --- a/build/build.lib.mjs +++ b/build/build.lib.mjs @@ -38,6 +38,9 @@ const entries = [ "UiTooltip", ]; +// We need to get the env variable here because it later gets polluted by child processes +const mode = process.env.NODE_ENV || "production"; + entries.forEach(async (entry) => { - await build(getLibConfig({ entry, mode: process.env.NODE_ENV || "production" })); + await build(getLibConfig({ entry, mode })); }); diff --git a/build/vite.config.dist.mjs b/build/vite.config.dist.mjs index 12916fa8..33e41385 100644 --- a/build/vite.config.dist.mjs +++ b/build/vite.config.dist.mjs @@ -6,9 +6,20 @@ import autoprefixer from "autoprefixer"; import options from "./options.mjs"; export default defineConfig(({ mode }) => { - const filename = mode === "production" ? "keen-ui.min" : "keen-ui"; + const isProduction = mode === "production"; const outDir = options.paths.output.main; + const formatFileNames = { + es: { + development: "keen-ui.esm.js", + production: "keen-ui.esm.min.js", + }, + umd: { + development: "keen-ui.js", + production: "keen-ui.min.js", + }, + }; + return { plugins: [vue(), banner({ content: options.banner, outDir })], resolve: { @@ -31,14 +42,19 @@ export default defineConfig(({ mode }) => { lib: { entry: options.paths.resolve("src/index.js"), name: "KeenUI", - formats: ["umd"], - fileName: () => filename + ".js", + formats: isProduction ? ["umd"] : ['umd', 'es'], + fileName: (format) => { + return formatFileNames[format][mode] + }, }, rollupOptions: { external: [/^vue/], output: { + globals: { + vue: "Vue", + }, assetFileNames: (assetInfo) => - assetInfo.name === "style.css" ? filename + ".css" : assetInfo.name, + assetInfo.name === "style.css" ? `keen-ui${isProduction ? '.min' : ''}.css` : assetInfo.name, }, }, }, diff --git a/build/vite.config.lib.provider.mjs b/build/vite.config.lib.provider.mjs index a8626b6f..53736532 100644 --- a/build/vite.config.lib.provider.mjs +++ b/build/vite.config.lib.provider.mjs @@ -5,8 +5,20 @@ import autoprefixer from "autoprefixer"; import options from "./options.mjs"; export default ({ entry, mode }) => { + const isProduction = mode === "production"; const outDir = options.paths.output.lib; + const formatFileNames = { + es: { + development: `${entry}.esm.js`, + production: `${entry}.esm.min.js`, + }, + umd: { + development: `${entry}.js`, + production: `${entry}.min.js`, + }, + }; + return { plugins: [vue(), banner({ content: options.banner, outDir })], resolve: { @@ -20,11 +32,13 @@ export default ({ entry, mode }) => { }, }, build: { - minify: mode === "production" ? "esbuild" : false, + minify: isProduction ? "esbuild" : false, lib: { entry: options.paths.resolve(`src/${entry}.vue`), - formats: ["umd"], - fileName: () => `[name]${mode === "production" ? ".min" : ""}.js`, + formats: isProduction ? ["umd"] : ['umd', 'es'], + fileName: (format) => { + return formatFileNames[format][mode] + }, name: `KeenUI.${entry}`, }, outDir, @@ -36,6 +50,9 @@ export default ({ entry, mode }) => { globals: { vue: "Vue", }, + assetFileNames: () => { + return `css/[name][extname]` + } }, }, }, diff --git a/dist/keen-ui.css b/dist/keen-ui.css index fc39dee8..6bfc3996 100644 --- a/dist/keen-ui.css +++ b/dist/keen-ui.css @@ -1,1740 +1,3922 @@ /*! * Keen UI v1.4.0 (https://github.com/JosephusPaye/keen-ui) - * (c) 2022 Josephus Paye II + * (c) 2023 Josephus Paye II * Released under the MIT License. */ - -.ui-alert{display:-webkit-box;display:-ms-flexbox;display:flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:.9375rem;line-height:1.4;margin-bottom:1rem;overflow:hidden;position:relative;-webkit-transition:margin-bottom .3s;transition:margin-bottom .3s;width:100% +.ui-icon { + cursor: inherit; + display: inline-block; + font-size: 1.5rem; + height: 1em; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + width: 1em; +} +.ui-icon svg { + display: block; + fill: currentColor; + height: 1em; + margin: 0; + padding: 0; + width: 1em; +}.ui-ripple-ink { + border-radius: inherit; + bottom: 0; + display: block; + left: 0; + overflow: hidden; + position: absolute; + right: 0; + top: 0; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); +} +.ui-ripple-ink__ink { + background-clip: padding-box; + background-color: currentColor; + border-radius: 50%; + height: 0; + opacity: 0.2; + pointer-events: none; + position: absolute; + transform: scale(0); + transition: transform 0.6s ease-out, opacity 0.6s ease-out; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 0; +} +.ui-ripple-ink__ink.is-held { + opacity: 0.4; + transform: scale(1); +} +.ui-ripple-ink__ink.is-done { + opacity: 0 !important; +}.ui-close-button { + -ms-flex-align: center; + align-items: center; + background-color: transparent; + background: none; + border-radius: 50%; + border: none; + cursor: default; + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-pack: center; + justify-content: center; + margin: 0; + outline: none; + overflow: hidden; + padding: 0; + position: relative; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); +} +.ui-close-button::-moz-focus-inner { + border: 0; +} +.ui-close-button:hover:not(.is-disabled) { + background-color: rgba(0, 0, 0, 0.1); +} +body[modality=keyboard] .ui-close-button:focus .ui-close-button__focus-ring { + opacity: 1; + transform: scale(1); +} +.ui-close-button.is-disabled { + opacity: 0.6; +} +.ui-close-button__icon { + color: currentColor; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + position: relative; + width: 100%; + z-index: 1; +} +.ui-close-button__focus-ring { + background-color: rgba(0, 0, 0, 0.15); + border-radius: 50%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + transform-origin: center; + transform: scale(0); + transition: transform 0.3s ease, opacity 0.3s ease; +} +.ui-close-button--size-mini, +.ui-close-button--size-mini .ui-close-button__focus-ring { + height: 1.5rem; + width: 1.5rem; +} +.ui-close-button--size-mini .ui-icon { + font-size: 1.125rem; +} +.ui-close-button--size-small, +.ui-close-button--size-small .ui-close-button__focus-ring { + height: 2rem; + width: 2rem; +} +.ui-close-button--size-small .ui-icon { + font-size: 1.125rem; +} +.ui-close-button--size-normal, +.ui-close-button--size-normal .ui-close-button__focus-ring { + height: 2.25rem; + width: 2.25rem; +} +.ui-close-button--size-normal .ui-icon { + font-size: 1.25rem; +} +.ui-close-button--size-large, +.ui-close-button--size-large .ui-close-button__focus-ring { + height: 3rem; + width: 3rem; +} +.ui-close-button--size-large .ui-icon { + font-size: 1.5rem; +} +.ui-close-button--color-black { + color: rgba(0, 0, 0, 0.38); +} +body[modality=keyboard] .ui-close-button--color-black:focus .ui-close-button__icon, .ui-close-button--color-black:hover:not(.is-disabled) .ui-close-button__icon { + color: rgba(0, 0, 0, 0.87); +} +.ui-close-button--color-white { + color: white; +}.ui-alert { + display: -ms-flexbox; + display: flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 0.9375rem; + line-height: 1.4; + margin-bottom: 1rem; + overflow: hidden; + position: relative; + transition: margin-bottom 0.3s; + width: 100%; +} +.ui-alert.has-no-transition, +.ui-alert.has-no-transition .ui-alert__body { + transition: none; +} +.ui-alert a { + text-decoration: none; +} +.ui-alert a:hover, .ui-alert a:focus { + text-decoration: underline; +} +.ui-alert__icon { + -ms-flex-item-align: start; + align-self: flex-start; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; +} +.ui-alert__body { + -ms-flex-align: center; + align-items: center; + color: rgba(0, 0, 0, 0.75); + display: -ms-flexbox; + display: flex; + -ms-flex-direction: row; + flex-direction: row; + margin-bottom: 0; + margin-top: 0; + min-height: 3rem; + padding: 0.75rem 1rem; + transition: opacity 0.3s, margin-top 0.4s; + width: 100%; +} +.ui-alert__content { + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-alert__dismiss-button { + -ms-flex-item-align: start; + align-self: flex-start; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-bottom: -0.25rem; + margin-left: 0.5rem; + margin-right: -0.5rem; + margin-top: -0.25rem; +} +.ui-alert--type-info .ui-alert__body { + background-color: rgba(33, 150, 243, 0.12); +} +.ui-alert--type-info .ui-alert__icon { + color: #2196f3; +} +.ui-alert--type-info a { + color: #2196f3; +} +.ui-alert--type-success .ui-alert__body { + background-color: rgba(76, 175, 80, 0.12); +} +.ui-alert--type-success .ui-alert__icon { + color: #4caf50; +} +.ui-alert--type-success a { + color: #4caf50; +} +.ui-alert--type-warning .ui-alert__body { + background-color: rgba(255, 152, 0, 0.12); +} +.ui-alert--type-warning .ui-alert__icon { + color: #ff9800; +} +.ui-alert--type-warning a { + color: #ff9800; +} +.ui-alert--type-error .ui-alert__body { + background-color: rgba(244, 67, 54, 0.12); +} +.ui-alert--type-error .ui-alert__icon { + color: #f44336; +} +.ui-alert--type-error a { + color: #f44336; +} +.ui-alert--transition-toggle-enter-from, +.ui-alert--transition-toggle-leave-active { + margin-bottom: 0; +} +.ui-alert--transition-toggle-enter-from .ui-alert__body, +.ui-alert--transition-toggle-leave-active .ui-alert__body { + margin-top: -3.5rem; + opacity: 0; +}.ui-autocomplete-suggestion { + cursor: pointer; + font-family: inherit; + font-size: 0.9375rem; + padding: 0.5rem 0.75rem; +} +.ui-autocomplete-suggestion:hover { + background-color: rgba(0, 0, 0, 0.06); +} +.ui-autocomplete-suggestion.is-highlighted { + background-color: rgba(0, 0, 0, 0.1); +} +.ui-autocomplete-suggestion__image { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; +} +.ui-autocomplete-suggestion__image-object { + background-position: 50%; + background-size: cover; + border-radius: 50%; + height: 2rem; + margin-right: 0.75rem; + width: 2rem; +}.ui-autocomplete { + -ms-flex-align: start; + align-items: flex-start; + display: -ms-flexbox; + display: flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + margin-bottom: 1rem; + position: relative; +} +.ui-autocomplete:hover:not(.is-disabled) .ui-autocomplete__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-autocomplete:hover:not(.is-disabled) .ui-autocomplete__input { + border-bottom-color: rgba(0, 0, 0, 0.3); +} +.ui-autocomplete.is-active:not(.is-disabled) .ui-autocomplete__label-text, +.ui-autocomplete.is-active:not(.is-disabled) .ui-autocomplete__icon-wrapper .ui-icon { + color: #2196f3; +} +.ui-autocomplete.is-active:not(.is-disabled) .ui-autocomplete__input { + border-bottom-color: #2196f3; + border-bottom-width: 2px; +} +.ui-autocomplete.has-floating-label .ui-autocomplete__label-text { + display: table; +} +.ui-autocomplete.has-floating-label .ui-autocomplete__label-text.is-inline { + color: rgba(0, 0, 0, 0.54); + cursor: text; + transform: translateY(1.625rem) scale(1.1); +} +.ui-autocomplete.has-floating-label .ui-autocomplete__label-text.is-floating { + transform: translateY(0) scale(1); +} +.ui-autocomplete.has-label .ui-autocomplete__icon-wrapper { + padding-top: 1.5rem; +} +.ui-autocomplete.has-label .ui-autocomplete__clear-button { + top: 1.6875rem; +} +.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__label-text, +.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__icon-wrapper .ui-icon { + color: #f44336; +} +.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__input { + border-bottom-color: #f44336; +} +.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__feedback { + color: #f44336; +} +.ui-autocomplete.is-disabled .ui-autocomplete__input { + border-bottom-style: dotted; + border-bottom-width: 2px; + color: rgba(0, 0, 0, 0.38); +} +.ui-autocomplete.is-disabled .ui-autocomplete__icon-wrapper .ui-icon { + opacity: 0.6; +} +.ui-autocomplete.is-disabled .ui-autocomplete__feedback { + opacity: 0.8; +} +.ui-autocomplete__label { + display: block; + margin: 0; + padding: 0; + position: relative; + width: 100%; +} +.ui-autocomplete__icon-wrapper { + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; + padding-top: 0.25rem; +} +.ui-autocomplete__icon-wrapper .ui-icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-autocomplete__content { + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-autocomplete__label-text { + color: rgba(0, 0, 0, 0.54); + cursor: default; + font-size: 0.9375rem; + line-height: normal; + margin-bottom: 0; + transform-origin: left; + transition: color 0.1s ease, transform 0.2s ease; +} +.ui-autocomplete__input { + background: none; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + border-radius: 0; + color: rgba(0, 0, 0, 0.87); + cursor: auto; + font-family: inherit; + font-size: 1rem; + font-weight: normal; + height: 2rem; + outline: none; + padding: 0; + transition: border 0.1s ease; + width: 100%; +} +.ui-autocomplete__input::-ms-clear { + display: none; +} +.ui-autocomplete__clear-button { + color: rgba(0, 0, 0, 0.54); + cursor: pointer; + font-size: 1.125rem; + position: absolute; + right: 0; + top: 0.4375rem; +} +.ui-autocomplete__clear-button:hover { + color: rgba(0, 0, 0, 0.87); +} +.ui-autocomplete__suggestions { + background-color: white; + box-shadow: 1px 2px 8px #757575; + color: rgba(0, 0, 0, 0.87); + display: block; + list-style-type: none; + margin: 0; + margin-bottom: 0.5rem; + min-width: 100%; + padding: 0; + position: absolute; + z-index: 60; +} +.ui-autocomplete__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0.25rem; + position: relative; +} +.ui-autocomplete--icon-position-right .ui-autocomplete__icon-wrapper { + margin-left: 0.5rem; + margin-right: 0; + -ms-flex-order: 1; + order: 1; +}.ui-focus-container__focus-redirector, +.ui-focus-container__last-focusable { + opacity: 0; + position: absolute; +} +.ui-focus-container__content { + outline: none; +}.tippy-iOS { + cursor: pointer !important; + -webkit-tap-highlight-color: transparent; +} +.tippy-popper { + max-height: 100%; + max-width: 100%; + outline: 0; + pointer-events: none; + transition-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1); + z-index: 60; +} +.tippy-popper[x-placement^=top] .tippy-backdrop { + border-radius: 40% 40% 0 0; +} +.tippy-popper[x-placement^=top] .tippy-backdrop { + transform-origin: 0% 25%; +} +.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible] { + transform: scale(1) translate(-50%, -55%); +} +.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden] { + transform: scale(0.2) translate(-50%, -45%); + opacity: 0; +} +.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible] { + transform: translateY(-10px); +} +.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden] { + opacity: 0; + transform: translateY(-10px); +} +.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible] { + transform: translateY(-10px); +} +.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden] { + opacity: 0; + transform: translateY(0); +} +.tippy-popper[x-placement^=top] [data-animation=scale] { + transform-origin: bottom; +} +.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible] { + transform: translateY(-10px) scale(1); +} +.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden] { + opacity: 0; + transform: translateY(-10px) scale(0.5); +} +.tippy-popper[x-placement^=bottom] .tippy-backdrop { + border-radius: 0 0 30% 30%; } -.ui-alert.has-no-transition,.ui-alert.has-no-transition .ui-alert__body{-webkit-transition:none;transition:none +.tippy-popper[x-placement^=bottom] .tippy-backdrop { + transform-origin: 0% -50%; } -.ui-alert a{text-decoration:none +.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible] { + transform: scale(1) translate(-50%, -45%); } -.ui-alert a:hover,.ui-alert a:focus{text-decoration:underline +.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden] { + transform: scale(0.2) translate(-50%, 0); + opacity: 0; } -.ui-alert__icon{-ms-flex-item-align:start;align-self:flex-start;-ms-flex-negative:0;flex-shrink:0;margin-right:.75rem +.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible] { + transform: translateY(10px); } -.ui-alert__body{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:rgba(0,0,0,.75);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-bottom:0;margin-top:0;min-height:3rem;padding:.75rem 1rem;-webkit-transition:opacity .3s,margin-top .4s;transition:opacity .3s,margin-top .4s;width:100% +.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden] { + opacity: 0; + transform: translateY(10px); } -.ui-alert__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 +.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible] { + transform: translateY(10px); } -.ui-alert__dismiss-button{-ms-flex-item-align:start;align-self:flex-start;-ms-flex-negative:0;flex-shrink:0;margin-bottom:-0.25rem;margin-left:.5rem;margin-right:-0.5rem;margin-top:-0.25rem +.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden] { + opacity: 0; + transform: translateY(0); } -.ui-alert--type-info .ui-alert__body{background-color:rgba(33,150,243,.12) +.tippy-popper[x-placement^=bottom] [data-animation=scale] { + transform-origin: top; } -.ui-alert--type-info .ui-alert__icon{color:#2196f3 +.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible] { + transform: translateY(10px) scale(1); } -.ui-alert--type-info a{color:#2196f3 +.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden] { + opacity: 0; + transform: translateY(10px) scale(0.5); } -.ui-alert--type-success .ui-alert__body{background-color:rgba(76,175,80,.12) +.tippy-popper[x-placement^=left] .tippy-backdrop { + border-radius: 50% 0 0 50%; } -.ui-alert--type-success .ui-alert__icon{color:#4caf50 +.tippy-popper[x-placement^=left] .tippy-backdrop { + transform-origin: 50% 0%; } -.ui-alert--type-success a{color:#4caf50 +.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible] { + transform: scale(1) translate(-50%, -50%); } -.ui-alert--type-warning .ui-alert__body{background-color:rgba(255,152,0,.12) +.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden] { + transform: scale(0.2) translate(-75%, -50%); + opacity: 0; } -.ui-alert--type-warning .ui-alert__icon{color:#ff9800 +.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible] { + transform: translateX(-10px); } -.ui-alert--type-warning a{color:#ff9800 +.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden] { + opacity: 0; + transform: translateX(-10px); } -.ui-alert--type-error .ui-alert__body{background-color:rgba(244,67,54,.12) +.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible] { + transform: translateX(-10px); } -.ui-alert--type-error .ui-alert__icon{color:#f44336 +.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden] { + opacity: 0; + transform: translateX(0); } -.ui-alert--type-error a{color:#f44336 +.tippy-popper[x-placement^=left] [data-animation=scale] { + transform-origin: right; } -.ui-alert--transition-toggle-enter,.ui-alert--transition-toggle-leave-active{margin-bottom:0 +.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible] { + transform: translateX(-10px) scale(1); } -.ui-alert--transition-toggle-enter .ui-alert__body,.ui-alert--transition-toggle-leave-active .ui-alert__body{margin-top:-3.5rem;opacity:0 +.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden] { + opacity: 0; + transform: translateX(-10px) scale(0.5); } -.ui-close-button{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:transparent;background:none;border-radius:50%;border:none;cursor:default;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0;outline:none;overflow:hidden;padding:0;position:relative;-webkit-mask-image:-webkit-radial-gradient(circle, white, black) +.tippy-popper[x-placement^=right] .tippy-backdrop { + border-radius: 0 50% 50% 0; } -.ui-close-button::-moz-focus-inner{border:0 +.tippy-popper[x-placement^=right] .tippy-backdrop { + transform-origin: -50% 0%; } -.ui-close-button:hover:not(.is-disabled){background-color:rgba(0,0,0,.1) +.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible] { + transform: scale(1) translate(-50%, -50%); } -body[modality=keyboard] .ui-close-button:focus .ui-close-button__focus-ring{opacity:1;-webkit-transform:scale(1);transform:scale(1) +.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden] { + transform: scale(0.2) translate(-25%, -50%); + opacity: 0; } -.ui-close-button.is-disabled{opacity:.6 +.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible] { + transform: translateX(10px); } -.ui-close-button__icon{color:currentColor;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;width:100%;z-index:1 +.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden] { + opacity: 0; + transform: translateX(10px); } -.ui-close-button__focus-ring{background-color:rgba(0,0,0,.15);border-radius:50%;left:0;opacity:0;position:absolute;top:0;-webkit-transform-origin:center;transform-origin:center;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,opacity .3s ease;transition:transform .3s ease,opacity .3s ease,-webkit-transform .3s ease +.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible] { + transform: translateX(10px); } -.ui-close-button--size-mini,.ui-close-button--size-mini .ui-close-button__focus-ring{height:1.5rem;width:1.5rem +.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden] { + opacity: 0; + transform: translateX(0); } -.ui-close-button--size-mini .ui-icon{font-size:1.125rem +.tippy-popper[x-placement^=right] [data-animation=scale] { + transform-origin: left; } -.ui-close-button--size-small,.ui-close-button--size-small .ui-close-button__focus-ring{height:2rem;width:2rem +.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible] { + transform: translateX(10px) scale(1); } -.ui-close-button--size-small .ui-icon{font-size:1.125rem +.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden] { + opacity: 0; + transform: translateX(10px) scale(0.5); } -.ui-close-button--size-normal,.ui-close-button--size-normal .ui-close-button__focus-ring{height:2.25rem;width:2.25rem +.tippy-tooltip { + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -.ui-close-button--size-normal .ui-icon{font-size:1.25rem +.tippy-tooltip[data-animatefill] { + overflow: hidden; + background-color: transparent; } -.ui-close-button--size-large,.ui-close-button--size-large .ui-close-button__focus-ring{height:3rem;width:3rem +.tippy-tooltip[data-interactive] { + pointer-events: auto; } -.ui-close-button--size-large .ui-icon{font-size:1.5rem +.tippy-tooltip[data-interactive] path { + pointer-events: auto; } -.ui-close-button--color-black{color:rgba(0,0,0,.38) +.tippy-backdrop { + position: absolute; + border-radius: 50%; + width: calc(110% + 2rem); + left: 50%; + top: 50%; + z-index: -1; + transition: all cubic-bezier(0.46, 0.1, 0.52, 0.98); + backface-visibility: hidden; } -body[modality=keyboard] .ui-close-button--color-black:focus .ui-close-button__icon,.ui-close-button--color-black:hover:not(.is-disabled) .ui-close-button__icon{color:rgba(0,0,0,.87) +.tippy-backdrop::after { + content: ""; + float: left; + padding-top: 100%; } -.ui-close-button--color-white{color:#fff +.tippy-backdrop + .tippy-content { + transition-property: opacity; + will-change: opacity; } -.ui-icon{cursor:inherit;display:inline-block;font-size:1.5rem;height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;width:1em +.tippy-backdrop + .tippy-content[data-state=visible] { + opacity: 1; } -.ui-icon svg{display:block;fill:currentColor;height:1em;margin:0;padding:0;width:1em +.tippy-backdrop + .tippy-content[data-state=hidden] { + opacity: 0; } -.ui-ripple-ink{border-radius:inherit;bottom:0;display:block;left:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-mask-image:-webkit-radial-gradient(circle, white, black) +.ui-popover.is-raised { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); } -.ui-ripple-ink__ink{background-clip:padding-box;background-color:currentColor;border-radius:50%;height:0;opacity:.2;pointer-events:none;position:absolute;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .6s ease-out,-webkit-transform .6s ease-out;transition:opacity .6s ease-out,-webkit-transform .6s ease-out;transition:transform .6s ease-out,opacity .6s ease-out;transition:transform .6s ease-out,opacity .6s ease-out,-webkit-transform .6s ease-out;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:0 +.ui-popover .ui-menu { + border: none; } -.ui-ripple-ink__ink.is-held{opacity:.4;-webkit-transform:scale(1);transform:scale(1) +.ui-popover-theme { + background-color: white; +}.ui-progress-circular { + position: relative; } -.ui-ripple-ink__ink.is-done{opacity:0 !important +.ui-progress-circular__determinate { + transform: rotate(270deg); } -.ui-autocomplete{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";margin-bottom:1rem;position:relative +.ui-progress-circular__determinate-path { + stroke-dashoffset: 0; + transition: stroke-dashoffset 0.3s; } -.ui-autocomplete:hover:not(.is-disabled) .ui-autocomplete__label-text{color:rgba(0,0,0,.75) +.ui-progress-circular__indeterminate { + animation: ui-progress-circular-rotate 0.7s linear infinite; + bottom: 0; + height: 100%; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + transform-origin: center center; + width: 100%; } -.ui-autocomplete:hover:not(.is-disabled) .ui-autocomplete__input{border-bottom-color:rgba(0,0,0,.3) +.ui-progress-circular__indeterminate-path { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + stroke-linecap: round; } -.ui-autocomplete.is-active:not(.is-disabled) .ui-autocomplete__label-text,.ui-autocomplete.is-active:not(.is-disabled) .ui-autocomplete__icon-wrapper .ui-icon{color:#2196f3 +.ui-progress-circular--color-multi-color .ui-progress-circular__determinate-path { + stroke: #2196f3; } -.ui-autocomplete.is-active:not(.is-disabled) .ui-autocomplete__input{border-bottom-color:#2196f3;border-bottom-width:2px +.ui-progress-circular--color-multi-color .ui-progress-circular__indeterminate-path { + animation: ui-progress-circular-color 6s ease-in-out infinite; } -.ui-autocomplete.has-floating-label .ui-autocomplete__label-text{display:table +.ui-progress-circular--color-primary .ui-progress-circular__determinate-path, +.ui-progress-circular--color-primary .ui-progress-circular__indeterminate-path { + stroke: #2196f3; } -.ui-autocomplete.has-floating-label .ui-autocomplete__label-text.is-inline{color:rgba(0,0,0,.54);cursor:text;-webkit-transform:translateY(1.625rem) scale(1.1);transform:translateY(1.625rem) scale(1.1) +.ui-progress-circular--color-accent .ui-progress-circular__determinate-path, +.ui-progress-circular--color-accent .ui-progress-circular__indeterminate-path { + stroke: #d500f9; } -.ui-autocomplete.has-floating-label .ui-autocomplete__label-text.is-floating{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1) +.ui-progress-circular--color-black .ui-progress-circular__determinate-path, +.ui-progress-circular--color-black .ui-progress-circular__indeterminate-path { + stroke: #212121; } -.ui-autocomplete.has-label .ui-autocomplete__icon-wrapper{padding-top:1.5rem +.ui-progress-circular--color-white .ui-progress-circular__determinate-path, +.ui-progress-circular--color-white .ui-progress-circular__indeterminate-path { + stroke: white; } -.ui-autocomplete.has-label .ui-autocomplete__clear-button{top:1.6875rem +.ui-progress-circular--transition-fade-enter-active, +.ui-progress-circular--transition-fade-leave-active { + transition: opacity 0.3s ease, transform 0.3s ease; } -.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__label-text,.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__icon-wrapper .ui-icon{color:#f44336 +.ui-progress-circular--transition-fade-enter-from, +.ui-progress-circular--transition-fade-leave-active { + opacity: 0; + transform: scale(0); } -.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__input{border-bottom-color:#f44336 +@keyframes ui-progress-circular-rotate { +100% { + transform: rotate(360deg); } -.ui-autocomplete.is-invalid:not(.is-disabled) .ui-autocomplete__feedback{color:#f44336 } -.ui-autocomplete.is-disabled .ui-autocomplete__input{border-bottom-style:dotted;border-bottom-width:2px;color:rgba(0,0,0,.38) +@keyframes ui-progress-circular-color { +0%, 100% { + stroke: #f44336; } -.ui-autocomplete.is-disabled .ui-autocomplete__icon-wrapper .ui-icon{opacity:.6 +40% { + stroke: #2196f3; } -.ui-autocomplete.is-disabled .ui-autocomplete__feedback{opacity:.8 +66% { + stroke: #4caf50; } -.ui-autocomplete__label{display:block;margin:0;padding:0;position:relative;width:100% +80%, 90% { + stroke: #ff9800; } -.ui-autocomplete__icon-wrapper{-ms-flex-negative:0;flex-shrink:0;margin-right:.75rem;padding-top:.25rem +}.tippy-iOS { + cursor: pointer !important; + -webkit-tap-highlight-color: transparent; } -.ui-autocomplete__icon-wrapper .ui-icon{color:rgba(0,0,0,.54) +.tippy-popper { + max-height: 100%; + max-width: 100%; + outline: 0; + pointer-events: none; + transition-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1); + z-index: 60; } -.ui-autocomplete__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 +.tippy-popper[x-placement^=top] .tippy-backdrop { + border-radius: 40% 40% 0 0; } -.ui-autocomplete__label-text{color:rgba(0,0,0,.54);cursor:default;font-size:.9375rem;line-height:normal;margin-bottom:0;-webkit-transform-origin:left;transform-origin:left;-webkit-transition:color .1s ease,-webkit-transform .2s ease;transition:color .1s ease,-webkit-transform .2s ease;transition:color .1s ease,transform .2s ease;transition:color .1s ease,transform .2s ease,-webkit-transform .2s ease +.tippy-popper[x-placement^=top] .tippy-backdrop { + transform-origin: 0% 25%; } -.ui-autocomplete__input{background:none;border:none;border-bottom-color:rgba(0,0,0,.12);border-bottom-style:solid;border-bottom-width:1px;border-radius:0;color:rgba(0,0,0,.87);cursor:auto;font-family:inherit;font-size:1rem;font-weight:normal;height:2rem;outline:none;padding:0;-webkit-transition:border .1s ease;transition:border .1s ease;width:100% +.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible] { + transform: scale(1) translate(-50%, -55%); } -.ui-autocomplete__input::-ms-clear{display:none +.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden] { + transform: scale(0.2) translate(-50%, -45%); + opacity: 0; } -.ui-autocomplete__clear-button{color:rgba(0,0,0,.54);cursor:pointer;font-size:1.125rem;position:absolute;right:0;top:.4375rem +.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible] { + transform: translateY(-10px); } -.ui-autocomplete__clear-button:hover{color:rgba(0,0,0,.87) +.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden] { + opacity: 0; + transform: translateY(-10px); } -.ui-autocomplete__suggestions{background-color:#fff;box-shadow:1px 2px 8px #757575;color:rgba(0,0,0,.87);display:block;list-style-type:none;margin:0;margin-bottom:.5rem;min-width:100%;padding:0;position:absolute;z-index:60 +.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible] { + transform: translateY(-10px); } -.ui-autocomplete__feedback{color:rgba(0,0,0,.54);font-size:.875rem;line-height:1.2;margin:0;padding-top:.25rem;position:relative +.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden] { + opacity: 0; + transform: translateY(0); } -.ui-autocomplete--icon-position-right .ui-autocomplete__icon-wrapper{margin-left:.5rem;margin-right:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1 +.tippy-popper[x-placement^=top] [data-animation=scale] { + transform-origin: bottom; } -.ui-autocomplete-suggestion{cursor:pointer;font-family:inherit;font-size:.9375rem;padding:.5rem .75rem +.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible] { + transform: translateY(-10px) scale(1); } -.ui-autocomplete-suggestion:hover{background-color:rgba(0,0,0,.06) +.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden] { + opacity: 0; + transform: translateY(-10px) scale(0.5); } -.ui-autocomplete-suggestion.is-highlighted{background-color:rgba(0,0,0,.1) +.tippy-popper[x-placement^=bottom] .tippy-backdrop { + border-radius: 0 0 30% 30%; } -.ui-autocomplete-suggestion__image{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex +.tippy-popper[x-placement^=bottom] .tippy-backdrop { + transform-origin: 0% -50%; } -.ui-autocomplete-suggestion__image-object{background-position:50%;background-size:cover;border-radius:50%;height:2rem;margin-right:.75rem;width:2rem +.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible] { + transform: scale(1) translate(-50%, -45%); } -.ui-button{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:none;border-radius:.125rem;border:none;cursor:default;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:.875rem;font-weight:600;height:2.25rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;letter-spacing:.02em;line-height:1;min-width:5rem;outline:none;overflow:hidden;padding:0;padding-left:1rem;padding-right:1rem;position:relative;text-transform:uppercase;-ms-touch-action:manipulation;touch-action:manipulation +.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden] { + transform: scale(0.2) translate(-50%, 0); + opacity: 0; } -.ui-button::-moz-focus-inner{border:0 +.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible] { + transform: translateY(10px); } -.ui-button.has-focus-ring:focus .ui-button__focus-ring::before,body[modality=keyboard] .ui-button:focus .ui-button__focus-ring::before{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1) +.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden] { + opacity: 0; + transform: translateY(10px); } -.ui-button.is-anchor{cursor:pointer;text-decoration:none +.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible] { + transform: translateY(10px); } -.ui-button.is-anchor.is-disabled{cursor:default +.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden] { + opacity: 0; + transform: translateY(0); } -.ui-button.is-raised{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);-webkit-transition:box-shadow .3s ease;transition:box-shadow .3s ease +.tippy-popper[x-placement^=bottom] [data-animation=scale] { + transform-origin: top; } -.ui-button.is-raised.has-focus-ring:focus,body[modality=keyboard] .ui-button.is-raised:focus{box-shadow:0 0 5px rgba(0,0,0,.22),0 3px 6px rgba(0,0,0,.3) +.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible] { + transform: translateY(10px) scale(1); } -.ui-button.is-loading .ui-button__content{opacity:0 +.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden] { + opacity: 0; + transform: translateY(10px) scale(0.5); } -.ui-button.is-disabled{opacity:.6 +.tippy-popper[x-placement^=left] .tippy-backdrop { + border-radius: 50% 0 0 50%; } -.ui-button__content{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;z-index:1 +.tippy-popper[x-placement^=left] .tippy-backdrop { + transform-origin: 50% 0%; } -.ui-button__icon{margin-left:-0.25rem;margin-right:.375rem;margin-top:-0.125rem +.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible] { + transform: scale(1) translate(-50%, -50%); } -.ui-button__dropdown-icon{font-size:1.125rem;margin-left:.125rem;margin-right:-0.375rem +.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden] { + transform: scale(0.2) translate(-75%, -50%); + opacity: 0; } -.ui-button__focus-ring{left:0;position:absolute;top:0;width:100% +.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible] { + transform: translateX(-10px); } -.ui-button__focus-ring::before{border-radius:50%;content:"";display:block;left:0;margin-top:calc(-1*(50% - 1.125rem));padding-top:100%;position:relative;top:0;opacity:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease;transition:opacity .3s ease,transform .3s ease,-webkit-transform .3s ease +.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden] { + opacity: 0; + transform: translateX(-10px); } -.ui-progress-circular.ui-button__progress{left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%) +.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible] { + transform: translateX(-10px); } -.ui-button-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap +.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden] { + opacity: 0; + transform: translateX(0); } -.ui-button--icon-position-right .ui-button__icon{margin-left:.375rem;margin-right:-0.25rem;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1 +.tippy-popper[x-placement^=left] [data-animation=scale] { + transform-origin: right; } -.ui-button--size-small{font-size:.875rem;height:2rem;padding-left:.75rem;padding-right:.75rem +.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible] { + transform: translateX(-10px) scale(1); } -.ui-button--size-small .ui-button__icon{margin-left:0;margin-top:0 +.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden] { + opacity: 0; + transform: translateX(-10px) scale(0.5); } -.ui-button--size-small .ui-button__icon .ui-icon{font-size:1.125rem +.tippy-popper[x-placement^=right] .tippy-backdrop { + border-radius: 0 50% 50% 0; } -.ui-button--size-small .ui-button__dropdown-icon{margin-right:-0.25rem +.tippy-popper[x-placement^=right] .tippy-backdrop { + transform-origin: -50% 0%; +} +.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible] { + transform: scale(1) translate(-50%, -50%); +} +.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden] { + transform: scale(0.2) translate(-25%, -50%); + opacity: 0; +} +.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible] { + transform: translateX(10px); +} +.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden] { + opacity: 0; + transform: translateX(10px); +} +.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible] { + transform: translateX(10px); +} +.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden] { + opacity: 0; + transform: translateX(0); +} +.tippy-popper[x-placement^=right] [data-animation=scale] { + transform-origin: left; +} +.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible] { + transform: translateX(10px) scale(1); +} +.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden] { + opacity: 0; + transform: translateX(10px) scale(0.5); +} +.tippy-tooltip { + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.tippy-tooltip[data-animatefill] { + overflow: hidden; + background-color: transparent; +} +.tippy-tooltip[data-interactive] { + pointer-events: auto; +} +.tippy-tooltip[data-interactive] path { + pointer-events: auto; +} +.tippy-backdrop { + position: absolute; + border-radius: 50%; + width: calc(110% + 2rem); + left: 50%; + top: 50%; + z-index: -1; + transition: all cubic-bezier(0.46, 0.1, 0.52, 0.98); + backface-visibility: hidden; +} +.tippy-backdrop::after { + content: ""; + float: left; + padding-top: 100%; +} +.tippy-backdrop + .tippy-content { + transition-property: opacity; + will-change: opacity; +} +.tippy-backdrop + .tippy-content[data-state=visible] { + opacity: 1; +} +.tippy-backdrop + .tippy-content[data-state=hidden] { + opacity: 0; +} +.ui-tooltip-theme { + background-color: rgba(33, 33, 33, 0.9); + border-radius: 0.125rem; + color: white; + font-size: 0.8125rem; + line-height: 1.4; + padding: 0.3rem 0.5rem; + text-align: center; +} +.ui-tooltip-theme .tippy-backdrop { + background-color: rgba(33, 33, 33, 0.9); +}.ui-button { + -ms-flex-align: center; + align-items: center; + background: none; + border-radius: 0.125rem; + border: none; + cursor: default; + display: -ms-inline-flexbox; + display: inline-flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 0.875rem; + font-weight: 600; + height: 2.25rem; + -ms-flex-pack: center; + justify-content: center; + letter-spacing: 0.02em; + line-height: 1; + min-width: 5rem; + outline: none; + overflow: hidden; + padding: 0; + padding-left: 1rem; + padding-right: 1rem; + position: relative; + text-transform: uppercase; + -ms-touch-action: manipulation; + touch-action: manipulation; +} +.ui-button::-moz-focus-inner { + border: 0; +} +.ui-button.has-focus-ring:focus .ui-button__focus-ring::before, body[modality=keyboard] .ui-button:focus .ui-button__focus-ring::before { + opacity: 1; + transform: scale(1.1); +} +.ui-button.is-anchor { + cursor: pointer; + text-decoration: none; +} +.ui-button.is-anchor.is-disabled { + cursor: default; +} +.ui-button.is-raised { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + transition: box-shadow 0.3s ease; +} +.ui-button.is-raised.has-focus-ring:focus, body[modality=keyboard] .ui-button.is-raised:focus { + box-shadow: 0 0 5px rgba(0, 0, 0, 0.22), 0 3px 6px rgba(0, 0, 0, 0.3); +} +.ui-button.is-loading .ui-button__content { + opacity: 0; +} +.ui-button.is-disabled { + opacity: 0.6; +} +.ui-button__content { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + position: relative; + transition: opacity 0.3s ease; + z-index: 1; +} +.ui-button__icon { + margin-left: -0.25rem; + margin-right: 0.375rem; + margin-top: -0.125rem; +} +.ui-button__dropdown-icon { + font-size: 1.125rem; + margin-left: 0.125rem; + margin-right: -0.375rem; +} +.ui-button__focus-ring { + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.ui-button__focus-ring::before { + border-radius: 50%; + content: ""; + display: block; + left: 0; + margin-top: calc(-1 * (50% - 1.125rem)); + padding-top: 100%; + position: relative; + top: 0; + opacity: 0; + transform: scale(0); + transition: opacity 0.3s ease, transform 0.3s ease; +} +.ui-progress-circular.ui-button__progress { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); +} +.ui-button-group { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.ui-button--icon-position-right .ui-button__icon { + margin-left: 0.375rem; + margin-right: -0.25rem; + -ms-flex-order: 1; + order: 1; +} +.ui-button--size-small { + font-size: 0.875rem; + height: 2rem; + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.ui-button--size-small .ui-button__icon { + margin-left: 0; + margin-top: 0; +} +.ui-button--size-small .ui-button__icon .ui-icon { + font-size: 1.125rem; } -.ui-button--size-small.ui-button--icon-position-right .ui-button__icon{margin-left:.375rem;margin-right:0 +.ui-button--size-small .ui-button__dropdown-icon { + margin-right: -0.25rem; } -.ui-button--size-large{font-size:1rem;height:3rem;padding-left:1.5rem;padding-right:1.5rem +.ui-button--size-small.ui-button--icon-position-right .ui-button__icon { + margin-left: 0.375rem; + margin-right: 0; } -.ui-button--size-large .ui-button__icon{margin-left:-0.25rem;margin-right:.5rem +.ui-button--size-large { + font-size: 1rem; + height: 3rem; + padding-left: 1.5rem; + padding-right: 1.5rem; } -.ui-button--size-large .ui-button__dropdown-icon{font-size:1.5rem;margin-left:.25rem +.ui-button--size-large .ui-button__icon { + margin-left: -0.25rem; + margin-right: 0.5rem; } -.ui-button--size-large.ui-button--icon-position-right .ui-button__icon{margin-left:.5rem;margin-right:-0.25rem +.ui-button--size-large .ui-button__dropdown-icon { + font-size: 1.5rem; + margin-left: 0.25rem; } -.ui-button--type-primary .ui-button__focus-ring::before{background-color:rgba(0,0,0,.12) +.ui-button--size-large.ui-button--icon-position-right .ui-button__icon { + margin-left: 0.5rem; + margin-right: -0.25rem; } -.ui-button--type-primary.ui-button--color-default{background-color:#eee;color:rgba(0,0,0,.87) +.ui-button--type-primary .ui-button__focus-ring::before { + background-color: rgba(0, 0, 0, 0.12); } -.ui-button--type-primary.ui-button--color-default:hover:not(.is-disabled),.ui-button--type-primary.ui-button--color-default.has-dropdown-open{background-color:#dbdbdb +.ui-button--type-primary.ui-button--color-default { + background-color: #eeeeee; + color: rgba(0, 0, 0, 0.87); } -.ui-button--type-primary.ui-button--color-default .ui-ripple-ink__ink{opacity:.2 +.ui-button--type-primary.ui-button--color-default:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-default.has-dropdown-open { + background-color: #dbdbdb; } -.ui-button--type-primary.ui-button--color-default .ui-button__icon,.ui-button--type-primary.ui-button--color-default .ui-button__dropdown-icon{color:rgba(0,0,0,.54) +.ui-button--type-primary.ui-button--color-default .ui-ripple-ink__ink { + opacity: 0.2; } -.ui-button--type-primary.ui-button--color-primary,.ui-button--type-primary.ui-button--color-accent,.ui-button--type-primary.ui-button--color-green,.ui-button--type-primary.ui-button--color-orange,.ui-button--type-primary.ui-button--color-red{color:#fff +.ui-button--type-primary.ui-button--color-default .ui-button__icon, +.ui-button--type-primary.ui-button--color-default .ui-button__dropdown-icon { + color: rgba(0, 0, 0, 0.54); } -.ui-button--type-primary.ui-button--color-primary .ui-ripple-ink__ink,.ui-button--type-primary.ui-button--color-accent .ui-ripple-ink__ink,.ui-button--type-primary.ui-button--color-green .ui-ripple-ink__ink,.ui-button--type-primary.ui-button--color-orange .ui-ripple-ink__ink,.ui-button--type-primary.ui-button--color-red .ui-ripple-ink__ink{opacity:.4 +.ui-button--type-primary.ui-button--color-primary, .ui-button--type-primary.ui-button--color-accent, .ui-button--type-primary.ui-button--color-green, .ui-button--type-primary.ui-button--color-orange, .ui-button--type-primary.ui-button--color-red { + color: white; } -.ui-button--type-primary.ui-button--color-primary{background-color:#2196f3 +.ui-button--type-primary.ui-button--color-primary .ui-ripple-ink__ink, .ui-button--type-primary.ui-button--color-accent .ui-ripple-ink__ink, .ui-button--type-primary.ui-button--color-green .ui-ripple-ink__ink, .ui-button--type-primary.ui-button--color-orange .ui-ripple-ink__ink, .ui-button--type-primary.ui-button--color-red .ui-ripple-ink__ink { + opacity: 0.4; } -.ui-button--type-primary.ui-button--color-primary:hover:not(.is-disabled),.ui-button--type-primary.ui-button--color-primary.has-dropdown-open{background-color:#0c7cd5 +.ui-button--type-primary.ui-button--color-primary { + background-color: #2196f3; } -.ui-button--type-primary.ui-button--color-accent{background-color:#d500f9 +.ui-button--type-primary.ui-button--color-primary:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-primary.has-dropdown-open { + background-color: #0c7cd5; } -.ui-button--type-primary.ui-button--color-accent:hover:not(.is-disabled),.ui-button--type-primary.ui-button--color-accent.has-dropdown-open{background-color:#a900c6 +.ui-button--type-primary.ui-button--color-accent { + background-color: #d500f9; } -.ui-button--type-primary.ui-button--color-green{background-color:#4caf50 +.ui-button--type-primary.ui-button--color-accent:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-accent.has-dropdown-open { + background-color: #a900c6; } -.ui-button--type-primary.ui-button--color-green:hover:not(.is-disabled),.ui-button--type-primary.ui-button--color-green.has-dropdown-open{background-color:#3d8b40 +.ui-button--type-primary.ui-button--color-green { + background-color: #4caf50; } -.ui-button--type-primary.ui-button--color-orange{background-color:#ff9800 +.ui-button--type-primary.ui-button--color-green:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-green.has-dropdown-open { + background-color: #3d8b40; } -.ui-button--type-primary.ui-button--color-orange:hover:not(.is-disabled),.ui-button--type-primary.ui-button--color-orange.has-dropdown-open{background-color:#cc7a00 +.ui-button--type-primary.ui-button--color-orange { + background-color: #ff9800; } -.ui-button--type-primary.ui-button--color-red{background-color:#f44336 +.ui-button--type-primary.ui-button--color-orange:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-orange.has-dropdown-open { + background-color: #cc7a00; } -.ui-button--type-primary.ui-button--color-red:hover:not(.is-disabled),.ui-button--type-primary.ui-button--color-red.has-dropdown-open{background-color:#ea1c0d +.ui-button--type-primary.ui-button--color-red { + background-color: #f44336; } -.ui-button--type-secondary{background-color:transparent +.ui-button--type-primary.ui-button--color-red:hover:not(.is-disabled), .ui-button--type-primary.ui-button--color-red.has-dropdown-open { + background-color: #ea1c0d; } -.ui-button--type-secondary.ui-button--color-default{color:rgba(0,0,0,.87) +.ui-button--type-secondary { + background-color: transparent; } -.ui-button--type-secondary.ui-button--color-default:hover:not(.is-disabled),.ui-button--type-secondary.ui-button--color-default.has-dropdown-open{background-color:#eee +.ui-button--type-secondary.ui-button--color-default { + color: rgba(0, 0, 0, 0.87); } -.ui-button--type-secondary.ui-button--color-default .ui-button__focus-ring::before{background-color:rgba(0,0,0,.12) +.ui-button--type-secondary.ui-button--color-default:hover:not(.is-disabled), .ui-button--type-secondary.ui-button--color-default.has-dropdown-open { + background-color: #eeeeee; } -.ui-button--type-secondary.ui-button--color-default .ui-button__icon{color:rgba(0,0,0,.54) +.ui-button--type-secondary.ui-button--color-default .ui-button__focus-ring::before { + background-color: rgba(0, 0, 0, 0.12); } -.ui-button--type-secondary.ui-button--color-primary{color:#2196f3 +.ui-button--type-secondary.ui-button--color-default .ui-button__icon { + color: rgba(0, 0, 0, 0.54); } -.ui-button--type-secondary.ui-button--color-primary:hover:not(.is-disabled),.ui-button--type-secondary.ui-button--color-primary.has-dropdown-open{background-color:rgba(33,150,243,.12) +.ui-button--type-secondary.ui-button--color-primary { + color: #2196f3; } -.ui-button--type-secondary.ui-button--color-primary .ui-button__focus-ring::before{background-color:rgba(33,150,243,.26) +.ui-button--type-secondary.ui-button--color-primary:hover:not(.is-disabled), .ui-button--type-secondary.ui-button--color-primary.has-dropdown-open { + background-color: rgba(33, 150, 243, 0.12); } -.ui-button--type-secondary.ui-button--color-accent{color:#d500f9 +.ui-button--type-secondary.ui-button--color-primary .ui-button__focus-ring::before { + background-color: rgba(33, 150, 243, 0.26); } -.ui-button--type-secondary.ui-button--color-accent:hover:not(.is-disabled),.ui-button--type-secondary.ui-button--color-accent.has-dropdown-open{background-color:rgba(213,0,249,.12) +.ui-button--type-secondary.ui-button--color-accent { + color: #d500f9; } -.ui-button--type-secondary.ui-button--color-accent .ui-button__focus-ring::before{background-color:rgba(213,0,249,.26) +.ui-button--type-secondary.ui-button--color-accent:hover:not(.is-disabled), .ui-button--type-secondary.ui-button--color-accent.has-dropdown-open { + background-color: rgba(213, 0, 249, 0.12); } -.ui-button--type-secondary.ui-button--color-green{color:#43a047 +.ui-button--type-secondary.ui-button--color-accent .ui-button__focus-ring::before { + background-color: rgba(213, 0, 249, 0.26); } -.ui-button--type-secondary.ui-button--color-green:hover:not(.is-disabled),.ui-button--type-secondary.ui-button--color-green.has-dropdown-open{background-color:rgba(67,160,71,.12) +.ui-button--type-secondary.ui-button--color-green { + color: #43a047; } -.ui-button--type-secondary.ui-button--color-green .ui-button__focus-ring::before{background-color:rgba(67,160,71,.26) +.ui-button--type-secondary.ui-button--color-green:hover:not(.is-disabled), .ui-button--type-secondary.ui-button--color-green.has-dropdown-open { + background-color: rgba(67, 160, 71, 0.12); } -.ui-button--type-secondary.ui-button--color-orange{color:#ff9800 +.ui-button--type-secondary.ui-button--color-green .ui-button__focus-ring::before { + background-color: rgba(67, 160, 71, 0.26); } -.ui-button--type-secondary.ui-button--color-orange:hover:not(.is-disabled),.ui-button--type-secondary.ui-button--color-orange.has-dropdown-open{background-color:rgba(255,152,0,.12) +.ui-button--type-secondary.ui-button--color-orange { + color: #ff9800; } -.ui-button--type-secondary.ui-button--color-orange .ui-button__focus-ring::before{background-color:rgba(255,152,0,.26) +.ui-button--type-secondary.ui-button--color-orange:hover:not(.is-disabled), .ui-button--type-secondary.ui-button--color-orange.has-dropdown-open { + background-color: rgba(255, 152, 0, 0.12); } -.ui-button--type-secondary.ui-button--color-red{color:#f44336 +.ui-button--type-secondary.ui-button--color-orange .ui-button__focus-ring::before { + background-color: rgba(255, 152, 0, 0.26); +} +.ui-button--type-secondary.ui-button--color-red { + color: #f44336; } -.ui-button--type-secondary.ui-button--color-red:hover:not(.is-disabled),.ui-button--type-secondary.ui-button--color-red.has-dropdown-open{background-color:rgba(244,67,54,.12) +.ui-button--type-secondary.ui-button--color-red:hover:not(.is-disabled), .ui-button--type-secondary.ui-button--color-red.has-dropdown-open { + background-color: rgba(244, 67, 54, 0.12); } -.ui-button--type-secondary.ui-button--color-red .ui-button__focus-ring::before{background-color:rgba(244,67,54,.26) +.ui-button--type-secondary.ui-button--color-red .ui-button__focus-ring::before { + background-color: rgba(244, 67, 54, 0.26); +}.ui-icon-button { + -ms-flex-align: center; + align-items: center; + background: none; + border-radius: 50%; + border: none; + cursor: default; + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-pack: center; + justify-content: center; + margin: 0; + outline: none; + overflow: hidden; + padding: 0; + position: relative; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); +} +.ui-icon-button, +.ui-icon-button .ui-icon-button__focus-ring { + height: 2.25rem; + width: 2.25rem; +} +body[modality=keyboard] .ui-icon-button:focus .ui-icon-button__focus-ring { + opacity: 1; + transform: scale(1); +} +.ui-icon-button::-moz-focus-inner { + border: 0; +} +.ui-icon-button.is-anchor { + cursor: pointer; + text-decoration: none; +} +.ui-icon-button.is-anchor.is-disabled { + cursor: default; +} +.ui-icon-button.is-loading .ui-icon-button__icon { + opacity: 0; +} +.ui-icon-button.is-disabled { + opacity: 0.6; +} +.ui-icon-button__icon { + -ms-flex-align: center; + align-items: center; + color: currentColor; + display: -ms-flexbox; + display: flex; + height: initial; + -ms-flex-pack: center; + justify-content: center; + opacity: 1; + position: relative; + transition-delay: 0.1s; + transition: opacity 0.2s ease; + width: 100%; + z-index: 1; +} +.ui-icon-button__icon .ui-icon { + display: block; +} +.ui-icon-button__focus-ring { + border-radius: 50%; + height: 2.25rem; + left: 0; + opacity: 0; + position: absolute; + top: 0; + transform-origin: center; + transform: scale(0); + transition: transform 0.3s ease, opacity 0.3s ease; + width: 2.25rem; +} +.ui-progress-circular.ui-icon-button__progress { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); +} +.ui-icon-button--size-mini, +.ui-icon-button--size-mini .ui-icon-button__focus-ring { + height: 1.5rem; + width: 1.5rem; +} +.ui-icon-button--size-mini .ui-icon { + font-size: 1.125rem; +} +.ui-icon-button--size-small, +.ui-icon-button--size-small .ui-icon-button__focus-ring { + height: 2rem; + width: 2rem; +} +.ui-icon-button--size-small .ui-icon { + font-size: 1.125rem; +} +.ui-icon-button--size-large, +.ui-icon-button--size-large .ui-icon-button__focus-ring { + height: 3rem; + width: 3rem; +} +.ui-icon-button--color-black, +.ui-icon-button--color-white { + background-color: transparent; } -.tippy-iOS{cursor:pointer !important;-webkit-tap-highlight-color:transparent +.ui-icon-button--color-black:hover:not(.is-disabled), .ui-icon-button--color-black.has-dropdown-open, +.ui-icon-button--color-white:hover:not(.is-disabled), +.ui-icon-button--color-white.has-dropdown-open { + background-color: rgba(0, 0, 0, 0.1); } -.tippy-popper{max-height:100%;max-width:100%;outline:0;pointer-events:none;-webkit-transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);z-index:60 +.ui-icon-button--color-black .ui-icon-button__focus-ring, +.ui-icon-button--color-white .ui-icon-button__focus-ring { + background-color: rgba(0, 0, 0, 0.12); } -.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0 +.ui-icon-button--color-black { + color: rgba(0, 0, 0, 0.54); } -.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0% 25%;transform-origin:0% 25% +.ui-icon-button--color-white { + color: white; } -.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%, -55%);transform:scale(1) translate(-50%, -55%) +.ui-icon-button--type-primary.ui-icon-button--color-default { + color: rgba(0, 0, 0, 0.87); + background-color: #eeeeee; } -.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(0.2) translate(-50%, -45%);transform:scale(0.2) translate(-50%, -45%);opacity:0 +.ui-icon-button--type-primary.ui-icon-button--color-default:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-default.has-dropdown-open { + background-color: #dbdbdb; } -.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px) +.ui-icon-button--type-primary.ui-icon-button--color-default .ui-icon-button__focus-ring { + background-color: #cfcfcf; } -.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px) +.ui-icon-button--type-primary.ui-icon-button--color-default .ui-ripple-ink__ink { + opacity: 0.2; } -.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px) +.ui-icon-button--type-primary.ui-icon-button--color-primary, .ui-icon-button--type-primary.ui-icon-button--color-accent, .ui-icon-button--type-primary.ui-icon-button--color-green, .ui-icon-button--type-primary.ui-icon-button--color-orange, .ui-icon-button--type-primary.ui-icon-button--color-red { + color: white; } -.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0) +.ui-icon-button--type-primary.ui-icon-button--color-primary .ui-ripple-ink__ink, .ui-icon-button--type-primary.ui-icon-button--color-accent .ui-ripple-ink__ink, .ui-icon-button--type-primary.ui-icon-button--color-green .ui-ripple-ink__ink, .ui-icon-button--type-primary.ui-icon-button--color-orange .ui-ripple-ink__ink, .ui-icon-button--type-primary.ui-icon-button--color-red .ui-ripple-ink__ink { + opacity: 0.4; } -.tippy-popper[x-placement^=top] [data-animation=scale]{-webkit-transform-origin:bottom;transform-origin:bottom +.ui-icon-button--type-primary.ui-icon-button--color-primary { + background-color: #2196f3; } -.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1) +.ui-icon-button--type-primary.ui-icon-button--color-primary:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-primary.has-dropdown-open { + background-color: #0c7cd5; } -.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px) scale(0.5);transform:translateY(-10px) scale(0.5) +.ui-icon-button--type-primary.ui-icon-button--color-primary .ui-icon-button__focus-ring { + background-color: #0b76cc; } -.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30% +.ui-icon-button--type-primary.ui-icon-button--color-accent { + background-color: #d500f9; } -.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0% -50%;transform-origin:0% -50% +.ui-icon-button--type-primary.ui-icon-button--color-accent:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-accent.has-dropdown-open { + background-color: #a900c6; } -.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%, -45%);transform:scale(1) translate(-50%, -45%) +.ui-icon-button--type-primary.ui-icon-button--color-accent .ui-icon-button__focus-ring { + background-color: #a100bc; } -.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(0.2) translate(-50%, 0);transform:scale(0.2) translate(-50%, 0);opacity:0 +.ui-icon-button--type-primary.ui-icon-button--color-green { + background-color: #4caf50; } -.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px) +.ui-icon-button--type-primary.ui-icon-button--color-green:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-green.has-dropdown-open { + background-color: #3d8b40; } -.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px) +.ui-icon-button--type-primary.ui-icon-button--color-green .ui-icon-button__focus-ring { + background-color: #39843c; } -.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px) +.ui-icon-button--type-primary.ui-icon-button--color-orange { + background-color: #ff9800; } -.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0) +.ui-icon-button--type-primary.ui-icon-button--color-orange:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-orange.has-dropdown-open { + background-color: #cc7a00; } -.tippy-popper[x-placement^=bottom] [data-animation=scale]{-webkit-transform-origin:top;transform-origin:top +.ui-icon-button--type-primary.ui-icon-button--color-orange .ui-icon-button__focus-ring { + background-color: #c27400; } -.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1) +.ui-icon-button--type-primary.ui-icon-button--color-red { + background-color: #f44336; } -.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px) scale(0.5);transform:translateY(10px) scale(0.5) +.ui-icon-button--type-primary.ui-icon-button--color-red:hover:not(.is-disabled), .ui-icon-button--type-primary.ui-icon-button--color-red.has-dropdown-open { + background-color: #ea1c0d; } -.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50% +.ui-icon-button--type-primary.ui-icon-button--color-red .ui-icon-button__focus-ring { + background-color: #e11b0c; } -.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:50% 0%;transform-origin:50% 0% +.ui-icon-button--type-secondary.ui-icon-button--color-default { + color: rgba(0, 0, 0, 0.54); } -.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%, -50%);transform:scale(1) translate(-50%, -50%) +.ui-icon-button--type-secondary.ui-icon-button--color-default:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-default.has-dropdown-open, .ui-icon-button--type-secondary.ui-icon-button--color-default.has-focus-ring:focus, body[modality=keyboard] .ui-icon-button--type-secondary.ui-icon-button--color-default:focus { + color: rgba(0, 0, 0, 0.87); } -.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(0.2) translate(-75%, -50%);transform:scale(0.2) translate(-75%, -50%);opacity:0 +.ui-icon-button--type-secondary.ui-icon-button--color-default:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-default.has-dropdown-open { + background-color: rgba(0, 0, 0, 0.1); } -.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px) +.ui-icon-button--type-secondary.ui-icon-button--color-default .ui-icon-button__focus-ring { + background-color: rgba(0, 0, 0, 0.26); } -.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px) +.ui-icon-button--type-secondary.ui-icon-button--color-primary { + color: #2196f3; } -.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px) +.ui-icon-button--type-secondary.ui-icon-button--color-primary:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-primary.has-dropdown-open { + background-color: rgba(33, 150, 243, 0.12); } -.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0) +.ui-icon-button--type-secondary.ui-icon-button--color-primary .ui-icon-button__focus-ring { + background-color: rgba(33, 150, 243, 0.26); } -.tippy-popper[x-placement^=left] [data-animation=scale]{-webkit-transform-origin:right;transform-origin:right +.ui-icon-button--type-secondary.ui-icon-button--color-accent { + color: #d500f9; } -.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1) +.ui-icon-button--type-secondary.ui-icon-button--color-accent:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-accent.has-dropdown-open { + background-color: rgba(213, 0, 249, 0.12); } -.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px) scale(0.5);transform:translateX(-10px) scale(0.5) +.ui-icon-button--type-secondary.ui-icon-button--color-accent .ui-icon-button__focus-ring { + background-color: rgba(213, 0, 249, 0.26); } -.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0 +.ui-icon-button--type-secondary.ui-icon-button--color-green { + color: #43a047; } -.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-50% 0%;transform-origin:-50% 0% +.ui-icon-button--type-secondary.ui-icon-button--color-green:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-green.has-dropdown-open { + background-color: rgba(67, 160, 71, 0.12); } -.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%, -50%);transform:scale(1) translate(-50%, -50%) +.ui-icon-button--type-secondary.ui-icon-button--color-green .ui-icon-button__focus-ring { + background-color: rgba(67, 160, 71, 0.26); } -.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(0.2) translate(-25%, -50%);transform:scale(0.2) translate(-25%, -50%);opacity:0 +.ui-icon-button--type-secondary.ui-icon-button--color-orange { + color: #ff9800; } -.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px) +.ui-icon-button--type-secondary.ui-icon-button--color-orange:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-orange.has-dropdown-open { + background-color: rgba(255, 152, 0, 0.12); } -.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px) +.ui-icon-button--type-secondary.ui-icon-button--color-orange .ui-icon-button__focus-ring { + background-color: rgba(255, 152, 0, 0.26); } -.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px) +.ui-icon-button--type-secondary.ui-icon-button--color-red { + color: #f44336; } -.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0) +.ui-icon-button--type-secondary.ui-icon-button--color-red:hover:not(.is-disabled), .ui-icon-button--type-secondary.ui-icon-button--color-red.has-dropdown-open { + background-color: rgba(244, 67, 54, 0.12); } -.tippy-popper[x-placement^=right] [data-animation=scale]{-webkit-transform-origin:left;transform-origin:left -} -.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1) -} -.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px) scale(0.5);transform:translateX(10px) scale(0.5) -} -.tippy-tooltip{position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale -} -.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent -} -.tippy-tooltip[data-interactive]{pointer-events:auto -} -.tippy-tooltip[data-interactive] path{pointer-events:auto -} -.tippy-backdrop{position:absolute;border-radius:50%;width:calc(110% + 2rem);left:50%;top:50%;z-index:-1;-webkit-transition:all cubic-bezier(0.46, 0.1, 0.52, 0.98);transition:all cubic-bezier(0.46, 0.1, 0.52, 0.98);-webkit-backface-visibility:hidden;backface-visibility:hidden -} -.tippy-backdrop::after{content:"";float:left;padding-top:100% -} -.tippy-backdrop+.tippy-content{-webkit-transition-property:opacity;transition-property:opacity;will-change:opacity -} -.tippy-backdrop+.tippy-content[data-state=visible]{opacity:1 -} -.tippy-backdrop+.tippy-content[data-state=hidden]{opacity:0 -} -.ui-popover.is-raised{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12) -} -.ui-popover .ui-menu{border:none -} -.ui-popover-theme{background-color:#fff -} -.ui-focus-container__focus-redirector,.ui-focus-container__last-focusable{opacity:0;position:absolute -} -.ui-focus-container__content{outline:none -} -.ui-progress-circular{position:relative -} -.ui-progress-circular__determinate{-webkit-transform:rotate(270deg);transform:rotate(270deg) -} -.ui-progress-circular__determinate-path{stroke-dashoffset:0;-webkit-transition:stroke-dashoffset .3s;transition:stroke-dashoffset .3s -} -.ui-progress-circular__indeterminate{-webkit-animation:ui-progress-circular-rotate .7s linear infinite;animation:ui-progress-circular-rotate .7s linear infinite;bottom:0;height:100%;left:0;margin:auto;position:absolute;right:0;top:0;-webkit-transform-origin:center center;transform-origin:center center;width:100% -} -.ui-progress-circular__indeterminate-path{stroke-dasharray:89,200;stroke-dashoffset:-35px;stroke-linecap:round -} -.ui-progress-circular--color-multi-color .ui-progress-circular__determinate-path{stroke:#2196f3 -} -.ui-progress-circular--color-multi-color .ui-progress-circular__indeterminate-path{-webkit-animation:ui-progress-circular-color 6s ease-in-out infinite;animation:ui-progress-circular-color 6s ease-in-out infinite -} -.ui-progress-circular--color-primary .ui-progress-circular__determinate-path,.ui-progress-circular--color-primary .ui-progress-circular__indeterminate-path{stroke:#2196f3 -} -.ui-progress-circular--color-accent .ui-progress-circular__determinate-path,.ui-progress-circular--color-accent .ui-progress-circular__indeterminate-path{stroke:#d500f9 -} -.ui-progress-circular--color-black .ui-progress-circular__determinate-path,.ui-progress-circular--color-black .ui-progress-circular__indeterminate-path{stroke:#212121 -} -.ui-progress-circular--color-white .ui-progress-circular__determinate-path,.ui-progress-circular--color-white .ui-progress-circular__indeterminate-path{stroke:#fff -} -.ui-progress-circular--transition-fade-enter-active,.ui-progress-circular--transition-fade-leave-active{-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease;transition:opacity .3s ease,transform .3s ease,-webkit-transform .3s ease -} -.ui-progress-circular--transition-fade-enter,.ui-progress-circular--transition-fade-leave-active{opacity:0;-webkit-transform:scale(0);transform:scale(0) -} -@-webkit-keyframes ui-progress-circular-rotate{ -100%{-webkit-transform:rotate(360deg);transform:rotate(360deg) -} -} -@keyframes ui-progress-circular-rotate{ -100%{-webkit-transform:rotate(360deg);transform:rotate(360deg) -} -} -@-webkit-keyframes ui-progress-circular-color{ -0%,100%{stroke:#f44336 -} -40%{stroke:#2196f3 -} -66%{stroke:#4caf50 -} -80%,90%{stroke:#ff9800 -} -} -@keyframes ui-progress-circular-color{ -0%,100%{stroke:#f44336 -} -40%{stroke:#2196f3 -} -66%{stroke:#4caf50 -} -80%,90%{stroke:#ff9800 -} -} -.tippy-iOS{cursor:pointer !important;-webkit-tap-highlight-color:transparent -} -.tippy-popper{max-height:100%;max-width:100%;outline:0;pointer-events:none;-webkit-transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);z-index:60 -} -.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0 -} -.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0% 25%;transform-origin:0% 25% -} -.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%, -55%);transform:scale(1) translate(-50%, -55%) -} -.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(0.2) translate(-50%, -45%);transform:scale(0.2) translate(-50%, -45%);opacity:0 -} -.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px) -} -.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px) -} -.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px) -} -.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0) -} -.tippy-popper[x-placement^=top] [data-animation=scale]{-webkit-transform-origin:bottom;transform-origin:bottom -} -.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1) -} -.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px) scale(0.5);transform:translateY(-10px) scale(0.5) -} -.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30% -} -.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0% -50%;transform-origin:0% -50% -} -.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%, -45%);transform:scale(1) translate(-50%, -45%) -} -.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(0.2) translate(-50%, 0);transform:scale(0.2) translate(-50%, 0);opacity:0 -} -.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px) -} -.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px) -} -.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px) -} -.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0) -} -.tippy-popper[x-placement^=bottom] [data-animation=scale]{-webkit-transform-origin:top;transform-origin:top -} -.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1) -} -.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px) scale(0.5);transform:translateY(10px) scale(0.5) -} -.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50% -} -.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:50% 0%;transform-origin:50% 0% -} -.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%, -50%);transform:scale(1) translate(-50%, -50%) -} -.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(0.2) translate(-75%, -50%);transform:scale(0.2) translate(-75%, -50%);opacity:0 -} -.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px) -} -.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px) -} -.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px) -} -.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0) -} -.tippy-popper[x-placement^=left] [data-animation=scale]{-webkit-transform-origin:right;transform-origin:right -} -.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1) -} -.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px) scale(0.5);transform:translateX(-10px) scale(0.5) -} -.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0 -} -.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-50% 0%;transform-origin:-50% 0% -} -.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%, -50%);transform:scale(1) translate(-50%, -50%) -} -.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(0.2) translate(-25%, -50%);transform:scale(0.2) translate(-25%, -50%);opacity:0 -} -.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px) -} -.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px) -} -.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px) -} -.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0) -} -.tippy-popper[x-placement^=right] [data-animation=scale]{-webkit-transform-origin:left;transform-origin:left -} -.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1) -} -.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px) scale(0.5);transform:translateX(10px) scale(0.5) -} -.tippy-tooltip{position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale -} -.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent -} -.tippy-tooltip[data-interactive]{pointer-events:auto -} -.tippy-tooltip[data-interactive] path{pointer-events:auto -} -.tippy-backdrop{position:absolute;border-radius:50%;width:calc(110% + 2rem);left:50%;top:50%;z-index:-1;-webkit-transition:all cubic-bezier(0.46, 0.1, 0.52, 0.98);transition:all cubic-bezier(0.46, 0.1, 0.52, 0.98);-webkit-backface-visibility:hidden;backface-visibility:hidden -} -.tippy-backdrop::after{content:"";float:left;padding-top:100% -} -.tippy-backdrop+.tippy-content{-webkit-transition-property:opacity;transition-property:opacity;will-change:opacity -} -.tippy-backdrop+.tippy-content[data-state=visible]{opacity:1 -} -.tippy-backdrop+.tippy-content[data-state=hidden]{opacity:0 -} -.ui-tooltip-theme{background-color:rgba(33,33,33,.9);border-radius:.125rem;color:#fff;font-size:.8125rem;line-height:1.4;padding:.3rem .5rem;text-align:center -} -.ui-tooltip-theme .tippy-backdrop{background-color:rgba(33,33,33,.9) -} -.ui-calendar{border-radius:3px;color:rgba(0,0,0,.87);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";overflow:hidden -} -.ui-calendar.is-raised{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2) -} -.ui-calendar.is-raised .ui-calendar__body{border:none -} -.ui-calendar .ui-calendar__header{height:3rem;padding-left:.5rem;padding-right:.5rem -} -.ui-calendar__body{border-radius:0 0 3px 3px;overflow:hidden;position:relative;width:100%;padding:.5rem;padding-top:.25rem;border:1px solid #eee;border-top:0 -} -.ui-calendar-controls{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:2.5rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between -} -.ui-calendar-controls__month-and-year{font-size:.9375rem;font-weight:600 -} -.ui-calendar-controls--color-default{background-color:#eee -} -.ui-calendar-controls--color-primary{background-color:#2196f3;color:#fff -} -.ui-calendar-controls--color-accent{background-color:#d500f9;color:#fff -} -.ui-icon-button{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:none;border-radius:50%;border:none;cursor:default;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0;outline:none;overflow:hidden;padding:0;position:relative;-webkit-mask-image:-webkit-radial-gradient(circle, white, black) -} -.ui-icon-button,.ui-icon-button .ui-icon-button__focus-ring{height:2.25rem;width:2.25rem -} -body[modality=keyboard] .ui-icon-button:focus .ui-icon-button__focus-ring{opacity:1;-webkit-transform:scale(1);transform:scale(1) -} -.ui-icon-button::-moz-focus-inner{border:0 -} -.ui-icon-button.is-anchor{cursor:pointer;text-decoration:none -} -.ui-icon-button.is-anchor.is-disabled{cursor:default -} -.ui-icon-button.is-loading .ui-icon-button__icon{opacity:0 -} -.ui-icon-button.is-disabled{opacity:.6 -} -.ui-icon-button__icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:currentColor;display:-webkit-box;display:-ms-flexbox;display:flex;height:initial;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:1;position:relative;-webkit-transition-delay:.1s;transition-delay:.1s;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;width:100%;z-index:1 -} -.ui-icon-button__icon .ui-icon{display:block -} -.ui-icon-button__focus-ring{border-radius:50%;height:2.25rem;left:0;opacity:0;position:absolute;top:0;-webkit-transform-origin:center;transform-origin:center;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,opacity .3s ease;transition:transform .3s ease,opacity .3s ease,-webkit-transform .3s ease;width:2.25rem -} -.ui-progress-circular.ui-icon-button__progress{left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%) -} -.ui-icon-button--size-mini,.ui-icon-button--size-mini .ui-icon-button__focus-ring{height:1.5rem;width:1.5rem -} -.ui-icon-button--size-mini .ui-icon{font-size:1.125rem -} -.ui-icon-button--size-small,.ui-icon-button--size-small .ui-icon-button__focus-ring{height:2rem;width:2rem -} -.ui-icon-button--size-small .ui-icon{font-size:1.125rem -} -.ui-icon-button--size-large,.ui-icon-button--size-large .ui-icon-button__focus-ring{height:3rem;width:3rem -} -.ui-icon-button--color-black,.ui-icon-button--color-white{background-color:transparent -} -.ui-icon-button--color-black:hover:not(.is-disabled),.ui-icon-button--color-black.has-dropdown-open,.ui-icon-button--color-white:hover:not(.is-disabled),.ui-icon-button--color-white.has-dropdown-open{background-color:rgba(0,0,0,.1) -} -.ui-icon-button--color-black .ui-icon-button__focus-ring,.ui-icon-button--color-white .ui-icon-button__focus-ring{background-color:rgba(0,0,0,.12) -} -.ui-icon-button--color-black{color:rgba(0,0,0,.54) -} -.ui-icon-button--color-white{color:#fff -} -.ui-icon-button--type-primary.ui-icon-button--color-default{color:rgba(0,0,0,.87);background-color:#eee -} -.ui-icon-button--type-primary.ui-icon-button--color-default:hover:not(.is-disabled),.ui-icon-button--type-primary.ui-icon-button--color-default.has-dropdown-open{background-color:#dbdbdb -} -.ui-icon-button--type-primary.ui-icon-button--color-default .ui-icon-button__focus-ring{background-color:#cfcfcf -} -.ui-icon-button--type-primary.ui-icon-button--color-default .ui-ripple-ink__ink{opacity:.2 -} -.ui-icon-button--type-primary.ui-icon-button--color-primary,.ui-icon-button--type-primary.ui-icon-button--color-accent,.ui-icon-button--type-primary.ui-icon-button--color-green,.ui-icon-button--type-primary.ui-icon-button--color-orange,.ui-icon-button--type-primary.ui-icon-button--color-red{color:#fff -} -.ui-icon-button--type-primary.ui-icon-button--color-primary .ui-ripple-ink__ink,.ui-icon-button--type-primary.ui-icon-button--color-accent .ui-ripple-ink__ink,.ui-icon-button--type-primary.ui-icon-button--color-green .ui-ripple-ink__ink,.ui-icon-button--type-primary.ui-icon-button--color-orange .ui-ripple-ink__ink,.ui-icon-button--type-primary.ui-icon-button--color-red .ui-ripple-ink__ink{opacity:.4 -} -.ui-icon-button--type-primary.ui-icon-button--color-primary{background-color:#2196f3 -} -.ui-icon-button--type-primary.ui-icon-button--color-primary:hover:not(.is-disabled),.ui-icon-button--type-primary.ui-icon-button--color-primary.has-dropdown-open{background-color:#0c7cd5 -} -.ui-icon-button--type-primary.ui-icon-button--color-primary .ui-icon-button__focus-ring{background-color:#0b76cc -} -.ui-icon-button--type-primary.ui-icon-button--color-accent{background-color:#d500f9 -} -.ui-icon-button--type-primary.ui-icon-button--color-accent:hover:not(.is-disabled),.ui-icon-button--type-primary.ui-icon-button--color-accent.has-dropdown-open{background-color:#a900c6 -} -.ui-icon-button--type-primary.ui-icon-button--color-accent .ui-icon-button__focus-ring{background-color:#a100bc -} -.ui-icon-button--type-primary.ui-icon-button--color-green{background-color:#4caf50 -} -.ui-icon-button--type-primary.ui-icon-button--color-green:hover:not(.is-disabled),.ui-icon-button--type-primary.ui-icon-button--color-green.has-dropdown-open{background-color:#3d8b40 -} -.ui-icon-button--type-primary.ui-icon-button--color-green .ui-icon-button__focus-ring{background-color:#39843c -} -.ui-icon-button--type-primary.ui-icon-button--color-orange{background-color:#ff9800 -} -.ui-icon-button--type-primary.ui-icon-button--color-orange:hover:not(.is-disabled),.ui-icon-button--type-primary.ui-icon-button--color-orange.has-dropdown-open{background-color:#cc7a00 -} -.ui-icon-button--type-primary.ui-icon-button--color-orange .ui-icon-button__focus-ring{background-color:#c27400 -} -.ui-icon-button--type-primary.ui-icon-button--color-red{background-color:#f44336 -} -.ui-icon-button--type-primary.ui-icon-button--color-red:hover:not(.is-disabled),.ui-icon-button--type-primary.ui-icon-button--color-red.has-dropdown-open{background-color:#ea1c0d -} -.ui-icon-button--type-primary.ui-icon-button--color-red .ui-icon-button__focus-ring{background-color:#e11b0c -} -.ui-icon-button--type-secondary.ui-icon-button--color-default{color:rgba(0,0,0,.54) -} -.ui-icon-button--type-secondary.ui-icon-button--color-default:hover:not(.is-disabled),.ui-icon-button--type-secondary.ui-icon-button--color-default.has-dropdown-open,.ui-icon-button--type-secondary.ui-icon-button--color-default.has-focus-ring:focus,body[modality=keyboard] .ui-icon-button--type-secondary.ui-icon-button--color-default:focus{color:rgba(0,0,0,.87) -} -.ui-icon-button--type-secondary.ui-icon-button--color-default:hover:not(.is-disabled),.ui-icon-button--type-secondary.ui-icon-button--color-default.has-dropdown-open{background-color:rgba(0,0,0,.1) -} -.ui-icon-button--type-secondary.ui-icon-button--color-default .ui-icon-button__focus-ring{background-color:rgba(0,0,0,.26) -} -.ui-icon-button--type-secondary.ui-icon-button--color-primary{color:#2196f3 -} -.ui-icon-button--type-secondary.ui-icon-button--color-primary:hover:not(.is-disabled),.ui-icon-button--type-secondary.ui-icon-button--color-primary.has-dropdown-open{background-color:rgba(33,150,243,.12) -} -.ui-icon-button--type-secondary.ui-icon-button--color-primary .ui-icon-button__focus-ring{background-color:rgba(33,150,243,.26) -} -.ui-icon-button--type-secondary.ui-icon-button--color-accent{color:#d500f9 -} -.ui-icon-button--type-secondary.ui-icon-button--color-accent:hover:not(.is-disabled),.ui-icon-button--type-secondary.ui-icon-button--color-accent.has-dropdown-open{background-color:rgba(213,0,249,.12) -} -.ui-icon-button--type-secondary.ui-icon-button--color-accent .ui-icon-button__focus-ring{background-color:rgba(213,0,249,.26) -} -.ui-icon-button--type-secondary.ui-icon-button--color-green{color:#43a047 -} -.ui-icon-button--type-secondary.ui-icon-button--color-green:hover:not(.is-disabled),.ui-icon-button--type-secondary.ui-icon-button--color-green.has-dropdown-open{background-color:rgba(67,160,71,.12) -} -.ui-icon-button--type-secondary.ui-icon-button--color-green .ui-icon-button__focus-ring{background-color:rgba(67,160,71,.26) -} -.ui-icon-button--type-secondary.ui-icon-button--color-orange{color:#ff9800 -} -.ui-icon-button--type-secondary.ui-icon-button--color-orange:hover:not(.is-disabled),.ui-icon-button--type-secondary.ui-icon-button--color-orange.has-dropdown-open{background-color:rgba(255,152,0,.12) -} -.ui-icon-button--type-secondary.ui-icon-button--color-orange .ui-icon-button__focus-ring{background-color:rgba(255,152,0,.26) -} -.ui-icon-button--type-secondary.ui-icon-button--color-red{color:#f44336 -} -.ui-icon-button--type-secondary.ui-icon-button--color-red:hover:not(.is-disabled),.ui-icon-button--type-secondary.ui-icon-button--color-red.has-dropdown-open{background-color:rgba(244,67,54,.12) -} -.ui-icon-button--type-secondary.ui-icon-button--color-red .ui-icon-button__focus-ring{background-color:rgba(244,67,54,.26) -} -.ui-calendar-month{table-layout:fixed;width:100% -} -.ui-calendar-month__header{width:100% -} -.ui-calendar-month__header th{color:rgba(0,0,0,.54);font-size:.875rem;font-weight:600;height:2.5rem;text-align:center;text-transform:uppercase;vertical-align:middle;width:14.2857142857% -} -.ui-calendar-month__body{width:100% -} -.ui-calendar-week{font-size:.875rem;width:100% -} -.ui-calendar-week td{width:14.2857142857%;min-width:2.25rem;position:relative -} -.ui-calendar-week--has-square-cells td::before{box-sizing:border-box;content:"";display:block;padding-top:100%;min-height:2.25rem -} -.ui-calendar-week--has-square-cells .ui-calendar-week__date{position:absolute;left:0;top:0;height:100%;border-radius:50% -} -.ui-calendar-week__date{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:2px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;outline:none;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;width:100%;font-family:inherit;font-size:inherit;line-height:1;margin:0;min-height:2.25rem;padding:0 -} -.ui-calendar-week__date:hover,body[modality=keyboard] .ui-calendar-week__date:focus{background-color:rgba(0,0,0,.1) -} -.ui-calendar-week__date.is-in-other-month{visibility:hidden -} -.ui-calendar-week__date.is-today{font-weight:bold -} -.ui-calendar-week__date.is-disabled{background-color:transparent;cursor:default;opacity:.4 -} -.ui-calendar-week--color-primary .ui-calendar-week__date.is-today{color:#2196f3 -} -.ui-calendar-week--color-primary .ui-calendar-week__date.is-today.is-selected{color:#fff -} -.ui-calendar-week--color-primary .ui-calendar-week__date.is-selected,body[modality=keyboard] .ui-calendar-week--color-primary .ui-calendar-week__date.is-selected{background-color:#2196f3;color:#fff -} -.ui-calendar-week--color-accent .ui-calendar-week__date.is-today{color:#d500f9 -} -.ui-calendar-week--color-accent .ui-calendar-week__date.is-today.is-selected{color:#fff -} -.ui-calendar-week--color-accent .ui-calendar-week__date.is-selected,body[modality=keyboard] .ui-calendar-week--color-accent .ui-calendar-week__date.is-selected{background-color:#d500f9;color:#fff -} -.ui-checkbox{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:normal;margin:0;margin-bottom:.5rem;position:relative -} -.ui-checkbox:not(.is-disabled):not(.is-checked):hover .ui-checkbox__checkmark-background,.ui-checkbox:not(.is-disabled):not(.is-checked).is-active .ui-checkbox__checkmark-background{border-color:rgba(0,0,0,.6) -} -.ui-checkbox.is-checked .ui-checkbox__checkmark::after{border-bottom:.125rem solid #fff;border-right:.125rem solid #fff;opacity:1 -} -.ui-checkbox.is-disabled .ui-checkbox__checkmark,.ui-checkbox.is-disabled .ui-checkbox__label-text{color:rgba(0,0,0,.38);cursor:default -} -.ui-checkbox.is-disabled .ui-checkbox__checkmark-background{border-color:rgba(0,0,0,.26) -} -.ui-checkbox.is-disabled.is-checked .ui-checkbox__checkmark-background{background-color:rgba(0,0,0,.26);border:none -} -.ui-checkbox__label-text{cursor:pointer;font-size:1rem;margin-left:.5rem -} -.ui-checkbox__checkmark{background-color:#fff;cursor:pointer;-ms-flex-negative:0;flex-shrink:0;height:1.25rem;position:relative;width:1.25rem;border-radius:.125rem -} -.ui-checkbox__checkmark::after{bottom:.3125rem;box-sizing:border-box;content:"";display:block;height:.8125rem;left:.4375rem;opacity:0;position:absolute;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transition-delay:.1s;transition-delay:.1s;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;width:.375rem -} -.ui-checkbox__checkmark-background{border-radius:.125rem;border:.125rem solid rgba(0,0,0,.38);box-sizing:border-box;content:"";display:block;height:100%;left:0;position:absolute;top:0;-webkit-transition:all .3s ease;transition:all .3s ease;width:100% -} -.ui-checkbox__input{position:absolute;opacity:0 -} -body[modality=keyboard] .ui-checkbox__input:focus+.ui-checkbox__checkmark .ui-checkbox__focus-ring{opacity:1;-webkit-transform:scale(1);transform:scale(1) -} -.ui-checkbox__focus-ring{border-radius:50%;height:2.625rem;margin-left:-0.6875rem;margin-top:-0.6875rem;opacity:0;position:absolute;-webkit-transform:scale(0);transform:scale(0);-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;width:2.625rem;background-color:rgba(0,0,0,.12) -} -.ui-checkbox--box-position-right .ui-checkbox__label-text{margin-left:0;margin-right:auto;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1 -} -.ui-checkbox--color-primary:not(.is-disabled).is-checked:hover .ui-checkbox__checkmark-background,.ui-checkbox--color-primary:not(.is-disabled).is-checked.is-active .ui-checkbox__checkmark-background{background-color:#0d8aee;border-color:#0d8aee -} -.ui-checkbox--color-primary.is-checked .ui-checkbox__checkmark-background{background-color:#2196f3;border-color:#2196f3 -} -.ui-checkbox--color-primary.is-checked .ui-checkbox__focus-ring{background-color:rgba(33,150,243,.18) -} -.ui-checkbox--color-accent:not(.is-disabled).is-checked:hover .ui-checkbox__checkmark-background,.ui-checkbox--color-accent:not(.is-disabled).is-checked.is-active .ui-checkbox__checkmark-background{background-color:#bf00e0;border-color:#bf00e0 -} -.ui-checkbox--color-accent.is-checked .ui-checkbox__checkmark-background{background-color:#d500f9;border-color:#d500f9 -} -.ui-checkbox--color-accent.is-checked .ui-checkbox__focus-ring{background-color:rgba(213,0,249,.18) -} -.ui-checkbox-group{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";line-height:normal -} -.ui-checkbox-group:not(.is-disabled):not(.is-invalid):hover .ui-checkbox-group__label-text{color:rgba(0,0,0,.75) -} -.ui-checkbox-group:not(.is-disabled):not(.is-invalid).is-active .ui-checkbox-group__label-text{color:#2196f3 -} -.ui-checkbox-group.is-vertical .ui-checkbox-group__checkboxes{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-top:.5rem -} -.ui-checkbox-group.is-vertical .ui-checkbox-group__checkbox{margin-bottom:.75rem;margin-left:0;width:100% -} -.ui-checkbox-group.is-invalid .ui-checkbox-group__label-text{color:#f44336 -} -.ui-checkbox-group.is-invalid .ui-checkbox-group__feedback{color:#f44336 -} -.ui-checkbox-group.is-disabled .ui-checkbox-group__feedback{opacity:.8 -} -.ui-checkbox-group__label-text{color:rgba(0,0,0,.54);font-size:.9375rem;-webkit-transition:color .1s ease;transition:color .1s ease -} -.ui-checkbox-group__checkboxes{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:2rem -} -.ui-checkbox.ui-checkbox-group__checkbox{margin-bottom:0;margin-left:1.5rem -} -.ui-checkbox.ui-checkbox-group__checkbox:first-child{margin-left:0 -} -.ui-checkbox-group__feedback{color:rgba(0,0,0,.54);font-size:.875rem;line-height:1.2;margin:0;padding-top:0rem;position:relative -} -.ui-checkbox-group--box-position-right:not(.is-vertical) .ui-checkbox__label-text{margin-right:.5rem -} -.ui-collapsible{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";margin-bottom:.5rem;width:100% -} -.ui-collapsible:not(.is-disabled) .ui-collapsible__header:hover,body[modality=keyboard] .ui-collapsible:not(.is-disabled) .ui-collapsible__header:focus{background-color:#e0e0e0 -} -.ui-collapsible.is-open .ui-collapsible__header-icon{-webkit-transform:rotate(-180deg);transform:rotate(-180deg) -} -.ui-collapsible.is-disabled .ui-collapsible__header{cursor:default;opacity:.6 -} -.ui-collapsible.is-disabled .ui-collapsible__header-icon{cursor:default -} -.ui-collapsible__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#eee;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.9375rem;line-height:1.5;margin:0;min-height:3rem;padding:.75rem 1rem;position:relative;-ms-touch-action:manipulation;touch-action:manipulation;width:100% -} -.ui-collapsible__header .ui-ripple-ink__ink{opacity:.1 -} -.ui-collapsible__header-content{padding-right:.5rem -} -.ui-collapsible__header-icon{color:rgba(0,0,0,.54);cursor:pointer;margin-left:auto;margin-right:-0.25rem;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease, -webkit-transform .3s ease -} -.ui-collapsible__body-wrapper{max-height:0;-webkit-transition:max-height .3s ease;transition:max-height .3s ease -} -.ui-collapsible__body-wrapper.v-enter-active,.ui-collapsible__body-wrapper.v-leave-active{overflow:hidden -} -.ui-collapsible__body{border:1px solid #eee;border-top:0;display:block;padding:1rem;width:100% -} -.ui-confirm__message{font-size:.9375rem -} -.ui-confirm__footer{display:-webkit-box;display:-ms-flexbox;display:flex -} -.ui-modal{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:.875rem -} -.ui-modal.is-aligned-top .ui-modal__wrapper{vertical-align:initial -} -.ui-modal.is-aligned-top.has-footer .ui-modal__body{max-height:calc(100vh - 7.875rem) -} -.ui-modal.has-footer .ui-modal__body{max-height:calc(100vh - 7.875rem) -} -.ui-modal:not(.has-footer) .ui-modal__body{padding:1rem 1.5rem 1.5rem -} -.ui-modal--is-open{overflow:hidden -} -.ui-modal__mask{background-color:rgba(0,0,0,.5);display:table;height:100%;left:0;position:fixed;top:0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;width:100%;z-index:50 -} -.ui-modal__wrapper{display:table-cell;vertical-align:middle;overflow-x:hidden;text-align:center -} -.ui-modal__wrapper.has-dummy-scrollbar{overflow-y:scroll -} -.ui-modal__container{background-color:#fff;border-radius:.125rem;box-shadow:0 2px 8px rgba(0,0,0,.33);display:inline-block;margin:0 auto;max-height:100vh;max-width:100vw;outline:none;overflow:hidden;padding:0;text-align:initial;-webkit-transition:all .3s ease;transition:all .3s ease;width:33rem -} -.ui-modal__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f5f5f5;box-shadow:0 1px 1px rgba(0,0,0,.16);display:-webkit-box;display:-ms-flexbox;display:flex;height:3.5rem;padding:0 1.5rem;position:relative;z-index:1 -} -.ui-modal__header-text{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:1.125rem;font-weight:normal;margin:0 -} -.ui-modal__close-button{margin-left:auto;margin-right:-0.5rem -} -.ui-modal__body{max-height:calc(100vh - 3.5rem);overflow-y:auto;padding:1rem 1.5rem -} -.ui-modal__footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:4.375rem;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:0 1.5rem -} -.ui-modal__footer .ui-button{margin-left:.5rem -} -.ui-modal__footer .ui-button:first-child{margin-left:0 -} -.ui-modal--size-small>.ui-modal__wrapper>.ui-modal__container{width:20rem -} -.ui-modal--size-large>.ui-modal__wrapper>.ui-modal__container{width:53rem -} -.ui-modal--size-fullscreen>.ui-modal__wrapper>.ui-modal__container{width:100vw -} -.ui-modal--size-fullscreen>.ui-modal__wrapper>.ui-modal__container .ui-modal__body{height:calc(100vh - 3.5rem) -} -.ui-modal--size-auto>.ui-modal__wrapper>.ui-modal__container{width:initial -} -.ui-modal--transition-fade-enter,.ui-modal--transition-fade-leave-active{opacity:0 -} -.ui-modal--transition-scale-down-enter,.ui-modal--transition-scale-down-leave-active{opacity:0 -} -.ui-modal--transition-scale-down-enter .ui-modal__container,.ui-modal--transition-scale-down-leave-active .ui-modal__container{-webkit-transform:scale(1.1);transform:scale(1.1) -} -.ui-modal--transition-scale-up-enter,.ui-modal--transition-scale-up-leave-active{opacity:0 -} -.ui-modal--transition-scale-up-enter .ui-modal__container,.ui-modal--transition-scale-up-leave-active .ui-modal__container{-webkit-transform:scale(0.8);transform:scale(0.8) -} -.ui-datepicker{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";margin-bottom:1rem;outline:none;position:relative -} -.ui-datepicker:hover:not(.is-disabled) .ui-datepicker__label-text{color:rgba(0,0,0,.75) -} -.ui-datepicker:hover:not(.is-disabled) .ui-datepicker__display{border-bottom-color:rgba(0,0,0,.3) -} -.ui-datepicker:hover:not(.is-disabled) .ui-datepicker__dropdown-button{color:rgba(0,0,0,.87) -} -.ui-datepicker.is-active:not(.is-disabled) .ui-datepicker__label-text,.ui-datepicker.is-active:not(.is-disabled) .ui-datepicker__icon-wrapper .ui-icon{color:#2196f3 -} -.ui-datepicker.is-active:not(.is-disabled) .ui-datepicker__display{border-bottom-color:#2196f3;border-bottom-width:2px -} -.ui-datepicker.has-floating-label .ui-datepicker__label-text{display:table -} -.ui-datepicker.has-floating-label .ui-datepicker__label-text.is-inline{color:rgba(0,0,0,.54);cursor:pointer;-webkit-transform:translateY(1.625rem) scale(1.1);transform:translateY(1.625rem) scale(1.1) -} -.ui-datepicker.has-floating-label .ui-datepicker__label-text.is-floating{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1) -} -.ui-datepicker.has-label .ui-datepicker__icon-wrapper{padding-top:1.5rem -} -.ui-datepicker.has-label .ui-datepicker__dropdown-button{top:1.6875rem -} -.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__label-text,.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__icon-wrapper .ui-icon{color:#f44336 -} -.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__display{border-bottom-color:#f44336 -} -.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__feedback{color:#f44336 -} -.ui-datepicker.is-disabled .ui-datepicker__display{border-bottom-style:dotted;border-bottom-width:2px;color:rgba(0,0,0,.38);cursor:default -} -.ui-datepicker.is-disabled .ui-datepicker__dropdown-button,.ui-datepicker.is-disabled .ui-datepicker__display-value.is-placeholder{color:rgba(0,0,0,.38);opacity:.6 -} -.ui-datepicker.is-disabled .ui-datepicker__icon-wrapper .ui-icon{opacity:.6 -} -.ui-datepicker.is-disabled .ui-datepicker__feedback{opacity:.8 -} -.ui-datepicker .ui-modal:not(.has-footer) .ui-modal__body{padding:0 -} -.ui-datepicker__label{display:block;margin:0;outline:none;padding:0;position:relative;width:100% -} -.ui-datepicker__icon-wrapper{-ms-flex-negative:0;flex-shrink:0;margin-right:.75rem;padding-top:.25rem -} -.ui-datepicker__icon-wrapper .ui-icon{color:rgba(0,0,0,.54) -} -.ui-datepicker__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 -} -.ui-datepicker__label-text{color:rgba(0,0,0,.54);cursor:default;font-size:.9375rem;line-height:normal;margin-bottom:0;-webkit-transform-origin:left;transform-origin:left;-webkit-transition:color .1s ease,-webkit-transform .2s ease;transition:color .1s ease,-webkit-transform .2s ease;transition:color .1s ease,transform .2s ease;transition:color .1s ease,transform .2s ease,-webkit-transform .2s ease -} -.ui-datepicker__display{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;border-bottom-color:rgba(0,0,0,.12);border-bottom-style:solid;border-bottom-width:1px;color:rgba(0,0,0,.87);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:inherit;font-size:1rem;font-weight:normal;height:2rem;line-height:1;padding:0;-webkit-transition:border .1s ease;transition:border .1s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100% -} -.ui-datepicker__display-value{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 -} -.ui-datepicker__display-value.is-placeholder{color:rgba(0,0,0,.38) -} -.ui-datepicker__dropdown-button{color:rgba(0,0,0,.54);font-size:1.125rem;margin-left:auto;margin-right:-0.25rem -} -.ui-datepicker__feedback{color:rgba(0,0,0,.54);font-size:.875rem;line-height:1.2;margin:0;padding-top:.25rem;position:relative -} -.ui-datepicker--icon-position-right .ui-datepicker__icon-wrapper{margin-left:.5rem;margin-right:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1 -} -.ui-datepicker-calendar{color:rgba(0,0,0,.87);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} -.ui-datepicker-calendar__header{color:#fff;line-height:1;padding:1rem -} -.ui-datepicker-calendar__header-year,.ui-datepicker-calendar__header-date{cursor:pointer;opacity:.75;-webkit-transition:opacity .2s ease;transition:opacity .2s ease -} -.ui-datepicker-calendar__header-year:hover,body[modality=keyboard] .ui-datepicker-calendar__header-year:focus,.ui-datepicker-calendar__header-year.is-active,.ui-datepicker-calendar__header-date:hover,body[modality=keyboard] .ui-datepicker-calendar__header-date:focus,.ui-datepicker-calendar__header-date.is-active{opacity:1 -} -body[modality=keyboard] .ui-datepicker-calendar__header-year:focus,body[modality=keyboard] .ui-datepicker-calendar__header-date:focus{outline:1px dotted #fff;outline-offset:1px -} -.ui-datepicker-calendar__header-year{font-size:.9375rem;font-weight:600;margin-bottom:.5rem -} -.ui-datepicker-calendar__header-date{font-size:1.375rem -} -.ui-datepicker-calendar__body{box-sizing:border-box -} -.ui-datepicker-calendar__body .ui-calendar-controls{background-color:transparent -} -.ui-datepicker-calendar__body,.ui-datepicker-calendar__years{height:19.5rem;padding:.5rem;width:16.75rem -} -.ui-datepicker-calendar__years{list-style:none;overflow-y:auto;margin:0 -} -.ui-datepicker-calendar__year{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1rem;height:2.25rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;outline:none -} -.ui-datepicker-calendar__year.is-selected{font-size:1.5rem;font-weight:600;height:2.5rem -} -.ui-datepicker-calendar--orientation-landscape{display:-webkit-box;display:-ms-flexbox;display:flex -} -.ui-datepicker-calendar--orientation-landscape .ui-datepicker-calendar__header{min-width:8rem -} -.ui-datepicker-calendar--orientation-landscape .ui-datepicker-calendar__header-day{margin-bottom:.75rem;display:block;padding-top:.25rem -} -.ui-datepicker-calendar--color-primary .ui-datepicker-calendar__header{background-color:#2196f3 -} -.ui-datepicker-calendar--color-primary .ui-datepicker-calendar__year:hover,body[modality=keyboard] .ui-datepicker-calendar--color-primary .ui-datepicker-calendar__year:focus{color:#2196f3 -} -.ui-datepicker-calendar--color-primary .ui-datepicker-calendar__year.is-selected{color:#2196f3 -} -.ui-datepicker-calendar--color-primary .ui-datepicker-calendar-week__date.is-today{color:#2196f3 -} -.ui-datepicker-calendar--color-primary .ui-datepicker-calendar-week__date.is-selected,body[modality=keyboard] .ui-datepicker-calendar--color-primary .ui-datepicker-calendar-week__date.is-selected{background-color:#2196f3 -} -.ui-datepicker-calendar--color-accent .ui-datepicker-calendar__header{background-color:#d500f9 -} -.ui-datepicker-calendar--color-accent .ui-datepicker-calendar__year:hover,body[modality=keyboard] .ui-datepicker-calendar--color-accent .ui-datepicker-calendar__year:focus{color:#d500f9 -} -.ui-datepicker-calendar--color-accent .ui-datepicker-calendar__year.is-selected{color:#d500f9 -} -.ui-datepicker-calendar--color-accent .ui-datepicker-calendar-week__date.is-today{color:#d500f9 -} -.ui-datepicker-calendar--color-accent .ui-datepicker-calendar-week__date.is-selected,body[modality=keyboard] .ui-datepicker-calendar--color-accent .ui-datepicker-calendar-week__date.is-selected{background-color:#d500f9 -} -.ui-fab{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:50%;border:none;box-shadow:0 2px 5px 0 rgba(0,0,0,.2),0 2px 10px 0 rgba(0,0,0,.16);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;outline:none;position:relative;-webkit-transition:box-shadow .3s ease;transition:box-shadow .3s ease;z-index:30 -} -.ui-fab::-moz-focus-inner{border:0 -} -.ui-fab:hover,body[modality=keyboard] .ui-fab:focus{box-shadow:0 8px 17px 0 rgba(0,0,0,.25),0 6px 20px 0 rgba(0,0,0,.2) -} -body[modality=keyboard] .ui-fab:focus .ui-fab__focus-ring{opacity:1;-webkit-transform:scale(1);transform:scale(1) -} -.ui-fab .ui-ripple-ink{border-radius:50% -} -.ui-fab__icon{height:initial;margin:0;position:relative;width:100%;z-index:1 -} -.ui-fab__focus-ring{border-radius:50%;left:0;opacity:0;position:absolute;top:0;-webkit-transform-origin:center;transform-origin:center;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s ease,-webkit-transform .2s ease;transition:opacity .2s ease,-webkit-transform .2s ease;transition:transform .2s ease,opacity .2s ease;transition:transform .2s ease,opacity .2s ease,-webkit-transform .2s ease -} -.ui-fab--size-normal,.ui-fab--size-normal .ui-fab__focus-ring{height:3.5rem;width:3.5rem -} -.ui-fab--size-small,.ui-fab--size-small .ui-fab__focus-ring{width:2.5rem;height:2.5rem -} -.ui-fab--color-default{background-color:#fff;color:rgba(0,0,0,.54) -} -.ui-fab--color-default .ui-fab__icon{color:rgba(0,0,0,.54) -} -.ui-fab--color-default .ui-ripple-ink__ink{opacity:.2 -} -.ui-fab--color-default .ui-fab__focus-ring{background-color:rgba(0,0,0,.15) -} -.ui-fab--color-primary,.ui-fab--color-accent{color:#fff -} -.ui-fab--color-primary .ui-fab__icon,.ui-fab--color-accent .ui-fab__icon{color:#fff -} -.ui-fab--color-primary .ui-ripple-ink__ink,.ui-fab--color-accent .ui-ripple-ink__ink{opacity:.4 -} -.ui-fab--color-primary{background-color:#2196f3 -} -.ui-fab--color-primary .ui-fab__focus-ring{background-color:#0c7cd5 -} -.ui-fab--color-accent{background-color:#d500f9 -} -.ui-fab--color-accent .ui-fab__focus-ring{background-color:#a900c6 -} -.ui-fileupload{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:.125rem;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:.875rem;font-weight:600;height:2.25rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;letter-spacing:.02em;line-height:1;min-width:5rem;overflow:hidden;padding:0;padding-left:1rem;padding-right:1rem;position:relative;text-transform:uppercase -} -.ui-fileupload.has-focus-ring.is-active .ui-fileupload__focus-ring::before,body[modality=keyboard] .ui-fileupload.is-active .ui-fileupload__focus-ring::before{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1) -} -.ui-fileupload:not(.is-multiple) .ui-fileupload__display-text{text-transform:none -} -.ui-fileupload.is-raised{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);-webkit-transition:box-shadow .1s;transition:box-shadow .1s -} -.ui-fileupload.is-raised.has-focus-ring.is-active,body[modality=keyboard] .ui-fileupload.is-raised.is-active{box-shadow:0 0 5px rgba(0,0,0,.22),0 3px 6px rgba(0,0,0,.3) -} -.ui-fileupload.is-disabled{cursor:default;opacity:.6 -} -.ui-fileupload__input{height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1;width:.1px -} -.ui-fileupload__content{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;z-index:1 -} -.ui-fileupload__icon{margin-left:-0.25rem;margin-right:.375rem;margin-top:-0.125rem -} -.ui-fileupload__focus-ring{left:0;position:absolute;top:0;width:100% -} -.ui-fileupload__focus-ring::before{border-radius:50%;content:"";display:block;left:0;margin-top:calc(-1*(50% - 1.125rem));padding-top:100%;position:relative;top:0;opacity:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease;transition:opacity .3s ease,transform .3s ease,-webkit-transform .3s ease -} -.ui-fileupload--icon-position-right .ui-fileupload__icon{margin-left:.375rem;margin-right:-0.25rem;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1 -} -.ui-fileupload--size-small{font-size:.875rem;height:2rem;padding-left:.75rem;padding-right:.75rem -} -.ui-fileupload--size-small .ui-fileupload__icon{margin-left:0;margin-top:0 -} -.ui-fileupload--size-small .ui-fileupload__icon .ui-icon{font-size:1.125rem -} -.ui-fileupload--size-small.ui-fileupload--icon-position-right .ui-fileupload__icon{margin-left:.375rem;margin-right:0 -} -.ui-fileupload--size-large{font-size:1rem;height:3rem;padding-left:1.5rem;padding-right:1.5rem -} -.ui-fileupload--size-large .ui-fileupload__icon{margin-left:-0.25rem;margin-right:.5rem -} -.ui-fileupload--size-large.ui-fileupload--icon-position-right .ui-fileupload__icon{margin-left:.5rem;margin-right:-0.25rem -} -.ui-fileupload--type-primary .ui-fileupload__focus-ring::before{background-color:rgba(0,0,0,.12) -} -.ui-fileupload--type-primary.ui-fileupload--color-default{background-color:#eee;color:rgba(0,0,0,.87) -} -.ui-fileupload--type-primary.ui-fileupload--color-default:hover:not(.is-disabled){background-color:#dbdbdb -} -.ui-fileupload--type-primary.ui-fileupload--color-default .ui-ripple-ink__ink{opacity:.2 -} -.ui-fileupload--type-primary.ui-fileupload--color-default .ui-fileupload__icon{color:rgba(0,0,0,.54) -} -.ui-fileupload--type-primary.ui-fileupload--color-primary,.ui-fileupload--type-primary.ui-fileupload--color-accent{color:#fff -} -.ui-fileupload--type-primary.ui-fileupload--color-primary .ui-ripple-ink__ink,.ui-fileupload--type-primary.ui-fileupload--color-accent .ui-ripple-ink__ink{opacity:.4 -} -.ui-fileupload--type-primary.ui-fileupload--color-primary{background-color:#2196f3 -} -.ui-fileupload--type-primary.ui-fileupload--color-primary:hover:not(.is-disabled){background-color:#0c7cd5 -} -.ui-fileupload--type-primary.ui-fileupload--color-accent{background-color:#d500f9 -} -.ui-fileupload--type-primary.ui-fileupload--color-accent:hover:not(.is-disabled){background-color:#a900c6 -} -.ui-fileupload--type-secondary{background-color:transparent -} -.ui-fileupload--type-secondary.ui-fileupload--color-default{color:rgba(0,0,0,.87) -} -.ui-fileupload--type-secondary.ui-fileupload--color-default:hover:not(.is-disabled){background-color:#eee -} -.ui-fileupload--type-secondary.ui-fileupload--color-default .ui-fileupload__focus-ring::before{background-color:rgba(0,0,0,.12) -} -.ui-fileupload--type-secondary.ui-fileupload--color-default .ui-fileupload__icon{color:rgba(0,0,0,.54) -} -.ui-fileupload--type-secondary.ui-fileupload--color-primary{color:#2196f3 -} -.ui-fileupload--type-secondary.ui-fileupload--color-primary:hover:not(.is-disabled){background-color:rgba(33,150,243,.12) -} -.ui-fileupload--type-secondary.ui-fileupload--color-primary .ui-fileupload__focus-ring::before{background-color:rgba(33,150,243,.26) -} -.ui-fileupload--type-secondary.ui-fileupload--color-accent{color:#d500f9 -} -.ui-fileupload--type-secondary.ui-fileupload--color-accent:hover:not(.is-disabled){background-color:rgba(213,0,249,.12) -} -.ui-fileupload--type-secondary.ui-fileupload--color-accent .ui-fileupload__focus-ring::before{background-color:rgba(213,0,249,.26) -} -.ui-menu{background-color:#fff;border:.0625rem solid rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";list-style:none;margin:0;max-height:100vh;max-width:17rem;min-width:10.5rem;outline:none;overflow-x:hidden;overflow-y:auto;padding:.25rem 0 -} -.ui-menu.is-raised{border:none;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12) -} -.ui-menu.has-secondary-text{min-width:15rem;max-width:19rem -} -.ui-menu-option{display:block;font-family:inherit;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100% -} -.ui-menu-option.is-divider{background-color:rgba(0,0,0,.08);display:block;height:.0625rem;margin:.375rem 0;padding:0 -} -.ui-menu-option:not(.is-divider){color:rgba(0,0,0,.87);cursor:pointer;font-size:.9375rem;font-weight:normal;min-height:2.5rem;outline:none;text-decoration:none -} -.ui-menu-option:not(.is-divider):hover:not(.is-disabled),body[modality=keyboard] .ui-menu-option:not(.is-divider):focus{background-color:#eee -} -.ui-menu-option:not(.is-divider).is-disabled{color:rgba(0,0,0,.54);cursor:default;opacity:.5 -} -.ui-menu-option:not(.is-divider).is-disabled .ui-menu-option__secondary-text{color:rgba(0,0,0,.54) -} -.ui-menu-option__content{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:2.5rem;padding:0 1rem -} -.ui-menu-option__icon{color:rgba(0,0,0,.54);font-size:1.125rem;margin-right:1rem -} -.ui-menu-option__text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 -} -.ui-menu-option__secondary-text{color:rgba(0,0,0,.38);-ms-flex-negative:0;flex-shrink:0;font-size:.8125rem;margin-left:.25rem -} -.ui-preloader{position:relative;width:100% -} -.ui-preloader.is-loading .ui-preloader__progressbar{opacity:1;padding-top:.1875rem -} -.ui-preloader__progressbar{-webkit-animation:ui-preloader-background linear 3s infinite;animation:ui-preloader-background linear 3s infinite;background-color:#159756;left:0;opacity:0;position:absolute;top:0;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity,padding-top;transition-property:opacity,padding-top;-webkit-transition-timing-function:ease;transition-timing-function:ease;width:100%;overflow:hidden -} -.ui-preloader__progressbar::before,.ui-preloader__progressbar::after{-webkit-animation:ui-preloader-front linear 3s infinite;animation:ui-preloader-front linear 3s infinite;content:"";display:block;height:.1875rem;position:absolute;top:0;width:100%;z-index:1 -} -.ui-preloader__progressbar::before{right:50%;-webkit-transform-origin:right;transform-origin:right -} -.ui-preloader__progressbar::after{left:50%;-webkit-transform-origin:left;transform-origin:left -} -@-webkit-keyframes ui-preloader-background{ -0%,24.9%{background-color:#159756 -} -25%,49.9%{background-color:#da4733 -} -50%,74.9%{background-color:#3b78e7 -} -75%,100%{background-color:#fdba2c -} -} -@keyframes ui-preloader-background{ -0%,24.9%{background-color:#159756 -} -25%,49.9%{background-color:#da4733 -} -50%,74.9%{background-color:#3b78e7 -} -75%,100%{background-color:#fdba2c -} -} -@-webkit-keyframes ui-preloader-front{ -0%{-webkit-transform:scaleX(0);transform:scaleX(0);background-color:#da4733 -} -24.9%{-webkit-transform:scaleX(0.5);transform:scaleX(0.5);background-color:#da4733 -} -25%{-webkit-transform:scaleX(0);transform:scaleX(0);background-color:#3b78e7 -} -49.9%{-webkit-transform:scaleX(0.5);transform:scaleX(0.5);background-color:#3b78e7 -} -50%{-webkit-transform:scaleX(0);transform:scaleX(0);background-color:#fdba2c -} -74.9%{-webkit-transform:scaleX(0.5);transform:scaleX(0.5);background-color:#fdba2c -} -75%{-webkit-transform:scaleX(0);transform:scaleX(0);background-color:#159756 -} -100%{-webkit-transform:scaleX(0.5);transform:scaleX(0.5);background-color:#159756 -} -} -@keyframes ui-preloader-front{ -0%{-webkit-transform:scaleX(0);transform:scaleX(0);background-color:#da4733 -} -24.9%{-webkit-transform:scaleX(0.5);transform:scaleX(0.5);background-color:#da4733 -} -25%{-webkit-transform:scaleX(0);transform:scaleX(0);background-color:#3b78e7 -} -49.9%{-webkit-transform:scaleX(0.5);transform:scaleX(0.5);background-color:#3b78e7 -} -50%{-webkit-transform:scaleX(0);transform:scaleX(0);background-color:#fdba2c -} -74.9%{-webkit-transform:scaleX(0.5);transform:scaleX(0.5);background-color:#fdba2c -} -75%{-webkit-transform:scaleX(0);transform:scaleX(0);background-color:#159756 -} -100%{-webkit-transform:scaleX(0.5);transform:scaleX(0.5);background-color:#159756 -} -} -.ui-progress-linear{display:block;height:.25rem;overflow:hidden;position:relative;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:height,opacity;transition-property:height,opacity;-webkit-transition-timing-function:ease;transition-timing-function:ease;width:100% -} -.ui-progress-linear__progress-bar{height:.25rem;left:0;position:absolute;top:0;-webkit-transform-origin:left;transform-origin:left;width:100% -} -.ui-progress-linear__progress-bar.is-determinate{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease, -webkit-transform .2s ease -} -.ui-progress-linear__progress-bar.is-indeterminate{-webkit-animation:ui-progress-linear-indeterminate 2.1s linear infinite;animation:ui-progress-linear-indeterminate 2.1s linear infinite;-webkit-transform:translateX(0) scaleX(0);transform:translateX(0) scaleX(0);-webkit-transition:-webkit-transform .2s cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform .2s cubic-bezier(0.4, 0, 0.2, 1);transition:transform .2s cubic-bezier(0.4, 0, 0.2, 1);transition:transform .2s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform .2s cubic-bezier(0.4, 0, 0.2, 1) -} -@-webkit-keyframes ui-progress-linear-indeterminate{ -0%{-webkit-transform:translateX(0) scaleX(0);transform:translateX(0) scaleX(0) -} -25%{-webkit-transform:translateX(50%) scaleX(0.6);transform:translateX(50%) scaleX(0.6) -} -49%{-webkit-transform:translateX(110%) scaleX(0);transform:translateX(110%) scaleX(0) -} -50%{-webkit-transform:translateX(0) scaleX(0);transform:translateX(0) scaleX(0) -} -75%{-webkit-transform:translateX(0) scaleX(0.6);transform:translateX(0) scaleX(0.6) -} -100%{-webkit-transform:translateX(110%) scaleX(0);transform:translateX(110%) scaleX(0) -} -} -@keyframes ui-progress-linear-indeterminate{ -0%{-webkit-transform:translateX(0) scaleX(0);transform:translateX(0) scaleX(0) -} -25%{-webkit-transform:translateX(50%) scaleX(0.6);transform:translateX(50%) scaleX(0.6) -} -49%{-webkit-transform:translateX(110%) scaleX(0);transform:translateX(110%) scaleX(0) -} -50%{-webkit-transform:translateX(0) scaleX(0);transform:translateX(0) scaleX(0) -} -75%{-webkit-transform:translateX(0) scaleX(0.6);transform:translateX(0) scaleX(0.6) -} -100%{-webkit-transform:translateX(110%) scaleX(0);transform:translateX(110%) scaleX(0) -} -} -.ui-progress-linear--transition-fade-enter-active,.ui-progress-linear--transition-fade-leave-active{-webkit-transition:opacity .3s ease;transition:opacity .3s ease -} -.ui-progress-linear--transition-fade-enter,.ui-progress-linear--transition-fade-leave-active{opacity:0 -} -.ui-progress-linear--color-primary{background-color:rgba(33,150,243,.4) -} -.ui-progress-linear--color-primary .ui-progress-linear__progress-bar{background-color:#2196f3 -} -.ui-progress-linear--color-accent{background-color:rgba(213,0,249,.4) -} -.ui-progress-linear--color-accent .ui-progress-linear__progress-bar{background-color:#d500f9 -} -.ui-progress-linear--color-black{background-color:rgba(97,97,97,.4) -} -.ui-progress-linear--color-black .ui-progress-linear__progress-bar{background-color:#616161 -} -.ui-progress-linear--color-white{background-color:rgba(255,255,255,.4) -} -.ui-progress-linear--color-white .ui-progress-linear__progress-bar{background-color:#fff -} -.ui-radio{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:.9375rem;height:1.25rem;margin:0 -} -.ui-radio:hover:not(.is-disabled):not(.is-checked) .ui-radio__outer-circle{border:.125rem solid rgba(0,0,0,.54) -} -.ui-radio.is-checked .ui-radio__inner-circle{opacity:1;-webkit-transform:scale(0.5);transform:scale(0.5);z-index:0 -} -.ui-radio.is-disabled{opacity:.5 -} -.ui-radio.is-disabled .ui-radio__input-wrapper,.ui-radio.is-disabled .ui-radio__label-text{cursor:default -} -.ui-radio__input-wrapper{cursor:pointer;height:1.25rem;position:relative;width:1.25rem -} -.ui-radio__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:1px;left:0;margin:0;opacity:0;outline:none;padding:0;position:absolute;top:0;width:1px -} -body[modality=keyboard] .ui-radio__input:focus+.ui-radio__focus-ring{opacity:1;-webkit-transform:scale(1);transform:scale(1) -} -.ui-radio__outer-circle{background-color:transparent;border-radius:50%;border:.125rem solid rgba(0,0,0,.38);height:1.25rem;left:0;position:absolute;top:0;-webkit-transition:border-color .2s;transition:border-color .2s;width:1.25rem -} -.ui-radio__inner-circle{background-color:rgba(0,0,0,.38);border-radius:50%;height:1.25rem;left:0;opacity:0;position:absolute;top:0;-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity,background-color,-webkit-transform;transition-property:opacity,background-color,-webkit-transform;transition-property:transform,opacity,background-color;transition-property:transform,opacity,background-color,-webkit-transform;width:1.25rem;z-index:-1 -} -.ui-radio__focus-ring{background-color:rgba(0,0,0,.1);border-radius:50%;height:2.625rem;left:-0.6875rem;opacity:0;position:absolute;top:-0.6875rem;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:background-color .2s ease,opacity .15s ease,-webkit-transform .15s ease;transition:background-color .2s ease,opacity .15s ease,-webkit-transform .15s ease;transition:background-color .2s ease,transform .15s ease,opacity .15s ease;transition:background-color .2s ease,transform .15s ease,opacity .15s ease,-webkit-transform .15s ease;width:2.625rem;z-index:-1 -} -.ui-radio__label-text{cursor:pointer;font-size:1rem;margin-left:.5rem -} -.ui-radio--button-position-right .ui-radio__label-text{margin-left:0;margin-right:auto;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1 -} -.ui-radio--color-primary.is-checked:not(.is-disabled) .ui-radio__outer-circle{border-color:#2196f3 -} -.ui-radio--color-primary.is-checked:not(.is-disabled) .ui-radio__inner-circle{background-color:#2196f3 -} -.ui-radio--color-primary.is-checked:not(.is-disabled) .ui-radio__focus-ring{background-color:rgba(33,150,243,.2) -} -.ui-radio--color-accent.is-checked:not(.is-disabled) .ui-radio__outer-circle{border-color:#d500f9 -} -.ui-radio--color-accent.is-checked:not(.is-disabled) .ui-radio__inner-circle{background-color:#d500f9 -} -.ui-radio--color-accent.is-checked:not(.is-disabled) .ui-radio__focus-ring{background-color:rgba(213,0,249,.2) -} -.ui-radio-group{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} -.ui-radio-group:not(.is-disabled):not(.is-invalid):hover .ui-radio-group__label-text{color:rgba(0,0,0,.75) -} -.ui-radio-group:not(.is-disabled):not(.is-invalid).is-active .ui-radio-group__label-text{color:#2196f3 -} -.ui-radio-group.is-vertical .ui-radio-group__radios{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-top:.5rem -} -.ui-radio-group.is-vertical .ui-radio-group__radio{margin-bottom:.75rem;margin-left:0;width:100% -} -.ui-radio-group.is-invalid .ui-radio-group__label-text{color:#f44336 -} -.ui-radio-group.is-invalid .ui-radio-group__feedback{color:#f44336 -} -.ui-radio-group.is-disabled .ui-radio-group__feedback{opacity:.8 -} -.ui-radio-group__label-text{color:rgba(0,0,0,.54);font-size:.9375rem;line-height:normal;-webkit-transition:color .1s ease;transition:color .1s ease -} -.ui-radio-group__radios{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:2rem -} -.ui-radio.ui-radio-group__radio{margin-left:1.5rem -} -.ui-radio.ui-radio-group__radio:first-child{margin-left:0 -} -.ui-radio-group__feedback{color:rgba(0,0,0,.54);font-size:.875rem;line-height:1.2;margin:0;padding-top:0rem;position:relative -} -.ui-radio-group--button-position-right:not(.is-vertical) .ui-radio__label-text{margin-right:.5rem -} -.ui-select{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";margin-bottom:1rem;outline:none;position:relative -} -.ui-select:hover:not(.is-disabled) .ui-select__label-text{color:rgba(0,0,0,.75) -} -.ui-select:hover:not(.is-disabled) .ui-select__display{border-bottom-color:rgba(0,0,0,.3) -} -.ui-select:hover:not(.is-disabled) .ui-select__dropdown-button{color:rgba(0,0,0,.87) -} -.ui-select.is-active:not(.is-disabled) .ui-select__label-text,.ui-select.is-active:not(.is-disabled) .ui-select__icon-wrapper .ui-icon{color:#2196f3 -} -.ui-select.is-active:not(.is-disabled) .ui-select__display{border-bottom-color:#2196f3;border-bottom-width:2px -} -.ui-select.has-floating-label .ui-select__label-text{display:table -} -.ui-select.has-floating-label .ui-select__label-text.is-inline{color:rgba(0,0,0,.54);cursor:pointer;-webkit-transform:translateY(1.625rem) scale(1.1);transform:translateY(1.625rem) scale(1.1) -} -.ui-select.has-floating-label .ui-select__label-text.is-floating{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1) -} -.ui-select.has-label .ui-select__icon-wrapper{padding-top:1.5rem -} -.ui-select.has-label .ui-select__dropdown-button{top:1.6875rem -} -.ui-select:not(.is-multiple) .ui-select__display{height:2rem;line-height:1 -} -.ui-select.is-multiple .ui-select__display{line-height:1.4;padding-bottom:.25rem;padding-top:.25rem -} -.ui-select.is-invalid:not(.is-disabled) .ui-select__label-text,.ui-select.is-invalid:not(.is-disabled) .ui-select__icon-wrapper .ui-icon{color:#f44336 -} -.ui-select.is-invalid:not(.is-disabled) .ui-select__display{border-bottom-color:#f44336 -} -.ui-select.is-invalid:not(.is-disabled) .ui-select__feedback{color:#f44336 -} -.ui-select.is-disabled .ui-select__display{border-bottom-style:dotted;border-bottom-width:2px;color:rgba(0,0,0,.38);cursor:default -} -.ui-select.is-disabled .ui-select__dropdown-button,.ui-select.is-disabled .ui-select__display-value.is-placeholder{color:rgba(0,0,0,.38);opacity:.6 -} -.ui-select.is-disabled .ui-select__icon-wrapper .ui-icon{opacity:.6 -} -.ui-select.is-disabled .ui-select__feedback{opacity:.8 -} -.ui-select__label{display:block;margin:0;outline:none;padding:0;width:100% -} -.ui-select__icon-wrapper{-ms-flex-negative:0;flex-shrink:0;margin-right:.75rem;padding-top:.25rem -} -.ui-select__icon-wrapper .ui-icon{color:rgba(0,0,0,.54) -} -.ui-select__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 -} -.ui-select__label-text{color:rgba(0,0,0,.54);cursor:default;font-size:.9375rem;line-height:normal;margin-bottom:0;-webkit-transform-origin:left;transform-origin:left;-webkit-transition:color .1s ease,-webkit-transform .2s ease;transition:color .1s ease,-webkit-transform .2s ease;transition:color .1s ease,transform .2s ease;transition:color .1s ease,transform .2s ease,-webkit-transform .2s ease -} -.ui-select__display{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;border-bottom-color:rgba(0,0,0,.12);border-bottom-style:solid;border-bottom-width:1px;color:rgba(0,0,0,.87);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:inherit;font-size:1rem;font-weight:normal;min-height:2rem;padding:0;-webkit-transition:border .1s ease;transition:border .1s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100% -} -.ui-select__display-value{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 -} -.ui-select__display-value.is-placeholder{color:rgba(0,0,0,.38) -} -.ui-select__dropdown-button{color:rgba(0,0,0,.54);font-size:1.125rem;margin-left:auto;margin-right:-0.25rem -} -.ui-select__dropdown{display:block;list-style-type:none;margin:0;margin-bottom:.5rem;min-width:11.25rem;outline:none;padding:0;width:100% -} -.ui-select__dropdown-content{outline:none -} -.ui-select__search-input{background:none;border:none;border-bottom-color:rgba(0,0,0,.12);border-bottom-style:solid;border-bottom-width:1px;border-radius:0;color:rgba(0,0,0,.87);cursor:auto;font-family:inherit;font-size:.9375rem;font-weight:normal;height:2.25rem;outline:none;padding:0 .75rem;padding-left:2.5rem;-webkit-transition:border .1s ease;transition:border .1s ease;width:100% -} -.ui-select__search-input::-ms-clear{display:none -} -.ui-select__search-input:focus+.ui-select__search-icon{color:#2196f3 -} -.ui-select__search .ui-select__search-icon,.ui-select__search .ui-select__search-progress{position:absolute;top:.5rem -} -.ui-select__search-icon{color:rgba(0,0,0,.54);font-size:1.25rem;left:.75rem -} -.ui-select__search-progress{right:.75rem -} -.ui-select__options{background-color:#fff;color:rgba(0,0,0,.87);display:block;list-style-type:none;margin:0;max-height:16rem;min-width:100%;overflow-y:auto;padding:0;position:relative -} -.ui-select__no-results{color:rgba(0,0,0,.54);font-size:.875rem;padding:.5rem .75rem;width:100% -} -.ui-select__feedback{color:rgba(0,0,0,.54);font-size:.875rem;line-height:1.2;margin:0;padding-top:.25rem;position:relative -} -.ui-select--icon-position-right .ui-select__icon-wrapper{margin-left:.5rem;margin-right:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1 -} -.ui-select-option{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:inherit;font-size:.9375rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none -} -.ui-select-option.is-selected{background-color:rgba(0,0,0,.05);color:#2196f3;font-weight:600 -} -.ui-select-option.is-selected .ui-select-option__checkbox{color:#2196f3 -} -.ui-select-option.is-highlighted{background-color:rgba(0,0,0,.1) -} -.ui-select-option__basic,.ui-select-option__image-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis -} -.ui-select-option__image{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center -} -.ui-select-option__image-object{background-position:50%;background-size:cover;border-radius:50%;height:2rem;margin-right:.75rem;width:2rem -} -.ui-select-option__checkbox{color:rgba(0,0,0,.38);margin-left:auto -} -.ui-select-option--type-basic{padding:.375rem .75rem -} -.ui-select-option--type-image{padding:.25rem .75rem -} -.ui-slider{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;outline:none -} -.ui-slider:not(.is-disabled).is-active:not(.has-marker) .ui-slider__thumb::before,.ui-slider:not(.is-disabled).is-dragging:not(.has-marker) .ui-slider__thumb::before{-webkit-transform:scale(1);transform:scale(1) -} -.ui-slider:not(.is-disabled).is-active .ui-slider__marker,.ui-slider:not(.is-disabled).is-dragging .ui-slider__marker{opacity:1;-webkit-transform:scale(1) translateY(-1.625rem);transform:scale(1) translateY(-1.625rem) -} -.ui-slider:not(.is-disabled).is-active .ui-slider__marker-text,.ui-slider:not(.is-disabled).is-dragging .ui-slider__marker-text{color:#fff -} -.ui-slider:not(.is-disabled).is-active .ui-slider__snap-point,.ui-slider:not(.is-disabled).is-dragging .ui-slider__snap-point{opacity:1 -} -.ui-slider:not(.is-disabled).is-active .ui-slider__icon .ui-icon,.ui-slider:not(.is-disabled).is-dragging .ui-slider__icon .ui-icon{color:#2196f3 -} -.ui-slider.is-disabled .ui-slider__icon{opacity:.6 -} -.ui-slider.is-disabled .ui-slider__track{cursor:default -} -.ui-slider.is-disabled .ui-slider__track-fill{background-color:transparent -} -.ui-slider.is-disabled .ui-slider__thumb{background-color:#ddd;border:.125rem solid #fff -} -.ui-slider__icon{margin-right:1rem -} -.ui-slider__icon .ui-icon{color:rgba(0,0,0,.54);-webkit-transition:color .2s ease;transition:color .2s ease -} -.ui-slider__track{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;height:1.125rem;margin:0 auto;position:relative;width:100% -} -.ui-slider__track-background,.ui-slider__track-fill{content:"";display:block;height:.1875rem;left:0;position:absolute;top:.46875rem -} -.ui-slider__track-background{background-color:rgba(0,0,0,.12);width:100% -} -.ui-slider__snap-point{background-color:rgba(0,0,0,.75);height:.1875rem;opacity:0;position:absolute;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;width:.125rem;z-index:1 -} -.ui-slider__track-fill{background-color:#2196f3;-webkit-transform-origin:left;transform-origin:left;width:100% -} -.ui-slider__thumb{background-color:#2196f3;border-radius:50%;cursor:inherit;display:block;height:.875rem;left:0;position:relative;width:.875rem;z-index:1;margin-left:-0.4375rem -} -.ui-slider__thumb::before{background-color:rgba(33,150,243,.38);border-radius:50%;content:"";display:block;height:2.25rem;margin-left:-0.6875rem;margin-top:-0.6875rem;position:absolute;-webkit-transform-origin:center;transform-origin:center;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease, -webkit-transform .2s ease;width:2.25rem -} -.ui-slider__marker{height:2.25rem;margin-left:-0.6875rem;margin-top:-0.6875rem;opacity:0;position:absolute;-webkit-transform:scale(0) translateY(0);transform:scale(0) translateY(0);-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:2.25rem -} -.ui-slider__marker svg{fill:#2196f3;height:2.25rem;width:2.25rem -} -.ui-slider__marker-text{color:#2196f3;font-size:.8125rem;font-weight:600;left:0;position:absolute;text-align:center;top:.25rem;-webkit-transition:color .2s ease;transition:color .2s ease;width:2.25rem -} -.ui-slider--is-dragging{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none -} -.ui-snackbar{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#323232;border-radius:.125rem;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";max-width:35.5rem;min-height:3rem;min-width:18rem;padding:.875rem 1.5rem -} -.ui-snackbar__message{color:#fff;cursor:default;font-size:.875rem;line-height:1.5;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 -} -.ui-snackbar__action{margin-left:auto;margin:-0.5625rem -0.75rem;padding-left:3rem -} -.ui-snackbar__action-button{margin:0;min-height:initial;min-width:initial;padding:.75rem -} -.ui-snackbar__action-button:hover:not(.is-disabled){background-color:rgba(255,255,255,.05) -} -body[modality=keyboard] .ui-snackbar__action-button:focus{background-color:rgba(255,255,255,.1) -} -.ui-snackbar--transition-slide-enter-active,.ui-snackbar--transition-slide-leave-active{-webkit-transition:-webkit-transform .4s ease;transition:-webkit-transform .4s ease;transition:transform .4s ease;transition:transform .4s ease, -webkit-transform .4s ease -} -.ui-snackbar--transition-slide-enter,.ui-snackbar--transition-slide-leave-active{-webkit-transform:translateY(5.25rem);transform:translateY(5.25rem) -} -.ui-snackbar--transition-fade-enter-active,.ui-snackbar--transition-fade-leave-active{-webkit-transition:opacity .4s ease;transition:opacity .4s ease -} -.ui-snackbar--transition-fade-enter,.ui-snackbar--transition-fade-leave-active{opacity:0 -} -.ui-snackbar-container{bottom:0;left:.5rem;overflow:hidden;pointer-events:none;position:absolute -} -.ui-snackbar-container .ui-snackbar{margin:.25rem .25rem .75rem .25rem;pointer-events:auto -} -.ui-snackbar-container--position-right{left:initial;right:.5rem -} -.ui-snackbar-container--position-center{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;left:.5rem;right:.5rem -} -.ui-switch{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";height:2rem;position:relative -} -.ui-switch.is-checked .ui-switch__thumb{-webkit-transform:translateX(0.875rem);transform:translateX(0.875rem) -} -.ui-switch.is-disabled .ui-switch__track{background-color:rgba(0,0,0,.12) -} -.ui-switch.is-disabled .ui-switch__thumb{background-color:#bdbdbd;box-shadow:none -} -.ui-switch.is-disabled .ui-switch__input-wrapper,.ui-switch.is-disabled .ui-switch__label-text{color:rgba(0,0,0,.38);cursor:default -} -.ui-switch__input-wrapper{cursor:pointer;height:1.25rem;position:relative;width:2.125rem -} -.ui-switch__input{opacity:0;position:absolute -} -body[modality=keyboard] .ui-switch__input:focus+.ui-switch__thumb .ui-switch__focus-ring{opacity:1;-webkit-transform:scale(1);transform:scale(1) -} -.ui-switch__track{background-color:rgba(0,0,0,.26);border-radius:.5rem;height:.875rem;position:absolute;top:.1875rem;-webkit-transition:background-color .1s linear;transition:background-color .1s linear;width:2.125rem -} -.ui-switch__thumb{background-color:#fafafa;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.4);height:1.25rem;position:absolute;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:background-color,-webkit-transform;transition-property:background-color,-webkit-transform;transition-property:background-color,transform;transition-property:background-color,transform,-webkit-transform;-webkit-transition-timing-function:ease;transition-timing-function:ease;width:1.25rem -} -.ui-switch__focus-ring{background-color:rgba(0,0,0,.1);border-radius:50%;height:2.625rem;left:-0.6875rem;opacity:0;position:absolute;top:-0.6875rem;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:background-color .2s ease,opacity .15s ease,-webkit-transform .15s ease;transition:background-color .2s ease,opacity .15s ease,-webkit-transform .15s ease;transition:background-color .2s ease,transform .15s ease,opacity .15s ease;transition:background-color .2s ease,transform .15s ease,opacity .15s ease,-webkit-transform .15s ease;width:2.625rem;z-index:-1 -} -.ui-switch__label-text{cursor:pointer;font-size:.9375rem;margin-left:1rem -} -.ui-switch--switch-position-right .ui-switch__label-text{margin-left:0;margin-right:auto;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1 -} -.ui-switch--color-primary.is-checked:not(.is-disabled) .ui-switch__track{background-color:rgba(33,150,243,.5) -} -.ui-switch--color-primary.is-checked:not(.is-disabled) .ui-switch__thumb{background-color:#2196f3 -} -.ui-switch--color-primary.is-checked:not(.is-disabled) .ui-switch__focus-ring{background-color:rgba(33,150,243,.2) -} -.ui-switch--color-accent.is-checked:not(.is-disabled) .ui-switch__track{background-color:rgba(213,0,249,.5) -} -.ui-switch--color-accent.is-checked:not(.is-disabled) .ui-switch__thumb{background-color:#d500f9 -} -.ui-switch--color-accent.is-checked:not(.is-disabled) .ui-switch__focus-ring{background-color:rgba(213,0,249,.2) -} -.ui-tab{outline:none -} -.ui-tabs{margin-bottom:1.5rem;width:100% -} -.ui-tabs.is-fullwidth .ui-tab-header-item{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 -} -.ui-tabs.is-raised{border:none;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2) -} -.ui-tabs.is-raised .ui-tabs__body{border:none -} -.ui-tabs__header{position:relative;width:100% -} -.ui-tabs__header-items{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;margin:0;padding:0;position:relative -} -.ui-tabs__body{background-color:#fff;border-radius:0;border:.0625rem solid #eee;border-top:0;margin:0;padding:1rem -} -.ui-tabs--background-color-default .ui-tabs__header{background-color:#eee -} -body[modality=keyboard] .ui-tabs--background-color-default .ui-tab-header-item:focus{outline:1px solid #2196f3 -} -body[modality=keyboard] .ui-tabs--background-color-primary .ui-tab-header-item:focus,body[modality=keyboard] .ui-tabs--background-color-accent .ui-tab-header-item:focus,body[modality=keyboard] .ui-tabs--background-color-clear .ui-tab-header-item:focus{outline:1px solid #fff -} -.ui-tabs--background-color-primary .ui-ripple-ink__ink.is-held,.ui-tabs--background-color-accent .ui-ripple-ink__ink.is-held,.ui-tabs--background-color-clear .ui-ripple-ink__ink.is-held{opacity:.7 -} -.ui-tabs--background-color-primary .ui-tabs__header{background-color:#2196f3 -} -.ui-tabs--background-color-accent .ui-tabs__header{background-color:#d500f9 -} -.ui-tabs--background-color-clear .ui-tabs__header{background-color:transparent -} -.ui-tabs--background-color-clear .ui-tabs__header+.ui-tabs__body{border-top:1px solid rgba(0,0,0,.12) -} -.ui-tabs--text-color-black .ui-tab-header-item{color:rgba(0,0,0,.54) -} -.ui-tabs--text-color-black .ui-tab-header-item:hover:not(.is-disabled):not(.is-active){color:rgba(0,0,0,.87) -} -.ui-tabs--text-color-white .ui-tab-header-item{color:rgba(255,255,255,.65) -} -.ui-tabs--text-color-white .ui-tab-header-item:hover:not(.is-disabled):not(.is-active){color:#fff -} -.ui-tabs--text-color-active-white .ui-tab-header-item.is-active{color:#fff -} -.ui-tabs--text-color-active-primary .ui-tab-header-item.is-active{color:#2196f3 -} -.ui-tabs--text-color-active-accent .ui-tab-header-item.is-active{color:#d500f9 -} -.ui-tab-header-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:inherit;height:3rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-width:5rem;padding:0 .75rem;position:relative;text-transform:uppercase;-webkit-transition:color .1s;transition:color .1s -} -.ui-tab-header-item.is-active::after{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1) -} -.ui-tab-header-item.is-disabled{cursor:default;opacity:.4;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none -} -.ui-tab-header-item--type-icon-and-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:4.5rem -} -.ui-tab-header-item--type-icon-and-text .ui-tab-header-item__icon{margin-bottom:.25rem -} -.ui-tab-header-item__text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.9375rem;font-weight:600 -} -.ui-tab-header-item__icon{height:1.5rem;width:1.5rem;color:currentColor -} -.ui-tab-header-item__icon .ui-icon{cursor:inherit -} -.ui-tab-header-item::after{bottom:0;content:"";height:.1875rem;left:0;opacity:0;position:absolute;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transition:opacity .2s ease,-webkit-transform .2s ease;transition:opacity .2s ease,-webkit-transform .2s ease;transition:opacity .2s ease,transform .2s ease;transition:opacity .2s ease,transform .2s ease,-webkit-transform .2s ease;width:100% -} -.ui-tabs--indicator-color-primary .ui-tab-header-item::after{background-color:#2196f3 -} -.ui-tabs--indicator-color-accent .ui-tab-header-item::after{background-color:#d500f9 -} -.ui-tabs--indicator-color-white .ui-tab-header-item::after{background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.16) -} -.ui-textbox{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";margin-bottom:1rem -} -.ui-textbox:hover:not(.is-disabled) .ui-textbox__label-text{color:rgba(0,0,0,.75) -} -.ui-textbox:hover:not(.is-disabled) .ui-textbox__input,.ui-textbox:hover:not(.is-disabled) .ui-textbox__textarea{border-bottom-color:rgba(0,0,0,.3) -} -.ui-textbox.is-active:not(.is-disabled) .ui-textbox__input,.ui-textbox.is-active:not(.is-disabled) .ui-textbox__textarea{border-bottom-color:#2196f3;border-bottom-width:2px -} -.ui-textbox.is-active:not(.is-disabled) .ui-textbox__label-text,.ui-textbox.is-active:not(.is-disabled) .ui-textbox__icon-wrapper .ui-icon{color:#2196f3 -} -.ui-textbox.has-label .ui-textbox__icon-wrapper{padding-top:1.5rem -} -.ui-textbox.has-counter .ui-textbox__feedback-text{padding-right:3rem -} -.ui-textbox.has-floating-label .ui-textbox__label-text{display:table;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content -} -.ui-textbox.has-floating-label .ui-textbox__label-text.is-inline{color:rgba(0,0,0,.54);cursor:text;-webkit-transform:translateY(1.625rem) scale(1.1);transform:translateY(1.625rem) scale(1.1) -} -.ui-textbox.has-floating-label .ui-textbox__label-text.is-floating{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1) -} -.ui-textbox.has-floating-label .ui-textbox__label>input:-webkit-autofill+.ui-textbox__label-text.is-inline{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1) -} -.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__label-text,.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__icon-wrapper .ui-icon,.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__counter{color:#f44336 -} -.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__input,.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__textarea{border-bottom-color:#f44336 -} -.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__feedback{color:#f44336 -} -.ui-textbox.is-disabled .ui-textbox__input,.ui-textbox.is-disabled .ui-textbox__textarea{border-bottom-style:dotted;border-bottom-width:2px;color:rgba(0,0,0,.38) -} -.ui-textbox.is-disabled .ui-textbox__icon-wrapper .ui-icon{opacity:.6 -} -.ui-textbox.is-disabled .ui-textbox__feedback{opacity:.8 -} -.ui-textbox__label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;margin:0;padding:0;width:100% -} -.ui-textbox__icon-wrapper{-ms-flex-negative:0;flex-shrink:0;margin-right:.75rem;padding-top:.25rem -} -.ui-textbox__icon-wrapper .ui-icon{color:rgba(0,0,0,.54) -} -.ui-textbox__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 -} -.ui-textbox__label-text{color:rgba(0,0,0,.54);cursor:default;font-size:.9375rem;line-height:normal;margin-bottom:0;-webkit-transform-origin:left;transform-origin:left;-webkit-transition:color .1s ease,-webkit-transform .2s ease;transition:color .1s ease,-webkit-transform .2s ease;transition:color .1s ease,transform .2s ease;transition:color .1s ease,transform .2s ease,-webkit-transform .2s ease -} -.ui-textbox__input,.ui-textbox__textarea{background:none;border:none;border-bottom-color:rgba(0,0,0,.12);border-bottom-style:solid;border-bottom-width:1px;border-radius:0;color:rgba(0,0,0,.87);cursor:auto;display:block;font-family:inherit;font-size:1rem;font-weight:normal;margin:0;outline:none;padding:0;-webkit-transition:border .1s ease;transition:border .1s ease;width:100% -} -.ui-textbox__input{height:2rem -} -.ui-textbox__textarea{overflow-x:hidden;overflow-y:auto;padding-bottom:.375rem;resize:vertical -} -.ui-textbox__feedback{color:rgba(0,0,0,.54);font-size:.875rem;line-height:1.2;margin:0;padding-top:.25rem;position:relative -} -.ui-textbox__counter{position:absolute;right:0;top:.25rem -} -.ui-textbox--icon-position-right .ui-textbox__icon-wrapper{margin-left:.5rem;margin-right:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1 -} -.ui-toolbar{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:inherit;font-size:1.125rem;height:3.5rem;padding-left:1rem;position:relative -} -.ui-toolbar.is-raised{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2) -} -.ui-toolbar:not(.is-raised).ui-toolbar--type-default{border-bottom:.0625rem solid rgba(0,0,0,.12) -} -.ui-toolbar .ui-icon-button{height:3rem;width:3rem -} -.ui-toolbar__left{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0 -} -.ui-toolbar__nav-icon{margin-left:-1rem;margin-right:.5rem -} -.ui-toolbar__brand{min-width:10rem -} -.ui-toolbar__brand-text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-right:.5rem -} -.ui-toolbar__body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1 -} -.ui-toolbar__body.has-brand-divider{border-left-style:solid;border-left-width:.0625rem;padding-left:1.5rem -} -.ui-toolbar__right{-ms-flex-negative:0;flex-shrink:0;margin-left:auto -} -.ui-toolbar__progress{bottom:0;height:.1875rem;left:0;position:absolute;right:0 -} -.ui-toolbar--type-default{background-color:#fff -} -.ui-toolbar--type-colored{background-color:#2196f3 -} -.ui-toolbar--type-clear{background-color:transparent;border:none;box-shadow:none -} -.ui-toolbar--text-color-black{color:rgba(0,0,0,.87) -} -.ui-toolbar--text-color-black .ui-toolbar__body{border-left-color:rgba(0,0,0,.15) -} -.ui-toolbar--text-color-white{color:#fff -} -.ui-toolbar--text-color-white .ui-toolbar__body{border-color:rgba(255,255,255,.4) -} -.ui-toolbar--progress-position-top .ui-toolbar__progress{top:0 +.ui-icon-button--type-secondary.ui-icon-button--color-red .ui-icon-button__focus-ring { + background-color: rgba(244, 67, 54, 0.26); +}.ui-calendar-controls { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + height: 2.5rem; + -ms-flex-pack: justify; + justify-content: space-between; +} +.ui-calendar-controls__month-and-year { + font-size: 0.9375rem; + font-weight: 600; +} +.ui-calendar-controls--color-default { + background-color: #eee; +} +.ui-calendar-controls--color-primary { + background-color: #2196f3; + color: white; +} +.ui-calendar-controls--color-accent { + background-color: #d500f9; + color: white; +}.ui-calendar-week { + font-size: 0.875rem; + width: 100%; +} +.ui-calendar-week td { + width: 14.2857142857%; + min-width: 2.25rem; + position: relative; +} +.ui-calendar-week--has-square-cells td::before { + box-sizing: border-box; + content: ""; + display: block; + padding-top: 100%; + min-height: 2.25rem; +} +.ui-calendar-week--has-square-cells .ui-calendar-week__date { + position: absolute; + left: 0; + top: 0; + height: 100%; + border-radius: 50%; +} +.ui-calendar-week__date { + -ms-flex-align: center; + align-items: center; + border-radius: 2px; + cursor: pointer; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + outline: none; + text-align: center; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; + border: none; + width: 100%; + font-family: inherit; + font-size: inherit; + line-height: 1; + margin: 0; + min-height: 2.25rem; + padding: 0; +} +.ui-calendar-week__date:hover, body[modality=keyboard] .ui-calendar-week__date:focus { + background-color: rgba(0, 0, 0, 0.1); +} +.ui-calendar-week__date.is-in-other-month { + visibility: hidden; +} +.ui-calendar-week__date.is-today { + font-weight: 700; +} +.ui-calendar-week__date.is-disabled { + background-color: transparent; + cursor: default; + opacity: 0.4; +} +.ui-calendar-week--color-primary .ui-calendar-week__date.is-today { + color: #2196f3; +} +.ui-calendar-week--color-primary .ui-calendar-week__date.is-today.is-selected { + color: white; +} +.ui-calendar-week--color-primary .ui-calendar-week__date.is-selected, body[modality=keyboard] .ui-calendar-week--color-primary .ui-calendar-week__date.is-selected { + background-color: #2196f3; + color: white; +} +.ui-calendar-week--color-accent .ui-calendar-week__date.is-today { + color: #d500f9; +} +.ui-calendar-week--color-accent .ui-calendar-week__date.is-today.is-selected { + color: white; +} +.ui-calendar-week--color-accent .ui-calendar-week__date.is-selected, body[modality=keyboard] .ui-calendar-week--color-accent .ui-calendar-week__date.is-selected { + background-color: #d500f9; + color: white; +}.ui-calendar-month { + border-collapse: collapse; + border-spacing: 0; + background-color: transparent; + table-layout: fixed; + width: 100%; +} +.ui-calendar-month__header { + width: 100%; +} +.ui-calendar-month__header th { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + font-weight: 600; + height: 2.5rem; + text-align: center; + text-transform: uppercase; + vertical-align: middle; + width: 14.2857142857%; +} +.ui-calendar-month__body { + width: 100%; +}.ui-calendar { + border-radius: 3px; + color: rgba(0, 0, 0, 0.87); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + overflow: hidden; +} +.ui-calendar.is-raised { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); +} +.ui-calendar.is-raised .ui-calendar__body { + border: none; +} +.ui-calendar .ui-calendar__header { + height: 3rem; + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.ui-calendar__body { + border-radius: 0 0 3px 3px; + overflow: hidden; + position: relative; + width: 100%; + padding: 0.5rem; + padding-top: 0.25rem; + border: 1px solid #eee; + border-top: 0; +}.ui-checkbox { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-weight: normal; + margin: 0; + margin-bottom: 0.5rem; + position: relative; +} +.ui-checkbox:not(.is-disabled):not(.is-checked):hover .ui-checkbox__checkmark-background, .ui-checkbox:not(.is-disabled):not(.is-checked).is-active .ui-checkbox__checkmark-background { + border-color: rgba(0, 0, 0, 0.6); +} +.ui-checkbox.is-checked .ui-checkbox__checkmark::after { + border-bottom: 0.125rem solid white; + border-right: 0.125rem solid white; + opacity: 1; +} +.ui-checkbox.is-disabled .ui-checkbox__checkmark, +.ui-checkbox.is-disabled .ui-checkbox__label-text { + color: rgba(0, 0, 0, 0.38); + cursor: default; +} +.ui-checkbox.is-disabled .ui-checkbox__checkmark-background { + border-color: rgba(0, 0, 0, 0.26); +} +.ui-checkbox.is-disabled.is-checked .ui-checkbox__checkmark-background { + background-color: rgba(0, 0, 0, 0.26); + border: none; +} +.ui-checkbox__label-text { + cursor: pointer; + font-size: 1rem; + margin-left: 0.5rem; +} +.ui-checkbox__checkmark { + background-color: white; + cursor: pointer; + -ms-flex-negative: 0; + flex-shrink: 0; + height: 1.25rem; + position: relative; + width: 1.25rem; + border-radius: 0.125rem; +} +.ui-checkbox__checkmark::after { + bottom: 0.3125rem; + box-sizing: border-box; + content: ""; + display: block; + height: 0.8125rem; + left: 0.4375rem; + opacity: 0; + position: absolute; + transform: rotate(45deg); + transition-delay: 0.1s; + transition: opacity 0.3s ease; + width: 0.375rem; +} +.ui-checkbox__checkmark-background { + border-radius: 0.125rem; + border: 0.125rem solid rgba(0, 0, 0, 0.38); + box-sizing: border-box; + content: ""; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + transition: all 0.3s ease; + width: 100%; +} +.ui-checkbox__input { + position: absolute; + opacity: 0; +} +body[modality=keyboard] .ui-checkbox__input:focus + .ui-checkbox__checkmark .ui-checkbox__focus-ring { + opacity: 1; + transform: scale(1); +} +.ui-checkbox__focus-ring { + border-radius: 50%; + height: 2.625rem; + margin-left: -0.6875rem; + margin-top: -0.6875rem; + opacity: 0; + position: absolute; + transform: scale(0); + transition-duration: 0.15s; + transition-property: opacity, transform; + transition-timing-function: ease-out; + width: 2.625rem; + background-color: rgba(0, 0, 0, 0.12); +} +.ui-checkbox--box-position-right .ui-checkbox__label-text { + margin-left: 0; + margin-right: auto; + -ms-flex-order: -1; + order: -1; +} +.ui-checkbox--color-primary:not(.is-disabled).is-checked:hover .ui-checkbox__checkmark-background, .ui-checkbox--color-primary:not(.is-disabled).is-checked.is-active .ui-checkbox__checkmark-background { + background-color: #0d8aee; + border-color: #0d8aee; +} +.ui-checkbox--color-primary.is-checked .ui-checkbox__checkmark-background { + background-color: #2196f3; + border-color: #2196f3; +} +.ui-checkbox--color-primary.is-checked .ui-checkbox__focus-ring { + background-color: rgba(33, 150, 243, 0.18); +} +.ui-checkbox--color-accent:not(.is-disabled).is-checked:hover .ui-checkbox__checkmark-background, .ui-checkbox--color-accent:not(.is-disabled).is-checked.is-active .ui-checkbox__checkmark-background { + background-color: #bf00e0; + border-color: #bf00e0; +} +.ui-checkbox--color-accent.is-checked .ui-checkbox__checkmark-background { + background-color: #d500f9; + border-color: #d500f9; +} +.ui-checkbox--color-accent.is-checked .ui-checkbox__focus-ring { + background-color: rgba(213, 0, 249, 0.18); +}.ui-checkbox-group { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + line-height: normal; +} +.ui-checkbox-group:not(.is-disabled):not(.is-invalid):hover .ui-checkbox-group__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-checkbox-group:not(.is-disabled):not(.is-invalid).is-active .ui-checkbox-group__label-text { + color: #2196f3; +} +.ui-checkbox-group.is-vertical .ui-checkbox-group__checkboxes { + -ms-flex-direction: column; + flex-direction: column; + padding-top: 0.5rem; +} +.ui-checkbox-group.is-vertical .ui-checkbox-group__checkbox { + margin-bottom: 0.75rem; + margin-left: 0; + width: 100%; +} +.ui-checkbox-group.is-invalid .ui-checkbox-group__label-text { + color: #f44336; +} +.ui-checkbox-group.is-invalid .ui-checkbox-group__feedback { + color: #f44336; +} +.ui-checkbox-group.is-disabled .ui-checkbox-group__feedback { + opacity: 0.8; +} +.ui-checkbox-group__label-text { + color: rgba(0, 0, 0, 0.54); + font-size: 0.9375rem; + transition: color 0.1s ease; +} +.ui-checkbox-group__checkboxes { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + min-height: 2rem; +} +.ui-checkbox.ui-checkbox-group__checkbox { + margin-bottom: 0; + margin-left: 1.5rem; +} +.ui-checkbox.ui-checkbox-group__checkbox:first-child { + margin-left: 0; +} +.ui-checkbox-group__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0rem; + position: relative; +} +.ui-checkbox-group--box-position-right:not(.is-vertical) .ui-checkbox__label-text { + margin-right: 0.5rem; +}.ui-collapsible { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + margin-bottom: 0.5rem; + width: 100%; +} +.ui-collapsible:not(.is-disabled) .ui-collapsible__header:hover, body[modality=keyboard] .ui-collapsible:not(.is-disabled) .ui-collapsible__header:focus { + background-color: #e0e0e0; +} +.ui-collapsible.is-open .ui-collapsible__header-icon { + transform: rotate(-180deg); +} +.ui-collapsible.is-disabled .ui-collapsible__header { + cursor: default; + opacity: 0.6; +} +.ui-collapsible.is-disabled .ui-collapsible__header-icon { + cursor: default; +} +.ui-collapsible__header { + -ms-flex-align: center; + align-items: center; + background-color: #eeeeee; + cursor: pointer; + display: -ms-flexbox; + display: flex; + font-size: 0.9375rem; + line-height: 1.5; + margin: 0; + min-height: 3rem; + padding: 0.75rem 1rem; + position: relative; + -ms-touch-action: manipulation; + touch-action: manipulation; + width: 100%; +} +.ui-collapsible__header .ui-ripple-ink__ink { + opacity: 0.1; +} +.ui-collapsible__header-content { + padding-right: 0.5rem; +} +.ui-collapsible__header-icon { + color: rgba(0, 0, 0, 0.54); + cursor: pointer; + margin-left: auto; + margin-right: -0.25rem; + transition: transform 0.3s ease; +} +.ui-collapsible__body-wrapper { + max-height: 0; + transition: max-height 0.3s ease; +} +.ui-collapsible__body-wrapper.v-enter-active, .ui-collapsible__body-wrapper.v-leave-active { + overflow: hidden; +} +.ui-collapsible__body { + border: 1px solid #eeeeee; + border-top: 0; + display: block; + padding: 1rem; + width: 100%; +}.ui-modal { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 0.875rem; +} +.ui-modal.is-aligned-top .ui-modal__wrapper { + vertical-align: initial; +} +.ui-modal.is-aligned-top.has-footer .ui-modal__body { + max-height: calc(100vh - 7.875rem); +} +.ui-modal.has-footer .ui-modal__body { + max-height: calc(100vh - 7.875rem); +} +.ui-modal:not(.has-footer) .ui-modal__body { + padding: 1rem 1.5rem 1.5rem; +} +.ui-modal--is-open { + overflow: hidden; +} +.ui-modal__mask { + background-color: rgba(0, 0, 0, 0.5); + display: table; + height: 100%; + left: 0; + position: fixed; + top: 0; + transition: opacity 0.3s ease; + width: 100%; + z-index: 50; +} +.ui-modal__wrapper { + display: table-cell; + vertical-align: middle; + overflow-x: hidden; + text-align: center; +} +.ui-modal__wrapper.has-dummy-scrollbar { + overflow-y: scroll; +} +.ui-modal__container { + background-color: white; + border-radius: 0.125rem; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.33); + display: inline-block; + margin: 0 auto; + max-height: 100vh; + max-width: 100vw; + outline: none; + overflow: hidden; + padding: 0; + text-align: initial; + transition: all 0.3s ease; + width: 33rem; +} +.ui-modal__header { + -ms-flex-align: center; + align-items: center; + background-color: #f5f5f5; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16); + display: -ms-flexbox; + display: flex; + height: 3.5rem; + padding: 0 1.5rem; + position: relative; + z-index: 1; +} +.ui-modal__header-text { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + -ms-flex-positive: 1; + flex-grow: 1; + font-size: 1.125rem; + font-weight: normal; + margin: 0; +} +.ui-modal__close-button { + margin-left: auto; + margin-right: -0.5rem; +} +.ui-modal__body { + max-height: calc(100vh - 3.5rem); + overflow-y: auto; + padding: 1rem 1.5rem; +} +.ui-modal__footer { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + height: 4.375rem; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 0 1.5rem; +} +.ui-modal__footer .ui-button { + margin-left: 0.5rem; +} +.ui-modal__footer .ui-button:first-child { + margin-left: 0; +} +.ui-modal--size-small > .ui-modal__wrapper > .ui-modal__container { + width: 20rem; +} +.ui-modal--size-large > .ui-modal__wrapper > .ui-modal__container { + width: 53rem; +} +.ui-modal--size-fullscreen > .ui-modal__wrapper > .ui-modal__container { + width: 100vw; +} +.ui-modal--size-fullscreen > .ui-modal__wrapper > .ui-modal__container .ui-modal__body { + height: calc(100vh - 3.5rem); +} +.ui-modal--size-auto > .ui-modal__wrapper > .ui-modal__container { + width: initial; +} +.ui-modal--transition-fade-enter-from, +.ui-modal--transition-fade-leave-active { + opacity: 0; +} +.ui-modal--transition-scale-down-enter-from, +.ui-modal--transition-scale-down-leave-active { + opacity: 0; +} +.ui-modal--transition-scale-down-enter-from .ui-modal__container, +.ui-modal--transition-scale-down-leave-active .ui-modal__container { + transform: scale(1.1); +} +.ui-modal--transition-scale-up-enter-from, +.ui-modal--transition-scale-up-leave-active { + opacity: 0; +} +.ui-modal--transition-scale-up-enter-from .ui-modal__container, +.ui-modal--transition-scale-up-leave-active .ui-modal__container { + transform: scale(0.8); +}.ui-confirm__message { + font-size: 0.9375rem; +} +.ui-confirm__footer { + display: -ms-flexbox; + display: flex; +}.ui-datepicker-calendar { + color: rgba(0, 0, 0, 0.87); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +.ui-datepicker-calendar__header { + color: white; + line-height: 1; + padding: 1rem; +} +.ui-datepicker-calendar__header-year, +.ui-datepicker-calendar__header-date { + cursor: pointer; + opacity: 0.75; + transition: opacity 0.2s ease; +} +.ui-datepicker-calendar__header-year:hover, body[modality=keyboard] .ui-datepicker-calendar__header-year:focus, .ui-datepicker-calendar__header-year.is-active, +.ui-datepicker-calendar__header-date:hover, +body[modality=keyboard] .ui-datepicker-calendar__header-date:focus, +.ui-datepicker-calendar__header-date.is-active { + opacity: 1; +} +body[modality=keyboard] .ui-datepicker-calendar__header-year:focus, +body[modality=keyboard] .ui-datepicker-calendar__header-date:focus { + outline: 1px dotted white; + outline-offset: 1px; +} +.ui-datepicker-calendar__header-year { + font-size: 0.9375rem; + font-weight: 600; + margin-bottom: 0.5rem; +} +.ui-datepicker-calendar__header-date { + font-size: 1.375rem; +} +.ui-datepicker-calendar__body { + box-sizing: border-box; +} +.ui-datepicker-calendar__body .ui-calendar-controls { + background-color: transparent; +} +.ui-datepicker-calendar__body, +.ui-datepicker-calendar__years { + height: 19.5rem; + padding: 0.5rem; + width: 16.75rem; +} +.ui-datepicker-calendar__years { + list-style: none; + overflow-y: auto; + margin: 0; +} +.ui-datepicker-calendar__year { + -ms-flex-align: center; + align-items: center; + cursor: pointer; + display: -ms-flexbox; + display: flex; + font-size: 1rem; + height: 2.25rem; + -ms-flex-pack: center; + justify-content: center; + outline: none; +} +.ui-datepicker-calendar__year.is-selected { + font-size: 1.5rem; + font-weight: 600; + height: 2.5rem; +} +.ui-datepicker-calendar--orientation-landscape { + display: -ms-flexbox; + display: flex; +} +.ui-datepicker-calendar--orientation-landscape .ui-datepicker-calendar__header { + min-width: 8rem; +} +.ui-datepicker-calendar--orientation-landscape .ui-datepicker-calendar__header-day { + margin-bottom: 0.75rem; + display: block; + padding-top: 0.25rem; +} +.ui-datepicker-calendar--color-primary .ui-datepicker-calendar__header { + background-color: #2196f3; +} +.ui-datepicker-calendar--color-primary .ui-datepicker-calendar__year:hover, body[modality=keyboard] .ui-datepicker-calendar--color-primary .ui-datepicker-calendar__year:focus { + color: #2196f3; +} +.ui-datepicker-calendar--color-primary .ui-datepicker-calendar__year.is-selected { + color: #2196f3; +} +.ui-datepicker-calendar--color-primary .ui-datepicker-calendar-week__date.is-today { + color: #2196f3; +} +.ui-datepicker-calendar--color-primary .ui-datepicker-calendar-week__date.is-selected, body[modality=keyboard] .ui-datepicker-calendar--color-primary .ui-datepicker-calendar-week__date.is-selected { + background-color: #2196f3; +} +.ui-datepicker-calendar--color-accent .ui-datepicker-calendar__header { + background-color: #d500f9; +} +.ui-datepicker-calendar--color-accent .ui-datepicker-calendar__year:hover, body[modality=keyboard] .ui-datepicker-calendar--color-accent .ui-datepicker-calendar__year:focus { + color: #d500f9; +} +.ui-datepicker-calendar--color-accent .ui-datepicker-calendar__year.is-selected { + color: #d500f9; +} +.ui-datepicker-calendar--color-accent .ui-datepicker-calendar-week__date.is-today { + color: #d500f9; +} +.ui-datepicker-calendar--color-accent .ui-datepicker-calendar-week__date.is-selected, body[modality=keyboard] .ui-datepicker-calendar--color-accent .ui-datepicker-calendar-week__date.is-selected { + background-color: #d500f9; +}.ui-datepicker { + -ms-flex-align: start; + align-items: flex-start; + display: -ms-flexbox; + display: flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + margin-bottom: 1rem; + outline: none; + position: relative; +} +.ui-datepicker:hover:not(.is-disabled) .ui-datepicker__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-datepicker:hover:not(.is-disabled) .ui-datepicker__display { + border-bottom-color: rgba(0, 0, 0, 0.3); +} +.ui-datepicker:hover:not(.is-disabled) .ui-datepicker__dropdown-button { + color: rgba(0, 0, 0, 0.87); +} +.ui-datepicker.is-active:not(.is-disabled) .ui-datepicker__label-text, +.ui-datepicker.is-active:not(.is-disabled) .ui-datepicker__icon-wrapper .ui-icon { + color: #2196f3; +} +.ui-datepicker.is-active:not(.is-disabled) .ui-datepicker__display { + border-bottom-color: #2196f3; + border-bottom-width: 2px; +} +.ui-datepicker.has-floating-label .ui-datepicker__label-text { + display: table; +} +.ui-datepicker.has-floating-label .ui-datepicker__label-text.is-inline { + color: rgba(0, 0, 0, 0.54); + cursor: pointer; + transform: translateY(1.625rem) scale(1.1); +} +.ui-datepicker.has-floating-label .ui-datepicker__label-text.is-floating { + transform: translateY(0) scale(1); +} +.ui-datepicker.has-label .ui-datepicker__icon-wrapper { + padding-top: 1.5rem; +} +.ui-datepicker.has-label .ui-datepicker__dropdown-button { + top: 1.6875rem; +} +.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__label-text, +.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__icon-wrapper .ui-icon { + color: #f44336; +} +.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__display { + border-bottom-color: #f44336; +} +.ui-datepicker.is-invalid:not(.is-disabled) .ui-datepicker__feedback { + color: #f44336; +} +.ui-datepicker.is-disabled .ui-datepicker__display { + border-bottom-style: dotted; + border-bottom-width: 2px; + color: rgba(0, 0, 0, 0.38); + cursor: default; +} +.ui-datepicker.is-disabled .ui-datepicker__dropdown-button, +.ui-datepicker.is-disabled .ui-datepicker__display-value.is-placeholder { + color: rgba(0, 0, 0, 0.38); + opacity: 0.6; +} +.ui-datepicker.is-disabled .ui-datepicker__icon-wrapper .ui-icon { + opacity: 0.6; +} +.ui-datepicker.is-disabled .ui-datepicker__feedback { + opacity: 0.8; +} +.ui-datepicker .ui-modal:not(.has-footer) .ui-modal__body { + padding: 0; +} +.ui-datepicker__label { + display: block; + margin: 0; + outline: none; + padding: 0; + position: relative; + width: 100%; +} +.ui-datepicker__icon-wrapper { + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; + padding-top: 0.25rem; +} +.ui-datepicker__icon-wrapper .ui-icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-datepicker__content { + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-datepicker__label-text { + color: rgba(0, 0, 0, 0.54); + cursor: default; + font-size: 0.9375rem; + line-height: normal; + margin-bottom: 0; + transform-origin: left; + transition: color 0.1s ease, transform 0.2s ease; +} +.ui-datepicker__display { + -ms-flex-align: center; + align-items: center; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + display: -ms-flexbox; + display: flex; + font-family: inherit; + font-size: 1rem; + font-weight: normal; + height: 2rem; + line-height: 1; + padding: 0; + transition: border 0.1s ease; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 100%; +} +.ui-datepicker__display-value { + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-datepicker__display-value.is-placeholder { + color: rgba(0, 0, 0, 0.38); +} +.ui-datepicker__dropdown-button { + color: rgba(0, 0, 0, 0.54); + font-size: 1.125rem; + margin-left: auto; + margin-right: -0.25rem; +} +.ui-datepicker__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0.25rem; + position: relative; +} +.ui-datepicker--icon-position-right .ui-datepicker__icon-wrapper { + margin-left: 0.5rem; + margin-right: 0; + -ms-flex-order: 1; + order: 1; +}.ui-fab { + -ms-flex-align: center; + align-items: center; + border-radius: 50%; + border: none; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2), 0 2px 10px 0 rgba(0, 0, 0, 0.16); + cursor: pointer; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + outline: none; + position: relative; + transition: box-shadow 0.3s ease; + z-index: 30; +} +.ui-fab::-moz-focus-inner { + border: 0; +} +.ui-fab:hover, body[modality=keyboard] .ui-fab:focus { + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.25), 0 6px 20px 0 rgba(0, 0, 0, 0.2); +} +body[modality=keyboard] .ui-fab:focus .ui-fab__focus-ring { + opacity: 1; + transform: scale(1); +} +.ui-fab .ui-ripple-ink { + border-radius: 50%; +} +.ui-fab__icon { + height: initial; + margin: 0; + position: relative; + width: 100%; + z-index: 1; +} +.ui-fab__focus-ring { + border-radius: 50%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + transform-origin: center; + transform: scale(0); + transition: transform 0.2s ease, opacity 0.2s ease; +} +.ui-fab--size-normal, +.ui-fab--size-normal .ui-fab__focus-ring { + height: 3.5rem; + width: 3.5rem; +} +.ui-fab--size-small, +.ui-fab--size-small .ui-fab__focus-ring { + width: 2.5rem; + height: 2.5rem; +} +.ui-fab--color-default { + background-color: white; + color: rgba(0, 0, 0, 0.54); +} +.ui-fab--color-default .ui-fab__icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-fab--color-default .ui-ripple-ink__ink { + opacity: 0.2; +} +.ui-fab--color-default .ui-fab__focus-ring { + background-color: rgba(0, 0, 0, 0.15); +} +.ui-fab--color-primary, +.ui-fab--color-accent { + color: white; +} +.ui-fab--color-primary .ui-fab__icon, +.ui-fab--color-accent .ui-fab__icon { + color: white; +} +.ui-fab--color-primary .ui-ripple-ink__ink, +.ui-fab--color-accent .ui-ripple-ink__ink { + opacity: 0.4; +} +.ui-fab--color-primary { + background-color: #2196f3; +} +.ui-fab--color-primary .ui-fab__focus-ring { + background-color: #0c7cd5; +} +.ui-fab--color-accent { + background-color: #d500f9; +} +.ui-fab--color-accent .ui-fab__focus-ring { + background-color: #a900c6; +}.ui-fileupload { + -ms-flex-align: center; + align-items: center; + border-radius: 0.125rem; + cursor: pointer; + display: -ms-inline-flexbox; + display: inline-flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 0.875rem; + font-weight: 600; + height: 2.25rem; + -ms-flex-pack: center; + justify-content: center; + letter-spacing: 0.02em; + line-height: 1; + min-width: 5rem; + overflow: hidden; + padding: 0; + padding-left: 1rem; + padding-right: 1rem; + position: relative; + text-transform: uppercase; +} +.ui-fileupload.has-focus-ring.is-active .ui-fileupload__focus-ring::before, body[modality=keyboard] .ui-fileupload.is-active .ui-fileupload__focus-ring::before { + opacity: 1; + transform: scale(1.1); +} +.ui-fileupload:not(.is-multiple) .ui-fileupload__display-text { + text-transform: none; +} +.ui-fileupload.is-raised { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + transition: box-shadow 0.1s; +} +.ui-fileupload.is-raised.has-focus-ring.is-active, body[modality=keyboard] .ui-fileupload.is-raised.is-active { + box-shadow: 0 0 5px rgba(0, 0, 0, 0.22), 0 3px 6px rgba(0, 0, 0, 0.3); +} +.ui-fileupload.is-disabled { + cursor: default; + opacity: 0.6; +} +.ui-fileupload__input { + height: 0.1px; + opacity: 0; + overflow: hidden; + position: absolute; + z-index: -1; + width: 0.1px; +} +.ui-fileupload__content { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + transition: opacity 0.3s ease; + z-index: 1; +} +.ui-fileupload__icon { + margin-left: -0.25rem; + margin-right: 0.375rem; + margin-top: -0.125rem; +} +.ui-fileupload__focus-ring { + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.ui-fileupload__focus-ring::before { + border-radius: 50%; + content: ""; + display: block; + left: 0; + margin-top: calc(-1 * (50% - 1.125rem)); + padding-top: 100%; + position: relative; + top: 0; + opacity: 0; + transform: scale(0); + transition: opacity 0.3s ease, transform 0.3s ease; +} +.ui-fileupload--icon-position-right .ui-fileupload__icon { + margin-left: 0.375rem; + margin-right: -0.25rem; + -ms-flex-order: 1; + order: 1; +} +.ui-fileupload--size-small { + font-size: 0.875rem; + height: 2rem; + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.ui-fileupload--size-small .ui-fileupload__icon { + margin-left: 0; + margin-top: 0; +} +.ui-fileupload--size-small .ui-fileupload__icon .ui-icon { + font-size: 1.125rem; +} +.ui-fileupload--size-small.ui-fileupload--icon-position-right .ui-fileupload__icon { + margin-left: 0.375rem; + margin-right: 0; +} +.ui-fileupload--size-large { + font-size: 1rem; + height: 3rem; + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.ui-fileupload--size-large .ui-fileupload__icon { + margin-left: -0.25rem; + margin-right: 0.5rem; +} +.ui-fileupload--size-large.ui-fileupload--icon-position-right .ui-fileupload__icon { + margin-left: 0.5rem; + margin-right: -0.25rem; +} +.ui-fileupload--type-primary .ui-fileupload__focus-ring::before { + background-color: rgba(0, 0, 0, 0.12); +} +.ui-fileupload--type-primary.ui-fileupload--color-default { + background-color: #eeeeee; + color: rgba(0, 0, 0, 0.87); +} +.ui-fileupload--type-primary.ui-fileupload--color-default:hover:not(.is-disabled) { + background-color: #dbdbdb; +} +.ui-fileupload--type-primary.ui-fileupload--color-default .ui-ripple-ink__ink { + opacity: 0.2; +} +.ui-fileupload--type-primary.ui-fileupload--color-default .ui-fileupload__icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-fileupload--type-primary.ui-fileupload--color-primary, .ui-fileupload--type-primary.ui-fileupload--color-accent { + color: white; +} +.ui-fileupload--type-primary.ui-fileupload--color-primary .ui-ripple-ink__ink, .ui-fileupload--type-primary.ui-fileupload--color-accent .ui-ripple-ink__ink { + opacity: 0.4; +} +.ui-fileupload--type-primary.ui-fileupload--color-primary { + background-color: #2196f3; +} +.ui-fileupload--type-primary.ui-fileupload--color-primary:hover:not(.is-disabled) { + background-color: #0c7cd5; +} +.ui-fileupload--type-primary.ui-fileupload--color-accent { + background-color: #d500f9; +} +.ui-fileupload--type-primary.ui-fileupload--color-accent:hover:not(.is-disabled) { + background-color: #a900c6; +} +.ui-fileupload--type-secondary { + background-color: transparent; +} +.ui-fileupload--type-secondary.ui-fileupload--color-default { + color: rgba(0, 0, 0, 0.87); +} +.ui-fileupload--type-secondary.ui-fileupload--color-default:hover:not(.is-disabled) { + background-color: #eeeeee; +} +.ui-fileupload--type-secondary.ui-fileupload--color-default .ui-fileupload__focus-ring::before { + background-color: rgba(0, 0, 0, 0.12); +} +.ui-fileupload--type-secondary.ui-fileupload--color-default .ui-fileupload__icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-fileupload--type-secondary.ui-fileupload--color-primary { + color: #2196f3; +} +.ui-fileupload--type-secondary.ui-fileupload--color-primary:hover:not(.is-disabled) { + background-color: rgba(33, 150, 243, 0.12); +} +.ui-fileupload--type-secondary.ui-fileupload--color-primary .ui-fileupload__focus-ring::before { + background-color: rgba(33, 150, 243, 0.26); +} +.ui-fileupload--type-secondary.ui-fileupload--color-accent { + color: #d500f9; +} +.ui-fileupload--type-secondary.ui-fileupload--color-accent:hover:not(.is-disabled) { + background-color: rgba(213, 0, 249, 0.12); +} +.ui-fileupload--type-secondary.ui-fileupload--color-accent .ui-fileupload__focus-ring::before { + background-color: rgba(213, 0, 249, 0.26); +}.ui-menu-option { + display: block; + font-family: inherit; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 100%; +} +.ui-menu-option.is-divider { + background-color: rgba(0, 0, 0, 0.08); + display: block; + height: 0.0625rem; + margin: 0.375rem 0; + padding: 0; +} +.ui-menu-option:not(.is-divider) { + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + font-size: 0.9375rem; + font-weight: normal; + min-height: 2.5rem; + outline: none; + text-decoration: none; +} +.ui-menu-option:not(.is-divider):hover:not(.is-disabled), body[modality=keyboard] .ui-menu-option:not(.is-divider):focus { + background-color: #EEEEEE; +} +.ui-menu-option:not(.is-divider).is-disabled { + color: rgba(0, 0, 0, 0.54); + cursor: default; + opacity: 0.5; +} +.ui-menu-option:not(.is-divider).is-disabled .ui-menu-option__secondary-text { + color: rgba(0, 0, 0, 0.54); +} +.ui-menu-option__content { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + height: 2.5rem; + padding: 0 1rem; +} +.ui-menu-option__icon { + color: rgba(0, 0, 0, 0.54); + font-size: 1.125rem; + margin-right: 1rem; +} +.ui-menu-option__text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-menu-option__secondary-text { + color: rgba(0, 0, 0, 0.38); + -ms-flex-negative: 0; + flex-shrink: 0; + font-size: 0.8125rem; + margin-left: 0.25rem; +}.ui-menu { + background-color: white; + border: 0.0625rem solid rgba(0, 0, 0, 0.08); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + list-style: none; + margin: 0; + max-height: 100vh; + max-width: 17rem; + min-width: 10.5rem; + outline: none; + overflow-x: hidden; + overflow-y: auto; + padding: 0.25rem 0; +} +.ui-menu.is-raised { + border: none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); +} +.ui-menu.has-secondary-text { + min-width: 15rem; + max-width: 19rem; +}.ui-preloader { + position: relative; + width: 100%; +} +.ui-preloader.is-loading .ui-preloader__progressbar { + opacity: 1; + padding-top: 0.1875rem; +} +.ui-preloader__progressbar { + animation: ui-preloader-background linear 3s infinite; + background-color: #159756; + left: 0; + opacity: 0; + position: absolute; + top: 0; + transition-duration: 0.3s; + transition-property: opacity, padding-top; + transition-timing-function: ease; + width: 100%; + overflow: hidden; +} +.ui-preloader__progressbar::before, .ui-preloader__progressbar::after { + animation: ui-preloader-front linear 3s infinite; + content: ""; + display: block; + height: 0.1875rem; + position: absolute; + top: 0; + width: 100%; + z-index: 1; +} +.ui-preloader__progressbar::before { + right: 50%; + transform-origin: right; +} +.ui-preloader__progressbar::after { + left: 50%; + transform-origin: left; +} +@keyframes ui-preloader-background { +0%, 24.9% { + background-color: #159756; +} +25%, 49.9% { + background-color: #da4733; +} +50%, 74.9% { + background-color: #3b78e7; +} +75%, 100% { + background-color: #fdba2c; +} +} +@keyframes ui-preloader-front { +0% { + transform: scaleX(0); + background-color: #da4733; +} +24.9% { + transform: scaleX(0.5); + background-color: #da4733; +} +25% { + transform: scaleX(0); + background-color: #3b78e7; +} +49.9% { + transform: scaleX(0.5); + background-color: #3b78e7; +} +50% { + transform: scaleX(0); + background-color: #fdba2c; +} +74.9% { + transform: scaleX(0.5); + background-color: #fdba2c; +} +75% { + transform: scaleX(0); + background-color: #159756; +} +100% { + transform: scaleX(0.5); + background-color: #159756; +} +}.ui-progress-linear { + display: block; + height: 0.25rem; + overflow: hidden; + position: relative; + transition-duration: 0.3s; + transition-property: height, opacity; + transition-timing-function: ease; + width: 100%; +} +.ui-progress-linear__progress-bar { + height: 0.25rem; + left: 0; + position: absolute; + top: 0; + transform-origin: left; + width: 100%; +} +.ui-progress-linear__progress-bar.is-determinate { + transition: transform 0.2s ease; +} +.ui-progress-linear__progress-bar.is-indeterminate { + animation: ui-progress-linear-indeterminate 2.1s linear infinite; + transform: translateX(0) scaleX(0); + transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1); +} +@keyframes ui-progress-linear-indeterminate { +0% { + transform: translateX(0) scaleX(0); +} +25% { + transform: translateX(50%) scaleX(0.6); +} +49% { + transform: translateX(110%) scaleX(0); +} +50% { + transform: translateX(0) scaleX(0); +} +75% { + transform: translateX(0) scaleX(0.6); +} +100% { + transform: translateX(110%) scaleX(0); +} +} +.ui-progress-linear--transition-fade-enter-active, +.ui-progress-linear--transition-fade-leave-active { + transition: opacity 0.3s ease; +} +.ui-progress-linear--transition-fade-enter-from, +.ui-progress-linear--transition-fade-leave-active { + opacity: 0; +} +.ui-progress-linear--color-primary { + background-color: rgba(33, 150, 243, 0.4); +} +.ui-progress-linear--color-primary .ui-progress-linear__progress-bar { + background-color: #2196f3; +} +.ui-progress-linear--color-accent { + background-color: rgba(213, 0, 249, 0.4); +} +.ui-progress-linear--color-accent .ui-progress-linear__progress-bar { + background-color: #d500f9; +} +.ui-progress-linear--color-black { + background-color: rgba(97, 97, 97, 0.4); +} +.ui-progress-linear--color-black .ui-progress-linear__progress-bar { + background-color: #616161; +} +.ui-progress-linear--color-white { + background-color: rgba(255, 255, 255, 0.4); +} +.ui-progress-linear--color-white .ui-progress-linear__progress-bar { + background-color: white; +}.ui-radio { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 0.9375rem; + height: 1.25rem; + margin: 0; +} +.ui-radio:hover:not(.is-disabled):not(.is-checked) .ui-radio__outer-circle { + border: 0.125rem solid rgba(0, 0, 0, 0.54); +} +.ui-radio.is-checked .ui-radio__inner-circle { + opacity: 1; + transform: scale(0.5); + z-index: 0; +} +.ui-radio.is-disabled { + opacity: 0.5; +} +.ui-radio.is-disabled .ui-radio__input-wrapper, +.ui-radio.is-disabled .ui-radio__label-text { + cursor: default; +} +.ui-radio__input-wrapper { + cursor: pointer; + height: 1.25rem; + position: relative; + width: 1.25rem; +} +.ui-radio__input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 1px; + left: 0; + margin: 0; + opacity: 0; + outline: none; + padding: 0; + position: absolute; + top: 0; + width: 1px; +} +body[modality=keyboard] .ui-radio__input:focus + .ui-radio__focus-ring { + opacity: 1; + transform: scale(1); +} +.ui-radio__outer-circle { + background-color: transparent; + border-radius: 50%; + border: 0.125rem solid rgba(0, 0, 0, 0.38); + height: 1.25rem; + left: 0; + position: absolute; + top: 0; + transition: border-color 0.2s; + width: 1.25rem; +} +.ui-radio__inner-circle { + background-color: rgba(0, 0, 0, 0.38); + border-radius: 50%; + height: 1.25rem; + left: 0; + opacity: 0; + position: absolute; + top: 0; + transform: scale(1.2); + transition-duration: 0.3s; + transition-property: transform, opacity, background-color; + width: 1.25rem; + z-index: -1; +} +.ui-radio__focus-ring { + background-color: rgba(0, 0, 0, 0.1); + border-radius: 50%; + height: 2.625rem; + left: -0.6875rem; + opacity: 0; + position: absolute; + top: -0.6875rem; + transform: scale(0); + transition: background-color 0.2s ease, transform 0.15s ease, opacity 0.15s ease; + width: 2.625rem; + z-index: -1; +} +.ui-radio__label-text { + cursor: pointer; + font-size: 1rem; + margin-left: 0.5rem; +} +.ui-radio--button-position-right .ui-radio__label-text { + margin-left: 0; + margin-right: auto; + -ms-flex-order: -1; + order: -1; +} +.ui-radio--color-primary.is-checked:not(.is-disabled) .ui-radio__outer-circle { + border-color: #2196f3; +} +.ui-radio--color-primary.is-checked:not(.is-disabled) .ui-radio__inner-circle { + background-color: #2196f3; +} +.ui-radio--color-primary.is-checked:not(.is-disabled) .ui-radio__focus-ring { + background-color: rgba(33, 150, 243, 0.2); +} +.ui-radio--color-accent.is-checked:not(.is-disabled) .ui-radio__outer-circle { + border-color: #d500f9; +} +.ui-radio--color-accent.is-checked:not(.is-disabled) .ui-radio__inner-circle { + background-color: #d500f9; +} +.ui-radio--color-accent.is-checked:not(.is-disabled) .ui-radio__focus-ring { + background-color: rgba(213, 0, 249, 0.2); +}.ui-radio-group { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +.ui-radio-group:not(.is-disabled):not(.is-invalid):hover .ui-radio-group__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-radio-group:not(.is-disabled):not(.is-invalid).is-active .ui-radio-group__label-text { + color: #2196f3; +} +.ui-radio-group.is-vertical .ui-radio-group__radios { + -ms-flex-direction: column; + flex-direction: column; + padding-top: 0.5rem; +} +.ui-radio-group.is-vertical .ui-radio-group__radio { + margin-bottom: 0.75rem; + margin-left: 0; + width: 100%; +} +.ui-radio-group.is-invalid .ui-radio-group__label-text { + color: #f44336; +} +.ui-radio-group.is-invalid .ui-radio-group__feedback { + color: #f44336; +} +.ui-radio-group.is-disabled .ui-radio-group__feedback { + opacity: 0.8; +} +.ui-radio-group__label-text { + color: rgba(0, 0, 0, 0.54); + font-size: 0.9375rem; + line-height: normal; + transition: color 0.1s ease; +} +.ui-radio-group__radios { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + min-height: 2rem; +} +.ui-radio.ui-radio-group__radio { + margin-left: 1.5rem; +} +.ui-radio.ui-radio-group__radio:first-child { + margin-left: 0; +} +.ui-radio-group__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0rem; + position: relative; +} +.ui-radio-group--button-position-right:not(.is-vertical) .ui-radio__label-text { + margin-right: 0.5rem; +}.ui-select-option { + -ms-flex-align: center; + align-items: center; + cursor: pointer; + display: -ms-flexbox; + display: flex; + font-family: inherit; + font-size: 0.9375rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ui-select-option.is-selected { + background-color: rgba(0, 0, 0, 0.05); + color: #2196f3; + font-weight: 600; +} +.ui-select-option.is-selected .ui-select-option__checkbox { + color: #2196f3; +} +.ui-select-option.is-highlighted { + background-color: rgba(0, 0, 0, 0.1); +} +.ui-select-option__basic, +.ui-select-option__image-text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-select-option__image { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; +} +.ui-select-option__image-object { + background-position: 50%; + background-size: cover; + border-radius: 50%; + height: 2rem; + margin-right: 0.75rem; + width: 2rem; +} +.ui-select-option__checkbox { + color: rgba(0, 0, 0, 0.38); + margin-left: auto; +} +.ui-select-option--type-basic { + padding: 0.375rem 0.75rem; +} +.ui-select-option--type-image { + padding: 0.25rem 0.75rem; +}.ui-select { + -ms-flex-align: start; + align-items: flex-start; + display: -ms-flexbox; + display: flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + margin-bottom: 1rem; + outline: none; + position: relative; +} +.ui-select:hover:not(.is-disabled) .ui-select__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-select:hover:not(.is-disabled) .ui-select__display { + border-bottom-color: rgba(0, 0, 0, 0.3); +} +.ui-select:hover:not(.is-disabled) .ui-select__dropdown-button { + color: rgba(0, 0, 0, 0.87); +} +.ui-select.is-active:not(.is-disabled) .ui-select__label-text, +.ui-select.is-active:not(.is-disabled) .ui-select__icon-wrapper .ui-icon { + color: #2196f3; +} +.ui-select.is-active:not(.is-disabled) .ui-select__display { + border-bottom-color: #2196f3; + border-bottom-width: 2px; +} +.ui-select.has-floating-label .ui-select__label-text { + display: table; +} +.ui-select.has-floating-label .ui-select__label-text.is-inline { + color: rgba(0, 0, 0, 0.54); + cursor: pointer; + transform: translateY(1.625rem) scale(1.1); +} +.ui-select.has-floating-label .ui-select__label-text.is-floating { + transform: translateY(0) scale(1); +} +.ui-select.has-label .ui-select__icon-wrapper { + padding-top: 1.5rem; +} +.ui-select.has-label .ui-select__dropdown-button { + top: 1.6875rem; +} +.ui-select:not(.is-multiple) .ui-select__display { + height: 2rem; + line-height: 1; +} +.ui-select.is-multiple .ui-select__display { + line-height: 1.4; + padding-bottom: 0.25rem; + padding-top: 0.25rem; +} +.ui-select.is-invalid:not(.is-disabled) .ui-select__label-text, +.ui-select.is-invalid:not(.is-disabled) .ui-select__icon-wrapper .ui-icon { + color: #f44336; +} +.ui-select.is-invalid:not(.is-disabled) .ui-select__display { + border-bottom-color: #f44336; +} +.ui-select.is-invalid:not(.is-disabled) .ui-select__feedback { + color: #f44336; +} +.ui-select.is-disabled .ui-select__display { + border-bottom-style: dotted; + border-bottom-width: 2px; + color: rgba(0, 0, 0, 0.38); + cursor: default; +} +.ui-select.is-disabled .ui-select__dropdown-button, +.ui-select.is-disabled .ui-select__display-value.is-placeholder { + color: rgba(0, 0, 0, 0.38); + opacity: 0.6; +} +.ui-select.is-disabled .ui-select__icon-wrapper .ui-icon { + opacity: 0.6; +} +.ui-select.is-disabled .ui-select__feedback { + opacity: 0.8; +} +.ui-select__label { + display: block; + margin: 0; + outline: none; + padding: 0; + width: 100%; +} +.ui-select__icon-wrapper { + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; + padding-top: 0.25rem; +} +.ui-select__icon-wrapper .ui-icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-select__content { + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-select__label-text { + color: rgba(0, 0, 0, 0.54); + cursor: default; + font-size: 0.9375rem; + line-height: normal; + margin-bottom: 0; + transform-origin: left; + transition: color 0.1s ease, transform 0.2s ease; +} +.ui-select__display { + -ms-flex-align: center; + align-items: center; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + display: -ms-flexbox; + display: flex; + font-family: inherit; + font-size: 1rem; + font-weight: normal; + min-height: 2rem; + padding: 0; + transition: border 0.1s ease; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 100%; +} +.ui-select__display-value { + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-select__display-value.is-placeholder { + color: rgba(0, 0, 0, 0.38); +} +.ui-select__dropdown-button { + color: rgba(0, 0, 0, 0.54); + font-size: 1.125rem; + margin-left: auto; + margin-right: -0.25rem; +} +.ui-select__dropdown { + display: block; + list-style-type: none; + margin: 0; + margin-bottom: 0.5rem; + min-width: 11.25rem; + outline: none; + padding: 0; + width: 100%; +} +.ui-select__dropdown-content { + outline: none; +} +.ui-select__search-input { + background: none; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + border-radius: 0; + color: rgba(0, 0, 0, 0.87); + cursor: auto; + font-family: inherit; + font-size: 0.9375rem; + font-weight: normal; + height: 2.25rem; + outline: none; + padding: 0 0.75rem; + padding-left: 2.5rem; + transition: border 0.1s ease; + width: 100%; +} +.ui-select__search-input::-ms-clear { + display: none; +} +.ui-select__search-input:focus + .ui-select__search-icon { + color: #2196f3; +} +.ui-select__search .ui-select__search-icon, +.ui-select__search .ui-select__search-progress { + position: absolute; + top: 0.5rem; +} +.ui-select__search-icon { + color: rgba(0, 0, 0, 0.54); + font-size: 1.25rem; + left: 0.75rem; +} +.ui-select__search-progress { + right: 0.75rem; +} +.ui-select__options { + background-color: white; + color: rgba(0, 0, 0, 0.87); + display: block; + list-style-type: none; + margin: 0; + max-height: 16rem; + min-width: 100%; + overflow-y: auto; + padding: 0; + position: relative; +} +.ui-select__no-results { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + padding: 0.5rem 0.75rem; + width: 100%; +} +.ui-select__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0.25rem; + position: relative; +} +.ui-select--icon-position-right .ui-select__icon-wrapper { + margin-left: 0.5rem; + margin-right: 0; + -ms-flex-order: 1; + order: 1; +}.ui-slider { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + outline: none; +} +.ui-slider:not(.is-disabled).is-active:not(.has-marker) .ui-slider__thumb::before, .ui-slider:not(.is-disabled).is-dragging:not(.has-marker) .ui-slider__thumb::before { + transform: scale(1); +} +.ui-slider:not(.is-disabled).is-active .ui-slider__marker, .ui-slider:not(.is-disabled).is-dragging .ui-slider__marker { + opacity: 1; + transform: scale(1) translateY(-1.625rem); +} +.ui-slider:not(.is-disabled).is-active .ui-slider__marker-text, .ui-slider:not(.is-disabled).is-dragging .ui-slider__marker-text { + color: white; +} +.ui-slider:not(.is-disabled).is-active .ui-slider__snap-point, .ui-slider:not(.is-disabled).is-dragging .ui-slider__snap-point { + opacity: 1; +} +.ui-slider:not(.is-disabled).is-active .ui-slider__icon .ui-icon, .ui-slider:not(.is-disabled).is-dragging .ui-slider__icon .ui-icon { + color: #2196f3; +} +.ui-slider.is-disabled .ui-slider__icon { + opacity: 0.6; +} +.ui-slider.is-disabled .ui-slider__track { + cursor: default; +} +.ui-slider.is-disabled .ui-slider__track-fill { + background-color: transparent; +} +.ui-slider.is-disabled .ui-slider__thumb { + background-color: #ddd; + border: 0.125rem solid white; +} +.ui-slider__icon { + margin-right: 1rem; +} +.ui-slider__icon .ui-icon { + color: rgba(0, 0, 0, 0.54); + transition: color 0.2s ease; +} +.ui-slider__track { + -ms-flex-align: center; + align-items: center; + cursor: pointer; + display: -ms-flexbox; + display: flex; + height: 1.125rem; + margin: 0 auto; + position: relative; + width: 100%; +} +.ui-slider__track-background, +.ui-slider__track-fill { + content: ""; + display: block; + height: 0.1875rem; + left: 0; + position: absolute; + top: 0.46875rem; +} +.ui-slider__track-background { + background-color: rgba(0, 0, 0, 0.12); + width: 100%; +} +.ui-slider__snap-point { + background-color: rgba(0, 0, 0, 0.75); + height: 0.1875rem; + opacity: 0; + position: absolute; + transition: opacity 0.2s ease; + width: 0.125rem; + z-index: 1; +} +.ui-slider__track-fill { + background-color: #2196f3; + transform-origin: left; + width: 100%; +} +.ui-slider__thumb { + background-color: #2196f3; + border-radius: 50%; + cursor: inherit; + display: block; + height: 0.875rem; + left: 0; + position: relative; + width: 0.875rem; + z-index: 1; + margin-left: -0.4375rem; +} +.ui-slider__thumb::before { + background-color: rgba(33, 150, 243, 0.38); + border-radius: 50%; + content: ""; + display: block; + height: 2.25rem; + margin-left: -0.6875rem; + margin-top: -0.6875rem; + position: absolute; + transform-origin: center; + transform: scale(0); + transition: transform 0.2s ease; + width: 2.25rem; +} +.ui-slider__marker { + height: 2.25rem; + margin-left: -0.6875rem; + margin-top: -0.6875rem; + opacity: 0; + position: absolute; + transform: scale(0) translateY(0); + transition: all 0.2s ease; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 2.25rem; +} +.ui-slider__marker svg { + fill: #2196f3; + height: 2.25rem; + width: 2.25rem; +} +.ui-slider__marker-text { + color: #2196f3; + font-size: 0.8125rem; + font-weight: 600; + left: 0; + position: absolute; + text-align: center; + line-height: 1.8rem; + transition: color 0.2s ease; + width: 2.25rem; +} +.ui-slider--is-dragging { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +}.ui-snackbar { + -ms-flex-align: center; + align-items: center; + background-color: #323232; + border-radius: 0.125rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + display: -ms-inline-flexbox; + display: inline-flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + max-width: 35.5rem; + min-height: 3rem; + min-width: 18rem; + padding: 0.875rem 1.5rem; +} +.ui-snackbar__message { + color: white; + cursor: default; + font-size: 0.875rem; + line-height: 1.5; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-snackbar__action { + margin-left: auto; + margin: -0.5625rem -0.75rem; + padding-left: 3rem; +} +.ui-snackbar__action-button { + margin: 0; + min-height: initial; + min-width: initial; + padding: 0.75rem; +} +.ui-snackbar__action-button:hover:not(.is-disabled) { + background-color: rgba(255, 255, 255, 0.05); +} +body[modality=keyboard] .ui-snackbar__action-button:focus { + background-color: rgba(255, 255, 255, 0.1); +} +.ui-snackbar--transition-slide-enter-active, +.ui-snackbar--transition-slide-leave-active { + transition: transform 0.4s ease; +} +.ui-snackbar--transition-slide-enter-from, +.ui-snackbar--transition-slide-leave-active { + transform: translateY(5.25rem); +} +.ui-snackbar--transition-fade-enter-active, +.ui-snackbar--transition-fade-leave-active { + transition: opacity 0.4s ease; +} +.ui-snackbar--transition-fade-enter-from, +.ui-snackbar--transition-fade-leave-active { + opacity: 0; +}.ui-snackbar-container { + bottom: 0; + left: 0.5rem; + overflow: hidden; + pointer-events: none; + position: absolute; +} +.ui-snackbar-container .ui-snackbar { + margin: 0.25rem 0.25rem 0.75rem 0.25rem; + pointer-events: auto; +} +.ui-snackbar-container--position-right { + left: initial; + right: 0.5rem; +} +.ui-snackbar-container--position-center { + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + left: 0.5rem; + right: 0.5rem; +}.ui-switch { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + height: 2rem; + position: relative; +} +.ui-switch.is-checked .ui-switch__thumb { + transform: translateX(0.875rem); +} +.ui-switch.is-disabled .ui-switch__track { + background-color: rgba(0, 0, 0, 0.12); +} +.ui-switch.is-disabled .ui-switch__thumb { + background-color: #bdbdbd; + box-shadow: none; +} +.ui-switch.is-disabled .ui-switch__input-wrapper, +.ui-switch.is-disabled .ui-switch__label-text { + color: rgba(0, 0, 0, 0.38); + cursor: default; +} +.ui-switch__input-wrapper { + cursor: pointer; + height: 1.25rem; + position: relative; + width: 2.125rem; +} +.ui-switch__input { + opacity: 0; + position: absolute; +} +body[modality=keyboard] .ui-switch__input:focus + .ui-switch__thumb .ui-switch__focus-ring { + opacity: 1; + transform: scale(1); +} +.ui-switch__track { + background-color: rgba(0, 0, 0, 0.26); + border-radius: 0.5rem; + height: 0.875rem; + position: absolute; + top: 0.1875rem; + transition: background-color 0.1s linear; + width: 2.125rem; +} +.ui-switch__thumb { + background-color: #fafafa; + border-radius: 50%; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + height: 1.25rem; + position: absolute; + transition-duration: 0.2s; + transition-property: background-color, transform; + transition-timing-function: ease; + width: 1.25rem; +} +.ui-switch__focus-ring { + background-color: rgba(0, 0, 0, 0.1); + border-radius: 50%; + height: 2.625rem; + left: -0.6875rem; + opacity: 0; + position: absolute; + top: -0.6875rem; + transform: scale(0); + transition: background-color 0.2s ease, transform 0.15s ease, opacity 0.15s ease; + width: 2.625rem; + z-index: -1; +} +.ui-switch__label-text { + cursor: pointer; + font-size: 0.9375rem; + margin-left: 1rem; +} +.ui-switch--switch-position-right .ui-switch__label-text { + margin-left: 0; + margin-right: auto; + -ms-flex-order: -1; + order: -1; +} +.ui-switch--color-primary.is-checked:not(.is-disabled) .ui-switch__track { + background-color: rgba(33, 150, 243, 0.5); +} +.ui-switch--color-primary.is-checked:not(.is-disabled) .ui-switch__thumb { + background-color: #2196f3; +} +.ui-switch--color-primary.is-checked:not(.is-disabled) .ui-switch__focus-ring { + background-color: rgba(33, 150, 243, 0.2); +} +.ui-switch--color-accent.is-checked:not(.is-disabled) .ui-switch__track { + background-color: rgba(213, 0, 249, 0.5); +} +.ui-switch--color-accent.is-checked:not(.is-disabled) .ui-switch__thumb { + background-color: #d500f9; +} +.ui-switch--color-accent.is-checked:not(.is-disabled) .ui-switch__focus-ring { + background-color: rgba(213, 0, 249, 0.2); +}.ui-tab { + outline: none; +}.ui-tab-header-item { + -ms-flex-align: center; + align-items: center; + cursor: pointer; + display: -ms-flexbox; + display: flex; + font-family: inherit; + height: 3rem; + -ms-flex-pack: center; + justify-content: center; + min-width: 5rem; + padding: 0 0.75rem; + position: relative; + text-transform: uppercase; + transition: color 0.1s; +} +.ui-tab-header-item.is-active::after { + opacity: 1; + transform: scaleX(1); +} +.ui-tab-header-item.is-disabled { + cursor: default; + opacity: 0.4; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ui-tab-header-item--type-icon-and-text { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + height: 4.5rem; +} +.ui-tab-header-item--type-icon-and-text .ui-tab-header-item__icon { + margin-bottom: 0.25rem; +} +.ui-tab-header-item__text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font-size: 0.9375rem; + font-weight: 600; +} +.ui-tab-header-item__icon { + height: 1.5rem; + width: 1.5rem; + color: currentColor; +} +.ui-tab-header-item__icon .ui-icon { + cursor: inherit; +} +.ui-tab-header-item::after { + bottom: 0; + content: ""; + height: 0.1875rem; + left: 0; + opacity: 0; + position: absolute; + transform: scaleX(0); + transition: opacity 0.2s ease, transform 0.2s ease; + width: 100%; +} +.ui-tabs--indicator-color-primary .ui-tab-header-item::after { + background-color: #2196f3; +} +.ui-tabs--indicator-color-accent .ui-tab-header-item::after { + background-color: #d500f9; +} +.ui-tabs--indicator-color-white .ui-tab-header-item::after { + background-color: white; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16); +}.ui-tabs { + margin-bottom: 1.5rem; + width: 100%; +} +.ui-tabs.is-fullwidth .ui-tab-header-item { + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-tabs.is-raised { + border: none; + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); +} +.ui-tabs.is-raised .ui-tabs__body { + border: none; +} +.ui-tabs__header { + position: relative; + width: 100%; +} +.ui-tabs__header-items { + display: -ms-flexbox; + display: flex; + list-style: none; + margin: 0; + padding: 0; + position: relative; +} +.ui-tabs__body { + background-color: white; + border-radius: 0; + border: 0.0625rem solid #eeeeee; + border-top: 0; + margin: 0; + padding: 1rem; +} +.ui-tabs--background-color-default .ui-tabs__header { + background-color: #eeeeee; +} +body[modality=keyboard] .ui-tabs--background-color-default .ui-tab-header-item:focus { + outline: 1px solid #2196f3; +} +body[modality=keyboard] .ui-tabs--background-color-primary .ui-tab-header-item:focus, +body[modality=keyboard] .ui-tabs--background-color-accent .ui-tab-header-item:focus, +body[modality=keyboard] .ui-tabs--background-color-clear .ui-tab-header-item:focus { + outline: 1px solid white; +} +.ui-tabs--background-color-primary .ui-ripple-ink__ink.is-held, +.ui-tabs--background-color-accent .ui-ripple-ink__ink.is-held, +.ui-tabs--background-color-clear .ui-ripple-ink__ink.is-held { + opacity: 0.7; +} +.ui-tabs--background-color-primary .ui-tabs__header { + background-color: #2196f3; +} +.ui-tabs--background-color-accent .ui-tabs__header { + background-color: #d500f9; +} +.ui-tabs--background-color-clear .ui-tabs__header { + background-color: transparent; +} +.ui-tabs--background-color-clear .ui-tabs__header + .ui-tabs__body { + border-top: 1px solid rgba(0, 0, 0, 0.12); +} +.ui-tabs--text-color-black .ui-tab-header-item { + color: rgba(0, 0, 0, 0.54); +} +.ui-tabs--text-color-black .ui-tab-header-item:hover:not(.is-disabled):not(.is-active) { + color: rgba(0, 0, 0, 0.87); +} +.ui-tabs--text-color-white .ui-tab-header-item { + color: rgba(255, 255, 255, 0.65); +} +.ui-tabs--text-color-white .ui-tab-header-item:hover:not(.is-disabled):not(.is-active) { + color: white; +} +.ui-tabs--text-color-active-white .ui-tab-header-item.is-active { + color: white; +} +.ui-tabs--text-color-active-primary .ui-tab-header-item.is-active { + color: #2196f3; +} +.ui-tabs--text-color-active-accent .ui-tab-header-item.is-active { + color: #d500f9; +}.ui-textbox { + -ms-flex-align: start; + align-items: flex-start; + display: -ms-flexbox; + display: flex; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + margin-bottom: 1rem; +} +.ui-textbox:hover:not(.is-disabled) .ui-textbox__label-text { + color: rgba(0, 0, 0, 0.75); +} +.ui-textbox:hover:not(.is-disabled) .ui-textbox__input, +.ui-textbox:hover:not(.is-disabled) .ui-textbox__textarea { + border-bottom-color: rgba(0, 0, 0, 0.3); +} +.ui-textbox.is-active:not(.is-disabled) .ui-textbox__input, +.ui-textbox.is-active:not(.is-disabled) .ui-textbox__textarea { + border-bottom-color: #2196f3; + border-bottom-width: 2px; +} +.ui-textbox.is-active:not(.is-disabled) .ui-textbox__label-text, +.ui-textbox.is-active:not(.is-disabled) .ui-textbox__icon-wrapper .ui-icon { + color: #2196f3; +} +.ui-textbox.has-label .ui-textbox__icon-wrapper { + padding-top: 1.5rem; +} +.ui-textbox.has-counter .ui-textbox__feedback-text { + padding-right: 3rem; +} +.ui-textbox.has-floating-label .ui-textbox__label-text { + display: table; + width: -moz-fit-content; + width: fit-content; +} +.ui-textbox.has-floating-label .ui-textbox__label-text.is-inline { + color: rgba(0, 0, 0, 0.54); + cursor: text; + transform: translateY(1.625rem) scale(1.1); +} +.ui-textbox.has-floating-label .ui-textbox__label-text.is-floating { + transform: translateY(0) scale(1); +} +.ui-textbox.has-floating-label .ui-textbox__label > input:-webkit-autofill + .ui-textbox__label-text.is-inline { + transform: translateY(0) scale(1); +} +.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__label-text, +.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__icon-wrapper .ui-icon, +.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__counter { + color: #f44336; +} +.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__input, +.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__textarea { + border-bottom-color: #f44336; +} +.ui-textbox.is-invalid:not(.is-disabled) .ui-textbox__feedback { + color: #f44336; +} +.ui-textbox.is-disabled .ui-textbox__input, +.ui-textbox.is-disabled .ui-textbox__textarea { + border-bottom-style: dotted; + border-bottom-width: 2px; + color: rgba(0, 0, 0, 0.38); +} +.ui-textbox.is-disabled .ui-textbox__icon-wrapper .ui-icon { + opacity: 0.6; +} +.ui-textbox.is-disabled .ui-textbox__feedback { + opacity: 0.8; +} +.ui-textbox__label { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; + margin: 0; + padding: 0; + width: 100%; +} +.ui-textbox__icon-wrapper { + -ms-flex-negative: 0; + flex-shrink: 0; + margin-right: 0.75rem; + padding-top: 0.25rem; +} +.ui-textbox__icon-wrapper .ui-icon { + color: rgba(0, 0, 0, 0.54); +} +.ui-textbox__content { + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-textbox__label-text { + color: rgba(0, 0, 0, 0.54); + cursor: default; + font-size: 0.9375rem; + line-height: normal; + margin-bottom: 0; + transform-origin: left; + transition: color 0.1s ease, transform 0.2s ease; +} +.ui-textbox__input, +.ui-textbox__textarea { + background: none; + border: none; + border-bottom-color: rgba(0, 0, 0, 0.12); + border-bottom-style: solid; + border-bottom-width: 1px; + border-radius: 0; + color: rgba(0, 0, 0, 0.87); + cursor: auto; + display: block; + font-family: inherit; + font-size: 1rem; + font-weight: normal; + margin: 0; + outline: none; + padding: 0; + transition: border 0.1s ease; + width: 100%; +} +.ui-textbox__input { + height: 2rem; +} +.ui-textbox__textarea { + overflow-x: hidden; + overflow-y: auto; + padding-bottom: 0.375rem; + resize: vertical; +} +.ui-textbox__feedback { + color: rgba(0, 0, 0, 0.54); + font-size: 0.875rem; + line-height: 1.2; + margin: 0; + padding-top: 0.25rem; + position: relative; +} +.ui-textbox__counter { + position: absolute; + right: 0; + top: 0.25rem; +} +.ui-textbox--icon-position-right .ui-textbox__icon-wrapper { + margin-left: 0.5rem; + margin-right: 0; + -ms-flex-order: 1; + order: 1; +}.ui-toolbar { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + font-family: inherit; + font-size: 1.125rem; + height: 3.5rem; + padding-left: 1rem; + position: relative; +} +.ui-toolbar.is-raised { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); +} +.ui-toolbar:not(.is-raised).ui-toolbar--type-default { + border-bottom: 0.0625rem solid rgba(0, 0, 0, 0.12); +} +.ui-toolbar .ui-icon-button { + height: 3rem; + width: 3rem; +} +.ui-toolbar__left { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + -ms-flex-negative: 0; + flex-shrink: 0; +} +.ui-toolbar__nav-icon { + margin-left: -1rem; + margin-right: 0.5rem; +} +.ui-toolbar__brand { + min-width: 10rem; +} +.ui-toolbar__brand-text { + -ms-flex-positive: 1; + flex-grow: 1; + padding-right: 0.5rem; +} +.ui-toolbar__body { + display: -ms-flexbox; + display: flex; + -ms-flex-positive: 1; + flex-grow: 1; +} +.ui-toolbar__body.has-brand-divider { + border-left-style: solid; + border-left-width: 0.0625rem; + padding-left: 1.5rem; +} +.ui-toolbar__right { + -ms-flex-negative: 0; + flex-shrink: 0; + margin-left: auto; +} +.ui-toolbar__progress { + bottom: 0; + height: 0.1875rem; + left: 0; + position: absolute; + right: 0; +} +.ui-toolbar--type-default { + background-color: white; +} +.ui-toolbar--type-colored { + background-color: #2196f3; +} +.ui-toolbar--type-clear { + background-color: transparent; + border: none; + box-shadow: none; +} +.ui-toolbar--text-color-black { + color: rgba(0, 0, 0, 0.87); +} +.ui-toolbar--text-color-black .ui-toolbar__body { + border-left-color: rgba(0, 0, 0, 0.15); +} +.ui-toolbar--text-color-white { + color: white; +} +.ui-toolbar--text-color-white .ui-toolbar__body { + border-color: rgba(255, 255, 255, 0.4); +} +.ui-toolbar--progress-position-top .ui-toolbar__progress { + top: 0; } \ No newline at end of file diff --git a/dist/keen-ui.esm.js b/dist/keen-ui.esm.js new file mode 100644 index 00000000..cb143cb9 --- /dev/null +++ b/dist/keen-ui.esm.js @@ -0,0 +1,10012 @@ +/*! + * Keen UI v1.4.0 (https://github.com/JosephusPaye/keen-ui) + * (c) 2023 Josephus Paye II + * Released under the MIT License. + */ +import { openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, createTextVNode, toDisplayString, resolveComponent, createVNode, withCtx, createBlock, createCommentVNode, Transition, normalizeStyle, resolveDirective, withDirectives, vShow, withKeys, withModifiers, Fragment, renderList, resolveDynamicComponent, createSlots, vModelText, h } from "vue"; +document.addEventListener("DOMContentLoaded", () => { + let hadKeyboardEvent = false; + const keyboardModalityWhitelist = [ + "input:not([type])", + "input[type=text]", + "input[type=number]", + "input[type=date]", + "input[type=time]", + "input[type=datetime]", + "textarea", + "[role=textbox]", + "[supports-modality=keyboard]" + ].join(","); + let isHandlingKeyboardThrottle; + const matcher = (() => { + const el = document.body; + if (el.matchesSelector) { + return el.matchesSelector; + } + if (el.webkitMatchesSelector) { + return el.webkitMatchesSelector; + } + if (el.mozMatchesSelector) { + return el.mozMatchesSelector; + } + if (el.msMatchesSelector) { + return el.msMatchesSelector; + } + console.error("Couldn't find any matchesSelector method on document.body."); + })(); + const disableFocusRingByDefault = function() { + const css = "body:not([modality=keyboard]) :focus { outline: none; }"; + const head = document.head || document.getElementsByTagName("head")[0]; + const style = document.createElement("style"); + style.type = "text/css"; + style.id = "disable-focus-ring"; + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } + head.insertBefore(style, head.firstChild); + }; + const focusTriggersKeyboardModality = function(el) { + let triggers = false; + if (matcher) { + triggers = matcher.call(el, keyboardModalityWhitelist) && matcher.call(el, ":not([readonly])"); + } + return triggers; + }; + disableFocusRingByDefault(); + document.body.addEventListener("keydown", () => { + hadKeyboardEvent = true; + if (isHandlingKeyboardThrottle) { + clearTimeout(isHandlingKeyboardThrottle); + } + isHandlingKeyboardThrottle = setTimeout(() => { + hadKeyboardEvent = false; + }, 100); + }, true); + document.body.addEventListener("focus", (e) => { + if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) { + document.body.setAttribute("modality", "keyboard"); + } + }, true); + document.body.addEventListener("blur", () => { + document.body.removeAttribute("modality"); + }, true); +}); +var isMergeableObject = function isMergeableObject2(value) { + return isNonNullObject(value) && !isSpecial(value); +}; +function isNonNullObject(value) { + return !!value && typeof value === "object"; +} +function isSpecial(value) { + var stringValue = Object.prototype.toString.call(value); + return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value); +} +var canUseSymbol = typeof Symbol === "function" && Symbol.for; +var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103; +function isReactElement(value) { + return value.$$typeof === REACT_ELEMENT_TYPE; +} +function emptyTarget(val) { + return Array.isArray(val) ? [] : {}; +} +function cloneUnlessOtherwiseSpecified(value, optionsArgument) { + var clone2 = !optionsArgument || optionsArgument.clone !== false; + return clone2 && isMergeableObject(value) ? deepmerge(emptyTarget(value), value, optionsArgument) : value; +} +function defaultArrayMerge(target, source, optionsArgument) { + return target.concat(source).map(function(element) { + return cloneUnlessOtherwiseSpecified(element, optionsArgument); + }); +} +function mergeObject(target, source, optionsArgument) { + var destination = {}; + if (isMergeableObject(target)) { + Object.keys(target).forEach(function(key) { + destination[key] = cloneUnlessOtherwiseSpecified(target[key], optionsArgument); + }); + } + Object.keys(source).forEach(function(key) { + if (!isMergeableObject(source[key]) || !target[key]) { + destination[key] = cloneUnlessOtherwiseSpecified(source[key], optionsArgument); + } else { + destination[key] = deepmerge(target[key], source[key], optionsArgument); + } + }); + return destination; +} +function deepmerge(target, source, optionsArgument) { + var sourceIsArray = Array.isArray(source); + var targetIsArray = Array.isArray(target); + var options = optionsArgument || { arrayMerge: defaultArrayMerge }; + var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; + if (!sourceAndTargetTypesMatch) { + return cloneUnlessOtherwiseSpecified(source, optionsArgument); + } else if (sourceIsArray) { + var arrayMerge = options.arrayMerge || defaultArrayMerge; + return arrayMerge(target, source, optionsArgument); + } else { + return mergeObject(target, source, optionsArgument); + } +} +deepmerge.all = function deepmergeAll(array, optionsArgument) { + if (!Array.isArray(array)) { + throw new Error("first argument should be an array"); + } + return array.reduce(function(prev, next) { + return deepmerge(prev, next, optionsArgument); + }, {}); +}; +var deepmerge_1 = deepmerge; +function configure(Component, props) { + Object.keys(props).forEach((propName) => { + if (Component.props[propName] === void 0) { + return; + } + const defaultValue = Component.props[propName].default; + if (typeof defaultValue === "object") { + Component.props[propName].default = deepmerge_1(defaultValue, props[propName]); + return; + } + Component.props[propName].default = props[propName]; + }); +} +function isObject(obj) { + return obj !== null && typeof obj === "object"; +} +function looseEqual(a, b) { + return a == b || (isObject(a) && isObject(b) ? JSON.stringify(a) === JSON.stringify(b) : false); +} +function looseIndexOf(arr, val) { + for (let i = 0; i < arr.length; i++) { + if (looseEqual(arr[i], val)) { + return i; + } + } + return -1; +} +function startsWith(string, query, position = 0) { + return string.substr(position, query.length) === query; +} +const UiIcon_vue_vue_type_style_index_0_lang = ""; +const _export_sfc = (sfc, props) => { + const target = sfc.__vccOpts || sfc; + for (const [key, val] of props) { + target[key] = val; + } + return target; +}; +const _sfc_main$F = { + name: "UiIcon", + props: { + icon: String, + iconSet: { + type: String, + default: "material-icons" + }, + ariaLabel: String, + removeText: { + type: Boolean, + default: false + }, + useSvg: { + type: Boolean, + default: false + } + } +}; +const _hoisted_1$D = ["aria-label"]; +const _hoisted_2$w = { + key: 0, + class: "ui-icon__svg" +}; +const _hoisted_3$s = ["xlink:href"]; +function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock("span", { + class: normalizeClass(["ui-icon", [$props.iconSet, $props.icon]]), + "aria-label": $props.ariaLabel + }, [ + $props.useSvg ? (openBlock(), createElementBlock("svg", _hoisted_2$w, [ + createElementVNode("use", { + "xmlns:xlink": "http://www.w3.org/1999/xlink", + "xlink:href": "#" + $props.icon + }, null, 8, _hoisted_3$s) + ])) : renderSlot(_ctx.$slots, "default", { key: 1 }, () => [ + createTextVNode(toDisplayString($props.removeText ? null : $props.icon), 1) + ]) + ], 10, _hoisted_1$D); +} +const UiIcon = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$F], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiIcon.vue"]]); +const trim = /^\s+|\s+$/g; +const whitespace = /\s+/g; +function interpret(input) { + return typeof input === "string" ? input.replace(trim, "").split(whitespace) : input; +} +function classes(el) { + if (isElement(el)) { + return (el.getAttribute("class") || "").replace(trim, "").split(whitespace); + } + return []; +} +function set(el, input) { + if (isElement(el)) { + el.setAttribute("class", interpret(input).join(" ")); + } +} +function add(el, input) { + const current = remove(el, input); + const values = interpret(input); + current.push.apply(current, values); + set(el, current); + return current; +} +function remove(el, input) { + const current = classes(el); + const values = interpret(input); + values.forEach((value) => { + const i = current.indexOf(value); + if (i !== -1) { + current.splice(i, 1); + } + }); + set(el, current); + return current; +} +function contains(el, input) { + const current = classes(el); + const values = interpret(input); + return values.every((value) => { + return current.indexOf(value) !== -1; + }); +} +function isElement(o) { + const elementObjects = typeof HTMLElement === "object"; + return elementObjects ? o instanceof HTMLElement : isElementObject(o); +} +function isElementObject(o) { + return o && typeof o === "object" && typeof o.nodeName === "string" && o.nodeType === 1; +} +const classlist = { + add, + remove, + contains, + has: contains, + set, + get: classes +}; +function validate(ref, warning) { + const isValid = ref instanceof Element || ref && ref._isVue || typeof ref === "string"; + if (!isValid && warning) { + console.warn(warning); + } + return isValid; +} +function resolve(ref, fallback) { + if (ref instanceof Element) { + return ref; + } else if (ref && ref._isVue) { + return ref.$el; + } else if (typeof ref === "string") { + return document.querySelector(ref); + } + return fallback; +} +const elementRef = { + validate, + resolve +}; +const UiRippleInk_vue_vue_type_style_index_0_lang = ""; +const startRipple = function(eventType, event) { + let holder = event.currentTarget || event.target; + if (holder && !classlist.has(holder, "ui-ripple-ink")) { + holder = holder.querySelector(".ui-ripple-ink"); + } + if (!holder) { + return; + } + const prev = holder.getAttribute("data-ui-event"); + if (prev && prev !== eventType) { + return; + } + holder.setAttribute("data-ui-event", eventType); + const rect = holder.getBoundingClientRect(); + const x = event.clientX - rect.left; + const y = event.clientY - rect.top; + const ripple = document.createElement("div"); + let max; + if (rect.width === rect.height) { + max = rect.width * 1.412; + } else { + max = Math.sqrt(rect.width * rect.width + rect.height * rect.height); + } + const size = max * 2 + "px"; + ripple.style.width = size; + ripple.style.height = size; + ripple.style.marginLeft = -max + x + "px"; + ripple.style.marginTop = -max + y + "px"; + ripple.className = "ui-ripple-ink__ink"; + holder.appendChild(ripple); + setTimeout(() => { + classlist.add(ripple, "is-held"); + }, 0); + const releaseEvent = eventType === "mousedown" ? "mouseup" : "touchend"; + const handleRelease = function() { + document.removeEventListener(releaseEvent, handleRelease); + classlist.add(ripple, "is-done"); + const timeout = 650; + setTimeout(() => { + holder.removeChild(ripple); + if (holder.children.length === 0) { + holder.removeAttribute("data-ui-event"); + } + }, timeout); + }; + document.addEventListener(releaseEvent, handleRelease); +}; +const handleMouseDown = function(e) { + if (e.button === 0) { + startRipple(e.type, e); + } +}; +const handleTouchStart = function(e) { + if (e.changedTouches) { + for (let i = 0; i < e.changedTouches.length; ++i) { + startRipple(e.type, e.changedTouches[i]); + } + } +}; +const _sfc_main$E = { + name: "UiRippleInk", + props: { + trigger: { + validator(value) { + return elementRef.validate( + value, + '[UiRippleInk]: Invalid prop: "trigger". Expected Element, VueComponent or CSS selector string.' + ); + } + } + }, + watch: { + trigger() { + this.setupRipple(); + } + }, + created() { + this.triggerEl = null; + }, + mounted() { + this.setupRipple(); + }, + beforeUnmount() { + this.destroyRipple(); + }, + methods: { + setupRipple() { + this.triggerEl = elementRef.resolve(this.trigger, this.$el.parentElement); + if (!this.triggerEl) { + console.error("[UiRippleInk]: Trigger element not found."); + return; + } + this.triggerEl.addEventListener("touchstart", handleTouchStart, { passive: true }); + this.triggerEl.addEventListener("mousedown", handleMouseDown); + }, + destroyRipple() { + if (!this.triggerEl) { + return; + } + this.triggerEl.removeEventListener("mousedown", handleMouseDown); + this.triggerEl.removeEventListener("touchstart", handleTouchStart); + } + } +}; +const _hoisted_1$C = { class: "ui-ripple-ink" }; +function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock("div", _hoisted_1$C); +} +const UiRippleInk = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$E], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiRippleInk.vue"]]); +const UiCloseButton_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$D = { + name: "UiCloseButton", + components: { + UiIcon, + UiRippleInk + }, + props: { + size: { + type: String, + default: "normal" + }, + color: { + type: String, + default: "black" + }, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + computed: { + classes() { + return [ + `ui-close-button--size-${this.size}`, + `ui-close-button--color-${this.color}`, + { "is-disabled": this.disabled } + ]; + } + } +}; +const _hoisted_1$B = ["disabled"]; +const _hoisted_2$v = { class: "ui-close-button__icon" }; +const _hoisted_3$r = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M18.984 6.422L13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578z" }) +], -1); +const _hoisted_4$i = /* @__PURE__ */ createElementVNode("span", { class: "ui-close-button__focus-ring" }, null, -1); +function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_ripple_ink = resolveComponent("ui-ripple-ink"); + return openBlock(), createElementBlock("button", { + "aria-label": "Close", + class: normalizeClass(["ui-close-button", $options.classes]), + type: "button", + disabled: $props.disabled + }, [ + createElementVNode("div", _hoisted_2$v, [ + createVNode(_component_ui_icon, null, { + default: withCtx(() => [ + _hoisted_3$r + ]), + _: 1 + }) + ]), + _hoisted_4$i, + !$props.disableRipple && !$props.disabled ? (openBlock(), createBlock(_component_ui_ripple_ink, { key: 0 })) : createCommentVNode("v-if", true) + ], 10, _hoisted_1$B); +} +const UiCloseButton = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$D], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCloseButton.vue"]]); +const UiAlert_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$C = { + name: "UiAlert", + components: { + UiCloseButton, + UiIcon + }, + props: { + type: { + type: String, + default: "info" + }, + removeIcon: { + type: Boolean, + default: false + }, + disableAnimation: { + type: Boolean, + default: false + }, + dismissible: { + type: Boolean, + default: true + } + }, + emits: ["dismiss"], + computed: { + classes() { + return [`ui-alert--type-${this.type}`, { "has-no-transition": this.disableAnimation }]; + } + }, + methods: { + dismissAlert() { + this.$emit("dismiss"); + } + } +}; +const _hoisted_1$A = { class: "ui-alert__body" }; +const _hoisted_2$u = { + key: 0, + class: "ui-alert__icon" +}; +const _hoisted_3$q = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M12.984 9V6.984h-1.97V9h1.97zm0 8.016v-6h-1.97v6h1.97zm-.984-15c5.53 0 9.984 4.453 9.984 9.984S17.53 21.984 12 21.984 2.016 17.53 2.016 12 6.47 2.016 12 2.016z" }) +], -1); +const _hoisted_4$h = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M9.984 17.016l9-9-1.406-1.453-7.594 7.594-3.563-3.563L5.016 12zm2.016-15c5.53 0 9.984 4.453 9.984 9.984S17.53 21.984 12 21.984 2.016 17.53 2.016 12 6.47 2.016 12 2.016z" }) +], -1); +const _hoisted_5$f = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M12.984 14.016v-4.03h-1.97v4.03h1.97zm0 3.984v-2.016h-1.97V18h1.97zm-12 3L12 2.016 23.016 21H.986z" }) +], -1); +const _hoisted_6$b = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M12.984 12.984v-6h-1.97v6h1.97zm0 4.032V15h-1.97v2.016h1.97zm-.984-15c5.53 0 9.984 4.453 9.984 9.984S17.53 21.984 12 21.984 2.016 17.53 2.016 12 6.47 2.016 12 2.016z" }) +], -1); +const _hoisted_7$5 = { class: "ui-alert__content" }; +const _hoisted_8$4 = { class: "ui-alert__dismiss-button" }; +function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_close_button = resolveComponent("ui-close-button"); + return openBlock(), createBlock(Transition, { + name: $props.disableAnimation ? null : "ui-alert--transition-toggle" + }, { + default: withCtx(() => [ + createElementVNode("div", { + class: normalizeClass(["ui-alert", $options.classes]), + role: "alert" + }, [ + createElementVNode("div", _hoisted_1$A, [ + !$props.removeIcon ? (openBlock(), createElementBlock("div", _hoisted_2$u, [ + renderSlot(_ctx.$slots, "icon", {}, () => [ + $props.type === "info" ? (openBlock(), createBlock(_component_ui_icon, { key: 0 }, { + default: withCtx(() => [ + _hoisted_3$q + ]), + _: 1 + })) : createCommentVNode("v-if", true), + $props.type === "success" ? (openBlock(), createBlock(_component_ui_icon, { key: 1 }, { + default: withCtx(() => [ + _hoisted_4$h + ]), + _: 1 + })) : createCommentVNode("v-if", true), + $props.type === "warning" ? (openBlock(), createBlock(_component_ui_icon, { key: 2 }, { + default: withCtx(() => [ + _hoisted_5$f + ]), + _: 1 + })) : createCommentVNode("v-if", true), + $props.type === "error" ? (openBlock(), createBlock(_component_ui_icon, { key: 3 }, { + default: withCtx(() => [ + _hoisted_6$b + ]), + _: 1 + })) : createCommentVNode("v-if", true) + ]) + ])) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_7$5, [ + renderSlot(_ctx.$slots, "default") + ]), + createElementVNode("div", _hoisted_8$4, [ + $props.dismissible ? (openBlock(), createBlock(_component_ui_close_button, { + key: 0, + size: "small", + onClick: $options.dismissAlert + }, null, 8, ["onClick"])) : createCommentVNode("v-if", true) + ]) + ]) + ], 2) + ]), + _: 3 + }, 8, ["name"]); +} +const UiAlert = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$C], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiAlert.vue"]]); +const autofocus = { + mounted(el, { value }) { + if (value) { + el.focus(); + } + } +}; +const UiAutocompleteSuggestion_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$B = { + name: "UiAutocompleteSuggestion", + props: { + suggestion: { + type: [String, Object], + required: true + }, + type: { + type: String, + default: "simple" + }, + highlighted: { + type: Boolean, + default: false + }, + keys: { + type: Object, + default() { + return { + label: "label", + image: "image" + }; + } + } + }, + computed: { + classes() { + return [ + "ui-autocomplete-suggestion--type-" + this.type, + { "is-highlighted": this.highlighted } + ]; + }, + imageStyle() { + return { "background-image": "url(" + this.suggestion[this.keys.image] + ")" }; + } + } +}; +const _hoisted_1$z = { + key: 0, + class: "ui-autocomplete-suggestion__simple" +}; +const _hoisted_2$t = { + key: 1, + class: "ui-autocomplete-suggestion__image" +}; +const _hoisted_3$p = { class: "ui-autocomplete-suggestion__image-text" }; +function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock("li", { + class: normalizeClass(["ui-autocomplete-suggestion", $options.classes]) + }, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + $props.type === "simple" ? (openBlock(), createElementBlock("div", _hoisted_1$z, toDisplayString($props.suggestion[$props.keys.label] || $props.suggestion), 1)) : createCommentVNode("v-if", true), + $props.type === "image" ? (openBlock(), createElementBlock("div", _hoisted_2$t, [ + createElementVNode("div", { + class: "ui-autocomplete-suggestion__image-object", + style: normalizeStyle($options.imageStyle) + }, null, 4), + createElementVNode("div", _hoisted_3$p, toDisplayString($props.suggestion[$props.keys.label]), 1) + ])) : createCommentVNode("v-if", true) + ]) + ], 2); +} +const UiAutocompleteSuggestion = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$B], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiAutocompleteSuggestion.vue"]]); +var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; +function fuzzysearch(needle, haystack) { + var tlen = haystack.length; + var qlen = needle.length; + if (qlen > tlen) { + return false; + } + if (qlen === tlen) { + return needle === haystack; + } + outer: + for (var i = 0, j = 0; i < qlen; i++) { + var nch = needle.charCodeAt(i); + while (j < tlen) { + if (haystack.charCodeAt(j++) === nch) { + continue outer; + } + } + return false; + } + return true; +} +var fuzzysearch_1 = fuzzysearch; +const UiAutocomplete_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$A = { + name: "UiAutocomplete", + components: { + UiAutocompleteSuggestion, + UiIcon + }, + directives: { + autofocus + }, + props: { + name: String, + placeholder: String, + tabindex: [String, Number], + modelValue: { + type: [String, Number], + default: "" + }, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + label: String, + floatingLabel: { + type: Boolean, + default: false + }, + help: String, + error: String, + readonly: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + type: { + type: String, + default: "simple" + }, + suggestions: { + type: Array, + default() { + return []; + } + }, + limit: { + type: Number, + default: 8 + }, + append: { + type: Boolean, + default: false + }, + appendDelimiter: { + type: String, + default: ", " + }, + minChars: { + type: Number, + default: 2 + }, + showOnUpDown: { + type: Boolean, + default: true + }, + autofocus: { + type: Boolean, + default: false + }, + filter: Function, + sort: Function, + highlightOnFirstMatch: { + type: Boolean, + default: true + }, + cycleHighlight: { + type: Boolean, + default: true + }, + keys: { + type: Object, + default() { + return { + label: "label", + value: "value", + image: "image" + }; + } + }, + invalid: { + type: Boolean, + default: false + } + }, + emits: [ + "update:modelValue", + "select", + "highlight-overflow", + "highlight", + "dropdown-open", + "dropdown-close", + "focus", + "change", + "blur", + "touch" + ], + data() { + return { + initialValue: this.modelValue, + isActive: false, + isTouched: false, + showDropdown: false, + highlightedIndex: -1 + }; + }, + computed: { + classes() { + return [ + `ui-autocomplete--type-${this.type}`, + `ui-autocomplete--icon-position-${this.iconPosition}`, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-touched": this.isTouched }, + { "is-disabled": this.disabled }, + { "has-label": this.hasLabel }, + { "has-floating-label": this.hasFloatingLabel } + ]; + }, + labelClasses() { + return { + "is-inline": this.hasFloatingLabel && this.isLabelInline, + "is-floating": this.hasFloatingLabel && !this.isLabelInline + }; + }, + hasLabel() { + return Boolean(this.label) || Boolean(this.$slots.default); + }, + hasFloatingLabel() { + return this.hasLabel && this.floatingLabel; + }, + isLabelInline() { + return this.valueLength === 0 && !this.isActive; + }, + valueLength() { + return this.modelValue ? this.modelValue.length : 0; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + }, + matchingSuggestions() { + const suggestions = this.suggestions.filter((suggestion) => { + if (this.filter) { + return this.filter(suggestion, this.modelValue, this.defaultFilter); + } + const query = this.modelValue === null ? "" : this.modelValue; + return this.defaultFilter(suggestion, query); + }); + if (this.sort) { + suggestions.sort(this.sort.bind(this)); + } + return suggestions.slice(0, this.limit); + } + }, + watch: { + modelValue() { + if (this.isActive && this.valueLength >= this.minChars) { + this.openDropdown(); + } + this.highlightedIndex = this.highlightOnFirstMatch ? 0 : -1; + } + }, + created() { + if (this.modelValue === null) { + this.initialValue = ""; + this.updateValue(""); + } + }, + mounted() { + document.addEventListener("click", this.onExternalClick); + }, + beforeUnmount() { + document.removeEventListener("click", this.onExternalClick); + }, + methods: { + defaultFilter(suggestion, query) { + const text = suggestion[this.keys.label] || suggestion; + if (typeof query === "string") { + query = query.toLowerCase(); + } + return fuzzysearch_1(query, text.toLowerCase()); + }, + selectSuggestion(suggestion) { + let value; + if (this.append) { + value += this.appendDelimiter + (suggestion[this.keys.value] || suggestion); + } else { + value = suggestion[this.keys.value] || suggestion; + } + this.updateValue(value); + this.$emit("select", suggestion); + this.$nextTick(() => { + this.closeDropdown(); + this.$refs.input.focus(); + }); + }, + highlightSuggestion(index) { + const firstIndex = 0; + const lastIndex = this.$refs.suggestions.length - 1; + if (index === -2) { + index = lastIndex; + } else if (index < firstIndex) { + index = this.cycleHighlight ? lastIndex : index; + } else if (index > lastIndex) { + index = this.cycleHighlight ? firstIndex : -1; + } + this.highlightedIndex = index; + if (this.showOnUpDown) { + this.openDropdown(); + } + if (index < firstIndex || index > lastIndex) { + this.$emit("highlight-overflow", index); + } else { + this.$emit("highlight", this.$refs.suggestions[index].suggestion, index); + } + }, + selectHighlighted(index, e) { + if (this.showDropdown && this.$refs.suggestions.length > 0) { + e.preventDefault(); + this.selectSuggestion(this.$refs.suggestions[index].suggestion); + } + }, + focus() { + this.$refs.input.focus(); + }, + openDropdown() { + if (!this.showDropdown) { + this.showDropdown = true; + this.$emit("dropdown-open"); + } + }, + closeDropdown() { + if (this.showDropdown) { + this.$nextTick(() => { + this.showDropdown = false; + this.highlightedIndex = -1; + this.$emit("dropdown-close"); + }); + } + }, + updateValue(value) { + this.$emit("update:modelValue", value); + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onChange(e) { + this.$emit("change", this.modelValue, e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + if (!this.isTouched) { + this.isTouched = true; + this.$emit("touch"); + } + }, + onExternalClick(e) { + if (!this.$el.contains(e.target) && this.showDropdown) { + this.closeDropdown(); + } + }, + reset() { + if (document.activeElement === this.$refs.input) { + document.activeElement.blur(); + } + this.updateValue(this.initialValue); + this.isTouched = false; + } + } +}; +const _hoisted_1$y = { + key: 0, + class: "ui-autocomplete__icon-wrapper" +}; +const _hoisted_2$s = { class: "ui-autocomplete__content" }; +const _hoisted_3$o = { class: "ui-autocomplete__label" }; +const _hoisted_4$g = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M18.984 6.422L13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578z" }) +], -1); +const _hoisted_5$e = ["disabled", "name", "placeholder", "readonly", "tabindex", "value"]; +const _hoisted_6$a = { class: "ui-autocomplete__suggestions" }; +const _hoisted_7$4 = { + key: 0, + class: "ui-autocomplete__feedback" +}; +const _hoisted_8$3 = { + key: 0, + class: "ui-autocomplete__feedback-text" +}; +const _hoisted_9$3 = { + key: 1, + class: "ui-autocomplete__feedback-text" +}; +function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_autocomplete_suggestion = resolveComponent("ui-autocomplete-suggestion"); + const _directive_autofocus = resolveDirective("autofocus"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-autocomplete", $options.classes]) + }, [ + $props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_1$y, [ + renderSlot(_ctx.$slots, "icon", {}, () => [ + createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_2$s, [ + createElementVNode("label", _hoisted_3$o, [ + $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(["ui-autocomplete__label-text", $options.labelClasses]) + }, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.label), 1) + ]) + ], 2)) : createCommentVNode("v-if", true), + withDirectives(createVNode(_component_ui_icon, { + class: "ui-autocomplete__clear-button", + title: "Clear", + onClick: _cache[0] || (_cache[0] = ($event) => $options.updateValue("")) + }, { + default: withCtx(() => [ + _hoisted_4$g + ]), + _: 1 + }, 512), [ + [vShow, !$props.disabled && $options.valueLength > 0] + ]), + withDirectives(createElementVNode("input", { + ref: "input", + autocomplete: "off", + class: "ui-autocomplete__input", + disabled: $props.disabled, + name: $props.name, + placeholder: $options.hasFloatingLabel ? null : $props.placeholder, + readonly: $props.readonly ? $props.readonly : null, + tabindex: $props.tabindex, + value: $props.modelValue, + onBlur: _cache[1] || (_cache[1] = (...args) => $options.onBlur && $options.onBlur(...args)), + onChange: _cache[2] || (_cache[2] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[3] || (_cache[3] = (...args) => $options.onFocus && $options.onFocus(...args)), + onInput: _cache[4] || (_cache[4] = ($event) => $options.updateValue($event.target.value)), + onKeydown: [ + _cache[5] || (_cache[5] = withKeys(withModifiers(($event) => $options.highlightSuggestion($data.highlightedIndex + 1), ["prevent"]), ["down"])), + _cache[6] || (_cache[6] = withKeys(($event) => $options.selectHighlighted($data.highlightedIndex, $event), ["enter"])), + _cache[7] || (_cache[7] = withKeys((...args) => $options.closeDropdown && $options.closeDropdown(...args), ["esc"])), + _cache[8] || (_cache[8] = withKeys((...args) => $options.closeDropdown && $options.closeDropdown(...args), ["tab"])), + _cache[9] || (_cache[9] = withKeys(withModifiers(($event) => $options.highlightSuggestion($data.highlightedIndex - 1), ["prevent"]), ["up"])) + ] + }, null, 40, _hoisted_5$e), [ + [_directive_autofocus, $props.autofocus] + ]), + withDirectives(createElementVNode("ul", _hoisted_6$a, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($options.matchingSuggestions, (suggestion, index) => { + return openBlock(), createBlock(_component_ui_autocomplete_suggestion, { + ref_for: true, + ref: "suggestions", + key: index, + highlighted: $data.highlightedIndex === index, + keys: $props.keys, + suggestion, + type: $props.type, + onClick: ($event) => $options.selectSuggestion(suggestion) + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "suggestion", { + highlighted: $data.highlightedIndex === index, + index, + suggestion + }) + ]), + _: 2 + }, 1032, ["highlighted", "keys", "suggestion", "type", "onClick"]); + }), 128)) + ], 512), [ + [vShow, $data.showDropdown] + ]) + ]), + $options.hasFeedback ? (openBlock(), createElementBlock("div", _hoisted_7$4, [ + $options.showError ? (openBlock(), createElementBlock("div", _hoisted_8$3, [ + renderSlot(_ctx.$slots, "error", {}, () => [ + createTextVNode(toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (openBlock(), createElementBlock("div", _hoisted_9$3, [ + renderSlot(_ctx.$slots, "help", {}, () => [ + createTextVNode(toDisplayString($props.help), 1) + ]) + ])) : createCommentVNode("v-if", true) + ])) : createCommentVNode("v-if", true) + ]) + ], 2); +} +const UiAutocomplete = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$A], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiAutocomplete.vue"]]); +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.14.7 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +var isBrowser$1 = typeof window !== "undefined" && typeof document !== "undefined"; +var longerTimeoutBrowsers = ["Edge", "Trident", "Firefox"]; +var timeoutDuration = 0; +for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { + if (isBrowser$1 && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { + timeoutDuration = 1; + break; + } +} +function microtaskDebounce(fn) { + var called = false; + return function() { + if (called) { + return; + } + called = true; + window.Promise.resolve().then(function() { + called = false; + fn(); + }); + }; +} +function taskDebounce(fn) { + var scheduled = false; + return function() { + if (!scheduled) { + scheduled = true; + setTimeout(function() { + scheduled = false; + fn(); + }, timeoutDuration); + } + }; +} +var supportsMicroTasks = isBrowser$1 && window.Promise; +var debounce$1 = supportsMicroTasks ? microtaskDebounce : taskDebounce; +function isFunction(functionToCheck) { + var getType = {}; + return functionToCheck && getType.toString.call(functionToCheck) === "[object Function]"; +} +function getStyleComputedProperty(element, property) { + if (element.nodeType !== 1) { + return []; + } + var window2 = element.ownerDocument.defaultView; + var css = window2.getComputedStyle(element, null); + return property ? css[property] : css; +} +function getParentNode(element) { + if (element.nodeName === "HTML") { + return element; + } + return element.parentNode || element.host; +} +function getScrollParent(element) { + if (!element) { + return document.body; + } + switch (element.nodeName) { + case "HTML": + case "BODY": + return element.ownerDocument.body; + case "#document": + return element.body; + } + var _getStyleComputedProp = getStyleComputedProperty(element), overflow = _getStyleComputedProp.overflow, overflowX = _getStyleComputedProp.overflowX, overflowY = _getStyleComputedProp.overflowY; + if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { + return element; + } + return getScrollParent(getParentNode(element)); +} +var isIE11 = isBrowser$1 && !!(window.MSInputMethodContext && document.documentMode); +var isIE10 = isBrowser$1 && /MSIE 10/.test(navigator.userAgent); +function isIE$1(version2) { + if (version2 === 11) { + return isIE11; + } + if (version2 === 10) { + return isIE10; + } + return isIE11 || isIE10; +} +function getOffsetParent(element) { + if (!element) { + return document.documentElement; + } + var noOffsetParent = isIE$1(10) ? document.body : null; + var offsetParent = element.offsetParent || null; + while (offsetParent === noOffsetParent && element.nextElementSibling) { + offsetParent = (element = element.nextElementSibling).offsetParent; + } + var nodeName = offsetParent && offsetParent.nodeName; + if (!nodeName || nodeName === "BODY" || nodeName === "HTML") { + return element ? element.ownerDocument.documentElement : document.documentElement; + } + if (["TH", "TD", "TABLE"].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, "position") === "static") { + return getOffsetParent(offsetParent); + } + return offsetParent; +} +function isOffsetContainer(element) { + var nodeName = element.nodeName; + if (nodeName === "BODY") { + return false; + } + return nodeName === "HTML" || getOffsetParent(element.firstElementChild) === element; +} +function getRoot(node) { + if (node.parentNode !== null) { + return getRoot(node.parentNode); + } + return node; +} +function findCommonOffsetParent(element1, element2) { + if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { + return document.documentElement; + } + var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; + var start = order ? element1 : element2; + var end = order ? element2 : element1; + var range = document.createRange(); + range.setStart(start, 0); + range.setEnd(end, 0); + var commonAncestorContainer = range.commonAncestorContainer; + if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { + if (isOffsetContainer(commonAncestorContainer)) { + return commonAncestorContainer; + } + return getOffsetParent(commonAncestorContainer); + } + var element1root = getRoot(element1); + if (element1root.host) { + return findCommonOffsetParent(element1root.host, element2); + } else { + return findCommonOffsetParent(element1, getRoot(element2).host); + } +} +function getScroll(element) { + var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "top"; + var upperSide = side === "top" ? "scrollTop" : "scrollLeft"; + var nodeName = element.nodeName; + if (nodeName === "BODY" || nodeName === "HTML") { + var html = element.ownerDocument.documentElement; + var scrollingElement = element.ownerDocument.scrollingElement || html; + return scrollingElement[upperSide]; + } + return element[upperSide]; +} +function includeScroll(rect, element) { + var subtract = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + var scrollTop = getScroll(element, "top"); + var scrollLeft = getScroll(element, "left"); + var modifier = subtract ? -1 : 1; + rect.top += scrollTop * modifier; + rect.bottom += scrollTop * modifier; + rect.left += scrollLeft * modifier; + rect.right += scrollLeft * modifier; + return rect; +} +function getBordersSize(styles, axis) { + var sideA = axis === "x" ? "Left" : "Top"; + var sideB = sideA === "Left" ? "Right" : "Bottom"; + return parseFloat(styles["border" + sideA + "Width"], 10) + parseFloat(styles["border" + sideB + "Width"], 10); +} +function getSize(axis, body, html, computedStyle) { + return Math.max(body["offset" + axis], body["scroll" + axis], html["client" + axis], html["offset" + axis], html["scroll" + axis], isIE$1(10) ? parseInt(html["offset" + axis]) + parseInt(computedStyle["margin" + (axis === "Height" ? "Top" : "Left")]) + parseInt(computedStyle["margin" + (axis === "Height" ? "Bottom" : "Right")]) : 0); +} +function getWindowSizes(document2) { + var body = document2.body; + var html = document2.documentElement; + var computedStyle = isIE$1(10) && getComputedStyle(html); + return { + height: getSize("Height", body, html, computedStyle), + width: getSize("Width", body, html, computedStyle) + }; +} +var classCallCheck = function(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; +var createClass = function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) + defineProperties(Constructor.prototype, protoProps); + if (staticProps) + defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); +var defineProperty = function(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; +}; +var _extends$1 = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; +}; +function getClientRect(offsets) { + return _extends$1({}, offsets, { + right: offsets.left + offsets.width, + bottom: offsets.top + offsets.height + }); +} +function getBoundingClientRect(element) { + var rect = {}; + try { + if (isIE$1(10)) { + rect = element.getBoundingClientRect(); + var scrollTop = getScroll(element, "top"); + var scrollLeft = getScroll(element, "left"); + rect.top += scrollTop; + rect.left += scrollLeft; + rect.bottom += scrollTop; + rect.right += scrollLeft; + } else { + rect = element.getBoundingClientRect(); + } + } catch (e) { + } + var result = { + left: rect.left, + top: rect.top, + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + var sizes = element.nodeName === "HTML" ? getWindowSizes(element.ownerDocument) : {}; + var width = sizes.width || element.clientWidth || result.right - result.left; + var height = sizes.height || element.clientHeight || result.bottom - result.top; + var horizScrollbar = element.offsetWidth - width; + var vertScrollbar = element.offsetHeight - height; + if (horizScrollbar || vertScrollbar) { + var styles = getStyleComputedProperty(element); + horizScrollbar -= getBordersSize(styles, "x"); + vertScrollbar -= getBordersSize(styles, "y"); + result.width -= horizScrollbar; + result.height -= vertScrollbar; + } + return getClientRect(result); +} +function getOffsetRectRelativeToArbitraryNode(children, parent) { + var fixedPosition = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + var isIE102 = isIE$1(10); + var isHTML = parent.nodeName === "HTML"; + var childrenRect = getBoundingClientRect(children); + var parentRect = getBoundingClientRect(parent); + var scrollParent = getScrollParent(children); + var styles = getStyleComputedProperty(parent); + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); + if (fixedPosition && isHTML) { + parentRect.top = Math.max(parentRect.top, 0); + parentRect.left = Math.max(parentRect.left, 0); + } + var offsets = getClientRect({ + top: childrenRect.top - parentRect.top - borderTopWidth, + left: childrenRect.left - parentRect.left - borderLeftWidth, + width: childrenRect.width, + height: childrenRect.height + }); + offsets.marginTop = 0; + offsets.marginLeft = 0; + if (!isIE102 && isHTML) { + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); + offsets.top -= borderTopWidth - marginTop; + offsets.bottom -= borderTopWidth - marginTop; + offsets.left -= borderLeftWidth - marginLeft; + offsets.right -= borderLeftWidth - marginLeft; + offsets.marginTop = marginTop; + offsets.marginLeft = marginLeft; + } + if (isIE102 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== "BODY") { + offsets = includeScroll(offsets, parent); + } + return offsets; +} +function getViewportOffsetRectRelativeToArtbitraryNode(element) { + var excludeScroll = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + var html = element.ownerDocument.documentElement; + var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); + var width = Math.max(html.clientWidth, window.innerWidth || 0); + var height = Math.max(html.clientHeight, window.innerHeight || 0); + var scrollTop = !excludeScroll ? getScroll(html) : 0; + var scrollLeft = !excludeScroll ? getScroll(html, "left") : 0; + var offset2 = { + top: scrollTop - relativeOffset.top + relativeOffset.marginTop, + left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, + width, + height + }; + return getClientRect(offset2); +} +function isFixed(element) { + var nodeName = element.nodeName; + if (nodeName === "BODY" || nodeName === "HTML") { + return false; + } + if (getStyleComputedProperty(element, "position") === "fixed") { + return true; + } + var parentNode = getParentNode(element); + if (!parentNode) { + return false; + } + return isFixed(parentNode); +} +function getFixedPositionOffsetParent(element) { + if (!element || !element.parentElement || isIE$1()) { + return document.documentElement; + } + var el = element.parentElement; + while (el && getStyleComputedProperty(el, "transform") === "none") { + el = el.parentElement; + } + return el || document.documentElement; +} +function getBoundaries(popper, reference, padding, boundariesElement) { + var fixedPosition = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false; + var boundaries = { top: 0, left: 0 }; + var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + if (boundariesElement === "viewport") { + boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); + } else { + var boundariesNode = void 0; + if (boundariesElement === "scrollParent") { + boundariesNode = getScrollParent(getParentNode(reference)); + if (boundariesNode.nodeName === "BODY") { + boundariesNode = popper.ownerDocument.documentElement; + } + } else if (boundariesElement === "window") { + boundariesNode = popper.ownerDocument.documentElement; + } else { + boundariesNode = boundariesElement; + } + var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); + if (boundariesNode.nodeName === "HTML" && !isFixed(offsetParent)) { + var _getWindowSizes = getWindowSizes(popper.ownerDocument), height = _getWindowSizes.height, width = _getWindowSizes.width; + boundaries.top += offsets.top - offsets.marginTop; + boundaries.bottom = height + offsets.top; + boundaries.left += offsets.left - offsets.marginLeft; + boundaries.right = width + offsets.left; + } else { + boundaries = offsets; + } + } + padding = padding || 0; + var isPaddingNumber = typeof padding === "number"; + boundaries.left += isPaddingNumber ? padding : padding.left || 0; + boundaries.top += isPaddingNumber ? padding : padding.top || 0; + boundaries.right -= isPaddingNumber ? padding : padding.right || 0; + boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; + return boundaries; +} +function getArea(_ref) { + var width = _ref.width, height = _ref.height; + return width * height; +} +function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { + var padding = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : 0; + if (placement.indexOf("auto") === -1) { + return placement; + } + var boundaries = getBoundaries(popper, reference, padding, boundariesElement); + var rects = { + top: { + width: boundaries.width, + height: refRect.top - boundaries.top + }, + right: { + width: boundaries.right - refRect.right, + height: boundaries.height + }, + bottom: { + width: boundaries.width, + height: boundaries.bottom - refRect.bottom + }, + left: { + width: refRect.left - boundaries.left, + height: boundaries.height + } + }; + var sortedAreas = Object.keys(rects).map(function(key) { + return _extends$1({ + key + }, rects[key], { + area: getArea(rects[key]) + }); + }).sort(function(a, b) { + return b.area - a.area; + }); + var filteredAreas = sortedAreas.filter(function(_ref2) { + var width = _ref2.width, height = _ref2.height; + return width >= popper.clientWidth && height >= popper.clientHeight; + }); + var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; + var variation = placement.split("-")[1]; + return computedPlacement + (variation ? "-" + variation : ""); +} +function getReferenceOffsets(state, popper, reference) { + var fixedPosition = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; + var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); +} +function getOuterSizes(element) { + var window2 = element.ownerDocument.defaultView; + var styles = window2.getComputedStyle(element); + var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); + var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); + var result = { + width: element.offsetWidth + y, + height: element.offsetHeight + x + }; + return result; +} +function getOppositePlacement(placement) { + var hash = { left: "right", right: "left", bottom: "top", top: "bottom" }; + return placement.replace(/left|right|bottom|top/g, function(matched) { + return hash[matched]; + }); +} +function getPopperOffsets(popper, referenceOffsets, placement) { + placement = placement.split("-")[0]; + var popperRect = getOuterSizes(popper); + var popperOffsets = { + width: popperRect.width, + height: popperRect.height + }; + var isHoriz = ["right", "left"].indexOf(placement) !== -1; + var mainSide = isHoriz ? "top" : "left"; + var secondarySide = isHoriz ? "left" : "top"; + var measurement = isHoriz ? "height" : "width"; + var secondaryMeasurement = !isHoriz ? "height" : "width"; + popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; + if (placement === secondarySide) { + popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; + } else { + popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; + } + return popperOffsets; +} +function find(arr, check) { + if (Array.prototype.find) { + return arr.find(check); + } + return arr.filter(check)[0]; +} +function findIndex(arr, prop, value) { + if (Array.prototype.findIndex) { + return arr.findIndex(function(cur) { + return cur[prop] === value; + }); + } + var match = find(arr, function(obj) { + return obj[prop] === value; + }); + return arr.indexOf(match); +} +function runModifiers(modifiers2, data, ends) { + var modifiersToRun = ends === void 0 ? modifiers2 : modifiers2.slice(0, findIndex(modifiers2, "name", ends)); + modifiersToRun.forEach(function(modifier) { + if (modifier["function"]) { + console.warn("`modifier.function` is deprecated, use `modifier.fn`!"); + } + var fn = modifier["function"] || modifier.fn; + if (modifier.enabled && isFunction(fn)) { + data.offsets.popper = getClientRect(data.offsets.popper); + data.offsets.reference = getClientRect(data.offsets.reference); + data = fn(data, modifier); + } + }); + return data; +} +function update() { + if (this.state.isDestroyed) { + return; + } + var data = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: false, + offsets: {} + }; + data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); + data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); + data.originalPlacement = data.placement; + data.positionFixed = this.options.positionFixed; + data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); + data.offsets.popper.position = this.options.positionFixed ? "fixed" : "absolute"; + data = runModifiers(this.modifiers, data); + if (!this.state.isCreated) { + this.state.isCreated = true; + this.options.onCreate(data); + } else { + this.options.onUpdate(data); + } +} +function isModifierEnabled(modifiers2, modifierName) { + return modifiers2.some(function(_ref) { + var name = _ref.name, enabled = _ref.enabled; + return enabled && name === modifierName; + }); +} +function getSupportedPropertyName(property) { + var prefixes = [false, "ms", "Webkit", "Moz", "O"]; + var upperProp = property.charAt(0).toUpperCase() + property.slice(1); + for (var i = 0; i < prefixes.length; i++) { + var prefix = prefixes[i]; + var toCheck = prefix ? "" + prefix + upperProp : property; + if (typeof document.body.style[toCheck] !== "undefined") { + return toCheck; + } + } + return null; +} +function destroy() { + this.state.isDestroyed = true; + if (isModifierEnabled(this.modifiers, "applyStyle")) { + this.popper.removeAttribute("x-placement"); + this.popper.style.position = ""; + this.popper.style.top = ""; + this.popper.style.left = ""; + this.popper.style.right = ""; + this.popper.style.bottom = ""; + this.popper.style.willChange = ""; + this.popper.style[getSupportedPropertyName("transform")] = ""; + } + this.disableEventListeners(); + if (this.options.removeOnDestroy) { + this.popper.parentNode.removeChild(this.popper); + } + return this; +} +function getWindow(element) { + var ownerDocument = element.ownerDocument; + return ownerDocument ? ownerDocument.defaultView : window; +} +function attachToScrollParents(scrollParent, event, callback, scrollParents) { + var isBody = scrollParent.nodeName === "BODY"; + var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; + target.addEventListener(event, callback, { passive: true }); + if (!isBody) { + attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); + } + scrollParents.push(target); +} +function setupEventListeners(reference, options, state, updateBound) { + state.updateBound = updateBound; + getWindow(reference).addEventListener("resize", state.updateBound, { passive: true }); + var scrollElement = getScrollParent(reference); + attachToScrollParents(scrollElement, "scroll", state.updateBound, state.scrollParents); + state.scrollElement = scrollElement; + state.eventsEnabled = true; + return state; +} +function enableEventListeners() { + if (!this.state.eventsEnabled) { + this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); + } +} +function removeEventListeners(reference, state) { + getWindow(reference).removeEventListener("resize", state.updateBound); + state.scrollParents.forEach(function(target) { + target.removeEventListener("scroll", state.updateBound); + }); + state.updateBound = null; + state.scrollParents = []; + state.scrollElement = null; + state.eventsEnabled = false; + return state; +} +function disableEventListeners() { + if (this.state.eventsEnabled) { + cancelAnimationFrame(this.scheduleUpdate); + this.state = removeEventListeners(this.reference, this.state); + } +} +function isNumeric(n) { + return n !== "" && !isNaN(parseFloat(n)) && isFinite(n); +} +function setStyles(element, styles) { + Object.keys(styles).forEach(function(prop) { + var unit = ""; + if (["width", "height", "top", "right", "bottom", "left"].indexOf(prop) !== -1 && isNumeric(styles[prop])) { + unit = "px"; + } + element.style[prop] = styles[prop] + unit; + }); +} +function setAttributes(element, attributes) { + Object.keys(attributes).forEach(function(prop) { + var value = attributes[prop]; + if (value !== false) { + element.setAttribute(prop, attributes[prop]); + } else { + element.removeAttribute(prop); + } + }); +} +function applyStyle(data) { + setStyles(data.instance.popper, data.styles); + setAttributes(data.instance.popper, data.attributes); + if (data.arrowElement && Object.keys(data.arrowStyles).length) { + setStyles(data.arrowElement, data.arrowStyles); + } + return data; +} +function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { + var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); + var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); + popper.setAttribute("x-placement", placement); + setStyles(popper, { position: options.positionFixed ? "fixed" : "absolute" }); + return options; +} +function getRoundedOffsets(data, shouldRound) { + var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var round = Math.round, floor = Math.floor; + var noRound = function noRound2(v) { + return v; + }; + var referenceWidth = round(reference.width); + var popperWidth = round(popper.width); + var isVertical = ["left", "right"].indexOf(data.placement) !== -1; + var isVariation = data.placement.indexOf("-") !== -1; + var sameWidthParity = referenceWidth % 2 === popperWidth % 2; + var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; + var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; + var verticalToInteger = !shouldRound ? noRound : round; + return { + left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), + top: verticalToInteger(popper.top), + bottom: verticalToInteger(popper.bottom), + right: horizontalToInteger(popper.right) + }; +} +var isFirefox = isBrowser$1 && /Firefox/i.test(navigator.userAgent); +function computeStyle(data, options) { + var x = options.x, y = options.y; + var popper = data.offsets.popper; + var legacyGpuAccelerationOption = find(data.instance.modifiers, function(modifier) { + return modifier.name === "applyStyle"; + }).gpuAcceleration; + if (legacyGpuAccelerationOption !== void 0) { + console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!"); + } + var gpuAcceleration = legacyGpuAccelerationOption !== void 0 ? legacyGpuAccelerationOption : options.gpuAcceleration; + var offsetParent = getOffsetParent(data.instance.popper); + var offsetParentRect = getBoundingClientRect(offsetParent); + var styles = { + position: popper.position + }; + var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); + var sideA = x === "bottom" ? "top" : "bottom"; + var sideB = y === "right" ? "left" : "right"; + var prefixedProperty = getSupportedPropertyName("transform"); + var left = void 0, top = void 0; + if (sideA === "bottom") { + if (offsetParent.nodeName === "HTML") { + top = -offsetParent.clientHeight + offsets.bottom; + } else { + top = -offsetParentRect.height + offsets.bottom; + } + } else { + top = offsets.top; + } + if (sideB === "right") { + if (offsetParent.nodeName === "HTML") { + left = -offsetParent.clientWidth + offsets.right; + } else { + left = -offsetParentRect.width + offsets.right; + } + } else { + left = offsets.left; + } + if (gpuAcceleration && prefixedProperty) { + styles[prefixedProperty] = "translate3d(" + left + "px, " + top + "px, 0)"; + styles[sideA] = 0; + styles[sideB] = 0; + styles.willChange = "transform"; + } else { + var invertTop = sideA === "bottom" ? -1 : 1; + var invertLeft = sideB === "right" ? -1 : 1; + styles[sideA] = top * invertTop; + styles[sideB] = left * invertLeft; + styles.willChange = sideA + ", " + sideB; + } + var attributes = { + "x-placement": data.placement + }; + data.attributes = _extends$1({}, attributes, data.attributes); + data.styles = _extends$1({}, styles, data.styles); + data.arrowStyles = _extends$1({}, data.offsets.arrow, data.arrowStyles); + return data; +} +function isModifierRequired(modifiers2, requestingName, requestedName) { + var requesting = find(modifiers2, function(_ref) { + var name = _ref.name; + return name === requestingName; + }); + var isRequired = !!requesting && modifiers2.some(function(modifier) { + return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; + }); + if (!isRequired) { + var _requesting = "`" + requestingName + "`"; + var requested = "`" + requestedName + "`"; + console.warn(requested + " modifier is required by " + _requesting + " modifier in order to work, be sure to include it before " + _requesting + "!"); + } + return isRequired; +} +function arrow(data, options) { + var _data$offsets$arrow; + if (!isModifierRequired(data.instance.modifiers, "arrow", "keepTogether")) { + return data; + } + var arrowElement = options.element; + if (typeof arrowElement === "string") { + arrowElement = data.instance.popper.querySelector(arrowElement); + if (!arrowElement) { + return data; + } + } else { + if (!data.instance.popper.contains(arrowElement)) { + console.warn("WARNING: `arrow.element` must be child of its popper element!"); + return data; + } + } + var placement = data.placement.split("-")[0]; + var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var isVertical = ["left", "right"].indexOf(placement) !== -1; + var len = isVertical ? "height" : "width"; + var sideCapitalized = isVertical ? "Top" : "Left"; + var side = sideCapitalized.toLowerCase(); + var altSide = isVertical ? "left" : "top"; + var opSide = isVertical ? "bottom" : "right"; + var arrowElementSize = getOuterSizes(arrowElement)[len]; + if (reference[opSide] - arrowElementSize < popper[side]) { + data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); + } + if (reference[side] + arrowElementSize > popper[opSide]) { + data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; + } + data.offsets.popper = getClientRect(data.offsets.popper); + var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; + var css = getStyleComputedProperty(data.instance.popper); + var popperMarginSide = parseFloat(css["margin" + sideCapitalized], 10); + var popperBorderSide = parseFloat(css["border" + sideCapitalized + "Width"], 10); + var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; + sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); + data.arrowElement = arrowElement; + data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ""), _data$offsets$arrow); + return data; +} +function getOppositeVariation(variation) { + if (variation === "end") { + return "start"; + } else if (variation === "start") { + return "end"; + } + return variation; +} +var placements = ["auto-start", "auto", "auto-end", "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-end", "bottom", "bottom-start", "left-end", "left", "left-start"]; +var validPlacements = placements.slice(3); +function clockwise(placement) { + var counter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + var index = validPlacements.indexOf(placement); + var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); + return counter ? arr.reverse() : arr; +} +var BEHAVIORS = { + FLIP: "flip", + CLOCKWISE: "clockwise", + COUNTERCLOCKWISE: "counterclockwise" +}; +function flip(data, options) { + if (isModifierEnabled(data.instance.modifiers, "inner")) { + return data; + } + if (data.flipped && data.placement === data.originalPlacement) { + return data; + } + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); + var placement = data.placement.split("-")[0]; + var placementOpposite = getOppositePlacement(placement); + var variation = data.placement.split("-")[1] || ""; + var flipOrder = []; + switch (options.behavior) { + case BEHAVIORS.FLIP: + flipOrder = [placement, placementOpposite]; + break; + case BEHAVIORS.CLOCKWISE: + flipOrder = clockwise(placement); + break; + case BEHAVIORS.COUNTERCLOCKWISE: + flipOrder = clockwise(placement, true); + break; + default: + flipOrder = options.behavior; + } + flipOrder.forEach(function(step, index) { + if (placement !== step || flipOrder.length === index + 1) { + return data; + } + placement = data.placement.split("-")[0]; + placementOpposite = getOppositePlacement(placement); + var popperOffsets = data.offsets.popper; + var refOffsets = data.offsets.reference; + var floor = Math.floor; + var overlapsRef = placement === "left" && floor(popperOffsets.right) > floor(refOffsets.left) || placement === "right" && floor(popperOffsets.left) < floor(refOffsets.right) || placement === "top" && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === "bottom" && floor(popperOffsets.top) < floor(refOffsets.bottom); + var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); + var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); + var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); + var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); + var overflowsBoundaries = placement === "left" && overflowsLeft || placement === "right" && overflowsRight || placement === "top" && overflowsTop || placement === "bottom" && overflowsBottom; + var isVertical = ["top", "bottom"].indexOf(placement) !== -1; + var flippedVariation = !!options.flipVariations && (isVertical && variation === "start" && overflowsLeft || isVertical && variation === "end" && overflowsRight || !isVertical && variation === "start" && overflowsTop || !isVertical && variation === "end" && overflowsBottom); + if (overlapsRef || overflowsBoundaries || flippedVariation) { + data.flipped = true; + if (overlapsRef || overflowsBoundaries) { + placement = flipOrder[index + 1]; + } + if (flippedVariation) { + variation = getOppositeVariation(variation); + } + data.placement = placement + (variation ? "-" + variation : ""); + data.offsets.popper = _extends$1({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); + data = runModifiers(data.instance.modifiers, data, "flip"); + } + }); + return data; +} +function keepTogether(data) { + var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var placement = data.placement.split("-")[0]; + var floor = Math.floor; + var isVertical = ["top", "bottom"].indexOf(placement) !== -1; + var side = isVertical ? "right" : "bottom"; + var opSide = isVertical ? "left" : "top"; + var measurement = isVertical ? "width" : "height"; + if (popper[side] < floor(reference[opSide])) { + data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; + } + if (popper[opSide] > floor(reference[side])) { + data.offsets.popper[opSide] = floor(reference[side]); + } + return data; +} +function toValue(str, measurement, popperOffsets, referenceOffsets) { + var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); + var value = +split[1]; + var unit = split[2]; + if (!value) { + return str; + } + if (unit.indexOf("%") === 0) { + var element = void 0; + switch (unit) { + case "%p": + element = popperOffsets; + break; + case "%": + case "%r": + default: + element = referenceOffsets; + } + var rect = getClientRect(element); + return rect[measurement] / 100 * value; + } else if (unit === "vh" || unit === "vw") { + var size = void 0; + if (unit === "vh") { + size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + } else { + size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); + } + return size / 100 * value; + } else { + return value; + } +} +function parseOffset(offset2, popperOffsets, referenceOffsets, basePlacement) { + var offsets = [0, 0]; + var useHeight = ["right", "left"].indexOf(basePlacement) !== -1; + var fragments = offset2.split(/(\+|\-)/).map(function(frag) { + return frag.trim(); + }); + var divider = fragments.indexOf(find(fragments, function(frag) { + return frag.search(/,|\s/) !== -1; + })); + if (fragments[divider] && fragments[divider].indexOf(",") === -1) { + console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead."); + } + var splitRegex = /\s*,\s*|\s+/; + var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; + ops = ops.map(function(op, index) { + var measurement = (index === 1 ? !useHeight : useHeight) ? "height" : "width"; + var mergeWithPrevious = false; + return op.reduce(function(a, b) { + if (a[a.length - 1] === "" && ["+", "-"].indexOf(b) !== -1) { + a[a.length - 1] = b; + mergeWithPrevious = true; + return a; + } else if (mergeWithPrevious) { + a[a.length - 1] += b; + mergeWithPrevious = false; + return a; + } else { + return a.concat(b); + } + }, []).map(function(str) { + return toValue(str, measurement, popperOffsets, referenceOffsets); + }); + }); + ops.forEach(function(op, index) { + op.forEach(function(frag, index2) { + if (isNumeric(frag)) { + offsets[index] += frag * (op[index2 - 1] === "-" ? -1 : 1); + } + }); + }); + return offsets; +} +function offset(data, _ref) { + var offset2 = _ref.offset; + var placement = data.placement, _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var basePlacement = placement.split("-")[0]; + var offsets = void 0; + if (isNumeric(+offset2)) { + offsets = [+offset2, 0]; + } else { + offsets = parseOffset(offset2, popper, reference, basePlacement); + } + if (basePlacement === "left") { + popper.top += offsets[0]; + popper.left -= offsets[1]; + } else if (basePlacement === "right") { + popper.top += offsets[0]; + popper.left += offsets[1]; + } else if (basePlacement === "top") { + popper.left += offsets[0]; + popper.top -= offsets[1]; + } else if (basePlacement === "bottom") { + popper.left += offsets[0]; + popper.top += offsets[1]; + } + data.popper = popper; + return data; +} +function preventOverflow(data, options) { + var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); + if (data.instance.reference === boundariesElement) { + boundariesElement = getOffsetParent(boundariesElement); + } + var transformProp = getSupportedPropertyName("transform"); + var popperStyles = data.instance.popper.style; + var top = popperStyles.top, left = popperStyles.left, transform = popperStyles[transformProp]; + popperStyles.top = ""; + popperStyles.left = ""; + popperStyles[transformProp] = ""; + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); + popperStyles.top = top; + popperStyles.left = left; + popperStyles[transformProp] = transform; + options.boundaries = boundaries; + var order = options.priority; + var popper = data.offsets.popper; + var check = { + primary: function primary(placement) { + var value = popper[placement]; + if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { + value = Math.max(popper[placement], boundaries[placement]); + } + return defineProperty({}, placement, value); + }, + secondary: function secondary(placement) { + var mainSide = placement === "right" ? "left" : "top"; + var value = popper[mainSide]; + if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { + value = Math.min(popper[mainSide], boundaries[placement] - (placement === "right" ? popper.width : popper.height)); + } + return defineProperty({}, mainSide, value); + } + }; + order.forEach(function(placement) { + var side = ["left", "top"].indexOf(placement) !== -1 ? "primary" : "secondary"; + popper = _extends$1({}, popper, check[side](placement)); + }); + data.offsets.popper = popper; + return data; +} +function shift(data) { + var placement = data.placement; + var basePlacement = placement.split("-")[0]; + var shiftvariation = placement.split("-")[1]; + if (shiftvariation) { + var _data$offsets = data.offsets, reference = _data$offsets.reference, popper = _data$offsets.popper; + var isVertical = ["bottom", "top"].indexOf(basePlacement) !== -1; + var side = isVertical ? "left" : "top"; + var measurement = isVertical ? "width" : "height"; + var shiftOffsets = { + start: defineProperty({}, side, reference[side]), + end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) + }; + data.offsets.popper = _extends$1({}, popper, shiftOffsets[shiftvariation]); + } + return data; +} +function hide(data) { + if (!isModifierRequired(data.instance.modifiers, "hide", "preventOverflow")) { + return data; + } + var refRect = data.offsets.reference; + var bound = find(data.instance.modifiers, function(modifier) { + return modifier.name === "preventOverflow"; + }).boundaries; + if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { + if (data.hide === true) { + return data; + } + data.hide = true; + data.attributes["x-out-of-boundaries"] = ""; + } else { + if (data.hide === false) { + return data; + } + data.hide = false; + data.attributes["x-out-of-boundaries"] = false; + } + return data; +} +function inner(data) { + var placement = data.placement; + var basePlacement = placement.split("-")[0]; + var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var isHoriz = ["left", "right"].indexOf(basePlacement) !== -1; + var subtractLength = ["top", "left"].indexOf(basePlacement) === -1; + popper[isHoriz ? "left" : "top"] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? "width" : "height"] : 0); + data.placement = getOppositePlacement(placement); + data.offsets.popper = getClientRect(popper); + return data; +} +var modifiers = { + shift: { + order: 100, + enabled: true, + fn: shift + }, + offset: { + order: 200, + enabled: true, + fn: offset, + offset: 0 + }, + preventOverflow: { + order: 300, + enabled: true, + fn: preventOverflow, + priority: ["left", "right", "top", "bottom"], + padding: 5, + boundariesElement: "scrollParent" + }, + keepTogether: { + order: 400, + enabled: true, + fn: keepTogether + }, + arrow: { + order: 500, + enabled: true, + fn: arrow, + element: "[x-arrow]" + }, + flip: { + order: 600, + enabled: true, + fn: flip, + behavior: "flip", + padding: 5, + boundariesElement: "viewport" + }, + inner: { + order: 700, + enabled: false, + fn: inner + }, + hide: { + order: 800, + enabled: true, + fn: hide + }, + computeStyle: { + order: 850, + enabled: true, + fn: computeStyle, + gpuAcceleration: true, + x: "bottom", + y: "right" + }, + applyStyle: { + order: 900, + enabled: true, + fn: applyStyle, + onLoad: applyStyleOnLoad, + gpuAcceleration: void 0 + } +}; +var Defaults = { + placement: "bottom", + positionFixed: false, + eventsEnabled: true, + removeOnDestroy: false, + onCreate: function onCreate() { + }, + onUpdate: function onUpdate() { + }, + modifiers +}; +var Popper = function() { + function Popper2(reference, popper) { + var _this = this; + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + classCallCheck(this, Popper2); + this.scheduleUpdate = function() { + return requestAnimationFrame(_this.update); + }; + this.update = debounce$1(this.update.bind(this)); + this.options = _extends$1({}, Popper2.Defaults, options); + this.state = { + isDestroyed: false, + isCreated: false, + scrollParents: [] + }; + this.reference = reference && reference.jquery ? reference[0] : reference; + this.popper = popper && popper.jquery ? popper[0] : popper; + this.options.modifiers = {}; + Object.keys(_extends$1({}, Popper2.Defaults.modifiers, options.modifiers)).forEach(function(name) { + _this.options.modifiers[name] = _extends$1({}, Popper2.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); + }); + this.modifiers = Object.keys(this.options.modifiers).map(function(name) { + return _extends$1({ + name + }, _this.options.modifiers[name]); + }).sort(function(a, b) { + return a.order - b.order; + }); + this.modifiers.forEach(function(modifierOptions) { + if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { + modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); + } + }); + this.update(); + var eventsEnabled = this.options.eventsEnabled; + if (eventsEnabled) { + this.enableEventListeners(); + } + this.state.eventsEnabled = eventsEnabled; + } + createClass(Popper2, [{ + key: "update", + value: function update$$1() { + return update.call(this); + } + }, { + key: "destroy", + value: function destroy$$1() { + return destroy.call(this); + } + }, { + key: "enableEventListeners", + value: function enableEventListeners$$1() { + return enableEventListeners.call(this); + } + }, { + key: "disableEventListeners", + value: function disableEventListeners$$1() { + return disableEventListeners.call(this); + } + }]); + return Popper2; +}(); +Popper.Utils = (typeof window !== "undefined" ? window : global).PopperUtils; +Popper.placements = placements; +Popper.Defaults = Defaults; +function _extends() { + _extends = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} +var version = "4.2.1"; +var isBrowser = typeof window !== "undefined" && typeof document !== "undefined"; +var ua = isBrowser ? navigator.userAgent : ""; +var isIE = /MSIE |Trident\//.test(ua); +var isUCBrowser = /UCBrowser\//.test(ua); +var isIOS = isBrowser && /iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream; +var defaultProps = { + a11y: true, + allowHTML: true, + animateFill: true, + animation: "shift-away", + appendTo: function appendTo() { + return document.body; + }, + aria: "describedby", + arrow: false, + arrowType: "sharp", + boundary: "scrollParent", + content: "", + delay: 0, + distance: 10, + duration: [325, 275], + flip: true, + flipBehavior: "flip", + flipOnUpdate: false, + followCursor: false, + hideOnClick: true, + ignoreAttributes: false, + inertia: false, + interactive: false, + interactiveBorder: 2, + interactiveDebounce: 0, + lazy: true, + maxWidth: 350, + multiple: false, + offset: 0, + onHidden: function onHidden() { + }, + onHide: function onHide() { + }, + onMount: function onMount() { + }, + onShow: function onShow() { + }, + onShown: function onShown() { + }, + placement: "top", + popperOptions: {}, + role: "tooltip", + showOnInit: false, + size: "regular", + sticky: false, + target: "", + theme: "dark", + touch: true, + touchHold: false, + trigger: "mouseenter focus", + updateDuration: 0, + wait: null, + zIndex: 9999 +}; +var POPPER_INSTANCE_DEPENDENCIES = ["arrow", "arrowType", "boundary", "distance", "flip", "flipBehavior", "flipOnUpdate", "offset", "placement", "popperOptions"]; +var elementProto = isBrowser ? Element.prototype : {}; +var matches = elementProto.matches || elementProto.matchesSelector || elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector || elementProto.msMatchesSelector; +function arrayFrom(value) { + return [].slice.call(value); +} +function closest(element, parentSelector) { + return (elementProto.closest || function(selector) { + var el = this; + while (el) { + if (matches.call(el, selector)) { + return el; + } + el = el.parentElement; + } + }).call(element, parentSelector); +} +function closestCallback(element, callback) { + while (element) { + if (callback(element)) { + return element; + } + element = element.parentElement; + } +} +var PASSIVE = { + passive: true +}; +var PADDING = 4; +var PLACEMENT_ATTRIBUTE = "x-placement"; +var OUT_OF_BOUNDARIES_ATTRIBUTE = "x-out-of-boundaries"; +var IOS_CLASS = "tippy-iOS"; +var ACTIVE_CLASS = "tippy-active"; +var POPPER_SELECTOR = ".tippy-popper"; +var TOOLTIP_SELECTOR = ".tippy-tooltip"; +var CONTENT_SELECTOR = ".tippy-content"; +var BACKDROP_SELECTOR = ".tippy-backdrop"; +var ARROW_SELECTOR = ".tippy-arrow"; +var ROUND_ARROW_SELECTOR = ".tippy-roundarrow"; +var keys = Object.keys(defaultProps); +function getDataAttributeOptions(reference) { + return keys.reduce(function(acc, key) { + var valueAsString = (reference.getAttribute("data-tippy-".concat(key)) || "").trim(); + if (!valueAsString) { + return acc; + } + if (key === "content") { + acc[key] = valueAsString; + } else { + try { + acc[key] = JSON.parse(valueAsString); + } catch (e) { + acc[key] = valueAsString; + } + } + return acc; + }, {}); +} +function polyfillElementPrototypeProperties(virtualReference) { + var polyfills = { + isVirtual: true, + attributes: virtualReference.attributes || {}, + setAttribute: function setAttribute(key2, value) { + virtualReference.attributes[key2] = value; + }, + getAttribute: function getAttribute(key2) { + return virtualReference.attributes[key2]; + }, + removeAttribute: function removeAttribute(key2) { + delete virtualReference.attributes[key2]; + }, + hasAttribute: function hasAttribute(key2) { + return key2 in virtualReference.attributes; + }, + addEventListener: function addEventListener() { + }, + removeEventListener: function removeEventListener() { + }, + classList: { + classNames: {}, + add: function add2(key2) { + virtualReference.classList.classNames[key2] = true; + }, + remove: function remove2(key2) { + delete virtualReference.classList.classNames[key2]; + }, + contains: function contains2(key2) { + return key2 in virtualReference.classList.classNames; + } + } + }; + for (var key in polyfills) { + virtualReference[key] = polyfills[key]; + } +} +function isBareVirtualElement(value) { + return {}.toString.call(value) === "[object Object]" && !value.addEventListener; +} +function hasOwnProperty(obj, key) { + return {}.hasOwnProperty.call(obj, key); +} +function getArrayOfElements(value) { + if (isSingular(value)) { + return [value]; + } + if (value instanceof NodeList) { + return arrayFrom(value); + } + if (Array.isArray(value)) { + return value; + } + try { + return arrayFrom(document.querySelectorAll(value)); + } catch (e) { + return []; + } +} +function getValue(value, index, defaultValue) { + if (Array.isArray(value)) { + var v = value[index]; + return v == null ? defaultValue : v; + } + return value; +} +function debounce(fn, ms) { + var timeoutId; + return function() { + var _this = this, _arguments = arguments; + clearTimeout(timeoutId); + timeoutId = setTimeout(function() { + return fn.apply(_this, _arguments); + }, ms); + }; +} +function getModifier(obj, key) { + return obj && obj.modifiers && obj.modifiers[key]; +} +function includes(a, b) { + return a.indexOf(b) > -1; +} +function isSingular(value) { + return !!(value && hasOwnProperty(value, "isVirtual")) || value instanceof Element; +} +function innerHTML() { + return "innerHTML"; +} +function evaluateValue(value, args) { + return typeof value === "function" ? value.apply(null, args) : value; +} +function setFlipModifierEnabled(modifiers2, value) { + modifiers2.filter(function(m) { + return m.name === "flip"; + })[0].enabled = value; +} +function canReceiveFocus(element) { + return element instanceof Element ? matches.call(element, "a[href],area[href],button,details,input,textarea,select,iframe,[tabindex]") && !element.hasAttribute("disabled") : true; +} +function div() { + return document.createElement("div"); +} +function setTransitionDuration(els, value) { + els.forEach(function(el) { + if (el) { + el.style.transitionDuration = "".concat(value, "ms"); + } + }); +} +function setVisibilityState(els, state) { + els.forEach(function(el) { + if (el) { + el.setAttribute("data-state", state); + } + }); +} +function evaluateProps(reference, props) { + var out = _extends({}, props, { + content: evaluateValue(props.content, [reference]) + }, props.ignoreAttributes ? {} : getDataAttributeOptions(reference)); + if (out.arrow || isUCBrowser) { + out.animateFill = false; + } + return out; +} +function validateOptions(options, defaultProps2) { + Object.keys(options).forEach(function(option) { + if (!hasOwnProperty(defaultProps2, option)) { + throw new Error("[tippy]: `".concat(option, "` is not a valid option")); + } + }); +} +function setInnerHTML(element, html) { + element[innerHTML()] = html instanceof Element ? html[innerHTML()] : html; +} +function setContent(contentEl, props) { + if (props.content instanceof Element) { + setInnerHTML(contentEl, ""); + contentEl.appendChild(props.content); + } else if (typeof props.content !== "function") { + var key = props.allowHTML ? "innerHTML" : "textContent"; + contentEl[key] = props.content; + } +} +function getChildren(popper) { + return { + tooltip: popper.querySelector(TOOLTIP_SELECTOR), + backdrop: popper.querySelector(BACKDROP_SELECTOR), + content: popper.querySelector(CONTENT_SELECTOR), + arrow: popper.querySelector(ARROW_SELECTOR) || popper.querySelector(ROUND_ARROW_SELECTOR) + }; +} +function addInertia(tooltip) { + tooltip.setAttribute("data-inertia", ""); +} +function removeInertia(tooltip) { + tooltip.removeAttribute("data-inertia"); +} +function createArrowElement(arrowType) { + var arrow2 = div(); + if (arrowType === "round") { + arrow2.className = "tippy-roundarrow"; + setInnerHTML(arrow2, ''); + } else { + arrow2.className = "tippy-arrow"; + } + return arrow2; +} +function createBackdropElement() { + var backdrop = div(); + backdrop.className = "tippy-backdrop"; + backdrop.setAttribute("data-state", "hidden"); + return backdrop; +} +function addInteractive(popper, tooltip) { + popper.setAttribute("tabindex", "-1"); + tooltip.setAttribute("data-interactive", ""); +} +function removeInteractive(popper, tooltip) { + popper.removeAttribute("tabindex"); + tooltip.removeAttribute("data-interactive"); +} +function updateTransitionEndListener(tooltip, action, listener) { + var eventName = isUCBrowser && document.body.style.webkitTransition !== void 0 ? "webkitTransitionEnd" : "transitionend"; + tooltip[action + "EventListener"](eventName, listener); +} +function getBasicPlacement(popper) { + var fullPlacement = popper.getAttribute(PLACEMENT_ATTRIBUTE); + return fullPlacement ? fullPlacement.split("-")[0] : ""; +} +function reflow(popper) { + void popper.offsetHeight; +} +function updateTheme(tooltip, action, theme) { + theme.split(" ").forEach(function(themeName) { + tooltip.classList[action](themeName + "-theme"); + }); +} +function createPopperElement(id, props) { + var popper = div(); + popper.className = "tippy-popper"; + popper.id = "tippy-".concat(id); + popper.style.zIndex = "" + props.zIndex; + if (props.role) { + popper.setAttribute("role", props.role); + } + var tooltip = div(); + tooltip.className = "tippy-tooltip"; + tooltip.style.maxWidth = props.maxWidth + (typeof props.maxWidth === "number" ? "px" : ""); + tooltip.setAttribute("data-size", props.size); + tooltip.setAttribute("data-animation", props.animation); + tooltip.setAttribute("data-state", "hidden"); + updateTheme(tooltip, "add", props.theme); + var content = div(); + content.className = "tippy-content"; + content.setAttribute("data-state", "hidden"); + if (props.interactive) { + addInteractive(popper, tooltip); + } + if (props.arrow) { + tooltip.appendChild(createArrowElement(props.arrowType)); + } + if (props.animateFill) { + tooltip.appendChild(createBackdropElement()); + tooltip.setAttribute("data-animatefill", ""); + } + if (props.inertia) { + addInertia(tooltip); + } + setContent(content, props); + tooltip.appendChild(content); + popper.appendChild(tooltip); + return popper; +} +function updatePopperElement(popper, prevProps, nextProps) { + var _getChildren = getChildren(popper), tooltip = _getChildren.tooltip, content = _getChildren.content, backdrop = _getChildren.backdrop, arrow2 = _getChildren.arrow; + popper.style.zIndex = "" + nextProps.zIndex; + tooltip.setAttribute("data-size", nextProps.size); + tooltip.setAttribute("data-animation", nextProps.animation); + tooltip.style.maxWidth = nextProps.maxWidth + (typeof nextProps.maxWidth === "number" ? "px" : ""); + if (nextProps.role) { + popper.setAttribute("role", nextProps.role); + } else { + popper.removeAttribute("role"); + } + if (prevProps.content !== nextProps.content) { + setContent(content, nextProps); + } + if (!prevProps.animateFill && nextProps.animateFill) { + tooltip.appendChild(createBackdropElement()); + tooltip.setAttribute("data-animatefill", ""); + } else if (prevProps.animateFill && !nextProps.animateFill) { + tooltip.removeChild(backdrop); + tooltip.removeAttribute("data-animatefill"); + } + if (!prevProps.arrow && nextProps.arrow) { + tooltip.appendChild(createArrowElement(nextProps.arrowType)); + } else if (prevProps.arrow && !nextProps.arrow) { + tooltip.removeChild(arrow2); + } + if (prevProps.arrow && nextProps.arrow && prevProps.arrowType !== nextProps.arrowType) { + tooltip.replaceChild(createArrowElement(nextProps.arrowType), arrow2); + } + if (!prevProps.interactive && nextProps.interactive) { + addInteractive(popper, tooltip); + } else if (prevProps.interactive && !nextProps.interactive) { + removeInteractive(popper, tooltip); + } + if (!prevProps.inertia && nextProps.inertia) { + addInertia(tooltip); + } else if (prevProps.inertia && !nextProps.inertia) { + removeInertia(tooltip); + } + if (prevProps.theme !== nextProps.theme) { + updateTheme(tooltip, "remove", prevProps.theme); + updateTheme(tooltip, "add", nextProps.theme); + } +} +function afterPopperPositionUpdates(popperInstance, callback) { + var popper = popperInstance.popper, options = popperInstance.options; + var onCreate2 = options.onCreate, onUpdate2 = options.onUpdate; + options.onCreate = options.onUpdate = function(data) { + reflow(popper); + callback(); + if (onUpdate2) { + onUpdate2(data); + } + options.onCreate = onCreate2; + options.onUpdate = onUpdate2; + }; +} +function hideAll() { + var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, checkHideOnClick = _ref.checkHideOnClick, exclude = _ref.exclude, duration = _ref.duration; + arrayFrom(document.querySelectorAll(POPPER_SELECTOR)).forEach(function(popper) { + var instance = popper._tippy; + if (instance && (checkHideOnClick ? instance.props.hideOnClick === true : true) && (!exclude || popper !== exclude.popper)) { + instance.hide(duration); + } + }); +} +function isCursorOutsideInteractiveBorder(popperPlacement, popperRect, event, props) { + if (!popperPlacement) { + return true; + } + var x = event.clientX, y = event.clientY; + var interactiveBorder = props.interactiveBorder, distance = props.distance; + var exceedsTop = popperRect.top - y > (popperPlacement === "top" ? interactiveBorder + distance : interactiveBorder); + var exceedsBottom = y - popperRect.bottom > (popperPlacement === "bottom" ? interactiveBorder + distance : interactiveBorder); + var exceedsLeft = popperRect.left - x > (popperPlacement === "left" ? interactiveBorder + distance : interactiveBorder); + var exceedsRight = x - popperRect.right > (popperPlacement === "right" ? interactiveBorder + distance : interactiveBorder); + return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight; +} +function getOffsetDistanceInPx(distance) { + return -(distance - 10) + "px"; +} +var isUsingTouch = false; +function onDocumentTouch() { + if (isUsingTouch) { + return; + } + isUsingTouch = true; + if (isIOS) { + document.body.classList.add(IOS_CLASS); + } + if (window.performance) { + document.addEventListener("mousemove", onDocumentMouseMove); + } +} +var lastMouseMoveTime = 0; +function onDocumentMouseMove() { + var now = performance.now(); + if (now - lastMouseMoveTime < 20) { + isUsingTouch = false; + document.removeEventListener("mousemove", onDocumentMouseMove); + if (!isIOS) { + document.body.classList.remove(IOS_CLASS); + } + } + lastMouseMoveTime = now; +} +function onDocumentClick(event) { + if (!(event.target instanceof Element)) { + return hideAll(); + } + var popper = closest(event.target, POPPER_SELECTOR); + if (popper && popper._tippy && popper._tippy.props.interactive) { + return; + } + var reference = closestCallback(event.target, function(el) { + return el._tippy && el._tippy.reference === el; + }); + if (reference) { + var instance = reference._tippy; + if (instance) { + var isClickTrigger = includes(instance.props.trigger || "", "click"); + if (isUsingTouch || isClickTrigger) { + return hideAll({ + exclude: instance, + checkHideOnClick: true + }); + } + if (instance.props.hideOnClick !== true || isClickTrigger) { + return; + } + instance.clearDelayTimeouts(); + } + } + hideAll({ + checkHideOnClick: true + }); +} +function onWindowBlur() { + var _document = document, activeElement = _document.activeElement; + if (activeElement && activeElement.blur && activeElement._tippy) { + activeElement.blur(); + } +} +function bindGlobalEventListeners() { + document.addEventListener("click", onDocumentClick, true); + document.addEventListener("touchstart", onDocumentTouch, PASSIVE); + window.addEventListener("blur", onWindowBlur); +} +var idCounter = 1; +function createTippy(reference, collectionProps) { + var props = evaluateProps(reference, collectionProps); + if (!props.multiple && reference._tippy) { + return null; + } + var lastTriggerEventType; + var lastMouseMoveEvent; + var showTimeoutId; + var hideTimeoutId; + var animationFrameId; + var isScheduledToShow = false; + var currentParentNode; + var previousPlacement; + var wasVisibleDuringPreviousUpdate = false; + var currentTransitionEndListener; + var listeners = []; + var debouncedOnMouseMove = props.interactiveDebounce > 0 ? debounce(onMouseMove, props.interactiveDebounce) : onMouseMove; + var id = idCounter++; + var popper = createPopperElement(id, props); + var popperChildren = getChildren(popper); + var popperInstance = null; + var state = { + isEnabled: true, + isVisible: false, + isDestroyed: false, + isMounted: false, + isShown: false + }; + var instance = { + id, + reference, + popper, + popperChildren, + popperInstance, + props, + state, + clearDelayTimeouts, + set: set2, + setContent: setContent$$1, + show, + hide: hide2, + enable, + disable, + destroy: destroy2 + }; + reference._tippy = instance; + popper._tippy = instance; + addTriggersToReference(); + if (!props.lazy) { + createPopperInstance(); + instance.popperInstance.disableEventListeners(); + } + if (props.showOnInit) { + scheduleShow(); + } + if (props.a11y && !props.target && !canReceiveFocus(reference)) { + reference.setAttribute("tabindex", "0"); + } + popper.addEventListener("mouseenter", function(event) { + if (instance.props.interactive && instance.state.isVisible && lastTriggerEventType === "mouseenter") { + scheduleShow(event); + } + }); + popper.addEventListener("mouseleave", function() { + if (instance.props.interactive && lastTriggerEventType === "mouseenter") { + document.addEventListener("mousemove", debouncedOnMouseMove); + } + }); + return instance; + function removeFollowCursorListener() { + document.removeEventListener("mousemove", positionVirtualReferenceNearCursor); + } + function cleanupOldMouseListeners() { + document.body.removeEventListener("mouseleave", scheduleHide); + document.removeEventListener("mousemove", debouncedOnMouseMove); + } + function getTransitionableElements() { + return [instance.popperChildren.tooltip, instance.popperChildren.backdrop, instance.popperChildren.content]; + } + function hasFollowCursorBehavior() { + return instance.props.followCursor && !isUsingTouch && lastTriggerEventType !== "focus"; + } + function makeSticky() { + setTransitionDuration([instance.popper], isIE ? 0 : instance.props.updateDuration); + function updatePosition() { + if (instance.popperInstance) { + instance.popperInstance.scheduleUpdate(); + } + if (instance.state.isMounted) { + requestAnimationFrame(updatePosition); + } else { + setTransitionDuration([instance.popper], 0); + } + } + updatePosition(); + } + function onTransitionedOut(duration, callback) { + onTransitionEnd(duration, function() { + if (!instance.state.isVisible && currentParentNode && currentParentNode.contains(instance.popper)) { + callback(); + } + }); + } + function onTransitionedIn(duration, callback) { + onTransitionEnd(duration, callback); + } + function onTransitionEnd(duration, callback) { + var tooltip = instance.popperChildren.tooltip; + function listener(event) { + if (event.target === tooltip) { + updateTransitionEndListener(tooltip, "remove", listener); + callback(); + } + } + if (duration === 0) { + return callback(); + } + updateTransitionEndListener(tooltip, "remove", currentTransitionEndListener); + updateTransitionEndListener(tooltip, "add", listener); + currentTransitionEndListener = listener; + } + function on2(eventType, handler) { + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + instance.reference.addEventListener(eventType, handler, options); + listeners.push({ + eventType, + handler, + options + }); + } + function addTriggersToReference() { + if (instance.props.touchHold && !instance.props.target) { + on2("touchstart", onTrigger, PASSIVE); + on2("touchend", onMouseLeave, PASSIVE); + } + instance.props.trigger.trim().split(" ").forEach(function(eventType) { + if (eventType === "manual") { + return; + } + if (!instance.props.target) { + on2(eventType, onTrigger); + switch (eventType) { + case "mouseenter": + on2("mouseleave", onMouseLeave); + break; + case "focus": + on2(isIE ? "focusout" : "blur", onBlur); + break; + } + } else { + switch (eventType) { + case "mouseenter": + on2("mouseover", onDelegateShow); + on2("mouseout", onDelegateHide); + break; + case "focus": + on2("focusin", onDelegateShow); + on2("focusout", onDelegateHide); + break; + case "click": + on2(eventType, onDelegateShow); + break; + } + } + }); + } + function removeTriggersFromReference() { + listeners.forEach(function(_ref) { + var eventType = _ref.eventType, handler = _ref.handler, options = _ref.options; + instance.reference.removeEventListener(eventType, handler, options); + }); + listeners = []; + } + function positionVirtualReferenceNearCursor(event) { + var _lastMouseMoveEvent = lastMouseMoveEvent = event, clientX = _lastMouseMoveEvent.clientX, clientY = _lastMouseMoveEvent.clientY; + if (!instance.popperInstance) { + return; + } + var placement = getBasicPlacement(instance.popper); + var padding = instance.props.arrow ? PADDING + (instance.props.arrowType === "round" ? 18 : 16) : PADDING; + var isVerticalPlacement = includes(["top", "bottom"], placement); + var isHorizontalPlacement = includes(["left", "right"], placement); + var x = isVerticalPlacement ? Math.max(padding, clientX) : clientX; + var y = isHorizontalPlacement ? Math.max(padding, clientY) : clientY; + if (isVerticalPlacement && x > padding) { + x = Math.min(clientX, window.innerWidth - padding); + } + if (isHorizontalPlacement && y > padding) { + y = Math.min(clientY, window.innerHeight - padding); + } + var rect = instance.reference.getBoundingClientRect(); + var followCursor = instance.props.followCursor; + var isHorizontal = followCursor === "horizontal"; + var isVertical = followCursor === "vertical"; + instance.popperInstance.reference = _extends({}, instance.popperInstance.reference, { + getBoundingClientRect: function getBoundingClientRect2() { + return { + width: 0, + height: 0, + top: isHorizontal ? rect.top : y, + bottom: isHorizontal ? rect.bottom : y, + left: isVertical ? rect.left : x, + right: isVertical ? rect.right : x + }; + }, + clientWidth: 0, + clientHeight: 0 + }); + instance.popperInstance.scheduleUpdate(); + if (followCursor === "initial" && instance.state.isVisible) { + removeFollowCursorListener(); + } + } + function createDelegateChildTippy(event) { + if (event) { + var targetEl = closest(event.target, instance.props.target); + if (targetEl && !targetEl._tippy) { + createTippy(targetEl, _extends({}, instance.props, { + content: evaluateValue(collectionProps.content, [targetEl]), + appendTo: collectionProps.appendTo, + target: "", + showOnInit: true + })); + scheduleShow(event); + } + } + } + function onTrigger(event) { + if (!instance.state.isEnabled || isEventListenerStopped(event)) { + return; + } + if (!instance.state.isVisible) { + lastTriggerEventType = event.type; + if (event instanceof MouseEvent) { + lastMouseMoveEvent = event; + } + } + if (event.type === "click" && instance.props.hideOnClick !== false && instance.state.isVisible) { + scheduleHide(); + } else { + scheduleShow(event); + } + } + function onMouseMove(event) { + var referenceTheCursorIsOver = closestCallback(event.target, function(el) { + return el._tippy; + }); + var isCursorOverPopper = closest(event.target, POPPER_SELECTOR) === instance.popper; + var isCursorOverReference = referenceTheCursorIsOver === instance.reference; + if (isCursorOverPopper || isCursorOverReference) { + return; + } + if (isCursorOutsideInteractiveBorder(getBasicPlacement(instance.popper), instance.popper.getBoundingClientRect(), event, instance.props)) { + cleanupOldMouseListeners(); + scheduleHide(); + } + } + function onMouseLeave(event) { + if (isEventListenerStopped(event)) { + return; + } + if (instance.props.interactive) { + document.body.addEventListener("mouseleave", scheduleHide); + document.addEventListener("mousemove", debouncedOnMouseMove); + return; + } + scheduleHide(); + } + function onBlur(event) { + if (event.target !== instance.reference) { + return; + } + if (instance.props.interactive && event.relatedTarget && instance.popper.contains(event.relatedTarget)) { + return; + } + scheduleHide(); + } + function onDelegateShow(event) { + if (closest(event.target, instance.props.target)) { + scheduleShow(event); + } + } + function onDelegateHide(event) { + if (closest(event.target, instance.props.target)) { + scheduleHide(); + } + } + function isEventListenerStopped(event) { + var supportsTouch = "ontouchstart" in window; + var isTouchEvent = includes(event.type, "touch"); + var touchHold = instance.props.touchHold; + return supportsTouch && isUsingTouch && touchHold && !isTouchEvent || isUsingTouch && !touchHold && isTouchEvent; + } + function createPopperInstance() { + var popperOptions = instance.props.popperOptions; + var _instance$popperChild = instance.popperChildren, tooltip = _instance$popperChild.tooltip, arrow2 = _instance$popperChild.arrow; + var preventOverflowModifier = getModifier(popperOptions, "preventOverflow"); + function applyMutations(data) { + if (instance.props.flip && !instance.props.flipOnUpdate) { + if (data.flipped) { + instance.popperInstance.options.placement = data.placement; + } + setFlipModifierEnabled(instance.popperInstance.modifiers, false); + } + tooltip.setAttribute(PLACEMENT_ATTRIBUTE, data.placement); + if (data.attributes[OUT_OF_BOUNDARIES_ATTRIBUTE] !== false) { + tooltip.setAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE, ""); + } else { + tooltip.removeAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE); + } + if (previousPlacement && previousPlacement !== data.placement && wasVisibleDuringPreviousUpdate) { + tooltip.style.transition = "none"; + requestAnimationFrame(function() { + tooltip.style.transition = ""; + }); + } + previousPlacement = data.placement; + wasVisibleDuringPreviousUpdate = instance.state.isVisible; + var basicPlacement = getBasicPlacement(instance.popper); + var styles = tooltip.style; + styles.top = styles.bottom = styles.left = styles.right = ""; + styles[basicPlacement] = getOffsetDistanceInPx(instance.props.distance); + var padding = preventOverflowModifier && preventOverflowModifier.padding !== void 0 ? preventOverflowModifier.padding : PADDING; + var isPaddingNumber = typeof padding === "number"; + var computedPadding = _extends({ + top: isPaddingNumber ? padding : padding.top, + bottom: isPaddingNumber ? padding : padding.bottom, + left: isPaddingNumber ? padding : padding.left, + right: isPaddingNumber ? padding : padding.right + }, !isPaddingNumber && padding); + computedPadding[basicPlacement] = isPaddingNumber ? padding + instance.props.distance : (padding[basicPlacement] || 0) + instance.props.distance; + instance.popperInstance.modifiers.filter(function(m) { + return m.name === "preventOverflow"; + })[0].padding = computedPadding; + } + var config = _extends({ + placement: instance.props.placement + }, popperOptions, { + modifiers: _extends({}, popperOptions ? popperOptions.modifiers : {}, { + preventOverflow: _extends({ + boundariesElement: instance.props.boundary, + padding: PADDING + }, preventOverflowModifier), + arrow: _extends({ + element: arrow2, + enabled: !!arrow2 + }, getModifier(popperOptions, "arrow")), + flip: _extends({ + enabled: instance.props.flip, + padding: instance.props.distance + PADDING, + behavior: instance.props.flipBehavior + }, getModifier(popperOptions, "flip")), + offset: _extends({ + offset: instance.props.offset + }, getModifier(popperOptions, "offset")) + }), + onCreate: function onCreate2(data) { + applyMutations(data); + if (popperOptions && popperOptions.onCreate) { + popperOptions.onCreate(data); + } + }, + onUpdate: function onUpdate2(data) { + applyMutations(data); + if (popperOptions && popperOptions.onUpdate) { + popperOptions.onUpdate(data); + } + } + }); + instance.popperInstance = new Popper(instance.reference, instance.popper, config); + } + function mount(callback) { + var shouldEnableListeners = !hasFollowCursorBehavior() && !(instance.props.followCursor === "initial" && isUsingTouch); + if (!instance.popperInstance) { + createPopperInstance(); + if (!shouldEnableListeners) { + instance.popperInstance.disableEventListeners(); + } + } else { + if (!hasFollowCursorBehavior()) { + instance.popperInstance.scheduleUpdate(); + if (shouldEnableListeners) { + instance.popperInstance.enableEventListeners(); + } + } + setFlipModifierEnabled(instance.popperInstance.modifiers, instance.props.flip); + } + instance.popperInstance.reference = instance.reference; + var arrow2 = instance.popperChildren.arrow; + if (hasFollowCursorBehavior()) { + if (arrow2) { + arrow2.style.margin = "0"; + } + if (lastMouseMoveEvent) { + positionVirtualReferenceNearCursor(lastMouseMoveEvent); + } + } else if (arrow2) { + arrow2.style.margin = ""; + } + if (isUsingTouch && lastMouseMoveEvent && instance.props.followCursor === "initial") { + positionVirtualReferenceNearCursor(lastMouseMoveEvent); + if (arrow2) { + arrow2.style.margin = "0"; + } + } + afterPopperPositionUpdates(instance.popperInstance, callback); + var appendTo2 = instance.props.appendTo; + currentParentNode = appendTo2 === "parent" ? instance.reference.parentNode : evaluateValue(appendTo2, [instance.reference]); + if (!currentParentNode.contains(instance.popper)) { + currentParentNode.appendChild(instance.popper); + instance.props.onMount(instance); + instance.state.isMounted = true; + } + } + function scheduleShow(event) { + clearDelayTimeouts(); + if (instance.state.isVisible) { + return; + } + if (instance.props.target) { + return createDelegateChildTippy(event); + } + isScheduledToShow = true; + if (instance.props.wait) { + return instance.props.wait(instance, event); + } + if (hasFollowCursorBehavior() && !instance.state.isMounted) { + document.addEventListener("mousemove", positionVirtualReferenceNearCursor); + } + var delay = getValue(instance.props.delay, 0, defaultProps.delay); + if (delay) { + showTimeoutId = setTimeout(function() { + show(); + }, delay); + } else { + show(); + } + } + function scheduleHide() { + clearDelayTimeouts(); + if (!instance.state.isVisible) { + return removeFollowCursorListener(); + } + isScheduledToShow = false; + var delay = getValue(instance.props.delay, 1, defaultProps.delay); + if (delay) { + hideTimeoutId = setTimeout(function() { + if (instance.state.isVisible) { + hide2(); + } + }, delay); + } else { + animationFrameId = requestAnimationFrame(function() { + hide2(); + }); + } + } + function enable() { + instance.state.isEnabled = true; + } + function disable() { + instance.state.isEnabled = false; + } + function clearDelayTimeouts() { + clearTimeout(showTimeoutId); + clearTimeout(hideTimeoutId); + cancelAnimationFrame(animationFrameId); + } + function set2(options) { + options = options || {}; + validateOptions(options, defaultProps); + var prevProps = instance.props; + var nextProps = evaluateProps(instance.reference, _extends({}, instance.props, options, { + ignoreAttributes: true + })); + nextProps.ignoreAttributes = hasOwnProperty(options, "ignoreAttributes") ? options.ignoreAttributes || false : prevProps.ignoreAttributes; + instance.props = nextProps; + if (hasOwnProperty(options, "trigger") || hasOwnProperty(options, "touchHold")) { + removeTriggersFromReference(); + addTriggersToReference(); + } + if (hasOwnProperty(options, "interactiveDebounce")) { + cleanupOldMouseListeners(); + debouncedOnMouseMove = debounce(onMouseMove, options.interactiveDebounce || 0); + } + updatePopperElement(instance.popper, prevProps, nextProps); + instance.popperChildren = getChildren(instance.popper); + if (instance.popperInstance) { + instance.popperInstance.update(); + if (POPPER_INSTANCE_DEPENDENCIES.some(function(prop) { + return hasOwnProperty(options, prop) && options[prop] !== prevProps[prop]; + })) { + instance.popperInstance.destroy(); + createPopperInstance(); + if (!instance.state.isVisible) { + instance.popperInstance.disableEventListeners(); + } + if (instance.props.followCursor && lastMouseMoveEvent) { + positionVirtualReferenceNearCursor(lastMouseMoveEvent); + } + } + } + } + function setContent$$1(content) { + set2({ + content + }); + } + function show() { + var duration = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getValue(instance.props.duration, 0, defaultProps.duration[1]); + if (instance.state.isDestroyed || !instance.state.isEnabled || isUsingTouch && !instance.props.touch) { + return; + } + if (instance.reference.hasAttribute("disabled")) { + return; + } + if (instance.props.onShow(instance) === false) { + return; + } + instance.popper.style.visibility = "visible"; + instance.state.isVisible = true; + if (instance.props.interactive) { + instance.reference.classList.add(ACTIVE_CLASS); + } + var transitionableElements = getTransitionableElements(); + setTransitionDuration(transitionableElements.concat(instance.popper), 0); + mount(function() { + if (!instance.state.isVisible) { + return; + } + if (!hasFollowCursorBehavior()) { + instance.popperInstance.update(); + } + if (instance.popperChildren.backdrop) { + instance.popperChildren.content.style.transitionDelay = Math.round(duration / 12) + "ms"; + } + if (instance.props.sticky) { + makeSticky(); + } + setTransitionDuration([instance.popper], props.updateDuration); + setTransitionDuration(transitionableElements, duration); + setVisibilityState(transitionableElements, "visible"); + onTransitionedIn(duration, function() { + if (instance.props.aria) { + instance.reference.setAttribute("aria-".concat(instance.props.aria), instance.popper.id); + } + instance.props.onShown(instance); + instance.state.isShown = true; + }); + }); + } + function hide2() { + var duration = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getValue(instance.props.duration, 1, defaultProps.duration[1]); + if (instance.state.isDestroyed || !instance.state.isEnabled) { + return; + } + if (instance.props.onHide(instance) === false) { + return; + } + instance.popper.style.visibility = "hidden"; + instance.state.isVisible = false; + instance.state.isShown = false; + wasVisibleDuringPreviousUpdate = false; + if (instance.props.interactive) { + instance.reference.classList.remove(ACTIVE_CLASS); + } + var transitionableElements = getTransitionableElements(); + setTransitionDuration(transitionableElements, duration); + setVisibilityState(transitionableElements, "hidden"); + onTransitionedOut(duration, function() { + if (!isScheduledToShow) { + removeFollowCursorListener(); + } + if (instance.props.aria) { + instance.reference.removeAttribute("aria-".concat(instance.props.aria)); + } + instance.popperInstance.disableEventListeners(); + instance.popperInstance.options.placement = instance.props.placement; + currentParentNode.removeChild(instance.popper); + instance.props.onHidden(instance); + instance.state.isMounted = false; + }); + } + function destroy2(destroyTargetInstances) { + if (instance.state.isDestroyed) { + return; + } + if (instance.state.isMounted) { + hide2(0); + } + removeTriggersFromReference(); + delete instance.reference._tippy; + if (instance.props.target && destroyTargetInstances) { + arrayFrom(instance.reference.querySelectorAll(instance.props.target)).forEach(function(child) { + if (child._tippy) { + child._tippy.destroy(); + } + }); + } + if (instance.popperInstance) { + instance.popperInstance.destroy(); + } + instance.state.isDestroyed = true; + } +} +function group(instances) { + var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref$delay = _ref.delay, delay = _ref$delay === void 0 ? instances[0].props.delay : _ref$delay, _ref$duration = _ref.duration, duration = _ref$duration === void 0 ? 0 : _ref$duration; + if (instances.some(function(instance) { + return hasOwnProperty(instance, "_originalProps"); + })) { + return; + } + var isAnyTippyOpen = false; + instances.forEach(function(instance) { + instance._originalProps = _extends({}, instance.props); + }); + function setIsAnyTippyOpen(value) { + isAnyTippyOpen = value; + updateInstances(); + } + function onShow2(instance) { + instance._originalProps.onShow(instance); + instances.forEach(function(instance2) { + instance2.set({ + duration + }); + instance2.hide(); + }); + setIsAnyTippyOpen(true); + } + function onHide2(instance) { + instance._originalProps.onHide(instance); + setIsAnyTippyOpen(false); + } + function onShown2(instance) { + instance._originalProps.onShown(instance); + instance.set({ + duration: instance._originalProps.duration + }); + } + function updateInstances() { + instances.forEach(function(instance) { + instance.set({ + onShow: onShow2, + onShown: onShown2, + onHide: onHide2, + delay: isAnyTippyOpen ? [0, Array.isArray(delay) ? delay[1] : delay] : delay, + duration: isAnyTippyOpen ? duration : instance._originalProps.duration + }); + }); + } + updateInstances(); +} +var globalEventListenersBound = false; +function tippy(targets, options) { + validateOptions(options || {}, defaultProps); + if (!globalEventListenersBound) { + bindGlobalEventListeners(); + globalEventListenersBound = true; + } + var props = _extends({}, defaultProps, options); + if (isBareVirtualElement(targets)) { + polyfillElementPrototypeProperties(targets); + } + var instances = getArrayOfElements(targets).reduce(function(acc, reference) { + var instance = reference && createTippy(reference, props); + if (instance) { + acc.push(instance); + } + return acc; + }, []); + return isSingular(targets) ? instances[0] : instances; +} +tippy.version = version; +tippy.defaults = defaultProps; +tippy.setDefaults = function(partialDefaults) { + Object.keys(partialDefaults).forEach(function(key) { + defaultProps[key] = partialDefaults[key]; + }); +}; +tippy.hideAll = hideAll; +tippy.group = group; +function autoInit() { + arrayFrom(document.querySelectorAll("[data-tippy]")).forEach(function(el) { + var content = el.getAttribute("data-tippy"); + if (content) { + tippy(el, { + content + }); + } + }); +} +if (isBrowser) { + setTimeout(autoInit); +} +function on(event, target, callback, options = { passive: true }) { + target.addEventListener(event, callback, options); + return () => { + target.removeEventListener(event, callback, options); + }; +} +function onKey(key, event, target, callback, options) { + return on(event, target, (e) => { + if (!key) { + callback(e); + } else if (key === e.key || key === e.keyCode) { + callback(e); + } + }, options); +} +function onKeydown(keys2, target, callback, options) { + return onKey(keys2, "keydown", target, callback, options); +} +function onKeyup(keys2, target, callback, options) { + return onKey(keys2, "keyup", target, callback, options); +} +function onKeypress(keys2, target, callback, options) { + return onKey(keys2, "keypress", target, callback, options); +} +const events = { + on, + onKeydown, + onKeyup, + onKeypress +}; +const UiFocusContainer_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$z = { + name: "UiFocusContainer", + props: { + containFocus: { + type: Boolean, + default: true + }, + focusRedirector: Function, + disabled: { + type: Boolean, + default: false + }, + tag: { + type: String, + default: "div" + }, + lazy: { + type: Boolean, + default: false + } + }, + emits: ["focus-overflow"], + computed: { + renderRedirector() { + if (this.disabled) { + return false; + } + return this.lazy ? this.containFocus : true; + } + }, + methods: { + focus() { + this.$refs.content.focus(); + }, + redirectFocus(e, options) { + if (!this.containFocus) { + this.$emit("focus-overflow", e, options); + return; + } + e.stopPropagation(); + if (this.focusRedirector) { + this.focusRedirector(e, options); + return; + } + if (options.isTabbingForward) { + this.$refs.content.focus(); + } else { + this.$refs.lastFocusable.focus(); + } + } + } +}; +const _hoisted_1$x = { + ref: "content", + class: "ui-focus-container__content", + tabindex: "-1" +}; +const _hoisted_2$r = { + key: 1, + ref: "lastFocusable", + class: "ui-focus-container__last-focusable", + tabindex: "-1" +}; +function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createBlock(resolveDynamicComponent($props.tag), { class: "ui-focus-container" }, { + default: withCtx(() => [ + $options.renderRedirector ? (openBlock(), createElementBlock("span", { + key: 0, + class: "ui-focus-container__focus-redirector", + tabindex: "0", + onFocus: _cache[0] || (_cache[0] = ($event) => $options.redirectFocus($event, { isTabbingForward: false })) + }, null, 32)) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_1$x, [ + renderSlot(_ctx.$slots, "default") + ], 512), + !$props.disabled && $props.containFocus ? (openBlock(), createElementBlock("span", _hoisted_2$r, null, 512)) : createCommentVNode("v-if", true), + $options.renderRedirector ? (openBlock(), createElementBlock("span", { + key: 2, + class: "ui-focus-container__focus-redirector", + tabindex: "0", + onFocus: _cache[1] || (_cache[1] = ($event) => $options.redirectFocus($event, { isTabbingForward: true })) + }, null, 32)) : createCommentVNode("v-if", true) + ]), + _: 3 + }); +} +const UiFocusContainer = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$z], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiFocusContainer.vue"]]); +const UiPopover_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$y = { + name: "UiPopover", + components: { + UiFocusContainer + }, + props: { + animation: { + type: String, + default: "fade" + }, + appendToBody: { + type: Boolean, + default: true + }, + closeOnScroll: { + type: Boolean, + default: true + }, + closeOnExternalClick: { + type: Boolean, + default: true + }, + closeOnEsc: { + type: Boolean, + default: true + }, + constrainToScrollParent: { + type: Boolean, + default: true + }, + containFocus: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + focusRedirector: Function, + openOn: { + type: String, + default: "click" + }, + position: { + type: String, + default: "bottom-start" + }, + raised: { + type: Boolean, + default: true + }, + trigger: { + validator(value) { + return elementRef.validate( + value, + '[UiPopover]: Invalid prop: "trigger". Expected Element, VueComponent or CSS selector string which matches an existing element.' + ); + } + }, + zIndex: Number + }, + emits: ["open", "close", "reveal", "hide"], + data() { + return { + returnFocus: true + }; + }, + watch: { + disabled(value) { + if (this.tip) { + if (value === true) { + this.tip.disable(); + } else { + this.tip.enable(); + } + } + } + }, + created() { + this.tip = null; + }, + mounted() { + this.setupPopover(); + }, + beforeUnmount() { + this.destroyPopover(); + }, + methods: { + setupPopover() { + this.triggerEl = elementRef.resolve(this.trigger, this.$el.parentElement); + if (!this.triggerEl) { + console.error("[UiPopover]: Trigger element not found."); + return; + } + const body = this.triggerEl.getRootNode() === document ? document.body : this.triggerEl.getRootNode(); + const options = { + animateFill: false, + animation: this.animation === "none" ? "fade" : this.animation, + appendTo: this.appendToBody ? body : this.triggerEl.parentElement, + arrow: false, + content: this.$el, + delay: [0, 0], + distance: 0, + duration: this.animation === "none" ? 0 : [250, 200], + hideOnClick: this.closeOnExternalClick, + ignoreAttributes: true, + interactive: true, + lazy: true, + maxWidth: "100%", + multiple: true, + onHidden: this.onHidden, + onHide: this.onClose, + onShow: this.onOpen, + onShown: this.onShown, + placement: this.position, + role: "dialog", + theme: "ui-popover", + trigger: this.openOn.replace("hover", "mouseenter"), + zIndex: this.zIndex, + popperOptions: { + modifiers: { + computeStyle: { + gpuAcceleration: !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform)) + } + } + } + }; + if (!this.constrainToScrollParent) { + options.popperOptions.modifiers.preventOverflow = { enabled: false }; + options.popperOptions.modifiers.hide = { enabled: false }; + } + this.tip = tippy(this.triggerEl, options); + if (this.disabled) { + this.tip.disable(); + } + }, + destroyPopover() { + if (this.tip) { + this.removeCloseEventListeners(); + this.tip.destroy(); + this.tip = null; + } + }, + isOpen() { + return this.tip && this.tip.state.isVisible; + }, + open() { + if (this.tip) { + this.tip.show(); + } + }, + close(options = { returnFocus: true }) { + if (this.tip) { + this.returnFocus = options.returnFocus; + this.tip.hide(); + } + }, + toggle(options = { returnFocus: true }) { + if (this.tip) { + this.returnFocus = options.returnFocus; + this.tip[this.isOpen() ? "hide" : "show"](); + } + }, + scheduleUpdate() { + if (this.tip) { + this.tip.popperInstance.scheduleUpdate(); + } + }, + onOpen() { + this.addCloseEventListeners(); + classlist.add(this.triggerEl, "has-dropdown-open"); + this.$emit("open"); + }, + onClose() { + if (this.returnFocus && this.lastFocusedElement) { + this.lastFocusedElement.focus(); + } + this.removeCloseEventListeners(); + classlist.remove(this.triggerEl, "has-dropdown-open"); + this.$emit("close"); + this.returnFocus = true; + }, + onShown() { + this.lastFocusedElement = document.activeElement; + this.$refs.focusContainer.focus(); + this.$emit("reveal"); + }, + onHidden() { + this.$emit("hide"); + }, + closeOnExternal(event, closeOptions) { + if (!this.$el.contains(event.target)) { + this.close(closeOptions); + } + }, + addCloseEventListeners() { + this.removeCloseEventListeners(); + setTimeout(() => { + if (this.closeOnExternalClick) { + this.removeExternalClickListener = events.on("click", document, (e) => { + this.closeOnExternal(e, { returnFocus: false }); + }); + } + if (this.closeOnEsc) { + this.removeEscListener = events.onKeydown(27, document, () => { + this.close({ returnFocus: true }); + }); + } + if (this.closeOnScroll) { + this.removeScrollListener = events.on("scroll", document, (e) => { + this.closeOnExternal(e, { returnFocus: true }); + }); + } + }, 0); + }, + removeCloseEventListeners() { + if (this.removeExternalClickListener) { + this.removeExternalClickListener(); + this.removeExternalClickListener = null; + } + if (this.removeEscListener) { + this.removeEscListener(); + this.removeEscListener = null; + } + if (this.removeScrollListener) { + this.removeScrollListener(); + this.removeScrollListener = null; + } + } + } +}; +function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_focus_container = resolveComponent("ui-focus-container"); + return openBlock(), createBlock(_component_ui_focus_container, { + ref: "focusContainer", + class: normalizeClass(["ui-popover", { "is-raised": $props.raised }]), + role: "dialog", + "contain-focus": $props.containFocus, + "focus-redirector": $props.focusRedirector, + onFocusOverflow: _cache[0] || (_cache[0] = ($event) => $options.close()) + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "default") + ]), + _: 3 + }, 8, ["class", "contain-focus", "focus-redirector"]); +} +const UiPopover = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$y], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiPopover.vue"]]); +const UiProgressCircular_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$x = { + name: "UiProgressCircular", + props: { + type: { + type: String, + default: "indeterminate" + }, + color: { + type: String, + default: "primary" + }, + progress: { + type: Number, + default: 0 + }, + size: { + type: Number, + default: 32 + }, + stroke: Number, + autoStroke: { + type: Boolean, + default: true + }, + disableTransition: { + type: Boolean, + default: false + } + }, + computed: { + classes() { + return [ + `ui-progress-circular--color-${this.color}`, + `ui-progress-circular--type-${this.type}` + ]; + }, + strokeDashArray() { + const circumference = 2 * Math.PI * this.radius; + return Math.round(circumference * 1e3) / 1e3; + }, + strokeDashOffset() { + const progress = this.moderateProgress(this.progress); + const circumference = 2 * Math.PI * this.radius; + return (100 - progress) / 100 * circumference; + }, + radius() { + const stroke = this.stroke ? this.stroke : 4; + return (this.size - stroke) / 2; + }, + calculatedStroke() { + if (this.stroke) { + return this.stroke; + } + if (this.autoStroke) { + return parseInt(this.size / 8, 10); + } + return 4; + } + }, + methods: { + moderateProgress(progress) { + if (isNaN(progress) || progress < 0) { + return 0; + } + if (progress > 100) { + return 100; + } + return progress; + } + } +}; +const _hoisted_1$w = ["aria-valuenow", "height", "width"]; +const _hoisted_2$q = ["cx", "cy", "r", "stroke-dasharray"]; +const _hoisted_3$n = { + key: 1, + class: "ui-progress-circular__indeterminate", + role: "progressbar", + viewBox: "25 25 50 50", + "aria-valuemax": 100, + "aria-valuemin": 0 +}; +const _hoisted_4$f = ["stroke-width"]; +function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createBlock(Transition, { + name: $props.disableTransition ? null : "ui-progress-circular--transition-fade" + }, { + default: withCtx(() => [ + createElementVNode("div", { + class: normalizeClass(["ui-progress-circular", $options.classes]), + style: normalizeStyle({ width: $props.size + "px", height: $props.size + "px" }) + }, [ + createCommentVNode(" Alternative circle rendering to explore: http://jsfiddle.net/6e3QJ/29/ "), + $props.type === "determinate" ? (openBlock(), createElementBlock("svg", { + key: 0, + class: "ui-progress-circular__determinate", + role: "progressbar", + "aria-valuemax": 100, + "aria-valuemin": 0, + "aria-valuenow": $props.progress, + height: $props.size, + width: $props.size + }, [ + createElementVNode("circle", { + class: "ui-progress-circular__determinate-path", + fill: "transparent", + "stroke-dashoffset": "0", + cx: $props.size / 2, + cy: $props.size / 2, + r: $options.radius, + "stroke-dasharray": $options.strokeDashArray, + style: normalizeStyle({ "stroke-dashoffset": $options.strokeDashOffset, "stroke-width": $options.calculatedStroke }) + }, null, 12, _hoisted_2$q) + ], 8, _hoisted_1$w)) : (openBlock(), createElementBlock("svg", _hoisted_3$n, [ + createElementVNode("circle", { + class: "ui-progress-circular__indeterminate-path", + cx: "50", + cy: "50", + fill: "none", + r: "20", + "stroke-miterlimit": "10", + "stroke-width": $options.calculatedStroke + }, null, 8, _hoisted_4$f) + ])) + ], 6) + ]), + _: 1 + }, 8, ["name"]); +} +const UiProgressCircular = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render$x], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiProgressCircular.vue"]]); +const UiTooltip_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$w = { + name: "UiTooltip", + props: { + animation: { + type: String, + default: "fade" + }, + appendToBody: { + type: Boolean, + default: true + }, + openDelay: { + type: Number, + default: 0 + }, + openOn: { + type: String, + default: "mouseenter focus" + }, + position: { + type: String, + default: "bottom" + }, + trigger: { + validator(value) { + return elementRef.validate( + value, + '[UiTooltip]: Invalid prop: "trigger". Expected Element, VueComponent or CSS selector string.' + ); + } + }, + zIndex: Number + }, + mounted() { + this.triggerEl = elementRef.resolve(this.trigger, this.$el.parentElement); + if (!this.triggerEl) { + console.error("[UiTooltip]: Trigger element not found."); + return; + } + const body = this.triggerEl.getRootNode() === document ? document.body : this.triggerEl.getRootNode(); + const options = { + animateFill: this.animation !== "fade", + animation: this.animation === "none" ? "fade" : this.animation, + appendTo: this.appendToBody ? body : this.triggerEl.parentElement, + arrow: false, + content: this.$el, + delay: [this.openDelay, 0], + distance: 4, + duration: this.animation === "none" ? 0 : [250, 200], + ignoreAttributes: true, + lazy: true, + multiple: true, + placement: this.position, + theme: "ui-tooltip", + trigger: this.openOn.replace("hover", "mouseenter"), + zIndex: this.zIndex, + popperOptions: { + modifiers: { + computeStyle: { + gpuAcceleration: !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform)) + } + } + } + }; + this.tip = tippy(this.triggerEl, options); + }, + beforeUnmount() { + if (this.tip) { + this.tip.destroy(); + this.tip = null; + } + } +}; +const _hoisted_1$v = { class: "ui-tooltip" }; +function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock("div", _hoisted_1$v, [ + renderSlot(_ctx.$slots, "default") + ]); +} +const UiTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render$w], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTooltip.vue"]]); +const UiButton_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$v = { + name: "UiButton", + components: { + UiIcon, + UiPopover, + UiProgressCircular, + UiRippleInk, + UiTooltip + }, + props: { + type: { + type: String, + default: "primary" + }, + buttonType: String, + href: String, + color: { + type: String, + default: "default" + }, + size: { + type: String, + default: "normal" + }, + raised: { + type: Boolean, + default: false + }, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + loading: { + type: Boolean, + default: false + }, + hasDropdown: { + type: Boolean, + default: false + }, + dropdownPosition: { + type: String, + default: "bottom-start" + }, + appendDropdownToBody: { + type: Boolean, + default: true + }, + constrainDropdownToScrollParent: { + type: Boolean, + default: true + }, + openDropdownOn: { + type: String, + default: "click" + }, + tooltip: String, + openTooltipOn: String, + tooltipPosition: String, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["dropdown-open", "dropdown-close"], + computed: { + classes() { + return [ + `ui-button--type-${this.type}`, + `ui-button--color-${this.color}`, + `ui-button--icon-position-${this.iconPosition}`, + `ui-button--size-${this.size}`, + { "is-anchor": this.isAnchor }, + { "is-raised": this.raised }, + { "is-loading": this.loading }, + { "is-disabled": this.disabled || this.loading }, + { "has-dropdown": this.hasDropdown } + ]; + }, + isAnchor() { + return this.href !== void 0; + }, + progressColor() { + if (this.color === "default" || this.type === "secondary") { + return "black"; + } + return "white"; + } + }, + methods: { + onDropdownOpen() { + this.$emit("dropdown-open"); + }, + onDropdownClose() { + this.$emit("dropdown-close"); + }, + openDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.open(); + } + }, + closeDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.close(); + } + }, + toggleDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.toggle(); + } + } + } +}; +const _hoisted_1$u = { class: "ui-button__content" }; +const _hoisted_2$p = { + key: 0, + class: "ui-button__icon" +}; +const _hoisted_3$m = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M6.984 9.984h10.03L12 15z" }) +], -1); +const _hoisted_4$e = /* @__PURE__ */ createElementVNode("div", { class: "ui-button__focus-ring" }, null, -1); +function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_progress_circular = resolveComponent("ui-progress-circular"); + const _component_ui_ripple_ink = resolveComponent("ui-ripple-ink"); + const _component_ui_popover = resolveComponent("ui-popover"); + const _component_ui_tooltip = resolveComponent("ui-tooltip"); + return openBlock(), createBlock(resolveDynamicComponent($options.isAnchor ? "a" : "button"), { + class: normalizeClass(["ui-button", $options.classes]), + disabled: $props.disabled || $props.loading, + href: $options.isAnchor ? $props.disabled ? null : $props.href : null, + type: $options.isAnchor ? null : $props.buttonType + }, { + default: withCtx(() => [ + createElementVNode("div", _hoisted_1$u, [ + $props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$p, [ + renderSlot(_ctx.$slots, "icon", {}, () => [ + createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : createCommentVNode("v-if", true), + renderSlot(_ctx.$slots, "default"), + $props.hasDropdown && $props.iconPosition !== "right" ? (openBlock(), createBlock(_component_ui_icon, { + key: 1, + class: "ui-button__dropdown-icon" + }, { + default: withCtx(() => [ + _hoisted_3$m + ]), + _: 1 + })) : createCommentVNode("v-if", true) + ]), + _hoisted_4$e, + $props.loading ? (openBlock(), createBlock(_component_ui_progress_circular, { + key: 0, + class: "ui-button__progress", + "disable-transition": "", + color: $options.progressColor, + size: 18, + stroke: 4.5 + }, null, 8, ["color", "stroke"])) : createCommentVNode("v-if", true), + !$props.disableRipple && !$props.disabled ? (openBlock(), createBlock(_component_ui_ripple_ink, { key: 1 })) : createCommentVNode("v-if", true), + $props.hasDropdown ? (openBlock(), createBlock(_component_ui_popover, { + key: 2, + ref: "dropdown", + "contain-focus": "", + "append-to-body": $props.appendDropdownToBody, + "constrain-to-scroll-parent": $props.constrainDropdownToScrollParent, + position: $props.dropdownPosition, + "open-on": $props.openDropdownOn, + onClose: $options.onDropdownClose, + onOpen: $options.onDropdownOpen + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "dropdown") + ]), + _: 3 + }, 8, ["append-to-body", "constrain-to-scroll-parent", "position", "open-on", "onClose", "onOpen"])) : createCommentVNode("v-if", true), + $props.tooltip ? (openBlock(), createBlock(_component_ui_tooltip, { + key: 3, + "open-on": $props.openTooltipOn, + position: $props.tooltipPosition + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString($props.tooltip), 1) + ]), + _: 1 + }, 8, ["open-on", "position"])) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["class", "disabled", "href", "type"]); +} +const UiButton = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render$v], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiButton.vue"]]); +const UiIconButton_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$u = { + name: "UiIconButton", + components: { + UiIcon, + UiPopover, + UiProgressCircular, + UiRippleInk, + UiTooltip + }, + props: { + type: { + type: String, + default: "primary" + }, + buttonType: String, + href: String, + color: { + type: String, + default: "default" + }, + size: { + type: String, + default: "normal" + }, + icon: String, + ariaLabel: String, + loading: { + type: Boolean, + default: false + }, + hasDropdown: { + type: Boolean, + default: false + }, + dropdownPosition: { + type: String, + default: "bottom-start" + }, + appendDropdownToBody: { + type: Boolean, + default: true + }, + constrainDropdownToScrollParent: { + type: Boolean, + default: true + }, + openDropdownOn: { + type: String, + default: "click" + }, + tooltip: String, + openTooltipOn: String, + tooltipPosition: String, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["dropdown-open", "dropdown-close"], + computed: { + classes() { + return [ + `ui-icon-button--type-${this.type}`, + `ui-icon-button--color-${this.color}`, + `ui-icon-button--size-${this.size}`, + { "is-anchor": this.isAnchor }, + { "is-loading": this.loading }, + { "is-disabled": this.disabled || this.loading }, + { "has-dropdown": this.hasDropdown } + ]; + }, + isAnchor() { + return this.href !== void 0; + }, + progressColor() { + if (this.type === "primary") { + if (this.color === "default" || this.color === "black") { + return "black"; + } + return "white"; + } + if (this.color === "white") { + return "white"; + } + return "black"; + } + }, + methods: { + onDropdownOpen() { + this.$emit("dropdown-open"); + }, + onDropdownClose() { + this.$emit("dropdown-close"); + }, + openDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.open(); + } + }, + closeDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.close(); + } + }, + toggleDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.toggle(); + } + } + } +}; +const _hoisted_1$t = { + key: 0, + class: "ui-icon-button__icon" +}; +const _hoisted_2$o = /* @__PURE__ */ createElementVNode("div", { class: "ui-icon-button__focus-ring" }, null, -1); +function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_progress_circular = resolveComponent("ui-progress-circular"); + const _component_ui_ripple_ink = resolveComponent("ui-ripple-ink"); + const _component_ui_popover = resolveComponent("ui-popover"); + const _component_ui_tooltip = resolveComponent("ui-tooltip"); + return openBlock(), createBlock(resolveDynamicComponent($options.isAnchor ? "a" : "button"), { + class: normalizeClass(["ui-icon-button", $options.classes]), + "aria-label": $props.ariaLabel || $props.tooltip, + disabled: $props.disabled || $props.loading, + href: $options.isAnchor ? $props.disabled ? null : $props.href : null, + type: $options.isAnchor ? null : $props.buttonType + }, { + default: withCtx(() => [ + $props.icon || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_1$t, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : createCommentVNode("v-if", true), + _hoisted_2$o, + $props.loading ? (openBlock(), createBlock(_component_ui_progress_circular, { + key: 1, + class: "ui-icon-button__progress", + color: $options.progressColor, + size: $props.size === "large" ? 24 : 18, + stroke: 4.5 + }, null, 8, ["color", "size", "stroke"])) : createCommentVNode("v-if", true), + !$props.disableRipple && !$props.disabled ? (openBlock(), createBlock(_component_ui_ripple_ink, { key: 2 })) : createCommentVNode("v-if", true), + $props.hasDropdown ? (openBlock(), createBlock(_component_ui_popover, { + key: 3, + ref: "dropdown", + "contain-focus": "", + "append-to-body": $props.appendDropdownToBody, + "constrain-to-scroll-parent": $props.constrainDropdownToScrollParent, + position: $props.dropdownPosition, + "open-on": $props.openDropdownOn, + onClose: $options.onDropdownClose, + onOpen: $options.onDropdownOpen + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "dropdown") + ]), + _: 3 + }, 8, ["append-to-body", "constrain-to-scroll-parent", "position", "open-on", "onClose", "onOpen"])) : createCommentVNode("v-if", true), + $props.tooltip ? (openBlock(), createBlock(_component_ui_tooltip, { + key: 4, + "open-on": $props.openTooltipOn, + position: $props.tooltipPosition + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString($props.tooltip), 1) + ]), + _: 1 + }, 8, ["open-on", "position"])) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["aria-label", "class", "disabled", "href", "type"]); +} +const UiIconButton = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render$u], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiIconButton.vue"]]); +const defaultLang = { + months: { + full: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + abbreviated: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ] + }, + days: { + full: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + abbreviated: [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + initials: [ + "S", + "M", + "T", + "W", + "T", + "F", + "S" + ] + } +}; +function pad(value, length) { + while (value.length < length) { + value = "0" + value; + } + return value; +} +function getDayFull(date, lang = defaultLang) { + return lang.days.full[date.getDay()]; +} +function getDayInitial(date, lang = defaultLang) { + return lang.days.initials[date.getDay()]; +} +function getDayAbbreviated(date, lang = defaultLang) { + return lang.days.abbreviated[date.getDay()]; +} +function getMonthFull(date, lang = defaultLang) { + return lang.months.full[date.getMonth()]; +} +function getMonthAbbreviated(date, lang = defaultLang) { + return lang.months.abbreviated[date.getMonth()]; +} +function getDayOfMonth(date, options = { pad: true }) { + const day = date.getDate().toString(); + return options.pad ? pad(day) : day; +} +function humanize(date, lang = defaultLang) { + const days = lang.days.abbreviated; + const months = lang.months.full; + return days[date.getDay()] + ", " + months[date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear(); +} +function clone(date) { + return new Date(date.getTime()); +} +function moveToDayOfWeek(date, dayOfWeek) { + while (date.getDay() !== dayOfWeek) { + date.setDate(date.getDate() - 1); + } + return date; +} +function isSameDay(date1, date2) { + return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate(); +} +function isBefore(date1, date2) { + return date1.getTime() < date2.getTime(); +} +function isAfter(date1, date2) { + return date1.getTime() > date2.getTime(); +} +const dateUtils = { + defaultLang, + getDayFull, + getDayInitial, + getDayAbbreviated, + getMonthFull, + getMonthAbbreviated, + getDayOfMonth, + humanize, + clone, + moveToDayOfWeek, + isSameDay, + isBefore, + isAfter +}; +const UiCalendarControls_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$t = { + name: "UiCalendarControls", + components: { + UiIcon, + UiIconButton + }, + props: { + color: { + type: String, + default: "default" + }, + lang: Object, + dateInView: Date, + minDate: Date, + maxDate: Date, + yearRange: { + type: Array, + required: true + } + }, + emits: ["go-to-date"], + computed: { + classes() { + return [`ui-calendar-controls--color-${this.color}`]; + }, + monthAndYear() { + return dateUtils.getMonthFull(this.dateInView, this.lang) + " " + this.dateInView.getFullYear(); + }, + previousMonthDisabled() { + const lastDayOfPreviousMonth = dateUtils.clone(this.dateInView); + lastDayOfPreviousMonth.setDate(0); + const firstYear = Math.min(this.yearRange[0], this.yearRange[this.yearRange.length - 1]); + const outsideYearRange = lastDayOfPreviousMonth.getFullYear() < firstYear; + if (this.minDate) { + return outsideYearRange || lastDayOfPreviousMonth.getTime() < this.minDate.getTime(); + } + return outsideYearRange; + }, + nextMonthDisabled() { + const firstDayOfNextMonth = dateUtils.clone(this.dateInView); + firstDayOfNextMonth.setMonth(this.dateInView.getMonth() + 1, 1); + const lastYear = Math.max(this.yearRange[0], this.yearRange[this.yearRange.length - 1]); + const outsideYearRange = firstDayOfNextMonth.getFullYear() > lastYear; + if (this.maxDate) { + return outsideYearRange || firstDayOfNextMonth.getTime() > this.maxDate.getTime(); + } + return outsideYearRange; + } + }, + methods: { + goToPreviousMonth() { + const date = dateUtils.clone(this.dateInView); + date.setDate(1); + date.setMonth(date.getMonth() - 1); + this.goToDate(date); + }, + goToNextMonth() { + const date = dateUtils.clone(this.dateInView); + date.setDate(1); + date.setMonth(date.getMonth() + 1); + this.goToDate(date); + }, + goToDate(date) { + this.$emit("go-to-date", date); + } + } +}; +const _hoisted_1$s = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M15.422 16.078l-1.406 1.406-6-6 6-6 1.406 1.406-4.594 4.594z" }) +], -1); +const _hoisted_2$n = { class: "ui-calendar-controls__month-and-year" }; +const _hoisted_3$l = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M8.578 16.36l4.594-4.595L8.578 7.17l1.406-1.405 6 6-6 6z" }) +], -1); +function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_icon_button = resolveComponent("ui-icon-button"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-calendar-controls", $options.classes]) + }, [ + createVNode(_component_ui_icon_button, { + class: "ui-calendar-controls__nav-button", + icon: "keyboard_arrow_left", + type: "secondary", + color: $props.color === "default" ? "default" : "white", + disabled: $options.previousMonthDisabled, + onClick: $options.goToPreviousMonth + }, { + default: withCtx(() => [ + createVNode(_component_ui_icon, null, { + default: withCtx(() => [ + _hoisted_1$s + ]), + _: 1 + }) + ]), + _: 1 + }, 8, ["color", "disabled", "onClick"]), + createElementVNode("div", _hoisted_2$n, toDisplayString($options.monthAndYear), 1), + createVNode(_component_ui_icon_button, { + class: "ui-calendar-controls__nav-button", + icon: "keyboard_arrow_right", + type: "secondary", + color: $props.color === "default" ? "default" : "white", + disabled: $options.nextMonthDisabled, + onClick: $options.goToNextMonth + }, { + default: withCtx(() => [ + createVNode(_component_ui_icon, null, { + default: withCtx(() => [ + _hoisted_3$l + ]), + _: 1 + }) + ]), + _: 1 + }, 8, ["color", "disabled", "onClick"]) + ], 2); +} +const UiCalendarControls = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render$t], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCalendarControls.vue"]]); +const UiCalendarWeek_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$s = { + name: "UiCalendarWeek", + props: { + month: Number, + weekStart: Date, + minDate: Date, + maxDate: Date, + selected: Date, + dateFilter: Function, + color: { + type: String, + default: "primary" + }, + squareCells: { + type: Boolean, + default: false + } + }, + emits: ["date-select"], + data() { + return { + today: new Date() + }; + }, + computed: { + dates() { + return this.buildDays(this.weekStart); + }, + classes() { + return [ + `ui-calendar-week--color-${this.color}`, + { "ui-calendar-week--has-square-cells": this.squareCells } + ]; + } + }, + methods: { + buildDays(weekStart) { + const days = [dateUtils.clone(weekStart)]; + let day = dateUtils.clone(weekStart); + for (let i = 1; i <= 6; i++) { + day = dateUtils.clone(day); + day.setDate(day.getDate() + 1); + days.push(day); + } + return days; + }, + getDateClasses(date) { + return [ + { "is-today": dateUtils.isSameDay(date, this.today) }, + { "is-in-other-month": this.isDateInOtherMonth(date) }, + { "is-selected": this.selected && dateUtils.isSameDay(date, this.selected) }, + { "is-disabled": this.isDateDisabled(date) } + ]; + }, + selectDate(date) { + if (this.isDateDisabled(date)) { + return; + } + this.$emit("date-select", date); + }, + isDateInOtherMonth(date) { + return this.month !== date.getMonth(); + }, + isDateDisabled(date) { + const isDisabled = this.minDate && dateUtils.isBefore(date, this.minDate) || this.maxDate && dateUtils.isAfter(date, this.maxDate); + if (isDisabled) { + return true; + } + return this.dateFilter ? !this.dateFilter(date) : false; + } + } +}; +const _hoisted_1$r = ["disabled", "onClick"]; +function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock("tr", { + class: normalizeClass(["ui-calendar-week", $options.classes]) + }, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($options.dates, (date) => { + return openBlock(), createElementBlock("td", { + key: date.toString() + }, [ + createElementVNode("button", { + class: normalizeClass(["ui-calendar-week__date", $options.getDateClasses(date)]), + disabled: $options.isDateDisabled(date), + onClick: ($event) => $options.selectDate(date) + }, [ + renderSlot(_ctx.$slots, "default", { date }, () => [ + createTextVNode(toDisplayString(date.getDate()), 1) + ]) + ], 10, _hoisted_1$r) + ]); + }), 128)) + ], 2); +} +const UiCalendarWeek = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render$s], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCalendarWeek.vue"]]); +const UiCalendarMonth_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$r = { + name: "UiCalendarMonth", + components: { + UiCalendarWeek + }, + props: { + lang: Object, + dateFilter: Function, + dateInView: Date, + selected: Date, + maxDate: Date, + minDate: Date, + startOfWeek: { + type: Number, + default: 0 + }, + color: { + type: String, + default: "primary" + }, + squareCells: { + type: Boolean, + default: false + } + }, + emits: ["date-select", "change"], + computed: { + daysOfWeek() { + const days = this.lang.days.initials.slice(this.startOfWeek); + if (days.length === 7) { + return days; + } + return days.concat(this.lang.days.initials.slice(0, this.startOfWeek)); + }, + currentWeekStartDates() { + return this.getWeekStartDates(this.dateInView); + } + }, + methods: { + getWeekStartDates(dateInWeek) { + let date = dateUtils.clone(dateInWeek); + date.setDate(1); + date = dateUtils.moveToDayOfWeek(date, this.startOfWeek); + const current = dateUtils.clone(date); + current.setDate(current.getDate() + 7); + const starts = [date]; + const month = current.getMonth(); + while (current.getMonth() === month) { + starts.push(dateUtils.clone(current)); + current.setDate(current.getDate() + 7); + } + return starts; + }, + goToDate(date) { + this.$emit("change", dateUtils.clone(date)); + }, + onDateSelect(date) { + this.$emit("date-select", date); + } + } +}; +const _hoisted_1$q = { class: "ui-calendar-month" }; +const _hoisted_2$m = { class: "ui-calendar-month__header" }; +const _hoisted_3$k = { class: "ui-calendar-month__body" }; +function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_calendar_week = resolveComponent("ui-calendar-week"); + return openBlock(), createElementBlock("table", _hoisted_1$q, [ + createElementVNode("thead", _hoisted_2$m, [ + createElementVNode("tr", null, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($options.daysOfWeek, (day) => { + return openBlock(), createElementBlock("th", { key: day }, toDisplayString(day), 1); + }), 128)) + ]) + ]), + createElementVNode("tbody", _hoisted_3$k, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentWeekStartDates, (date) => { + return openBlock(), createBlock(_component_ui_calendar_week, { + key: date.toString(), + color: $props.color, + "date-filter": $props.dateFilter, + "max-date": $props.maxDate, + "min-date": $props.minDate, + month: $options.currentWeekStartDates[1].getMonth(), + selected: $props.selected, + "square-cells": $props.squareCells, + "week-start": date, + onDateSelect: $options.onDateSelect + }, createSlots({ _: 2 }, [ + _ctx.$slots.date ? { + name: "default", + fn: withCtx((props) => [ + renderSlot(_ctx.$slots, "date", { + date: props.date + }) + ]) + } : void 0 + ]), 1032, ["color", "date-filter", "max-date", "min-date", "month", "selected", "square-cells", "week-start", "onDateSelect"]); + }), 128)) + ]) + ]); +} +const UiCalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render$r], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCalendarMonth.vue"]]); +const UiCalendar_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$q = { + name: "UiCalendar", + components: { + UiCalendarControls, + UiCalendarMonth + }, + props: { + color: { + type: String, + default: "default" + }, + dateFilter: Function, + lang: { + type: Object, + default() { + return dateUtils.defaultLang; + } + }, + maxDate: Date, + minDate: Date, + raised: { + type: Boolean, + default: false + }, + startOfWeek: { + type: Number, + default: 0 + }, + squareCells: { + type: Boolean, + default: false + }, + modelValue: Date, + yearRange: { + type: Array, + default() { + const thisYear = new Date().getFullYear(); + return Array.apply(null, Array(200)).map((item, index) => { + return thisYear - 100 + index; + }); + } + } + }, + emits: ["update:modelValue", "date-select", "month-change"], + data() { + return { + today: new Date(), + dateInView: this.modelValue || new Date() + }; + }, + computed: { + classes() { + return [`ui-calendar--color-${this.color}`, { "is-raised": this.raised }]; + } + }, + watch: { + modelValue() { + if (this.modelValue) { + this.dateInView = dateUtils.clone(this.modelValue); + } + } + }, + methods: { + onDateSelect(date) { + this.$emit("update:modelValue", date); + this.$emit("date-select", date); + }, + onMonthChange(newDate) { + this.dateInView = newDate; + this.$emit("month-change", newDate); + }, + goToDate(date) { + this.$refs.month.goToDate(date); + } + } +}; +const _hoisted_1$p = { class: "ui-calendar__body" }; +function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_calendar_controls = resolveComponent("ui-calendar-controls"); + const _component_ui_calendar_month = resolveComponent("ui-calendar-month"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-calendar", $options.classes]) + }, [ + createVNode(_component_ui_calendar_controls, { + ref: "controls", + class: "ui-calendar__header", + color: $props.color, + "date-in-view": $data.dateInView, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + "year-range": $props.yearRange, + onGoToDate: $options.goToDate + }, null, 8, ["color", "date-in-view", "lang", "max-date", "min-date", "year-range", "onGoToDate"]), + createElementVNode("div", _hoisted_1$p, [ + createVNode(_component_ui_calendar_month, { + ref: "month", + color: $props.color, + "date-in-view": $data.dateInView, + lang: $props.lang, + selected: $props.modelValue, + "start-of-week": $props.startOfWeek, + "square-cells": $props.squareCells, + onChange: $options.onMonthChange, + onDateSelect: $options.onDateSelect + }, { + date: withCtx((props) => [ + _ctx.$slots.date ? renderSlot(_ctx.$slots, "date", { + key: 0, + date: props.date + }) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ + createTextVNode(toDisplayString(props.date.getDate()), 1) + ], 64)) + ]), + _: 3 + }, 8, ["color", "date-in-view", "lang", "selected", "start-of-week", "square-cells", "onChange", "onDateSelect"]) + ]) + ], 2); +} +const UiCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$q], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCalendar.vue"]]); +const UiCheckbox_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$p = { + name: "UiCheckbox", + props: { + name: String, + label: String, + tabindex: [String, Number], + modelValue: { + required: true + }, + trueValue: { + default: true + }, + falseValue: { + default: false + }, + submittedValue: { + type: String, + default: "on" + }, + checked: { + type: Boolean, + default: false + }, + boxPosition: { + type: String, + default: "left" + }, + color: { + type: String, + default: "primary" + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "change", "focus", "blur", "change"], + data() { + return { + isActive: false, + isChecked: this.modelValue === this.trueValue || this.checked + }; + }, + computed: { + classes() { + return [ + `ui-checkbox--color-${this.color}`, + `ui-checkbox--box-position-${this.boxPosition}`, + { "is-checked": this.isChecked }, + { "is-active": this.isActive }, + { "is-disabled": this.disabled } + ]; + } + }, + watch: { + modelValue() { + this.isChecked = this.modelValue === this.trueValue; + } + }, + created() { + const value = this.isChecked ? this.trueValue : this.falseValue; + if (this.modelValue !== value) { + this.$emit("update:modelValue", value); + } + }, + methods: { + focus() { + this.$refs.input.focus(); + }, + onClick(e) { + const isCheckedPrevious = this.isChecked; + const isChecked = e.target.checked; + this.$emit("update:modelValue", isChecked ? this.trueValue : this.falseValue, e); + if (isCheckedPrevious !== isChecked) { + this.$emit("change", isChecked ? this.trueValue : this.falseValue, e); + } + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + } + } +}; +const _hoisted_1$o = [".checked", "disabled", "name", "tabindex", "value"]; +const _hoisted_2$l = /* @__PURE__ */ createElementVNode("div", { class: "ui-checkbox__checkmark" }, [ + /* @__PURE__ */ createElementVNode("div", { class: "ui-checkbox__checkmark-background" }), + /* @__PURE__ */ createElementVNode("div", { class: "ui-checkbox__focus-ring" }) +], -1); +const _hoisted_3$j = { + key: 0, + class: "ui-checkbox__label-text" +}; +function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock("label", { + class: normalizeClass(["ui-checkbox", $options.classes]) + }, [ + createElementVNode("input", { + ref: "input", + class: "ui-checkbox__input", + type: "checkbox", + ".checked": $data.isChecked, + disabled: $props.disabled, + name: $props.name, + tabindex: $props.tabindex, + value: $props.submittedValue, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onClick: _cache[1] || (_cache[1] = (...args) => $options.onClick && $options.onClick(...args)), + onFocus: _cache[2] || (_cache[2] = (...args) => $options.onFocus && $options.onFocus(...args)) + }, null, 40, _hoisted_1$o), + _hoisted_2$l, + $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_3$j, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.label), 1) + ]) + ])) : createCommentVNode("v-if", true) + ], 2); +} +const UiCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$p], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCheckbox.vue"]]); +const UiCheckboxGroup_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$o = { + name: "UiCheckboxGroup", + components: { + UiCheckbox + }, + props: { + name: String, + options: { + type: Array, + required: true + }, + modelValue: { + type: Array, + required: true + }, + keys: { + type: Object, + default() { + return { + id: "id", + name: "name", + class: "class", + label: "label", + value: "value", + disabled: "disabled" + }; + } + }, + label: String, + color: { + type: String, + default: "primary" + }, + boxPosition: { + type: String, + default: "left" + }, + vertical: { + type: Boolean, + default: false + }, + help: String, + error: String, + invalid: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "change"], + data() { + return { + isActive: false, + ignoreChange: false, + checkboxValues: [], + initialValue: JSON.parse(JSON.stringify(this.modelValue)) + }; + }, + computed: { + classes() { + return [ + `ui-checkbox-group--color-${this.color}`, + `ui-checkbox-group--box-position-${this.boxPosition}`, + { "is-vertical": this.vertical }, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-disabled": this.disabled } + ]; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + } + }, + methods: { + reset() { + this.ignoreChange = true; + this.options.forEach((option, index) => { + this.checkboxValues[index] = this.isOptionCheckedByDefault(option); + }); + this.ignoreChange = false; + this.$emit( + "update:modelValue", + this.initialValue.length > 0 ? [].concat(this.initialValue) : [] + ); + }, + isOptionCheckedByDefault(option) { + return looseIndexOf(this.initialValue, option[this.keys.value] || option) > -1; + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + }, + onChange(args, option) { + if (this.ignoreChange) { + return; + } + const checked = args[0]; + const e = args[1]; + let value = []; + const optionValue = option[this.keys.value] || option; + const i = looseIndexOf(this.modelValue, optionValue); + if (checked && i < 0) { + value = this.modelValue.concat(optionValue); + } + if (!checked && i > -1) { + value = this.modelValue.slice(0, i).concat(this.modelValue.slice(i + 1)); + } + this.$emit("update:modelValue", value); + this.$emit("change", value, e); + } + } +}; +const _hoisted_1$n = { + key: 0, + class: "ui-checkbox-group__label-text" +}; +const _hoisted_2$k = { class: "ui-checkbox-group__checkboxes" }; +const _hoisted_3$i = { + key: 1, + class: "ui-checkbox-group__feedback" +}; +const _hoisted_4$d = { + key: 0, + class: "ui-checkbox-group__feedback-text" +}; +const _hoisted_5$d = { + key: 1, + class: "ui-checkbox-group__feedback-text" +}; +function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_checkbox = resolveComponent("ui-checkbox"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-checkbox-group", $options.classes]) + }, [ + $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_1$n, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.label), 1) + ]) + ])) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_2$k, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($props.options, (option, index) => { + return openBlock(), createBlock(_component_ui_checkbox, { + id: option[$props.keys.id], + key: option[$props.keys.id], + modelValue: $data.checkboxValues[index], + "onUpdate:modelValue": ($event) => $data.checkboxValues[index] = $event, + class: normalizeClass(["ui-checkbox-group__checkbox", option[$props.keys.class]]), + "box-position": $props.boxPosition, + checked: $options.isOptionCheckedByDefault(option), + color: $props.color, + disabled: $props.disabled || option[$props.keys.disabled], + name: $props.name || option[$props.keys.name], + onBlur: $options.onBlur, + onChange: ($event) => $options.onChange(arguments, option), + onFocus: $options.onFocus + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString(option[$props.keys.label] || option), 1) + ]), + _: 2 + }, 1032, ["id", "modelValue", "onUpdate:modelValue", "box-position", "checked", "class", "color", "disabled", "name", "onBlur", "onChange", "onFocus"]); + }), 128)) + ]), + $options.hasFeedback ? (openBlock(), createElementBlock("div", _hoisted_3$i, [ + $options.showError ? (openBlock(), createElementBlock("div", _hoisted_4$d, [ + renderSlot(_ctx.$slots, "error", {}, () => [ + createTextVNode(toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (openBlock(), createElementBlock("div", _hoisted_5$d, [ + renderSlot(_ctx.$slots, "help", {}, () => [ + createTextVNode(toDisplayString($props.help), 1) + ]) + ])) : createCommentVNode("v-if", true) + ])) : createCommentVNode("v-if", true) + ], 2); +} +const UiCheckboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$o], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCheckboxGroup.vue"]]); +/** + * Fast UUID generator, RFC4122 version 4 compliant. + * @author Jeff Ward (jcward.com). + * @license MIT license + * @link http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 + */ +const lut = []; +for (let i = 0; i < 256; i++) { + lut[i] = (i < 16 ? "0" : "") + i.toString(16); +} +const generate = function() { + const d0 = Math.random() * 4294967295 | 0; + const d1 = Math.random() * 4294967295 | 0; + const d2 = Math.random() * 4294967295 | 0; + const d3 = Math.random() * 4294967295 | 0; + return lut[d0 & 255] + lut[d0 >> 8 & 255] + lut[d0 >> 16 & 255] + lut[d0 >> 24 & 255] + "-" + lut[d1 & 255] + lut[d1 >> 8 & 255] + "-" + lut[d1 >> 16 & 15 | 64] + lut[d1 >> 24 & 255] + "-" + lut[d2 & 63 | 128] + lut[d2 >> 8 & 255] + "-" + lut[d2 >> 16 & 255] + lut[d2 >> 24 & 255] + lut[d3 & 255] + lut[d3 >> 8 & 255] + lut[d3 >> 16 & 255] + lut[d3 >> 24 & 255]; +}; +const short = function(prefix) { + prefix = prefix || ""; + const uuid = generate(); + return prefix + uuid.split("-")[0]; +}; +const UUID = { + generate, + short +}; +const UiCollapsible_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$n = { + name: "UiCollapsible", + components: { + UiIcon, + UiRippleInk + }, + props: { + open: { + type: Boolean, + default: false + }, + title: String, + removeIcon: { + type: Boolean, + default: false + }, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["open", "close"], + data() { + return { + isOpen: this.open, + id: UUID.short("ui-collapsible-") + }; + }, + computed: { + classes() { + return [{ "is-open": this.isOpen }, { "is-disabled": this.disabled }]; + } + }, + watch: { + open() { + if (this.isOpen !== this.open) { + this.isOpen = this.open; + } + } + }, + mounted() { + if (this.isOpen) { + this.$refs.bodyWrapper.style.maxHeight = "none"; + } + }, + methods: { + toggleCollapsible() { + if (this.disabled) { + return; + } + this.isOpen = !this.isOpen; + }, + onEnter(el) { + this.$emit("open"); + el.style.maxHeight = el.scrollHeight + "px"; + }, + afterEnter(el) { + el.style.maxHeight = "none"; + }, + beforeLeave(el) { + el.style.maxHeight = el.scrollHeight + "px"; + el.offsetHeight; + }, + onLeave(el) { + el.style.maxHeight = 0; + this.$emit("close"); + } + } +}; +const _hoisted_1$m = ["aria-controls", "aria-expanded", "tabindex"]; +const _hoisted_2$j = { class: "ui-collapsible__header-content" }; +const _hoisted_3$h = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M7.406 7.828L12 12.422l4.594-4.594L18 9.234l-6 6-6-6z" }) +], -1); +const _hoisted_4$c = ["id", "aria-hidden"]; +const _hoisted_5$c = { class: "ui-collapsible__body" }; +function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_ripple_ink = resolveComponent("ui-ripple-ink"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-collapsible", $options.classes]) + }, [ + createElementVNode("div", { + class: "ui-collapsible__header", + "aria-controls": $data.id, + "aria-expanded": $data.isOpen ? "true" : "false", + tabindex: $props.disabled ? null : 0, + onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleCollapsible && $options.toggleCollapsible(...args)), + onKeydown: [ + _cache[1] || (_cache[1] = withKeys(withModifiers((...args) => $options.toggleCollapsible && $options.toggleCollapsible(...args), ["prevent"]), ["enter"])), + _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.toggleCollapsible && $options.toggleCollapsible(...args), ["prevent"]), ["space"])) + ] + }, [ + createElementVNode("div", _hoisted_2$j, [ + renderSlot(_ctx.$slots, "header", {}, () => [ + createTextVNode(toDisplayString($props.title), 1) + ]) + ]), + !$props.removeIcon ? (openBlock(), createBlock(_component_ui_icon, { + key: 0, + class: "ui-collapsible__header-icon" + }, { + default: withCtx(() => [ + _hoisted_3$h + ]), + _: 1 + })) : createCommentVNode("v-if", true), + !$props.disableRipple && !$props.disabled ? (openBlock(), createBlock(_component_ui_ripple_ink, { key: 1 })) : createCommentVNode("v-if", true) + ], 40, _hoisted_1$m), + createVNode(Transition, { + onEnter: $options.onEnter, + onAfterEnter: $options.afterEnter, + onBeforeLeave: $options.beforeLeave, + onLeave: $options.onLeave, + persisted: "" + }, { + default: withCtx(() => [ + withDirectives(createElementVNode("div", { + id: $data.id, + ref: "bodyWrapper", + class: "ui-collapsible__body-wrapper", + "aria-hidden": $data.isOpen ? null : "true" + }, [ + createElementVNode("div", _hoisted_5$c, [ + renderSlot(_ctx.$slots, "default") + ]) + ], 8, _hoisted_4$c), [ + [vShow, $data.isOpen] + ]) + ]), + _: 3 + }, 8, ["onEnter", "onAfterEnter", "onBeforeLeave", "onLeave"]) + ], 2); +} +const UiCollapsible = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$n], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCollapsible.vue"]]); +const UiModal_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$m = { + name: "UiModal", + components: { + UiCloseButton, + UiFocusContainer + }, + props: { + title: { + type: String, + default: "UiModal title" + }, + alignTop: { + type: Boolean, + default: false + }, + alignTopMargin: { + type: Number, + default: 60 + }, + size: { + type: String, + default: "normal" + }, + role: { + type: String, + default: "dialog" + }, + transition: { + type: String, + default: "scale-down" + }, + removeHeader: { + type: Boolean, + default: false + }, + removeCloseButton: { + type: Boolean, + default: false + }, + preventShift: { + type: Boolean, + default: false + }, + dismissible: { + type: Boolean, + default: true + }, + dismissOn: { + type: String, + default: "backdrop esc close-button" + }, + beforeClose: Function + }, + emits: ["open", "close", "reveal", "hide"], + data() { + return { + isOpen: false, + lastFocusedElement: null + }; + }, + computed: { + classes() { + return [ + `ui-modal--size-${this.size}`, + { "has-footer": this.hasFooter }, + { "is-open": this.isOpen }, + { "is-aligned-top": this.alignTop } + ]; + }, + alignTopStyle() { + if (this.alignTop) { + return { "padding-top": this.alignTopMargin + "px" }; + } + return null; + }, + toggleTransition() { + return `ui-modal--transition-${this.transition}`; + }, + hasFooter() { + return Boolean(this.$slots.footer); + }, + dismissOnBackdrop() { + return this.dismissOn.indexOf("backdrop") > -1; + }, + dismissOnCloseButton() { + return this.dismissOn.indexOf("close-button") > -1; + }, + dismissOnEsc() { + return this.dismissOn.indexOf("esc") > -1; + } + }, + watch: { + isOpen() { + this.$nextTick(() => { + this[this.isOpen ? "onOpen" : "onClose"](); + }); + } + }, + beforeUnmount() { + if (this.isOpen) { + this.returnFocus(); + } + }, + methods: { + open() { + this.isOpen = true; + }, + close() { + if (!this.dismissible) { + return; + } + if (this.beforeClose && this.beforeClose(this) === false) { + return; + } + this.isOpen = false; + }, + redirectFocus() { + this.$refs.focusContainer.focus(); + }, + returnFocus() { + if (this.lastFocusedElement) { + this.lastFocusedElement.focus(); + } + }, + onBackdropMouseDown() { + this.mouseDownSource = "backdrop"; + }, + onBackdropMouseUp() { + if (this.dismissOnBackdrop && this.mouseDownSource === "backdrop") { + this.close(); + } else { + this.redirectFocus(); + } + this.mouseDownSource = void 0; + }, + onEsc() { + if (this.dismissOnEsc) { + this.close(); + } + }, + onOpen() { + this.lastFocusedElement = document.activeElement; + this.$refs.focusContainer.focus(); + classlist.add(document.body, "ui-modal--is-open"); + this.incrementOpenModalCount(); + this.$emit("open"); + }, + onClose() { + this.returnFocus(); + this.$emit("close"); + }, + onEnter() { + this.$emit("reveal"); + }, + onLeave() { + this.$emit("hide"); + const newCount = this.decrementOpenModalCount(); + if (newCount === 0) { + classlist.remove(document.body, "ui-modal--is-open"); + } + }, + getOpenModalCount() { + const count = document.body.getAttribute("data-ui-open-modals"); + return count === void 0 ? 0 : Number(count); + }, + setOpenModalCount(count) { + const normalizedCount = Math.max(0, count); + if (normalizedCount === 0) { + document.body.removeAttribute("data-ui-open-modals"); + } else { + document.body.setAttribute("data-ui-open-modals", normalizedCount); + } + return normalizedCount; + }, + incrementOpenModalCount() { + return this.setOpenModalCount(this.getOpenModalCount() + 1); + }, + decrementOpenModalCount() { + return this.setOpenModalCount(this.getOpenModalCount() - 1); + } + } +}; +const _hoisted_1$l = ["role"]; +const _hoisted_2$i = { + key: 0, + class: "ui-modal__header" +}; +const _hoisted_3$g = { class: "ui-modal__header-text" }; +const _hoisted_4$b = { class: "ui-modal__close-button" }; +const _hoisted_5$b = { class: "ui-modal__body" }; +const _hoisted_6$9 = { + key: 1, + class: "ui-modal__footer" +}; +function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_close_button = resolveComponent("ui-close-button"); + const _component_ui_focus_container = resolveComponent("ui-focus-container"); + return openBlock(), createBlock(Transition, { + name: $options.toggleTransition, + onAfterEnter: $options.onEnter, + onAfterLeave: $options.onLeave, + persisted: "" + }, { + default: withCtx(() => [ + withDirectives(createElementVNode("div", { + class: normalizeClass(["ui-modal ui-modal__mask", $options.classes]), + role: $props.role, + onMousedown: _cache[2] || (_cache[2] = withModifiers((...args) => $options.onBackdropMouseDown && $options.onBackdropMouseDown(...args), ["self"])), + onMouseup: _cache[3] || (_cache[3] = withModifiers((...args) => $options.onBackdropMouseUp && $options.onBackdropMouseUp(...args), ["self"])) + }, [ + createElementVNode("div", { + class: normalizeClass(["ui-modal__wrapper", { "has-dummy-scrollbar": $props.preventShift }]), + style: normalizeStyle($options.alignTopStyle), + onMousedown: _cache[0] || (_cache[0] = withModifiers((...args) => $options.onBackdropMouseDown && $options.onBackdropMouseDown(...args), ["self"])), + onMouseup: _cache[1] || (_cache[1] = withModifiers((...args) => $options.onBackdropMouseUp && $options.onBackdropMouseUp(...args), ["self"])) + }, [ + createVNode(_component_ui_focus_container, { + ref: "focusContainer", + class: "ui-modal__container", + tabindex: "-1", + onKeydown: withKeys(withModifiers($options.onEsc, ["stop"]), ["esc"]) + }, { + default: withCtx(() => [ + !$props.removeHeader ? (openBlock(), createElementBlock("div", _hoisted_2$i, [ + renderSlot(_ctx.$slots, "header", {}, () => [ + createElementVNode("h1", _hoisted_3$g, toDisplayString($props.title), 1) + ]), + createElementVNode("div", _hoisted_4$b, [ + $options.dismissOnCloseButton && !$props.removeCloseButton && $props.dismissible ? (openBlock(), createBlock(_component_ui_close_button, { + key: 0, + onClick: $options.close + }, null, 8, ["onClick"])) : createCommentVNode("v-if", true) + ]) + ])) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_5$b, [ + renderSlot(_ctx.$slots, "default") + ]), + $options.hasFooter ? (openBlock(), createElementBlock("div", _hoisted_6$9, [ + renderSlot(_ctx.$slots, "footer") + ])) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["onKeydown"]) + ], 38) + ], 42, _hoisted_1$l), [ + [vShow, $data.isOpen] + ]) + ]), + _: 3 + }, 8, ["name", "onAfterEnter", "onAfterLeave"]); +} +const UiModal = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$m], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiModal.vue"]]); +const UiConfirm_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$l = { + name: "UiConfirm", + components: { + UiButton, + UiModal + }, + props: { + title: { + type: String, + default: "UiConfirm" + }, + type: { + type: String, + default: "primary" + }, + size: String, + confirmButtonText: { + type: String, + default: "OK" + }, + confirmButtonIcon: String, + denyButtonText: { + type: String, + default: "Cancel" + }, + denyButtonIcon: String, + autofocus: { + type: String, + default: "deny-button" + }, + closeOnConfirm: { + type: Boolean, + default: true + }, + dismissOn: String, + transition: String, + loading: { + type: Boolean, + default: false + } + }, + emits: ["confirm", "deny", "open", "reveal", "close", "hide"], + computed: { + confirmButtonColor() { + const typeToColor = { + default: "default", + primary: "primary", + accent: "accent", + success: "green", + warning: "orange", + danger: "red" + }; + return typeToColor[this.type]; + } + }, + methods: { + open() { + this.$refs.modal.open(); + }, + close() { + this.$refs.modal.close(); + }, + confirm() { + this.$emit("confirm"); + if (this.closeOnConfirm) { + this.$refs.modal.close(); + } + }, + deny() { + this.$refs.modal.close(); + this.$emit("deny"); + }, + onModalOpen() { + let button; + if (this.autofocus === "confirm-button") { + button = this.$refs.confirmButton.$el; + } else if (this.autofocus === "deny-button") { + button = this.$refs.denyButton.$el; + } + if (button) { + classlist.add(button, "has-focus-ring"); + button.addEventListener("blur", this.removeAutoFocus); + button.focus(); + } + this.$emit("open"); + }, + onModalReveal() { + this.$emit("reveal"); + }, + onModalClose() { + this.$emit("close"); + }, + onModalHide() { + this.$emit("hide"); + }, + removeAutoFocus() { + let button; + if (this.autofocus === "confirm-button") { + button = this.$refs.confirmButton.$el; + } else if (this.autofocus === "deny-button") { + button = this.$refs.denyButton.$el; + } + if (button) { + classlist.remove(button, "has-focus-ring"); + button.removeEventListener("blur", this.removeAutoFocus); + } + } + } +}; +const _hoisted_1$k = { class: "ui-confirm__message" }; +const _hoisted_2$h = { class: "ui-confirm__footer" }; +function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_button = resolveComponent("ui-button"); + const _component_ui_modal = resolveComponent("ui-modal"); + return openBlock(), createBlock(_component_ui_modal, { + ref: "modal", + class: "ui-confirm", + role: "alertdialog", + "dismiss-on": $props.dismissOn, + dismissible: !$props.loading, + title: $props.title, + transition: $props.transition, + size: $props.size, + onClose: $options.onModalClose, + onHide: $options.onModalHide, + onOpen: $options.onModalOpen, + onReveal: $options.onModalReveal + }, { + footer: withCtx(() => [ + createElementVNode("div", _hoisted_2$h, [ + createVNode(_component_ui_button, { + ref: "confirmButton", + color: $options.confirmButtonColor, + icon: $props.confirmButtonIcon, + loading: $props.loading, + onClick: $options.confirm + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString($props.confirmButtonText), 1) + ]), + _: 1 + }, 8, ["color", "icon", "loading", "onClick"]), + createVNode(_component_ui_button, { + ref: "denyButton", + disabled: $props.loading, + icon: $props.denyButtonIcon, + onClick: $options.deny + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString($props.denyButtonText), 1) + ]), + _: 1 + }, 8, ["disabled", "icon", "onClick"]) + ]) + ]), + default: withCtx(() => [ + createElementVNode("div", _hoisted_1$k, [ + renderSlot(_ctx.$slots, "default") + ]) + ]), + _: 3 + }, 8, ["dismiss-on", "dismissible", "title", "transition", "size", "onClose", "onHide", "onOpen", "onReveal"]); +} +const UiConfirm = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$l], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiConfirm.vue"]]); +function inView(element, container) { + if (!element) { + return; + } + container = container || element.parentElement; + const top = element.offsetTop; + const parentTop = container.scrollTop; + const bottom = top + element.offsetHeight; + const parentBottom = container.offsetHeight; + return top >= parentTop && bottom <= parentBottom; +} +function scrollIntoView(element, options = { container: null, marginTop: 0 }) { + if (!element) { + return; + } + options.container = options.container || element.parentElement; + if (inView(element, options.container)) { + return; + } + options.container.scrollTop = element.offsetTop - options.marginTop; +} +function resetScroll(element) { + if (!element) { + return; + } + element.scrollTop = 0; +} +const UiDatepickerCalendar_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$k = { + name: "UiDatepickerCalendar", + components: { + UiCalendarControls, + UiCalendarMonth + }, + props: { + modelValue: Date, + minDate: Date, + maxDate: Date, + startOfWeek: { + type: Number, + default: 0 + }, + currentView: { + type: String, + validator: (value) => value === "date" || value === "year" + }, + lang: { + type: Object, + default() { + return dateUtils.defaultLang; + } + }, + yearRange: { + type: Array, + default() { + const thisYear = new Date().getFullYear(); + return Array.apply(null, Array(200)).map((item, index) => { + return thisYear - 100 + index; + }); + } + }, + dateFilter: Function, + color: { + type: String, + default: "primary" + }, + orientation: { + type: String, + default: "portrait" + } + }, + emits: ["update:modelValue", "update:currentView", "date-select", "month-change"], + data() { + return { + today: new Date(), + dateInView: this.getDateInRange(this.modelValue, new Date()) + }; + }, + computed: { + classes() { + return [ + `ui-datepicker-calendar--color-${this.color}`, + `ui-datepicker-calendar--orientation-${this.orientation}` + ]; + }, + headerYear() { + return this.modelValue ? this.modelValue.getFullYear() : this.today.getFullYear(); + }, + headerWeekday() { + return this.modelValue ? dateUtils.getDayAbbreviated(this.modelValue, this.lang) : dateUtils.getDayAbbreviated(this.today, this.lang); + }, + headerDay() { + const date = this.modelValue ? this.modelValue : this.today; + return dateUtils.getMonthAbbreviated(date, this.lang) + " " + dateUtils.getDayOfMonth(date, this.lang); + }, + showYearPicker() { + return this.currentView === "year"; + }, + showDatePicker() { + return this.currentView === "date"; + }, + yearRangeFiltered() { + return this.yearRange.filter((year) => !this.isYearOutOfRange(year)); + } + }, + watch: { + modelValue() { + if (this.modelValue) { + this.dateInView = dateUtils.clone(this.modelValue); + } + }, + currentView() { + if (this.showYearPicker) { + this.$nextTick(() => { + const el = this.$refs.years.querySelector(".is-selected") || this.$refs.years.querySelector(".is-current-year"); + scrollIntoView(el, { marginTop: 144 }); + }); + } + } + }, + methods: { + selectYear(year) { + const newDate = dateUtils.clone(this.dateInView); + newDate.setFullYear(year); + this.dateInView = this.getDateInRange(newDate); + this.$emit("update:currentView", "date"); + }, + getDateInRange(date, fallback) { + date = date || fallback; + if (this.minDate && date.getTime() < this.minDate.getTime()) { + return this.minDate; + } + if (this.maxDate && date.getTime() > this.maxDate.getTime()) { + return this.maxDate; + } + return date; + }, + getYearClasses(year) { + return { + "is-current-year": this.isYearCurrent(year), + "is-selected": this.isYearSelected(year) + }; + }, + isYearCurrent(year) { + return year === this.today.getFullYear(); + }, + isYearSelected(year) { + return this.modelValue && year === this.modelValue.getFullYear(); + }, + isYearOutOfRange(year) { + if (this.minDate && year < this.minDate.getFullYear()) { + return true; + } + if (this.maxDate && year > this.maxDate.getFullYear()) { + return true; + } + if (year < this.yearRange[0]) { + return true; + } + if (year > this.yearRange[this.yearRange.length - 1]) { + return true; + } + return false; + }, + onDateSelect(date) { + this.$emit("update:modelValue", date); + this.$emit("date-select", date); + }, + onGoToDate(date) { + this.$refs.month.goToDate(date); + }, + onMonthChange(newDate) { + this.dateInView = newDate; + this.$emit("month-change", newDate); + } + } +}; +const _hoisted_1$j = { class: "ui-datepicker-calendar__header" }; +const _hoisted_2$g = { class: "ui-datepicker-calendar__header-weekday" }; +const _hoisted_3$f = { class: "ui-datepicker-calendar__header-day" }; +const _hoisted_4$a = { + ref: "years", + class: "ui-datepicker-calendar__years" +}; +const _hoisted_5$a = ["onClick", "onKeydown"]; +const _hoisted_6$8 = { class: "ui-datepicker-calendar__body" }; +function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_calendar_controls = resolveComponent("ui-calendar-controls"); + const _component_ui_calendar_month = resolveComponent("ui-calendar-month"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-datepicker-calendar", $options.classes]) + }, [ + createElementVNode("div", _hoisted_1$j, [ + createElementVNode("div", { + class: normalizeClass(["ui-datepicker-calendar__header-year", { "is-active": $options.showYearPicker }]), + tabindex: "0", + onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("update:currentView", "year")), + onKeydown: _cache[1] || (_cache[1] = withKeys(($event) => _ctx.$emit("update:currentView", "year"), ["enter"])) + }, toDisplayString($options.headerYear), 35), + createElementVNode("div", { + class: normalizeClass(["ui-datepicker-calendar__header-date", { "is-active": !$options.showYearPicker }]), + tabindex: "0", + onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("update:currentView", "date")), + onKeydown: _cache[3] || (_cache[3] = withKeys(($event) => _ctx.$emit("update:currentView", "date"), ["enter"])) + }, [ + createElementVNode("span", _hoisted_2$g, toDisplayString($options.headerWeekday) + ", ", 1), + createElementVNode("span", _hoisted_3$f, toDisplayString($options.headerDay), 1) + ], 34) + ]), + withDirectives(createElementVNode("ul", _hoisted_4$a, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($options.yearRangeFiltered, (year) => { + return openBlock(), createElementBlock("li", { + key: year, + class: normalizeClass(["ui-datepicker-calendar__year", $options.getYearClasses(year)]), + tabindex: "0", + onClick: ($event) => $options.selectYear(year), + onKeydown: withKeys(($event) => $options.selectYear(year), ["enter"]) + }, toDisplayString(year), 43, _hoisted_5$a); + }), 128)) + ], 512), [ + [vShow, $options.showYearPicker] + ]), + withDirectives(createElementVNode("div", _hoisted_6$8, [ + createVNode(_component_ui_calendar_controls, { + ref: "controls", + "date-in-view": $data.dateInView, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + "year-range": $props.yearRange, + onGoToDate: $options.onGoToDate + }, null, 8, ["date-in-view", "lang", "max-date", "min-date", "year-range", "onGoToDate"]), + createVNode(_component_ui_calendar_month, { + ref: "month", + "square-cells": "", + color: $props.color, + "date-filter": $props.dateFilter, + "date-in-view": $data.dateInView, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + selected: $props.modelValue, + "start-of-week": $props.startOfWeek, + onChange: $options.onMonthChange, + onDateSelect: $options.onDateSelect + }, null, 8, ["color", "date-filter", "date-in-view", "lang", "max-date", "min-date", "selected", "start-of-week", "onChange", "onDateSelect"]) + ], 512), [ + [vShow, !$options.showYearPicker] + ]) + ], 2); +} +const UiDatepickerCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$k], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiDatepickerCalendar.vue"]]); +const RespondsToExternalClick = { + emits: ["external-click"], + beforeUnmount() { + if (typeof this.destroyExternalClickListener === "function") { + this.removeExternalClickListener(); + } + }, + methods: { + addExternalClickListener(elements = [this.$el], callback = null, options = { passive: true }) { + elements = Array.isArray(elements) ? elements : [elements]; + this.destroyExternalClickListener = events.on("click", document, (e) => { + for (let i = 0; i < elements.length; i++) { + if (elements[i].contains(e.target)) { + return; + } + } + if (typeof callback === "function") { + callback(e); + } else { + this.$emit("external-click", e); + } + }, options); + }, + removeExternalClickListener() { + if (this.destroyExternalClickListener) { + this.destroyExternalClickListener(); + this.destroyExternalClickListener = null; + } + } + } +}; +const UiDatepicker_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$j = { + name: "UiDatepicker", + components: { + UiDatepickerCalendar, + UiIcon, + UiModal, + UiPopover + }, + mixins: [RespondsToExternalClick], + props: { + name: String, + modelValue: [Date, String], + tabindex: [String, Number], + startOfWeek: { + type: Number, + default: 0 + }, + minDate: Date, + maxDate: Date, + yearRange: Array, + lang: { + type: Object, + default() { + return dateUtils.defaultLang; + } + }, + customFormatter: Function, + dateFilter: Function, + color: { + type: String, + default: "primary" + }, + orientation: { + type: String, + default: "portrait" + }, + pickerType: { + type: String, + default: "popover" + }, + defaultView: { + type: String, + default: "date" + }, + appendDropdownToBody: Boolean, + dropdownZIndex: Number, + placeholder: String, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + label: String, + floatingLabel: { + type: Boolean, + default: false + }, + invalid: { + type: Boolean, + default: false + }, + help: String, + error: String, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "open", "close", "touch"], + data() { + return { + isActive: false, + isTouched: false, + initialValue: JSON.stringify(this.modelValue), + calendarView: this.defaultView + }; + }, + computed: { + date() { + return typeof this.modelValue === "string" ? new Date(this.modelValue) : this.modelValue; + }, + classes() { + return [ + `ui-datepicker--icon-position-${this.iconPosition}`, + `ui-datepicker--orientation-${this.orientation}`, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-touched": this.isTouched }, + { "is-disabled": this.disabled }, + { "has-label": this.hasLabel }, + { "has-floating-label": this.hasFloatingLabel } + ]; + }, + labelClasses() { + return { + "is-inline": this.hasFloatingLabel && this.isLabelInline, + "is-floating": this.hasFloatingLabel && !this.isLabelInline + }; + }, + hasLabel() { + return Boolean(this.label) || Boolean(this.$slots.default); + }, + hasFloatingLabel() { + return this.hasLabel && this.floatingLabel; + }, + isLabelInline() { + return !this.date && !this.isActive; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + }, + displayText() { + if (!this.date) { + return ""; + } + return this.customFormatter ? this.customFormatter(this.date, this.lang) : dateUtils.humanize(this.date, this.lang); + }, + hasDisplayText() { + return Boolean(this.displayText.length); + }, + submittedValue() { + return this.date ? `${this.date.getFullYear()}-${1 + this.date.getMonth()}-${this.date.getDate()}` : ""; + }, + usesPopover() { + return this.pickerType === "popover"; + }, + usesModal() { + return this.pickerType === "modal"; + } + }, + watch: { + isActive(value) { + if (value) { + this.addExternalClickListener([this.$el, this.getPicker().$el], this.onExternalClick); + } else { + this.removeExternalClickListener(); + } + } + }, + methods: { + onDateSelect(date) { + this.$emit("update:modelValue", date); + this.closePicker(); + }, + isPickerOpen() { + return this.usesModal ? this.$refs.modal.isOpen : this.$refs.popover.isOpen(); + }, + getPicker() { + return this.$refs[this.usesModal ? "modal" : "popover"]; + }, + openPicker() { + if (this.disabled) { + return; + } + this.getPicker().open(); + }, + closePicker(options = { returnFocus: true }) { + this.getPicker().close(); + this.calendarView = this.defaultView; + if (options.returnFocus) { + this.$refs.label.focus(); + } + }, + togglePicker(options = { returnFocus: true }) { + if (this.isPickerOpen()) { + this.closePicker(options); + } else { + this.openPicker(); + } + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onTabAway(e) { + this.isActive = false; + this.$emit("blur", e); + if (this.isPickerOpen()) { + this.closePicker({ returnFocus: false }); + } + }, + onPickerOpen() { + this.$emit("open"); + }, + onPickerClose() { + this.$emit("close"); + if (!this.isTouched) { + this.isTouched = true; + this.$emit("touch"); + } + }, + onExternalClick() { + this.isActive = false; + }, + focus() { + this.$refs.label.focus(); + }, + clear() { + this.$emit("update:modelValue", null); + }, + reset() { + this.$emit("update:modelValue", JSON.parse(this.initialValue)); + }, + resetTouched(options = { touched: false }) { + this.isTouched = options.touched; + } + } +}; +const _hoisted_1$i = ["name", "value"]; +const _hoisted_2$f = { + key: 0, + class: "ui-datepicker__icon-wrapper" +}; +const _hoisted_3$e = { class: "ui-datepicker__content" }; +const _hoisted_4$9 = ["tabindex"]; +const _hoisted_5$9 = { class: "ui-datepicker__display" }; +const _hoisted_6$7 = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M6.984 9.984h10.03L12 15z" }) +], -1); +const _hoisted_7$3 = { + key: 0, + class: "ui-datepicker__feedback" +}; +const _hoisted_8$2 = { + key: 0, + class: "ui-datepicker__feedback-text" +}; +const _hoisted_9$2 = { + key: 1, + class: "ui-datepicker__feedback-text" +}; +function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_datepicker_calendar = resolveComponent("ui-datepicker-calendar"); + const _component_ui_popover = resolveComponent("ui-popover"); + const _component_ui_modal = resolveComponent("ui-modal"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-datepicker", $options.classes]) + }, [ + createElementVNode("input", { + class: "ui-datepicker__hidden-input", + type: "hidden", + name: $props.name, + value: $options.submittedValue + }, null, 8, _hoisted_1$i), + $props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$f, [ + renderSlot(_ctx.$slots, "icon", {}, () => [ + createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_3$e, [ + createElementVNode("div", { + ref: "label", + class: "ui-datepicker__label", + tabindex: $props.disabled ? null : $props.tabindex || "0", + onFocus: _cache[1] || (_cache[1] = (...args) => $options.onFocus && $options.onFocus(...args)), + onClick: _cache[2] || (_cache[2] = ($event) => $options.togglePicker({ returnFocus: false })), + onKeydown: [ + _cache[3] || (_cache[3] = withKeys(withModifiers(($event) => $options.togglePicker({ returnFocus: false }), ["prevent"]), ["enter"])), + _cache[4] || (_cache[4] = withKeys(withModifiers(($event) => $options.togglePicker({ returnFocus: false }), ["prevent"]), ["space"])), + _cache[5] || (_cache[5] = withKeys((...args) => $options.onTabAway && $options.onTabAway(...args), ["tab"])) + ] + }, [ + $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(["ui-datepicker__label-text", $options.labelClasses]) + }, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.label), 1) + ]) + ], 2)) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_5$9, [ + createElementVNode("div", { + class: normalizeClass(["ui-datepicker__display-value", { "is-placeholder": !$options.hasDisplayText }]) + }, toDisplayString($options.hasDisplayText ? $options.displayText : $options.hasFloatingLabel && $options.isLabelInline ? null : $props.placeholder), 3), + $options.usesPopover && !$props.disabled ? (openBlock(), createBlock(_component_ui_icon, { + key: 0, + class: "ui-datepicker__dropdown-button" + }, { + default: withCtx(() => [ + _hoisted_6$7 + ]), + _: 1 + })) : createCommentVNode("v-if", true) + ]), + $options.usesPopover ? withDirectives((openBlock(), createBlock(_component_ui_popover, { + key: 1, + ref: "popover", + "contain-focus": "", + "open-on": "manual", + "close-on-scroll": false, + "append-to-body": $props.appendDropdownToBody, + "z-index": $props.dropdownZIndex, + onClose: $options.onPickerClose, + onOpen: $options.onPickerOpen + }, { + default: withCtx(() => [ + createVNode(_component_ui_datepicker_calendar, { + currentView: $data.calendarView, + "onUpdate:currentView": _cache[0] || (_cache[0] = ($event) => $data.calendarView = $event), + color: $props.color, + "date-filter": $props.dateFilter, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + orientation: $props.orientation, + value: $options.date, + "start-of-week": $props.startOfWeek, + "year-range": $props.yearRange, + onDateSelect: $options.onDateSelect + }, null, 8, ["currentView", "color", "date-filter", "lang", "max-date", "min-date", "orientation", "value", "start-of-week", "year-range", "onDateSelect"]) + ]), + _: 1 + }, 8, ["append-to-body", "z-index", "onClose", "onOpen"])), [ + [vShow, !$props.disabled] + ]) : createCommentVNode("v-if", true) + ], 40, _hoisted_4$9), + $options.hasFeedback ? (openBlock(), createElementBlock("div", _hoisted_7$3, [ + $options.showError ? (openBlock(), createElementBlock("div", _hoisted_8$2, [ + renderSlot(_ctx.$slots, "error", {}, () => [ + createTextVNode(toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (openBlock(), createElementBlock("div", _hoisted_9$2, [ + renderSlot(_ctx.$slots, "help", {}, () => [ + createTextVNode(toDisplayString($props.help), 1) + ]) + ])) : createCommentVNode("v-if", true) + ])) : createCommentVNode("v-if", true) + ]), + $options.usesModal && !$props.disabled ? (openBlock(), createBlock(_component_ui_modal, { + key: 1, + ref: "modal", + "remove-header": "", + size: "auto", + onHidden: $options.onPickerClose, + onOpen: $options.onPickerOpen + }, { + default: withCtx(() => [ + createVNode(_component_ui_datepicker_calendar, { + currentView: $data.calendarView, + "onUpdate:currentView": _cache[6] || (_cache[6] = ($event) => $data.calendarView = $event), + color: $props.color, + "date-filter": $props.dateFilter, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + orientation: $props.orientation, + value: $options.date, + "start-of-week": $props.startOfWeek, + "year-range": $props.yearRange, + onDateSelect: $options.onDateSelect + }, null, 8, ["currentView", "color", "date-filter", "lang", "max-date", "min-date", "orientation", "value", "start-of-week", "year-range", "onDateSelect"]) + ]), + _: 1 + }, 8, ["onHidden", "onOpen"])) : createCommentVNode("v-if", true) + ], 2); +} +const UiDatepicker = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$j], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiDatepicker.vue"]]); +const UiFab_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$i = { + name: "UiFab", + components: { + UiIcon, + UiRippleInk, + UiTooltip + }, + props: { + size: { + type: String, + default: "normal" + }, + color: { + type: String, + default: "default" + }, + icon: String, + ariaLabel: String, + tooltip: String, + openTooltipOn: String, + tooltipPosition: String, + disableRipple: { + type: Boolean, + default: false + } + }, + computed: { + classes() { + return [`ui-fab--color-${this.color}`, `ui-fab--size-${this.size}`]; + } + } +}; +const _hoisted_1$h = ["aria-label"]; +const _hoisted_2$e = { + key: 0, + class: "ui-fab__icon" +}; +const _hoisted_3$d = /* @__PURE__ */ createElementVNode("span", { class: "ui-fab__focus-ring" }, null, -1); +function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_ripple_ink = resolveComponent("ui-ripple-ink"); + const _component_ui_tooltip = resolveComponent("ui-tooltip"); + return openBlock(), createElementBlock("button", { + class: normalizeClass(["ui-fab", $options.classes]), + "aria-label": $props.ariaLabel || $props.tooltip + }, [ + $props.icon || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_2$e, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : createCommentVNode("v-if", true), + _hoisted_3$d, + !$props.disableRipple ? (openBlock(), createBlock(_component_ui_ripple_ink, { key: 1 })) : createCommentVNode("v-if", true), + $props.tooltip ? (openBlock(), createBlock(_component_ui_tooltip, { + key: 2, + "open-on": $props.openTooltipOn, + position: $props.tooltipPosition + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString($props.tooltip), 1) + ]), + _: 1 + }, 8, ["open-on", "position"])) : createCommentVNode("v-if", true) + ], 10, _hoisted_1$h); +} +const UiFab = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$i], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiFab.vue"]]); +const UiFileupload_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$h = { + name: "UiFileupload", + components: { + UiIcon, + UiRippleInk + }, + props: { + name: { + type: String, + required: true + }, + label: String, + tabindex: [String, Number], + accept: String, + multiple: { + type: Boolean, + default: false + }, + required: { + type: Boolean, + default: false + }, + type: { + type: String, + default: "primary" + }, + color: { + type: String, + default: "default" + }, + size: { + type: String, + default: "normal" + }, + raised: { + type: Boolean, + default: false + }, + iconPosition: { + type: String, + default: "left" + }, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["input", "focus", "blur", "change"], + data() { + return { + isActive: false, + renderInput: true, + hasSelection: false, + hasMultiple: false, + displayText: "" + }; + }, + computed: { + classes() { + return [ + `ui-fileupload--type-${this.type}`, + `ui-fileupload--color-${this.color}`, + `ui-fileupload--icon-position-${this.iconPosition}`, + `ui-fileupload--size-${this.size}`, + { "is-active": this.isActive }, + { "is-multiple": this.hasMultiple }, + { "is-raised": this.raised }, + { "is-disabled": this.disabled } + ]; + }, + placeholder() { + if (this.label) { + return this.label; + } + return this.multiple ? "Choose files" : "Choose a file"; + } + }, + methods: { + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + }, + onInput(e) { + this.$emit("input", this.$refs.input.files, e); + }, + onChange(e) { + this.updateDisplayText(e); + this.$emit("change", this.$refs.input.files, e); + }, + updateDisplayText(e) { + let displayText; + const input = this.$refs.input; + if (input.files && input.files.length > 1) { + displayText = `${input.files.length} files selected`; + } else { + displayText = e.target.value.split("\\").pop(); + } + if (displayText) { + this.hasSelection = true; + this.displayText = displayText; + this.hasMultiple = input.files.length > 1; + } + }, + focus() { + this.$refs.input.focus(); + }, + openPicker() { + this.$refs.input.click(); + }, + clear() { + this.hasSelection = false; + this.renderInput = false; + this.$nextTick(() => { + this.renderInput = true; + }); + } + } +}; +const _hoisted_1$g = ["accept", "disabled", "multiple", "name", "required", "tabindex"]; +const _hoisted_2$d = { class: "ui-fileupload__content" }; +const _hoisted_3$c = { class: "ui-fileupload__icon" }; +const _hoisted_4$8 = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M5.016 18h13.969v2.016H5.016V18zM9 15.984v-6H5.016L12 3l6.984 6.984H15v6H9z" }) +], -1); +const _hoisted_5$8 = { + key: 0, + class: "ui-fileupload__display-text" +}; +const _hoisted_6$6 = /* @__PURE__ */ createElementVNode("div", { class: "ui-fileupload__focus-ring" }, null, -1); +function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_ripple_ink = resolveComponent("ui-ripple-ink"); + return openBlock(), createElementBlock("label", { + class: normalizeClass(["ui-fileupload", $options.classes]) + }, [ + $data.renderInput ? (openBlock(), createElementBlock("input", { + key: 0, + ref: "input", + class: "ui-fileupload__input", + type: "file", + accept: $props.accept, + disabled: $props.disabled, + multiple: $props.multiple, + name: $props.name, + required: $props.required, + tabindex: $props.tabindex, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onInput: _cache[1] || (_cache[1] = (...args) => $options.onInput && $options.onInput(...args)), + onChange: _cache[2] || (_cache[2] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[3] || (_cache[3] = (...args) => $options.onFocus && $options.onFocus(...args)) + }, null, 40, _hoisted_1$g)) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_2$d, [ + createElementVNode("div", _hoisted_3$c, [ + renderSlot(_ctx.$slots, "icon", {}, () => [ + createVNode(_component_ui_icon, null, { + default: withCtx(() => [ + _hoisted_4$8 + ]), + _: 1 + }) + ]) + ]), + $data.hasSelection ? (openBlock(), createElementBlock("span", _hoisted_5$8, toDisplayString($data.displayText), 1)) : renderSlot(_ctx.$slots, "default", { key: 1 }, () => [ + createTextVNode(toDisplayString($options.placeholder), 1) + ]) + ]), + _hoisted_6$6, + !$props.disableRipple && !$props.disabled ? (openBlock(), createBlock(_component_ui_ripple_ink, { key: 1 })) : createCommentVNode("v-if", true) + ], 2); +} +const UiFileupload = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$h], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiFileupload.vue"]]); +const UiMenuOption_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$g = { + name: "UiMenuOption", + components: { + UiIcon, + UiRippleInk + }, + props: { + type: String, + label: String, + href: String, + target: String, + icon: String, + iconProps: { + type: Object, + default() { + return {}; + } + }, + secondaryText: String, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + computed: { + classes() { + return { + "is-divider": this.isDivider, + "is-disabled": this.disabled, + "is-anchor": this.isAnchor + }; + }, + isDivider() { + return this.type === "divider"; + }, + isAnchor() { + return !this.isDivider && this.href !== void 0; + } + } +}; +const _hoisted_1$f = { class: "ui-menu-option__content" }; +const _hoisted_2$c = { class: "ui-menu-option__text" }; +const _hoisted_3$b = { + key: 1, + class: "ui-menu-option__secondary-text" +}; +function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_ripple_ink = resolveComponent("ui-ripple-ink"); + return openBlock(), createBlock(resolveDynamicComponent($options.isAnchor ? "a" : "li"), { + class: normalizeClass(["ui-menu-option", $options.classes]), + role: "menu-item", + href: $options.isAnchor ? $props.disabled ? null : $props.href : null, + tabindex: $options.isDivider || $options.isAnchor || $props.disabled ? null : "0", + target: $options.isAnchor ? $props.disabled ? null : $props.target : null + }, { + default: withCtx(() => [ + !$options.isDivider ? renderSlot(_ctx.$slots, "default", { key: 0 }, () => [ + createElementVNode("div", _hoisted_1$f, [ + $props.icon ? (openBlock(), createBlock(_component_ui_icon, { + key: 0, + class: "ui-menu-option__icon", + "icon-set": $props.iconProps.iconSet, + icon: $props.icon, + "remove-text": $props.iconProps.removeText, + "use-svg": $props.iconProps.useSvg + }, null, 8, ["icon-set", "icon", "remove-text", "use-svg"])) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_2$c, toDisplayString($props.label), 1), + $props.secondaryText ? (openBlock(), createElementBlock("div", _hoisted_3$b, toDisplayString($props.secondaryText), 1)) : createCommentVNode("v-if", true) + ]) + ]) : createCommentVNode("v-if", true), + !$props.disabled && !$options.isDivider && !$props.disableRipple ? (openBlock(), createBlock(_component_ui_ripple_ink, { key: 1 })) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["class", "href", "tabindex", "target"]); +} +const UiMenuOption = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$g], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiMenuOption.vue"]]); +const UiMenu_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$f = { + name: "UiMenu", + components: { + UiFocusContainer, + UiMenuOption + }, + props: { + options: { + type: Array, + default() { + return []; + } + }, + hasIcons: { + type: Boolean, + default: false + }, + iconProps: Object, + hasSecondaryText: { + type: Boolean, + default: false + }, + containFocus: { + type: Boolean, + default: false + }, + keys: { + type: Object, + default() { + return { + icon: "icon", + type: "type", + label: "label", + secondaryText: "secondaryText", + iconProps: "iconProps", + disabled: "disabled", + href: "href", + target: "target" + }; + } + }, + disableRipple: { + type: Boolean, + default: false + }, + raised: { + type: Boolean, + default: false + } + }, + emits: ["select", "close"], + computed: { + classes() { + return { + "is-raised": this.raised, + "has-icons": this.hasIcons, + "has-secondary-text": this.hasSecondaryText + }; + } + }, + methods: { + selectOption(option) { + if (option.disabled || option.type === "divider") { + return; + } + this.$emit("select", option); + this.closeMenu(); + }, + closeMenu() { + this.$emit("close"); + } + } +}; +function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_menu_option = resolveComponent("ui-menu-option"); + const _component_ui_focus_container = resolveComponent("ui-focus-container"); + return openBlock(), createBlock(_component_ui_focus_container, { + ref: "focusContainer", + class: normalizeClass(["ui-menu", $options.classes]), + role: "menu", + tag: "ul", + lazy: "", + "contain-focus": $props.containFocus + }, { + default: withCtx(() => [ + (openBlock(true), createElementBlock(Fragment, null, renderList($props.options, (option, index) => { + return openBlock(), createBlock(_component_ui_menu_option, { + key: index, + "disable-ripple": $props.disableRipple, + disabled: option[$props.keys.disabled], + href: option[$props.keys.href], + "icon-props": $props.iconProps || option[$props.keys.iconProps], + icon: $props.hasIcons ? option[$props.keys.icon] : null, + label: option[$props.keys.type] === "divider" ? null : option[$props.keys.label] || option, + "secondary-text": $props.hasSecondaryText ? option[$props.keys.secondaryText] : null, + target: option[$props.keys.target], + type: option[$props.keys.type], + onClick: ($event) => $options.selectOption(option), + onKeydown: [ + withKeys(($event) => $options.selectOption(option), ["enter"]), + withKeys($options.closeMenu, ["esc"]) + ] + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "option", { option }) + ]), + _: 2 + }, 1032, ["disable-ripple", "disabled", "href", "icon-props", "icon", "label", "secondary-text", "target", "type", "onClick", "onKeydown"]); + }), 128)) + ]), + _: 3 + }, 8, ["class", "contain-focus"]); +} +const UiMenu = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$f], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiMenu.vue"]]); +const UiPreloader_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$e = { + name: "UiPreloader", + props: { + show: { + type: Boolean, + required: true + } + } +}; +const _hoisted_1$e = ["aria-busy"]; +function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-preloader", { "is-loading": $props.show }]) + }, [ + createElementVNode("div", { + class: "ui-preloader__progressbar", + role: "progressbar", + "aria-busy": $props.show ? "true" : false + }, null, 8, _hoisted_1$e) + ], 2); +} +const UiPreloader = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$e], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiPreloader.vue"]]); +const UiProgressLinear_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$d = { + name: "UiProgressLinear", + props: { + type: { + type: String, + default: "indeterminate" + }, + color: { + type: String, + default: "primary" + }, + progress: { + type: Number, + default: 0 + } + }, + computed: { + classes() { + return [`ui-progress-linear--color-${this.color}`, `ui-progress-linear--type-${this.type}`]; + }, + moderatedProgress() { + if (this.progress < 0) { + return 0; + } + if (this.progress > 100) { + return 100; + } + return this.progress; + } + } +}; +const _hoisted_1$d = ["aria-valuenow"]; +const _hoisted_2$b = { + key: 1, + class: "ui-progress-linear__progress-bar is-indeterminate", + role: "progressbar", + "aria-valuemax": 100, + "aria-valuemin": 0 +}; +function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createBlock(Transition, { name: "ui-progress-linear--transition-fade" }, { + default: withCtx(() => [ + createElementVNode("div", { + class: normalizeClass(["ui-progress-linear", $options.classes]) + }, [ + $props.type === "determinate" ? (openBlock(), createElementBlock("div", { + key: 0, + class: "ui-progress-linear__progress-bar is-determinate", + role: "progressbar", + "aria-valuemax": 100, + "aria-valuemin": 0, + "aria-valuenow": $options.moderatedProgress, + style: normalizeStyle({ transform: `scaleX(${$options.moderatedProgress / 100})` }) + }, null, 12, _hoisted_1$d)) : (openBlock(), createElementBlock("div", _hoisted_2$b)) + ], 2) + ]), + _: 1 + }); +} +const UiProgressLinear = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$d], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiProgressLinear.vue"]]); +const UiRadio_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$c = { + name: "UiRadio", + props: { + name: String, + label: String, + tabindex: [String, Number], + modelValue: { + type: [Number, String], + required: true + }, + trueValue: { + type: [Number, String], + required: true + }, + checked: { + type: Boolean, + default: false + }, + color: { + type: String, + default: "primary" + }, + buttonPosition: { + type: String, + default: "left" + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "change"], + data() { + return { + isActive: false + }; + }, + computed: { + classes() { + return [ + `ui-radio--color-${this.color}`, + `ui-radio--button-position-${this.buttonPosition}`, + { "is-active": this.isActive }, + { "is-checked": this.isChecked }, + { "is-disabled": this.disabled } + ]; + }, + isChecked() { + return this.modelValue === this.trueValue; + } + }, + created() { + if (this.checked && !this.isChecked) { + this.$emit("update:modelValue", this.trueValue); + } + }, + methods: { + focus() { + this.$refs.input.focus(); + }, + toggleCheck() { + if (!this.disabled) { + this.$emit("update:modelValue", this.trueValue); + } + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + }, + onChange(e) { + this.$emit("change", this.isChecked, e); + } + } +}; +const _hoisted_1$c = { class: "ui-radio__input-wrapper" }; +const _hoisted_2$a = [".checked", "disabled", "name", "tabindex", "value"]; +const _hoisted_3$a = /* @__PURE__ */ createElementVNode("div", { class: "ui-radio__focus-ring" }, null, -1); +const _hoisted_4$7 = /* @__PURE__ */ createElementVNode("span", { class: "ui-radio__outer-circle" }, null, -1); +const _hoisted_5$7 = /* @__PURE__ */ createElementVNode("span", { class: "ui-radio__inner-circle" }, null, -1); +const _hoisted_6$5 = { + key: 0, + class: "ui-radio__label-text" +}; +function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock("label", { + class: normalizeClass(["ui-radio", $options.classes]), + onClick: _cache[3] || (_cache[3] = (...args) => $options.toggleCheck && $options.toggleCheck(...args)) + }, [ + createElementVNode("div", _hoisted_1$c, [ + createElementVNode("input", { + ref: "input", + class: "ui-radio__input", + type: "radio", + ".checked": $props.checked, + disabled: $props.disabled, + name: $props.name, + tabindex: $props.tabindex, + value: $props.trueValue, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onChange: _cache[1] || (_cache[1] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[2] || (_cache[2] = (...args) => $options.onFocus && $options.onFocus(...args)) + }, null, 40, _hoisted_2$a), + _hoisted_3$a, + _hoisted_4$7, + _hoisted_5$7 + ]), + $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_6$5, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.label), 1) + ]) + ])) : createCommentVNode("v-if", true) + ], 2); +} +const UiRadio = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$c], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiRadio.vue"]]); +const UiRadioGroup_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$b = { + name: "UiRadioGroup", + components: { + UiRadio + }, + props: { + name: { + type: String, + required: true + }, + tabindex: [String, Number], + label: String, + options: { + type: Array, + required: true + }, + modelValue: { + type: [Number, String], + required: true + }, + keys: { + type: Object, + default() { + return { + id: "id", + class: "class", + label: "label", + value: "value", + checked: "checked", + disabled: "disabled" + }; + } + }, + color: { + type: String, + default: "primary" + }, + buttonPosition: { + type: String, + default: "left" + }, + vertical: { + type: Boolean, + default: false + }, + help: String, + error: String, + invalid: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "change"], + data() { + return { + isActive: false, + initialValue: this.modelValue + }; + }, + computed: { + classes() { + return [ + `ui-radio-group--color-${this.color}`, + `ui-radio-group--button-position-${this.buttonPosition}`, + { "is-vertical": this.vertical }, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-disabled": this.disabled } + ]; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + }, + selectedOptionValue: { + get() { + return this.modelValue; + }, + set(value) { + this.$emit("update:modelValue", value); + this.$emit("change", value); + } + } + }, + methods: { + reset() { + this.$emit("update:modelValue", this.initialValue); + }, + isOptionCheckedByDefault(option) { + return this.initialValue == option[this.keys.value] || this.initialValue == option || option[this.keys.checked]; + }, + getTrueValue(option) { + if (typeof option === "string" || typeof option === "number") { + return option; + } + const value = option[this.keys.value]; + if (value === void 0) { + console.warn("[UiRadioGroup] option has no `value`: ", option); + return option; + } + return value; + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + } + } +}; +const _hoisted_1$b = { + key: 0, + class: "ui-radio-group__label-text" +}; +const _hoisted_2$9 = { class: "ui-radio-group__radios" }; +const _hoisted_3$9 = { + key: 1, + class: "ui-radio-group__feedback" +}; +const _hoisted_4$6 = { + key: 0, + class: "ui-radio-group__feedback-text" +}; +const _hoisted_5$6 = { + key: 1, + class: "ui-radio-group__feedback-text" +}; +function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_radio = resolveComponent("ui-radio"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-radio-group", $options.classes]) + }, [ + $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_1$b, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.label), 1) + ]) + ])) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_2$9, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($props.options, (option) => { + return openBlock(), createBlock(_component_ui_radio, { + id: option[$props.keys.id], + key: option[$props.keys.id], + modelValue: $options.selectedOptionValue, + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $options.selectedOptionValue = $event), + class: normalizeClass(["ui-radio-group__radio", option[$props.keys.class]]), + "button-position": $props.buttonPosition, + checked: $options.isOptionCheckedByDefault(option), + color: $props.color, + disabled: $props.disabled || option[$props.keys.disabled], + name: $props.name, + tabindex: $props.tabindex, + "true-value": $options.getTrueValue(option), + onBlur: $options.onBlur, + onFocus: $options.onFocus + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString(option[$props.keys.label] || option), 1) + ]), + _: 2 + }, 1032, ["id", "modelValue", "button-position", "checked", "class", "color", "disabled", "name", "tabindex", "true-value", "onBlur", "onFocus"]); + }), 128)) + ]), + $options.hasFeedback ? (openBlock(), createElementBlock("div", _hoisted_3$9, [ + $options.showError ? (openBlock(), createElementBlock("div", _hoisted_4$6, [ + renderSlot(_ctx.$slots, "error", {}, () => [ + createTextVNode(toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (openBlock(), createElementBlock("div", _hoisted_5$6, [ + renderSlot(_ctx.$slots, "help", {}, () => [ + createTextVNode(toDisplayString($props.help), 1) + ]) + ])) : createCommentVNode("v-if", true) + ])) : createCommentVNode("v-if", true) + ], 2); +} +const UiRadioGroup = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$b], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiRadioGroup.vue"]]); +const UiSelectOption_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$a = { + name: "UiSelectOption", + components: { + UiIcon + }, + props: { + option: { + type: [String, Number, Object], + required: true + }, + type: { + type: String, + default: "basic" + }, + multiple: { + type: Boolean, + default: false + }, + highlighted: { + type: Boolean, + default: false + }, + selected: { + type: Boolean, + default: false + }, + keys: { + type: Object, + default() { + return { + class: "class", + label: "label", + image: "image" + }; + } + } + }, + computed: { + classes() { + return [ + `ui-select-option--type-${this.type}`, + this.option[this.keys.class], + { "is-highlighted": this.highlighted }, + { "is-selected": this.selected } + ]; + }, + imageStyle() { + return { "background-image": "url(" + this.option[this.keys.image] + ")" }; + } + } +}; +const _hoisted_1$a = { + key: 0, + class: "ui-select-option__basic" +}; +const _hoisted_2$8 = { + key: 1, + class: "ui-select-option__image" +}; +const _hoisted_3$8 = { class: "ui-select-option__image-text" }; +const _hoisted_4$5 = { + key: 2, + class: "ui-select-option__checkbox" +}; +const _hoisted_5$5 = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M9.984 17.016l9-9-1.406-1.453-7.594 7.594-3.563-3.563L5.016 12zm9-14.016C20.11 3 21 3.938 21 5.016v13.97C21 20.062 20.11 21 18.984 21H5.014C3.89 21 3 20.064 3 18.986V5.015C3 3.94 3.89 3 5.014 3h13.97z" }) +], -1); +const _hoisted_6$4 = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M18.984 3C20.062 3 21 3.938 21 5.016v13.97C21 20.062 20.062 21 18.984 21H5.014C3.938 21 3 20.064 3 18.986V5.015C3 3.94 3.936 3 5.014 3h13.97zm0 2.016H5.014v13.97h13.97V5.015z" }) +], -1); +function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + return openBlock(), createElementBlock("li", { + class: normalizeClass(["ui-select-option", $options.classes]) + }, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + $props.type === "basic" ? (openBlock(), createElementBlock("div", _hoisted_1$a, toDisplayString($props.option[$props.keys.label] || $props.option), 1)) : createCommentVNode("v-if", true), + $props.type === "image" ? (openBlock(), createElementBlock("div", _hoisted_2$8, [ + createElementVNode("div", { + class: "ui-select-option__image-object", + style: normalizeStyle($options.imageStyle) + }, null, 4), + createElementVNode("div", _hoisted_3$8, toDisplayString($props.option[$props.keys.label]), 1) + ])) : createCommentVNode("v-if", true), + $props.multiple ? (openBlock(), createElementBlock("div", _hoisted_4$5, [ + $props.selected ? (openBlock(), createBlock(_component_ui_icon, { key: 0 }, { + default: withCtx(() => [ + _hoisted_5$5 + ]), + _: 1 + })) : (openBlock(), createBlock(_component_ui_icon, { key: 1 }, { + default: withCtx(() => [ + _hoisted_6$4 + ]), + _: 1 + })) + ])) : createCommentVNode("v-if", true) + ]) + ], 2); +} +const UiSelectOption = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$a], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSelectOption.vue"]]); +const UiSelect_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$9 = { + name: "UiSelect", + components: { + UiIcon, + UiPopover, + UiProgressCircular, + UiSelectOption + }, + mixins: [RespondsToExternalClick], + props: { + name: String, + tabindex: [String, Number], + modelValue: { + type: [String, Number, Object, Array], + required: true + }, + options: { + type: Array, + default() { + return []; + } + }, + placeholder: String, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + label: String, + floatingLabel: { + type: Boolean, + default: false + }, + type: { + type: String, + default: "basic" + }, + multiple: { + type: Boolean, + default: false + }, + multipleDelimiter: { + type: String, + default: ", " + }, + hasSearch: { + type: Boolean, + default: false + }, + searchPlaceholder: { + type: String, + default: "Search" + }, + filter: Function, + disableFilter: { + type: Boolean, + default: false + }, + loading: { + type: Boolean, + default: false + }, + noResults: { + type: Boolean, + default: false + }, + keys: { + type: Object, + default() { + return { + class: "class", + label: "label", + value: "value", + image: "image" + }; + } + }, + invalid: { + type: Boolean, + default: false + }, + help: String, + error: String, + disabled: { + type: Boolean, + default: false + } + }, + emits: [ + "update:modelValue", + "query-change", + "change", + "select", + "touch", + "focus", + "blur", + "dropdown-open", + "dropdown-close" + ], + data() { + return { + query: "", + isActive: false, + isTouched: false, + selectedIndex: -1, + highlightedIndex: -1, + initialValue: JSON.stringify(this.modelValue) + }; + }, + computed: { + classes() { + return [ + `ui-select--type-${this.type}`, + `ui-select--icon-position-${this.iconPosition}`, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-touched": this.isTouched }, + { "is-disabled": this.disabled }, + { "is-multiple": this.multiple }, + { "has-label": this.hasLabel }, + { "has-floating-label": this.hasFloatingLabel } + ]; + }, + labelClasses() { + return { + "is-inline": this.hasFloatingLabel && this.isLabelInline, + "is-floating": this.hasFloatingLabel && !this.isLabelInline + }; + }, + hasLabel() { + return Boolean(this.label) || Boolean(this.$slots.default); + }, + hasFloatingLabel() { + return this.hasLabel && this.floatingLabel; + }, + isLabelInline() { + return this.modelValue.length === 0 && !this.isActive; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + }, + filteredOptions() { + if (this.disableFilter) { + return this.options; + } + const options = this.options.filter((option) => { + if (this.filter) { + return this.filter(option, this.query, this.defaultFilter); + } + return this.defaultFilter(option, this.query); + }); + if (this.sort) { + options.sort(this.sort.bind(this)); + } + return options; + }, + displayText() { + if (this.multiple) { + if (this.modelValue.length > 0) { + return this.modelValue.map((value) => value[this.keys.label] || value).join(this.multipleDelimiter); + } + return ""; + } + return this.modelValue ? this.modelValue[this.keys.label] || this.modelValue : ""; + }, + hasDisplayText() { + return Boolean(this.displayText.length); + }, + hasNoResults() { + if (this.loading || this.query.length === 0) { + return false; + } + return this.disableFilter ? this.noResults : this.filteredOptions.length === 0; + }, + submittedValue() { + if (!this.name || !this.modelValue) { + return; + } + if (Array.isArray(this.modelValue)) { + return this.modelValue.map((option) => option[this.keys.value] || option).join(","); + } + return this.modelValue[this.keys.value] || this.modelValue; + }, + emptyValue() { + return this.multiple ? [] : ""; + } + }, + watch: { + filteredOptions() { + this.highlightedIndex = 0; + resetScroll(this.$refs.optionsList); + }, + query() { + this.$emit("query-change", this.query); + }, + isActive(value) { + if (value) { + this.addExternalClickListener(this.$el, this.onExternalClick); + } else { + this.removeExternalClickListener(); + } + } + }, + created() { + const invalidMultipleValue = this.multiple && !Array.isArray(this.modelValue); + const invalidEmptyValue = !this.modelValue && this.modelValue !== ""; + if (invalidMultipleValue || invalidEmptyValue) { + this.$emit("update:modelValue", this.emptyValue); + this.initialValue = JSON.stringify(this.emptyValue); + } + }, + methods: { + setValue(value) { + this.$emit("update:modelValue", value); + this.$emit("change", value); + }, + highlightOption(index, options = { autoScroll: true }) { + if (this.highlightedIndex === index || this.$refs.options.length === 0) { + return; + } + const firstIndex = 0; + const lastIndex = this.$refs.options.length - 1; + if (index < firstIndex) { + index = lastIndex; + } else if (index > lastIndex) { + index = firstIndex; + } + this.highlightedIndex = index; + if (options.autoScroll) { + this.scrollOptionIntoView(this.$refs.options[index].$el); + } + }, + selectHighlighted(index, e) { + if (this.$refs.options.length > 0) { + e.preventDefault(); + this.selectOption(this.$refs.options[index].option, index); + } + }, + selectOption(option, index, options = { autoClose: true }) { + const shouldSelect = this.multiple && !this.isOptionSelected(option); + if (this.multiple) { + this.updateOption(option, { select: shouldSelect }); + } else { + this.setValue(option); + this.selectedIndex = index; + } + this.$emit("select", option, { + selected: this.multiple ? shouldSelect : true + }); + this.highlightedIndex = index; + if (!this.multiple) { + this.clearQuery(); + } + if (!this.multiple && options.autoClose) { + this.closeDropdown(); + } + }, + isOptionSelected(option) { + if (this.multiple) { + return looseIndexOf(this.modelValue, option) > -1; + } + return looseEqual(this.modelValue, option); + }, + updateOption(option, options = { select: true }) { + let value = []; + let updated = false; + const i = looseIndexOf(this.modelValue, option); + if (options.select && i < 0) { + value = this.modelValue.concat(option); + updated = true; + } + if (!options.select && i > -1) { + value = this.modelValue.slice(0, i).concat(this.modelValue.slice(i + 1)); + updated = true; + } + if (updated) { + this.setValue(value); + } + }, + defaultFilter(option, query) { + let text = option[this.keys.label] || option; + if (typeof text === "string") { + text = text.toLowerCase(); + } + return fuzzysearch_1(query.toLowerCase(), text); + }, + clearSelection() { + this.setValue(this.emptyValue); + }, + clearQuery() { + this.query = ""; + }, + focus() { + this.$refs.label.focus(); + }, + toggleDropdown() { + this.$refs.dropdown.toggle(); + }, + openDropdown() { + if (this.disabled) { + return; + } + this.$refs.dropdown.open(); + }, + closeDropdown(options = { blurAfterClose: false }) { + this.$refs.dropdown.close(); + if (!this.isTouched) { + this.isTouched = true; + this.$emit("touch"); + } + if (options.blurAfterClose) { + this.isActive = false; + } else { + this.$refs.label.focus(); + } + }, + onFocus(e) { + if (this.isActive) { + return; + } + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + if (this.$refs.dropdown.isOpen()) { + this.closeDropdown({ blurAfterClose: true }); + } + }, + onOpen() { + this.isActive = true; + this.$refs.dropdown.$el.style.width = this.$refs.label.getBoundingClientRect().width + "px"; + this.$nextTick(() => { + this.scrollOptionIntoView(this.$refs.optionsList.querySelector(".is-selected")); + }); + this.$emit("dropdown-open"); + }, + onReveal() { + this.$refs[this.hasSearch ? "searchInput" : "dropdownContent"].focus(); + }, + onClose() { + this.highlightedIndex = this.multiple ? -1 : this.selectedIndex; + this.$emit("dropdown-close"); + }, + onExternalClick() { + if (this.$refs.dropdown.isOpen()) { + this.closeDropdown({ blurAfterClose: true }); + } else if (this.isActive) { + this.isActive = false; + } + }, + scrollOptionIntoView(optionEl) { + scrollIntoView(optionEl, { + container: this.$refs.optionsList, + marginTop: 180 + }); + }, + reset() { + this.setValue(JSON.parse(this.initialValue)); + this.clearQuery(); + this.resetTouched(); + this.selectedIndex = -1; + this.highlightedIndex = -1; + }, + resetTouched(options = { touched: false }) { + this.isTouched = options.touched; + } + } +}; +const _hoisted_1$9 = ["name", "value"]; +const _hoisted_2$7 = { + key: 1, + class: "ui-select__icon-wrapper" +}; +const _hoisted_3$7 = { class: "ui-select__content" }; +const _hoisted_4$4 = ["tabindex"]; +const _hoisted_5$4 = { class: "ui-select__display" }; +const _hoisted_6$3 = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M6.984 9.984h10.03L12 15z" }) +], -1); +const _hoisted_7$2 = ["placeholder"]; +const _hoisted_8$1 = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M9.516 14.016c2.484 0 4.5-2.016 4.5-4.5s-2.016-4.5-4.5-4.5-4.5 2.016-4.5 4.5 2.016 4.5 4.5 4.5zm6 0l4.97 4.97-1.5 1.5-4.97-4.97v-.797l-.28-.282c-1.126.984-2.626 1.547-4.22 1.547-3.61 0-6.516-2.86-6.516-6.47S5.906 3 9.516 3s6.47 2.906 6.47 6.516c0 1.594-.564 3.094-1.548 4.22l.28.28h.798z" }) +], -1); +const _hoisted_9$1 = { + ref: "optionsList", + class: "ui-select__options" +}; +const _hoisted_10 = { class: "ui-select__no-results" }; +const _hoisted_11 = /* @__PURE__ */ createTextVNode("No results found"); +const _hoisted_12 = { + key: 0, + class: "ui-select__feedback" +}; +const _hoisted_13 = { + key: 0, + class: "ui-select__feedback-text" +}; +const _hoisted_14 = { + key: 1, + class: "ui-select__feedback-text" +}; +function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_progress_circular = resolveComponent("ui-progress-circular"); + const _component_ui_select_option = resolveComponent("ui-select-option"); + const _component_ui_popover = resolveComponent("ui-popover"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-select", $options.classes]) + }, [ + $props.name ? (openBlock(), createElementBlock("input", { + key: 0, + class: "ui-select__hidden-input", + type: "hidden", + name: $props.name, + value: $options.submittedValue + }, null, 8, _hoisted_1$9)) : createCommentVNode("v-if", true), + $props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$7, [ + renderSlot(_ctx.$slots, "icon", {}, () => [ + createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_3$7, [ + createElementVNode("div", { + ref: "label", + class: "ui-select__label", + tabindex: $props.disabled ? null : $props.tabindex || "0", + onFocus: _cache[8] || (_cache[8] = (...args) => $options.onFocus && $options.onFocus(...args)), + onKeydown: [ + _cache[9] || (_cache[9] = withKeys(withModifiers((...args) => $options.openDropdown && $options.openDropdown(...args), ["prevent"]), ["enter"])), + _cache[10] || (_cache[10] = withKeys(withModifiers((...args) => $options.openDropdown && $options.openDropdown(...args), ["prevent"]), ["space"])), + _cache[11] || (_cache[11] = withKeys((...args) => $options.onBlur && $options.onBlur(...args), ["tab"])) + ] + }, [ + $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(["ui-select__label-text", $options.labelClasses]) + }, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.label), 1) + ]) + ], 2)) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_5$4, [ + createElementVNode("div", { + class: normalizeClass(["ui-select__display-value", { "is-placeholder": !$options.hasDisplayText }]) + }, toDisplayString($options.hasDisplayText ? $options.displayText : $options.hasFloatingLabel && $options.isLabelInline ? null : $props.placeholder), 3), + createVNode(_component_ui_icon, { class: "ui-select__dropdown-button" }, { + default: withCtx(() => [ + _hoisted_6$3 + ]), + _: 1 + }) + ]), + createVNode(_component_ui_popover, { + ref: "dropdown", + class: "ui-select__dropdown", + "close-on-scroll": false, + "constrain-to-scroll-parent": false, + "close-on-external-click": false, + disabled: $props.disabled, + onClose: $options.onClose, + onOpen: $options.onOpen, + onReveal: $options.onReveal + }, { + default: withCtx(() => [ + createElementVNode("div", { + ref: "dropdownContent", + class: "ui-select__dropdown-content", + tabindex: "-1", + onKeydown: [ + _cache[3] || (_cache[3] = withKeys(withModifiers(($event) => $options.highlightOption($data.highlightedIndex + 1), ["prevent"]), ["down"])), + _cache[4] || (_cache[4] = withKeys(withModifiers(($event) => $options.selectHighlighted($data.highlightedIndex, $event), ["prevent", "stop"]), ["enter"])), + _cache[5] || (_cache[5] = withKeys(withModifiers(($event) => $options.closeDropdown(), ["prevent"]), ["esc"])), + _cache[6] || (_cache[6] = withKeys((...args) => $options.onBlur && $options.onBlur(...args), ["tab"])), + _cache[7] || (_cache[7] = withKeys(withModifiers(($event) => $options.highlightOption($data.highlightedIndex - 1), ["prevent"]), ["up"])) + ] + }, [ + $props.hasSearch ? (openBlock(), createElementBlock("div", { + key: 0, + class: "ui-select__search", + onClick: _cache[1] || (_cache[1] = withModifiers(() => { + }, ["stop"])), + onKeydown: _cache[2] || (_cache[2] = withKeys(withModifiers(() => { + }, ["stop"]), ["space"])) + }, [ + withDirectives(createElementVNode("input", { + ref: "searchInput", + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.query = $event), + autocomplete: "off", + class: "ui-select__search-input", + type: "text", + placeholder: $props.searchPlaceholder + }, null, 8, _hoisted_7$2), [ + [vModelText, $data.query] + ]), + createVNode(_component_ui_icon, { class: "ui-select__search-icon" }, { + default: withCtx(() => [ + _hoisted_8$1 + ]), + _: 1 + }), + $props.loading ? (openBlock(), createBlock(_component_ui_progress_circular, { + key: 0, + class: "ui-select__search-progress", + size: 20, + stroke: 4 + })) : createCommentVNode("v-if", true) + ], 32)) : createCommentVNode("v-if", true), + createElementVNode("ul", _hoisted_9$1, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($options.filteredOptions, (option, index) => { + return openBlock(), createBlock(_component_ui_select_option, { + ref_for: true, + ref: "options", + key: index, + highlighted: $data.highlightedIndex === index, + keys: $props.keys, + multiple: $props.multiple, + option, + selected: $options.isOptionSelected(option), + type: $props.type, + onClick: withModifiers(($event) => $options.selectOption(option, index), ["stop"]), + onMouseover: withModifiers(($event) => $options.highlightOption(index, { autoScroll: false }), ["stop"]) + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "option", { + highlighted: $data.highlightedIndex === index, + index, + option, + selected: $options.isOptionSelected(option) + }) + ]), + _: 2 + }, 1032, ["highlighted", "keys", "multiple", "option", "selected", "type", "onClick", "onMouseover"]); + }), 128)), + withDirectives(createElementVNode("div", _hoisted_10, [ + renderSlot(_ctx.$slots, "no-results", {}, () => [ + _hoisted_11 + ]) + ], 512), [ + [vShow, $options.hasNoResults] + ]) + ], 512) + ], 544) + ]), + _: 3 + }, 8, ["disabled", "onClose", "onOpen", "onReveal"]) + ], 40, _hoisted_4$4), + $options.hasFeedback ? (openBlock(), createElementBlock("div", _hoisted_12, [ + $options.showError ? (openBlock(), createElementBlock("div", _hoisted_13, [ + renderSlot(_ctx.$slots, "error", {}, () => [ + createTextVNode(toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (openBlock(), createElementBlock("div", _hoisted_14, [ + renderSlot(_ctx.$slots, "help", {}, () => [ + createTextVNode(toDisplayString($props.help), 1) + ]) + ])) : createCommentVNode("v-if", true) + ])) : createCommentVNode("v-if", true) + ]) + ], 2); +} +const UiSelect = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$9], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSelect.vue"]]); +const UiSlider_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$8 = { + name: "UiSlider", + components: { + UiIcon + }, + props: { + name: String, + tabindex: [String, Number], + icon: String, + modelValue: { + type: Number, + required: true + }, + min: { + type: Number, + default: 0 + }, + max: { + type: Number, + default: 100 + }, + step: { + type: Number, + default: 10 + }, + snapToSteps: { + type: Boolean, + default: false + }, + showMarker: { + type: Boolean, + default: false + }, + markerValue: [String, Number], + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "change", "dragstart", "dragend"], + data() { + return { + initialValue: this.modelValue, + isActive: false, + isDragging: false, + localValue: this.modelValue + }; + }, + computed: { + classes() { + return [ + { "is-dragging": this.isDragging }, + { "is-disabled": this.disabled }, + { "is-active": this.isActive }, + { "has-icon": this.hasIcon }, + { "has-marker": this.showMarker } + ]; + }, + hasIcon() { + return Boolean(this.$slots.icon) || Boolean(this.icon); + }, + fillStyle() { + return { transform: "scaleX(" + this.relativeValue(this.localValue) + ")" }; + }, + thumbStyle() { + return { + left: this.relativeValue(this.localValue) * 100 + "%" + }; + }, + markerText() { + return this.markerValue === void 0 ? this.modelValue : this.markerValue; + }, + snapPoints() { + const points = []; + let point = this.step * Math.ceil(this.moderatedMin / this.step); + while (point <= this.moderatedMax) { + points.push(point); + point += this.step; + } + return points; + }, + moderatedMin() { + return this.max > this.min ? this.min : 0; + }, + moderatedMax() { + return this.max > this.min ? this.max : 100; + } + }, + watch: { + modelValue() { + this.setValue(this.modelValue); + }, + isDragging() { + const operation = this.isDragging ? "add" : "remove"; + classlist[operation](document.body, "ui-slider--is-dragging"); + } + }, + mounted() { + this.initializeSlider(); + }, + beforeUnmount() { + this.teardownSlider(); + }, + methods: { + focus() { + this.$el.focus(); + }, + reset() { + this.setValue(this.initialValue); + }, + onFocus() { + this.isActive = true; + this.$emit("focus"); + }, + onBlur() { + this.isActive = false; + this.$emit("blur"); + }, + onExternalClick(e) { + if (!this.$el.contains(e.target)) { + this.onBlur(); + } + }, + setValueWithSnap(value) { + value = this.moderateValue(value); + if (this.snapToSteps) { + value = this.getNearestSnapPoint(value); + } + this.setValue(value); + }, + setValue(value) { + value = this.moderateValue(value); + if (value === this.localValue) { + return; + } + this.localValue = value; + this.$emit("update:modelValue", value); + this.$emit("change", value); + }, + incrementValue() { + this.setValueWithSnap(this.localValue + this.step); + }, + decrementValue() { + this.setValueWithSnap(this.localValue - this.step); + }, + getTrackOffset() { + let el = this.$refs.track; + let offset2 = el.offsetLeft; + while (el.offsetParent) { + el = el.offsetParent; + offset2 += el.offsetLeft; + } + return offset2; + }, + getPointStyle(point) { + return { + left: point + "%" + }; + }, + initializeSlider() { + document.addEventListener("touchend", this.onDragStop); + document.addEventListener("mouseup", this.onDragStop); + document.addEventListener("click", this.onExternalClick); + this.initializeDrag(); + }, + teardownSlider() { + document.removeEventListener("touchend", this.onDragStop); + document.removeEventListener("mouseup", this.onDragStop); + document.removeEventListener("click", this.onExternalClick); + }, + initializeDrag() { + const value = this.moderateValue(this.localValue ? this.localValue : 0); + this.setValue(value); + }, + onDragStart(e) { + if (this.disabled) { + return; + } + if (!this.isActive) { + this.onFocus(); + } + this.isDragging = true; + this.dragUpdate(e); + document.addEventListener("touchmove", this.onDragMove, { passive: true }); + document.addEventListener("mousemove", this.onDragMove); + this.$emit("dragstart", this.localValue, e); + }, + onDragMove(e) { + this.dragUpdate(e); + }, + dragUpdate(e) { + const position = e.touches ? e.touches[0].pageX : e.pageX; + const trackLength = this.$refs.track.offsetWidth; + const relativeValue = (position - this.getTrackOffset()) / trackLength; + const value = this.moderateValue( + this.moderatedMin + relativeValue * (this.moderatedMax - this.moderatedMin) + ); + if (this.isDragging) { + this.setValue(Math.round(value)); + } + }, + onDragStop(e) { + if (this.isDragging) { + this.isDragging = false; + if (this.snapToSteps && this.modelValue % this.step !== 0) { + this.setValueWithSnap(this.modelValue); + } + document.removeEventListener("touchmove", this.onDragMove); + document.removeEventListener("mousemove", this.onDragMove); + this.$emit("dragend", this.localValue, e); + } + }, + getNearestSnapPoint(value) { + const previousSnapPoint = Math.floor(value / this.step) * this.step; + const nextSnapPoint = previousSnapPoint + this.step; + const midpoint = (previousSnapPoint + nextSnapPoint) / 2; + if (previousSnapPoint < this.moderatedMin) { + if (nextSnapPoint > this.moderatedMax) { + return value; + } + return nextSnapPoint; + } + if (value >= midpoint && nextSnapPoint <= this.moderatedMax) { + return nextSnapPoint; + } + return previousSnapPoint; + }, + relativeValue(value) { + return (value - this.moderatedMin) / (this.moderatedMax - this.moderatedMin); + }, + moderateValue(value) { + if (value < this.moderatedMin) { + return this.moderatedMin; + } + if (value > this.moderatedMax) { + return this.moderatedMax; + } + return value; + } + } +}; +const _hoisted_1$8 = ["aria-valuemax", "aria-valuemin", "aria-valuenow", "tabindex"]; +const _hoisted_2$6 = ["name", "value"]; +const _hoisted_3$6 = { + key: 1, + class: "ui-slider__icon" +}; +const _hoisted_4$3 = { class: "ui-slider__track-background" }; +const _hoisted_5$3 = { + key: 0, + class: "ui-slider__marker" +}; +const _hoisted_6$2 = /* @__PURE__ */ createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 24 24", + width: "36", + height: "36" +}, [ + /* @__PURE__ */ createElementVNode("path", { d: "M11 .5c-1.7.2-3.4.9-4.7 2-1.1.9-2 2-2.5 3.2-1.2 2.4-1.2 5.1-.1 7.7 1.1 2.6 2.8 5 5.3 7.5 1.2 1.2 2.8 2.7 3 2.7 0 0 .3-.2.6-.5 3.2-2.7 5.6-5.6 7.1-8.5.8-1.5 1.1-2.6 1.3-3.8.2-1.4 0-2.9-.5-4.3-1.2-3.2-4.1-5.4-7.5-5.8-.5-.2-1.5-.2-2-.2z" }) +], -1); +const _hoisted_7$1 = { class: "ui-slider__marker-text" }; +function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-slider", $options.classes]), + role: "slider", + "aria-valuemax": $options.moderatedMax, + "aria-valuemin": $options.moderatedMin, + "aria-valuenow": $data.localValue, + tabindex: $props.disabled ? null : $props.tabindex || "0", + onBlur: _cache[2] || (_cache[2] = (...args) => $options.onBlur && $options.onBlur(...args)), + onFocus: _cache[3] || (_cache[3] = (...args) => $options.onFocus && $options.onFocus(...args)), + onKeydown: [ + _cache[4] || (_cache[4] = withKeys(withModifiers((...args) => $options.decrementValue && $options.decrementValue(...args), ["prevent"]), ["down"])), + _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.decrementValue && $options.decrementValue(...args), ["prevent"]), ["left"])), + _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.incrementValue && $options.incrementValue(...args), ["prevent"]), ["right"])), + _cache[7] || (_cache[7] = withKeys(withModifiers((...args) => $options.incrementValue && $options.incrementValue(...args), ["prevent"]), ["up"])) + ] + }, [ + $props.name ? (openBlock(), createElementBlock("input", { + key: 0, + class: "ui-slider__hidden-input", + type: "hidden", + name: $props.name, + value: $props.modelValue + }, null, 8, _hoisted_2$6)) : createCommentVNode("v-if", true), + $options.hasIcon ? (openBlock(), createElementBlock("div", _hoisted_3$6, [ + renderSlot(_ctx.$slots, "icon", {}, () => [ + createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : createCommentVNode("v-if", true), + createElementVNode("div", { + ref: "track", + class: "ui-slider__track", + onMousedown: _cache[0] || (_cache[0] = (...args) => $options.onDragStart && $options.onDragStart(...args)), + onTouchstartPassive: _cache[1] || (_cache[1] = (...args) => $options.onDragStart && $options.onDragStart(...args)) + }, [ + createElementVNode("div", _hoisted_4$3, [ + $props.snapToSteps ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList($options.snapPoints, (point) => { + return openBlock(), createElementBlock("span", { + key: point, + class: "ui-slider__snap-point", + style: normalizeStyle({ left: 100 * $options.relativeValue(point) + "%" }) + }, null, 4); + }), 128)) : createCommentVNode("v-if", true) + ]), + createElementVNode("div", { + class: "ui-slider__track-fill", + style: normalizeStyle($options.fillStyle) + }, null, 4), + createElementVNode("div", { + ref: "thumb", + class: "ui-slider__thumb", + style: normalizeStyle($options.thumbStyle) + }, [ + $props.showMarker ? (openBlock(), createElementBlock("div", _hoisted_5$3, [ + _hoisted_6$2, + createElementVNode("span", _hoisted_7$1, toDisplayString($options.markerText), 1) + ])) : createCommentVNode("v-if", true) + ], 4) + ], 544) + ], 42, _hoisted_1$8); +} +const UiSlider = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$8], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSlider.vue"]]); +const UiSnackbar_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$7 = { + name: "UiSnackbar", + components: { + UiButton + }, + props: { + message: String, + action: String, + actionColor: { + type: String, + default: "accent" + }, + transition: { + type: String, + default: "slide" + } + }, + emits: ["action-click", "show", "hide"], + computed: { + transitionName() { + return "ui-snackbar--transition-" + this.transition; + } + }, + methods: { + onActionClick() { + this.$emit("action-click"); + }, + onEnter() { + this.$emit("show"); + }, + onLeave() { + this.$emit("hide"); + } + } +}; +const _hoisted_1$7 = { class: "ui-snackbar" }; +const _hoisted_2$5 = { class: "ui-snackbar__message" }; +const _hoisted_3$5 = { class: "ui-snackbar__action" }; +function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_button = resolveComponent("ui-button"); + return openBlock(), createBlock(Transition, { + name: $options.transitionName, + appear: "", + onAfterEnter: $options.onEnter, + onAfterLeave: $options.onLeave + }, { + default: withCtx(() => [ + createElementVNode("div", _hoisted_1$7, [ + createElementVNode("div", _hoisted_2$5, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.message), 1) + ]) + ]), + createElementVNode("div", _hoisted_3$5, [ + $props.action ? (openBlock(), createBlock(_component_ui_button, { + key: 0, + class: "ui-snackbar__action-button", + type: "secondary", + color: $props.actionColor, + onClick: withModifiers($options.onActionClick, ["stop"]) + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString($props.action), 1) + ]), + _: 1 + }, 8, ["color", "onClick"])) : createCommentVNode("v-if", true) + ]) + ]) + ]), + _: 3 + }, 8, ["name", "onAfterEnter", "onAfterLeave"]); +} +const UiSnackbar = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSnackbar.vue"]]); +const UiSnackbarContainer_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$6 = { + name: "UiSnackbarContainer", + components: { + UiSnackbar + }, + props: { + queueSnackbars: { + type: Boolean, + default: false + }, + duration: { + type: Number, + default: 5e3 + }, + allowHtml: { + type: Boolean, + default: false + }, + position: { + type: String, + default: "left" + }, + transition: { + type: String, + default: "slide" + } + }, + emits: ["queue-end", "snackbar-show", "snackbar-hide"], + data() { + return { + queue: [], + snackbarTimeout: null + }; + }, + computed: { + classes() { + return [`ui-snackbar-container--position-${this.position}`]; + } + }, + beforeUnmount() { + this.resetTimeout(); + }, + methods: { + createSnackbar(snackbar) { + snackbar.show = false; + snackbar.duration = snackbar.duration || this.duration; + this.queue.push(snackbar); + if (this.queue.length === 1) { + return this.showNextSnackbar(); + } else if (!this.queueSnackbars) { + this.queue[0].show = false; + } + }, + showNextSnackbar() { + if (this.queue.length === 0) { + this.$emit("queue-end"); + return; + } + this.queue[0].show = true; + }, + onShow(snackbar) { + if (this.queue.indexOf(snackbar) !== 0) { + return; + } + this.snackbarTimeout = setTimeout(() => { + this.queue[0].show = false; + }, snackbar.duration); + this.$emit("snackbar-show", snackbar); + this.callHook("onShow", snackbar); + }, + onHide(snackbar, index) { + this.resetTimeout(); + if (this.queueSnackbars || this.queue.length === 1) { + this.queue.splice(index, 1); + } else { + this.queue.splice(index, this.queue.length - 1); + } + this.$emit("snackbar-hide", snackbar); + this.callHook("onHide", snackbar); + this.showNextSnackbar(); + }, + onClick(snackbar) { + snackbar.show = false; + this.callHook("onClick", snackbar); + }, + onActionClick(snackbar) { + this.callHook("onActionClick", snackbar); + }, + callHook(hook, snackbar) { + if (typeof snackbar[hook] === "function") { + snackbar[hook].call(void 0, snackbar); + } + }, + resetTimeout() { + clearTimeout(this.snackbarTimeout); + this.snackbarTimeout = null; + } + } +}; +const _hoisted_1$6 = ["innerHTML"]; +function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_snackbar = resolveComponent("ui-snackbar"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-snackbar-container", $options.classes]) + }, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($data.queue, (snackbar, index) => { + return withDirectives((openBlock(), createBlock(_component_ui_snackbar, { + key: index, + "action-color": snackbar.actionColor, + action: snackbar.action, + message: snackbar.message, + transition: $props.transition, + onActionClick: ($event) => $options.onActionClick(snackbar), + onClick: ($event) => $options.onClick(snackbar), + onHide: ($event) => $options.onHide(snackbar, index), + onShow: ($event) => $options.onShow(snackbar) + }, { + default: withCtx(() => [ + createCommentVNode(" eslint-disable-next-line vue/no-v-html "), + $props.allowHtml ? (openBlock(), createElementBlock("div", { + key: 0, + innerHTML: snackbar.message + }, null, 8, _hoisted_1$6)) : createCommentVNode("v-if", true) + ]), + _: 2 + }, 1032, ["action-color", "action", "message", "transition", "onActionClick", "onClick", "onHide", "onShow"])), [ + [vShow, snackbar.show] + ]); + }), 128)) + ], 2); +} +const UiSnackbarContainer = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSnackbarContainer.vue"]]); +const UiSwitch_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$5 = { + name: "UiSwitch", + props: { + name: String, + label: String, + tabindex: [String, Number], + modelValue: { + required: true + }, + trueValue: { + default: true + }, + falseValue: { + default: false + }, + submittedValue: { + type: String, + default: "on" + }, + checked: { + type: Boolean, + default: false + }, + color: { + type: String, + default: "primary" + }, + switchPosition: { + type: String, + default: "left" + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "change"], + data() { + return { + isActive: false, + isChecked: looseEqual(this.modelValue, this.trueValue) || this.checked, + initialValue: this.modelValue + }; + }, + computed: { + classes() { + return [ + `ui-switch--color-${this.color}`, + `ui-switch--switch-position-${this.switchPosition}`, + { "is-active": this.isActive }, + { "is-checked": this.isChecked }, + { "is-disabled": this.disabled } + ]; + } + }, + watch: { + modelValue() { + this.isChecked = looseEqual(this.modelValue, this.trueValue); + } + }, + created() { + const value = this.isChecked ? this.trueValue : this.falseValue; + if (this.modelValue !== value) { + this.$emit("update:modelValue", value); + } + }, + methods: { + focus() { + this.$refs.input.focus(); + }, + onClick(e) { + const isCheckedPrevious = this.isChecked; + const isChecked = e.target.checked; + this.$emit("update:modelValue", isChecked ? this.trueValue : this.falseValue, e); + if (isCheckedPrevious !== isChecked) { + this.$emit("change", isChecked ? this.trueValue : this.falseValue, e); + } + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + } + } +}; +const _hoisted_1$5 = { class: "ui-switch__input-wrapper" }; +const _hoisted_2$4 = [".checked", "disabled", "name", "tabindex", "value"]; +const _hoisted_3$4 = /* @__PURE__ */ createElementVNode("div", { class: "ui-switch__track" }, null, -1); +const _hoisted_4$2 = /* @__PURE__ */ createElementVNode("div", { class: "ui-switch__thumb" }, [ + /* @__PURE__ */ createElementVNode("div", { class: "ui-switch__focus-ring" }) +], -1); +const _hoisted_5$2 = { + key: 0, + class: "ui-switch__label-text" +}; +function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { + return openBlock(), createElementBlock("label", { + class: normalizeClass(["ui-switch", $options.classes]) + }, [ + createElementVNode("div", _hoisted_1$5, [ + createElementVNode("input", { + ref: "input", + class: "ui-switch__input", + type: "checkbox", + ".checked": $data.isChecked, + disabled: $props.disabled, + name: $props.name, + tabindex: $props.tabindex, + value: $props.submittedValue, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onClick: _cache[1] || (_cache[1] = (...args) => $options.onClick && $options.onClick(...args)), + onFocus: _cache[2] || (_cache[2] = (...args) => $options.onFocus && $options.onFocus(...args)) + }, null, 40, _hoisted_2$4), + _hoisted_3$4, + _hoisted_4$2 + ]), + $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_5$2, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.label), 1) + ]) + ])) : createCommentVNode("v-if", true) + ], 2); +} +const UiSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSwitch.vue"]]); +const UiTab_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$4 = { + name: "UiTab", + props: { + id: { + type: String, + default() { + return UUID.short("ui-tab-"); + } + }, + title: String, + icon: String, + selected: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + tooltip: String, + openTooltipOn: String, + tooltipPosition: { + type: String, + default: "top" + } + }, + emits: ["select", "deselect"], + data() { + return { + isActive: false + }; + }, + watch: { + disabled() { + this.$parent.onTabDisabledChange(this); + } + }, + created() { + this.$parent.addTab(this); + }, + beforeUnmount() { + this.$parent.removeTab(this); + }, + methods: { + activate() { + this.isActive = true; + this.$emit("select", this.id); + }, + deactivate() { + this.isActive = false; + this.$emit("deselect", this.id); + } + } +}; +const _hoisted_1$4 = ["id", "aria-hidden", "tabindex"]; +function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) { + return withDirectives((openBlock(), createElementBlock("div", { + id: $props.id, + class: "ui-tab", + role: "tabpanel", + "aria-hidden": !$data.isActive ? "true" : null, + tabindex: $data.isActive ? "0" : null + }, [ + renderSlot(_ctx.$slots, "default") + ], 8, _hoisted_1$4)), [ + [vShow, $data.isActive] + ]); +} +const UiTab = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTab.vue"]]); +const UiRender = (props) => { + return h("div", { class: "ui-render" }, props.nodes); +}; +UiRender.props = ["nodes"]; +const UiTabHeaderItem_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$3 = { + name: "UiTabHeaderItem", + components: { + UiIcon, + UiRippleInk, + UiTooltip + }, + props: { + id: String, + type: { + type: String, + default: "text" + }, + title: String, + icon: String, + active: { + type: Boolean, + default: false + }, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + tooltip: String, + openTooltipOn: String, + tooltipPosition: String + }, + computed: { + classes() { + return [ + `ui-tab-header-item--type-${this.type}`, + { "is-active": this.active }, + { "is-disabled": this.disabled } + ]; + }, + hasIcon() { + return this.type === "icon" || this.type === "icon-and-text"; + }, + hasText() { + return this.type === "text" || this.type === "icon-and-text"; + } + } +}; +const _hoisted_1$3 = ["aria-controls", "aria-selected", "disabled", "tabindex"]; +const _hoisted_2$3 = { + key: 0, + class: "ui-tab-header-item__icon" +}; +const _hoisted_3$3 = { + key: 1, + class: "ui-tab-header-item__text" +}; +function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _component_ui_ripple_ink = resolveComponent("ui-ripple-ink"); + const _component_ui_tooltip = resolveComponent("ui-tooltip"); + return openBlock(), createElementBlock("li", { + class: normalizeClass(["ui-tab-header-item", $options.classes]), + role: "tab", + "aria-controls": $props.id, + "aria-selected": $props.active ? "true" : null, + disabled: $props.disabled ? "true" : null, + tabindex: $props.active ? 0 : -1 + }, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + $options.hasIcon ? (openBlock(), createElementBlock("div", _hoisted_2$3, [ + _ctx.$slots.icon ? renderSlot(_ctx.$slots, "icon", { key: 0 }) : $props.icon ? (openBlock(), createBlock(_component_ui_icon, { + key: 1, + icon: $props.icon + }, null, 8, ["icon"])) : createCommentVNode("v-if", true) + ])) : createCommentVNode("v-if", true), + $options.hasText ? (openBlock(), createElementBlock("div", _hoisted_3$3, toDisplayString($props.title), 1)) : createCommentVNode("v-if", true) + ]), + !$props.disableRipple && !$props.disabled ? (openBlock(), createBlock(_component_ui_ripple_ink, { key: 0 })) : createCommentVNode("v-if", true), + $props.tooltip ? (openBlock(), createBlock(_component_ui_tooltip, { + key: 1, + "open-on": $props.openTooltipOn, + position: $props.tooltipPosition + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString($props.tooltip), 1) + ]), + _: 1 + }, 8, ["open-on", "position"])) : createCommentVNode("v-if", true) + ], 10, _hoisted_1$3); +} +const UiTabHeaderItem = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTabHeaderItem.vue"]]); +const UiTabs_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$2 = { + name: "UiTabs", + components: { + Render: UiRender, + UiTabHeaderItem + }, + props: { + type: { + type: String, + default: "text" + }, + confirmTabChange: Function, + backgroundColor: { + type: String, + default: "default" + }, + textColor: { + type: String, + default: "black" + }, + textColorActive: { + type: String, + default: "primary" + }, + indicatorColor: { + type: String, + default: "primary" + }, + fullwidth: { + type: Boolean, + default: false + }, + raised: { + type: Boolean, + default: false + }, + disableRipple: { + type: Boolean, + default: false + } + }, + emits: ["tab-click", "tab-change"], + data() { + return { + tabs: [], + activeTabId: null, + activeTabIndex: -1 + }; + }, + computed: { + classes() { + return [ + `ui-tabs--type-${this.type}`, + `ui-tabs--text-color-${this.textColor}`, + `ui-tabs--text-color-active-${this.textColorActive}`, + `ui-tabs--background-color-${this.backgroundColor}`, + `ui-tabs--indicator-color-${this.indicatorColor}`, + { "is-raised": this.raised }, + { "is-fullwidth": this.fullwidth } + ]; + }, + hasIcon() { + return this.type === "icon" || this.type === "icon-and-text"; + } + }, + watch: { + activeTabId() { + this.tabs.forEach((tab, index) => { + if (this.activeTabId === tab.id) { + tab.activate(); + this.activeTabIndex = index; + } else if (tab.isActive) { + tab.deactivate(); + } + }); + } + }, + methods: { + addTab(tab) { + this.tabs.push(tab); + if (this.activeTabId === null || tab.selected) { + this.activeTabId = tab.id; + } + }, + removeTab(tab) { + const index = this.tabs.indexOf(tab); + if (index > -1) { + this.tabs.splice(index, 1); + if (tab.id === this.activeTabId) { + this.selectTab(this.findNearestTab()); + } + } + }, + onTabDisabledChange(tab) { + if (tab.disabled && this.activeTabId === tab.id) { + this.selectTab(this.findNearestTab()); + } + }, + onTabClick(tab, event) { + this.$emit("tab-click", tab, event); + this.selectTab(tab); + }, + selectTab(tab) { + if (tab === null || tab.disabled || tab.id === this.activeTabId) { + return; + } + if (this.confirmTabChange && !this.confirmTabChange(this.tabs[this.activeTabIndex], tab)) { + return; + } + this.activeTabId = tab.id; + this.$emit("tab-change", tab); + }, + selectNextTab() { + const nextTab = this.findNextTab(); + if (nextTab) { + this.selectTab(nextTab); + nextTab.$el.focus(); + } + }, + selectPreviousTab() { + const previousTab = this.findPreviousTab(); + if (previousTab) { + this.selectTab(previousTab); + previousTab.$el.focus(); + } + }, + findNextTab() { + let tab = null; + for (let i = this.activeTabIndex + 1; i < this.$refs.tabHeaders.length; i++) { + if (this.$refs.tabHeaders[i] && !this.$refs.tabHeaders[i].disabled) { + tab = this.$refs.tabHeaders[i]; + break; + } + } + return tab; + }, + findPreviousTab() { + let tab = null; + for (let i = this.activeTabIndex - 1; i >= 0; i--) { + if (this.$refs.tabHeaders[i] && !this.$refs.tabHeaders[i].disabled) { + tab = this.$refs.tabHeaders[i]; + break; + } + } + return tab; + }, + findNearestTab() { + return this.findPreviousTab() || this.findNextTab(); + }, + findTabById(id) { + for (let i = 0; i < this.$refs.tabHeaders.length; i++) { + if (id === this.$refs.tabHeaders[i].id) { + return this.$refs.tabHeaders[i]; + } + } + return null; + }, + setActiveTab(tabId) { + const tab = this.findTabById(tabId); + if (tab && !tab.disabled) { + this.selectTab(tab); + } + } + } +}; +const _hoisted_1$2 = { class: "ui-tabs__header" }; +const _hoisted_2$2 = { + class: "ui-tabs__header-items", + role: "tablist" +}; +const _hoisted_3$2 = { class: "ui-tabs__body" }; +function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { + const _component_render = resolveComponent("render"); + const _component_ui_tab_header_item = resolveComponent("ui-tab-header-item"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-tabs", $options.classes]) + }, [ + createElementVNode("div", _hoisted_1$2, [ + createElementVNode("ul", _hoisted_2$2, [ + (openBlock(true), createElementBlock(Fragment, null, renderList($data.tabs, (tab) => { + return openBlock(), createBlock(_component_ui_tab_header_item, { + id: tab.id, + ref_for: true, + ref: "tabHeaders", + key: tab.id, + active: $data.activeTabId === tab.id, + "disable-ripple": $props.disableRipple, + disabled: tab.disabled, + title: tab.title, + icon: tab.icon, + type: $props.type, + tooltip: tab.tooltip, + "open-tooltip-on": tab.openTooltipOn, + "tooltip-position": tab.tooltipPosition, + onClick: ($event) => $options.onTabClick(tab, $event), + onKeydown: [ + withKeys($options.selectPreviousTab, ["left"]), + withKeys($options.selectNextTab, ["right"]) + ] + }, createSlots({ + default: withCtx(() => [ + tab.$slots.header ? (openBlock(), createBlock(_component_render, { + key: 0, + nodes: tab.$slots.header() + }, null, 8, ["nodes"])) : createCommentVNode("v-if", true) + ]), + _: 2 + }, [ + !tab.$slots.header && tab.$slots.icon && $options.hasIcon ? { + name: "icon", + fn: withCtx(() => [ + createVNode(_component_render, { + nodes: tab.$slots.icon() + }, null, 8, ["nodes"]) + ]) + } : void 0 + ]), 1032, ["id", "active", "disable-ripple", "disabled", "title", "icon", "type", "tooltip", "open-tooltip-on", "tooltip-position", "onClick", "onKeydown"]); + }), 128)) + ]) + ]), + createElementVNode("div", _hoisted_3$2, [ + renderSlot(_ctx.$slots, "default") + ]) + ], 2); +} +const UiTabs = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTabs.vue"]]); +var autosize$1 = { exports: {} }; +/*! + Autosize 3.0.20 + license: MIT + http://www.jacklmoore.com/autosize +*/ +(function(module, exports) { + (function(global2, factory) { + { + factory(exports, module); + } + })(commonjsGlobal, function(exports2, module2) { + var map = typeof Map === "function" ? /* @__PURE__ */ new Map() : function() { + var keys2 = []; + var values = []; + return { + has: function has(key) { + return keys2.indexOf(key) > -1; + }, + get: function get(key) { + return values[keys2.indexOf(key)]; + }, + set: function set2(key, value) { + if (keys2.indexOf(key) === -1) { + keys2.push(key); + values.push(value); + } + }, + "delete": function _delete(key) { + var index = keys2.indexOf(key); + if (index > -1) { + keys2.splice(index, 1); + values.splice(index, 1); + } + } + }; + }(); + var createEvent = function createEvent2(name) { + return new Event(name, { bubbles: true }); + }; + try { + new Event("test"); + } catch (e) { + createEvent = function(name) { + var evt = document.createEvent("Event"); + evt.initEvent(name, true, false); + return evt; + }; + } + function assign(ta) { + if (!ta || !ta.nodeName || ta.nodeName !== "TEXTAREA" || map.has(ta)) + return; + var heightOffset = null; + var clientWidth = ta.clientWidth; + var cachedHeight = null; + function init() { + var style = window.getComputedStyle(ta, null); + if (style.resize === "vertical") { + ta.style.resize = "none"; + } else if (style.resize === "both") { + ta.style.resize = "horizontal"; + } + if (style.boxSizing === "content-box") { + heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); + } else { + heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); + } + if (isNaN(heightOffset)) { + heightOffset = 0; + } + update3(); + } + function changeOverflow(value) { + { + var width = ta.style.width; + ta.style.width = "0px"; + ta.offsetWidth; + ta.style.width = width; + } + ta.style.overflowY = value; + } + function getParentOverflows(el) { + var arr = []; + while (el && el.parentNode && el.parentNode instanceof Element) { + if (el.parentNode.scrollTop) { + arr.push({ + node: el.parentNode, + scrollTop: el.parentNode.scrollTop + }); + } + el = el.parentNode; + } + return arr; + } + function resize() { + var originalHeight = ta.style.height; + var overflows = getParentOverflows(ta); + var docTop = document.documentElement && document.documentElement.scrollTop; + ta.style.height = "auto"; + var endHeight = ta.scrollHeight + heightOffset; + if (ta.scrollHeight === 0) { + ta.style.height = originalHeight; + return; + } + ta.style.height = endHeight + "px"; + clientWidth = ta.clientWidth; + overflows.forEach(function(el) { + el.node.scrollTop = el.scrollTop; + }); + if (docTop) { + document.documentElement.scrollTop = docTop; + } + } + function update3() { + resize(); + var styleHeight = Math.round(parseFloat(ta.style.height)); + var computed = window.getComputedStyle(ta, null); + var actualHeight = Math.round(parseFloat(computed.height)); + if (actualHeight !== styleHeight) { + if (computed.overflowY !== "visible") { + changeOverflow("visible"); + resize(); + actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height)); + } + } else { + if (computed.overflowY !== "hidden") { + changeOverflow("hidden"); + resize(); + actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height)); + } + } + if (cachedHeight !== actualHeight) { + cachedHeight = actualHeight; + var evt = createEvent("autosize:resized"); + try { + ta.dispatchEvent(evt); + } catch (err) { + } + } + } + var pageResize = function pageResize2() { + if (ta.clientWidth !== clientWidth) { + update3(); + } + }; + var destroy3 = function(style) { + window.removeEventListener("resize", pageResize, false); + ta.removeEventListener("input", update3, false); + ta.removeEventListener("keyup", update3, false); + ta.removeEventListener("autosize:destroy", destroy3, false); + ta.removeEventListener("autosize:update", update3, false); + Object.keys(style).forEach(function(key) { + ta.style[key] = style[key]; + }); + map["delete"](ta); + }.bind(ta, { + height: ta.style.height, + resize: ta.style.resize, + overflowY: ta.style.overflowY, + overflowX: ta.style.overflowX, + wordWrap: ta.style.wordWrap + }); + ta.addEventListener("autosize:destroy", destroy3, false); + if ("onpropertychange" in ta && "oninput" in ta) { + ta.addEventListener("keyup", update3, false); + } + window.addEventListener("resize", pageResize, false); + ta.addEventListener("input", update3, false); + ta.addEventListener("autosize:update", update3, false); + ta.style.overflowX = "hidden"; + ta.style.wordWrap = "break-word"; + map.set(ta, { + destroy: destroy3, + update: update3 + }); + init(); + } + function destroy2(ta) { + var methods = map.get(ta); + if (methods) { + methods.destroy(); + } + } + function update2(ta) { + var methods = map.get(ta); + if (methods) { + methods.update(); + } + } + var autosize2 = null; + if (typeof window === "undefined" || typeof window.getComputedStyle !== "function") { + autosize2 = function(el) { + return el; + }; + autosize2.destroy = function(el) { + return el; + }; + autosize2.update = function(el) { + return el; + }; + } else { + autosize2 = function(el, options) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], function(x) { + return assign(x); + }); + } + return el; + }; + autosize2.destroy = function(el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], destroy2); + } + return el; + }; + autosize2.update = function(el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], update2); + } + return el; + }; + } + module2.exports = autosize2; + }); +})(autosize$1, autosize$1.exports); +const autosize = autosize$1.exports; +const UiTextbox_vue_vue_type_style_index_0_lang = ""; +const _sfc_main$1 = { + name: "UiTextbox", + components: { + UiIcon + }, + directives: { + autofocus + }, + props: { + name: String, + placeholder: String, + tabindex: [String, Number], + modelValue: { + type: [String, Number], + default: "" + }, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + label: String, + floatingLabel: { + type: Boolean, + default: false + }, + type: { + type: String, + default: "text" + }, + multiLine: { + type: Boolean, + default: false + }, + rows: { + type: Number, + default: 2 + }, + autocomplete: String, + autocapitalize: String, + autofocus: { + type: Boolean, + default: false + }, + autosize: { + type: Boolean, + default: true + }, + min: Number, + max: Number, + step: { + type: [String, Number], + default: "any" + }, + maxlength: Number, + minlength: Number, + enforceMaxlength: { + type: Boolean, + default: false + }, + required: { + type: Boolean, + default: false + }, + readonly: { + type: Boolean, + default: false + }, + help: String, + error: String, + invalid: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "change", "touch", "keydown", "keydown-enter"], + data() { + return { + isActive: false, + isTouched: false, + initialValue: this.modelValue, + autosizeInitialized: false + }; + }, + computed: { + classes() { + return [ + `ui-textbox--icon-position-${this.iconPosition}`, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-touched": this.isTouched }, + { "is-multi-line": this.multiLine }, + { "has-counter": this.maxlength }, + { "is-disabled": this.disabled }, + { "has-label": this.hasLabel }, + { "has-floating-label": this.hasFloatingLabel } + ]; + }, + labelClasses() { + return { + "is-inline": this.hasFloatingLabel && this.isLabelInline, + "is-floating": this.hasFloatingLabel && !this.isLabelInline + }; + }, + hasLabel() { + return Boolean(this.label) || Boolean(this.$slots.default); + }, + hasFloatingLabel() { + return this.hasLabel && this.floatingLabel; + }, + isLabelInline() { + return this.valueLength === 0 && !this.isActive; + }, + minValue() { + if (this.type === "number" && this.min !== void 0) { + return this.min; + } + return null; + }, + maxValue() { + if (this.type === "number" && this.max !== void 0) { + return this.max; + } + return null; + }, + stepValue() { + return this.type === "number" ? this.step : null; + }, + valueLength() { + return this.modelValue === null ? 0 : String(this.modelValue).length; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + } + }, + created() { + if (this.modelValue === null) { + this.initialValue = ""; + this.updateValue(""); + } + }, + mounted() { + if (this.multiLine && this.autosize) { + autosize(this.$refs.textarea); + this.autosizeInitialized = true; + } + }, + beforeUnmount() { + if (this.autosizeInitialized) { + autosize.destroy(this.$refs.textarea); + } + }, + methods: { + updateValue(value) { + this.$emit("update:modelValue", value); + }, + onChange(e) { + this.$emit("change", this.modelValue, e); + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + if (!this.isTouched) { + this.isTouched = true; + this.$emit("touch"); + } + }, + onKeydown(e) { + this.$emit("keydown", e); + }, + onKeydownEnter(e) { + this.$emit("keydown-enter", e); + }, + reset() { + if (document.activeElement === this.$refs.input || document.activeElement === this.$refs.textarea) { + document.activeElement.blur(); + } + this.updateValue(this.initialValue); + this.resetTouched(); + }, + resetTouched(options = { touched: false }) { + this.isTouched = options.touched; + }, + refreshSize() { + if (this.autosizeInitialized) { + autosize.update(this.$refs.textarea); + } + }, + focus() { + (this.$refs.input || this.$refs.textarea).focus(); + } + } +}; +const _hoisted_1$1 = { + key: 0, + class: "ui-textbox__icon-wrapper" +}; +const _hoisted_2$1 = { class: "ui-textbox__content" }; +const _hoisted_3$1 = { class: "ui-textbox__label" }; +const _hoisted_4$1 = ["autocomplete", "autocapitalize", "disabled", "max", "maxlength", "minlength", "min", "name", "placeholder", "readonly", "required", "step", "tabindex", "type", "value"]; +const _hoisted_5$1 = ["autocomplete", "autocapitalize", "disabled", "maxlength", "minlength", "name", "placeholder", "readonly", "required", "rows", "tabindex", "value"]; +const _hoisted_6$1 = { + key: 0, + class: "ui-textbox__feedback" +}; +const _hoisted_7 = { + key: 0, + class: "ui-textbox__feedback-text" +}; +const _hoisted_8 = { + key: 1, + class: "ui-textbox__feedback-text" +}; +const _hoisted_9 = { + key: 2, + class: "ui-textbox__counter" +}; +function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = resolveComponent("ui-icon"); + const _directive_autofocus = resolveDirective("autofocus"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-textbox", $options.classes]) + }, [ + $props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_1$1, [ + renderSlot(_ctx.$slots, "icon", {}, () => [ + createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : createCommentVNode("v-if", true), + createElementVNode("div", _hoisted_2$1, [ + createElementVNode("label", _hoisted_3$1, [ + !$props.multiLine ? withDirectives((openBlock(), createElementBlock("input", { + key: 0, + ref: "input", + class: "ui-textbox__input", + autocomplete: $props.autocomplete ? $props.autocomplete : null, + autocapitalize: $props.autocapitalize ? $props.autocapitalize : null, + disabled: $props.disabled, + max: $options.maxValue, + maxlength: $props.enforceMaxlength ? $props.maxlength : null, + minlength: $props.minlength, + min: $options.minValue, + name: $props.name, + placeholder: $options.hasFloatingLabel ? null : $props.placeholder, + readonly: $props.readonly, + required: $props.required, + step: $options.stepValue, + tabindex: $props.tabindex, + type: $props.type, + value: $props.modelValue, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onChange: _cache[1] || (_cache[1] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[2] || (_cache[2] = (...args) => $options.onFocus && $options.onFocus(...args)), + onInput: _cache[3] || (_cache[3] = ($event) => $options.updateValue($event.target.value)), + onKeydown: [ + _cache[4] || (_cache[4] = withKeys((...args) => $options.onKeydownEnter && $options.onKeydownEnter(...args), ["enter"])), + _cache[5] || (_cache[5] = (...args) => $options.onKeydown && $options.onKeydown(...args)) + ] + }, null, 40, _hoisted_4$1)), [ + [_directive_autofocus, $props.autofocus] + ]) : withDirectives((openBlock(), createElementBlock("textarea", { + key: 1, + ref: "textarea", + class: "ui-textbox__textarea", + autocomplete: $props.autocomplete ? $props.autocomplete : null, + autocapitalize: $props.autocapitalize ? $props.autocapitalize : null, + disabled: $props.disabled, + maxlength: $props.enforceMaxlength ? $props.maxlength : null, + minlength: $props.minlength, + name: $props.name, + placeholder: $options.hasFloatingLabel ? null : $props.placeholder, + readonly: $props.readonly, + required: $props.required, + rows: $props.rows, + tabindex: $props.tabindex, + value: $props.modelValue, + onBlur: _cache[6] || (_cache[6] = (...args) => $options.onBlur && $options.onBlur(...args)), + onChange: _cache[7] || (_cache[7] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[8] || (_cache[8] = (...args) => $options.onFocus && $options.onFocus(...args)), + onInput: _cache[9] || (_cache[9] = ($event) => $options.updateValue($event.target.value)), + onKeydown: [ + _cache[10] || (_cache[10] = withKeys((...args) => $options.onKeydownEnter && $options.onKeydownEnter(...args), ["enter"])), + _cache[11] || (_cache[11] = (...args) => $options.onKeydown && $options.onKeydown(...args)) + ] + }, null, 40, _hoisted_5$1)), [ + [_directive_autofocus, $props.autofocus] + ]), + $props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("div", { + key: 2, + class: normalizeClass(["ui-textbox__label-text", $options.labelClasses]) + }, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString($props.label), 1) + ]) + ], 2)) : createCommentVNode("v-if", true) + ]), + $options.hasFeedback || $props.maxlength ? (openBlock(), createElementBlock("div", _hoisted_6$1, [ + $options.showError ? (openBlock(), createElementBlock("div", _hoisted_7, [ + renderSlot(_ctx.$slots, "error", {}, () => [ + createTextVNode(toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (openBlock(), createElementBlock("div", _hoisted_8, [ + renderSlot(_ctx.$slots, "help", {}, () => [ + createTextVNode(toDisplayString($props.help), 1) + ]) + ])) : createCommentVNode("v-if", true), + $props.maxlength ? (openBlock(), createElementBlock("div", _hoisted_9, toDisplayString($options.valueLength + "/" + $props.maxlength), 1)) : createCommentVNode("v-if", true) + ])) : createCommentVNode("v-if", true) + ]) + ], 2); +} +const UiTextbox = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTextbox.vue"]]); +const UiToolbar_vue_vue_type_style_index_0_lang = ""; +const _sfc_main = { + name: "UiToolbar", + components: { + UiIconButton, + UiProgressLinear + }, + props: { + type: { + type: String, + default: "default" + }, + textColor: { + type: String, + default: "black" + }, + title: String, + brand: String, + removeBrandDivider: { + type: Boolean, + default: false + }, + navIcon: { + type: String, + default: "menu" + }, + removeNavIcon: { + type: Boolean, + default: false + }, + raised: { + type: Boolean, + default: true + }, + progressPosition: { + type: String, + default: "bottom" + }, + loading: { + type: Boolean, + default: false + } + }, + emits: ["nav-icon-click"], + computed: { + classes() { + return [ + `ui-toolbar--type-${this.type}`, + `ui-toolbar--text-color-${this.textColor}`, + `ui-toolbar--progress-position-${this.progressPosition}`, + { "is-raised": this.raised } + ]; + }, + progressColor() { + return this.textColor === "black" ? "primary" : "white"; + }, + hasBrandDivider() { + return this.removeBrandDivider ? false : this.brand || this.$slots.brand; + } + }, + methods: { + navIconClick() { + this.$emit("nav-icon-click"); + } + } +}; +const _hoisted_1 = { class: "ui-toolbar__left" }; +const _hoisted_2 = { + key: 0, + class: "ui-toolbar__nav-icon" +}; +const _hoisted_3 = { + key: 1, + class: "ui-toolbar__brand" +}; +const _hoisted_4 = { class: "ui-toolbar__brand-text" }; +const _hoisted_5 = { + key: 0, + class: "ui-toolbar__title" +}; +const _hoisted_6 = { class: "ui-toolbar__right" }; +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon_button = resolveComponent("ui-icon-button"); + const _component_ui_progress_linear = resolveComponent("ui-progress-linear"); + return openBlock(), createElementBlock("div", { + class: normalizeClass(["ui-toolbar", $options.classes]) + }, [ + createElementVNode("div", _hoisted_1, [ + !$props.removeNavIcon ? (openBlock(), createElementBlock("div", _hoisted_2, [ + renderSlot(_ctx.$slots, "icon", {}, () => [ + createVNode(_component_ui_icon_button, { + size: "large", + type: "secondary", + color: $props.textColor, + icon: $props.navIcon, + onClick: $options.navIconClick + }, null, 8, ["color", "icon", "onClick"]) + ]) + ])) : createCommentVNode("v-if", true), + $props.brand || _ctx.$slots.brand ? (openBlock(), createElementBlock("div", _hoisted_3, [ + renderSlot(_ctx.$slots, "brand", {}, () => [ + createElementVNode("div", _hoisted_4, toDisplayString($props.brand), 1) + ]) + ])) : createCommentVNode("v-if", true) + ]), + createElementVNode("div", { + class: normalizeClass(["ui-toolbar__body", { "has-brand-divider": $options.hasBrandDivider }]) + }, [ + renderSlot(_ctx.$slots, "default", {}, () => [ + $props.title ? (openBlock(), createElementBlock("div", _hoisted_5, toDisplayString($props.title), 1)) : createCommentVNode("v-if", true) + ]) + ], 2), + createElementVNode("div", _hoisted_6, [ + renderSlot(_ctx.$slots, "actions") + ]), + withDirectives(createVNode(_component_ui_progress_linear, { + class: "ui-toolbar__progress", + color: $options.progressColor + }, null, 8, ["color"]), [ + [vShow, $props.loading] + ]) + ], 2); +} +const UiToolbar = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiToolbar.vue"]]); +const KeenUI = { + UiAlert, + UiAutocomplete, + UiButton, + UiCalendar, + UiCheckbox, + UiCheckboxGroup, + UiCloseButton, + UiCollapsible, + UiConfirm, + UiDatepicker, + UiDatepickerCalendar, + UiFab, + UiFileupload, + UiIcon, + UiIconButton, + UiMenu, + UiModal, + UiPopover, + UiPreloader, + UiProgressCircular, + UiProgressLinear, + UiRadio, + UiRadioGroup, + UiRippleInk, + UiSelect, + UiSlider, + UiSnackbar, + UiSnackbarContainer, + UiSwitch, + UiTab, + UiTabs, + UiTextbox, + UiToolbar, + UiTooltip +}; +function install(app, config = {}) { + Object.keys(config).forEach((key) => { + if (startsWith(key, "Ui")) { + if (KeenUI[key] === void 0) { + return; + } + const Component = KeenUI[key]; + const props = config[key]; + configure(Component, props); + } + }); + Object.keys(KeenUI).forEach((key) => { + if (startsWith(key, "Ui")) { + const Component = KeenUI[key]; + app.component(Component.name, Component); + } + }); +} +if (typeof window !== "undefined") { + window.KeenUI = KeenUI; +} +export { + UiAlert, + UiAutocomplete, + UiButton, + UiCalendar, + UiCheckbox, + UiCheckboxGroup, + UiCloseButton, + UiCollapsible, + UiConfirm, + UiDatepicker, + UiDatepickerCalendar, + UiFab, + UiFileupload, + UiIcon, + UiIconButton, + UiMenu, + UiModal, + UiPopover, + UiPreloader, + UiProgressCircular, + UiProgressLinear, + UiRadio, + UiRadioGroup, + UiRippleInk, + UiSelect, + UiSlider, + UiSnackbar, + UiSnackbarContainer, + UiSwitch, + UiTab, + UiTabs, + UiTextbox, + UiToolbar, + UiTooltip, + install +}; diff --git a/dist/keen-ui.js b/dist/keen-ui.js index 9387e17c..41d3c63f 100644 --- a/dist/keen-ui.js +++ b/dist/keen-ui.js @@ -1,16325 +1,10015 @@ /*! * Keen UI v1.4.0 (https://github.com/JosephusPaye/keen-ui) - * (c) 2022 Josephus Paye II + * (c) 2023 Josephus Paye II * Released under the MIT License. */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["KeenUI"] = factory(); - else - root["KeenUI"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.l = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; - -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; - -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; - -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 188); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -/* globals __VUE_SSR_CONTEXT__ */ - -// this module is a runtime utility for cleaner component module output and will -// be included in the final webpack user bundle - -module.exports = function normalizeComponent ( - rawScriptExports, - compiledTemplate, - injectStyles, - scopeId, - moduleIdentifier /* server only */ -) { - var esModule - var scriptExports = rawScriptExports = rawScriptExports || {} - - // ES6 modules interop - var type = typeof rawScriptExports.default - if (type === 'object' || type === 'function') { - esModule = rawScriptExports - scriptExports = rawScriptExports.default - } - - // Vue.extend constructor export interop - var options = typeof scriptExports === 'function' - ? scriptExports.options - : scriptExports - - // render functions - if (compiledTemplate) { - options.render = compiledTemplate.render - options.staticRenderFns = compiledTemplate.staticRenderFns - } - - // scopedId - if (scopeId) { - options._scopeId = scopeId - } - - var hook - if (moduleIdentifier) { // server build - hook = function (context) { - // 2.3 injection - context = - context || // cached call - (this.$vnode && this.$vnode.ssrContext) || // stateful - (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional - // 2.2 with runInNewContext: true - if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { - context = __VUE_SSR_CONTEXT__ - } - // inject component styles - if (injectStyles) { - injectStyles.call(this, context) - } - // register component module identifier for async chunk inferrence - if (context && context._registeredComponents) { - context._registeredComponents.add(moduleIdentifier) - } - } - // used by ssr in case component is cached and beforeCreate - // never gets called - options._ssrRegister = hook - } else if (injectStyles) { - hook = injectStyles - } - - if (hook) { - var functional = options.functional - var existing = functional - ? options.render - : options.beforeCreate - if (!functional) { - // inject component registration as beforeCreate hook - options.beforeCreate = existing - ? [].concat(existing, hook) - : [hook] +(function(global2, factory) { + typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue")) : typeof define === "function" && define.amd ? define(["exports", "vue"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.KeenUI = {}, global2.Vue)); +})(this, function(exports2, vue) { + "use strict"; + document.addEventListener("DOMContentLoaded", () => { + let hadKeyboardEvent = false; + const keyboardModalityWhitelist = [ + "input:not([type])", + "input[type=text]", + "input[type=number]", + "input[type=date]", + "input[type=time]", + "input[type=datetime]", + "textarea", + "[role=textbox]", + "[supports-modality=keyboard]" + ].join(","); + let isHandlingKeyboardThrottle; + const matcher = (() => { + const el = document.body; + if (el.matchesSelector) { + return el.matchesSelector; + } + if (el.webkitMatchesSelector) { + return el.webkitMatchesSelector; + } + if (el.mozMatchesSelector) { + return el.mozMatchesSelector; + } + if (el.msMatchesSelector) { + return el.msMatchesSelector; + } + console.error("Couldn't find any matchesSelector method on document.body."); + })(); + const disableFocusRingByDefault = function() { + const css = "body:not([modality=keyboard]) :focus { outline: none; }"; + const head = document.head || document.getElementsByTagName("head")[0]; + const style = document.createElement("style"); + style.type = "text/css"; + style.id = "disable-focus-ring"; + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } + head.insertBefore(style, head.firstChild); + }; + const focusTriggersKeyboardModality = function(el) { + let triggers = false; + if (matcher) { + triggers = matcher.call(el, keyboardModalityWhitelist) && matcher.call(el, ":not([readonly])"); + } + return triggers; + }; + disableFocusRingByDefault(); + document.body.addEventListener("keydown", () => { + hadKeyboardEvent = true; + if (isHandlingKeyboardThrottle) { + clearTimeout(isHandlingKeyboardThrottle); + } + isHandlingKeyboardThrottle = setTimeout(() => { + hadKeyboardEvent = false; + }, 100); + }, true); + document.body.addEventListener("focus", (e) => { + if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) { + document.body.setAttribute("modality", "keyboard"); + } + }, true); + document.body.addEventListener("blur", () => { + document.body.removeAttribute("modality"); + }, true); + }); + var isMergeableObject = function isMergeableObject2(value) { + return isNonNullObject(value) && !isSpecial(value); + }; + function isNonNullObject(value) { + return !!value && typeof value === "object"; + } + function isSpecial(value) { + var stringValue = Object.prototype.toString.call(value); + return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value); + } + var canUseSymbol = typeof Symbol === "function" && Symbol.for; + var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103; + function isReactElement(value) { + return value.$$typeof === REACT_ELEMENT_TYPE; + } + function emptyTarget(val) { + return Array.isArray(val) ? [] : {}; + } + function cloneUnlessOtherwiseSpecified(value, optionsArgument) { + var clone2 = !optionsArgument || optionsArgument.clone !== false; + return clone2 && isMergeableObject(value) ? deepmerge(emptyTarget(value), value, optionsArgument) : value; + } + function defaultArrayMerge(target, source, optionsArgument) { + return target.concat(source).map(function(element) { + return cloneUnlessOtherwiseSpecified(element, optionsArgument); + }); + } + function mergeObject(target, source, optionsArgument) { + var destination = {}; + if (isMergeableObject(target)) { + Object.keys(target).forEach(function(key) { + destination[key] = cloneUnlessOtherwiseSpecified(target[key], optionsArgument); + }); + } + Object.keys(source).forEach(function(key) { + if (!isMergeableObject(source[key]) || !target[key]) { + destination[key] = cloneUnlessOtherwiseSpecified(source[key], optionsArgument); + } else { + destination[key] = deepmerge(target[key], source[key], optionsArgument); + } + }); + return destination; + } + function deepmerge(target, source, optionsArgument) { + var sourceIsArray = Array.isArray(source); + var targetIsArray = Array.isArray(target); + var options = optionsArgument || { arrayMerge: defaultArrayMerge }; + var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; + if (!sourceAndTargetTypesMatch) { + return cloneUnlessOtherwiseSpecified(source, optionsArgument); + } else if (sourceIsArray) { + var arrayMerge = options.arrayMerge || defaultArrayMerge; + return arrayMerge(target, source, optionsArgument); } else { - // register for functioal component in vue file - options.render = function renderWithStyleInjection (h, context) { - hook.call(context) - return existing(h, context) - } - } - } - - return { - esModule: esModule, - exports: scriptExports, - options: options - } -} - - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiIcon_vue__ = __webpack_require__(70); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_39a27af7_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiIcon_vue__ = __webpack_require__(155); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(107) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiIcon_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_39a27af7_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiIcon_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiIcon.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiIcon.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-39a27af7", Component.options) - } else { - hotAPI.reload("data-v-39a27af7", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiRippleInk_vue__ = __webpack_require__(81); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5ef65288_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiRippleInk_vue__ = __webpack_require__(166); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(118) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiRippleInk_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5ef65288_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiRippleInk_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiRippleInk.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiRippleInk.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-5ef65288", Component.options) - } else { - hotAPI.reload("data-v-5ef65288", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 3 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export defaultLang */ -/* unused harmony export getDayFull */ -/* unused harmony export getDayInitial */ -/* unused harmony export getDayAbbreviated */ -/* unused harmony export getMonthFull */ -/* unused harmony export getMonthAbbreviated */ -/* unused harmony export getDayOfMonth */ -/* unused harmony export humanize */ -/* unused harmony export clone */ -/* unused harmony export moveToDayOfWeek */ -/* unused harmony export isSameDay */ -/* unused harmony export isBefore */ -/* unused harmony export isAfter */ -var defaultLang = { - months: { - full: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - - abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] - }, - - days: { - full: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - - abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - - initials: ['S', 'M', 'T', 'W', 'T', 'F', 'S'] - } -}; - -function pad(value, length) { - while (value.length < length) { - value = '0' + value; + return mergeObject(target, source, optionsArgument); } - - return value; -} - -function getDayFull(date) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultLang; - - return lang.days.full[date.getDay()]; -} - -function getDayInitial(date) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultLang; - - return lang.days.initials[date.getDay()]; -} - -function getDayAbbreviated(date) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultLang; - - return lang.days.abbreviated[date.getDay()]; -} - -function getMonthFull(date) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultLang; - - return lang.months.full[date.getMonth()]; -} - -function getMonthAbbreviated(date) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultLang; - - return lang.months.abbreviated[date.getMonth()]; -} - -function getDayOfMonth(date) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { pad: true }; - - var day = date.getDate().toString(); - return options.pad ? pad(day) : day; -} - -function humanize(date) { - var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultLang; - - var days = lang.days.abbreviated; - var months = lang.months.full; - - return days[date.getDay()] + ', ' + months[date.getMonth()] + ' ' + date.getDate() + ', ' + date.getFullYear(); -} - -function clone(date) { - return new Date(date.getTime()); -} - -function moveToDayOfWeek(date, dayOfWeek) { - while (date.getDay() !== dayOfWeek) { - date.setDate(date.getDate() - 1); + } + deepmerge.all = function deepmergeAll(array, optionsArgument) { + if (!Array.isArray(array)) { + throw new Error("first argument should be an array"); } - - return date; -} - -function isSameDay(date1, date2) { - return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate(); -} - -function isBefore(date1, date2) { - return date1.getTime() < date2.getTime(); -} - -function isAfter(date1, date2) { - return date1.getTime() > date2.getTime(); -} - -/* harmony default export */ __webpack_exports__["a"] = { - defaultLang: defaultLang, - getDayFull: getDayFull, - getDayInitial: getDayInitial, - getDayAbbreviated: getDayAbbreviated, - getMonthFull: getMonthFull, - getMonthAbbreviated: getMonthAbbreviated, - getDayOfMonth: getDayOfMonth, - humanize: humanize, - clone: clone, - moveToDayOfWeek: moveToDayOfWeek, - isSameDay: isSameDay, - isBefore: isBefore, - isAfter: isAfter -}; - -/***/ }), -/* 4 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiPopover_vue__ = __webpack_require__(75); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_48582497_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiPopover_vue__ = __webpack_require__(158); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(110) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiPopover_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_48582497_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiPopover_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiPopover.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiPopover.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-48582497", Component.options) - } else { - hotAPI.reload("data-v-48582497", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 5 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var trim = /^\s+|\s+$/g; -var whitespace = /\s+/g; - -function interpret(input) { - return typeof input === 'string' ? input.replace(trim, '').split(whitespace) : input; -} - -function classes(el) { + return array.reduce(function(prev, next) { + return deepmerge(prev, next, optionsArgument); + }, {}); + }; + var deepmerge_1 = deepmerge; + function configure(Component, props) { + Object.keys(props).forEach((propName) => { + if (Component.props[propName] === void 0) { + return; + } + const defaultValue = Component.props[propName].default; + if (typeof defaultValue === "object") { + Component.props[propName].default = deepmerge_1(defaultValue, props[propName]); + return; + } + Component.props[propName].default = props[propName]; + }); + } + function isObject(obj) { + return obj !== null && typeof obj === "object"; + } + function looseEqual(a, b) { + return a == b || (isObject(a) && isObject(b) ? JSON.stringify(a) === JSON.stringify(b) : false); + } + function looseIndexOf(arr, val) { + for (let i2 = 0; i2 < arr.length; i2++) { + if (looseEqual(arr[i2], val)) { + return i2; + } + } + return -1; + } + function startsWith(string, query, position = 0) { + return string.substr(position, query.length) === query; + } + const UiIcon_vue_vue_type_style_index_0_lang = ""; + const _export_sfc = (sfc, props) => { + const target = sfc.__vccOpts || sfc; + for (const [key, val] of props) { + target[key] = val; + } + return target; + }; + const _sfc_main$F = { + name: "UiIcon", + props: { + icon: String, + iconSet: { + type: String, + default: "material-icons" + }, + ariaLabel: String, + removeText: { + type: Boolean, + default: false + }, + useSvg: { + type: Boolean, + default: false + } + } + }; + const _hoisted_1$D = ["aria-label"]; + const _hoisted_2$w = { + key: 0, + class: "ui-icon__svg" + }; + const _hoisted_3$s = ["xlink:href"]; + function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("span", { + class: vue.normalizeClass(["ui-icon", [$props.iconSet, $props.icon]]), + "aria-label": $props.ariaLabel + }, [ + $props.useSvg ? (vue.openBlock(), vue.createElementBlock("svg", _hoisted_2$w, [ + vue.createElementVNode("use", { + "xmlns:xlink": "http://www.w3.org/1999/xlink", + "xlink:href": "#" + $props.icon + }, null, 8, _hoisted_3$s) + ])) : vue.renderSlot(_ctx.$slots, "default", { key: 1 }, () => [ + vue.createTextVNode(vue.toDisplayString($props.removeText ? null : $props.icon), 1) + ]) + ], 10, _hoisted_1$D); + } + const UiIcon = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$F], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiIcon.vue"]]); + const trim = /^\s+|\s+$/g; + const whitespace = /\s+/g; + function interpret(input) { + return typeof input === "string" ? input.replace(trim, "").split(whitespace) : input; + } + function classes(el) { if (isElement(el)) { - return (el.getAttribute('class') || '').replace(trim, '').split(whitespace); + return (el.getAttribute("class") || "").replace(trim, "").split(whitespace); } - return []; -} - -function set(el, input) { + } + function set(el, input) { if (isElement(el)) { - el.setAttribute('class', interpret(input).join(' ')); - } -} - -function add(el, input) { - var current = remove(el, input); - var values = interpret(input); - + el.setAttribute("class", interpret(input).join(" ")); + } + } + function add(el, input) { + const current = remove(el, input); + const values = interpret(input); current.push.apply(current, values); set(el, current); - return current; -} - -function remove(el, input) { - var current = classes(el); - var values = interpret(input); - - values.forEach(function (value) { - var i = current.indexOf(value); - if (i !== -1) { - current.splice(i, 1); - } + } + function remove(el, input) { + const current = classes(el); + const values = interpret(input); + values.forEach((value) => { + const i2 = current.indexOf(value); + if (i2 !== -1) { + current.splice(i2, 1); + } }); - set(el, current); - return current; -} - -function contains(el, input) { - var current = classes(el); - var values = interpret(input); - - return values.every(function (value) { - return current.indexOf(value) !== -1; + } + function contains(el, input) { + const current = classes(el); + const values = interpret(input); + return values.every((value) => { + return current.indexOf(value) !== -1; }); -} - -function isElement(o) { - var elementObjects = (typeof HTMLElement === 'undefined' ? 'undefined' : _typeof(HTMLElement)) === 'object'; + } + function isElement(o) { + const elementObjects = typeof HTMLElement === "object"; return elementObjects ? o instanceof HTMLElement : isElementObject(o); -} - -function isElementObject(o) { - return o && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object' && typeof o.nodeName === 'string' && o.nodeType === 1; -} - -/* harmony default export */ __webpack_exports__["a"] = { - add: add, - remove: remove, - contains: contains, + } + function isElementObject(o) { + return o && typeof o === "object" && typeof o.nodeName === "string" && o.nodeType === 1; + } + const classlist = { + add, + remove, + contains, has: contains, - set: set, + set, get: classes -}; - -/***/ }), -/* 6 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export isObject */ -/* harmony export (immutable) */ __webpack_exports__["b"] = looseEqual; -/* harmony export (immutable) */ __webpack_exports__["c"] = looseIndexOf; -/* harmony export (immutable) */ __webpack_exports__["a"] = startsWith; -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -function isObject(obj) { - return obj !== null && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object'; -} - -function looseEqual(a, b) { - return a == b || (isObject(a) && isObject(b) ? JSON.stringify(a) === JSON.stringify(b) : false); -} - -function looseIndexOf(arr, val) { - for (var i = 0; i < arr.length; i++) { - if (looseEqual(arr[i], val)) { - return i; - } - } - - return -1; -} - -function startsWith(string, query) { - var position = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - - return string.substr(position, query.length) === query; -} - -/***/ }), -/* 7 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiButton_vue__ = __webpack_require__(55); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_663a40a0_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiButton_vue__ = __webpack_require__(167); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(119) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiButton_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_663a40a0_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiButton_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiButton.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiButton.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-663a40a0", Component.options) - } else { - hotAPI.reload("data-v-663a40a0", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 8 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiProgressCircular_vue__ = __webpack_require__(77); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7bea93ea_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiProgressCircular_vue__ = __webpack_require__(175); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(127) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiProgressCircular_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7bea93ea_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiProgressCircular_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiProgressCircular.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiProgressCircular.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-7bea93ea", Component.options) - } else { - hotAPI.reload("data-v-7bea93ea", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 9 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTooltip_vue__ = __webpack_require__(93); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6cedb6f5_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTooltip_vue__ = __webpack_require__(169); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(121) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTooltip_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6cedb6f5_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTooltip_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiTooltip.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiTooltip.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-6cedb6f5", Component.options) - } else { - hotAPI.reload("data-v-6cedb6f5", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 10 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCloseButton_vue__ = __webpack_require__(62); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7ba5f488_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCloseButton_vue__ = __webpack_require__(174); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(126) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCloseButton_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7ba5f488_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCloseButton_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiCloseButton.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiCloseButton.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-7ba5f488", Component.options) - } else { - hotAPI.reload("data-v-7ba5f488", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 11 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiIconButton_vue__ = __webpack_require__(71); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_9db4dbee_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiIconButton_vue__ = __webpack_require__(179); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(131) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiIconButton_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_9db4dbee_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiIconButton_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiIconButton.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiIconButton.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-9db4dbee", Component.options) - } else { - hotAPI.reload("data-v-9db4dbee", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 12 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiModal_vue__ = __webpack_require__(74); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5cfba9c2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiModal_vue__ = __webpack_require__(165); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(117) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiModal_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5cfba9c2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiModal_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiModal.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiModal.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-5cfba9c2", Component.options) - } else { - hotAPI.reload("data-v-5cfba9c2", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 13 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export validate */ -/* unused harmony export resolve */ -function validate(ref, warning) { - var isValid = ref instanceof Element || ref && ref._isVue || typeof ref === 'string'; - + }; + function validate(ref, warning) { + const isValid = ref instanceof Element || ref && ref._isVue || typeof ref === "string"; if (!isValid && warning) { - console.warn(warning); + console.warn(warning); } - return isValid; -} - -function resolve(ref, fallback) { + } + function resolve(ref, fallback) { if (ref instanceof Element) { - return ref; + return ref; } else if (ref && ref._isVue) { - return ref.$el; - } else if (typeof ref === 'string') { - return document.querySelector(ref); + return ref.$el; + } else if (typeof ref === "string") { + return document.querySelector(ref); } - return fallback; -} - -/* harmony default export */ __webpack_exports__["a"] = { - validate: validate, - resolve: resolve -}; - -/***/ }), -/* 14 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiFocusContainer_vue__ = __webpack_require__(69); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6c26f987_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiFocusContainer_vue__ = __webpack_require__(168); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(120) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiFocusContainer_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6c26f987_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiFocusContainer_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiFocusContainer.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiFocusContainer.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-6c26f987", Component.options) - } else { - hotAPI.reload("data-v-6c26f987", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 15 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCheckbox_vue__ = __webpack_require__(60); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7905fb7e_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCheckbox_vue__ = __webpack_require__(172); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(124) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCheckbox_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7905fb7e_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCheckbox_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiCheckbox.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiCheckbox.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-7905fb7e", Component.options) - } else { - hotAPI.reload("data-v-7905fb7e", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 16 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiDatepickerCalendar_vue__ = __webpack_require__(66); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_b37986d0_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiDatepickerCalendar_vue__ = __webpack_require__(183); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(135) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiDatepickerCalendar_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_b37986d0_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiDatepickerCalendar_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiDatepickerCalendar.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiDatepickerCalendar.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-b37986d0", Component.options) - } else { - hotAPI.reload("data-v-b37986d0", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 17 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiProgressLinear_vue__ = __webpack_require__(78); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_22995a30_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiProgressLinear_vue__ = __webpack_require__(151); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(103) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiProgressLinear_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_22995a30_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiProgressLinear_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiProgressLinear.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiProgressLinear.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-22995a30", Component.options) - } else { - hotAPI.reload("data-v-22995a30", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 18 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiRadio_vue__ = __webpack_require__(79); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_1658ed6d_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiRadio_vue__ = __webpack_require__(150); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(102) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiRadio_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_1658ed6d_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiRadio_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiRadio.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiRadio.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-1658ed6d", Component.options) - } else { - hotAPI.reload("data-v-1658ed6d", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 19 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSnackbar_vue__ = __webpack_require__(85); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5ad542fa_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSnackbar_vue__ = __webpack_require__(163); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(115) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSnackbar_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5ad542fa_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSnackbar_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiSnackbar.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiSnackbar.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-5ad542fa", Component.options) - } else { - hotAPI.reload("data-v-5ad542fa", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 20 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony default export */ __webpack_exports__["a"] = { - inserted: function inserted(el, _ref) { - var value = _ref.value; - - if (value) { - el.focus(); - } - } -}; - -/***/ }), -/* 21 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export inView */ -/* harmony export (immutable) */ __webpack_exports__["b"] = scrollIntoView; -/* harmony export (immutable) */ __webpack_exports__["a"] = resetScroll; -function inView(element, container) { - if (!element) { - return; + } + const elementRef = { + validate, + resolve + }; + const UiRippleInk_vue_vue_type_style_index_0_lang = ""; + const startRipple = function(eventType, event) { + let holder = event.currentTarget || event.target; + if (holder && !classlist.has(holder, "ui-ripple-ink")) { + holder = holder.querySelector(".ui-ripple-ink"); } - - container = container || element.parentElement; - - var top = element.offsetTop; - var parentTop = container.scrollTop; - var bottom = top + element.offsetHeight; - var parentBottom = container.offsetHeight; - - return top >= parentTop && bottom <= parentBottom; -} - -function scrollIntoView(element) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { container: null, marginTop: 0 }; - - if (!element) { - return; + if (!holder) { + return; } - - options.container = options.container || element.parentElement; - - if (inView(element, options.container)) { - return; + const prev = holder.getAttribute("data-ui-event"); + if (prev && prev !== eventType) { + return; } - - options.container.scrollTop = element.offsetTop - options.marginTop; -} - -function resetScroll(element) { - if (!element) { - return; + holder.setAttribute("data-ui-event", eventType); + const rect = holder.getBoundingClientRect(); + const x = event.clientX - rect.left; + const y = event.clientY - rect.top; + const ripple = document.createElement("div"); + let max; + if (rect.width === rect.height) { + max = rect.width * 1.412; + } else { + max = Math.sqrt(rect.width * rect.width + rect.height * rect.height); } - - element.scrollTop = 0; -} - -/* unused harmony default export */ var _unused_webpack_default_export = { - inView: inView, - scrollIntoView: scrollIntoView, - resetScroll: resetScroll -}; - -/***/ }), -/* 22 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export on */ -/* unused harmony export onKeydown */ -/* unused harmony export onKeyup */ -/* unused harmony export onKeypress */ -function on(event, target, callback) { - var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { passive: true }; - - target.addEventListener(event, callback, options); - - return function () { - target.removeEventListener(event, callback, options); + const size = max * 2 + "px"; + ripple.style.width = size; + ripple.style.height = size; + ripple.style.marginLeft = -max + x + "px"; + ripple.style.marginTop = -max + y + "px"; + ripple.className = "ui-ripple-ink__ink"; + holder.appendChild(ripple); + setTimeout(() => { + classlist.add(ripple, "is-held"); + }, 0); + const releaseEvent = eventType === "mousedown" ? "mouseup" : "touchend"; + const handleRelease = function() { + document.removeEventListener(releaseEvent, handleRelease); + classlist.add(ripple, "is-done"); + const timeout = 650; + setTimeout(() => { + holder.removeChild(ripple); + if (holder.children.length === 0) { + holder.removeAttribute("data-ui-event"); + } + }, timeout); }; -} - -function onKey(key, event, target, callback, options) { - return on(event, target, function (e) { - if (!key) { - callback(e); - } else if (key === e.key || key === e.keyCode) { - callback(e); + document.addEventListener(releaseEvent, handleRelease); + }; + const handleMouseDown = function(e) { + if (e.button === 0) { + startRipple(e.type, e); + } + }; + const handleTouchStart = function(e) { + if (e.changedTouches) { + for (let i2 = 0; i2 < e.changedTouches.length; ++i2) { + startRipple(e.type, e.changedTouches[i2]); + } + } + }; + const _sfc_main$E = { + name: "UiRippleInk", + props: { + trigger: { + validator(value) { + return elementRef.validate( + value, + '[UiRippleInk]: Invalid prop: "trigger". Expected Element, VueComponent or CSS selector string.' + ); } - }, options); -} - -function onKeydown(keys, target, callback, options) { - return onKey(keys, 'keydown', target, callback, options); -} - -function onKeyup(keys, target, callback, options) { - return onKey(keys, 'keyup', target, callback, options); -} - -function onKeypress(keys, target, callback, options) { - return onKey(keys, 'keypress', target, callback, options); -} - -/* harmony default export */ __webpack_exports__["a"] = { - on: on, - onKeydown: onKeydown, - onKeyup: onKeyup, - onKeypress: onKeypress -}; - -/***/ }), -/* 23 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/** - * Fast UUID generator, RFC4122 version 4 compliant. - * @author Jeff Ward (jcward.com). - * @license MIT license - * @link http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 - */ - -var lut = []; - -for (var i = 0; i < 256; i++) { - lut[i] = (i < 16 ? '0' : '') + i.toString(16); -} - -var generate = function generate() { - var d0 = Math.random() * 0xffffffff | 0; - var d1 = Math.random() * 0xffffffff | 0; - var d2 = Math.random() * 0xffffffff | 0; - var d3 = Math.random() * 0xffffffff | 0; - - return lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff] + '-' + lut[d1 & 0xff] + lut[d1 >> 8 & 0xff] + '-' + lut[d1 >> 16 & 0x0f | 0x40] + lut[d1 >> 24 & 0xff] + '-' + lut[d2 & 0x3f | 0x80] + lut[d2 >> 8 & 0xff] + '-' + lut[d2 >> 16 & 0xff] + lut[d2 >> 24 & 0xff] + lut[d3 & 0xff] + lut[d3 >> 8 & 0xff] + lut[d3 >> 16 & 0xff] + lut[d3 >> 24 & 0xff]; -}; - -var short = function short(prefix) { - prefix = prefix || ''; - - var uuid = generate(); - - return prefix + uuid.split('-')[0]; -}; - -/* harmony default export */ __webpack_exports__["a"] = { - generate: generate, - short: short -}; - -/***/ }), -/* 24 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_events__ = __webpack_require__(22); - - -/* harmony default export */ __webpack_exports__["a"] = { - beforeDestroy: function beforeDestroy() { - if (typeof this.destroyExternalClickListener === 'function') { - this.removeExternalClickListener(); - } - }, - - + } + }, + watch: { + trigger() { + this.setupRipple(); + } + }, + created() { + this.triggerEl = null; + }, + mounted() { + this.setupRipple(); + }, + beforeUnmount() { + this.destroyRipple(); + }, methods: { - addExternalClickListener: function addExternalClickListener() { - var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [this.$el]; - - var _this = this; - - var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { passive: true }; - - elements = Array.isArray(elements) ? elements : [elements]; - - this.destroyExternalClickListener = __WEBPACK_IMPORTED_MODULE_0__helpers_events__["a" /* default */].on('click', document, function (e) { - for (var i = 0; i < elements.length; i++) { - if (elements[i].contains(e.target)) { - return; - } - } - - if (typeof callback === 'function') { - callback(e); - } else { - _this.$emit('external-click', e); - } - }, options); - }, - removeExternalClickListener: function removeExternalClickListener() { - if (this.destroyExternalClickListener) { - this.destroyExternalClickListener(); - this.destroyExternalClickListener = null; - } + setupRipple() { + this.triggerEl = elementRef.resolve(this.trigger, this.$el.parentElement); + if (!this.triggerEl) { + console.error("[UiRippleInk]: Trigger element not found."); + return; } - } -}; - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function fuzzysearch (needle, haystack) { - var tlen = haystack.length; - var qlen = needle.length; - if (qlen > tlen) { - return false; - } - if (qlen === tlen) { - return needle === haystack; - } - outer: for (var i = 0, j = 0; i < qlen; i++) { - var nch = needle.charCodeAt(i); - while (j < tlen) { - if (haystack.charCodeAt(j++) === nch) { - continue outer; - } - } - return false; - } - return true; -} - -module.exports = fuzzysearch; - - -/***/ }), -/* 26 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_popper_js__ = __webpack_require__(139); -/**! -* tippy.js v4.2.1 -* (c) 2017-2019 atomiks -* MIT License -*/ - - -function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; + this.triggerEl.addEventListener("touchstart", handleTouchStart, { passive: true }); + this.triggerEl.addEventListener("mousedown", handleMouseDown); + }, + destroyRipple() { + if (!this.triggerEl) { + return; } + this.triggerEl.removeEventListener("mousedown", handleMouseDown); + this.triggerEl.removeEventListener("touchstart", handleTouchStart); } } - - return target; }; - - return _extends.apply(this, arguments); -} - -var version = "4.2.1"; - -var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; -var ua = isBrowser ? navigator.userAgent : ''; -var isIE = /MSIE |Trident\//.test(ua); -var isUCBrowser = /UCBrowser\//.test(ua); -var isIOS = isBrowser && /iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream; - -var defaultProps = { - a11y: true, - allowHTML: true, - animateFill: true, - animation: 'shift-away', - appendTo: function appendTo() { - return document.body; - }, - aria: 'describedby', - arrow: false, - arrowType: 'sharp', - boundary: 'scrollParent', - content: '', - delay: 0, - distance: 10, - duration: [325, 275], - flip: true, - flipBehavior: 'flip', - flipOnUpdate: false, - followCursor: false, - hideOnClick: true, - ignoreAttributes: false, - inertia: false, - interactive: false, - interactiveBorder: 2, - interactiveDebounce: 0, - lazy: true, - maxWidth: 350, - multiple: false, - offset: 0, - onHidden: function onHidden() {}, - onHide: function onHide() {}, - onMount: function onMount() {}, - onShow: function onShow() {}, - onShown: function onShown() {}, - placement: 'top', - popperOptions: {}, - role: 'tooltip', - showOnInit: false, - size: 'regular', - sticky: false, - target: '', - theme: 'dark', - touch: true, - touchHold: false, - trigger: 'mouseenter focus', - updateDuration: 0, - wait: null, - zIndex: 9999 - /** - * If the set() method encounters one of these, the popperInstance must be - * recreated - */ - -}; -var POPPER_INSTANCE_DEPENDENCIES = ['arrow', 'arrowType', 'boundary', 'distance', 'flip', 'flipBehavior', 'flipOnUpdate', 'offset', 'placement', 'popperOptions']; - -var elementProto = isBrowser ? Element.prototype : {}; -var matches = elementProto.matches || elementProto.matchesSelector || elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector || elementProto.msMatchesSelector; -/** - * Ponyfill for Array.from - converts iterable values to an array - */ - -function arrayFrom(value) { - return [].slice.call(value); -} -/** - * Ponyfill for Element.prototype.closest - */ - -function closest(element, parentSelector) { - return (elementProto.closest || function (selector) { - // @ts-ignore - var el = this; - - while (el) { - if (matches.call(el, selector)) { - return el; - } - - el = el.parentElement; - } - }).call(element, parentSelector); -} -/** - * Works like Element.prototype.closest, but uses a callback instead - */ - -function closestCallback(element, callback) { - while (element) { - if (callback(element)) { - return element; - } - - element = element.parentElement; - } -} - -// Passive event listener config -var PASSIVE = { - passive: true // Popper `preventOverflow` padding - -}; -var PADDING = 4; // Popper attributes -// In Popper v2 these will be `data-*` instead of `x-*` to adhere to HTML5 spec - -var PLACEMENT_ATTRIBUTE = 'x-placement'; -var OUT_OF_BOUNDARIES_ATTRIBUTE = 'x-out-of-boundaries'; // Classes - -var IOS_CLASS = 'tippy-iOS'; -var ACTIVE_CLASS = 'tippy-active'; // Selectors - -var POPPER_SELECTOR = '.tippy-popper'; -var TOOLTIP_SELECTOR = '.tippy-tooltip'; -var CONTENT_SELECTOR = '.tippy-content'; -var BACKDROP_SELECTOR = '.tippy-backdrop'; -var ARROW_SELECTOR = '.tippy-arrow'; -var ROUND_ARROW_SELECTOR = '.tippy-roundarrow'; - -var keys = Object.keys(defaultProps); -/** - * Returns an object of optional props from data-tippy-* attributes - */ - -function getDataAttributeOptions(reference) { - return keys.reduce(function (acc, key) { - var valueAsString = (reference.getAttribute("data-tippy-".concat(key)) || '').trim(); - - if (!valueAsString) { - return acc; - } - - if (key === 'content') { - acc[key] = valueAsString; - } else { - try { - acc[key] = JSON.parse(valueAsString); - } catch (e) { - acc[key] = valueAsString; - } - } - - return acc; - }, {}); -} -/** - * Polyfills the virtual reference (plain object) with Element.prototype props - * Mutating because DOM elements are mutated, adds `_tippy` property - */ - -function polyfillElementPrototypeProperties(virtualReference) { - var polyfills = { - isVirtual: true, - attributes: virtualReference.attributes || {}, - setAttribute: function setAttribute(key, value) { - virtualReference.attributes[key] = value; - }, - getAttribute: function getAttribute(key) { - return virtualReference.attributes[key]; + const _hoisted_1$C = { class: "ui-ripple-ink" }; + function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C); + } + const UiRippleInk = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$E], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiRippleInk.vue"]]); + const UiCloseButton_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$D = { + name: "UiCloseButton", + components: { + UiIcon, + UiRippleInk }, - removeAttribute: function removeAttribute(key) { - delete virtualReference.attributes[key]; + props: { + size: { + type: String, + default: "normal" + }, + color: { + type: String, + default: "black" + }, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } }, - hasAttribute: function hasAttribute(key) { - return key in virtualReference.attributes; + computed: { + classes() { + return [ + `ui-close-button--size-${this.size}`, + `ui-close-button--color-${this.color}`, + { "is-disabled": this.disabled } + ]; + } + } + }; + const _hoisted_1$B = ["disabled"]; + const _hoisted_2$v = { class: "ui-close-button__icon" }; + const _hoisted_3$r = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M18.984 6.422L13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578z" }) + ], -1); + const _hoisted_4$i = /* @__PURE__ */ vue.createElementVNode("span", { class: "ui-close-button__focus-ring" }, null, -1); + function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_ripple_ink = vue.resolveComponent("ui-ripple-ink"); + return vue.openBlock(), vue.createElementBlock("button", { + "aria-label": "Close", + class: vue.normalizeClass(["ui-close-button", $options.classes]), + type: "button", + disabled: $props.disabled + }, [ + vue.createElementVNode("div", _hoisted_2$v, [ + vue.createVNode(_component_ui_icon, null, { + default: vue.withCtx(() => [ + _hoisted_3$r + ]), + _: 1 + }) + ]), + _hoisted_4$i, + !$props.disableRipple && !$props.disabled ? (vue.openBlock(), vue.createBlock(_component_ui_ripple_ink, { key: 0 })) : vue.createCommentVNode("v-if", true) + ], 10, _hoisted_1$B); + } + const UiCloseButton = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$D], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCloseButton.vue"]]); + const UiAlert_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$C = { + name: "UiAlert", + components: { + UiCloseButton, + UiIcon }, - addEventListener: function addEventListener() {}, - removeEventListener: function removeEventListener() {}, - classList: { - classNames: {}, - add: function add(key) { - virtualReference.classList.classNames[key] = true; + props: { + type: { + type: String, + default: "info" }, - remove: function remove(key) { - delete virtualReference.classList.classNames[key]; + removeIcon: { + type: Boolean, + default: false }, - contains: function contains(key) { - return key in virtualReference.classList.classNames; + disableAnimation: { + type: Boolean, + default: false + }, + dismissible: { + type: Boolean, + default: true + } + }, + emits: ["dismiss"], + computed: { + classes() { + return [`ui-alert--type-${this.type}`, { "has-no-transition": this.disableAnimation }]; + } + }, + methods: { + dismissAlert() { + this.$emit("dismiss"); } } }; - - for (var key in polyfills) { - virtualReference[key] = polyfills[key]; - } -} - -/** - * Determines if a value is a "bare" virtual element (before mutations done - * by `polyfillElementPrototypeProperties()`). JSDOM elements show up as - * [object Object], we can check if the value is "element-like" if it has - * `addEventListener` - */ - -function isBareVirtualElement(value) { - return {}.toString.call(value) === '[object Object]' && !value.addEventListener; -} -/** - * Safe .hasOwnProperty check, for prototype-less objects - */ - -function hasOwnProperty(obj, key) { - return {}.hasOwnProperty.call(obj, key); -} -/** - * Returns an array of elements based on the value - */ - -function getArrayOfElements(value) { - if (isSingular(value)) { - // TODO: VirtualReference is not compatible to type Element - return [value]; - } - - if (value instanceof NodeList) { - return arrayFrom(value); - } - - if (Array.isArray(value)) { - return value; - } - - try { - return arrayFrom(document.querySelectorAll(value)); - } catch (e) { - return []; - } -} -/** - * Returns a value at a given index depending on if it's an array or number - */ - -function getValue(value, index, defaultValue) { - if (Array.isArray(value)) { - var v = value[index]; - return v == null ? defaultValue : v; - } - - return value; -} -/** - * Debounce utility - */ - -function debounce(fn, ms) { - var timeoutId; - return function () { - var _this = this, - _arguments = arguments; - - clearTimeout(timeoutId); // @ts-ignore - - timeoutId = setTimeout(function () { - return fn.apply(_this, _arguments); - }, ms); + const _hoisted_1$A = { class: "ui-alert__body" }; + const _hoisted_2$u = { + key: 0, + class: "ui-alert__icon" }; -} -/** - * Prevents errors from being thrown while accessing nested modifier objects - * in `popperOptions` - */ - -function getModifier(obj, key) { - return obj && obj.modifiers && obj.modifiers[key]; -} -/** - * Determines if an array or string includes a value - */ - -function includes(a, b) { - return a.indexOf(b) > -1; -} -/** - * Determines if the value is singular-like - */ - -function isSingular(value) { - return !!(value && hasOwnProperty(value, 'isVirtual')) || value instanceof Element; -} -/** - * Firefox extensions don't allow setting .innerHTML directly, this will trick it - */ - -function innerHTML() { - return 'innerHTML'; -} -/** - * Evaluates a function if one, or returns the value - */ - -function evaluateValue(value, args) { - return typeof value === 'function' ? value.apply(null, args) : value; -} -/** - * Sets a popperInstance `flip` modifier's enabled state - */ - -function setFlipModifierEnabled(modifiers, value) { - modifiers.filter(function (m) { - return m.name === 'flip'; - })[0].enabled = value; -} -/** - * Determines if an element can receive focus - * Always returns true for virtual objects - */ - -function canReceiveFocus(element) { - return element instanceof Element ? matches.call(element, 'a[href],area[href],button,details,input,textarea,select,iframe,[tabindex]') && !element.hasAttribute('disabled') : true; -} -/** - * Returns a new `div` element - */ - -function div() { - return document.createElement('div'); -} -/** - * Applies a transition duration to a list of elements - */ - -function setTransitionDuration(els, value) { - els.forEach(function (el) { - if (el) { - el.style.transitionDuration = "".concat(value, "ms"); - } - }); -} -/** - * Sets the visibility state to elements so they can begin to transition - */ - -function setVisibilityState(els, state) { - els.forEach(function (el) { - if (el) { - el.setAttribute('data-state', state); + const _hoisted_3$q = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M12.984 9V6.984h-1.97V9h1.97zm0 8.016v-6h-1.97v6h1.97zm-.984-15c5.53 0 9.984 4.453 9.984 9.984S17.53 21.984 12 21.984 2.016 17.53 2.016 12 6.47 2.016 12 2.016z" }) + ], -1); + const _hoisted_4$h = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M9.984 17.016l9-9-1.406-1.453-7.594 7.594-3.563-3.563L5.016 12zm2.016-15c5.53 0 9.984 4.453 9.984 9.984S17.53 21.984 12 21.984 2.016 17.53 2.016 12 6.47 2.016 12 2.016z" }) + ], -1); + const _hoisted_5$f = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M12.984 14.016v-4.03h-1.97v4.03h1.97zm0 3.984v-2.016h-1.97V18h1.97zm-12 3L12 2.016 23.016 21H.986z" }) + ], -1); + const _hoisted_6$b = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M12.984 12.984v-6h-1.97v6h1.97zm0 4.032V15h-1.97v2.016h1.97zm-.984-15c5.53 0 9.984 4.453 9.984 9.984S17.53 21.984 12 21.984 2.016 17.53 2.016 12 6.47 2.016 12 2.016z" }) + ], -1); + const _hoisted_7$5 = { class: "ui-alert__content" }; + const _hoisted_8$4 = { class: "ui-alert__dismiss-button" }; + function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_close_button = vue.resolveComponent("ui-close-button"); + return vue.openBlock(), vue.createBlock(vue.Transition, { + name: $props.disableAnimation ? null : "ui-alert--transition-toggle" + }, { + default: vue.withCtx(() => [ + vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-alert", $options.classes]), + role: "alert" + }, [ + vue.createElementVNode("div", _hoisted_1$A, [ + !$props.removeIcon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$u, [ + vue.renderSlot(_ctx.$slots, "icon", {}, () => [ + $props.type === "info" ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { key: 0 }, { + default: vue.withCtx(() => [ + _hoisted_3$q + ]), + _: 1 + })) : vue.createCommentVNode("v-if", true), + $props.type === "success" ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { key: 1 }, { + default: vue.withCtx(() => [ + _hoisted_4$h + ]), + _: 1 + })) : vue.createCommentVNode("v-if", true), + $props.type === "warning" ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { key: 2 }, { + default: vue.withCtx(() => [ + _hoisted_5$f + ]), + _: 1 + })) : vue.createCommentVNode("v-if", true), + $props.type === "error" ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { key: 3 }, { + default: vue.withCtx(() => [ + _hoisted_6$b + ]), + _: 1 + })) : vue.createCommentVNode("v-if", true) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_7$5, [ + vue.renderSlot(_ctx.$slots, "default") + ]), + vue.createElementVNode("div", _hoisted_8$4, [ + $props.dismissible ? (vue.openBlock(), vue.createBlock(_component_ui_close_button, { + key: 0, + size: "small", + onClick: $options.dismissAlert + }, null, 8, ["onClick"])) : vue.createCommentVNode("v-if", true) + ]) + ]) + ], 2) + ]), + _: 3 + }, 8, ["name"]); + } + const UiAlert = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$C], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiAlert.vue"]]); + const autofocus = { + mounted(el, { value }) { + if (value) { + el.focus(); + } } - }); -} -/** - * Evaluates the props object by merging data attributes and - * disabling conflicting options where necessary - */ - -function evaluateProps(reference, props) { - var out = _extends({}, props, { - content: evaluateValue(props.content, [reference]) - }, props.ignoreAttributes ? {} : getDataAttributeOptions(reference)); - - if (out.arrow || isUCBrowser) { - out.animateFill = false; - } - - return out; -} -/** - * Validates an object of options with the valid default props object - */ - -function validateOptions(options, defaultProps) { - Object.keys(options).forEach(function (option) { - if (!hasOwnProperty(defaultProps, option)) { - throw new Error("[tippy]: `".concat(option, "` is not a valid option")); + }; + const UiAutocompleteSuggestion_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$B = { + name: "UiAutocompleteSuggestion", + props: { + suggestion: { + type: [String, Object], + required: true + }, + type: { + type: String, + default: "simple" + }, + highlighted: { + type: Boolean, + default: false + }, + keys: { + type: Object, + default() { + return { + label: "label", + image: "image" + }; + } + } + }, + computed: { + classes() { + return [ + "ui-autocomplete-suggestion--type-" + this.type, + { "is-highlighted": this.highlighted } + ]; + }, + imageStyle() { + return { "background-image": "url(" + this.suggestion[this.keys.image] + ")" }; + } } - }); -} - -/** - * Sets the innerHTML of an element - */ - -function setInnerHTML(element, html) { - element[innerHTML()] = html instanceof Element ? html[innerHTML()] : html; -} -/** - * Sets the content of a tooltip - */ - -function setContent(contentEl, props) { - if (props.content instanceof Element) { - setInnerHTML(contentEl, ''); - contentEl.appendChild(props.content); - } else if (typeof props.content !== 'function') { - var key = props.allowHTML ? 'innerHTML' : 'textContent'; - contentEl[key] = props.content; - } -} -/** - * Returns the child elements of a popper element - */ - -function getChildren(popper) { - return { - tooltip: popper.querySelector(TOOLTIP_SELECTOR), - backdrop: popper.querySelector(BACKDROP_SELECTOR), - content: popper.querySelector(CONTENT_SELECTOR), - arrow: popper.querySelector(ARROW_SELECTOR) || popper.querySelector(ROUND_ARROW_SELECTOR) }; -} -/** - * Adds `data-inertia` attribute - */ - -function addInertia(tooltip) { - tooltip.setAttribute('data-inertia', ''); -} -/** - * Removes `data-inertia` attribute - */ - -function removeInertia(tooltip) { - tooltip.removeAttribute('data-inertia'); -} -/** - * Creates an arrow element and returns it - */ - -function createArrowElement(arrowType) { - var arrow = div(); - - if (arrowType === 'round') { - arrow.className = 'tippy-roundarrow'; - setInnerHTML(arrow, ''); - } else { - arrow.className = 'tippy-arrow'; - } - - return arrow; -} -/** - * Creates a backdrop element and returns it - */ - -function createBackdropElement() { - var backdrop = div(); - backdrop.className = 'tippy-backdrop'; - backdrop.setAttribute('data-state', 'hidden'); - return backdrop; -} -/** - * Adds interactive-related attributes - */ - -function addInteractive(popper, tooltip) { - popper.setAttribute('tabindex', '-1'); - tooltip.setAttribute('data-interactive', ''); -} -/** - * Removes interactive-related attributes - */ - -function removeInteractive(popper, tooltip) { - popper.removeAttribute('tabindex'); - tooltip.removeAttribute('data-interactive'); -} -/** - * Add/remove transitionend listener from tooltip - */ - -function updateTransitionEndListener(tooltip, action, listener) { - // UC Browser hasn't adopted the `transitionend` event despite supporting - // unprefixed transitions... - var eventName = isUCBrowser && document.body.style.webkitTransition !== undefined ? 'webkitTransitionEnd' : 'transitionend'; - tooltip[action + 'EventListener'](eventName, listener); -} -/** - * Returns the popper's placement, ignoring shifting (top-start, etc) - */ - -function getBasicPlacement(popper) { - var fullPlacement = popper.getAttribute(PLACEMENT_ATTRIBUTE); - return fullPlacement ? fullPlacement.split('-')[0] : ''; -} -/** - * Triggers reflow - */ - -function reflow(popper) { - void popper.offsetHeight; -} -/** - * Adds/removes theme from tooltip's classList - */ - -function updateTheme(tooltip, action, theme) { - theme.split(' ').forEach(function (themeName) { - tooltip.classList[action](themeName + '-theme'); - }); -} -/** - * Constructs the popper element and returns it - */ - -function createPopperElement(id, props) { - var popper = div(); - popper.className = 'tippy-popper'; - popper.id = "tippy-".concat(id); - popper.style.zIndex = '' + props.zIndex; - - if (props.role) { - popper.setAttribute('role', props.role); - } - - var tooltip = div(); - tooltip.className = 'tippy-tooltip'; - tooltip.style.maxWidth = props.maxWidth + (typeof props.maxWidth === 'number' ? 'px' : ''); - tooltip.setAttribute('data-size', props.size); - tooltip.setAttribute('data-animation', props.animation); - tooltip.setAttribute('data-state', 'hidden'); - updateTheme(tooltip, 'add', props.theme); - var content = div(); - content.className = 'tippy-content'; - content.setAttribute('data-state', 'hidden'); - - if (props.interactive) { - addInteractive(popper, tooltip); - } - - if (props.arrow) { - tooltip.appendChild(createArrowElement(props.arrowType)); - } - - if (props.animateFill) { - tooltip.appendChild(createBackdropElement()); - tooltip.setAttribute('data-animatefill', ''); - } - - if (props.inertia) { - addInertia(tooltip); - } - - setContent(content, props); - tooltip.appendChild(content); - popper.appendChild(tooltip); - return popper; -} -/** - * Updates the popper element based on the new props - */ - -function updatePopperElement(popper, prevProps, nextProps) { - var _getChildren = getChildren(popper), - tooltip = _getChildren.tooltip, - content = _getChildren.content, - backdrop = _getChildren.backdrop, - arrow = _getChildren.arrow; - - popper.style.zIndex = '' + nextProps.zIndex; - tooltip.setAttribute('data-size', nextProps.size); - tooltip.setAttribute('data-animation', nextProps.animation); - tooltip.style.maxWidth = nextProps.maxWidth + (typeof nextProps.maxWidth === 'number' ? 'px' : ''); - - if (nextProps.role) { - popper.setAttribute('role', nextProps.role); - } else { - popper.removeAttribute('role'); - } - - if (prevProps.content !== nextProps.content) { - setContent(content, nextProps); - } // animateFill - - - if (!prevProps.animateFill && nextProps.animateFill) { - tooltip.appendChild(createBackdropElement()); - tooltip.setAttribute('data-animatefill', ''); - } else if (prevProps.animateFill && !nextProps.animateFill) { - tooltip.removeChild(backdrop); - tooltip.removeAttribute('data-animatefill'); - } // arrow - - - if (!prevProps.arrow && nextProps.arrow) { - tooltip.appendChild(createArrowElement(nextProps.arrowType)); - } else if (prevProps.arrow && !nextProps.arrow) { - tooltip.removeChild(arrow); - } // arrowType - - - if (prevProps.arrow && nextProps.arrow && prevProps.arrowType !== nextProps.arrowType) { - tooltip.replaceChild(createArrowElement(nextProps.arrowType), arrow); - } // interactive - - - if (!prevProps.interactive && nextProps.interactive) { - addInteractive(popper, tooltip); - } else if (prevProps.interactive && !nextProps.interactive) { - removeInteractive(popper, tooltip); - } // inertia - - - if (!prevProps.inertia && nextProps.inertia) { - addInertia(tooltip); - } else if (prevProps.inertia && !nextProps.inertia) { - removeInertia(tooltip); - } // theme - - - if (prevProps.theme !== nextProps.theme) { - updateTheme(tooltip, 'remove', prevProps.theme); - updateTheme(tooltip, 'add', nextProps.theme); - } -} -/** - * Runs the callback after the popper's position has been updated - * update() is debounced with Promise.resolve() or setTimeout() - * scheduleUpdate() is update() wrapped in requestAnimationFrame() - */ - -function afterPopperPositionUpdates(popperInstance, callback) { - var popper = popperInstance.popper, - options = popperInstance.options; - var onCreate = options.onCreate, - onUpdate = options.onUpdate; - - options.onCreate = options.onUpdate = function (data) { - reflow(popper); - callback(); - - if (onUpdate) { - onUpdate(data); - } - - options.onCreate = onCreate; - options.onUpdate = onUpdate; + const _hoisted_1$z = { + key: 0, + class: "ui-autocomplete-suggestion__simple" }; -} -/** - * Hides all visible poppers on the document - */ - -function hideAll() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - checkHideOnClick = _ref.checkHideOnClick, - exclude = _ref.exclude, - duration = _ref.duration; - - arrayFrom(document.querySelectorAll(POPPER_SELECTOR)).forEach(function (popper) { - var instance = popper._tippy; - - if (instance && (checkHideOnClick ? instance.props.hideOnClick === true : true) && (!exclude || popper !== exclude.popper)) { - instance.hide(duration); - } - }); -} -/** - * Determines if the mouse cursor is outside of the popper's interactive border - * region - */ - -function isCursorOutsideInteractiveBorder(popperPlacement, popperRect, event, props) { - if (!popperPlacement) { + const _hoisted_2$t = { + key: 1, + class: "ui-autocomplete-suggestion__image" + }; + const _hoisted_3$p = { class: "ui-autocomplete-suggestion__image-text" }; + function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("li", { + class: vue.normalizeClass(["ui-autocomplete-suggestion", $options.classes]) + }, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + $props.type === "simple" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, vue.toDisplayString($props.suggestion[$props.keys.label] || $props.suggestion), 1)) : vue.createCommentVNode("v-if", true), + $props.type === "image" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$t, [ + vue.createElementVNode("div", { + class: "ui-autocomplete-suggestion__image-object", + style: vue.normalizeStyle($options.imageStyle) + }, null, 4), + vue.createElementVNode("div", _hoisted_3$p, vue.toDisplayString($props.suggestion[$props.keys.label]), 1) + ])) : vue.createCommentVNode("v-if", true) + ]) + ], 2); + } + const UiAutocompleteSuggestion = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$B], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiAutocompleteSuggestion.vue"]]); + var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; + function fuzzysearch(needle, haystack) { + var tlen = haystack.length; + var qlen = needle.length; + if (qlen > tlen) { + return false; + } + if (qlen === tlen) { + return needle === haystack; + } + outer: + for (var i2 = 0, j = 0; i2 < qlen; i2++) { + var nch = needle.charCodeAt(i2); + while (j < tlen) { + if (haystack.charCodeAt(j++) === nch) { + continue outer; + } + } + return false; + } return true; } - - var x = event.clientX, - y = event.clientY; - var interactiveBorder = props.interactiveBorder, - distance = props.distance; - var exceedsTop = popperRect.top - y > (popperPlacement === 'top' ? interactiveBorder + distance : interactiveBorder); - var exceedsBottom = y - popperRect.bottom > (popperPlacement === 'bottom' ? interactiveBorder + distance : interactiveBorder); - var exceedsLeft = popperRect.left - x > (popperPlacement === 'left' ? interactiveBorder + distance : interactiveBorder); - var exceedsRight = x - popperRect.right > (popperPlacement === 'right' ? interactiveBorder + distance : interactiveBorder); - return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight; -} -/** - * Returns the distance offset, taking into account the default offset due to - * the transform: translate() rule (10px) in CSS - */ - -function getOffsetDistanceInPx(distance) { - return -(distance - 10) + 'px'; -} - -var isUsingTouch = false; -function onDocumentTouch() { - if (isUsingTouch) { - return; - } - - isUsingTouch = true; - - if (isIOS) { - document.body.classList.add(IOS_CLASS); - } - - if (window.performance) { - document.addEventListener('mousemove', onDocumentMouseMove); - } -} -var lastMouseMoveTime = 0; -function onDocumentMouseMove() { - var now = performance.now(); // Chrome 60+ is 1 mousemove per animation frame, use 20ms time difference - - if (now - lastMouseMoveTime < 20) { - isUsingTouch = false; - document.removeEventListener('mousemove', onDocumentMouseMove); - - if (!isIOS) { - document.body.classList.remove(IOS_CLASS); - } - } - - lastMouseMoveTime = now; -} -function onDocumentClick(event) { - // Simulated events dispatched on the document - if (!(event.target instanceof Element)) { - return hideAll(); - } // Clicked on an interactive popper - - - var popper = closest(event.target, POPPER_SELECTOR); - - if (popper && popper._tippy && popper._tippy.props.interactive) { - return; - } // Clicked on a reference - - - var reference = closestCallback(event.target, function (el) { - return el._tippy && el._tippy.reference === el; - }); - - if (reference) { - var instance = reference._tippy; - - if (instance) { - var isClickTrigger = includes(instance.props.trigger || '', 'click'); - - if (isUsingTouch || isClickTrigger) { - return hideAll({ - exclude: instance, - checkHideOnClick: true + var fuzzysearch_1 = fuzzysearch; + const UiAutocomplete_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$A = { + name: "UiAutocomplete", + components: { + UiAutocompleteSuggestion, + UiIcon + }, + directives: { + autofocus + }, + props: { + name: String, + placeholder: String, + tabindex: [String, Number], + modelValue: { + type: [String, Number], + default: "" + }, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + label: String, + floatingLabel: { + type: Boolean, + default: false + }, + help: String, + error: String, + readonly: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + type: { + type: String, + default: "simple" + }, + suggestions: { + type: Array, + default() { + return []; + } + }, + limit: { + type: Number, + default: 8 + }, + append: { + type: Boolean, + default: false + }, + appendDelimiter: { + type: String, + default: ", " + }, + minChars: { + type: Number, + default: 2 + }, + showOnUpDown: { + type: Boolean, + default: true + }, + autofocus: { + type: Boolean, + default: false + }, + filter: Function, + sort: Function, + highlightOnFirstMatch: { + type: Boolean, + default: true + }, + cycleHighlight: { + type: Boolean, + default: true + }, + keys: { + type: Object, + default() { + return { + label: "label", + value: "value", + image: "image" + }; + } + }, + invalid: { + type: Boolean, + default: false + } + }, + emits: [ + "update:modelValue", + "select", + "highlight-overflow", + "highlight", + "dropdown-open", + "dropdown-close", + "focus", + "change", + "blur", + "touch" + ], + data() { + return { + initialValue: this.modelValue, + isActive: false, + isTouched: false, + showDropdown: false, + highlightedIndex: -1 + }; + }, + computed: { + classes() { + return [ + `ui-autocomplete--type-${this.type}`, + `ui-autocomplete--icon-position-${this.iconPosition}`, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-touched": this.isTouched }, + { "is-disabled": this.disabled }, + { "has-label": this.hasLabel }, + { "has-floating-label": this.hasFloatingLabel } + ]; + }, + labelClasses() { + return { + "is-inline": this.hasFloatingLabel && this.isLabelInline, + "is-floating": this.hasFloatingLabel && !this.isLabelInline + }; + }, + hasLabel() { + return Boolean(this.label) || Boolean(this.$slots.default); + }, + hasFloatingLabel() { + return this.hasLabel && this.floatingLabel; + }, + isLabelInline() { + return this.valueLength === 0 && !this.isActive; + }, + valueLength() { + return this.modelValue ? this.modelValue.length : 0; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + }, + matchingSuggestions() { + const suggestions = this.suggestions.filter((suggestion) => { + if (this.filter) { + return this.filter(suggestion, this.modelValue, this.defaultFilter); + } + const query = this.modelValue === null ? "" : this.modelValue; + return this.defaultFilter(suggestion, query); }); + if (this.sort) { + suggestions.sort(this.sort.bind(this)); + } + return suggestions.slice(0, this.limit); } - - if (instance.props.hideOnClick !== true || isClickTrigger) { - return; + }, + watch: { + modelValue() { + if (this.isActive && this.valueLength >= this.minChars) { + this.openDropdown(); + } + this.highlightedIndex = this.highlightOnFirstMatch ? 0 : -1; + } + }, + created() { + if (this.modelValue === null) { + this.initialValue = ""; + this.updateValue(""); + } + }, + mounted() { + document.addEventListener("click", this.onExternalClick); + }, + beforeUnmount() { + document.removeEventListener("click", this.onExternalClick); + }, + methods: { + defaultFilter(suggestion, query) { + const text = suggestion[this.keys.label] || suggestion; + if (typeof query === "string") { + query = query.toLowerCase(); + } + return fuzzysearch_1(query, text.toLowerCase()); + }, + selectSuggestion(suggestion) { + let value; + if (this.append) { + value += this.appendDelimiter + (suggestion[this.keys.value] || suggestion); + } else { + value = suggestion[this.keys.value] || suggestion; + } + this.updateValue(value); + this.$emit("select", suggestion); + this.$nextTick(() => { + this.closeDropdown(); + this.$refs.input.focus(); + }); + }, + highlightSuggestion(index) { + const firstIndex = 0; + const lastIndex = this.$refs.suggestions.length - 1; + if (index === -2) { + index = lastIndex; + } else if (index < firstIndex) { + index = this.cycleHighlight ? lastIndex : index; + } else if (index > lastIndex) { + index = this.cycleHighlight ? firstIndex : -1; + } + this.highlightedIndex = index; + if (this.showOnUpDown) { + this.openDropdown(); + } + if (index < firstIndex || index > lastIndex) { + this.$emit("highlight-overflow", index); + } else { + this.$emit("highlight", this.$refs.suggestions[index].suggestion, index); + } + }, + selectHighlighted(index, e) { + if (this.showDropdown && this.$refs.suggestions.length > 0) { + e.preventDefault(); + this.selectSuggestion(this.$refs.suggestions[index].suggestion); + } + }, + focus() { + this.$refs.input.focus(); + }, + openDropdown() { + if (!this.showDropdown) { + this.showDropdown = true; + this.$emit("dropdown-open"); + } + }, + closeDropdown() { + if (this.showDropdown) { + this.$nextTick(() => { + this.showDropdown = false; + this.highlightedIndex = -1; + this.$emit("dropdown-close"); + }); + } + }, + updateValue(value) { + this.$emit("update:modelValue", value); + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onChange(e) { + this.$emit("change", this.modelValue, e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + if (!this.isTouched) { + this.isTouched = true; + this.$emit("touch"); + } + }, + onExternalClick(e) { + if (!this.$el.contains(e.target) && this.showDropdown) { + this.closeDropdown(); + } + }, + reset() { + if (document.activeElement === this.$refs.input) { + document.activeElement.blur(); + } + this.updateValue(this.initialValue); + this.isTouched = false; } - - instance.clearDelayTimeouts(); } - } - - hideAll({ - checkHideOnClick: true - }); -} -function onWindowBlur() { - var _document = document, - activeElement = _document.activeElement; - - if (activeElement && activeElement.blur && activeElement._tippy) { - activeElement.blur(); - } -} -/** - * Adds the needed global event listeners - */ - -function bindGlobalEventListeners() { - document.addEventListener('click', onDocumentClick, true); - document.addEventListener('touchstart', onDocumentTouch, PASSIVE); - window.addEventListener('blur', onWindowBlur); -} - -var idCounter = 1; -/** - * Creates and returns a Tippy object. We're using a closure pattern instead of - * a class so that the exposed object API is clean without private members - * prefixed with `_`. - */ - -function createTippy(reference, collectionProps) { - var props = evaluateProps(reference, collectionProps); // If the reference shouldn't have multiple tippys, return null early - - if (!props.multiple && reference._tippy) { - return null; - } - /* ======================= 🔒 Private members 🔒 ======================= */ - - - var lastTriggerEventType; - var lastMouseMoveEvent; - var showTimeoutId; - var hideTimeoutId; - var animationFrameId; - var isScheduledToShow = false; - var currentParentNode; - var previousPlacement; - var wasVisibleDuringPreviousUpdate = false; - var currentTransitionEndListener; - var listeners = []; - var debouncedOnMouseMove = props.interactiveDebounce > 0 ? debounce(onMouseMove, props.interactiveDebounce) : onMouseMove; - /* ======================= 🔑 Public members 🔑 ======================= */ - - var id = idCounter++; - var popper = createPopperElement(id, props); - var popperChildren = getChildren(popper); - var popperInstance = null; - var state = { - // Is the instance currently enabled? - isEnabled: true, - // Is the tippy currently showing and not transitioning out? - isVisible: false, - // Has the instance been destroyed? - isDestroyed: false, - // Is the tippy currently mounted to the DOM? - isMounted: false, - // Has the tippy finished transitioning in? - isShown: false }; - var instance = { - // properties - id: id, - reference: reference, - popper: popper, - popperChildren: popperChildren, - popperInstance: popperInstance, - props: props, - state: state, - // methods - clearDelayTimeouts: clearDelayTimeouts, - set: set, - setContent: setContent$$1, - show: show, - hide: hide, - enable: enable, - disable: disable, - destroy: destroy - /* ==================== Initial instance mutations =================== */ - + const _hoisted_1$y = { + key: 0, + class: "ui-autocomplete__icon-wrapper" }; - reference._tippy = instance; - popper._tippy = instance; - addTriggersToReference(); - - if (!props.lazy) { - createPopperInstance(); - instance.popperInstance.disableEventListeners(); - } - - if (props.showOnInit) { - scheduleShow(); - } // Ensure the reference element can receive focus (and is not a delegate) - - - if (props.a11y && !props.target && !canReceiveFocus(reference)) { - reference.setAttribute('tabindex', '0'); - } // Prevent a tippy with a delay from hiding if the cursor left then returned - // before it started hiding - - - popper.addEventListener('mouseenter', function (event) { - if (instance.props.interactive && instance.state.isVisible && lastTriggerEventType === 'mouseenter') { - scheduleShow(event); - } - }); - popper.addEventListener('mouseleave', function () { - if (instance.props.interactive && lastTriggerEventType === 'mouseenter') { - document.addEventListener('mousemove', debouncedOnMouseMove); - } - }); - return instance; - /* ======================= 🔒 Private methods 🔒 ======================= */ - - /** - * Removes the follow cursor listener - */ - - function removeFollowCursorListener() { - document.removeEventListener('mousemove', positionVirtualReferenceNearCursor); - } - /** - * Cleans up old listeners - */ - - - function cleanupOldMouseListeners() { - document.body.removeEventListener('mouseleave', scheduleHide); - document.removeEventListener('mousemove', debouncedOnMouseMove); - } - /** - * Returns transitionable inner elements used in show/hide methods - */ - - - function getTransitionableElements() { - return [instance.popperChildren.tooltip, instance.popperChildren.backdrop, instance.popperChildren.content]; - } - /** - * Determines if the instance is in `followCursor` mode - */ - - - function hasFollowCursorBehavior() { - return instance.props.followCursor && !isUsingTouch && lastTriggerEventType !== 'focus'; - } - /** - * Updates the tooltip's position on each animation frame + const _hoisted_2$s = { class: "ui-autocomplete__content" }; + const _hoisted_3$o = { class: "ui-autocomplete__label" }; + const _hoisted_4$g = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M18.984 6.422L13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578z" }) + ], -1); + const _hoisted_5$e = ["disabled", "name", "placeholder", "readonly", "tabindex", "value"]; + const _hoisted_6$a = { class: "ui-autocomplete__suggestions" }; + const _hoisted_7$4 = { + key: 0, + class: "ui-autocomplete__feedback" + }; + const _hoisted_8$3 = { + key: 0, + class: "ui-autocomplete__feedback-text" + }; + const _hoisted_9$3 = { + key: 1, + class: "ui-autocomplete__feedback-text" + }; + function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_autocomplete_suggestion = vue.resolveComponent("ui-autocomplete-suggestion"); + const _directive_autofocus = vue.resolveDirective("autofocus"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-autocomplete", $options.classes]) + }, [ + $props.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [ + vue.renderSlot(_ctx.$slots, "icon", {}, () => [ + vue.createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_2$s, [ + vue.createElementVNode("label", _hoisted_3$o, [ + $props.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", { + key: 0, + class: vue.normalizeClass(["ui-autocomplete__label-text", $options.labelClasses]) + }, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.label), 1) + ]) + ], 2)) : vue.createCommentVNode("v-if", true), + vue.withDirectives(vue.createVNode(_component_ui_icon, { + class: "ui-autocomplete__clear-button", + title: "Clear", + onClick: _cache[0] || (_cache[0] = ($event) => $options.updateValue("")) + }, { + default: vue.withCtx(() => [ + _hoisted_4$g + ]), + _: 1 + }, 512), [ + [vue.vShow, !$props.disabled && $options.valueLength > 0] + ]), + vue.withDirectives(vue.createElementVNode("input", { + ref: "input", + autocomplete: "off", + class: "ui-autocomplete__input", + disabled: $props.disabled, + name: $props.name, + placeholder: $options.hasFloatingLabel ? null : $props.placeholder, + readonly: $props.readonly ? $props.readonly : null, + tabindex: $props.tabindex, + value: $props.modelValue, + onBlur: _cache[1] || (_cache[1] = (...args) => $options.onBlur && $options.onBlur(...args)), + onChange: _cache[2] || (_cache[2] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[3] || (_cache[3] = (...args) => $options.onFocus && $options.onFocus(...args)), + onInput: _cache[4] || (_cache[4] = ($event) => $options.updateValue($event.target.value)), + onKeydown: [ + _cache[5] || (_cache[5] = vue.withKeys(vue.withModifiers(($event) => $options.highlightSuggestion($data.highlightedIndex + 1), ["prevent"]), ["down"])), + _cache[6] || (_cache[6] = vue.withKeys(($event) => $options.selectHighlighted($data.highlightedIndex, $event), ["enter"])), + _cache[7] || (_cache[7] = vue.withKeys((...args) => $options.closeDropdown && $options.closeDropdown(...args), ["esc"])), + _cache[8] || (_cache[8] = vue.withKeys((...args) => $options.closeDropdown && $options.closeDropdown(...args), ["tab"])), + _cache[9] || (_cache[9] = vue.withKeys(vue.withModifiers(($event) => $options.highlightSuggestion($data.highlightedIndex - 1), ["prevent"]), ["up"])) + ] + }, null, 40, _hoisted_5$e), [ + [_directive_autofocus, $props.autofocus] + ]), + vue.withDirectives(vue.createElementVNode("ul", _hoisted_6$a, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($options.matchingSuggestions, (suggestion, index) => { + return vue.openBlock(), vue.createBlock(_component_ui_autocomplete_suggestion, { + ref_for: true, + ref: "suggestions", + key: index, + highlighted: $data.highlightedIndex === index, + keys: $props.keys, + suggestion, + type: $props.type, + onClick: ($event) => $options.selectSuggestion(suggestion) + }, { + default: vue.withCtx(() => [ + vue.renderSlot(_ctx.$slots, "suggestion", { + highlighted: $data.highlightedIndex === index, + index, + suggestion + }) + ]), + _: 2 + }, 1032, ["highlighted", "keys", "suggestion", "type", "onClick"]); + }), 128)) + ], 512), [ + [vue.vShow, $data.showDropdown] + ]) + ]), + $options.hasFeedback ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$4, [ + $options.showError ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$3, [ + vue.renderSlot(_ctx.$slots, "error", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9$3, [ + vue.renderSlot(_ctx.$slots, "help", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.help), 1) + ]) + ])) : vue.createCommentVNode("v-if", true) + ])) : vue.createCommentVNode("v-if", true) + ]) + ], 2); + } + const UiAutocomplete = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$A], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiAutocomplete.vue"]]); + /**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.14.7 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ - - - function makeSticky() { - setTransitionDuration([instance.popper], isIE ? 0 : instance.props.updateDuration); - - function updatePosition() { - if (instance.popperInstance) { - instance.popperInstance.scheduleUpdate(); - } - - if (instance.state.isMounted) { - requestAnimationFrame(updatePosition); - } else { - setTransitionDuration([instance.popper], 0); - } + var isBrowser$1 = typeof window !== "undefined" && typeof document !== "undefined"; + var longerTimeoutBrowsers = ["Edge", "Trident", "Firefox"]; + var timeoutDuration = 0; + for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { + if (isBrowser$1 && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { + timeoutDuration = 1; + break; } - - updatePosition(); } - /** - * Invokes a callback once the tooltip has fully transitioned out - */ - - - function onTransitionedOut(duration, callback) { - onTransitionEnd(duration, function () { - if (!instance.state.isVisible && currentParentNode && currentParentNode.contains(instance.popper)) { - callback(); + function microtaskDebounce(fn) { + var called = false; + return function() { + if (called) { + return; } - }); - } - /** - * Invokes a callback once the tooltip has fully transitioned in - */ - - - function onTransitionedIn(duration, callback) { - onTransitionEnd(duration, callback); - } - /** - * Invokes a callback once the tooltip's CSS transition ends - */ - - - function onTransitionEnd(duration, callback) { - var tooltip = instance.popperChildren.tooltip; - /** - * Listener added as the `transitionend` handler - */ - - function listener(event) { - if (event.target === tooltip) { - updateTransitionEndListener(tooltip, 'remove', listener); - callback(); - } - } // Make callback synchronous if duration is 0 - // `transitionend` won't fire otherwise - - - if (duration === 0) { - return callback(); - } - - updateTransitionEndListener(tooltip, 'remove', currentTransitionEndListener); - updateTransitionEndListener(tooltip, 'add', listener); - currentTransitionEndListener = listener; - } - /** - * Adds an event listener to the reference and stores it in `listeners` - */ - - - function on(eventType, handler) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - instance.reference.addEventListener(eventType, handler, options); - listeners.push({ - eventType: eventType, - handler: handler, - options: options - }); + called = true; + window.Promise.resolve().then(function() { + called = false; + fn(); + }); + }; } - /** - * Adds event listeners to the reference based on the `trigger` prop - */ - - - function addTriggersToReference() { - if (instance.props.touchHold && !instance.props.target) { - on('touchstart', onTrigger, PASSIVE); - on('touchend', onMouseLeave, PASSIVE); - } - - instance.props.trigger.trim().split(' ').forEach(function (eventType) { - if (eventType === 'manual') { - return; - } // Non-delegates - - - if (!instance.props.target) { - on(eventType, onTrigger); - - switch (eventType) { - case 'mouseenter': - on('mouseleave', onMouseLeave); - break; - - case 'focus': - on(isIE ? 'focusout' : 'blur', onBlur); - break; - } - } else { - // Delegates - switch (eventType) { - case 'mouseenter': - on('mouseover', onDelegateShow); - on('mouseout', onDelegateHide); - break; - - case 'focus': - on('focusin', onDelegateShow); - on('focusout', onDelegateHide); - break; - - case 'click': - on(eventType, onDelegateShow); - break; - } + function taskDebounce(fn) { + var scheduled = false; + return function() { + if (!scheduled) { + scheduled = true; + setTimeout(function() { + scheduled = false; + fn(); + }, timeoutDuration); } - }); + }; } - /** - * Removes event listeners from the reference - */ - - - function removeTriggersFromReference() { - listeners.forEach(function (_ref) { - var eventType = _ref.eventType, - handler = _ref.handler, - options = _ref.options; - instance.reference.removeEventListener(eventType, handler, options); - }); - listeners = []; + var supportsMicroTasks = isBrowser$1 && window.Promise; + var debounce$1 = supportsMicroTasks ? microtaskDebounce : taskDebounce; + function isFunction(functionToCheck) { + var getType = {}; + return functionToCheck && getType.toString.call(functionToCheck) === "[object Function]"; } - /** - * Positions the virtual reference near the cursor - */ - - - function positionVirtualReferenceNearCursor(event) { - var _lastMouseMoveEvent = lastMouseMoveEvent = event, - clientX = _lastMouseMoveEvent.clientX, - clientY = _lastMouseMoveEvent.clientY; - - if (!instance.popperInstance) { - return; - } // Ensure virtual reference is padded to prevent tooltip from - // overflowing. Maybe Popper.js issue? - - - var placement = getBasicPlacement(instance.popper); - var padding = instance.props.arrow ? PADDING + (instance.props.arrowType === 'round' ? 18 : 16) : PADDING; - var isVerticalPlacement = includes(['top', 'bottom'], placement); - var isHorizontalPlacement = includes(['left', 'right'], placement); // Top / left boundary - - var x = isVerticalPlacement ? Math.max(padding, clientX) : clientX; - var y = isHorizontalPlacement ? Math.max(padding, clientY) : clientY; // Bottom / right boundary - - if (isVerticalPlacement && x > padding) { - x = Math.min(clientX, window.innerWidth - padding); - } - - if (isHorizontalPlacement && y > padding) { - y = Math.min(clientY, window.innerHeight - padding); - } - - var rect = instance.reference.getBoundingClientRect(); - var followCursor = instance.props.followCursor; - var isHorizontal = followCursor === 'horizontal'; - var isVertical = followCursor === 'vertical'; - instance.popperInstance.reference = _extends({}, instance.popperInstance.reference, { - getBoundingClientRect: function getBoundingClientRect() { - return { - width: 0, - height: 0, - top: isHorizontal ? rect.top : y, - bottom: isHorizontal ? rect.bottom : y, - left: isVertical ? rect.left : x, - right: isVertical ? rect.right : x - }; - }, - clientWidth: 0, - clientHeight: 0 - }); - instance.popperInstance.scheduleUpdate(); - - if (followCursor === 'initial' && instance.state.isVisible) { - removeFollowCursorListener(); + function getStyleComputedProperty(element, property) { + if (element.nodeType !== 1) { + return []; } + var window2 = element.ownerDocument.defaultView; + var css = window2.getComputedStyle(element, null); + return property ? css[property] : css; } - /** - * Creates the tippy instance for a delegate when it's been triggered - */ - - - function createDelegateChildTippy(event) { - if (event) { - var targetEl = closest(event.target, instance.props.target); - - if (targetEl && !targetEl._tippy) { - createTippy(targetEl, _extends({}, instance.props, { - content: evaluateValue(collectionProps.content, [targetEl]), - appendTo: collectionProps.appendTo, - target: '', - showOnInit: true - })); - scheduleShow(event); - } + function getParentNode(element) { + if (element.nodeName === "HTML") { + return element; } + return element.parentNode || element.host; } - /** - * Event listener invoked upon trigger - */ - - - function onTrigger(event) { - if (!instance.state.isEnabled || isEventListenerStopped(event)) { - return; + function getScrollParent(element) { + if (!element) { + return document.body; } - - if (!instance.state.isVisible) { - lastTriggerEventType = event.type; - - if (event instanceof MouseEvent) { - lastMouseMoveEvent = event; - } - } // Toggle show/hide when clicking click-triggered tooltips - - - if (event.type === 'click' && instance.props.hideOnClick !== false && instance.state.isVisible) { - scheduleHide(); - } else { - scheduleShow(event); + switch (element.nodeName) { + case "HTML": + case "BODY": + return element.ownerDocument.body; + case "#document": + return element.body; + } + var _getStyleComputedProp = getStyleComputedProperty(element), overflow = _getStyleComputedProp.overflow, overflowX = _getStyleComputedProp.overflowX, overflowY = _getStyleComputedProp.overflowY; + if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { + return element; } + return getScrollParent(getParentNode(element)); } - /** - * Event listener used for interactive tooltips to detect when they should - * hide - */ - - - function onMouseMove(event) { - var referenceTheCursorIsOver = closestCallback(event.target, function (el) { - return el._tippy; - }); - var isCursorOverPopper = closest(event.target, POPPER_SELECTOR) === instance.popper; - var isCursorOverReference = referenceTheCursorIsOver === instance.reference; - - if (isCursorOverPopper || isCursorOverReference) { - return; + var isIE11 = isBrowser$1 && !!(window.MSInputMethodContext && document.documentMode); + var isIE10 = isBrowser$1 && /MSIE 10/.test(navigator.userAgent); + function isIE$1(version2) { + if (version2 === 11) { + return isIE11; } - - if (isCursorOutsideInteractiveBorder(getBasicPlacement(instance.popper), instance.popper.getBoundingClientRect(), event, instance.props)) { - cleanupOldMouseListeners(); - scheduleHide(); + if (version2 === 10) { + return isIE10; } + return isIE11 || isIE10; } - /** - * Event listener invoked upon mouseleave - */ - - - function onMouseLeave(event) { - if (isEventListenerStopped(event)) { - return; + function getOffsetParent(element) { + if (!element) { + return document.documentElement; } - - if (instance.props.interactive) { - document.body.addEventListener('mouseleave', scheduleHide); - document.addEventListener('mousemove', debouncedOnMouseMove); - return; + var noOffsetParent = isIE$1(10) ? document.body : null; + var offsetParent = element.offsetParent || null; + while (offsetParent === noOffsetParent && element.nextElementSibling) { + offsetParent = (element = element.nextElementSibling).offsetParent; } - - scheduleHide(); - } - /** - * Event listener invoked upon blur - */ - - - function onBlur(event) { - if (event.target !== instance.reference) { - return; + var nodeName = offsetParent && offsetParent.nodeName; + if (!nodeName || nodeName === "BODY" || nodeName === "HTML") { + return element ? element.ownerDocument.documentElement : document.documentElement; } - - if (instance.props.interactive && event.relatedTarget && instance.popper.contains(event.relatedTarget)) { - return; + if (["TH", "TD", "TABLE"].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, "position") === "static") { + return getOffsetParent(offsetParent); } - - scheduleHide(); + return offsetParent; } - /** - * Event listener invoked when a child target is triggered - */ - - - function onDelegateShow(event) { - if (closest(event.target, instance.props.target)) { - scheduleShow(event); + function isOffsetContainer(element) { + var nodeName = element.nodeName; + if (nodeName === "BODY") { + return false; } + return nodeName === "HTML" || getOffsetParent(element.firstElementChild) === element; } - /** - * Event listener invoked when a child target should hide - */ - - - function onDelegateHide(event) { - if (closest(event.target, instance.props.target)) { - scheduleHide(); + function getRoot(node) { + if (node.parentNode !== null) { + return getRoot(node.parentNode); } + return node; } - /** - * Determines if an event listener should stop further execution due to the - * `touchHold` option - */ - - - function isEventListenerStopped(event) { - var supportsTouch = 'ontouchstart' in window; - var isTouchEvent = includes(event.type, 'touch'); - var touchHold = instance.props.touchHold; - return supportsTouch && isUsingTouch && touchHold && !isTouchEvent || isUsingTouch && !touchHold && isTouchEvent; + function findCommonOffsetParent(element1, element2) { + if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { + return document.documentElement; + } + var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; + var start = order ? element1 : element2; + var end = order ? element2 : element1; + var range = document.createRange(); + range.setStart(start, 0); + range.setEnd(end, 0); + var commonAncestorContainer = range.commonAncestorContainer; + if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { + if (isOffsetContainer(commonAncestorContainer)) { + return commonAncestorContainer; + } + return getOffsetParent(commonAncestorContainer); + } + var element1root = getRoot(element1); + if (element1root.host) { + return findCommonOffsetParent(element1root.host, element2); + } else { + return findCommonOffsetParent(element1, getRoot(element2).host); + } + } + function getScroll(element) { + var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "top"; + var upperSide = side === "top" ? "scrollTop" : "scrollLeft"; + var nodeName = element.nodeName; + if (nodeName === "BODY" || nodeName === "HTML") { + var html = element.ownerDocument.documentElement; + var scrollingElement = element.ownerDocument.scrollingElement || html; + return scrollingElement[upperSide]; + } + return element[upperSide]; + } + function includeScroll(rect, element) { + var subtract = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + var scrollTop = getScroll(element, "top"); + var scrollLeft = getScroll(element, "left"); + var modifier = subtract ? -1 : 1; + rect.top += scrollTop * modifier; + rect.bottom += scrollTop * modifier; + rect.left += scrollLeft * modifier; + rect.right += scrollLeft * modifier; + return rect; + } + function getBordersSize(styles, axis) { + var sideA = axis === "x" ? "Left" : "Top"; + var sideB = sideA === "Left" ? "Right" : "Bottom"; + return parseFloat(styles["border" + sideA + "Width"], 10) + parseFloat(styles["border" + sideB + "Width"], 10); + } + function getSize(axis, body, html, computedStyle) { + return Math.max(body["offset" + axis], body["scroll" + axis], html["client" + axis], html["offset" + axis], html["scroll" + axis], isIE$1(10) ? parseInt(html["offset" + axis]) + parseInt(computedStyle["margin" + (axis === "Height" ? "Top" : "Left")]) + parseInt(computedStyle["margin" + (axis === "Height" ? "Bottom" : "Right")]) : 0); + } + function getWindowSizes(document2) { + var body = document2.body; + var html = document2.documentElement; + var computedStyle = isIE$1(10) && getComputedStyle(html); + return { + height: getSize("Height", body, html, computedStyle), + width: getSize("Width", body, html, computedStyle) + }; } - /** - * Creates the popper instance for the instance - */ - - - function createPopperInstance() { - var popperOptions = instance.props.popperOptions; - var _instance$popperChild = instance.popperChildren, - tooltip = _instance$popperChild.tooltip, - arrow = _instance$popperChild.arrow; - var preventOverflowModifier = getModifier(popperOptions, 'preventOverflow'); - - function applyMutations(data) { - if (instance.props.flip && !instance.props.flipOnUpdate) { - if (data.flipped) { - instance.popperInstance.options.placement = data.placement; - } - - setFlipModifierEnabled(instance.popperInstance.modifiers, false); - } // Apply all of the popper's attributes to the tootip node as well. - // Allows users to avoid using the .tippy-popper selector for themes. - - - tooltip.setAttribute(PLACEMENT_ATTRIBUTE, data.placement); - - if (data.attributes[OUT_OF_BOUNDARIES_ATTRIBUTE] !== false) { - tooltip.setAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE, ''); - } else { - tooltip.removeAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE); - } // Prevents a transition when changing placements (while tippy is visible) - // for scroll/resize updates - - - if (previousPlacement && previousPlacement !== data.placement && wasVisibleDuringPreviousUpdate) { - tooltip.style.transition = 'none'; - requestAnimationFrame(function () { - tooltip.style.transition = ''; - }); + var classCallCheck = function(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + var createClass = function() { + function defineProperties(target, props) { + for (var i2 = 0; i2 < props.length; i2++) { + var descriptor = props[i2]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); } - - previousPlacement = data.placement; - wasVisibleDuringPreviousUpdate = instance.state.isVisible; - var basicPlacement = getBasicPlacement(instance.popper); - var styles = tooltip.style; // Account for the `distance` offset - - styles.top = styles.bottom = styles.left = styles.right = ''; - styles[basicPlacement] = getOffsetDistanceInPx(instance.props.distance); - var padding = preventOverflowModifier && preventOverflowModifier.padding !== undefined ? preventOverflowModifier.padding : PADDING; - var isPaddingNumber = typeof padding === 'number'; - - var computedPadding = _extends({ - top: isPaddingNumber ? padding : padding.top, - bottom: isPaddingNumber ? padding : padding.bottom, - left: isPaddingNumber ? padding : padding.left, - right: isPaddingNumber ? padding : padding.right - }, !isPaddingNumber && padding); - - computedPadding[basicPlacement] = isPaddingNumber ? padding + instance.props.distance : (padding[basicPlacement] || 0) + instance.props.distance; - instance.popperInstance.modifiers.filter(function (m) { - return m.name === 'preventOverflow'; - })[0].padding = computedPadding; - } - - var config = _extends({ - placement: instance.props.placement - }, popperOptions, { - modifiers: _extends({}, popperOptions ? popperOptions.modifiers : {}, { - preventOverflow: _extends({ - boundariesElement: instance.props.boundary, - padding: PADDING - }, preventOverflowModifier), - arrow: _extends({ - element: arrow, - enabled: !!arrow - }, getModifier(popperOptions, 'arrow')), - flip: _extends({ - enabled: instance.props.flip, - // The tooltip is offset by 10px from the popper in CSS, - // we need to account for its distance - padding: instance.props.distance + PADDING, - behavior: instance.props.flipBehavior - }, getModifier(popperOptions, 'flip')), - offset: _extends({ - offset: instance.props.offset - }, getModifier(popperOptions, 'offset')) - }), - // This gets invoked when calling `.set()` and updating a popper - // instance dependency, since a new popper instance gets created - onCreate: function onCreate(data) { - applyMutations(data); - - if (popperOptions && popperOptions.onCreate) { - popperOptions.onCreate(data); - } - }, - // This gets invoked on initial create and show()/scroll/resize update. - // This is due to `afterPopperPositionUpdates` overwriting onCreate() - // with onUpdate() - onUpdate: function onUpdate(data) { - applyMutations(data); - - if (popperOptions && popperOptions.onUpdate) { - popperOptions.onUpdate(data); + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) + defineProperties(Constructor.prototype, protoProps); + if (staticProps) + defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + var defineProperty = function(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; + }; + var _extends$1 = Object.assign || function(target) { + for (var i2 = 1; i2 < arguments.length; i2++) { + var source = arguments[i2]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; } } + } + return target; + }; + function getClientRect(offsets) { + return _extends$1({}, offsets, { + right: offsets.left + offsets.width, + bottom: offsets.top + offsets.height }); - - instance.popperInstance = new __WEBPACK_IMPORTED_MODULE_0_popper_js__["a" /* default */](instance.reference, instance.popper, config); } - /** - * Mounts the tooltip to the DOM, callback to show tooltip is run **after** - * popper's position has updated - */ - - - function mount(callback) { - var shouldEnableListeners = !hasFollowCursorBehavior() && !(instance.props.followCursor === 'initial' && isUsingTouch); - - if (!instance.popperInstance) { - createPopperInstance(); - - if (!shouldEnableListeners) { - instance.popperInstance.disableEventListeners(); - } - } else { - if (!hasFollowCursorBehavior()) { - instance.popperInstance.scheduleUpdate(); - - if (shouldEnableListeners) { - instance.popperInstance.enableEventListeners(); - } - } - - setFlipModifierEnabled(instance.popperInstance.modifiers, instance.props.flip); - } // If the instance previously had followCursor behavior, it will be - // positioned incorrectly if triggered by `focus` afterwards. - // Update the reference back to the real DOM element - - - instance.popperInstance.reference = instance.reference; - var arrow = instance.popperChildren.arrow; - - if (hasFollowCursorBehavior()) { - if (arrow) { - arrow.style.margin = '0'; - } - - if (lastMouseMoveEvent) { - positionVirtualReferenceNearCursor(lastMouseMoveEvent); + function getBoundingClientRect(element) { + var rect = {}; + try { + if (isIE$1(10)) { + rect = element.getBoundingClientRect(); + var scrollTop = getScroll(element, "top"); + var scrollLeft = getScroll(element, "left"); + rect.top += scrollTop; + rect.left += scrollLeft; + rect.bottom += scrollTop; + rect.right += scrollLeft; + } else { + rect = element.getBoundingClientRect(); } - } else if (arrow) { - arrow.style.margin = ''; - } // Allow followCursor: 'initial' on touch devices - - - if (isUsingTouch && lastMouseMoveEvent && instance.props.followCursor === 'initial') { - positionVirtualReferenceNearCursor(lastMouseMoveEvent); - - if (arrow) { - arrow.style.margin = '0'; - } - } - - afterPopperPositionUpdates(instance.popperInstance, callback); - var appendTo = instance.props.appendTo; - currentParentNode = appendTo === 'parent' ? instance.reference.parentNode : evaluateValue(appendTo, [instance.reference]); - - if (!currentParentNode.contains(instance.popper)) { - currentParentNode.appendChild(instance.popper); - instance.props.onMount(instance); - instance.state.isMounted = true; + } catch (e) { } + var result = { + left: rect.left, + top: rect.top, + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + var sizes = element.nodeName === "HTML" ? getWindowSizes(element.ownerDocument) : {}; + var width = sizes.width || element.clientWidth || result.right - result.left; + var height = sizes.height || element.clientHeight || result.bottom - result.top; + var horizScrollbar = element.offsetWidth - width; + var vertScrollbar = element.offsetHeight - height; + if (horizScrollbar || vertScrollbar) { + var styles = getStyleComputedProperty(element); + horizScrollbar -= getBordersSize(styles, "x"); + vertScrollbar -= getBordersSize(styles, "y"); + result.width -= horizScrollbar; + result.height -= vertScrollbar; + } + return getClientRect(result); + } + function getOffsetRectRelativeToArbitraryNode(children, parent) { + var fixedPosition = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + var isIE102 = isIE$1(10); + var isHTML = parent.nodeName === "HTML"; + var childrenRect = getBoundingClientRect(children); + var parentRect = getBoundingClientRect(parent); + var scrollParent = getScrollParent(children); + var styles = getStyleComputedProperty(parent); + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); + if (fixedPosition && isHTML) { + parentRect.top = Math.max(parentRect.top, 0); + parentRect.left = Math.max(parentRect.left, 0); + } + var offsets = getClientRect({ + top: childrenRect.top - parentRect.top - borderTopWidth, + left: childrenRect.left - parentRect.left - borderLeftWidth, + width: childrenRect.width, + height: childrenRect.height + }); + offsets.marginTop = 0; + offsets.marginLeft = 0; + if (!isIE102 && isHTML) { + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); + offsets.top -= borderTopWidth - marginTop; + offsets.bottom -= borderTopWidth - marginTop; + offsets.left -= borderLeftWidth - marginLeft; + offsets.right -= borderLeftWidth - marginLeft; + offsets.marginTop = marginTop; + offsets.marginLeft = marginLeft; + } + if (isIE102 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== "BODY") { + offsets = includeScroll(offsets, parent); + } + return offsets; + } + function getViewportOffsetRectRelativeToArtbitraryNode(element) { + var excludeScroll = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + var html = element.ownerDocument.documentElement; + var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); + var width = Math.max(html.clientWidth, window.innerWidth || 0); + var height = Math.max(html.clientHeight, window.innerHeight || 0); + var scrollTop = !excludeScroll ? getScroll(html) : 0; + var scrollLeft = !excludeScroll ? getScroll(html, "left") : 0; + var offset2 = { + top: scrollTop - relativeOffset.top + relativeOffset.marginTop, + left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, + width, + height + }; + return getClientRect(offset2); } - /** - * Setup before show() is invoked (delays, etc.) - */ - - - function scheduleShow(event) { - clearDelayTimeouts(); - - if (instance.state.isVisible) { - return; - } // Is a delegate, create an instance for the child target - - - if (instance.props.target) { - return createDelegateChildTippy(event); - } - - isScheduledToShow = true; - - if (instance.props.wait) { - return instance.props.wait(instance, event); - } // If the tooltip has a delay, we need to be listening to the mousemove as - // soon as the trigger event is fired, so that it's in the correct position - // upon mount. - // Edge case: if the tooltip is still mounted, but then scheduleShow() is - // called, it causes a jump. - - - if (hasFollowCursorBehavior() && !instance.state.isMounted) { - document.addEventListener('mousemove', positionVirtualReferenceNearCursor); - } - - var delay = getValue(instance.props.delay, 0, defaultProps.delay); - - if (delay) { - showTimeoutId = setTimeout(function () { - show(); - }, delay); - } else { - show(); + function isFixed(element) { + var nodeName = element.nodeName; + if (nodeName === "BODY" || nodeName === "HTML") { + return false; } - } - /** - * Setup before hide() is invoked (delays, etc.) - */ - - - function scheduleHide() { - clearDelayTimeouts(); - - if (!instance.state.isVisible) { - return removeFollowCursorListener(); - } - - isScheduledToShow = false; - var delay = getValue(instance.props.delay, 1, defaultProps.delay); - - if (delay) { - hideTimeoutId = setTimeout(function () { - if (instance.state.isVisible) { - hide(); - } - }, delay); - } else { - // Fixes a `transitionend` problem when it fires 1 frame too - // late sometimes, we don't want hide() to be called. - animationFrameId = requestAnimationFrame(function () { - hide(); - }); + if (getStyleComputedProperty(element, "position") === "fixed") { + return true; } + var parentNode = getParentNode(element); + if (!parentNode) { + return false; + } + return isFixed(parentNode); } - /* ======================= 🔑 Public methods 🔑 ======================= */ - - /** - * Enables the instance to allow it to show or hide - */ - - - function enable() { - instance.state.isEnabled = true; - } - /** - * Disables the instance to disallow it to show or hide - */ - - - function disable() { - instance.state.isEnabled = false; - } - /** - * Clears pending timeouts related to the `delay` prop if any - */ - - - function clearDelayTimeouts() { - clearTimeout(showTimeoutId); - clearTimeout(hideTimeoutId); - cancelAnimationFrame(animationFrameId); + function getFixedPositionOffsetParent(element) { + if (!element || !element.parentElement || isIE$1()) { + return document.documentElement; + } + var el = element.parentElement; + while (el && getStyleComputedProperty(el, "transform") === "none") { + el = el.parentElement; + } + return el || document.documentElement; } - /** - * Sets new props for the instance and redraws the tooltip - */ - - - function set(options) { - // Backwards-compatible after TypeScript change - options = options || {}; - validateOptions(options, defaultProps); - var prevProps = instance.props; - var nextProps = evaluateProps(instance.reference, _extends({}, instance.props, options, { - ignoreAttributes: true - })); - nextProps.ignoreAttributes = hasOwnProperty(options, 'ignoreAttributes') ? options.ignoreAttributes || false : prevProps.ignoreAttributes; - instance.props = nextProps; - - if (hasOwnProperty(options, 'trigger') || hasOwnProperty(options, 'touchHold')) { - removeTriggersFromReference(); - addTriggersToReference(); - } - - if (hasOwnProperty(options, 'interactiveDebounce')) { - cleanupOldMouseListeners(); - debouncedOnMouseMove = debounce(onMouseMove, options.interactiveDebounce || 0); - } - - updatePopperElement(instance.popper, prevProps, nextProps); - instance.popperChildren = getChildren(instance.popper); - - if (instance.popperInstance) { - instance.popperInstance.update(); - - if (POPPER_INSTANCE_DEPENDENCIES.some(function (prop) { - return hasOwnProperty(options, prop) && options[prop] !== prevProps[prop]; - })) { - instance.popperInstance.destroy(); - createPopperInstance(); - - if (!instance.state.isVisible) { - instance.popperInstance.disableEventListeners(); - } - - if (instance.props.followCursor && lastMouseMoveEvent) { - positionVirtualReferenceNearCursor(lastMouseMoveEvent); + function getBoundaries(popper, reference, padding, boundariesElement) { + var fixedPosition = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false; + var boundaries = { top: 0, left: 0 }; + var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + if (boundariesElement === "viewport") { + boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); + } else { + var boundariesNode = void 0; + if (boundariesElement === "scrollParent") { + boundariesNode = getScrollParent(getParentNode(reference)); + if (boundariesNode.nodeName === "BODY") { + boundariesNode = popper.ownerDocument.documentElement; } + } else if (boundariesElement === "window") { + boundariesNode = popper.ownerDocument.documentElement; + } else { + boundariesNode = boundariesElement; + } + var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); + if (boundariesNode.nodeName === "HTML" && !isFixed(offsetParent)) { + var _getWindowSizes = getWindowSizes(popper.ownerDocument), height = _getWindowSizes.height, width = _getWindowSizes.width; + boundaries.top += offsets.top - offsets.marginTop; + boundaries.bottom = height + offsets.top; + boundaries.left += offsets.left - offsets.marginLeft; + boundaries.right = width + offsets.left; + } else { + boundaries = offsets; } } + padding = padding || 0; + var isPaddingNumber = typeof padding === "number"; + boundaries.left += isPaddingNumber ? padding : padding.left || 0; + boundaries.top += isPaddingNumber ? padding : padding.top || 0; + boundaries.right -= isPaddingNumber ? padding : padding.right || 0; + boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; + return boundaries; + } + function getArea(_ref) { + var width = _ref.width, height = _ref.height; + return width * height; + } + function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { + var padding = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : 0; + if (placement.indexOf("auto") === -1) { + return placement; + } + var boundaries = getBoundaries(popper, reference, padding, boundariesElement); + var rects = { + top: { + width: boundaries.width, + height: refRect.top - boundaries.top + }, + right: { + width: boundaries.right - refRect.right, + height: boundaries.height + }, + bottom: { + width: boundaries.width, + height: boundaries.bottom - refRect.bottom + }, + left: { + width: refRect.left - boundaries.left, + height: boundaries.height + } + }; + var sortedAreas = Object.keys(rects).map(function(key) { + return _extends$1({ + key + }, rects[key], { + area: getArea(rects[key]) + }); + }).sort(function(a, b) { + return b.area - a.area; + }); + var filteredAreas = sortedAreas.filter(function(_ref2) { + var width = _ref2.width, height = _ref2.height; + return width >= popper.clientWidth && height >= popper.clientHeight; + }); + var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; + var variation = placement.split("-")[1]; + return computedPlacement + (variation ? "-" + variation : ""); + } + function getReferenceOffsets(state, popper, reference) { + var fixedPosition = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; + var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); + } + function getOuterSizes(element) { + var window2 = element.ownerDocument.defaultView; + var styles = window2.getComputedStyle(element); + var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); + var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); + var result = { + width: element.offsetWidth + y, + height: element.offsetHeight + x + }; + return result; } - /** - * Shortcut for .set({ content: newContent }) - */ - - - function setContent$$1(content) { - set({ - content: content + function getOppositePlacement(placement) { + var hash = { left: "right", right: "left", bottom: "top", top: "bottom" }; + return placement.replace(/left|right|bottom|top/g, function(matched) { + return hash[matched]; }); } - /** - * Shows the tooltip - */ - - - function show() { - var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue(instance.props.duration, 0, defaultProps.duration[1]); - - if (instance.state.isDestroyed || !instance.state.isEnabled || isUsingTouch && !instance.props.touch) { - return; - } // Standardize `disabled` behavior across browsers. - // Firefox allows events on disabled elements, but Chrome doesn't. - // Using a wrapper element (i.e. ) is recommended. - - - if (instance.reference.hasAttribute('disabled')) { - return; + function getPopperOffsets(popper, referenceOffsets, placement) { + placement = placement.split("-")[0]; + var popperRect = getOuterSizes(popper); + var popperOffsets = { + width: popperRect.width, + height: popperRect.height + }; + var isHoriz = ["right", "left"].indexOf(placement) !== -1; + var mainSide = isHoriz ? "top" : "left"; + var secondarySide = isHoriz ? "left" : "top"; + var measurement = isHoriz ? "height" : "width"; + var secondaryMeasurement = !isHoriz ? "height" : "width"; + popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; + if (placement === secondarySide) { + popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; + } else { + popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; } - - if (instance.props.onShow(instance) === false) { - return; + return popperOffsets; + } + function find(arr, check) { + if (Array.prototype.find) { + return arr.find(check); } - - instance.popper.style.visibility = 'visible'; - instance.state.isVisible = true; - - if (instance.props.interactive) { - instance.reference.classList.add(ACTIVE_CLASS); - } - - var transitionableElements = getTransitionableElements(); // Prevent a transition if the popper is at the opposite placement - - setTransitionDuration(transitionableElements.concat(instance.popper), 0); - mount(function () { - if (!instance.state.isVisible) { - return; - } // Double update will apply correct mutations - - - if (!hasFollowCursorBehavior()) { - instance.popperInstance.update(); - } - - if (instance.popperChildren.backdrop) { - instance.popperChildren.content.style.transitionDelay = Math.round(duration / 12) + 'ms'; + return arr.filter(check)[0]; + } + function findIndex(arr, prop, value) { + if (Array.prototype.findIndex) { + return arr.findIndex(function(cur) { + return cur[prop] === value; + }); + } + var match = find(arr, function(obj) { + return obj[prop] === value; + }); + return arr.indexOf(match); + } + function runModifiers(modifiers2, data, ends) { + var modifiersToRun = ends === void 0 ? modifiers2 : modifiers2.slice(0, findIndex(modifiers2, "name", ends)); + modifiersToRun.forEach(function(modifier) { + if (modifier["function"]) { + console.warn("`modifier.function` is deprecated, use `modifier.fn`!"); } - - if (instance.props.sticky) { - makeSticky(); + var fn = modifier["function"] || modifier.fn; + if (modifier.enabled && isFunction(fn)) { + data.offsets.popper = getClientRect(data.offsets.popper); + data.offsets.reference = getClientRect(data.offsets.reference); + data = fn(data, modifier); } - - setTransitionDuration([instance.popper], props.updateDuration); - setTransitionDuration(transitionableElements, duration); - setVisibilityState(transitionableElements, 'visible'); - onTransitionedIn(duration, function () { - if (instance.props.aria) { - instance.reference.setAttribute("aria-".concat(instance.props.aria), instance.popper.id); - } - - instance.props.onShown(instance); - instance.state.isShown = true; - }); }); + return data; } - /** - * Hides the tooltip - */ - - - function hide() { - var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue(instance.props.duration, 1, defaultProps.duration[1]); - - if (instance.state.isDestroyed || !instance.state.isEnabled) { + function update() { + if (this.state.isDestroyed) { return; } - - if (instance.props.onHide(instance) === false) { - return; + var data = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: false, + offsets: {} + }; + data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); + data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); + data.originalPlacement = data.placement; + data.positionFixed = this.options.positionFixed; + data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); + data.offsets.popper.position = this.options.positionFixed ? "fixed" : "absolute"; + data = runModifiers(this.modifiers, data); + if (!this.state.isCreated) { + this.state.isCreated = true; + this.options.onCreate(data); + } else { + this.options.onUpdate(data); } - - instance.popper.style.visibility = 'hidden'; - instance.state.isVisible = false; - instance.state.isShown = false; - wasVisibleDuringPreviousUpdate = false; - - if (instance.props.interactive) { - instance.reference.classList.remove(ACTIVE_CLASS); - } - - var transitionableElements = getTransitionableElements(); - setTransitionDuration(transitionableElements, duration); - setVisibilityState(transitionableElements, 'hidden'); - onTransitionedOut(duration, function () { - if (!isScheduledToShow) { - removeFollowCursorListener(); + } + function isModifierEnabled(modifiers2, modifierName) { + return modifiers2.some(function(_ref) { + var name = _ref.name, enabled = _ref.enabled; + return enabled && name === modifierName; + }); + } + function getSupportedPropertyName(property) { + var prefixes = [false, "ms", "Webkit", "Moz", "O"]; + var upperProp = property.charAt(0).toUpperCase() + property.slice(1); + for (var i2 = 0; i2 < prefixes.length; i2++) { + var prefix = prefixes[i2]; + var toCheck = prefix ? "" + prefix + upperProp : property; + if (typeof document.body.style[toCheck] !== "undefined") { + return toCheck; } - - if (instance.props.aria) { - instance.reference.removeAttribute("aria-".concat(instance.props.aria)); + } + return null; + } + function destroy() { + this.state.isDestroyed = true; + if (isModifierEnabled(this.modifiers, "applyStyle")) { + this.popper.removeAttribute("x-placement"); + this.popper.style.position = ""; + this.popper.style.top = ""; + this.popper.style.left = ""; + this.popper.style.right = ""; + this.popper.style.bottom = ""; + this.popper.style.willChange = ""; + this.popper.style[getSupportedPropertyName("transform")] = ""; + } + this.disableEventListeners(); + if (this.options.removeOnDestroy) { + this.popper.parentNode.removeChild(this.popper); + } + return this; + } + function getWindow(element) { + var ownerDocument = element.ownerDocument; + return ownerDocument ? ownerDocument.defaultView : window; + } + function attachToScrollParents(scrollParent, event, callback, scrollParents) { + var isBody = scrollParent.nodeName === "BODY"; + var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; + target.addEventListener(event, callback, { passive: true }); + if (!isBody) { + attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); + } + scrollParents.push(target); + } + function setupEventListeners(reference, options, state, updateBound) { + state.updateBound = updateBound; + getWindow(reference).addEventListener("resize", state.updateBound, { passive: true }); + var scrollElement = getScrollParent(reference); + attachToScrollParents(scrollElement, "scroll", state.updateBound, state.scrollParents); + state.scrollElement = scrollElement; + state.eventsEnabled = true; + return state; + } + function enableEventListeners() { + if (!this.state.eventsEnabled) { + this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); + } + } + function removeEventListeners(reference, state) { + getWindow(reference).removeEventListener("resize", state.updateBound); + state.scrollParents.forEach(function(target) { + target.removeEventListener("scroll", state.updateBound); + }); + state.updateBound = null; + state.scrollParents = []; + state.scrollElement = null; + state.eventsEnabled = false; + return state; + } + function disableEventListeners() { + if (this.state.eventsEnabled) { + cancelAnimationFrame(this.scheduleUpdate); + this.state = removeEventListeners(this.reference, this.state); + } + } + function isNumeric(n) { + return n !== "" && !isNaN(parseFloat(n)) && isFinite(n); + } + function setStyles(element, styles) { + Object.keys(styles).forEach(function(prop) { + var unit = ""; + if (["width", "height", "top", "right", "bottom", "left"].indexOf(prop) !== -1 && isNumeric(styles[prop])) { + unit = "px"; } - - instance.popperInstance.disableEventListeners(); - instance.popperInstance.options.placement = instance.props.placement; - currentParentNode.removeChild(instance.popper); - instance.props.onHidden(instance); - instance.state.isMounted = false; + element.style[prop] = styles[prop] + unit; }); } - /** - * Destroys the tooltip - */ - - - function destroy(destroyTargetInstances) { - if (instance.state.isDestroyed) { - return; - } // If the popper is currently mounted to the DOM, we want to ensure it gets - // hidden and unmounted instantly upon destruction - - - if (instance.state.isMounted) { - hide(0); - } - - removeTriggersFromReference(); - delete instance.reference._tippy; - - if (instance.props.target && destroyTargetInstances) { - arrayFrom(instance.reference.querySelectorAll(instance.props.target)).forEach(function (child) { - if (child._tippy) { - child._tippy.destroy(); - } - }); - } - - if (instance.popperInstance) { - instance.popperInstance.destroy(); + function setAttributes(element, attributes) { + Object.keys(attributes).forEach(function(prop) { + var value = attributes[prop]; + if (value !== false) { + element.setAttribute(prop, attributes[prop]); + } else { + element.removeAttribute(prop); + } + }); + } + function applyStyle(data) { + setStyles(data.instance.popper, data.styles); + setAttributes(data.instance.popper, data.attributes); + if (data.arrowElement && Object.keys(data.arrowStyles).length) { + setStyles(data.arrowElement, data.arrowStyles); } - - instance.state.isDestroyed = true; + return data; } -} - -/** - * Groups an array of instances by taking control of their props during - * certain lifecycles. - */ - -function group(instances) { - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$delay = _ref.delay, - delay = _ref$delay === void 0 ? instances[0].props.delay : _ref$delay, - _ref$duration = _ref.duration, - duration = _ref$duration === void 0 ? 0 : _ref$duration; - - // Already grouped. Cannot group instances more than once (yet) or stale lifecycle - // closures will be invoked, causing a stack overflow - if (instances.some(function (instance) { - return hasOwnProperty(instance, '_originalProps'); - })) { - return; - } - - var isAnyTippyOpen = false; - instances.forEach(function (instance) { - instance._originalProps = _extends({}, instance.props); - }); - - function setIsAnyTippyOpen(value) { - isAnyTippyOpen = value; - updateInstances(); + function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { + var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); + var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); + popper.setAttribute("x-placement", placement); + setStyles(popper, { position: options.positionFixed ? "fixed" : "absolute" }); + return options; + } + function getRoundedOffsets(data, shouldRound) { + var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var round = Math.round, floor = Math.floor; + var noRound = function noRound2(v) { + return v; + }; + var referenceWidth = round(reference.width); + var popperWidth = round(popper.width); + var isVertical = ["left", "right"].indexOf(data.placement) !== -1; + var isVariation = data.placement.indexOf("-") !== -1; + var sameWidthParity = referenceWidth % 2 === popperWidth % 2; + var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; + var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; + var verticalToInteger = !shouldRound ? noRound : round; + return { + left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), + top: verticalToInteger(popper.top), + bottom: verticalToInteger(popper.bottom), + right: horizontalToInteger(popper.right) + }; } - - function onShow(instance) { - instance._originalProps.onShow(instance); - - instances.forEach(function (instance) { - instance.set({ - duration: duration - }); - instance.hide(); + var isFirefox = isBrowser$1 && /Firefox/i.test(navigator.userAgent); + function computeStyle(data, options) { + var x = options.x, y = options.y; + var popper = data.offsets.popper; + var legacyGpuAccelerationOption = find(data.instance.modifiers, function(modifier) { + return modifier.name === "applyStyle"; + }).gpuAcceleration; + if (legacyGpuAccelerationOption !== void 0) { + console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!"); + } + var gpuAcceleration = legacyGpuAccelerationOption !== void 0 ? legacyGpuAccelerationOption : options.gpuAcceleration; + var offsetParent = getOffsetParent(data.instance.popper); + var offsetParentRect = getBoundingClientRect(offsetParent); + var styles = { + position: popper.position + }; + var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); + var sideA = x === "bottom" ? "top" : "bottom"; + var sideB = y === "right" ? "left" : "right"; + var prefixedProperty = getSupportedPropertyName("transform"); + var left = void 0, top = void 0; + if (sideA === "bottom") { + if (offsetParent.nodeName === "HTML") { + top = -offsetParent.clientHeight + offsets.bottom; + } else { + top = -offsetParentRect.height + offsets.bottom; + } + } else { + top = offsets.top; + } + if (sideB === "right") { + if (offsetParent.nodeName === "HTML") { + left = -offsetParent.clientWidth + offsets.right; + } else { + left = -offsetParentRect.width + offsets.right; + } + } else { + left = offsets.left; + } + if (gpuAcceleration && prefixedProperty) { + styles[prefixedProperty] = "translate3d(" + left + "px, " + top + "px, 0)"; + styles[sideA] = 0; + styles[sideB] = 0; + styles.willChange = "transform"; + } else { + var invertTop = sideA === "bottom" ? -1 : 1; + var invertLeft = sideB === "right" ? -1 : 1; + styles[sideA] = top * invertTop; + styles[sideB] = left * invertLeft; + styles.willChange = sideA + ", " + sideB; + } + var attributes = { + "x-placement": data.placement + }; + data.attributes = _extends$1({}, attributes, data.attributes); + data.styles = _extends$1({}, styles, data.styles); + data.arrowStyles = _extends$1({}, data.offsets.arrow, data.arrowStyles); + return data; + } + function isModifierRequired(modifiers2, requestingName, requestedName) { + var requesting = find(modifiers2, function(_ref) { + var name = _ref.name; + return name === requestingName; }); - setIsAnyTippyOpen(true); - } - - function onHide(instance) { - instance._originalProps.onHide(instance); - - setIsAnyTippyOpen(false); - } - - function onShown(instance) { - instance._originalProps.onShown(instance); - - instance.set({ - duration: instance._originalProps.duration + var isRequired = !!requesting && modifiers2.some(function(modifier) { + return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; }); + if (!isRequired) { + var _requesting = "`" + requestingName + "`"; + var requested = "`" + requestedName + "`"; + console.warn(requested + " modifier is required by " + _requesting + " modifier in order to work, be sure to include it before " + _requesting + "!"); + } + return isRequired; } - - function updateInstances() { - instances.forEach(function (instance) { - instance.set({ - onShow: onShow, - onShown: onShown, - onHide: onHide, - delay: isAnyTippyOpen ? [0, Array.isArray(delay) ? delay[1] : delay] : delay, - duration: isAnyTippyOpen ? duration : instance._originalProps.duration - }); + function arrow(data, options) { + var _data$offsets$arrow; + if (!isModifierRequired(data.instance.modifiers, "arrow", "keepTogether")) { + return data; + } + var arrowElement = options.element; + if (typeof arrowElement === "string") { + arrowElement = data.instance.popper.querySelector(arrowElement); + if (!arrowElement) { + return data; + } + } else { + if (!data.instance.popper.contains(arrowElement)) { + console.warn("WARNING: `arrow.element` must be child of its popper element!"); + return data; + } + } + var placement = data.placement.split("-")[0]; + var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var isVertical = ["left", "right"].indexOf(placement) !== -1; + var len = isVertical ? "height" : "width"; + var sideCapitalized = isVertical ? "Top" : "Left"; + var side = sideCapitalized.toLowerCase(); + var altSide = isVertical ? "left" : "top"; + var opSide = isVertical ? "bottom" : "right"; + var arrowElementSize = getOuterSizes(arrowElement)[len]; + if (reference[opSide] - arrowElementSize < popper[side]) { + data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); + } + if (reference[side] + arrowElementSize > popper[opSide]) { + data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; + } + data.offsets.popper = getClientRect(data.offsets.popper); + var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; + var css = getStyleComputedProperty(data.instance.popper); + var popperMarginSide = parseFloat(css["margin" + sideCapitalized], 10); + var popperBorderSide = parseFloat(css["border" + sideCapitalized + "Width"], 10); + var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; + sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); + data.arrowElement = arrowElement; + data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ""), _data$offsets$arrow); + return data; + } + function getOppositeVariation(variation) { + if (variation === "end") { + return "start"; + } else if (variation === "start") { + return "end"; + } + return variation; + } + var placements = ["auto-start", "auto", "auto-end", "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-end", "bottom", "bottom-start", "left-end", "left", "left-start"]; + var validPlacements = placements.slice(3); + function clockwise(placement) { + var counter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + var index = validPlacements.indexOf(placement); + var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); + return counter ? arr.reverse() : arr; + } + var BEHAVIORS = { + FLIP: "flip", + CLOCKWISE: "clockwise", + COUNTERCLOCKWISE: "counterclockwise" + }; + function flip(data, options) { + if (isModifierEnabled(data.instance.modifiers, "inner")) { + return data; + } + if (data.flipped && data.placement === data.originalPlacement) { + return data; + } + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); + var placement = data.placement.split("-")[0]; + var placementOpposite = getOppositePlacement(placement); + var variation = data.placement.split("-")[1] || ""; + var flipOrder = []; + switch (options.behavior) { + case BEHAVIORS.FLIP: + flipOrder = [placement, placementOpposite]; + break; + case BEHAVIORS.CLOCKWISE: + flipOrder = clockwise(placement); + break; + case BEHAVIORS.COUNTERCLOCKWISE: + flipOrder = clockwise(placement, true); + break; + default: + flipOrder = options.behavior; + } + flipOrder.forEach(function(step, index) { + if (placement !== step || flipOrder.length === index + 1) { + return data; + } + placement = data.placement.split("-")[0]; + placementOpposite = getOppositePlacement(placement); + var popperOffsets = data.offsets.popper; + var refOffsets = data.offsets.reference; + var floor = Math.floor; + var overlapsRef = placement === "left" && floor(popperOffsets.right) > floor(refOffsets.left) || placement === "right" && floor(popperOffsets.left) < floor(refOffsets.right) || placement === "top" && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === "bottom" && floor(popperOffsets.top) < floor(refOffsets.bottom); + var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); + var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); + var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); + var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); + var overflowsBoundaries = placement === "left" && overflowsLeft || placement === "right" && overflowsRight || placement === "top" && overflowsTop || placement === "bottom" && overflowsBottom; + var isVertical = ["top", "bottom"].indexOf(placement) !== -1; + var flippedVariation = !!options.flipVariations && (isVertical && variation === "start" && overflowsLeft || isVertical && variation === "end" && overflowsRight || !isVertical && variation === "start" && overflowsTop || !isVertical && variation === "end" && overflowsBottom); + if (overlapsRef || overflowsBoundaries || flippedVariation) { + data.flipped = true; + if (overlapsRef || overflowsBoundaries) { + placement = flipOrder[index + 1]; + } + if (flippedVariation) { + variation = getOppositeVariation(variation); + } + data.placement = placement + (variation ? "-" + variation : ""); + data.offsets.popper = _extends$1({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); + data = runModifiers(data.instance.modifiers, data, "flip"); + } }); + return data; } - - updateInstances(); -} - -var globalEventListenersBound = false; -/** - * Exported module - */ - -function tippy(targets, options) { - validateOptions(options || {}, defaultProps); - - if (!globalEventListenersBound) { - bindGlobalEventListeners(); - globalEventListenersBound = true; - } - - var props = _extends({}, defaultProps, options); // If they are specifying a virtual positioning reference, we need to polyfill - // some native DOM props - - - if (isBareVirtualElement(targets)) { - polyfillElementPrototypeProperties(targets); - } - - var instances = getArrayOfElements(targets).reduce(function (acc, reference) { - var instance = reference && createTippy(reference, props); - - if (instance) { - acc.push(instance); - } - - return acc; - }, []); - return isSingular(targets) ? instances[0] : instances; -} -/** - * Static props - */ - - -tippy.version = version; -tippy.defaults = defaultProps; -/** - * Static methods - */ - -tippy.setDefaults = function (partialDefaults) { - Object.keys(partialDefaults).forEach(function (key) { - // @ts-ignore - defaultProps[key] = partialDefaults[key]; - }); -}; - -tippy.hideAll = hideAll; -tippy.group = group; -/** - * Auto-init tooltips for elements with a `data-tippy="..."` attribute - */ - -function autoInit() { - arrayFrom(document.querySelectorAll('[data-tippy]')).forEach(function (el) { - var content = el.getAttribute('data-tippy'); - - if (content) { - tippy(el, { - content: content - }); + function keepTogether(data) { + var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var placement = data.placement.split("-")[0]; + var floor = Math.floor; + var isVertical = ["top", "bottom"].indexOf(placement) !== -1; + var side = isVertical ? "right" : "bottom"; + var opSide = isVertical ? "left" : "top"; + var measurement = isVertical ? "width" : "height"; + if (popper[side] < floor(reference[opSide])) { + data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; } - }); -} - -if (isBrowser) { - setTimeout(autoInit); -} - -/* harmony default export */ __webpack_exports__["a"] = tippy; -//# sourceMappingURL=index.js.map - - -/***/ }), -/* 27 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCalendarControls_vue__ = __webpack_require__(57); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6fbf1812_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCalendarControls_vue__ = __webpack_require__(170); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(122) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCalendarControls_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6fbf1812_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCalendarControls_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiCalendarControls.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiCalendarControls.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-6fbf1812", Component.options) - } else { - hotAPI.reload("data-v-6fbf1812", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 28 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCalendarMonth_vue__ = __webpack_require__(58); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_e023bc58_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCalendarMonth_vue__ = __webpack_require__(186); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(138) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCalendarMonth_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_e023bc58_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCalendarMonth_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiCalendarMonth.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiCalendarMonth.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-e023bc58", Component.options) - } else { - hotAPI.reload("data-v-e023bc58", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 29 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_modality__ = __webpack_require__(94); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_modality___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__helpers_modality__); - - -/***/ }), -/* 30 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_deepmerge__ = __webpack_require__(96); -/* harmony export (immutable) */ __webpack_exports__["a"] = configure; -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - - - -function configure(Component, props) { - Object.keys(props).forEach(function (propName) { - if (Component.props[propName] === undefined) { - return; - } - - var defaultValue = Component.props[propName].default; - - if ((typeof defaultValue === 'undefined' ? 'undefined' : _typeof(defaultValue)) === 'object') { - Component.props[propName].default = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_deepmerge__["a" /* default */])(defaultValue, props[propName]); - return; - } - - Component.props[propName].default = props[propName]; + if (popper[opSide] > floor(reference[side])) { + data.offsets.popper[opSide] = floor(reference[side]); + } + return data; + } + function toValue(str, measurement, popperOffsets, referenceOffsets) { + var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); + var value = +split[1]; + var unit = split[2]; + if (!value) { + return str; + } + if (unit.indexOf("%") === 0) { + var element = void 0; + switch (unit) { + case "%p": + element = popperOffsets; + break; + case "%": + case "%r": + default: + element = referenceOffsets; + } + var rect = getClientRect(element); + return rect[measurement] / 100 * value; + } else if (unit === "vh" || unit === "vw") { + var size = void 0; + if (unit === "vh") { + size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + } else { + size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); + } + return size / 100 * value; + } else { + return value; + } + } + function parseOffset(offset2, popperOffsets, referenceOffsets, basePlacement) { + var offsets = [0, 0]; + var useHeight = ["right", "left"].indexOf(basePlacement) !== -1; + var fragments = offset2.split(/(\+|\-)/).map(function(frag) { + return frag.trim(); }); -} - -/***/ }), -/* 31 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiAlert_vue__ = __webpack_require__(52); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0dfa6b64_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiAlert_vue__ = __webpack_require__(147); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(99) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiAlert_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0dfa6b64_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiAlert_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiAlert.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiAlert.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-0dfa6b64", Component.options) - } else { - hotAPI.reload("data-v-0dfa6b64", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 32 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiAutocomplete_vue__ = __webpack_require__(53); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7ede18e6_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiAutocomplete_vue__ = __webpack_require__(176); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(128) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiAutocomplete_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7ede18e6_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiAutocomplete_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiAutocomplete.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiAutocomplete.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-7ede18e6", Component.options) - } else { - hotAPI.reload("data-v-7ede18e6", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 33 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCalendar_vue__ = __webpack_require__(56); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_10feac3c_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCalendar_vue__ = __webpack_require__(149); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(101) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCalendar_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_10feac3c_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCalendar_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiCalendar.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiCalendar.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-10feac3c", Component.options) - } else { - hotAPI.reload("data-v-10feac3c", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 34 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCheckboxGroup_vue__ = __webpack_require__(61); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7a92836e_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCheckboxGroup_vue__ = __webpack_require__(173); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(125) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCheckboxGroup_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7a92836e_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCheckboxGroup_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiCheckboxGroup.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiCheckboxGroup.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-7a92836e", Component.options) - } else { - hotAPI.reload("data-v-7a92836e", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 35 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCollapsible_vue__ = __webpack_require__(63); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ca040308_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCollapsible_vue__ = __webpack_require__(185); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(137) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCollapsible_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ca040308_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCollapsible_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiCollapsible.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiCollapsible.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-ca040308", Component.options) - } else { - hotAPI.reload("data-v-ca040308", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 36 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiConfirm_vue__ = __webpack_require__(64); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_4f7f2732_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiConfirm_vue__ = __webpack_require__(160); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(112) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiConfirm_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_4f7f2732_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiConfirm_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiConfirm.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiConfirm.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-4f7f2732", Component.options) - } else { - hotAPI.reload("data-v-4f7f2732", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 37 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiDatepicker_vue__ = __webpack_require__(65); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_74517e3a_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiDatepicker_vue__ = __webpack_require__(171); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(123) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiDatepicker_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_74517e3a_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiDatepicker_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiDatepicker.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiDatepicker.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-74517e3a", Component.options) - } else { - hotAPI.reload("data-v-74517e3a", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 38 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiFab_vue__ = __webpack_require__(67); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_4a69660e_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiFab_vue__ = __webpack_require__(159); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(111) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiFab_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_4a69660e_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiFab_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiFab.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiFab.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-4a69660e", Component.options) - } else { - hotAPI.reload("data-v-4a69660e", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 39 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiFileupload_vue__ = __webpack_require__(68); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_965da30a_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiFileupload_vue__ = __webpack_require__(178); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(130) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiFileupload_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_965da30a_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiFileupload_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiFileupload.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiFileupload.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-965da30a", Component.options) - } else { - hotAPI.reload("data-v-965da30a", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 40 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiMenu_vue__ = __webpack_require__(72); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_41a170dd_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiMenu_vue__ = __webpack_require__(157); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(109) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiMenu_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_41a170dd_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiMenu_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiMenu.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiMenu.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-41a170dd", Component.options) - } else { - hotAPI.reload("data-v-41a170dd", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 41 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiPreloader_vue__ = __webpack_require__(76); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_32cd8368_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiPreloader_vue__ = __webpack_require__(154); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(106) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiPreloader_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_32cd8368_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiPreloader_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiPreloader.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiPreloader.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-32cd8368", Component.options) - } else { - hotAPI.reload("data-v-32cd8368", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 42 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiRadioGroup_vue__ = __webpack_require__(80); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0686b3c2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiRadioGroup_vue__ = __webpack_require__(145); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(97) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiRadioGroup_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0686b3c2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiRadioGroup_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiRadioGroup.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiRadioGroup.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-0686b3c2", Component.options) - } else { - hotAPI.reload("data-v-0686b3c2", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 43 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSelect_vue__ = __webpack_require__(82); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_54cff87a_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSelect_vue__ = __webpack_require__(162); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(114) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSelect_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_54cff87a_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSelect_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiSelect.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiSelect.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-54cff87a", Component.options) - } else { - hotAPI.reload("data-v-54cff87a", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 44 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSlider_vue__ = __webpack_require__(84); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0d1a7c42_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSlider_vue__ = __webpack_require__(146); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(98) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSlider_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0d1a7c42_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSlider_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiSlider.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiSlider.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-0d1a7c42", Component.options) - } else { - hotAPI.reload("data-v-0d1a7c42", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 45 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSnackbarContainer_vue__ = __webpack_require__(86); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0e0792ee_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSnackbarContainer_vue__ = __webpack_require__(148); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(100) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSnackbarContainer_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0e0792ee_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSnackbarContainer_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiSnackbarContainer.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiSnackbarContainer.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-0e0792ee", Component.options) - } else { - hotAPI.reload("data-v-0e0792ee", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 46 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSwitch_vue__ = __webpack_require__(87); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ba5ec29c_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSwitch_vue__ = __webpack_require__(184); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(136) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSwitch_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ba5ec29c_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSwitch_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiSwitch.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiSwitch.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-ba5ec29c", Component.options) - } else { - hotAPI.reload("data-v-ba5ec29c", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 47 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTab_vue__ = __webpack_require__(88); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_813aeaf2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTab_vue__ = __webpack_require__(177); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(129) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTab_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_813aeaf2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTab_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiTab.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiTab.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-813aeaf2", Component.options) - } else { - hotAPI.reload("data-v-813aeaf2", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 48 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTabs_vue__ = __webpack_require__(90); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_309a677c_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTabs_vue__ = __webpack_require__(153); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(105) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTabs_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_309a677c_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTabs_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiTabs.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiTabs.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-309a677c", Component.options) - } else { - hotAPI.reload("data-v-309a677c", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 49 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTextbox_vue__ = __webpack_require__(91); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ac038220_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTextbox_vue__ = __webpack_require__(181); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(133) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTextbox_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ac038220_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTextbox_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiTextbox.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiTextbox.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-ac038220", Component.options) - } else { - hotAPI.reload("data-v-ac038220", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 50 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiToolbar_vue__ = __webpack_require__(92); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_b19a1326_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiToolbar_vue__ = __webpack_require__(182); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(134) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiToolbar_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_b19a1326_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiToolbar_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiToolbar.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiToolbar.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-b19a1326", Component.options) - } else { - hotAPI.reload("data-v-b19a1326", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - Autosize 3.0.20 - license: MIT - http://www.jacklmoore.com/autosize -*/ -(function (global, factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), - __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? - (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { - factory(exports, module); - } else { - var mod = { - exports: {} - }; - factory(mod.exports, mod); - global.autosize = mod.exports; - } -})(this, function (exports, module) { - 'use strict'; - - var map = typeof Map === "function" ? new Map() : (function () { - var keys = []; - var values = []; - - return { - has: function has(key) { - return keys.indexOf(key) > -1; - }, - get: function get(key) { - return values[keys.indexOf(key)]; - }, - set: function set(key, value) { - if (keys.indexOf(key) === -1) { - keys.push(key); - values.push(value); - } - }, - 'delete': function _delete(key) { - var index = keys.indexOf(key); - if (index > -1) { - keys.splice(index, 1); - values.splice(index, 1); - } - } - }; - })(); - - var createEvent = function createEvent(name) { - return new Event(name, { bubbles: true }); - }; - try { - new Event('test'); - } catch (e) { - // IE does not support `new Event()` - createEvent = function (name) { - var evt = document.createEvent('Event'); - evt.initEvent(name, true, false); - return evt; - }; - } - - function assign(ta) { - if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return; - - var heightOffset = null; - var clientWidth = ta.clientWidth; - var cachedHeight = null; - - function init() { - var style = window.getComputedStyle(ta, null); - - if (style.resize === 'vertical') { - ta.style.resize = 'none'; - } else if (style.resize === 'both') { - ta.style.resize = 'horizontal'; - } - - if (style.boxSizing === 'content-box') { - heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); - } else { - heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); - } - // Fix when a textarea is not on document body and heightOffset is Not a Number - if (isNaN(heightOffset)) { - heightOffset = 0; - } - - update(); - } - - function changeOverflow(value) { - { - // Chrome/Safari-specific fix: - // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space - // made available by removing the scrollbar. The following forces the necessary text reflow. - var width = ta.style.width; - ta.style.width = '0px'; - // Force reflow: - /* jshint ignore:start */ - ta.offsetWidth; - /* jshint ignore:end */ - ta.style.width = width; - } - - ta.style.overflowY = value; - } - - function getParentOverflows(el) { - var arr = []; - - while (el && el.parentNode && el.parentNode instanceof Element) { - if (el.parentNode.scrollTop) { - arr.push({ - node: el.parentNode, - scrollTop: el.parentNode.scrollTop - }); - } - el = el.parentNode; - } - - return arr; - } - - function resize() { - var originalHeight = ta.style.height; - var overflows = getParentOverflows(ta); - var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240) - - ta.style.height = 'auto'; - - var endHeight = ta.scrollHeight + heightOffset; - - if (ta.scrollHeight === 0) { - // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. - ta.style.height = originalHeight; - return; - } - - ta.style.height = endHeight + 'px'; - - // used to check if an update is actually necessary on window.resize - clientWidth = ta.clientWidth; - - // prevents scroll-position jumping - overflows.forEach(function (el) { - el.node.scrollTop = el.scrollTop; - }); - - if (docTop) { - document.documentElement.scrollTop = docTop; - } - } - - function update() { - resize(); - - var styleHeight = Math.round(parseFloat(ta.style.height)); - var computed = window.getComputedStyle(ta, null); - var actualHeight = Math.round(parseFloat(computed.height)); - - // The actual height not matching the style height (set via the resize method) indicates that - // the max-height has been exceeded, in which case the overflow should be set to visible. - if (actualHeight !== styleHeight) { - if (computed.overflowY !== 'visible') { - changeOverflow('visible'); - resize(); - actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height)); - } - } else { - // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands. - if (computed.overflowY !== 'hidden') { - changeOverflow('hidden'); - resize(); - actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height)); - } - } - - if (cachedHeight !== actualHeight) { - cachedHeight = actualHeight; - var evt = createEvent('autosize:resized'); - try { - ta.dispatchEvent(evt); - } catch (err) { - // Firefox will throw an error on dispatchEvent for a detached element - // https://bugzilla.mozilla.org/show_bug.cgi?id=889376 - } - } - } - - var pageResize = function pageResize() { - if (ta.clientWidth !== clientWidth) { - update(); - } - }; - - var destroy = (function (style) { - window.removeEventListener('resize', pageResize, false); - ta.removeEventListener('input', update, false); - ta.removeEventListener('keyup', update, false); - ta.removeEventListener('autosize:destroy', destroy, false); - ta.removeEventListener('autosize:update', update, false); - - Object.keys(style).forEach(function (key) { - ta.style[key] = style[key]; - }); - - map['delete'](ta); - }).bind(ta, { - height: ta.style.height, - resize: ta.style.resize, - overflowY: ta.style.overflowY, - overflowX: ta.style.overflowX, - wordWrap: ta.style.wordWrap - }); - - ta.addEventListener('autosize:destroy', destroy, false); - - // IE9 does not fire onpropertychange or oninput for deletions, - // so binding to onkeyup to catch most of those events. - // There is no way that I know of to detect something like 'cut' in IE9. - if ('onpropertychange' in ta && 'oninput' in ta) { - ta.addEventListener('keyup', update, false); - } - - window.addEventListener('resize', pageResize, false); - ta.addEventListener('input', update, false); - ta.addEventListener('autosize:update', update, false); - ta.style.overflowX = 'hidden'; - ta.style.wordWrap = 'break-word'; - - map.set(ta, { - destroy: destroy, - update: update - }); - - init(); - } - - function destroy(ta) { - var methods = map.get(ta); - if (methods) { - methods.destroy(); - } - } - - function update(ta) { - var methods = map.get(ta); - if (methods) { - methods.update(); - } - } - - var autosize = null; - - // Do nothing in Node.js environment and IE8 (or lower) - if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { - autosize = function (el) { - return el; - }; - autosize.destroy = function (el) { - return el; - }; - autosize.update = function (el) { - return el; - }; - } else { - autosize = function (el, options) { - if (el) { - Array.prototype.forEach.call(el.length ? el : [el], function (x) { - return assign(x, options); - }); - } - return el; - }; - autosize.destroy = function (el) { - if (el) { - Array.prototype.forEach.call(el.length ? el : [el], destroy); - } - return el; - }; - autosize.update = function (el) { - if (el) { - Array.prototype.forEach.call(el.length ? el : [el], update); - } - return el; - }; - } - - module.exports = autosize; -}); - -/***/ }), -/* 52 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiCloseButton_vue__ = __webpack_require__(10); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiIcon_vue__ = __webpack_require__(1); - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-alert', - - props: { - type: { - type: String, - default: 'info' }, - removeIcon: { - type: Boolean, - default: false - }, - disableAnimation: { - type: Boolean, - default: false - }, - dismissible: { - type: Boolean, - default: true - } - }, - - computed: { - classes: function classes() { - return ['ui-alert--type-' + this.type, { 'has-no-transition': this.disableAnimation }]; + var divider = fragments.indexOf(find(fragments, function(frag) { + return frag.search(/,|\s/) !== -1; + })); + if (fragments[divider] && fragments[divider].indexOf(",") === -1) { + console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead."); + } + var splitRegex = /\s*,\s*|\s+/; + var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; + ops = ops.map(function(op, index) { + var measurement = (index === 1 ? !useHeight : useHeight) ? "height" : "width"; + var mergeWithPrevious = false; + return op.reduce(function(a, b) { + if (a[a.length - 1] === "" && ["+", "-"].indexOf(b) !== -1) { + a[a.length - 1] = b; + mergeWithPrevious = true; + return a; + } else if (mergeWithPrevious) { + a[a.length - 1] += b; + mergeWithPrevious = false; + return a; + } else { + return a.concat(b); } - }, - - methods: { - dismissAlert: function dismissAlert() { - this.$emit('dismiss'); + }, []).map(function(str) { + return toValue(str, measurement, popperOffsets, referenceOffsets); + }); + }); + ops.forEach(function(op, index) { + op.forEach(function(frag, index2) { + if (isNumeric(frag)) { + offsets[index] += frag * (op[index2 - 1] === "-" ? -1 : 1); } - }, - - components: { - UiCloseButton: __WEBPACK_IMPORTED_MODULE_0__UiCloseButton_vue__["a" /* default */], - UiIcon: __WEBPACK_IMPORTED_MODULE_1__UiIcon_vue__["a" /* default */] - } -}; - -/***/ }), -/* 53 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__directives_autofocus__ = __webpack_require__(20); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiAutocompleteSuggestion_vue__ = __webpack_require__(140); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_fuzzysearch__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_fuzzysearch___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_fuzzysearch__); - - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-autocomplete', - - props: { - name: String, - placeholder: String, - tabindex: [String, Number], - value: { - type: [String, Number], - default: '' - }, - icon: String, - iconPosition: { - type: String, - default: 'left' }, - label: String, - floatingLabel: { - type: Boolean, - default: false - }, - help: String, - error: String, - readonly: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false - }, - type: { - type: String, - default: 'simple' }, - suggestions: { - type: Array, - default: function _default() { - return []; - } - }, - limit: { - type: Number, - default: 8 - }, - append: { - type: Boolean, - default: false - }, - appendDelimiter: { - type: String, - default: ', ' - }, - minChars: { - type: Number, - default: 2 - }, - showOnUpDown: { - type: Boolean, - default: true - }, - autofocus: { - type: Boolean, - default: false - }, - filter: Function, - sort: Function, - highlightOnFirstMatch: { - type: Boolean, - default: true - }, - cycleHighlight: { - type: Boolean, - default: true - }, - keys: { - type: Object, - default: function _default() { - return { - label: 'label', - value: 'value', - image: 'image' - }; - } - }, - invalid: { - type: Boolean, - default: false + }); + }); + return offsets; + } + function offset(data, _ref) { + var offset2 = _ref.offset; + var placement = data.placement, _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var basePlacement = placement.split("-")[0]; + var offsets = void 0; + if (isNumeric(+offset2)) { + offsets = [+offset2, 0]; + } else { + offsets = parseOffset(offset2, popper, reference, basePlacement); + } + if (basePlacement === "left") { + popper.top += offsets[0]; + popper.left -= offsets[1]; + } else if (basePlacement === "right") { + popper.top += offsets[0]; + popper.left += offsets[1]; + } else if (basePlacement === "top") { + popper.left += offsets[0]; + popper.top -= offsets[1]; + } else if (basePlacement === "bottom") { + popper.left += offsets[0]; + popper.top += offsets[1]; + } + data.popper = popper; + return data; + } + function preventOverflow(data, options) { + var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); + if (data.instance.reference === boundariesElement) { + boundariesElement = getOffsetParent(boundariesElement); + } + var transformProp = getSupportedPropertyName("transform"); + var popperStyles = data.instance.popper.style; + var top = popperStyles.top, left = popperStyles.left, transform = popperStyles[transformProp]; + popperStyles.top = ""; + popperStyles.left = ""; + popperStyles[transformProp] = ""; + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); + popperStyles.top = top; + popperStyles.left = left; + popperStyles[transformProp] = transform; + options.boundaries = boundaries; + var order = options.priority; + var popper = data.offsets.popper; + var check = { + primary: function primary(placement) { + var value = popper[placement]; + if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { + value = Math.max(popper[placement], boundaries[placement]); + } + return defineProperty({}, placement, value); + }, + secondary: function secondary(placement) { + var mainSide = placement === "right" ? "left" : "top"; + var value = popper[mainSide]; + if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { + value = Math.min(popper[mainSide], boundaries[placement] - (placement === "right" ? popper.width : popper.height)); } + return defineProperty({}, mainSide, value); + } + }; + order.forEach(function(placement) { + var side = ["left", "top"].indexOf(placement) !== -1 ? "primary" : "secondary"; + popper = _extends$1({}, popper, check[side](placement)); + }); + data.offsets.popper = popper; + return data; + } + function shift(data) { + var placement = data.placement; + var basePlacement = placement.split("-")[0]; + var shiftvariation = placement.split("-")[1]; + if (shiftvariation) { + var _data$offsets = data.offsets, reference = _data$offsets.reference, popper = _data$offsets.popper; + var isVertical = ["bottom", "top"].indexOf(basePlacement) !== -1; + var side = isVertical ? "left" : "top"; + var measurement = isVertical ? "width" : "height"; + var shiftOffsets = { + start: defineProperty({}, side, reference[side]), + end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) + }; + data.offsets.popper = _extends$1({}, popper, shiftOffsets[shiftvariation]); + } + return data; + } + function hide(data) { + if (!isModifierRequired(data.instance.modifiers, "hide", "preventOverflow")) { + return data; + } + var refRect = data.offsets.reference; + var bound = find(data.instance.modifiers, function(modifier) { + return modifier.name === "preventOverflow"; + }).boundaries; + if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { + if (data.hide === true) { + return data; + } + data.hide = true; + data.attributes["x-out-of-boundaries"] = ""; + } else { + if (data.hide === false) { + return data; + } + data.hide = false; + data.attributes["x-out-of-boundaries"] = false; + } + return data; + } + function inner(data) { + var placement = data.placement; + var basePlacement = placement.split("-")[0]; + var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; + var isHoriz = ["left", "right"].indexOf(basePlacement) !== -1; + var subtractLength = ["top", "left"].indexOf(basePlacement) === -1; + popper[isHoriz ? "left" : "top"] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? "width" : "height"] : 0); + data.placement = getOppositePlacement(placement); + data.offsets.popper = getClientRect(popper); + return data; + } + var modifiers = { + shift: { + order: 100, + enabled: true, + fn: shift + }, + offset: { + order: 200, + enabled: true, + fn: offset, + offset: 0 + }, + preventOverflow: { + order: 300, + enabled: true, + fn: preventOverflow, + priority: ["left", "right", "top", "bottom"], + padding: 5, + boundariesElement: "scrollParent" + }, + keepTogether: { + order: 400, + enabled: true, + fn: keepTogether + }, + arrow: { + order: 500, + enabled: true, + fn: arrow, + element: "[x-arrow]" + }, + flip: { + order: 600, + enabled: true, + fn: flip, + behavior: "flip", + padding: 5, + boundariesElement: "viewport" + }, + inner: { + order: 700, + enabled: false, + fn: inner + }, + hide: { + order: 800, + enabled: true, + fn: hide + }, + computeStyle: { + order: 850, + enabled: true, + fn: computeStyle, + gpuAcceleration: true, + x: "bottom", + y: "right" + }, + applyStyle: { + order: 900, + enabled: true, + fn: applyStyle, + onLoad: applyStyleOnLoad, + gpuAcceleration: void 0 + } + }; + var Defaults = { + placement: "bottom", + positionFixed: false, + eventsEnabled: true, + removeOnDestroy: false, + onCreate: function onCreate() { }, - - data: function data() { - return { - initialValue: this.value, - isActive: false, - isTouched: false, - showDropdown: false, - highlightedIndex: -1 - }; + onUpdate: function onUpdate() { }, - - - computed: { - classes: function classes() { - return ['ui-autocomplete--type-' + this.type, 'ui-autocomplete--icon-position-' + this.iconPosition, { 'is-active': this.isActive }, { 'is-invalid': this.invalid }, { 'is-touched': this.isTouched }, { 'is-disabled': this.disabled }, { 'has-label': this.hasLabel }, { 'has-floating-label': this.hasFloatingLabel }]; - }, - labelClasses: function labelClasses() { - return { - 'is-inline': this.hasFloatingLabel && this.isLabelInline, - 'is-floating': this.hasFloatingLabel && !this.isLabelInline - }; - }, - hasLabel: function hasLabel() { - return Boolean(this.label) || Boolean(this.$slots.default); - }, - hasFloatingLabel: function hasFloatingLabel() { - return this.hasLabel && this.floatingLabel; - }, - isLabelInline: function isLabelInline() { - return this.valueLength === 0 && !this.isActive; - }, - valueLength: function valueLength() { - return this.value ? this.value.length : 0; - }, - hasFeedback: function hasFeedback() { - return this.showError || this.showHelp; - }, - showError: function showError() { - return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); - }, - showHelp: function showHelp() { - return Boolean(this.help) || Boolean(this.$slots.help); - }, - matchingSuggestions: function matchingSuggestions() { - var _this = this; - - var suggestions = this.suggestions.filter(function (suggestion) { - if (_this.filter) { - return _this.filter(suggestion, _this.value, _this.defaultFilter); - } - - var query = _this.value === null ? '' : _this.value; - - return _this.defaultFilter(suggestion, query); - }); - - if (this.sort) { - suggestions.sort(this.sort.bind(this)); - } - - return suggestions.slice(0, this.limit); + modifiers + }; + var Popper = function() { + function Popper2(reference, popper) { + var _this = this; + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + classCallCheck(this, Popper2); + this.scheduleUpdate = function() { + return requestAnimationFrame(_this.update); + }; + this.update = debounce$1(this.update.bind(this)); + this.options = _extends$1({}, Popper2.Defaults, options); + this.state = { + isDestroyed: false, + isCreated: false, + scrollParents: [] + }; + this.reference = reference && reference.jquery ? reference[0] : reference; + this.popper = popper && popper.jquery ? popper[0] : popper; + this.options.modifiers = {}; + Object.keys(_extends$1({}, Popper2.Defaults.modifiers, options.modifiers)).forEach(function(name) { + _this.options.modifiers[name] = _extends$1({}, Popper2.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); + }); + this.modifiers = Object.keys(this.options.modifiers).map(function(name) { + return _extends$1({ + name + }, _this.options.modifiers[name]); + }).sort(function(a, b) { + return a.order - b.order; + }); + this.modifiers.forEach(function(modifierOptions) { + if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { + modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); } - }, - - watch: { - value: function value() { - if (this.isActive && this.valueLength >= this.minChars) { - this.openDropdown(); - } - - this.highlightedIndex = this.highlightOnFirstMatch ? 0 : -1; + }); + this.update(); + var eventsEnabled = this.options.eventsEnabled; + if (eventsEnabled) { + this.enableEventListeners(); + } + this.state.eventsEnabled = eventsEnabled; + } + createClass(Popper2, [{ + key: "update", + value: function update$$1() { + return update.call(this); + } + }, { + key: "destroy", + value: function destroy$$1() { + return destroy.call(this); + } + }, { + key: "enableEventListeners", + value: function enableEventListeners$$1() { + return enableEventListeners.call(this); + } + }, { + key: "disableEventListeners", + value: function disableEventListeners$$1() { + return disableEventListeners.call(this); + } + }]); + return Popper2; + }(); + Popper.Utils = (typeof window !== "undefined" ? window : global).PopperUtils; + Popper.placements = placements; + Popper.Defaults = Defaults; + function _extends() { + _extends = Object.assign || function(target) { + for (var i2 = 1; i2 < arguments.length; i2++) { + var source = arguments[i2]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } } - }, - - created: function created() { - if (this.value === null) { - this.initialValue = ''; - this.updateValue(''); + } + return target; + }; + return _extends.apply(this, arguments); + } + var version = "4.2.1"; + var isBrowser = typeof window !== "undefined" && typeof document !== "undefined"; + var ua = isBrowser ? navigator.userAgent : ""; + var isIE = /MSIE |Trident\//.test(ua); + var isUCBrowser = /UCBrowser\//.test(ua); + var isIOS = isBrowser && /iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream; + var defaultProps = { + a11y: true, + allowHTML: true, + animateFill: true, + animation: "shift-away", + appendTo: function appendTo() { + return document.body; + }, + aria: "describedby", + arrow: false, + arrowType: "sharp", + boundary: "scrollParent", + content: "", + delay: 0, + distance: 10, + duration: [325, 275], + flip: true, + flipBehavior: "flip", + flipOnUpdate: false, + followCursor: false, + hideOnClick: true, + ignoreAttributes: false, + inertia: false, + interactive: false, + interactiveBorder: 2, + interactiveDebounce: 0, + lazy: true, + maxWidth: 350, + multiple: false, + offset: 0, + onHidden: function onHidden() { + }, + onHide: function onHide() { + }, + onMount: function onMount() { + }, + onShow: function onShow() { + }, + onShown: function onShown() { + }, + placement: "top", + popperOptions: {}, + role: "tooltip", + showOnInit: false, + size: "regular", + sticky: false, + target: "", + theme: "dark", + touch: true, + touchHold: false, + trigger: "mouseenter focus", + updateDuration: 0, + wait: null, + zIndex: 9999 + }; + var POPPER_INSTANCE_DEPENDENCIES = ["arrow", "arrowType", "boundary", "distance", "flip", "flipBehavior", "flipOnUpdate", "offset", "placement", "popperOptions"]; + var elementProto = isBrowser ? Element.prototype : {}; + var matches = elementProto.matches || elementProto.matchesSelector || elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector || elementProto.msMatchesSelector; + function arrayFrom(value) { + return [].slice.call(value); + } + function closest(element, parentSelector) { + return (elementProto.closest || function(selector) { + var el = this; + while (el) { + if (matches.call(el, selector)) { + return el; + } + el = el.parentElement; + } + }).call(element, parentSelector); + } + function closestCallback(element, callback) { + while (element) { + if (callback(element)) { + return element; + } + element = element.parentElement; + } + } + var PASSIVE = { + passive: true + }; + var PADDING = 4; + var PLACEMENT_ATTRIBUTE = "x-placement"; + var OUT_OF_BOUNDARIES_ATTRIBUTE = "x-out-of-boundaries"; + var IOS_CLASS = "tippy-iOS"; + var ACTIVE_CLASS = "tippy-active"; + var POPPER_SELECTOR = ".tippy-popper"; + var TOOLTIP_SELECTOR = ".tippy-tooltip"; + var CONTENT_SELECTOR = ".tippy-content"; + var BACKDROP_SELECTOR = ".tippy-backdrop"; + var ARROW_SELECTOR = ".tippy-arrow"; + var ROUND_ARROW_SELECTOR = ".tippy-roundarrow"; + var keys = Object.keys(defaultProps); + function getDataAttributeOptions(reference) { + return keys.reduce(function(acc, key) { + var valueAsString = (reference.getAttribute("data-tippy-".concat(key)) || "").trim(); + if (!valueAsString) { + return acc; + } + if (key === "content") { + acc[key] = valueAsString; + } else { + try { + acc[key] = JSON.parse(valueAsString); + } catch (e) { + acc[key] = valueAsString; } - }, - mounted: function mounted() { - document.addEventListener('click', this.onExternalClick); - }, - beforeDestroy: function beforeDestroy() { - document.removeEventListener('click', this.onExternalClick); - }, - - - methods: { - defaultFilter: function defaultFilter(suggestion, query) { - var text = suggestion[this.keys.label] || suggestion; - - if (typeof query === 'string') { - query = query.toLowerCase(); - } - - return __WEBPACK_IMPORTED_MODULE_3_fuzzysearch___default()(query, text.toLowerCase()); - }, - selectSuggestion: function selectSuggestion(suggestion) { - var _this2 = this; - - var value = void 0; - - if (this.append) { - value += this.appendDelimiter + (suggestion[this.keys.value] || suggestion); - } else { - value = suggestion[this.keys.value] || suggestion; - } - - this.updateValue(value); - this.$emit('select', suggestion); - - this.$nextTick(function () { - _this2.closeDropdown(); - _this2.$refs.input.focus(); - }); - }, - highlightSuggestion: function highlightSuggestion(index) { - var firstIndex = 0; - var lastIndex = this.$refs.suggestions.length - 1; - - if (index === -2) { - index = lastIndex; - } else if (index < firstIndex) { - index = this.cycleHighlight ? lastIndex : index; - } else if (index > lastIndex) { - index = this.cycleHighlight ? firstIndex : -1; - } - - this.highlightedIndex = index; - - if (this.showOnUpDown) { - this.openDropdown(); - } - - if (index < firstIndex || index > lastIndex) { - this.$emit('highlight-overflow', index); - } else { - this.$emit('highlight', this.$refs.suggestions[index].suggestion, index); - } - }, - selectHighlighted: function selectHighlighted(index, e) { - if (this.showDropdown && this.$refs.suggestions.length > 0) { - e.preventDefault(); - this.selectSuggestion(this.$refs.suggestions[index].suggestion); - } - }, - focus: function focus() { - this.$refs.input.focus(); - }, - openDropdown: function openDropdown() { - if (!this.showDropdown) { - this.showDropdown = true; - this.$emit('dropdown-open'); - } - }, - closeDropdown: function closeDropdown() { - var _this3 = this; - - if (this.showDropdown) { - this.$nextTick(function () { - _this3.showDropdown = false; - _this3.highlightedIndex = -1; - _this3.$emit('dropdown-close'); - }); - } - }, - updateValue: function updateValue(value) { - this.$emit('input', value); - }, - onFocus: function onFocus(e) { - this.isActive = true; - this.$emit('focus', e); + } + return acc; + }, {}); + } + function polyfillElementPrototypeProperties(virtualReference) { + var polyfills = { + isVirtual: true, + attributes: virtualReference.attributes || {}, + setAttribute: function setAttribute(key2, value) { + virtualReference.attributes[key2] = value; + }, + getAttribute: function getAttribute(key2) { + return virtualReference.attributes[key2]; + }, + removeAttribute: function removeAttribute(key2) { + delete virtualReference.attributes[key2]; + }, + hasAttribute: function hasAttribute(key2) { + return key2 in virtualReference.attributes; + }, + addEventListener: function addEventListener() { + }, + removeEventListener: function removeEventListener() { + }, + classList: { + classNames: {}, + add: function add2(key2) { + virtualReference.classList.classNames[key2] = true; }, - onChange: function onChange(e) { - this.$emit('change', this.value, e); + remove: function remove2(key2) { + delete virtualReference.classList.classNames[key2]; }, - onBlur: function onBlur(e) { - this.isActive = false; - this.$emit('blur', e); - - if (!this.isTouched) { - this.isTouched = true; - this.$emit('touch'); - } - }, - onExternalClick: function onExternalClick(e) { - if (!this.$el.contains(e.target) && this.showDropdown) { - this.closeDropdown(); - } - }, - reset: function reset() { - if (document.activeElement === this.$refs.input) { - document.activeElement.blur(); - } - - this.updateValue(this.initialValue); - this.isTouched = false; + contains: function contains2(key2) { + return key2 in virtualReference.classList.classNames; + } + } + }; + for (var key in polyfills) { + virtualReference[key] = polyfills[key]; + } + } + function isBareVirtualElement(value) { + return {}.toString.call(value) === "[object Object]" && !value.addEventListener; + } + function hasOwnProperty(obj, key) { + return {}.hasOwnProperty.call(obj, key); + } + function getArrayOfElements(value) { + if (isSingular(value)) { + return [value]; + } + if (value instanceof NodeList) { + return arrayFrom(value); + } + if (Array.isArray(value)) { + return value; + } + try { + return arrayFrom(document.querySelectorAll(value)); + } catch (e) { + return []; + } + } + function getValue(value, index, defaultValue) { + if (Array.isArray(value)) { + var v = value[index]; + return v == null ? defaultValue : v; + } + return value; + } + function debounce(fn, ms) { + var timeoutId; + return function() { + var _this = this, _arguments = arguments; + clearTimeout(timeoutId); + timeoutId = setTimeout(function() { + return fn.apply(_this, _arguments); + }, ms); + }; + } + function getModifier(obj, key) { + return obj && obj.modifiers && obj.modifiers[key]; + } + function includes(a, b) { + return a.indexOf(b) > -1; + } + function isSingular(value) { + return !!(value && hasOwnProperty(value, "isVirtual")) || value instanceof Element; + } + function innerHTML() { + return "innerHTML"; + } + function evaluateValue(value, args) { + return typeof value === "function" ? value.apply(null, args) : value; + } + function setFlipModifierEnabled(modifiers2, value) { + modifiers2.filter(function(m) { + return m.name === "flip"; + })[0].enabled = value; + } + function canReceiveFocus(element) { + return element instanceof Element ? matches.call(element, "a[href],area[href],button,details,input,textarea,select,iframe,[tabindex]") && !element.hasAttribute("disabled") : true; + } + function div() { + return document.createElement("div"); + } + function setTransitionDuration(els, value) { + els.forEach(function(el) { + if (el) { + el.style.transitionDuration = "".concat(value, "ms"); + } + }); + } + function setVisibilityState(els, state) { + els.forEach(function(el) { + if (el) { + el.setAttribute("data-state", state); + } + }); + } + function evaluateProps(reference, props) { + var out = _extends({}, props, { + content: evaluateValue(props.content, [reference]) + }, props.ignoreAttributes ? {} : getDataAttributeOptions(reference)); + if (out.arrow || isUCBrowser) { + out.animateFill = false; + } + return out; + } + function validateOptions(options, defaultProps2) { + Object.keys(options).forEach(function(option) { + if (!hasOwnProperty(defaultProps2, option)) { + throw new Error("[tippy]: `".concat(option, "` is not a valid option")); + } + }); + } + function setInnerHTML(element, html) { + element[innerHTML()] = html instanceof Element ? html[innerHTML()] : html; + } + function setContent(contentEl, props) { + if (props.content instanceof Element) { + setInnerHTML(contentEl, ""); + contentEl.appendChild(props.content); + } else if (typeof props.content !== "function") { + var key = props.allowHTML ? "innerHTML" : "textContent"; + contentEl[key] = props.content; + } + } + function getChildren(popper) { + return { + tooltip: popper.querySelector(TOOLTIP_SELECTOR), + backdrop: popper.querySelector(BACKDROP_SELECTOR), + content: popper.querySelector(CONTENT_SELECTOR), + arrow: popper.querySelector(ARROW_SELECTOR) || popper.querySelector(ROUND_ARROW_SELECTOR) + }; + } + function addInertia(tooltip) { + tooltip.setAttribute("data-inertia", ""); + } + function removeInertia(tooltip) { + tooltip.removeAttribute("data-inertia"); + } + function createArrowElement(arrowType) { + var arrow2 = div(); + if (arrowType === "round") { + arrow2.className = "tippy-roundarrow"; + setInnerHTML(arrow2, ''); + } else { + arrow2.className = "tippy-arrow"; + } + return arrow2; + } + function createBackdropElement() { + var backdrop = div(); + backdrop.className = "tippy-backdrop"; + backdrop.setAttribute("data-state", "hidden"); + return backdrop; + } + function addInteractive(popper, tooltip) { + popper.setAttribute("tabindex", "-1"); + tooltip.setAttribute("data-interactive", ""); + } + function removeInteractive(popper, tooltip) { + popper.removeAttribute("tabindex"); + tooltip.removeAttribute("data-interactive"); + } + function updateTransitionEndListener(tooltip, action, listener) { + var eventName = isUCBrowser && document.body.style.webkitTransition !== void 0 ? "webkitTransitionEnd" : "transitionend"; + tooltip[action + "EventListener"](eventName, listener); + } + function getBasicPlacement(popper) { + var fullPlacement = popper.getAttribute(PLACEMENT_ATTRIBUTE); + return fullPlacement ? fullPlacement.split("-")[0] : ""; + } + function reflow(popper) { + void popper.offsetHeight; + } + function updateTheme(tooltip, action, theme) { + theme.split(" ").forEach(function(themeName) { + tooltip.classList[action](themeName + "-theme"); + }); + } + function createPopperElement(id, props) { + var popper = div(); + popper.className = "tippy-popper"; + popper.id = "tippy-".concat(id); + popper.style.zIndex = "" + props.zIndex; + if (props.role) { + popper.setAttribute("role", props.role); + } + var tooltip = div(); + tooltip.className = "tippy-tooltip"; + tooltip.style.maxWidth = props.maxWidth + (typeof props.maxWidth === "number" ? "px" : ""); + tooltip.setAttribute("data-size", props.size); + tooltip.setAttribute("data-animation", props.animation); + tooltip.setAttribute("data-state", "hidden"); + updateTheme(tooltip, "add", props.theme); + var content = div(); + content.className = "tippy-content"; + content.setAttribute("data-state", "hidden"); + if (props.interactive) { + addInteractive(popper, tooltip); + } + if (props.arrow) { + tooltip.appendChild(createArrowElement(props.arrowType)); + } + if (props.animateFill) { + tooltip.appendChild(createBackdropElement()); + tooltip.setAttribute("data-animatefill", ""); + } + if (props.inertia) { + addInertia(tooltip); + } + setContent(content, props); + tooltip.appendChild(content); + popper.appendChild(tooltip); + return popper; + } + function updatePopperElement(popper, prevProps, nextProps) { + var _getChildren = getChildren(popper), tooltip = _getChildren.tooltip, content = _getChildren.content, backdrop = _getChildren.backdrop, arrow2 = _getChildren.arrow; + popper.style.zIndex = "" + nextProps.zIndex; + tooltip.setAttribute("data-size", nextProps.size); + tooltip.setAttribute("data-animation", nextProps.animation); + tooltip.style.maxWidth = nextProps.maxWidth + (typeof nextProps.maxWidth === "number" ? "px" : ""); + if (nextProps.role) { + popper.setAttribute("role", nextProps.role); + } else { + popper.removeAttribute("role"); + } + if (prevProps.content !== nextProps.content) { + setContent(content, nextProps); + } + if (!prevProps.animateFill && nextProps.animateFill) { + tooltip.appendChild(createBackdropElement()); + tooltip.setAttribute("data-animatefill", ""); + } else if (prevProps.animateFill && !nextProps.animateFill) { + tooltip.removeChild(backdrop); + tooltip.removeAttribute("data-animatefill"); + } + if (!prevProps.arrow && nextProps.arrow) { + tooltip.appendChild(createArrowElement(nextProps.arrowType)); + } else if (prevProps.arrow && !nextProps.arrow) { + tooltip.removeChild(arrow2); + } + if (prevProps.arrow && nextProps.arrow && prevProps.arrowType !== nextProps.arrowType) { + tooltip.replaceChild(createArrowElement(nextProps.arrowType), arrow2); + } + if (!prevProps.interactive && nextProps.interactive) { + addInteractive(popper, tooltip); + } else if (prevProps.interactive && !nextProps.interactive) { + removeInteractive(popper, tooltip); + } + if (!prevProps.inertia && nextProps.inertia) { + addInertia(tooltip); + } else if (prevProps.inertia && !nextProps.inertia) { + removeInertia(tooltip); + } + if (prevProps.theme !== nextProps.theme) { + updateTheme(tooltip, "remove", prevProps.theme); + updateTheme(tooltip, "add", nextProps.theme); + } + } + function afterPopperPositionUpdates(popperInstance, callback) { + var popper = popperInstance.popper, options = popperInstance.options; + var onCreate = options.onCreate, onUpdate = options.onUpdate; + options.onCreate = options.onUpdate = function(data) { + reflow(popper); + callback(); + if (onUpdate) { + onUpdate(data); + } + options.onCreate = onCreate; + options.onUpdate = onUpdate; + }; + } + function hideAll() { + var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, checkHideOnClick = _ref.checkHideOnClick, exclude = _ref.exclude, duration = _ref.duration; + arrayFrom(document.querySelectorAll(POPPER_SELECTOR)).forEach(function(popper) { + var instance = popper._tippy; + if (instance && (checkHideOnClick ? instance.props.hideOnClick === true : true) && (!exclude || popper !== exclude.popper)) { + instance.hide(duration); + } + }); + } + function isCursorOutsideInteractiveBorder(popperPlacement, popperRect, event, props) { + if (!popperPlacement) { + return true; + } + var x = event.clientX, y = event.clientY; + var interactiveBorder = props.interactiveBorder, distance = props.distance; + var exceedsTop = popperRect.top - y > (popperPlacement === "top" ? interactiveBorder + distance : interactiveBorder); + var exceedsBottom = y - popperRect.bottom > (popperPlacement === "bottom" ? interactiveBorder + distance : interactiveBorder); + var exceedsLeft = popperRect.left - x > (popperPlacement === "left" ? interactiveBorder + distance : interactiveBorder); + var exceedsRight = x - popperRect.right > (popperPlacement === "right" ? interactiveBorder + distance : interactiveBorder); + return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight; + } + function getOffsetDistanceInPx(distance) { + return -(distance - 10) + "px"; + } + var isUsingTouch = false; + function onDocumentTouch() { + if (isUsingTouch) { + return; + } + isUsingTouch = true; + if (isIOS) { + document.body.classList.add(IOS_CLASS); + } + if (window.performance) { + document.addEventListener("mousemove", onDocumentMouseMove); + } + } + var lastMouseMoveTime = 0; + function onDocumentMouseMove() { + var now = performance.now(); + if (now - lastMouseMoveTime < 20) { + isUsingTouch = false; + document.removeEventListener("mousemove", onDocumentMouseMove); + if (!isIOS) { + document.body.classList.remove(IOS_CLASS); + } + } + lastMouseMoveTime = now; + } + function onDocumentClick(event) { + if (!(event.target instanceof Element)) { + return hideAll(); + } + var popper = closest(event.target, POPPER_SELECTOR); + if (popper && popper._tippy && popper._tippy.props.interactive) { + return; + } + var reference = closestCallback(event.target, function(el) { + return el._tippy && el._tippy.reference === el; + }); + if (reference) { + var instance = reference._tippy; + if (instance) { + var isClickTrigger = includes(instance.props.trigger || "", "click"); + if (isUsingTouch || isClickTrigger) { + return hideAll({ + exclude: instance, + checkHideOnClick: true + }); + } + if (instance.props.hideOnClick !== true || isClickTrigger) { + return; + } + instance.clearDelayTimeouts(); + } + } + hideAll({ + checkHideOnClick: true + }); + } + function onWindowBlur() { + var _document = document, activeElement = _document.activeElement; + if (activeElement && activeElement.blur && activeElement._tippy) { + activeElement.blur(); + } + } + function bindGlobalEventListeners() { + document.addEventListener("click", onDocumentClick, true); + document.addEventListener("touchstart", onDocumentTouch, PASSIVE); + window.addEventListener("blur", onWindowBlur); + } + var idCounter = 1; + function createTippy(reference, collectionProps) { + var props = evaluateProps(reference, collectionProps); + if (!props.multiple && reference._tippy) { + return null; + } + var lastTriggerEventType; + var lastMouseMoveEvent; + var showTimeoutId; + var hideTimeoutId; + var animationFrameId; + var isScheduledToShow = false; + var currentParentNode; + var previousPlacement; + var wasVisibleDuringPreviousUpdate = false; + var currentTransitionEndListener; + var listeners = []; + var debouncedOnMouseMove = props.interactiveDebounce > 0 ? debounce(onMouseMove, props.interactiveDebounce) : onMouseMove; + var id = idCounter++; + var popper = createPopperElement(id, props); + var popperChildren = getChildren(popper); + var popperInstance = null; + var state = { + isEnabled: true, + isVisible: false, + isDestroyed: false, + isMounted: false, + isShown: false + }; + var instance = { + id, + reference, + popper, + popperChildren, + popperInstance, + props, + state, + clearDelayTimeouts, + set: set2, + setContent: setContent$$1, + show, + hide: hide2, + enable, + disable, + destroy: destroy2 + }; + reference._tippy = instance; + popper._tippy = instance; + addTriggersToReference(); + if (!props.lazy) { + createPopperInstance(); + instance.popperInstance.disableEventListeners(); + } + if (props.showOnInit) { + scheduleShow(); + } + if (props.a11y && !props.target && !canReceiveFocus(reference)) { + reference.setAttribute("tabindex", "0"); + } + popper.addEventListener("mouseenter", function(event) { + if (instance.props.interactive && instance.state.isVisible && lastTriggerEventType === "mouseenter") { + scheduleShow(event); + } + }); + popper.addEventListener("mouseleave", function() { + if (instance.props.interactive && lastTriggerEventType === "mouseenter") { + document.addEventListener("mousemove", debouncedOnMouseMove); + } + }); + return instance; + function removeFollowCursorListener() { + document.removeEventListener("mousemove", positionVirtualReferenceNearCursor); + } + function cleanupOldMouseListeners() { + document.body.removeEventListener("mouseleave", scheduleHide); + document.removeEventListener("mousemove", debouncedOnMouseMove); + } + function getTransitionableElements() { + return [instance.popperChildren.tooltip, instance.popperChildren.backdrop, instance.popperChildren.content]; + } + function hasFollowCursorBehavior() { + return instance.props.followCursor && !isUsingTouch && lastTriggerEventType !== "focus"; + } + function makeSticky() { + setTransitionDuration([instance.popper], isIE ? 0 : instance.props.updateDuration); + function updatePosition() { + if (instance.popperInstance) { + instance.popperInstance.scheduleUpdate(); + } + if (instance.state.isMounted) { + requestAnimationFrame(updatePosition); + } else { + setTransitionDuration([instance.popper], 0); + } + } + updatePosition(); + } + function onTransitionedOut(duration, callback) { + onTransitionEnd(duration, function() { + if (!instance.state.isVisible && currentParentNode && currentParentNode.contains(instance.popper)) { + callback(); + } + }); + } + function onTransitionedIn(duration, callback) { + onTransitionEnd(duration, callback); + } + function onTransitionEnd(duration, callback) { + var tooltip = instance.popperChildren.tooltip; + function listener(event) { + if (event.target === tooltip) { + updateTransitionEndListener(tooltip, "remove", listener); + callback(); + } + } + if (duration === 0) { + return callback(); + } + updateTransitionEndListener(tooltip, "remove", currentTransitionEndListener); + updateTransitionEndListener(tooltip, "add", listener); + currentTransitionEndListener = listener; + } + function on2(eventType, handler) { + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + instance.reference.addEventListener(eventType, handler, options); + listeners.push({ + eventType, + handler, + options + }); + } + function addTriggersToReference() { + if (instance.props.touchHold && !instance.props.target) { + on2("touchstart", onTrigger, PASSIVE); + on2("touchend", onMouseLeave, PASSIVE); + } + instance.props.trigger.trim().split(" ").forEach(function(eventType) { + if (eventType === "manual") { + return; + } + if (!instance.props.target) { + on2(eventType, onTrigger); + switch (eventType) { + case "mouseenter": + on2("mouseleave", onMouseLeave); + break; + case "focus": + on2(isIE ? "focusout" : "blur", onBlur); + break; + } + } else { + switch (eventType) { + case "mouseenter": + on2("mouseover", onDelegateShow); + on2("mouseout", onDelegateHide); + break; + case "focus": + on2("focusin", onDelegateShow); + on2("focusout", onDelegateHide); + break; + case "click": + on2(eventType, onDelegateShow); + break; + } + } + }); + } + function removeTriggersFromReference() { + listeners.forEach(function(_ref) { + var eventType = _ref.eventType, handler = _ref.handler, options = _ref.options; + instance.reference.removeEventListener(eventType, handler, options); + }); + listeners = []; + } + function positionVirtualReferenceNearCursor(event) { + var _lastMouseMoveEvent = lastMouseMoveEvent = event, clientX = _lastMouseMoveEvent.clientX, clientY = _lastMouseMoveEvent.clientY; + if (!instance.popperInstance) { + return; + } + var placement = getBasicPlacement(instance.popper); + var padding = instance.props.arrow ? PADDING + (instance.props.arrowType === "round" ? 18 : 16) : PADDING; + var isVerticalPlacement = includes(["top", "bottom"], placement); + var isHorizontalPlacement = includes(["left", "right"], placement); + var x = isVerticalPlacement ? Math.max(padding, clientX) : clientX; + var y = isHorizontalPlacement ? Math.max(padding, clientY) : clientY; + if (isVerticalPlacement && x > padding) { + x = Math.min(clientX, window.innerWidth - padding); + } + if (isHorizontalPlacement && y > padding) { + y = Math.min(clientY, window.innerHeight - padding); + } + var rect = instance.reference.getBoundingClientRect(); + var followCursor = instance.props.followCursor; + var isHorizontal = followCursor === "horizontal"; + var isVertical = followCursor === "vertical"; + instance.popperInstance.reference = _extends({}, instance.popperInstance.reference, { + getBoundingClientRect: function getBoundingClientRect2() { + return { + width: 0, + height: 0, + top: isHorizontal ? rect.top : y, + bottom: isHorizontal ? rect.bottom : y, + left: isVertical ? rect.left : x, + right: isVertical ? rect.right : x + }; + }, + clientWidth: 0, + clientHeight: 0 + }); + instance.popperInstance.scheduleUpdate(); + if (followCursor === "initial" && instance.state.isVisible) { + removeFollowCursorListener(); + } + } + function createDelegateChildTippy(event) { + if (event) { + var targetEl = closest(event.target, instance.props.target); + if (targetEl && !targetEl._tippy) { + createTippy(targetEl, _extends({}, instance.props, { + content: evaluateValue(collectionProps.content, [targetEl]), + appendTo: collectionProps.appendTo, + target: "", + showOnInit: true + })); + scheduleShow(event); + } + } + } + function onTrigger(event) { + if (!instance.state.isEnabled || isEventListenerStopped(event)) { + return; + } + if (!instance.state.isVisible) { + lastTriggerEventType = event.type; + if (event instanceof MouseEvent) { + lastMouseMoveEvent = event; + } + } + if (event.type === "click" && instance.props.hideOnClick !== false && instance.state.isVisible) { + scheduleHide(); + } else { + scheduleShow(event); + } + } + function onMouseMove(event) { + var referenceTheCursorIsOver = closestCallback(event.target, function(el) { + return el._tippy; + }); + var isCursorOverPopper = closest(event.target, POPPER_SELECTOR) === instance.popper; + var isCursorOverReference = referenceTheCursorIsOver === instance.reference; + if (isCursorOverPopper || isCursorOverReference) { + return; + } + if (isCursorOutsideInteractiveBorder(getBasicPlacement(instance.popper), instance.popper.getBoundingClientRect(), event, instance.props)) { + cleanupOldMouseListeners(); + scheduleHide(); + } + } + function onMouseLeave(event) { + if (isEventListenerStopped(event)) { + return; + } + if (instance.props.interactive) { + document.body.addEventListener("mouseleave", scheduleHide); + document.addEventListener("mousemove", debouncedOnMouseMove); + return; + } + scheduleHide(); + } + function onBlur(event) { + if (event.target !== instance.reference) { + return; + } + if (instance.props.interactive && event.relatedTarget && instance.popper.contains(event.relatedTarget)) { + return; + } + scheduleHide(); + } + function onDelegateShow(event) { + if (closest(event.target, instance.props.target)) { + scheduleShow(event); + } + } + function onDelegateHide(event) { + if (closest(event.target, instance.props.target)) { + scheduleHide(); + } + } + function isEventListenerStopped(event) { + var supportsTouch = "ontouchstart" in window; + var isTouchEvent = includes(event.type, "touch"); + var touchHold = instance.props.touchHold; + return supportsTouch && isUsingTouch && touchHold && !isTouchEvent || isUsingTouch && !touchHold && isTouchEvent; + } + function createPopperInstance() { + var popperOptions = instance.props.popperOptions; + var _instance$popperChild = instance.popperChildren, tooltip = _instance$popperChild.tooltip, arrow2 = _instance$popperChild.arrow; + var preventOverflowModifier = getModifier(popperOptions, "preventOverflow"); + function applyMutations(data) { + if (instance.props.flip && !instance.props.flipOnUpdate) { + if (data.flipped) { + instance.popperInstance.options.placement = data.placement; + } + setFlipModifierEnabled(instance.popperInstance.modifiers, false); + } + tooltip.setAttribute(PLACEMENT_ATTRIBUTE, data.placement); + if (data.attributes[OUT_OF_BOUNDARIES_ATTRIBUTE] !== false) { + tooltip.setAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE, ""); + } else { + tooltip.removeAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE); + } + if (previousPlacement && previousPlacement !== data.placement && wasVisibleDuringPreviousUpdate) { + tooltip.style.transition = "none"; + requestAnimationFrame(function() { + tooltip.style.transition = ""; + }); + } + previousPlacement = data.placement; + wasVisibleDuringPreviousUpdate = instance.state.isVisible; + var basicPlacement = getBasicPlacement(instance.popper); + var styles = tooltip.style; + styles.top = styles.bottom = styles.left = styles.right = ""; + styles[basicPlacement] = getOffsetDistanceInPx(instance.props.distance); + var padding = preventOverflowModifier && preventOverflowModifier.padding !== void 0 ? preventOverflowModifier.padding : PADDING; + var isPaddingNumber = typeof padding === "number"; + var computedPadding = _extends({ + top: isPaddingNumber ? padding : padding.top, + bottom: isPaddingNumber ? padding : padding.bottom, + left: isPaddingNumber ? padding : padding.left, + right: isPaddingNumber ? padding : padding.right + }, !isPaddingNumber && padding); + computedPadding[basicPlacement] = isPaddingNumber ? padding + instance.props.distance : (padding[basicPlacement] || 0) + instance.props.distance; + instance.popperInstance.modifiers.filter(function(m) { + return m.name === "preventOverflow"; + })[0].padding = computedPadding; + } + var config = _extends({ + placement: instance.props.placement + }, popperOptions, { + modifiers: _extends({}, popperOptions ? popperOptions.modifiers : {}, { + preventOverflow: _extends({ + boundariesElement: instance.props.boundary, + padding: PADDING + }, preventOverflowModifier), + arrow: _extends({ + element: arrow2, + enabled: !!arrow2 + }, getModifier(popperOptions, "arrow")), + flip: _extends({ + enabled: instance.props.flip, + padding: instance.props.distance + PADDING, + behavior: instance.props.flipBehavior + }, getModifier(popperOptions, "flip")), + offset: _extends({ + offset: instance.props.offset + }, getModifier(popperOptions, "offset")) + }), + onCreate: function onCreate(data) { + applyMutations(data); + if (popperOptions && popperOptions.onCreate) { + popperOptions.onCreate(data); + } + }, + onUpdate: function onUpdate(data) { + applyMutations(data); + if (popperOptions && popperOptions.onUpdate) { + popperOptions.onUpdate(data); + } + } + }); + instance.popperInstance = new Popper(instance.reference, instance.popper, config); + } + function mount(callback) { + var shouldEnableListeners = !hasFollowCursorBehavior() && !(instance.props.followCursor === "initial" && isUsingTouch); + if (!instance.popperInstance) { + createPopperInstance(); + if (!shouldEnableListeners) { + instance.popperInstance.disableEventListeners(); + } + } else { + if (!hasFollowCursorBehavior()) { + instance.popperInstance.scheduleUpdate(); + if (shouldEnableListeners) { + instance.popperInstance.enableEventListeners(); + } + } + setFlipModifierEnabled(instance.popperInstance.modifiers, instance.props.flip); + } + instance.popperInstance.reference = instance.reference; + var arrow2 = instance.popperChildren.arrow; + if (hasFollowCursorBehavior()) { + if (arrow2) { + arrow2.style.margin = "0"; + } + if (lastMouseMoveEvent) { + positionVirtualReferenceNearCursor(lastMouseMoveEvent); + } + } else if (arrow2) { + arrow2.style.margin = ""; + } + if (isUsingTouch && lastMouseMoveEvent && instance.props.followCursor === "initial") { + positionVirtualReferenceNearCursor(lastMouseMoveEvent); + if (arrow2) { + arrow2.style.margin = "0"; + } + } + afterPopperPositionUpdates(instance.popperInstance, callback); + var appendTo = instance.props.appendTo; + currentParentNode = appendTo === "parent" ? instance.reference.parentNode : evaluateValue(appendTo, [instance.reference]); + if (!currentParentNode.contains(instance.popper)) { + currentParentNode.appendChild(instance.popper); + instance.props.onMount(instance); + instance.state.isMounted = true; + } + } + function scheduleShow(event) { + clearDelayTimeouts(); + if (instance.state.isVisible) { + return; + } + if (instance.props.target) { + return createDelegateChildTippy(event); + } + isScheduledToShow = true; + if (instance.props.wait) { + return instance.props.wait(instance, event); + } + if (hasFollowCursorBehavior() && !instance.state.isMounted) { + document.addEventListener("mousemove", positionVirtualReferenceNearCursor); + } + var delay = getValue(instance.props.delay, 0, defaultProps.delay); + if (delay) { + showTimeoutId = setTimeout(function() { + show(); + }, delay); + } else { + show(); + } + } + function scheduleHide() { + clearDelayTimeouts(); + if (!instance.state.isVisible) { + return removeFollowCursorListener(); + } + isScheduledToShow = false; + var delay = getValue(instance.props.delay, 1, defaultProps.delay); + if (delay) { + hideTimeoutId = setTimeout(function() { + if (instance.state.isVisible) { + hide2(); + } + }, delay); + } else { + animationFrameId = requestAnimationFrame(function() { + hide2(); + }); + } + } + function enable() { + instance.state.isEnabled = true; + } + function disable() { + instance.state.isEnabled = false; + } + function clearDelayTimeouts() { + clearTimeout(showTimeoutId); + clearTimeout(hideTimeoutId); + cancelAnimationFrame(animationFrameId); + } + function set2(options) { + options = options || {}; + validateOptions(options, defaultProps); + var prevProps = instance.props; + var nextProps = evaluateProps(instance.reference, _extends({}, instance.props, options, { + ignoreAttributes: true + })); + nextProps.ignoreAttributes = hasOwnProperty(options, "ignoreAttributes") ? options.ignoreAttributes || false : prevProps.ignoreAttributes; + instance.props = nextProps; + if (hasOwnProperty(options, "trigger") || hasOwnProperty(options, "touchHold")) { + removeTriggersFromReference(); + addTriggersToReference(); + } + if (hasOwnProperty(options, "interactiveDebounce")) { + cleanupOldMouseListeners(); + debouncedOnMouseMove = debounce(onMouseMove, options.interactiveDebounce || 0); + } + updatePopperElement(instance.popper, prevProps, nextProps); + instance.popperChildren = getChildren(instance.popper); + if (instance.popperInstance) { + instance.popperInstance.update(); + if (POPPER_INSTANCE_DEPENDENCIES.some(function(prop) { + return hasOwnProperty(options, prop) && options[prop] !== prevProps[prop]; + })) { + instance.popperInstance.destroy(); + createPopperInstance(); + if (!instance.state.isVisible) { + instance.popperInstance.disableEventListeners(); + } + if (instance.props.followCursor && lastMouseMoveEvent) { + positionVirtualReferenceNearCursor(lastMouseMoveEvent); + } + } + } + } + function setContent$$1(content) { + set2({ + content + }); + } + function show() { + var duration = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getValue(instance.props.duration, 0, defaultProps.duration[1]); + if (instance.state.isDestroyed || !instance.state.isEnabled || isUsingTouch && !instance.props.touch) { + return; + } + if (instance.reference.hasAttribute("disabled")) { + return; + } + if (instance.props.onShow(instance) === false) { + return; + } + instance.popper.style.visibility = "visible"; + instance.state.isVisible = true; + if (instance.props.interactive) { + instance.reference.classList.add(ACTIVE_CLASS); + } + var transitionableElements = getTransitionableElements(); + setTransitionDuration(transitionableElements.concat(instance.popper), 0); + mount(function() { + if (!instance.state.isVisible) { + return; + } + if (!hasFollowCursorBehavior()) { + instance.popperInstance.update(); + } + if (instance.popperChildren.backdrop) { + instance.popperChildren.content.style.transitionDelay = Math.round(duration / 12) + "ms"; + } + if (instance.props.sticky) { + makeSticky(); + } + setTransitionDuration([instance.popper], props.updateDuration); + setTransitionDuration(transitionableElements, duration); + setVisibilityState(transitionableElements, "visible"); + onTransitionedIn(duration, function() { + if (instance.props.aria) { + instance.reference.setAttribute("aria-".concat(instance.props.aria), instance.popper.id); + } + instance.props.onShown(instance); + instance.state.isShown = true; + }); + }); + } + function hide2() { + var duration = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getValue(instance.props.duration, 1, defaultProps.duration[1]); + if (instance.state.isDestroyed || !instance.state.isEnabled) { + return; + } + if (instance.props.onHide(instance) === false) { + return; + } + instance.popper.style.visibility = "hidden"; + instance.state.isVisible = false; + instance.state.isShown = false; + wasVisibleDuringPreviousUpdate = false; + if (instance.props.interactive) { + instance.reference.classList.remove(ACTIVE_CLASS); + } + var transitionableElements = getTransitionableElements(); + setTransitionDuration(transitionableElements, duration); + setVisibilityState(transitionableElements, "hidden"); + onTransitionedOut(duration, function() { + if (!isScheduledToShow) { + removeFollowCursorListener(); + } + if (instance.props.aria) { + instance.reference.removeAttribute("aria-".concat(instance.props.aria)); + } + instance.popperInstance.disableEventListeners(); + instance.popperInstance.options.placement = instance.props.placement; + currentParentNode.removeChild(instance.popper); + instance.props.onHidden(instance); + instance.state.isMounted = false; + }); + } + function destroy2(destroyTargetInstances) { + if (instance.state.isDestroyed) { + return; + } + if (instance.state.isMounted) { + hide2(0); + } + removeTriggersFromReference(); + delete instance.reference._tippy; + if (instance.props.target && destroyTargetInstances) { + arrayFrom(instance.reference.querySelectorAll(instance.props.target)).forEach(function(child) { + if (child._tippy) { + child._tippy.destroy(); + } + }); + } + if (instance.popperInstance) { + instance.popperInstance.destroy(); + } + instance.state.isDestroyed = true; + } + } + function group(instances) { + var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref$delay = _ref.delay, delay = _ref$delay === void 0 ? instances[0].props.delay : _ref$delay, _ref$duration = _ref.duration, duration = _ref$duration === void 0 ? 0 : _ref$duration; + if (instances.some(function(instance) { + return hasOwnProperty(instance, "_originalProps"); + })) { + return; + } + var isAnyTippyOpen = false; + instances.forEach(function(instance) { + instance._originalProps = _extends({}, instance.props); + }); + function setIsAnyTippyOpen(value) { + isAnyTippyOpen = value; + updateInstances(); + } + function onShow(instance) { + instance._originalProps.onShow(instance); + instances.forEach(function(instance2) { + instance2.set({ + duration + }); + instance2.hide(); + }); + setIsAnyTippyOpen(true); + } + function onHide(instance) { + instance._originalProps.onHide(instance); + setIsAnyTippyOpen(false); + } + function onShown(instance) { + instance._originalProps.onShown(instance); + instance.set({ + duration: instance._originalProps.duration + }); + } + function updateInstances() { + instances.forEach(function(instance) { + instance.set({ + onShow, + onShown, + onHide, + delay: isAnyTippyOpen ? [0, Array.isArray(delay) ? delay[1] : delay] : delay, + duration: isAnyTippyOpen ? duration : instance._originalProps.duration + }); + }); + } + updateInstances(); + } + var globalEventListenersBound = false; + function tippy(targets, options) { + validateOptions(options || {}, defaultProps); + if (!globalEventListenersBound) { + bindGlobalEventListeners(); + globalEventListenersBound = true; + } + var props = _extends({}, defaultProps, options); + if (isBareVirtualElement(targets)) { + polyfillElementPrototypeProperties(targets); + } + var instances = getArrayOfElements(targets).reduce(function(acc, reference) { + var instance = reference && createTippy(reference, props); + if (instance) { + acc.push(instance); + } + return acc; + }, []); + return isSingular(targets) ? instances[0] : instances; + } + tippy.version = version; + tippy.defaults = defaultProps; + tippy.setDefaults = function(partialDefaults) { + Object.keys(partialDefaults).forEach(function(key) { + defaultProps[key] = partialDefaults[key]; + }); + }; + tippy.hideAll = hideAll; + tippy.group = group; + function autoInit() { + arrayFrom(document.querySelectorAll("[data-tippy]")).forEach(function(el) { + var content = el.getAttribute("data-tippy"); + if (content) { + tippy(el, { + content + }); + } + }); + } + if (isBrowser) { + setTimeout(autoInit); + } + function on(event, target, callback, options = { passive: true }) { + target.addEventListener(event, callback, options); + return () => { + target.removeEventListener(event, callback, options); + }; + } + function onKey(key, event, target, callback, options) { + return on(event, target, (e) => { + if (!key) { + callback(e); + } else if (key === e.key || key === e.keyCode) { + callback(e); + } + }, options); + } + function onKeydown(keys2, target, callback, options) { + return onKey(keys2, "keydown", target, callback, options); + } + function onKeyup(keys2, target, callback, options) { + return onKey(keys2, "keyup", target, callback, options); + } + function onKeypress(keys2, target, callback, options) { + return onKey(keys2, "keypress", target, callback, options); + } + const events = { + on, + onKeydown, + onKeyup, + onKeypress + }; + const UiFocusContainer_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$z = { + name: "UiFocusContainer", + props: { + containFocus: { + type: Boolean, + default: true + }, + focusRedirector: Function, + disabled: { + type: Boolean, + default: false + }, + tag: { + type: String, + default: "div" + }, + lazy: { + type: Boolean, + default: false + } + }, + emits: ["focus-overflow"], + computed: { + renderRedirector() { + if (this.disabled) { + return false; + } + return this.lazy ? this.containFocus : true; + } + }, + methods: { + focus() { + this.$refs.content.focus(); + }, + redirectFocus(e, options) { + if (!this.containFocus) { + this.$emit("focus-overflow", e, options); + return; + } + e.stopPropagation(); + if (this.focusRedirector) { + this.focusRedirector(e, options); + return; + } + if (options.isTabbingForward) { + this.$refs.content.focus(); + } else { + this.$refs.lastFocusable.focus(); + } + } + } + }; + const _hoisted_1$x = { + ref: "content", + class: "ui-focus-container__content", + tabindex: "-1" + }; + const _hoisted_2$r = { + key: 1, + ref: "lastFocusable", + class: "ui-focus-container__last-focusable", + tabindex: "-1" + }; + function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($props.tag), { class: "ui-focus-container" }, { + default: vue.withCtx(() => [ + $options.renderRedirector ? (vue.openBlock(), vue.createElementBlock("span", { + key: 0, + class: "ui-focus-container__focus-redirector", + tabindex: "0", + onFocus: _cache[0] || (_cache[0] = ($event) => $options.redirectFocus($event, { isTabbingForward: false })) + }, null, 32)) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_1$x, [ + vue.renderSlot(_ctx.$slots, "default") + ], 512), + !$props.disabled && $props.containFocus ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$r, null, 512)) : vue.createCommentVNode("v-if", true), + $options.renderRedirector ? (vue.openBlock(), vue.createElementBlock("span", { + key: 2, + class: "ui-focus-container__focus-redirector", + tabindex: "0", + onFocus: _cache[1] || (_cache[1] = ($event) => $options.redirectFocus($event, { isTabbingForward: true })) + }, null, 32)) : vue.createCommentVNode("v-if", true) + ]), + _: 3 + }); + } + const UiFocusContainer = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$z], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiFocusContainer.vue"]]); + const UiPopover_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$y = { + name: "UiPopover", + components: { + UiFocusContainer + }, + props: { + animation: { + type: String, + default: "fade" + }, + appendToBody: { + type: Boolean, + default: true + }, + closeOnScroll: { + type: Boolean, + default: true + }, + closeOnExternalClick: { + type: Boolean, + default: true + }, + closeOnEsc: { + type: Boolean, + default: true + }, + constrainToScrollParent: { + type: Boolean, + default: true + }, + containFocus: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + focusRedirector: Function, + openOn: { + type: String, + default: "click" + }, + position: { + type: String, + default: "bottom-start" + }, + raised: { + type: Boolean, + default: true + }, + trigger: { + validator(value) { + return elementRef.validate( + value, + '[UiPopover]: Invalid prop: "trigger". Expected Element, VueComponent or CSS selector string which matches an existing element.' + ); + } + }, + zIndex: Number + }, + emits: ["open", "close", "reveal", "hide"], + data() { + return { + returnFocus: true + }; + }, + watch: { + disabled(value) { + if (this.tip) { + if (value === true) { + this.tip.disable(); + } else { + this.tip.enable(); + } + } + } + }, + created() { + this.tip = null; + }, + mounted() { + this.setupPopover(); + }, + beforeUnmount() { + this.destroyPopover(); + }, + methods: { + setupPopover() { + this.triggerEl = elementRef.resolve(this.trigger, this.$el.parentElement); + if (!this.triggerEl) { + console.error("[UiPopover]: Trigger element not found."); + return; + } + const body = this.triggerEl.getRootNode() === document ? document.body : this.triggerEl.getRootNode(); + const options = { + animateFill: false, + animation: this.animation === "none" ? "fade" : this.animation, + appendTo: this.appendToBody ? body : this.triggerEl.parentElement, + arrow: false, + content: this.$el, + delay: [0, 0], + distance: 0, + duration: this.animation === "none" ? 0 : [250, 200], + hideOnClick: this.closeOnExternalClick, + ignoreAttributes: true, + interactive: true, + lazy: true, + maxWidth: "100%", + multiple: true, + onHidden: this.onHidden, + onHide: this.onClose, + onShow: this.onOpen, + onShown: this.onShown, + placement: this.position, + role: "dialog", + theme: "ui-popover", + trigger: this.openOn.replace("hover", "mouseenter"), + zIndex: this.zIndex, + popperOptions: { + modifiers: { + computeStyle: { + gpuAcceleration: !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform)) + } + } + } + }; + if (!this.constrainToScrollParent) { + options.popperOptions.modifiers.preventOverflow = { enabled: false }; + options.popperOptions.modifiers.hide = { enabled: false }; + } + this.tip = tippy(this.triggerEl, options); + if (this.disabled) { + this.tip.disable(); + } + }, + destroyPopover() { + if (this.tip) { + this.removeCloseEventListeners(); + this.tip.destroy(); + this.tip = null; + } + }, + isOpen() { + return this.tip && this.tip.state.isVisible; + }, + open() { + if (this.tip) { + this.tip.show(); + } + }, + close(options = { returnFocus: true }) { + if (this.tip) { + this.returnFocus = options.returnFocus; + this.tip.hide(); + } + }, + toggle(options = { returnFocus: true }) { + if (this.tip) { + this.returnFocus = options.returnFocus; + this.tip[this.isOpen() ? "hide" : "show"](); + } + }, + scheduleUpdate() { + if (this.tip) { + this.tip.popperInstance.scheduleUpdate(); + } + }, + onOpen() { + this.addCloseEventListeners(); + classlist.add(this.triggerEl, "has-dropdown-open"); + this.$emit("open"); + }, + onClose() { + if (this.returnFocus && this.lastFocusedElement) { + this.lastFocusedElement.focus(); + } + this.removeCloseEventListeners(); + classlist.remove(this.triggerEl, "has-dropdown-open"); + this.$emit("close"); + this.returnFocus = true; + }, + onShown() { + this.lastFocusedElement = document.activeElement; + this.$refs.focusContainer.focus(); + this.$emit("reveal"); + }, + onHidden() { + this.$emit("hide"); + }, + closeOnExternal(event, closeOptions) { + if (!this.$el.contains(event.target)) { + this.close(closeOptions); + } + }, + addCloseEventListeners() { + this.removeCloseEventListeners(); + setTimeout(() => { + if (this.closeOnExternalClick) { + this.removeExternalClickListener = events.on("click", document, (e) => { + this.closeOnExternal(e, { returnFocus: false }); + }); + } + if (this.closeOnEsc) { + this.removeEscListener = events.onKeydown(27, document, () => { + this.close({ returnFocus: true }); + }); + } + if (this.closeOnScroll) { + this.removeScrollListener = events.on("scroll", document, (e) => { + this.closeOnExternal(e, { returnFocus: true }); + }); + } + }, 0); + }, + removeCloseEventListeners() { + if (this.removeExternalClickListener) { + this.removeExternalClickListener(); + this.removeExternalClickListener = null; + } + if (this.removeEscListener) { + this.removeEscListener(); + this.removeEscListener = null; + } + if (this.removeScrollListener) { + this.removeScrollListener(); + this.removeScrollListener = null; + } + } + } + }; + function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_focus_container = vue.resolveComponent("ui-focus-container"); + return vue.openBlock(), vue.createBlock(_component_ui_focus_container, { + ref: "focusContainer", + class: vue.normalizeClass(["ui-popover", { "is-raised": $props.raised }]), + role: "dialog", + "contain-focus": $props.containFocus, + "focus-redirector": $props.focusRedirector, + onFocusOverflow: _cache[0] || (_cache[0] = ($event) => $options.close()) + }, { + default: vue.withCtx(() => [ + vue.renderSlot(_ctx.$slots, "default") + ]), + _: 3 + }, 8, ["class", "contain-focus", "focus-redirector"]); + } + const UiPopover = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$y], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiPopover.vue"]]); + const UiProgressCircular_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$x = { + name: "UiProgressCircular", + props: { + type: { + type: String, + default: "indeterminate" + }, + color: { + type: String, + default: "primary" + }, + progress: { + type: Number, + default: 0 + }, + size: { + type: Number, + default: 32 + }, + stroke: Number, + autoStroke: { + type: Boolean, + default: true + }, + disableTransition: { + type: Boolean, + default: false + } + }, + computed: { + classes() { + return [ + `ui-progress-circular--color-${this.color}`, + `ui-progress-circular--type-${this.type}` + ]; + }, + strokeDashArray() { + const circumference = 2 * Math.PI * this.radius; + return Math.round(circumference * 1e3) / 1e3; + }, + strokeDashOffset() { + const progress = this.moderateProgress(this.progress); + const circumference = 2 * Math.PI * this.radius; + return (100 - progress) / 100 * circumference; + }, + radius() { + const stroke = this.stroke ? this.stroke : 4; + return (this.size - stroke) / 2; + }, + calculatedStroke() { + if (this.stroke) { + return this.stroke; } + if (this.autoStroke) { + return parseInt(this.size / 8, 10); + } + return 4; + } }, - - components: { - UiAutocompleteSuggestion: __WEBPACK_IMPORTED_MODULE_1__UiAutocompleteSuggestion_vue__["a" /* default */], - UiIcon: __WEBPACK_IMPORTED_MODULE_2__UiIcon_vue__["a" /* default */] - }, - - directives: { - autofocus: __WEBPACK_IMPORTED_MODULE_0__directives_autofocus__["a" /* default */] - } -}; - -/***/ }), -/* 54 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-autocomplete-suggestion', - + methods: { + moderateProgress(progress) { + if (isNaN(progress) || progress < 0) { + return 0; + } + if (progress > 100) { + return 100; + } + return progress; + } + } + }; + const _hoisted_1$w = ["aria-valuenow", "height", "width"]; + const _hoisted_2$q = ["cx", "cy", "r", "stroke-dasharray"]; + const _hoisted_3$n = { + key: 1, + class: "ui-progress-circular__indeterminate", + role: "progressbar", + viewBox: "25 25 50 50", + "aria-valuemax": 100, + "aria-valuemin": 0 + }; + const _hoisted_4$f = ["stroke-width"]; + function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createBlock(vue.Transition, { + name: $props.disableTransition ? null : "ui-progress-circular--transition-fade" + }, { + default: vue.withCtx(() => [ + vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-progress-circular", $options.classes]), + style: vue.normalizeStyle({ width: $props.size + "px", height: $props.size + "px" }) + }, [ + vue.createCommentVNode(" Alternative circle rendering to explore: http://jsfiddle.net/6e3QJ/29/ "), + $props.type === "determinate" ? (vue.openBlock(), vue.createElementBlock("svg", { + key: 0, + class: "ui-progress-circular__determinate", + role: "progressbar", + "aria-valuemax": 100, + "aria-valuemin": 0, + "aria-valuenow": $props.progress, + height: $props.size, + width: $props.size + }, [ + vue.createElementVNode("circle", { + class: "ui-progress-circular__determinate-path", + fill: "transparent", + "stroke-dashoffset": "0", + cx: $props.size / 2, + cy: $props.size / 2, + r: $options.radius, + "stroke-dasharray": $options.strokeDashArray, + style: vue.normalizeStyle({ "stroke-dashoffset": $options.strokeDashOffset, "stroke-width": $options.calculatedStroke }) + }, null, 12, _hoisted_2$q) + ], 8, _hoisted_1$w)) : (vue.openBlock(), vue.createElementBlock("svg", _hoisted_3$n, [ + vue.createElementVNode("circle", { + class: "ui-progress-circular__indeterminate-path", + cx: "50", + cy: "50", + fill: "none", + r: "20", + "stroke-miterlimit": "10", + "stroke-width": $options.calculatedStroke + }, null, 8, _hoisted_4$f) + ])) + ], 6) + ]), + _: 1 + }, 8, ["name"]); + } + const UiProgressCircular = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render$x], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiProgressCircular.vue"]]); + const UiTooltip_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$w = { + name: "UiTooltip", props: { - suggestion: { - type: [String, Object], - required: true - }, - type: { - type: String, - default: 'simple' }, - highlighted: { - type: Boolean, - default: false - }, - keys: { - type: Object, - default: function _default() { - return { - label: 'label', - image: 'image' - }; - } + animation: { + type: String, + default: "fade" + }, + appendToBody: { + type: Boolean, + default: true + }, + openDelay: { + type: Number, + default: 0 + }, + openOn: { + type: String, + default: "mouseenter focus" + }, + position: { + type: String, + default: "bottom" + }, + trigger: { + validator(value) { + return elementRef.validate( + value, + '[UiTooltip]: Invalid prop: "trigger". Expected Element, VueComponent or CSS selector string.' + ); } + }, + zIndex: Number + }, + mounted() { + this.triggerEl = elementRef.resolve(this.trigger, this.$el.parentElement); + if (!this.triggerEl) { + console.error("[UiTooltip]: Trigger element not found."); + return; + } + const body = this.triggerEl.getRootNode() === document ? document.body : this.triggerEl.getRootNode(); + const options = { + animateFill: this.animation !== "fade", + animation: this.animation === "none" ? "fade" : this.animation, + appendTo: this.appendToBody ? body : this.triggerEl.parentElement, + arrow: false, + content: this.$el, + delay: [this.openDelay, 0], + distance: 4, + duration: this.animation === "none" ? 0 : [250, 200], + ignoreAttributes: true, + lazy: true, + multiple: true, + placement: this.position, + theme: "ui-tooltip", + trigger: this.openOn.replace("hover", "mouseenter"), + zIndex: this.zIndex, + popperOptions: { + modifiers: { + computeStyle: { + gpuAcceleration: !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform)) + } + } + } + }; + this.tip = tippy(this.triggerEl, options); + }, + beforeUnmount() { + if (this.tip) { + this.tip.destroy(); + this.tip = null; + } + } + }; + const _hoisted_1$v = { class: "ui-tooltip" }; + function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$v, [ + vue.renderSlot(_ctx.$slots, "default") + ]); + } + const UiTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render$w], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTooltip.vue"]]); + const UiButton_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$v = { + name: "UiButton", + components: { + UiIcon, + UiPopover, + UiProgressCircular, + UiRippleInk, + UiTooltip }, - - computed: { - classes: function classes() { - return ['ui-autocomplete-suggestion--type-' + this.type, { 'is-highlighted': this.highlighted }]; - }, - imageStyle: function imageStyle() { - return { 'background-image': 'url(' + this.suggestion[this.keys.image] + ')' }; - } - } -}; - -/***/ }), -/* 55 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiPopover_vue__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__UiProgressCircular_vue__ = __webpack_require__(8); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__UiRippleInk_vue__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__UiTooltip_vue__ = __webpack_require__(9); - - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-button', - props: { - type: { - type: String, - default: 'primary' }, - buttonType: String, - href: String, - color: { - type: String, - default: 'default' }, - size: { - type: String, - default: 'normal' }, - raised: { - type: Boolean, - default: false - }, - icon: String, - iconPosition: { - type: String, - default: 'left' }, - loading: { - type: Boolean, - default: false - }, - hasDropdown: { - type: Boolean, - default: false - }, - dropdownPosition: { - type: String, - default: 'bottom-start' - }, - appendDropdownToBody: { - type: Boolean, - default: true - }, - constrainDropdownToScrollParent: { - type: Boolean, - default: true - }, - openDropdownOn: { - type: String, - default: 'click' }, - tooltip: String, - openTooltipOn: String, - tooltipPosition: String, - disableRipple: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false - } + type: { + type: String, + default: "primary" + }, + buttonType: String, + href: String, + color: { + type: String, + default: "default" + }, + size: { + type: String, + default: "normal" + }, + raised: { + type: Boolean, + default: false + }, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + loading: { + type: Boolean, + default: false + }, + hasDropdown: { + type: Boolean, + default: false + }, + dropdownPosition: { + type: String, + default: "bottom-start" + }, + appendDropdownToBody: { + type: Boolean, + default: true + }, + constrainDropdownToScrollParent: { + type: Boolean, + default: true + }, + openDropdownOn: { + type: String, + default: "click" + }, + tooltip: String, + openTooltipOn: String, + tooltipPosition: String, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } }, - + emits: ["dropdown-open", "dropdown-close"], computed: { - classes: function classes() { - return ['ui-button--type-' + this.type, 'ui-button--color-' + this.color, 'ui-button--icon-position-' + this.iconPosition, 'ui-button--size-' + this.size, { 'is-anchor': this.isAnchor }, { 'is-raised': this.raised }, { 'is-loading': this.loading }, { 'is-disabled': this.disabled || this.loading }, { 'has-dropdown': this.hasDropdown }]; - }, - isAnchor: function isAnchor() { - return this.href !== undefined; - }, - progressColor: function progressColor() { - if (this.color === 'default' || this.type === 'secondary') { - return 'black'; - } - - return 'white'; + classes() { + return [ + `ui-button--type-${this.type}`, + `ui-button--color-${this.color}`, + `ui-button--icon-position-${this.iconPosition}`, + `ui-button--size-${this.size}`, + { "is-anchor": this.isAnchor }, + { "is-raised": this.raised }, + { "is-loading": this.loading }, + { "is-disabled": this.disabled || this.loading }, + { "has-dropdown": this.hasDropdown } + ]; + }, + isAnchor() { + return this.href !== void 0; + }, + progressColor() { + if (this.color === "default" || this.type === "secondary") { + return "black"; } + return "white"; + } }, - methods: { - onClick: function onClick(e) { - this.$emit('click', e); - }, - onDropdownOpen: function onDropdownOpen() { - this.$emit('dropdown-open'); - }, - onDropdownClose: function onDropdownClose() { - this.$emit('dropdown-close'); - }, - openDropdown: function openDropdown() { - if (this.$refs.dropdown) { - this.$refs.dropdown.open(); - } - }, - closeDropdown: function closeDropdown() { - if (this.$refs.dropdown) { - this.$refs.dropdown.close(); - } - }, - toggleDropdown: function toggleDropdown() { - if (this.$refs.dropdown) { - this.$refs.dropdown.toggle(); - } + onDropdownOpen() { + this.$emit("dropdown-open"); + }, + onDropdownClose() { + this.$emit("dropdown-close"); + }, + openDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.open(); } - }, - - components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiPopover: __WEBPACK_IMPORTED_MODULE_1__UiPopover_vue__["a" /* default */], - UiProgressCircular: __WEBPACK_IMPORTED_MODULE_2__UiProgressCircular_vue__["a" /* default */], - UiRippleInk: __WEBPACK_IMPORTED_MODULE_3__UiRippleInk_vue__["a" /* default */], - UiTooltip: __WEBPACK_IMPORTED_MODULE_4__UiTooltip_vue__["a" /* default */] - } -}; - -/***/ }), -/* 56 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiCalendarControls_vue__ = __webpack_require__(27); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiCalendarMonth_vue__ = __webpack_require__(28); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_date__ = __webpack_require__(3); - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-calendar', - - props: { - color: { - type: String, - default: 'default' }, - dateFilter: Function, - lang: { - type: Object, - default: function _default() { - return __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].defaultLang; - } - }, - maxDate: Date, - minDate: Date, - raised: { - type: Boolean, - default: false - }, - startOfWeek: { - type: Number, - default: 0 - }, - squareCells: { - type: Boolean, - default: false - }, - value: Date, - yearRange: { - type: Array, - default: function _default() { - var thisYear = new Date().getFullYear(); - - return Array.apply(null, Array(200)).map(function (item, index) { - return thisYear - 100 + index; - }); - } + }, + closeDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.close(); } + }, + toggleDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.toggle(); + } + } + } + }; + const _hoisted_1$u = { class: "ui-button__content" }; + const _hoisted_2$p = { + key: 0, + class: "ui-button__icon" + }; + const _hoisted_3$m = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M6.984 9.984h10.03L12 15z" }) + ], -1); + const _hoisted_4$e = /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-button__focus-ring" }, null, -1); + function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_progress_circular = vue.resolveComponent("ui-progress-circular"); + const _component_ui_ripple_ink = vue.resolveComponent("ui-ripple-ink"); + const _component_ui_popover = vue.resolveComponent("ui-popover"); + const _component_ui_tooltip = vue.resolveComponent("ui-tooltip"); + return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($options.isAnchor ? "a" : "button"), { + class: vue.normalizeClass(["ui-button", $options.classes]), + disabled: $props.disabled || $props.loading, + href: $options.isAnchor ? $props.disabled ? null : $props.href : null, + type: $options.isAnchor ? null : $props.buttonType + }, { + default: vue.withCtx(() => [ + vue.createElementVNode("div", _hoisted_1$u, [ + $props.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$p, [ + vue.renderSlot(_ctx.$slots, "icon", {}, () => [ + vue.createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.renderSlot(_ctx.$slots, "default"), + $props.hasDropdown && $props.iconPosition !== "right" ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { + key: 1, + class: "ui-button__dropdown-icon" + }, { + default: vue.withCtx(() => [ + _hoisted_3$m + ]), + _: 1 + })) : vue.createCommentVNode("v-if", true) + ]), + _hoisted_4$e, + $props.loading ? (vue.openBlock(), vue.createBlock(_component_ui_progress_circular, { + key: 0, + class: "ui-button__progress", + "disable-transition": "", + color: $options.progressColor, + size: 18, + stroke: 4.5 + }, null, 8, ["color", "stroke"])) : vue.createCommentVNode("v-if", true), + !$props.disableRipple && !$props.disabled ? (vue.openBlock(), vue.createBlock(_component_ui_ripple_ink, { key: 1 })) : vue.createCommentVNode("v-if", true), + $props.hasDropdown ? (vue.openBlock(), vue.createBlock(_component_ui_popover, { + key: 2, + ref: "dropdown", + "contain-focus": "", + "append-to-body": $props.appendDropdownToBody, + "constrain-to-scroll-parent": $props.constrainDropdownToScrollParent, + position: $props.dropdownPosition, + "open-on": $props.openDropdownOn, + onClose: $options.onDropdownClose, + onOpen: $options.onDropdownOpen + }, { + default: vue.withCtx(() => [ + vue.renderSlot(_ctx.$slots, "dropdown") + ]), + _: 3 + }, 8, ["append-to-body", "constrain-to-scroll-parent", "position", "open-on", "onClose", "onOpen"])) : vue.createCommentVNode("v-if", true), + $props.tooltip ? (vue.openBlock(), vue.createBlock(_component_ui_tooltip, { + key: 3, + "open-on": $props.openTooltipOn, + position: $props.tooltipPosition + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString($props.tooltip), 1) + ]), + _: 1 + }, 8, ["open-on", "position"])) : vue.createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["class", "disabled", "href", "type"]); + } + const UiButton = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render$v], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiButton.vue"]]); + const UiIconButton_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$u = { + name: "UiIconButton", + components: { + UiIcon, + UiPopover, + UiProgressCircular, + UiRippleInk, + UiTooltip }, - - data: function data() { - return { - today: new Date(), - dateInView: this.value || new Date() - }; + props: { + type: { + type: String, + default: "primary" + }, + buttonType: String, + href: String, + color: { + type: String, + default: "default" + }, + size: { + type: String, + default: "normal" + }, + icon: String, + ariaLabel: String, + loading: { + type: Boolean, + default: false + }, + hasDropdown: { + type: Boolean, + default: false + }, + dropdownPosition: { + type: String, + default: "bottom-start" + }, + appendDropdownToBody: { + type: Boolean, + default: true + }, + constrainDropdownToScrollParent: { + type: Boolean, + default: true + }, + openDropdownOn: { + type: String, + default: "click" + }, + tooltip: String, + openTooltipOn: String, + tooltipPosition: String, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } }, - - + emits: ["dropdown-open", "dropdown-close"], computed: { - classes: function classes() { - return ['ui-calendar--color-' + this.color, { 'is-raised': this.raised }]; + classes() { + return [ + `ui-icon-button--type-${this.type}`, + `ui-icon-button--color-${this.color}`, + `ui-icon-button--size-${this.size}`, + { "is-anchor": this.isAnchor }, + { "is-loading": this.loading }, + { "is-disabled": this.disabled || this.loading }, + { "has-dropdown": this.hasDropdown } + ]; + }, + isAnchor() { + return this.href !== void 0; + }, + progressColor() { + if (this.type === "primary") { + if (this.color === "default" || this.color === "black") { + return "black"; + } + return "white"; } - }, - - watch: { - value: function value() { - if (this.value) { - this.dateInView = __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].clone(this.value); - } + if (this.color === "white") { + return "white"; } + return "black"; + } }, - methods: { - onDateSelect: function onDateSelect(date) { - this.$emit('input', date); - this.$emit('date-select', date); - }, - onMonthChange: function onMonthChange(newDate) { - this.dateInView = newDate; - this.$emit('month-change', newDate); - }, - goToDate: function goToDate(date) { - this.$refs.month.goToDate(date); + onDropdownOpen() { + this.$emit("dropdown-open"); + }, + onDropdownClose() { + this.$emit("dropdown-close"); + }, + openDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.open(); + } + }, + closeDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.close(); + } + }, + toggleDropdown() { + if (this.$refs.dropdown) { + this.$refs.dropdown.toggle(); } + } + } + }; + const _hoisted_1$t = { + key: 0, + class: "ui-icon-button__icon" + }; + const _hoisted_2$o = /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-icon-button__focus-ring" }, null, -1); + function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_progress_circular = vue.resolveComponent("ui-progress-circular"); + const _component_ui_ripple_ink = vue.resolveComponent("ui-ripple-ink"); + const _component_ui_popover = vue.resolveComponent("ui-popover"); + const _component_ui_tooltip = vue.resolveComponent("ui-tooltip"); + return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($options.isAnchor ? "a" : "button"), { + class: vue.normalizeClass(["ui-icon-button", $options.classes]), + "aria-label": $props.ariaLabel || $props.tooltip, + disabled: $props.disabled || $props.loading, + href: $options.isAnchor ? $props.disabled ? null : $props.href : null, + type: $options.isAnchor ? null : $props.buttonType + }, { + default: vue.withCtx(() => [ + $props.icon || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : vue.createCommentVNode("v-if", true), + _hoisted_2$o, + $props.loading ? (vue.openBlock(), vue.createBlock(_component_ui_progress_circular, { + key: 1, + class: "ui-icon-button__progress", + color: $options.progressColor, + size: $props.size === "large" ? 24 : 18, + stroke: 4.5 + }, null, 8, ["color", "size", "stroke"])) : vue.createCommentVNode("v-if", true), + !$props.disableRipple && !$props.disabled ? (vue.openBlock(), vue.createBlock(_component_ui_ripple_ink, { key: 2 })) : vue.createCommentVNode("v-if", true), + $props.hasDropdown ? (vue.openBlock(), vue.createBlock(_component_ui_popover, { + key: 3, + ref: "dropdown", + "contain-focus": "", + "append-to-body": $props.appendDropdownToBody, + "constrain-to-scroll-parent": $props.constrainDropdownToScrollParent, + position: $props.dropdownPosition, + "open-on": $props.openDropdownOn, + onClose: $options.onDropdownClose, + onOpen: $options.onDropdownOpen + }, { + default: vue.withCtx(() => [ + vue.renderSlot(_ctx.$slots, "dropdown") + ]), + _: 3 + }, 8, ["append-to-body", "constrain-to-scroll-parent", "position", "open-on", "onClose", "onOpen"])) : vue.createCommentVNode("v-if", true), + $props.tooltip ? (vue.openBlock(), vue.createBlock(_component_ui_tooltip, { + key: 4, + "open-on": $props.openTooltipOn, + position: $props.tooltipPosition + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString($props.tooltip), 1) + ]), + _: 1 + }, 8, ["open-on", "position"])) : vue.createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["aria-label", "class", "disabled", "href", "type"]); + } + const UiIconButton = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render$u], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiIconButton.vue"]]); + const defaultLang = { + months: { + full: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + abbreviated: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ] }, - + days: { + full: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + abbreviated: [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + initials: [ + "S", + "M", + "T", + "W", + "T", + "F", + "S" + ] + } + }; + function pad(value, length) { + while (value.length < length) { + value = "0" + value; + } + return value; + } + function getDayFull(date, lang = defaultLang) { + return lang.days.full[date.getDay()]; + } + function getDayInitial(date, lang = defaultLang) { + return lang.days.initials[date.getDay()]; + } + function getDayAbbreviated(date, lang = defaultLang) { + return lang.days.abbreviated[date.getDay()]; + } + function getMonthFull(date, lang = defaultLang) { + return lang.months.full[date.getMonth()]; + } + function getMonthAbbreviated(date, lang = defaultLang) { + return lang.months.abbreviated[date.getMonth()]; + } + function getDayOfMonth(date, options = { pad: true }) { + const day = date.getDate().toString(); + return options.pad ? pad(day) : day; + } + function humanize(date, lang = defaultLang) { + const days = lang.days.abbreviated; + const months = lang.months.full; + return days[date.getDay()] + ", " + months[date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear(); + } + function clone(date) { + return new Date(date.getTime()); + } + function moveToDayOfWeek(date, dayOfWeek) { + while (date.getDay() !== dayOfWeek) { + date.setDate(date.getDate() - 1); + } + return date; + } + function isSameDay(date1, date2) { + return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate(); + } + function isBefore(date1, date2) { + return date1.getTime() < date2.getTime(); + } + function isAfter(date1, date2) { + return date1.getTime() > date2.getTime(); + } + const dateUtils = { + defaultLang, + getDayFull, + getDayInitial, + getDayAbbreviated, + getMonthFull, + getMonthAbbreviated, + getDayOfMonth, + humanize, + clone, + moveToDayOfWeek, + isSameDay, + isBefore, + isAfter + }; + const UiCalendarControls_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$t = { + name: "UiCalendarControls", components: { - UiCalendarControls: __WEBPACK_IMPORTED_MODULE_0__UiCalendarControls_vue__["a" /* default */], - UiCalendarMonth: __WEBPACK_IMPORTED_MODULE_1__UiCalendarMonth_vue__["a" /* default */] - } -}; - -/***/ }), -/* 57 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiIconButton_vue__ = __webpack_require__(11); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_date__ = __webpack_require__(3); - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-calendar-controls', - + UiIcon, + UiIconButton + }, props: { - color: { - type: String, - default: 'default' }, - lang: Object, - dateInView: Date, - minDate: Date, - maxDate: Date, - yearRange: { - type: Array, - required: true - } - }, - + color: { + type: String, + default: "default" + }, + lang: Object, + dateInView: Date, + minDate: Date, + maxDate: Date, + yearRange: { + type: Array, + required: true + } + }, + emits: ["go-to-date"], computed: { - classes: function classes() { - return ['ui-calendar-controls--color-' + this.color]; - }, - monthAndYear: function monthAndYear() { - return __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].getMonthFull(this.dateInView, this.lang) + ' ' + this.dateInView.getFullYear(); - }, - previousMonthDisabled: function previousMonthDisabled() { - var lastDayOfPreviousMonth = __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].clone(this.dateInView); - - lastDayOfPreviousMonth.setDate(0); - - var firstYear = Math.min(this.yearRange[0], this.yearRange[this.yearRange.length - 1]); - var outsideYearRange = lastDayOfPreviousMonth.getFullYear() < firstYear; - - if (this.minDate) { - return outsideYearRange || lastDayOfPreviousMonth.getTime() < this.minDate.getTime(); - } - - return outsideYearRange; - }, - nextMonthDisabled: function nextMonthDisabled() { - var firstDayOfNextMonth = __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].clone(this.dateInView); - - firstDayOfNextMonth.setMonth(this.dateInView.getMonth() + 1, 1); - - var lastYear = Math.max(this.yearRange[0], this.yearRange[this.yearRange.length - 1]); - var outsideYearRange = firstDayOfNextMonth.getFullYear() > lastYear; - - if (this.maxDate) { - return outsideYearRange || firstDayOfNextMonth.getTime() > this.maxDate.getTime(); - } - - return outsideYearRange; - } + classes() { + return [`ui-calendar-controls--color-${this.color}`]; + }, + monthAndYear() { + return dateUtils.getMonthFull(this.dateInView, this.lang) + " " + this.dateInView.getFullYear(); + }, + previousMonthDisabled() { + const lastDayOfPreviousMonth = dateUtils.clone(this.dateInView); + lastDayOfPreviousMonth.setDate(0); + const firstYear = Math.min(this.yearRange[0], this.yearRange[this.yearRange.length - 1]); + const outsideYearRange = lastDayOfPreviousMonth.getFullYear() < firstYear; + if (this.minDate) { + return outsideYearRange || lastDayOfPreviousMonth.getTime() < this.minDate.getTime(); + } + return outsideYearRange; + }, + nextMonthDisabled() { + const firstDayOfNextMonth = dateUtils.clone(this.dateInView); + firstDayOfNextMonth.setMonth(this.dateInView.getMonth() + 1, 1); + const lastYear = Math.max(this.yearRange[0], this.yearRange[this.yearRange.length - 1]); + const outsideYearRange = firstDayOfNextMonth.getFullYear() > lastYear; + if (this.maxDate) { + return outsideYearRange || firstDayOfNextMonth.getTime() > this.maxDate.getTime(); + } + return outsideYearRange; + } }, - methods: { - goToPreviousMonth: function goToPreviousMonth() { - var date = __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].clone(this.dateInView); - - date.setDate(1); - date.setMonth(date.getMonth() - 1); - - this.goToDate(date); - }, - goToNextMonth: function goToNextMonth() { - var date = __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].clone(this.dateInView); - - date.setDate(1); - date.setMonth(date.getMonth() + 1); - - this.goToDate(date); - }, - goToDate: function goToDate(date) { - this.$emit('go-to-date', date); - } + goToPreviousMonth() { + const date = dateUtils.clone(this.dateInView); + date.setDate(1); + date.setMonth(date.getMonth() - 1); + this.goToDate(date); + }, + goToNextMonth() { + const date = dateUtils.clone(this.dateInView); + date.setDate(1); + date.setMonth(date.getMonth() + 1); + this.goToDate(date); + }, + goToDate(date) { + this.$emit("go-to-date", date); + } + } + }; + const _hoisted_1$s = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M15.422 16.078l-1.406 1.406-6-6 6-6 1.406 1.406-4.594 4.594z" }) + ], -1); + const _hoisted_2$n = { class: "ui-calendar-controls__month-and-year" }; + const _hoisted_3$l = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M8.578 16.36l4.594-4.595L8.578 7.17l1.406-1.405 6 6-6 6z" }) + ], -1); + function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_icon_button = vue.resolveComponent("ui-icon-button"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-calendar-controls", $options.classes]) + }, [ + vue.createVNode(_component_ui_icon_button, { + class: "ui-calendar-controls__nav-button", + icon: "keyboard_arrow_left", + type: "secondary", + color: $props.color === "default" ? "default" : "white", + disabled: $options.previousMonthDisabled, + onClick: $options.goToPreviousMonth + }, { + default: vue.withCtx(() => [ + vue.createVNode(_component_ui_icon, null, { + default: vue.withCtx(() => [ + _hoisted_1$s + ]), + _: 1 + }) + ]), + _: 1 + }, 8, ["color", "disabled", "onClick"]), + vue.createElementVNode("div", _hoisted_2$n, vue.toDisplayString($options.monthAndYear), 1), + vue.createVNode(_component_ui_icon_button, { + class: "ui-calendar-controls__nav-button", + icon: "keyboard_arrow_right", + type: "secondary", + color: $props.color === "default" ? "default" : "white", + disabled: $options.nextMonthDisabled, + onClick: $options.goToNextMonth + }, { + default: vue.withCtx(() => [ + vue.createVNode(_component_ui_icon, null, { + default: vue.withCtx(() => [ + _hoisted_3$l + ]), + _: 1 + }) + ]), + _: 1 + }, 8, ["color", "disabled", "onClick"]) + ], 2); + } + const UiCalendarControls = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render$t], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCalendarControls.vue"]]); + const UiCalendarWeek_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$s = { + name: "UiCalendarWeek", + props: { + month: Number, + weekStart: Date, + minDate: Date, + maxDate: Date, + selected: Date, + dateFilter: Function, + color: { + type: String, + default: "primary" + }, + squareCells: { + type: Boolean, + default: false + } + }, + emits: ["date-select"], + data() { + return { + today: new Date() + }; + }, + computed: { + dates() { + return this.buildDays(this.weekStart); + }, + classes() { + return [ + `ui-calendar-week--color-${this.color}`, + { "ui-calendar-week--has-square-cells": this.squareCells } + ]; + } }, - + methods: { + buildDays(weekStart) { + const days = [dateUtils.clone(weekStart)]; + let day = dateUtils.clone(weekStart); + for (let i2 = 1; i2 <= 6; i2++) { + day = dateUtils.clone(day); + day.setDate(day.getDate() + 1); + days.push(day); + } + return days; + }, + getDateClasses(date) { + return [ + { "is-today": dateUtils.isSameDay(date, this.today) }, + { "is-in-other-month": this.isDateInOtherMonth(date) }, + { "is-selected": this.selected && dateUtils.isSameDay(date, this.selected) }, + { "is-disabled": this.isDateDisabled(date) } + ]; + }, + selectDate(date) { + if (this.isDateDisabled(date)) { + return; + } + this.$emit("date-select", date); + }, + isDateInOtherMonth(date) { + return this.month !== date.getMonth(); + }, + isDateDisabled(date) { + const isDisabled = this.minDate && dateUtils.isBefore(date, this.minDate) || this.maxDate && dateUtils.isAfter(date, this.maxDate); + if (isDisabled) { + return true; + } + return this.dateFilter ? !this.dateFilter(date) : false; + } + } + }; + const _hoisted_1$r = ["disabled", "onClick"]; + function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("tr", { + class: vue.normalizeClass(["ui-calendar-week", $options.classes]) + }, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($options.dates, (date) => { + return vue.openBlock(), vue.createElementBlock("td", { + key: date.toString() + }, [ + vue.createElementVNode("button", { + class: vue.normalizeClass(["ui-calendar-week__date", $options.getDateClasses(date)]), + disabled: $options.isDateDisabled(date), + onClick: ($event) => $options.selectDate(date) + }, [ + vue.renderSlot(_ctx.$slots, "default", { date }, () => [ + vue.createTextVNode(vue.toDisplayString(date.getDate()), 1) + ]) + ], 10, _hoisted_1$r) + ]); + }), 128)) + ], 2); + } + const UiCalendarWeek = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render$s], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCalendarWeek.vue"]]); + const UiCalendarMonth_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$r = { + name: "UiCalendarMonth", components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiIconButton: __WEBPACK_IMPORTED_MODULE_1__UiIconButton_vue__["a" /* default */] - } -}; - -/***/ }), -/* 58 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiCalendarWeek_vue__ = __webpack_require__(141); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers_date__ = __webpack_require__(3); - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-calendar-month', - + UiCalendarWeek + }, props: { - lang: Object, - dateFilter: Function, - dateInView: Date, - selected: Date, - maxDate: Date, - minDate: Date, - startOfWeek: { - type: Number, - default: 0 - }, - color: { - type: String, - default: 'primary' }, - squareCells: { - type: Boolean, - default: false - } + lang: Object, + dateFilter: Function, + dateInView: Date, + selected: Date, + maxDate: Date, + minDate: Date, + startOfWeek: { + type: Number, + default: 0 + }, + color: { + type: String, + default: "primary" + }, + squareCells: { + type: Boolean, + default: false + } }, - + emits: ["date-select", "change"], computed: { - daysOfWeek: function daysOfWeek() { - var days = this.lang.days.initials.slice(this.startOfWeek); - - if (days.length === 7) { - return days; - } - - return days.concat(this.lang.days.initials.slice(0, this.startOfWeek)); - }, - currentWeekStartDates: function currentWeekStartDates() { - return this.getWeekStartDates(this.dateInView); + daysOfWeek() { + const days = this.lang.days.initials.slice(this.startOfWeek); + if (days.length === 7) { + return days; } + return days.concat(this.lang.days.initials.slice(0, this.startOfWeek)); + }, + currentWeekStartDates() { + return this.getWeekStartDates(this.dateInView); + } }, - methods: { - getWeekStartDates: function getWeekStartDates(dateInWeek) { - var date = __WEBPACK_IMPORTED_MODULE_1__helpers_date__["a" /* default */].clone(dateInWeek); - - date.setDate(1); - date = __WEBPACK_IMPORTED_MODULE_1__helpers_date__["a" /* default */].moveToDayOfWeek(date, this.startOfWeek); - - var current = __WEBPACK_IMPORTED_MODULE_1__helpers_date__["a" /* default */].clone(date); - current.setDate(current.getDate() + 7); - - var starts = [date]; - var month = current.getMonth(); - - while (current.getMonth() === month) { - starts.push(__WEBPACK_IMPORTED_MODULE_1__helpers_date__["a" /* default */].clone(current)); - current.setDate(current.getDate() + 7); - } - - return starts; - }, - goToDate: function goToDate(date) { - this.$emit('change', __WEBPACK_IMPORTED_MODULE_1__helpers_date__["a" /* default */].clone(date)); - }, - onDateSelect: function onDateSelect(date) { - this.$emit('date-select', date); - } - }, - + getWeekStartDates(dateInWeek) { + let date = dateUtils.clone(dateInWeek); + date.setDate(1); + date = dateUtils.moveToDayOfWeek(date, this.startOfWeek); + const current = dateUtils.clone(date); + current.setDate(current.getDate() + 7); + const starts = [date]; + const month = current.getMonth(); + while (current.getMonth() === month) { + starts.push(dateUtils.clone(current)); + current.setDate(current.getDate() + 7); + } + return starts; + }, + goToDate(date) { + this.$emit("change", dateUtils.clone(date)); + }, + onDateSelect(date) { + this.$emit("date-select", date); + } + } + }; + const _hoisted_1$q = { class: "ui-calendar-month" }; + const _hoisted_2$m = { class: "ui-calendar-month__header" }; + const _hoisted_3$k = { class: "ui-calendar-month__body" }; + function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_calendar_week = vue.resolveComponent("ui-calendar-week"); + return vue.openBlock(), vue.createElementBlock("table", _hoisted_1$q, [ + vue.createElementVNode("thead", _hoisted_2$m, [ + vue.createElementVNode("tr", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($options.daysOfWeek, (day) => { + return vue.openBlock(), vue.createElementBlock("th", { key: day }, vue.toDisplayString(day), 1); + }), 128)) + ]) + ]), + vue.createElementVNode("tbody", _hoisted_3$k, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($options.currentWeekStartDates, (date) => { + return vue.openBlock(), vue.createBlock(_component_ui_calendar_week, { + key: date.toString(), + color: $props.color, + "date-filter": $props.dateFilter, + "max-date": $props.maxDate, + "min-date": $props.minDate, + month: $options.currentWeekStartDates[1].getMonth(), + selected: $props.selected, + "square-cells": $props.squareCells, + "week-start": date, + onDateSelect: $options.onDateSelect + }, vue.createSlots({ _: 2 }, [ + _ctx.$slots.date ? { + name: "default", + fn: vue.withCtx((props) => [ + vue.renderSlot(_ctx.$slots, "date", { + date: props.date + }) + ]) + } : void 0 + ]), 1032, ["color", "date-filter", "max-date", "min-date", "month", "selected", "square-cells", "week-start", "onDateSelect"]); + }), 128)) + ]) + ]); + } + const UiCalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render$r], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCalendarMonth.vue"]]); + const UiCalendar_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$q = { + name: "UiCalendar", components: { - UiCalendarWeek: __WEBPACK_IMPORTED_MODULE_0__UiCalendarWeek_vue__["a" /* default */] - } -}; - -/***/ }), -/* 59 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_date__ = __webpack_require__(3); - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-calendar-week', - + UiCalendarControls, + UiCalendarMonth + }, props: { - month: Number, - weekStart: Date, - minDate: Date, - maxDate: Date, - selected: Date, - dateFilter: Function, - color: { - type: String, - default: 'primary' - }, - squareCells: { - type: Boolean, - default: false + color: { + type: String, + default: "default" + }, + dateFilter: Function, + lang: { + type: Object, + default() { + return dateUtils.defaultLang; + } + }, + maxDate: Date, + minDate: Date, + raised: { + type: Boolean, + default: false + }, + startOfWeek: { + type: Number, + default: 0 + }, + squareCells: { + type: Boolean, + default: false + }, + modelValue: Date, + yearRange: { + type: Array, + default() { + const thisYear = new Date().getFullYear(); + return Array.apply(null, Array(200)).map((item, index) => { + return thisYear - 100 + index; + }); } + } }, - - data: function data() { - return { - today: new Date() - }; + emits: ["update:modelValue", "date-select", "month-change"], + data() { + return { + today: new Date(), + dateInView: this.modelValue || new Date() + }; }, - - computed: { - dates: function dates() { - return this.buildDays(this.weekStart); - }, - classes: function classes() { - return ['ui-calendar-week--color-' + this.color, { 'ui-calendar-week--has-square-cells': this.squareCells }]; + classes() { + return [`ui-calendar--color-${this.color}`, { "is-raised": this.raised }]; + } + }, + watch: { + modelValue() { + if (this.modelValue) { + this.dateInView = dateUtils.clone(this.modelValue); } + } }, - - methods: { - buildDays: function buildDays(weekStart) { - var days = [__WEBPACK_IMPORTED_MODULE_0__helpers_date__["a" /* default */].clone(weekStart)]; - var day = __WEBPACK_IMPORTED_MODULE_0__helpers_date__["a" /* default */].clone(weekStart); - - for (var i = 1; i <= 6; i++) { - day = __WEBPACK_IMPORTED_MODULE_0__helpers_date__["a" /* default */].clone(day); - day.setDate(day.getDate() + 1); - - days.push(day); - } - - return days; - }, - getDateClasses: function getDateClasses(date) { - return [{ 'is-today': __WEBPACK_IMPORTED_MODULE_0__helpers_date__["a" /* default */].isSameDay(date, this.today) }, { 'is-in-other-month': this.isDateInOtherMonth(date) }, { 'is-selected': this.selected && __WEBPACK_IMPORTED_MODULE_0__helpers_date__["a" /* default */].isSameDay(date, this.selected) }, { 'is-disabled': this.isDateDisabled(date) }]; - }, - selectDate: function selectDate(date) { - if (this.isDateDisabled(date)) { - return; - } - - this.$emit('date-select', date); - }, - isDateInOtherMonth: function isDateInOtherMonth(date) { - return this.month !== date.getMonth(); - }, - isDateDisabled: function isDateDisabled(date) { - var isDisabled = this.minDate && __WEBPACK_IMPORTED_MODULE_0__helpers_date__["a" /* default */].isBefore(date, this.minDate) || this.maxDate && __WEBPACK_IMPORTED_MODULE_0__helpers_date__["a" /* default */].isAfter(date, this.maxDate); - - if (isDisabled) { - return true; - } - - return this.dateFilter ? !this.dateFilter(date) : false; - } - } -}; - -/***/ }), -/* 60 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-checkbox', - + methods: { + onDateSelect(date) { + this.$emit("update:modelValue", date); + this.$emit("date-select", date); + }, + onMonthChange(newDate) { + this.dateInView = newDate; + this.$emit("month-change", newDate); + }, + goToDate(date) { + this.$refs.month.goToDate(date); + } + } + }; + const _hoisted_1$p = { class: "ui-calendar__body" }; + function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_calendar_controls = vue.resolveComponent("ui-calendar-controls"); + const _component_ui_calendar_month = vue.resolveComponent("ui-calendar-month"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-calendar", $options.classes]) + }, [ + vue.createVNode(_component_ui_calendar_controls, { + ref: "controls", + class: "ui-calendar__header", + color: $props.color, + "date-in-view": $data.dateInView, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + "year-range": $props.yearRange, + onGoToDate: $options.goToDate + }, null, 8, ["color", "date-in-view", "lang", "max-date", "min-date", "year-range", "onGoToDate"]), + vue.createElementVNode("div", _hoisted_1$p, [ + vue.createVNode(_component_ui_calendar_month, { + ref: "month", + color: $props.color, + "date-in-view": $data.dateInView, + lang: $props.lang, + selected: $props.modelValue, + "start-of-week": $props.startOfWeek, + "square-cells": $props.squareCells, + onChange: $options.onMonthChange, + onDateSelect: $options.onDateSelect + }, { + date: vue.withCtx((props) => [ + _ctx.$slots.date ? vue.renderSlot(_ctx.$slots, "date", { + key: 0, + date: props.date + }) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [ + vue.createTextVNode(vue.toDisplayString(props.date.getDate()), 1) + ], 64)) + ]), + _: 3 + }, 8, ["color", "date-in-view", "lang", "selected", "start-of-week", "square-cells", "onChange", "onDateSelect"]) + ]) + ], 2); + } + const UiCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$q], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCalendar.vue"]]); + const UiCheckbox_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$p = { + name: "UiCheckbox", props: { - name: String, - label: String, - tabindex: [String, Number], - value: { - required: true - }, - trueValue: { - default: true - }, - falseValue: { - default: false - }, - submittedValue: { - type: String, - default: 'on' }, - checked: { - type: Boolean, - default: false - }, - boxPosition: { - type: String, - default: 'left' }, - color: { - type: String, - default: 'primary' }, - disabled: { - type: Boolean, - default: false - } - }, - - data: function data() { - return { - isActive: false, - isChecked: this.value === this.trueValue || this.checked - }; + name: String, + label: String, + tabindex: [String, Number], + modelValue: { + required: true + }, + trueValue: { + default: true + }, + falseValue: { + default: false + }, + submittedValue: { + type: String, + default: "on" + }, + checked: { + type: Boolean, + default: false + }, + boxPosition: { + type: String, + default: "left" + }, + color: { + type: String, + default: "primary" + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "change", "focus", "blur", "change"], + data() { + return { + isActive: false, + isChecked: this.modelValue === this.trueValue || this.checked + }; }, - - computed: { - classes: function classes() { - return ['ui-checkbox--color-' + this.color, 'ui-checkbox--box-position-' + this.boxPosition, { 'is-checked': this.isChecked }, { 'is-active': this.isActive }, { 'is-disabled': this.disabled }]; - } + classes() { + return [ + `ui-checkbox--color-${this.color}`, + `ui-checkbox--box-position-${this.boxPosition}`, + { "is-checked": this.isChecked }, + { "is-active": this.isActive }, + { "is-disabled": this.disabled } + ]; + } }, - watch: { - value: function value() { - this.isChecked = this.value === this.trueValue; - } + modelValue() { + this.isChecked = this.modelValue === this.trueValue; + } }, - - created: function created() { - this.$emit('input', this.isChecked ? this.trueValue : this.falseValue); + created() { + const value = this.isChecked ? this.trueValue : this.falseValue; + if (this.modelValue !== value) { + this.$emit("update:modelValue", value); + } }, - - methods: { - focus: function focus() { - this.$refs.input.focus(); - }, - onClick: function onClick(e) { - var isCheckedPrevious = this.isChecked; - var isChecked = e.target.checked; - - this.$emit('input', isChecked ? this.trueValue : this.falseValue, e); - - if (isCheckedPrevious !== isChecked) { - this.$emit('change', isChecked ? this.trueValue : this.falseValue, e); - } - }, - onFocus: function onFocus(e) { - this.isActive = true; - this.$emit('focus', e); - }, - onBlur: function onBlur(e) { - this.isActive = false; - this.$emit('blur', e); - } - } -}; - -/***/ }), -/* 61 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiCheckbox_vue__ = __webpack_require__(15); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers_util__ = __webpack_require__(6); - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-checkbox-group', - + focus() { + this.$refs.input.focus(); + }, + onClick(e) { + const isCheckedPrevious = this.isChecked; + const isChecked = e.target.checked; + this.$emit("update:modelValue", isChecked ? this.trueValue : this.falseValue, e); + if (isCheckedPrevious !== isChecked) { + this.$emit("change", isChecked ? this.trueValue : this.falseValue, e); + } + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + } + } + }; + const _hoisted_1$o = [".checked", "disabled", "name", "tabindex", "value"]; + const _hoisted_2$l = /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-checkbox__checkmark" }, [ + /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-checkbox__checkmark-background" }), + /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-checkbox__focus-ring" }) + ], -1); + const _hoisted_3$j = { + key: 0, + class: "ui-checkbox__label-text" + }; + function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("label", { + class: vue.normalizeClass(["ui-checkbox", $options.classes]) + }, [ + vue.createElementVNode("input", { + ref: "input", + class: "ui-checkbox__input", + type: "checkbox", + ".checked": $data.isChecked, + disabled: $props.disabled, + name: $props.name, + tabindex: $props.tabindex, + value: $props.submittedValue, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onClick: _cache[1] || (_cache[1] = (...args) => $options.onClick && $options.onClick(...args)), + onFocus: _cache[2] || (_cache[2] = (...args) => $options.onFocus && $options.onFocus(...args)) + }, null, 40, _hoisted_1$o), + _hoisted_2$l, + $props.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$j, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.label), 1) + ]) + ])) : vue.createCommentVNode("v-if", true) + ], 2); + } + const UiCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$p], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCheckbox.vue"]]); + const UiCheckboxGroup_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$o = { + name: "UiCheckboxGroup", + components: { + UiCheckbox + }, props: { - name: String, - options: { - type: Array, - required: true - }, - value: { - type: Array, - required: true - }, - keys: { - type: Object, - default: function _default() { - return { - id: 'id', - name: 'name', - class: 'class', - label: 'label', - value: 'value', - disabled: 'disabled' - }; - } - }, - label: String, - color: { - type: String, - default: 'primary' }, - boxPosition: { - type: String, - default: 'left' }, - vertical: { - type: Boolean, - default: false - }, - help: String, - error: String, - invalid: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false + name: String, + options: { + type: Array, + required: true + }, + modelValue: { + type: Array, + required: true + }, + keys: { + type: Object, + default() { + return { + id: "id", + name: "name", + class: "class", + label: "label", + value: "value", + disabled: "disabled" + }; } + }, + label: String, + color: { + type: String, + default: "primary" + }, + boxPosition: { + type: String, + default: "left" + }, + vertical: { + type: Boolean, + default: false + }, + help: String, + error: String, + invalid: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } }, - - data: function data() { - return { - isActive: false, - ignoreChange: false, - checkboxValues: [], - initialValue: JSON.parse(JSON.stringify(this.value)) - }; + emits: ["update:modelValue", "focus", "blur", "change"], + data() { + return { + isActive: false, + ignoreChange: false, + checkboxValues: [], + initialValue: JSON.parse(JSON.stringify(this.modelValue)) + }; }, - - computed: { - classes: function classes() { - return ['ui-checkbox-group--color-' + this.color, 'ui-checkbox-group--box-position-' + this.boxPosition, { 'is-vertical': this.vertical }, { 'is-active': this.isActive }, { 'is-invalid': this.invalid }, { 'is-disabled': this.disabled }]; - }, - hasFeedback: function hasFeedback() { - return this.showError || this.showHelp; - }, - showError: function showError() { - return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); - }, - showHelp: function showHelp() { - return Boolean(this.help) || Boolean(this.$slots.help); - } + classes() { + return [ + `ui-checkbox-group--color-${this.color}`, + `ui-checkbox-group--box-position-${this.boxPosition}`, + { "is-vertical": this.vertical }, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-disabled": this.disabled } + ]; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + } }, - methods: { - reset: function reset() { - var _this = this; - - this.ignoreChange = true; - this.options.forEach(function (option, index) { - _this.checkboxValues[index] = _this.isOptionCheckedByDefault(option); - }); - this.ignoreChange = false; - - this.$emit('input', this.initialValue.length > 0 ? [].concat(this.initialValue) : []); - }, - isOptionCheckedByDefault: function isOptionCheckedByDefault(option) { - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__helpers_util__["c" /* looseIndexOf */])(this.initialValue, option[this.keys.value] || option) > -1; - }, - onFocus: function onFocus(e) { - this.isActive = true; - this.$emit('focus', e); - }, - onBlur: function onBlur(e) { - this.isActive = false; - this.$emit('blur', e); - }, - onChange: function onChange(args, option) { - if (this.ignoreChange) { - return; - } - - var checked = args[0]; - var e = args[1]; - - var value = []; - var optionValue = option[this.keys.value] || option; - var i = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__helpers_util__["c" /* looseIndexOf */])(this.value, optionValue); - - if (checked && i < 0) { - value = this.value.concat(optionValue); - } - - if (!checked && i > -1) { - value = this.value.slice(0, i).concat(this.value.slice(i + 1)); - } - - this.$emit('input', value); - this.$emit('change', value, e); - } - }, - + reset() { + this.ignoreChange = true; + this.options.forEach((option, index) => { + this.checkboxValues[index] = this.isOptionCheckedByDefault(option); + }); + this.ignoreChange = false; + this.$emit( + "update:modelValue", + this.initialValue.length > 0 ? [].concat(this.initialValue) : [] + ); + }, + isOptionCheckedByDefault(option) { + return looseIndexOf(this.initialValue, option[this.keys.value] || option) > -1; + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + }, + onChange(args, option) { + if (this.ignoreChange) { + return; + } + const checked = args[0]; + const e = args[1]; + let value = []; + const optionValue = option[this.keys.value] || option; + const i2 = looseIndexOf(this.modelValue, optionValue); + if (checked && i2 < 0) { + value = this.modelValue.concat(optionValue); + } + if (!checked && i2 > -1) { + value = this.modelValue.slice(0, i2).concat(this.modelValue.slice(i2 + 1)); + } + this.$emit("update:modelValue", value); + this.$emit("change", value, e); + } + } + }; + const _hoisted_1$n = { + key: 0, + class: "ui-checkbox-group__label-text" + }; + const _hoisted_2$k = { class: "ui-checkbox-group__checkboxes" }; + const _hoisted_3$i = { + key: 1, + class: "ui-checkbox-group__feedback" + }; + const _hoisted_4$d = { + key: 0, + class: "ui-checkbox-group__feedback-text" + }; + const _hoisted_5$d = { + key: 1, + class: "ui-checkbox-group__feedback-text" + }; + function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_checkbox = vue.resolveComponent("ui-checkbox"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-checkbox-group", $options.classes]) + }, [ + $props.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.label), 1) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_2$k, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($props.options, (option, index) => { + return vue.openBlock(), vue.createBlock(_component_ui_checkbox, { + id: option[$props.keys.id], + key: option[$props.keys.id], + modelValue: $data.checkboxValues[index], + "onUpdate:modelValue": ($event) => $data.checkboxValues[index] = $event, + class: vue.normalizeClass(["ui-checkbox-group__checkbox", option[$props.keys.class]]), + "box-position": $props.boxPosition, + checked: $options.isOptionCheckedByDefault(option), + color: $props.color, + disabled: $props.disabled || option[$props.keys.disabled], + name: $props.name || option[$props.keys.name], + onBlur: $options.onBlur, + onChange: ($event) => $options.onChange(arguments, option), + onFocus: $options.onFocus + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString(option[$props.keys.label] || option), 1) + ]), + _: 2 + }, 1032, ["id", "modelValue", "onUpdate:modelValue", "box-position", "checked", "class", "color", "disabled", "name", "onBlur", "onChange", "onFocus"]); + }), 128)) + ]), + $options.hasFeedback ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$i, [ + $options.showError ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$d, [ + vue.renderSlot(_ctx.$slots, "error", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$d, [ + vue.renderSlot(_ctx.$slots, "help", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.help), 1) + ]) + ])) : vue.createCommentVNode("v-if", true) + ])) : vue.createCommentVNode("v-if", true) + ], 2); + } + const UiCheckboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$o], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCheckboxGroup.vue"]]); + /** + * Fast UUID generator, RFC4122 version 4 compliant. + * @author Jeff Ward (jcward.com). + * @license MIT license + * @link http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 + */ + const lut = []; + for (let i2 = 0; i2 < 256; i2++) { + lut[i2] = (i2 < 16 ? "0" : "") + i2.toString(16); + } + const generate = function() { + const d0 = Math.random() * 4294967295 | 0; + const d1 = Math.random() * 4294967295 | 0; + const d2 = Math.random() * 4294967295 | 0; + const d3 = Math.random() * 4294967295 | 0; + return lut[d0 & 255] + lut[d0 >> 8 & 255] + lut[d0 >> 16 & 255] + lut[d0 >> 24 & 255] + "-" + lut[d1 & 255] + lut[d1 >> 8 & 255] + "-" + lut[d1 >> 16 & 15 | 64] + lut[d1 >> 24 & 255] + "-" + lut[d2 & 63 | 128] + lut[d2 >> 8 & 255] + "-" + lut[d2 >> 16 & 255] + lut[d2 >> 24 & 255] + lut[d3 & 255] + lut[d3 >> 8 & 255] + lut[d3 >> 16 & 255] + lut[d3 >> 24 & 255]; + }; + const short = function(prefix) { + prefix = prefix || ""; + const uuid = generate(); + return prefix + uuid.split("-")[0]; + }; + const UUID = { + generate, + short + }; + const UiCollapsible_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$n = { + name: "UiCollapsible", components: { - UiCheckbox: __WEBPACK_IMPORTED_MODULE_0__UiCheckbox_vue__["a" /* default */] - } -}; - -/***/ }), -/* 62 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__ = __webpack_require__(2); - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-close-button', - + UiIcon, + UiRippleInk + }, props: { - size: { - type: String, - default: 'normal' }, - color: { - type: String, - default: 'black' }, - disableRipple: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false - } + open: { + type: Boolean, + default: false + }, + title: String, + removeIcon: { + type: Boolean, + default: false + }, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["open", "close"], + data() { + return { + isOpen: this.open, + id: UUID.short("ui-collapsible-") + }; }, - computed: { - classes: function classes() { - return ['ui-close-button--size-' + this.size, 'ui-close-button--color-' + this.color, { 'is-disabled': this.disabled || this.loading }]; + classes() { + return [{ "is-open": this.isOpen }, { "is-disabled": this.disabled }]; + } + }, + watch: { + open() { + if (this.isOpen !== this.open) { + this.isOpen = this.open; } + } + }, + mounted() { + if (this.isOpen) { + this.$refs.bodyWrapper.style.maxHeight = "none"; + } }, - methods: { - onClick: function onClick(e) { - this.$emit('click', e); + toggleCollapsible() { + if (this.disabled) { + return; } - }, - + this.isOpen = !this.isOpen; + }, + onEnter(el) { + this.$emit("open"); + el.style.maxHeight = el.scrollHeight + "px"; + }, + afterEnter(el) { + el.style.maxHeight = "none"; + }, + beforeLeave(el) { + el.style.maxHeight = el.scrollHeight + "px"; + el.offsetHeight; + }, + onLeave(el) { + el.style.maxHeight = 0; + this.$emit("close"); + } + } + }; + const _hoisted_1$m = ["aria-controls", "aria-expanded", "tabindex"]; + const _hoisted_2$j = { class: "ui-collapsible__header-content" }; + const _hoisted_3$h = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M7.406 7.828L12 12.422l4.594-4.594L18 9.234l-6 6-6-6z" }) + ], -1); + const _hoisted_4$c = ["id", "aria-hidden"]; + const _hoisted_5$c = { class: "ui-collapsible__body" }; + function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_ripple_ink = vue.resolveComponent("ui-ripple-ink"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-collapsible", $options.classes]) + }, [ + vue.createElementVNode("div", { + class: "ui-collapsible__header", + "aria-controls": $data.id, + "aria-expanded": $data.isOpen ? "true" : "false", + tabindex: $props.disabled ? null : 0, + onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleCollapsible && $options.toggleCollapsible(...args)), + onKeydown: [ + _cache[1] || (_cache[1] = vue.withKeys(vue.withModifiers((...args) => $options.toggleCollapsible && $options.toggleCollapsible(...args), ["prevent"]), ["enter"])), + _cache[2] || (_cache[2] = vue.withKeys(vue.withModifiers((...args) => $options.toggleCollapsible && $options.toggleCollapsible(...args), ["prevent"]), ["space"])) + ] + }, [ + vue.createElementVNode("div", _hoisted_2$j, [ + vue.renderSlot(_ctx.$slots, "header", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.title), 1) + ]) + ]), + !$props.removeIcon ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { + key: 0, + class: "ui-collapsible__header-icon" + }, { + default: vue.withCtx(() => [ + _hoisted_3$h + ]), + _: 1 + })) : vue.createCommentVNode("v-if", true), + !$props.disableRipple && !$props.disabled ? (vue.openBlock(), vue.createBlock(_component_ui_ripple_ink, { key: 1 })) : vue.createCommentVNode("v-if", true) + ], 40, _hoisted_1$m), + vue.createVNode(vue.Transition, { + onEnter: $options.onEnter, + onAfterEnter: $options.afterEnter, + onBeforeLeave: $options.beforeLeave, + onLeave: $options.onLeave, + persisted: "" + }, { + default: vue.withCtx(() => [ + vue.withDirectives(vue.createElementVNode("div", { + id: $data.id, + ref: "bodyWrapper", + class: "ui-collapsible__body-wrapper", + "aria-hidden": $data.isOpen ? null : "true" + }, [ + vue.createElementVNode("div", _hoisted_5$c, [ + vue.renderSlot(_ctx.$slots, "default") + ]) + ], 8, _hoisted_4$c), [ + [vue.vShow, $data.isOpen] + ]) + ]), + _: 3 + }, 8, ["onEnter", "onAfterEnter", "onBeforeLeave", "onLeave"]) + ], 2); + } + const UiCollapsible = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$n], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiCollapsible.vue"]]); + const UiModal_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$m = { + name: "UiModal", components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiRippleInk: __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__["a" /* default */] - } -}; - -/***/ }), -/* 63 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_uuid__ = __webpack_require__(23); - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-collapsible', - + UiCloseButton, + UiFocusContainer + }, props: { - open: { - type: Boolean, - default: false - }, - title: String, - removeIcon: { - type: Boolean, - default: false - }, - disableRipple: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false - } + title: { + type: String, + default: "UiModal title" + }, + alignTop: { + type: Boolean, + default: false + }, + alignTopMargin: { + type: Number, + default: 60 + }, + size: { + type: String, + default: "normal" + }, + role: { + type: String, + default: "dialog" + }, + transition: { + type: String, + default: "scale-down" + }, + removeHeader: { + type: Boolean, + default: false + }, + removeCloseButton: { + type: Boolean, + default: false + }, + preventShift: { + type: Boolean, + default: false + }, + dismissible: { + type: Boolean, + default: true + }, + dismissOn: { + type: String, + default: "backdrop esc close-button" + }, + beforeClose: Function }, - - data: function data() { - return { - isOpen: this.open, - id: __WEBPACK_IMPORTED_MODULE_2__helpers_uuid__["a" /* default */].short('ui-collapsible-') - }; + emits: ["open", "close", "reveal", "hide"], + data() { + return { + isOpen: false, + lastFocusedElement: null + }; }, - - computed: { - classes: function classes() { - return [{ 'is-open': this.isOpen }, { 'is-disabled': this.disabled }]; + classes() { + return [ + `ui-modal--size-${this.size}`, + { "has-footer": this.hasFooter }, + { "is-open": this.isOpen }, + { "is-aligned-top": this.alignTop } + ]; + }, + alignTopStyle() { + if (this.alignTop) { + return { "padding-top": this.alignTopMargin + "px" }; } + return null; + }, + toggleTransition() { + return `ui-modal--transition-${this.transition}`; + }, + hasFooter() { + return Boolean(this.$slots.footer); + }, + dismissOnBackdrop() { + return this.dismissOn.indexOf("backdrop") > -1; + }, + dismissOnCloseButton() { + return this.dismissOn.indexOf("close-button") > -1; + }, + dismissOnEsc() { + return this.dismissOn.indexOf("esc") > -1; + } }, - watch: { - open: function open() { - if (this.isOpen !== this.open) { - this.isOpen = this.open; - } - } + isOpen() { + this.$nextTick(() => { + this[this.isOpen ? "onOpen" : "onClose"](); + }); + } }, - - mounted: function mounted() { - if (this.isOpen) { - this.$refs.bodyWrapper.style.maxHeight = 'none'; - } + beforeUnmount() { + if (this.isOpen) { + this.returnFocus(); + } }, - - methods: { - toggleCollapsible: function toggleCollapsible() { - if (this.disabled) { - return; - } - - this.isOpen = !this.isOpen; - }, - onEnter: function onEnter(el) { - this.$emit('open'); - el.style.maxHeight = el.scrollHeight + 'px'; - }, - afterEnter: function afterEnter(el) { - el.style.maxHeight = 'none'; - }, - beforeLeave: function beforeLeave(el) { - el.style.maxHeight = el.scrollHeight + 'px'; - - el.offsetHeight; - }, - onLeave: function onLeave(el) { - el.style.maxHeight = 0; - this.$emit('close'); + open() { + this.isOpen = true; + }, + close() { + if (!this.dismissible) { + return; } - }, - + if (this.beforeClose && this.beforeClose(this) === false) { + return; + } + this.isOpen = false; + }, + redirectFocus() { + this.$refs.focusContainer.focus(); + }, + returnFocus() { + if (this.lastFocusedElement) { + this.lastFocusedElement.focus(); + } + }, + onBackdropMouseDown() { + this.mouseDownSource = "backdrop"; + }, + onBackdropMouseUp() { + if (this.dismissOnBackdrop && this.mouseDownSource === "backdrop") { + this.close(); + } else { + this.redirectFocus(); + } + this.mouseDownSource = void 0; + }, + onEsc() { + if (this.dismissOnEsc) { + this.close(); + } + }, + onOpen() { + this.lastFocusedElement = document.activeElement; + this.$refs.focusContainer.focus(); + classlist.add(document.body, "ui-modal--is-open"); + this.incrementOpenModalCount(); + this.$emit("open"); + }, + onClose() { + this.returnFocus(); + this.$emit("close"); + }, + onEnter() { + this.$emit("reveal"); + }, + onLeave() { + this.$emit("hide"); + const newCount = this.decrementOpenModalCount(); + if (newCount === 0) { + classlist.remove(document.body, "ui-modal--is-open"); + } + }, + getOpenModalCount() { + const count = document.body.getAttribute("data-ui-open-modals"); + return count === void 0 ? 0 : Number(count); + }, + setOpenModalCount(count) { + const normalizedCount = Math.max(0, count); + if (normalizedCount === 0) { + document.body.removeAttribute("data-ui-open-modals"); + } else { + document.body.setAttribute("data-ui-open-modals", normalizedCount); + } + return normalizedCount; + }, + incrementOpenModalCount() { + return this.setOpenModalCount(this.getOpenModalCount() + 1); + }, + decrementOpenModalCount() { + return this.setOpenModalCount(this.getOpenModalCount() - 1); + } + } + }; + const _hoisted_1$l = ["role"]; + const _hoisted_2$i = { + key: 0, + class: "ui-modal__header" + }; + const _hoisted_3$g = { class: "ui-modal__header-text" }; + const _hoisted_4$b = { class: "ui-modal__close-button" }; + const _hoisted_5$b = { class: "ui-modal__body" }; + const _hoisted_6$9 = { + key: 1, + class: "ui-modal__footer" + }; + function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_close_button = vue.resolveComponent("ui-close-button"); + const _component_ui_focus_container = vue.resolveComponent("ui-focus-container"); + return vue.openBlock(), vue.createBlock(vue.Transition, { + name: $options.toggleTransition, + onAfterEnter: $options.onEnter, + onAfterLeave: $options.onLeave, + persisted: "" + }, { + default: vue.withCtx(() => [ + vue.withDirectives(vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-modal ui-modal__mask", $options.classes]), + role: $props.role, + onMousedown: _cache[2] || (_cache[2] = vue.withModifiers((...args) => $options.onBackdropMouseDown && $options.onBackdropMouseDown(...args), ["self"])), + onMouseup: _cache[3] || (_cache[3] = vue.withModifiers((...args) => $options.onBackdropMouseUp && $options.onBackdropMouseUp(...args), ["self"])) + }, [ + vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-modal__wrapper", { "has-dummy-scrollbar": $props.preventShift }]), + style: vue.normalizeStyle($options.alignTopStyle), + onMousedown: _cache[0] || (_cache[0] = vue.withModifiers((...args) => $options.onBackdropMouseDown && $options.onBackdropMouseDown(...args), ["self"])), + onMouseup: _cache[1] || (_cache[1] = vue.withModifiers((...args) => $options.onBackdropMouseUp && $options.onBackdropMouseUp(...args), ["self"])) + }, [ + vue.createVNode(_component_ui_focus_container, { + ref: "focusContainer", + class: "ui-modal__container", + tabindex: "-1", + onKeydown: vue.withKeys(vue.withModifiers($options.onEsc, ["stop"]), ["esc"]) + }, { + default: vue.withCtx(() => [ + !$props.removeHeader ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$i, [ + vue.renderSlot(_ctx.$slots, "header", {}, () => [ + vue.createElementVNode("h1", _hoisted_3$g, vue.toDisplayString($props.title), 1) + ]), + vue.createElementVNode("div", _hoisted_4$b, [ + $options.dismissOnCloseButton && !$props.removeCloseButton && $props.dismissible ? (vue.openBlock(), vue.createBlock(_component_ui_close_button, { + key: 0, + onClick: $options.close + }, null, 8, ["onClick"])) : vue.createCommentVNode("v-if", true) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_5$b, [ + vue.renderSlot(_ctx.$slots, "default") + ]), + $options.hasFooter ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$9, [ + vue.renderSlot(_ctx.$slots, "footer") + ])) : vue.createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["onKeydown"]) + ], 38) + ], 42, _hoisted_1$l), [ + [vue.vShow, $data.isOpen] + ]) + ]), + _: 3 + }, 8, ["name", "onAfterEnter", "onAfterLeave"]); + } + const UiModal = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$m], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiModal.vue"]]); + const UiConfirm_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$l = { + name: "UiConfirm", components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiRippleInk: __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__["a" /* default */] - } -}; - -/***/ }), -/* 64 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiButton_vue__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiModal_vue__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_classlist__ = __webpack_require__(5); - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-confirm', - + UiButton, + UiModal + }, props: { - title: { - type: String, - default: 'UiConfirm' - }, - type: { - type: String, - default: 'primary' }, - size: String, - confirmButtonText: { - type: String, - default: 'OK' - }, - confirmButtonIcon: String, - denyButtonText: { - type: String, - default: 'Cancel' - }, - denyButtonIcon: String, - autofocus: { - type: String, - default: 'deny-button' }, - closeOnConfirm: { - type: Boolean, - default: true - }, - dismissOn: String, - transition: String, - loading: { - type: Boolean, - default: false - } + title: { + type: String, + default: "UiConfirm" + }, + type: { + type: String, + default: "primary" + }, + size: String, + confirmButtonText: { + type: String, + default: "OK" + }, + confirmButtonIcon: String, + denyButtonText: { + type: String, + default: "Cancel" + }, + denyButtonIcon: String, + autofocus: { + type: String, + default: "deny-button" + }, + closeOnConfirm: { + type: Boolean, + default: true + }, + dismissOn: String, + transition: String, + loading: { + type: Boolean, + default: false + } }, - + emits: ["confirm", "deny", "open", "reveal", "close", "hide"], computed: { - confirmButtonColor: function confirmButtonColor() { - var typeToColor = { - default: 'default', - primary: 'primary', - accent: 'accent', - success: 'green', - warning: 'orange', - danger: 'red' - }; - - return typeToColor[this.type]; - } - }, - + confirmButtonColor() { + const typeToColor = { + default: "default", + primary: "primary", + accent: "accent", + success: "green", + warning: "orange", + danger: "red" + }; + return typeToColor[this.type]; + } + }, methods: { - open: function open() { - this.$refs.modal.open(); - }, - close: function close() { - this.$refs.modal.close(); - }, - confirm: function confirm() { - this.$emit('confirm'); - - if (this.closeOnConfirm) { - this.$refs.modal.close(); - } - }, - deny: function deny() { - this.$refs.modal.close(); - this.$emit('deny'); - }, - onModalOpen: function onModalOpen() { - var button = void 0; - - if (this.autofocus === 'confirm-button') { - button = this.$refs.confirmButton.$el; - } else if (this.autofocus === 'deny-button') { - button = this.$refs.denyButton.$el; - } - - if (button) { - __WEBPACK_IMPORTED_MODULE_2__helpers_classlist__["a" /* default */].add(button, 'has-focus-ring'); - button.addEventListener('blur', this.removeAutoFocus); - button.focus(); - } - - this.$emit('open'); - }, - onModalReveal: function onModalReveal() { - this.$emit('reveal'); - }, - onModalClose: function onModalClose() { - this.$emit('close'); - }, - onModalHide: function onModalHide() { - this.$emit('hide'); - }, - removeAutoFocus: function removeAutoFocus() { - var button = void 0; - - if (this.autofocus === 'confirm-button') { - button = this.$refs.confirmButton.$el; - } else if (this.autofocus === 'deny-button') { - button = this.$refs.denyButton.$el; - } - - if (button) { - __WEBPACK_IMPORTED_MODULE_2__helpers_classlist__["a" /* default */].remove(button, 'has-focus-ring'); - - button.removeEventListener('blur', this.removeAutoFocus); - } + open() { + this.$refs.modal.open(); + }, + close() { + this.$refs.modal.close(); + }, + confirm() { + this.$emit("confirm"); + if (this.closeOnConfirm) { + this.$refs.modal.close(); } - }, - + }, + deny() { + this.$refs.modal.close(); + this.$emit("deny"); + }, + onModalOpen() { + let button; + if (this.autofocus === "confirm-button") { + button = this.$refs.confirmButton.$el; + } else if (this.autofocus === "deny-button") { + button = this.$refs.denyButton.$el; + } + if (button) { + classlist.add(button, "has-focus-ring"); + button.addEventListener("blur", this.removeAutoFocus); + button.focus(); + } + this.$emit("open"); + }, + onModalReveal() { + this.$emit("reveal"); + }, + onModalClose() { + this.$emit("close"); + }, + onModalHide() { + this.$emit("hide"); + }, + removeAutoFocus() { + let button; + if (this.autofocus === "confirm-button") { + button = this.$refs.confirmButton.$el; + } else if (this.autofocus === "deny-button") { + button = this.$refs.denyButton.$el; + } + if (button) { + classlist.remove(button, "has-focus-ring"); + button.removeEventListener("blur", this.removeAutoFocus); + } + } + } + }; + const _hoisted_1$k = { class: "ui-confirm__message" }; + const _hoisted_2$h = { class: "ui-confirm__footer" }; + function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_button = vue.resolveComponent("ui-button"); + const _component_ui_modal = vue.resolveComponent("ui-modal"); + return vue.openBlock(), vue.createBlock(_component_ui_modal, { + ref: "modal", + class: "ui-confirm", + role: "alertdialog", + "dismiss-on": $props.dismissOn, + dismissible: !$props.loading, + title: $props.title, + transition: $props.transition, + size: $props.size, + onClose: $options.onModalClose, + onHide: $options.onModalHide, + onOpen: $options.onModalOpen, + onReveal: $options.onModalReveal + }, { + footer: vue.withCtx(() => [ + vue.createElementVNode("div", _hoisted_2$h, [ + vue.createVNode(_component_ui_button, { + ref: "confirmButton", + color: $options.confirmButtonColor, + icon: $props.confirmButtonIcon, + loading: $props.loading, + onClick: $options.confirm + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString($props.confirmButtonText), 1) + ]), + _: 1 + }, 8, ["color", "icon", "loading", "onClick"]), + vue.createVNode(_component_ui_button, { + ref: "denyButton", + disabled: $props.loading, + icon: $props.denyButtonIcon, + onClick: $options.deny + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString($props.denyButtonText), 1) + ]), + _: 1 + }, 8, ["disabled", "icon", "onClick"]) + ]) + ]), + default: vue.withCtx(() => [ + vue.createElementVNode("div", _hoisted_1$k, [ + vue.renderSlot(_ctx.$slots, "default") + ]) + ]), + _: 3 + }, 8, ["dismiss-on", "dismissible", "title", "transition", "size", "onClose", "onHide", "onOpen", "onReveal"]); + } + const UiConfirm = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$l], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiConfirm.vue"]]); + function inView(element, container) { + if (!element) { + return; + } + container = container || element.parentElement; + const top = element.offsetTop; + const parentTop = container.scrollTop; + const bottom = top + element.offsetHeight; + const parentBottom = container.offsetHeight; + return top >= parentTop && bottom <= parentBottom; + } + function scrollIntoView(element, options = { container: null, marginTop: 0 }) { + if (!element) { + return; + } + options.container = options.container || element.parentElement; + if (inView(element, options.container)) { + return; + } + options.container.scrollTop = element.offsetTop - options.marginTop; + } + function resetScroll(element) { + if (!element) { + return; + } + element.scrollTop = 0; + } + const UiDatepickerCalendar_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$k = { + name: "UiDatepickerCalendar", components: { - UiButton: __WEBPACK_IMPORTED_MODULE_0__UiButton_vue__["a" /* default */], - UiModal: __WEBPACK_IMPORTED_MODULE_1__UiModal_vue__["a" /* default */] - } -}; - -/***/ }), -/* 65 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiButton_vue__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiDatepickerCalendar_vue__ = __webpack_require__(16); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__UiModal_vue__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__UiPopover_vue__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_RespondsToExternalClick__ = __webpack_require__(24); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__helpers_date__ = __webpack_require__(3); - - - - - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-datepicker', - + UiCalendarControls, + UiCalendarMonth + }, props: { - name: String, - value: [Date, String], - tabindex: [String, Number], - startOfWeek: { - type: Number, - default: 0 - }, - minDate: Date, - maxDate: Date, - yearRange: Array, - lang: { - type: Object, - default: function _default() { - return __WEBPACK_IMPORTED_MODULE_6__helpers_date__["a" /* default */].defaultLang; - } - }, - customFormatter: Function, - dateFilter: Function, - color: { - type: String, - default: 'primary' }, - orientation: { - type: String, - default: 'portrait' }, - pickerType: { - type: String, - default: 'popover' }, - defaultView: { - type: String, - default: 'date' - }, - appendDropdownToBody: Boolean, - dropdownZIndex: Number, - placeholder: String, - icon: String, - iconPosition: { - type: String, - default: 'left' }, - label: String, - floatingLabel: { - type: Boolean, - default: false - }, - invalid: { - type: Boolean, - default: false - }, - help: String, - error: String, - disabled: { - type: Boolean, - default: false + modelValue: Date, + minDate: Date, + maxDate: Date, + startOfWeek: { + type: Number, + default: 0 + }, + currentView: { + type: String, + validator: (value) => value === "date" || value === "year" + }, + lang: { + type: Object, + default() { + return dateUtils.defaultLang; + } + }, + yearRange: { + type: Array, + default() { + const thisYear = new Date().getFullYear(); + return Array.apply(null, Array(200)).map((item, index) => { + return thisYear - 100 + index; + }); } + }, + dateFilter: Function, + color: { + type: String, + default: "primary" + }, + orientation: { + type: String, + default: "portrait" + } }, - - data: function data() { - return { - isActive: false, - isTouched: false, - initialValue: JSON.stringify(this.value), - calendarView: this.defaultView - }; + emits: ["update:modelValue", "update:currentView", "date-select", "month-change"], + data() { + return { + today: new Date(), + dateInView: this.getDateInRange(this.modelValue, new Date()) + }; }, - - computed: { - date: function date() { - return typeof this.value === 'string' ? new Date(this.value) : this.value; - }, - classes: function classes() { - return ['ui-datepicker--icon-position-' + this.iconPosition, 'ui-datepicker--orientation-' + this.orientation, { 'is-active': this.isActive }, { 'is-invalid': this.invalid }, { 'is-touched': this.isTouched }, { 'is-disabled': this.disabled }, { 'has-label': this.hasLabel }, { 'has-floating-label': this.hasFloatingLabel }]; - }, - labelClasses: function labelClasses() { - return { - 'is-inline': this.hasFloatingLabel && this.isLabelInline, - 'is-floating': this.hasFloatingLabel && !this.isLabelInline - }; - }, - hasLabel: function hasLabel() { - return Boolean(this.label) || Boolean(this.$slots.default); - }, - hasFloatingLabel: function hasFloatingLabel() { - return this.hasLabel && this.floatingLabel; - }, - isLabelInline: function isLabelInline() { - return !this.date && !this.isActive; - }, - hasFeedback: function hasFeedback() { - return this.showError || this.showHelp; - }, - showError: function showError() { - return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); - }, - showHelp: function showHelp() { - return Boolean(this.help) || Boolean(this.$slots.help); - }, - displayText: function displayText() { - if (!this.date) { - return ''; - } - - return this.customFormatter ? this.customFormatter(this.date, this.lang) : __WEBPACK_IMPORTED_MODULE_6__helpers_date__["a" /* default */].humanize(this.date, this.lang); - }, - hasDisplayText: function hasDisplayText() { - return Boolean(this.displayText.length); - }, - submittedValue: function submittedValue() { - return this.date ? this.date.getFullYear() + '-' + (1 + this.date.getMonth()) + '-' + this.date.getDate() : ''; - }, - usesPopover: function usesPopover() { - return this.pickerType === 'popover'; - }, - usesModal: function usesModal() { - return this.pickerType === 'modal'; - } + classes() { + return [ + `ui-datepicker-calendar--color-${this.color}`, + `ui-datepicker-calendar--orientation-${this.orientation}` + ]; + }, + headerYear() { + return this.modelValue ? this.modelValue.getFullYear() : this.today.getFullYear(); + }, + headerWeekday() { + return this.modelValue ? dateUtils.getDayAbbreviated(this.modelValue, this.lang) : dateUtils.getDayAbbreviated(this.today, this.lang); + }, + headerDay() { + const date = this.modelValue ? this.modelValue : this.today; + return dateUtils.getMonthAbbreviated(date, this.lang) + " " + dateUtils.getDayOfMonth(date, this.lang); + }, + showYearPicker() { + return this.currentView === "year"; + }, + showDatePicker() { + return this.currentView === "date"; + }, + yearRangeFiltered() { + return this.yearRange.filter((year) => !this.isYearOutOfRange(year)); + } }, - watch: { - isActive: function isActive(value) { - if (value) { - this.addExternalClickListener([this.$el, this.getPicker().$el], this.onExternalClick); - } else { - this.removeExternalClickListener(); - } + modelValue() { + if (this.modelValue) { + this.dateInView = dateUtils.clone(this.modelValue); + } + }, + currentView() { + if (this.showYearPicker) { + this.$nextTick(() => { + const el = this.$refs.years.querySelector(".is-selected") || this.$refs.years.querySelector(".is-current-year"); + scrollIntoView(el, { marginTop: 144 }); + }); } + } }, - methods: { - onDateSelect: function onDateSelect(date) { - this.$emit('input', date); - this.closePicker(); - }, - isPickerOpen: function isPickerOpen() { - return this.usesModal ? this.$refs.modal.isOpen : this.$refs.popover.isOpen(); - }, - getPicker: function getPicker() { - return this.$refs[this.usesModal ? 'modal' : 'popover']; - }, - openPicker: function openPicker() { - if (this.disabled) { - return; - } - - this.getPicker().open(); - }, - closePicker: function closePicker() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { returnFocus: true }; - - this.getPicker().close(); - - this.calendarView = this.defaultView; - - if (options.returnFocus) { - this.$refs.label.focus(); - } - }, - togglePicker: function togglePicker() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { returnFocus: true }; - - if (this.isPickerOpen()) { - this.closePicker(options); - } else { - this.openPicker(); - } - }, - onFocus: function onFocus(e) { - this.isActive = true; - this.$emit('focus', e); - }, - onTabAway: function onTabAway(e) { - this.isActive = false; - this.$emit('blur', e); - - if (this.isPickerOpen()) { - this.closePicker({ returnFocus: false }); - } - }, - onPickerOpen: function onPickerOpen() { - this.$emit('open'); - }, - onPickerClose: function onPickerClose() { - this.$emit('close'); - - if (!this.isTouched) { - this.isTouched = true; - this.$emit('touch'); - } - }, - onExternalClick: function onExternalClick() { - this.isActive = false; - }, - focus: function focus() { - this.$refs.label.focus(); - }, - clear: function clear() { - this.$emit('input', null); - }, - reset: function reset() { - this.$emit('input', JSON.parse(this.initialValue)); - }, - resetTouched: function resetTouched() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { touched: false }; - - this.isTouched = options.touched; + selectYear(year) { + const newDate = dateUtils.clone(this.dateInView); + newDate.setFullYear(year); + this.dateInView = this.getDateInRange(newDate); + this.$emit("update:currentView", "date"); + }, + getDateInRange(date, fallback) { + date = date || fallback; + if (this.minDate && date.getTime() < this.minDate.getTime()) { + return this.minDate; } - }, - - components: { - UiButton: __WEBPACK_IMPORTED_MODULE_0__UiButton_vue__["a" /* default */], - UiDatepickerCalendar: __WEBPACK_IMPORTED_MODULE_1__UiDatepickerCalendar_vue__["a" /* default */], - UiIcon: __WEBPACK_IMPORTED_MODULE_2__UiIcon_vue__["a" /* default */], - UiModal: __WEBPACK_IMPORTED_MODULE_3__UiModal_vue__["a" /* default */], - UiPopover: __WEBPACK_IMPORTED_MODULE_4__UiPopover_vue__["a" /* default */] - }, - - mixins: [__WEBPACK_IMPORTED_MODULE_5__mixins_RespondsToExternalClick__["a" /* default */]] -}; - -/***/ }), -/* 66 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiCalendarControls_vue__ = __webpack_require__(27); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiCalendarMonth_vue__ = __webpack_require__(28); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_date__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helpers_element_scroll__ = __webpack_require__(21); - - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-datepicker-calendar', - - props: { - value: Date, - minDate: Date, - maxDate: Date, - startOfWeek: { - type: Number, - default: 0 - }, - currentView: { - type: String, - validator: function validator(value) { - return value === 'date' || value === 'year'; - } - }, - lang: { - type: Object, - default: function _default() { - return __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].defaultLang; - } - }, - yearRange: { - type: Array, - default: function _default() { - var thisYear = new Date().getFullYear(); - - return Array.apply(null, Array(200)).map(function (item, index) { - return thisYear - 100 + index; - }); - } - }, - dateFilter: Function, - color: { - type: String, - default: 'primary' }, - orientation: { - type: String, - default: 'portrait' } - }, - - data: function data() { + if (this.maxDate && date.getTime() > this.maxDate.getTime()) { + return this.maxDate; + } + return date; + }, + getYearClasses(year) { return { - today: new Date(), - dateInView: this.getDateInRange(this.value, new Date()) + "is-current-year": this.isYearCurrent(year), + "is-selected": this.isYearSelected(year) }; - }, - - - computed: { - classes: function classes() { - return ['ui-datepicker-calendar--color-' + this.color, 'ui-datepicker-calendar--orientation-' + this.orientation]; - }, - headerYear: function headerYear() { - return this.value ? this.value.getFullYear() : this.today.getFullYear(); - }, - headerWeekday: function headerWeekday() { - return this.value ? __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].getDayAbbreviated(this.value, this.lang) : __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].getDayAbbreviated(this.today, this.lang); - }, - headerDay: function headerDay() { - var date = this.value ? this.value : this.today; - - return __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].getMonthAbbreviated(date, this.lang) + ' ' + __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].getDayOfMonth(date, this.lang); - }, - showYearPicker: function showYearPicker() { - return this.currentView === 'year'; - }, - showDatePicker: function showDatePicker() { - return this.currentView === 'date'; + }, + isYearCurrent(year) { + return year === this.today.getFullYear(); + }, + isYearSelected(year) { + return this.modelValue && year === this.modelValue.getFullYear(); + }, + isYearOutOfRange(year) { + if (this.minDate && year < this.minDate.getFullYear()) { + return true; } - }, - - watch: { - value: function value() { - if (this.value) { - this.dateInView = __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].clone(this.value); - } - }, - currentView: function currentView() { - var _this = this; - - if (this.showYearPicker) { - this.$nextTick(function () { - var el = _this.$refs.years.querySelector('.is-selected') || _this.$refs.years.querySelector('.is-current-year'); - - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__helpers_element_scroll__["b" /* scrollIntoView */])(el, { marginTop: 144 }); - }); - } + if (this.maxDate && year > this.maxDate.getFullYear()) { + return true; } - }, - - methods: { - selectYear: function selectYear(year) { - var newDate = __WEBPACK_IMPORTED_MODULE_2__helpers_date__["a" /* default */].clone(this.dateInView); - newDate.setFullYear(year); - - this.dateInView = this.getDateInRange(newDate); - this.$emit('update:currentView', 'date'); - }, - getDateInRange: function getDateInRange(date, fallback) { - date = date || fallback; - - if (this.minDate && date.getTime() < this.minDate.getTime()) { - return this.minDate; - } - - if (this.maxDate && date.getTime() > this.maxDate.getTime()) { - return this.maxDate; - } - - return date; - }, - getYearClasses: function getYearClasses(year) { - return { - 'is-current-year': this.isYearCurrent(year), - 'is-selected': this.isYearSelected(year) - }; - }, - isYearCurrent: function isYearCurrent(year) { - return year === this.today.getFullYear(); - }, - isYearSelected: function isYearSelected(year) { - return this.value && year === this.value.getFullYear(); - }, - isYearOutOfRange: function isYearOutOfRange(year) { - if (this.minDate && year < this.minDate.getFullYear()) { - return true; - } - - if (this.maxDate && year > this.maxDate.getFullYear()) { - return true; - } - - if (this.year < this.yearRange[0]) { - return true; - } - - if (this.year > this.yearRange[this.yearRange.length - 1]) { - return true; - } - - return false; - }, - onDateSelect: function onDateSelect(date) { - this.$emit('input', date); - this.$emit('date-select', date); - }, - onGoToDate: function onGoToDate(date) { - this.$refs.month.goToDate(date); - }, - onMonthChange: function onMonthChange(newDate) { - this.dateInView = newDate; - this.$emit('month-change', newDate); + if (year < this.yearRange[0]) { + return true; } - }, - - components: { - UiCalendarControls: __WEBPACK_IMPORTED_MODULE_0__UiCalendarControls_vue__["a" /* default */], - UiCalendarMonth: __WEBPACK_IMPORTED_MODULE_1__UiCalendarMonth_vue__["a" /* default */] - } -}; - -/***/ }), -/* 67 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__UiTooltip_vue__ = __webpack_require__(9); - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-fab', - - props: { - size: { - type: String, - default: 'normal' }, - color: { - type: String, - default: 'default' }, - icon: String, - ariaLabel: String, - tooltip: String, - openTooltipOn: String, - tooltipPosition: String, - disableRipple: { - type: Boolean, - default: false - } - }, - - computed: { - classes: function classes() { - return ['ui-fab--color-' + this.color, 'ui-fab--size-' + this.size]; + if (year > this.yearRange[this.yearRange.length - 1]) { + return true; } + return false; + }, + onDateSelect(date) { + this.$emit("update:modelValue", date); + this.$emit("date-select", date); + }, + onGoToDate(date) { + this.$refs.month.goToDate(date); + }, + onMonthChange(newDate) { + this.dateInView = newDate; + this.$emit("month-change", newDate); + } + } + }; + const _hoisted_1$j = { class: "ui-datepicker-calendar__header" }; + const _hoisted_2$g = { class: "ui-datepicker-calendar__header-weekday" }; + const _hoisted_3$f = { class: "ui-datepicker-calendar__header-day" }; + const _hoisted_4$a = { + ref: "years", + class: "ui-datepicker-calendar__years" + }; + const _hoisted_5$a = ["onClick", "onKeydown"]; + const _hoisted_6$8 = { class: "ui-datepicker-calendar__body" }; + function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_calendar_controls = vue.resolveComponent("ui-calendar-controls"); + const _component_ui_calendar_month = vue.resolveComponent("ui-calendar-month"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-datepicker-calendar", $options.classes]) + }, [ + vue.createElementVNode("div", _hoisted_1$j, [ + vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-datepicker-calendar__header-year", { "is-active": $options.showYearPicker }]), + tabindex: "0", + onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("update:currentView", "year")), + onKeydown: _cache[1] || (_cache[1] = vue.withKeys(($event) => _ctx.$emit("update:currentView", "year"), ["enter"])) + }, vue.toDisplayString($options.headerYear), 35), + vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-datepicker-calendar__header-date", { "is-active": !$options.showYearPicker }]), + tabindex: "0", + onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("update:currentView", "date")), + onKeydown: _cache[3] || (_cache[3] = vue.withKeys(($event) => _ctx.$emit("update:currentView", "date"), ["enter"])) + }, [ + vue.createElementVNode("span", _hoisted_2$g, vue.toDisplayString($options.headerWeekday) + ", ", 1), + vue.createElementVNode("span", _hoisted_3$f, vue.toDisplayString($options.headerDay), 1) + ], 34) + ]), + vue.withDirectives(vue.createElementVNode("ul", _hoisted_4$a, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($options.yearRangeFiltered, (year) => { + return vue.openBlock(), vue.createElementBlock("li", { + key: year, + class: vue.normalizeClass(["ui-datepicker-calendar__year", $options.getYearClasses(year)]), + tabindex: "0", + onClick: ($event) => $options.selectYear(year), + onKeydown: vue.withKeys(($event) => $options.selectYear(year), ["enter"]) + }, vue.toDisplayString(year), 43, _hoisted_5$a); + }), 128)) + ], 512), [ + [vue.vShow, $options.showYearPicker] + ]), + vue.withDirectives(vue.createElementVNode("div", _hoisted_6$8, [ + vue.createVNode(_component_ui_calendar_controls, { + ref: "controls", + "date-in-view": $data.dateInView, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + "year-range": $props.yearRange, + onGoToDate: $options.onGoToDate + }, null, 8, ["date-in-view", "lang", "max-date", "min-date", "year-range", "onGoToDate"]), + vue.createVNode(_component_ui_calendar_month, { + ref: "month", + "square-cells": "", + color: $props.color, + "date-filter": $props.dateFilter, + "date-in-view": $data.dateInView, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + selected: $props.modelValue, + "start-of-week": $props.startOfWeek, + onChange: $options.onMonthChange, + onDateSelect: $options.onDateSelect + }, null, 8, ["color", "date-filter", "date-in-view", "lang", "max-date", "min-date", "selected", "start-of-week", "onChange", "onDateSelect"]) + ], 512), [ + [vue.vShow, !$options.showYearPicker] + ]) + ], 2); + } + const UiDatepickerCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$k], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiDatepickerCalendar.vue"]]); + const RespondsToExternalClick = { + emits: ["external-click"], + beforeUnmount() { + if (typeof this.destroyExternalClickListener === "function") { + this.removeExternalClickListener(); + } }, - methods: { - onClick: function onClick(e) { - this.$emit('click', e); + addExternalClickListener(elements = [this.$el], callback = null, options = { passive: true }) { + elements = Array.isArray(elements) ? elements : [elements]; + this.destroyExternalClickListener = events.on("click", document, (e) => { + for (let i2 = 0; i2 < elements.length; i2++) { + if (elements[i2].contains(e.target)) { + return; + } + } + if (typeof callback === "function") { + callback(e); + } else { + this.$emit("external-click", e); + } + }, options); + }, + removeExternalClickListener() { + if (this.destroyExternalClickListener) { + this.destroyExternalClickListener(); + this.destroyExternalClickListener = null; } - }, - + } + } + }; + const UiDatepicker_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$j = { + name: "UiDatepicker", components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiRippleInk: __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__["a" /* default */], - UiTooltip: __WEBPACK_IMPORTED_MODULE_2__UiTooltip_vue__["a" /* default */] - } -}; - -/***/ }), -/* 68 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__ = __webpack_require__(2); - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-fileupload', - + UiDatepickerCalendar, + UiIcon, + UiModal, + UiPopover + }, + mixins: [RespondsToExternalClick], props: { - name: { - type: String, - required: true - }, - label: String, - tabindex: [String, Number], - accept: String, - multiple: { - type: Boolean, - default: false - }, - required: { - type: Boolean, - default: false - }, - type: { - type: String, - default: 'primary' }, - color: { - type: String, - default: 'default' }, - size: { - type: String, - default: 'normal' }, - raised: { - type: Boolean, - default: false - }, - iconPosition: { - type: String, - default: 'left' }, - disableRipple: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false + name: String, + modelValue: [Date, String], + tabindex: [String, Number], + startOfWeek: { + type: Number, + default: 0 + }, + minDate: Date, + maxDate: Date, + yearRange: Array, + lang: { + type: Object, + default() { + return dateUtils.defaultLang; } + }, + customFormatter: Function, + dateFilter: Function, + color: { + type: String, + default: "primary" + }, + orientation: { + type: String, + default: "portrait" + }, + pickerType: { + type: String, + default: "popover" + }, + defaultView: { + type: String, + default: "date" + }, + appendDropdownToBody: Boolean, + dropdownZIndex: Number, + placeholder: String, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + label: String, + floatingLabel: { + type: Boolean, + default: false + }, + invalid: { + type: Boolean, + default: false + }, + help: String, + error: String, + disabled: { + type: Boolean, + default: false + } }, - - data: function data() { - return { - isActive: false, - renderInput: true, - hasSelection: false, - hasMultiple: false, - displayText: '' - }; + emits: ["update:modelValue", "focus", "blur", "open", "close", "touch"], + data() { + return { + isActive: false, + isTouched: false, + initialValue: JSON.stringify(this.modelValue), + calendarView: this.defaultView + }; }, - - computed: { - classes: function classes() { - return ['ui-fileupload--type-' + this.type, 'ui-fileupload--color-' + this.color, 'ui-fileupload--icon-position-' + this.iconPosition, 'ui-fileupload--size-' + this.size, { 'is-active': this.isActive }, { 'is-multiple': this.hasMultiple }, { 'is-raised': this.raised }, { 'is-disabled': this.disabled }]; - }, - placeholder: function placeholder() { - if (this.label) { - return this.label; - } - - return this.multiple ? 'Choose files' : 'Choose a file'; - } - }, - - methods: { - onFocus: function onFocus(e) { - this.isActive = true; - this.$emit('focus', e); - }, - onBlur: function onBlur(e) { - this.isActive = false; - this.$emit('blur', e); - }, - onInput: function onInput(e) { - this.$emit('input', this.$refs.input.files, e); - }, - onChange: function onChange(e) { - this.updateDisplayText(e); - this.$emit('change', this.$refs.input.files, e); - }, - updateDisplayText: function updateDisplayText(e) { - var displayText = void 0; - var input = this.$refs.input; - - if (input.files && input.files.length > 1) { - displayText = input.files.length + ' files selected'; - } else { - displayText = e.target.value.split('\\').pop(); - } - - if (displayText) { - this.hasSelection = true; - this.displayText = displayText; - this.hasMultiple = input.files.length > 1; - } - }, - focus: function focus() { - this.$refs.input.focus(); - }, - openPicker: function openPicker() { - this.$refs.input.click(); - }, - clear: function clear() { - var _this = this; - - this.hasSelection = false; - - this.renderInput = false; - - this.$nextTick(function () { - _this.renderInput = true; - }); + date() { + return typeof this.modelValue === "string" ? new Date(this.modelValue) : this.modelValue; + }, + classes() { + return [ + `ui-datepicker--icon-position-${this.iconPosition}`, + `ui-datepicker--orientation-${this.orientation}`, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-touched": this.isTouched }, + { "is-disabled": this.disabled }, + { "has-label": this.hasLabel }, + { "has-floating-label": this.hasFloatingLabel } + ]; + }, + labelClasses() { + return { + "is-inline": this.hasFloatingLabel && this.isLabelInline, + "is-floating": this.hasFloatingLabel && !this.isLabelInline + }; + }, + hasLabel() { + return Boolean(this.label) || Boolean(this.$slots.default); + }, + hasFloatingLabel() { + return this.hasLabel && this.floatingLabel; + }, + isLabelInline() { + return !this.date && !this.isActive; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + }, + displayText() { + if (!this.date) { + return ""; } + return this.customFormatter ? this.customFormatter(this.date, this.lang) : dateUtils.humanize(this.date, this.lang); + }, + hasDisplayText() { + return Boolean(this.displayText.length); + }, + submittedValue() { + return this.date ? `${this.date.getFullYear()}-${1 + this.date.getMonth()}-${this.date.getDate()}` : ""; + }, + usesPopover() { + return this.pickerType === "popover"; + }, + usesModal() { + return this.pickerType === "modal"; + } }, - - components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiRippleInk: __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__["a" /* default */] - } -}; - -/***/ }), -/* 69 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-focus-container', - - props: { - containFocus: { - type: Boolean, - default: true - }, - focusRedirector: Function, - disabled: { - type: Boolean, - default: false - }, - tag: { - type: String, - default: 'div' - }, - lazy: { - type: Boolean, - default: false } - }, - - computed: { - renderRedirector: function renderRedirector() { - if (this.disabled) { - return false; - } - - return this.lazy ? this.containFocus : true; + watch: { + isActive(value) { + if (value) { + this.addExternalClickListener([this.$el, this.getPicker().$el], this.onExternalClick); + } else { + this.removeExternalClickListener(); } + } }, - methods: { - focus: function focus() { - this.$refs.content.focus(); - }, - redirectFocus: function redirectFocus(e, options) { - if (!this.containFocus) { - this.$emit('focus-overflow', e, options); - return; - } - - e.stopPropagation(); - - if (this.focusRedirector) { - this.focusRedirector(e, options); - return; - } - - if (options.isTabbingForward) { - this.$refs.content.focus(); - } else { - this.$refs.lastFocusable.focus(); - } - } - } -}; - -/***/ }), -/* 70 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-icon', - - props: { - icon: String, - iconSet: { - type: String, - default: 'material-icons' - }, - ariaLabel: String, - removeText: { - type: Boolean, - default: false - }, - useSvg: { - type: Boolean, - default: false - } - } -}; - -/***/ }), -/* 71 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiPopover_vue__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__UiProgressCircular_vue__ = __webpack_require__(8); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__UiRippleInk_vue__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__UiTooltip_vue__ = __webpack_require__(9); - - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-icon-button', - - props: { - type: { - type: String, - default: 'primary' }, - buttonType: String, - href: String, - color: { - type: String, - default: 'default' }, - size: { - type: String, - default: 'normal' }, - icon: String, - ariaLabel: String, - loading: { - type: Boolean, - default: false - }, - hasDropdown: { - type: Boolean, - default: false - }, - dropdownPosition: { - type: String, - default: 'bottom-start' - }, - appendDropdownToBody: { - type: Boolean, - default: true - }, - constrainDropdownToScrollParent: { - type: Boolean, - default: true - }, - openDropdownOn: { - type: String, - default: 'click' }, - tooltip: String, - openTooltipOn: String, - tooltipPosition: String, - disableRipple: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false - } - }, - - computed: { - classes: function classes() { - return ['ui-icon-button--type-' + this.type, 'ui-icon-button--color-' + this.color, 'ui-icon-button--size-' + this.size, { 'is-anchor': this.isAnchor }, { 'is-loading': this.loading }, { 'is-disabled': this.disabled || this.loading }, { 'has-dropdown': this.hasDropdown }]; - }, - isAnchor: function isAnchor() { - return this.href !== undefined; - }, - progressColor: function progressColor() { - if (this.type === 'primary') { - if (this.color === 'default' || this.color === 'black') { - return 'black'; - } - - return 'white'; - } - - if (this.color === 'white') { - return 'white'; - } - - return 'black'; + onDateSelect(date) { + this.$emit("update:modelValue", date); + this.closePicker(); + }, + isPickerOpen() { + return this.usesModal ? this.$refs.modal.isOpen : this.$refs.popover.isOpen(); + }, + getPicker() { + return this.$refs[this.usesModal ? "modal" : "popover"]; + }, + openPicker() { + if (this.disabled) { + return; } - }, - - methods: { - onClick: function onClick(e) { - this.$emit('click', e); - }, - onDropdownOpen: function onDropdownOpen() { - this.$emit('dropdown-open'); - }, - onDropdownClose: function onDropdownClose() { - this.$emit('dropdown-close'); - }, - openDropdown: function openDropdown() { - if (this.$refs.dropdown) { - this.$refs.dropdown.open(); - } - }, - closeDropdown: function closeDropdown() { - if (this.$refs.dropdown) { - this.$refs.dropdown.close(); - } - }, - toggleDropdown: function toggleDropdown() { - if (this.$refs.dropdown) { - this.$refs.dropdown.toggle(); - } + this.getPicker().open(); + }, + closePicker(options = { returnFocus: true }) { + this.getPicker().close(); + this.calendarView = this.defaultView; + if (options.returnFocus) { + this.$refs.label.focus(); } - }, - - components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiPopover: __WEBPACK_IMPORTED_MODULE_1__UiPopover_vue__["a" /* default */], - UiProgressCircular: __WEBPACK_IMPORTED_MODULE_2__UiProgressCircular_vue__["a" /* default */], - UiRippleInk: __WEBPACK_IMPORTED_MODULE_3__UiRippleInk_vue__["a" /* default */], - UiTooltip: __WEBPACK_IMPORTED_MODULE_4__UiTooltip_vue__["a" /* default */] - } -}; - -/***/ }), -/* 72 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiFocusContainer_vue__ = __webpack_require__(14); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiMenuOption_vue__ = __webpack_require__(142); - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-menu', - - props: { - options: { - type: Array, - default: function _default() { - return []; - } - }, - hasIcons: { - type: Boolean, - default: false - }, - iconProps: Object, - hasSecondaryText: { - type: Boolean, - default: false - }, - containFocus: { - type: Boolean, - default: false - }, - keys: { - type: Object, - default: function _default() { - return { - icon: 'icon', - type: 'type', - label: 'label', - secondaryText: 'secondaryText', - iconProps: 'iconProps', - disabled: 'disabled', - href: 'href', - target: 'target' - }; - } - }, - disableRipple: { - type: Boolean, - default: false - }, - raised: { - type: Boolean, - default: false + }, + togglePicker(options = { returnFocus: true }) { + if (this.isPickerOpen()) { + this.closePicker(options); + } else { + this.openPicker(); } - }, - - computed: { - classes: function classes() { - return { - 'is-raised': this.raised, - 'has-icons': this.hasIcons, - 'has-secondary-text': this.hasSecondaryText - }; + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onTabAway(e) { + this.isActive = false; + this.$emit("blur", e); + if (this.isPickerOpen()) { + this.closePicker({ returnFocus: false }); } - }, - - methods: { - selectOption: function selectOption(option) { - if (option.disabled || option.type === 'divider') { - return; - } - - this.$emit('select', option); - this.closeMenu(); - }, - closeMenu: function closeMenu() { - this.$emit('close'); + }, + onPickerOpen() { + this.$emit("open"); + }, + onPickerClose() { + this.$emit("close"); + if (!this.isTouched) { + this.isTouched = true; + this.$emit("touch"); } - }, - + }, + onExternalClick() { + this.isActive = false; + }, + focus() { + this.$refs.label.focus(); + }, + clear() { + this.$emit("update:modelValue", null); + }, + reset() { + this.$emit("update:modelValue", JSON.parse(this.initialValue)); + }, + resetTouched(options = { touched: false }) { + this.isTouched = options.touched; + } + } + }; + const _hoisted_1$i = ["name", "value"]; + const _hoisted_2$f = { + key: 0, + class: "ui-datepicker__icon-wrapper" + }; + const _hoisted_3$e = { class: "ui-datepicker__content" }; + const _hoisted_4$9 = ["tabindex"]; + const _hoisted_5$9 = { class: "ui-datepicker__display" }; + const _hoisted_6$7 = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M6.984 9.984h10.03L12 15z" }) + ], -1); + const _hoisted_7$3 = { + key: 0, + class: "ui-datepicker__feedback" + }; + const _hoisted_8$2 = { + key: 0, + class: "ui-datepicker__feedback-text" + }; + const _hoisted_9$2 = { + key: 1, + class: "ui-datepicker__feedback-text" + }; + function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_datepicker_calendar = vue.resolveComponent("ui-datepicker-calendar"); + const _component_ui_popover = vue.resolveComponent("ui-popover"); + const _component_ui_modal = vue.resolveComponent("ui-modal"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-datepicker", $options.classes]) + }, [ + vue.createElementVNode("input", { + class: "ui-datepicker__hidden-input", + type: "hidden", + name: $props.name, + value: $options.submittedValue + }, null, 8, _hoisted_1$i), + $props.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$f, [ + vue.renderSlot(_ctx.$slots, "icon", {}, () => [ + vue.createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_3$e, [ + vue.createElementVNode("div", { + ref: "label", + class: "ui-datepicker__label", + tabindex: $props.disabled ? null : $props.tabindex || "0", + onFocus: _cache[1] || (_cache[1] = (...args) => $options.onFocus && $options.onFocus(...args)), + onClick: _cache[2] || (_cache[2] = ($event) => $options.togglePicker({ returnFocus: false })), + onKeydown: [ + _cache[3] || (_cache[3] = vue.withKeys(vue.withModifiers(($event) => $options.togglePicker({ returnFocus: false }), ["prevent"]), ["enter"])), + _cache[4] || (_cache[4] = vue.withKeys(vue.withModifiers(($event) => $options.togglePicker({ returnFocus: false }), ["prevent"]), ["space"])), + _cache[5] || (_cache[5] = vue.withKeys((...args) => $options.onTabAway && $options.onTabAway(...args), ["tab"])) + ] + }, [ + $props.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", { + key: 0, + class: vue.normalizeClass(["ui-datepicker__label-text", $options.labelClasses]) + }, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.label), 1) + ]) + ], 2)) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_5$9, [ + vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-datepicker__display-value", { "is-placeholder": !$options.hasDisplayText }]) + }, vue.toDisplayString($options.hasDisplayText ? $options.displayText : $options.hasFloatingLabel && $options.isLabelInline ? null : $props.placeholder), 3), + $options.usesPopover && !$props.disabled ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { + key: 0, + class: "ui-datepicker__dropdown-button" + }, { + default: vue.withCtx(() => [ + _hoisted_6$7 + ]), + _: 1 + })) : vue.createCommentVNode("v-if", true) + ]), + $options.usesPopover ? vue.withDirectives((vue.openBlock(), vue.createBlock(_component_ui_popover, { + key: 1, + ref: "popover", + "contain-focus": "", + "open-on": "manual", + "close-on-scroll": false, + "append-to-body": $props.appendDropdownToBody, + "z-index": $props.dropdownZIndex, + onClose: $options.onPickerClose, + onOpen: $options.onPickerOpen + }, { + default: vue.withCtx(() => [ + vue.createVNode(_component_ui_datepicker_calendar, { + currentView: $data.calendarView, + "onUpdate:currentView": _cache[0] || (_cache[0] = ($event) => $data.calendarView = $event), + color: $props.color, + "date-filter": $props.dateFilter, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + orientation: $props.orientation, + value: $options.date, + "start-of-week": $props.startOfWeek, + "year-range": $props.yearRange, + onDateSelect: $options.onDateSelect + }, null, 8, ["currentView", "color", "date-filter", "lang", "max-date", "min-date", "orientation", "value", "start-of-week", "year-range", "onDateSelect"]) + ]), + _: 1 + }, 8, ["append-to-body", "z-index", "onClose", "onOpen"])), [ + [vue.vShow, !$props.disabled] + ]) : vue.createCommentVNode("v-if", true) + ], 40, _hoisted_4$9), + $options.hasFeedback ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$3, [ + $options.showError ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$2, [ + vue.renderSlot(_ctx.$slots, "error", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9$2, [ + vue.renderSlot(_ctx.$slots, "help", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.help), 1) + ]) + ])) : vue.createCommentVNode("v-if", true) + ])) : vue.createCommentVNode("v-if", true) + ]), + $options.usesModal && !$props.disabled ? (vue.openBlock(), vue.createBlock(_component_ui_modal, { + key: 1, + ref: "modal", + "remove-header": "", + size: "auto", + onHidden: $options.onPickerClose, + onOpen: $options.onPickerOpen + }, { + default: vue.withCtx(() => [ + vue.createVNode(_component_ui_datepicker_calendar, { + currentView: $data.calendarView, + "onUpdate:currentView": _cache[6] || (_cache[6] = ($event) => $data.calendarView = $event), + color: $props.color, + "date-filter": $props.dateFilter, + lang: $props.lang, + "max-date": $props.maxDate, + "min-date": $props.minDate, + orientation: $props.orientation, + value: $options.date, + "start-of-week": $props.startOfWeek, + "year-range": $props.yearRange, + onDateSelect: $options.onDateSelect + }, null, 8, ["currentView", "color", "date-filter", "lang", "max-date", "min-date", "orientation", "value", "start-of-week", "year-range", "onDateSelect"]) + ]), + _: 1 + }, 8, ["onHidden", "onOpen"])) : vue.createCommentVNode("v-if", true) + ], 2); + } + const UiDatepicker = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$j], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiDatepicker.vue"]]); + const UiFab_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$i = { + name: "UiFab", components: { - UiFocusContainer: __WEBPACK_IMPORTED_MODULE_0__UiFocusContainer_vue__["a" /* default */], - UiMenuOption: __WEBPACK_IMPORTED_MODULE_1__UiMenuOption_vue__["a" /* default */] - } -}; - -/***/ }), -/* 73 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__ = __webpack_require__(2); - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-menu-option', - + UiIcon, + UiRippleInk, + UiTooltip + }, props: { + size: { type: String, - label: String, - href: String, - target: String, - icon: String, - iconProps: { - type: Object, - default: function _default() { - return {}; - } - }, - secondaryText: String, - disableRipple: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false - } + default: "normal" + }, + color: { + type: String, + default: "default" + }, + icon: String, + ariaLabel: String, + tooltip: String, + openTooltipOn: String, + tooltipPosition: String, + disableRipple: { + type: Boolean, + default: false + } }, - computed: { - classes: function classes() { - return { - 'is-divider': this.isDivider, - 'is-disabled': this.disabled, - 'is-anchor': this.isAnchor - }; - }, - isDivider: function isDivider() { - return this.type === 'divider'; - }, - isAnchor: function isAnchor() { - return !this.isDivider && this.href !== undefined; - } - }, - + classes() { + return [`ui-fab--color-${this.color}`, `ui-fab--size-${this.size}`]; + } + } + }; + const _hoisted_1$h = ["aria-label"]; + const _hoisted_2$e = { + key: 0, + class: "ui-fab__icon" + }; + const _hoisted_3$d = /* @__PURE__ */ vue.createElementVNode("span", { class: "ui-fab__focus-ring" }, null, -1); + function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_ripple_ink = vue.resolveComponent("ui-ripple-ink"); + const _component_ui_tooltip = vue.resolveComponent("ui-tooltip"); + return vue.openBlock(), vue.createElementBlock("button", { + class: vue.normalizeClass(["ui-fab", $options.classes]), + "aria-label": $props.ariaLabel || $props.tooltip + }, [ + $props.icon || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : vue.createCommentVNode("v-if", true), + _hoisted_3$d, + !$props.disableRipple ? (vue.openBlock(), vue.createBlock(_component_ui_ripple_ink, { key: 1 })) : vue.createCommentVNode("v-if", true), + $props.tooltip ? (vue.openBlock(), vue.createBlock(_component_ui_tooltip, { + key: 2, + "open-on": $props.openTooltipOn, + position: $props.tooltipPosition + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString($props.tooltip), 1) + ]), + _: 1 + }, 8, ["open-on", "position"])) : vue.createCommentVNode("v-if", true) + ], 10, _hoisted_1$h); + } + const UiFab = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$i], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiFab.vue"]]); + const UiFileupload_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$h = { + name: "UiFileupload", components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiRippleInk: __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__["a" /* default */] - } -}; - -/***/ }), -/* 74 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiCloseButton_vue__ = __webpack_require__(10); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiFocusContainer_vue__ = __webpack_require__(14); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_classlist__ = __webpack_require__(5); - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-modal', - + UiIcon, + UiRippleInk + }, props: { - title: { - type: String, - default: 'UiModal title' - }, - alignTop: { - type: Boolean, - default: false - }, - alignTopMargin: { - type: Number, - default: 60 - }, - size: { - type: String, - default: 'normal' }, - role: { - type: String, - default: 'dialog' }, - transition: { - type: String, - default: 'scale-down' }, - removeHeader: { - type: Boolean, - default: false - }, - removeCloseButton: { - type: Boolean, - default: false - }, - preventShift: { - type: Boolean, - default: false - }, - dismissible: { - type: Boolean, - default: true - }, - dismissOn: { - type: String, - default: 'backdrop esc close-button' - }, - beforeClose: Function + name: { + type: String, + required: true + }, + label: String, + tabindex: [String, Number], + accept: String, + multiple: { + type: Boolean, + default: false + }, + required: { + type: Boolean, + default: false + }, + type: { + type: String, + default: "primary" + }, + color: { + type: String, + default: "default" + }, + size: { + type: String, + default: "normal" + }, + raised: { + type: Boolean, + default: false + }, + iconPosition: { + type: String, + default: "left" + }, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } }, - - data: function data() { - return { - isOpen: false, - lastFocusedElement: null - }; + emits: ["input", "focus", "blur", "change"], + data() { + return { + isActive: false, + renderInput: true, + hasSelection: false, + hasMultiple: false, + displayText: "" + }; }, - - computed: { - classes: function classes() { - return ['ui-modal--size-' + this.size, { 'has-footer': this.hasFooter }, { 'is-open': this.isOpen }, { 'is-aligned-top': this.alignTop }]; - }, - alignTopStyle: function alignTopStyle() { - if (this.alignTop) { - return { 'padding-top': this.alignTopMargin + 'px' }; - } - - return null; - }, - toggleTransition: function toggleTransition() { - return 'ui-modal--transition-' + this.transition; - }, - hasFooter: function hasFooter() { - return Boolean(this.$slots.footer); - }, - dismissOnBackdrop: function dismissOnBackdrop() { - return this.dismissOn.indexOf('backdrop') > -1; - }, - dismissOnCloseButton: function dismissOnCloseButton() { - return this.dismissOn.indexOf('close-button') > -1; - }, - dismissOnEsc: function dismissOnEsc() { - return this.dismissOn.indexOf('esc') > -1; - } - }, - - watch: { - isOpen: function isOpen() { - var _this = this; - - this.$nextTick(function () { - _this[_this.isOpen ? 'onOpen' : 'onClose'](); - }); - } - }, - - beforeDestroy: function beforeDestroy() { - if (this.isOpen) { - this.returnFocus(); + classes() { + return [ + `ui-fileupload--type-${this.type}`, + `ui-fileupload--color-${this.color}`, + `ui-fileupload--icon-position-${this.iconPosition}`, + `ui-fileupload--size-${this.size}`, + { "is-active": this.isActive }, + { "is-multiple": this.hasMultiple }, + { "is-raised": this.raised }, + { "is-disabled": this.disabled } + ]; + }, + placeholder() { + if (this.label) { + return this.label; } + return this.multiple ? "Choose files" : "Choose a file"; + } }, - - methods: { - open: function open() { - this.isOpen = true; - }, - close: function close() { - if (!this.dismissible) { - return; - } - - if (this.beforeClose && this.beforeClose(this) === false) { - return; - } - - this.isOpen = false; - }, - redirectFocus: function redirectFocus() { - this.$refs.focusContainer.focus(); - }, - returnFocus: function returnFocus() { - if (this.lastFocusedElement) { - this.lastFocusedElement.focus(); - } - }, - onBackdropMouseDown: function onBackdropMouseDown() { - this.mouseDownSource = 'backdrop'; - }, - onBackdropMouseUp: function onBackdropMouseUp() { - if (this.dismissOnBackdrop && this.mouseDownSource === 'backdrop') { - this.close(); - } else { - this.redirectFocus(); - } - - this.mouseDownSource = undefined; - }, - onEsc: function onEsc() { - if (this.dismissOnEsc) { - this.close(); - } - }, - onOpen: function onOpen() { - this.lastFocusedElement = document.activeElement; - this.$refs.focusContainer.focus(); - - __WEBPACK_IMPORTED_MODULE_2__helpers_classlist__["a" /* default */].add(document.body, 'ui-modal--is-open'); - this.incrementOpenModalCount(); - - this.$emit('open'); - }, - onClose: function onClose() { - this.returnFocus(); - this.$emit('close'); - }, - onEnter: function onEnter() { - this.$emit('reveal'); - }, - onLeave: function onLeave() { - this.$emit('hide'); - var newCount = this.decrementOpenModalCount(); - - if (newCount === 0) { - __WEBPACK_IMPORTED_MODULE_2__helpers_classlist__["a" /* default */].remove(document.body, 'ui-modal--is-open'); - } - }, - getOpenModalCount: function getOpenModalCount() { - var count = document.body.getAttribute('data-ui-open-modals'); - return count === undefined ? 0 : Number(count); - }, - setOpenModalCount: function setOpenModalCount(count) { - var normalizedCount = Math.max(0, count); - - if (normalizedCount === 0) { - document.body.removeAttribute('data-ui-open-modals'); - } else { - document.body.setAttribute('data-ui-open-modals', normalizedCount); - } - - return normalizedCount; - }, - incrementOpenModalCount: function incrementOpenModalCount() { - return this.setOpenModalCount(this.getOpenModalCount() + 1); - }, - decrementOpenModalCount: function decrementOpenModalCount() { - return this.setOpenModalCount(this.getOpenModalCount() - 1); + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + }, + onInput(e) { + this.$emit("input", this.$refs.input.files, e); + }, + onChange(e) { + this.updateDisplayText(e); + this.$emit("change", this.$refs.input.files, e); + }, + updateDisplayText(e) { + let displayText; + const input = this.$refs.input; + if (input.files && input.files.length > 1) { + displayText = `${input.files.length} files selected`; + } else { + displayText = e.target.value.split("\\").pop(); } - }, - + if (displayText) { + this.hasSelection = true; + this.displayText = displayText; + this.hasMultiple = input.files.length > 1; + } + }, + focus() { + this.$refs.input.focus(); + }, + openPicker() { + this.$refs.input.click(); + }, + clear() { + this.hasSelection = false; + this.renderInput = false; + this.$nextTick(() => { + this.renderInput = true; + }); + } + } + }; + const _hoisted_1$g = ["accept", "disabled", "multiple", "name", "required", "tabindex"]; + const _hoisted_2$d = { class: "ui-fileupload__content" }; + const _hoisted_3$c = { class: "ui-fileupload__icon" }; + const _hoisted_4$8 = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M5.016 18h13.969v2.016H5.016V18zM9 15.984v-6H5.016L12 3l6.984 6.984H15v6H9z" }) + ], -1); + const _hoisted_5$8 = { + key: 0, + class: "ui-fileupload__display-text" + }; + const _hoisted_6$6 = /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-fileupload__focus-ring" }, null, -1); + function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_ripple_ink = vue.resolveComponent("ui-ripple-ink"); + return vue.openBlock(), vue.createElementBlock("label", { + class: vue.normalizeClass(["ui-fileupload", $options.classes]) + }, [ + $data.renderInput ? (vue.openBlock(), vue.createElementBlock("input", { + key: 0, + ref: "input", + class: "ui-fileupload__input", + type: "file", + accept: $props.accept, + disabled: $props.disabled, + multiple: $props.multiple, + name: $props.name, + required: $props.required, + tabindex: $props.tabindex, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onInput: _cache[1] || (_cache[1] = (...args) => $options.onInput && $options.onInput(...args)), + onChange: _cache[2] || (_cache[2] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[3] || (_cache[3] = (...args) => $options.onFocus && $options.onFocus(...args)) + }, null, 40, _hoisted_1$g)) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_2$d, [ + vue.createElementVNode("div", _hoisted_3$c, [ + vue.renderSlot(_ctx.$slots, "icon", {}, () => [ + vue.createVNode(_component_ui_icon, null, { + default: vue.withCtx(() => [ + _hoisted_4$8 + ]), + _: 1 + }) + ]) + ]), + $data.hasSelection ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$8, vue.toDisplayString($data.displayText), 1)) : vue.renderSlot(_ctx.$slots, "default", { key: 1 }, () => [ + vue.createTextVNode(vue.toDisplayString($options.placeholder), 1) + ]) + ]), + _hoisted_6$6, + !$props.disableRipple && !$props.disabled ? (vue.openBlock(), vue.createBlock(_component_ui_ripple_ink, { key: 1 })) : vue.createCommentVNode("v-if", true) + ], 2); + } + const UiFileupload = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$h], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiFileupload.vue"]]); + const UiMenuOption_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$g = { + name: "UiMenuOption", components: { - UiCloseButton: __WEBPACK_IMPORTED_MODULE_0__UiCloseButton_vue__["a" /* default */], - UiFocusContainer: __WEBPACK_IMPORTED_MODULE_1__UiFocusContainer_vue__["a" /* default */] - } -}; - -/***/ }), -/* 75 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tippy_js_esm__ = __webpack_require__(26); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers_classlist__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_element_ref__ = __webpack_require__(13); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helpers_events__ = __webpack_require__(22); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__UiFocusContainer_vue__ = __webpack_require__(14); - - - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-popover', - + UiIcon, + UiRippleInk + }, props: { - animation: { - type: String, - default: 'fade' }, - appendToBody: { - type: Boolean, - default: true - }, - closeOnScroll: { - type: Boolean, - default: true - }, - closeOnExternalClick: { - type: Boolean, - default: true - }, - closeOnEsc: { - type: Boolean, - default: true - }, - constrainToScrollParent: { - type: Boolean, - default: true - }, - containFocus: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false - }, - focusRedirector: Function, - openOn: { - type: String, - default: 'click' }, - position: { - type: String, - default: 'bottom-start' - }, - raised: { - type: Boolean, - default: true - }, - trigger: { - validator: function validator(value) { - return __WEBPACK_IMPORTED_MODULE_2__helpers_element_ref__["a" /* default */].validate(value, '[UiPopover]: Invalid prop: "trigger". Expected Element, VueComponent or CSS selector string which matches an existing element.'); - } - }, - zIndex: Number + type: String, + label: String, + href: String, + target: String, + icon: String, + iconProps: { + type: Object, + default() { + return {}; + } + }, + secondaryText: String, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } }, - - data: function data() { + computed: { + classes() { return { - returnFocus: true + "is-divider": this.isDivider, + "is-disabled": this.disabled, + "is-anchor": this.isAnchor }; + }, + isDivider() { + return this.type === "divider"; + }, + isAnchor() { + return !this.isDivider && this.href !== void 0; + } + } + }; + const _hoisted_1$f = { class: "ui-menu-option__content" }; + const _hoisted_2$c = { class: "ui-menu-option__text" }; + const _hoisted_3$b = { + key: 1, + class: "ui-menu-option__secondary-text" + }; + function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_ripple_ink = vue.resolveComponent("ui-ripple-ink"); + return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($options.isAnchor ? "a" : "li"), { + class: vue.normalizeClass(["ui-menu-option", $options.classes]), + role: "menu-item", + href: $options.isAnchor ? $props.disabled ? null : $props.href : null, + tabindex: $options.isDivider || $options.isAnchor || $props.disabled ? null : "0", + target: $options.isAnchor ? $props.disabled ? null : $props.target : null + }, { + default: vue.withCtx(() => [ + !$options.isDivider ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }, () => [ + vue.createElementVNode("div", _hoisted_1$f, [ + $props.icon ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { + key: 0, + class: "ui-menu-option__icon", + "icon-set": $props.iconProps.iconSet, + icon: $props.icon, + "remove-text": $props.iconProps.removeText, + "use-svg": $props.iconProps.useSvg + }, null, 8, ["icon-set", "icon", "remove-text", "use-svg"])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_2$c, vue.toDisplayString($props.label), 1), + $props.secondaryText ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$b, vue.toDisplayString($props.secondaryText), 1)) : vue.createCommentVNode("v-if", true) + ]) + ]) : vue.createCommentVNode("v-if", true), + !$props.disabled && !$options.isDivider && !$props.disableRipple ? (vue.openBlock(), vue.createBlock(_component_ui_ripple_ink, { key: 1 })) : vue.createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["class", "href", "tabindex", "target"]); + } + const UiMenuOption = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$g], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiMenuOption.vue"]]); + const UiMenu_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$f = { + name: "UiMenu", + components: { + UiFocusContainer, + UiMenuOption }, - - - watch: { - disabled: function disabled(value) { - if (this.tip) { - if (value === true) { - this.tip.disable(); - } else { - this.tip.enable(); - } - } + props: { + options: { + type: Array, + default() { + return []; } + }, + hasIcons: { + type: Boolean, + default: false + }, + iconProps: Object, + hasSecondaryText: { + type: Boolean, + default: false + }, + containFocus: { + type: Boolean, + default: false + }, + keys: { + type: Object, + default() { + return { + icon: "icon", + type: "type", + label: "label", + secondaryText: "secondaryText", + iconProps: "iconProps", + disabled: "disabled", + href: "href", + target: "target" + }; + } + }, + disableRipple: { + type: Boolean, + default: false + }, + raised: { + type: Boolean, + default: false + } }, - - created: function created() { - this.tip = null; - }, - mounted: function mounted() { - this.setupPopover(); - }, - beforeDestroy: function beforeDestroy() { - this.destroyPopover(); + emits: ["select", "close"], + computed: { + classes() { + return { + "is-raised": this.raised, + "has-icons": this.hasIcons, + "has-secondary-text": this.hasSecondaryText + }; + } }, - - methods: { - setupPopover: function setupPopover() { - this.triggerEl = __WEBPACK_IMPORTED_MODULE_2__helpers_element_ref__["a" /* default */].resolve(this.trigger, this.$el.parentElement); - - if (!this.triggerEl) { - console.error('[UiPopover]: Trigger element not found.'); - return; - } - - var body = this.triggerEl.getRootNode() === document ? document.body : this.triggerEl.getRootNode(); - - var options = { - animateFill: false, - - animation: this.animation === 'none' ? 'fade' : this.animation, - appendTo: this.appendToBody ? body : this.triggerEl.parentElement, - arrow: false, - content: this.$el, - delay: [0, 0], - distance: 0, - duration: this.animation === 'none' ? 0 : [250, 200], - hideOnClick: this.closeOnExternalClick, - ignoreAttributes: true, - interactive: true, - lazy: true, - maxWidth: '100%', - multiple: true, - onHidden: this.onHidden, - onHide: this.onClose, - onShow: this.onOpen, - onShown: this.onShown, - placement: this.position, - role: 'dialog', - theme: 'ui-popover', - trigger: this.openOn.replace('hover', 'mouseenter'), - zIndex: this.zIndex, - popperOptions: { - modifiers: { - computeStyle: { - gpuAcceleration: !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform)) - } - } - } - }; - - if (!this.constrainToScrollParent) { - options.popperOptions.modifiers.preventOverflow = { enabled: false }; - options.popperOptions.modifiers.hide = { enabled: false }; - } - - this.tip = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_tippy_js_esm__["a" /* default */])(this.triggerEl, options); - - if (this.disabled) { - this.tip.disable(); - } - }, - destroyPopover: function destroyPopover() { - if (this.tip) { - this.removeCloseEventListeners(); - this.tip.destroy(); - this.tip = null; - } - }, - isOpen: function isOpen() { - return this.tip && this.tip.state.isVisible; - }, - open: function open() { - if (this.tip) { - this.tip.show(); - } - }, - close: function close() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { returnFocus: true }; - - if (this.tip) { - this.returnFocus = options.returnFocus; - this.tip.hide(); - } - }, - toggle: function toggle() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { returnFocus: true }; - - if (this.tip) { - this.returnFocus = options.returnFocus; - this.tip[this.isOpen() ? 'hide' : 'show'](); - } - }, - scheduleUpdate: function scheduleUpdate() { - if (this.tip) { - this.tip.popperInstance.scheduleUpdate(); - } - }, - onOpen: function onOpen() { - this.addCloseEventListeners(); - - __WEBPACK_IMPORTED_MODULE_1__helpers_classlist__["a" /* default */].add(this.triggerEl, 'has-dropdown-open'); - - this.$emit('open'); - }, - onClose: function onClose() { - if (this.returnFocus && this.lastFocusedElement) { - this.lastFocusedElement.focus(); - } - - this.removeCloseEventListeners(); - - __WEBPACK_IMPORTED_MODULE_1__helpers_classlist__["a" /* default */].remove(this.triggerEl, 'has-dropdown-open'); - - this.$emit('close'); - - this.returnFocus = true; - }, - onShown: function onShown() { - this.lastFocusedElement = document.activeElement; - this.$refs.focusContainer.focus(); - this.$emit('reveal'); - }, - onHidden: function onHidden() { - this.$emit('hide'); - }, - closeOnExternal: function closeOnExternal(event, closeOptions) { - if (!this.$el.contains(event.target)) { - this.close(closeOptions); - } - }, - addCloseEventListeners: function addCloseEventListeners() { - var _this = this; - - this.removeCloseEventListeners(); - - setTimeout(function () { - if (_this.closeOnExternalClick) { - _this.removeExternalClickListener = __WEBPACK_IMPORTED_MODULE_3__helpers_events__["a" /* default */].on('click', document, function (e) { - _this.closeOnExternal(e, { returnFocus: false }); - }); - } - - if (_this.closeOnEsc) { - _this.removeEscListener = __WEBPACK_IMPORTED_MODULE_3__helpers_events__["a" /* default */].onKeydown(27, document, function () { - _this.close({ returnFocus: true }); - }); - } - - if (_this.closeOnScroll) { - _this.removeScrollListener = __WEBPACK_IMPORTED_MODULE_3__helpers_events__["a" /* default */].on('scroll', document, function (e) { - _this.closeOnExternal(e, { returnFocus: true }); - }); - } - }, 0); - }, - removeCloseEventListeners: function removeCloseEventListeners() { - if (this.removeExternalClickListener) { - this.removeExternalClickListener(); - this.removeExternalClickListener = null; - } - - if (this.removeEscListener) { - this.removeEscListener(); - this.removeEscListener = null; - } - - if (this.removeScrollListener) { - this.removeScrollListener(); - this.removeScrollListener = null; - } + selectOption(option) { + if (option.disabled || option.type === "divider") { + return; } - }, - - components: { - UiFocusContainer: __WEBPACK_IMPORTED_MODULE_4__UiFocusContainer_vue__["a" /* default */] - } -}; - -/***/ }), -/* 76 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-preloader', - + this.$emit("select", option); + this.closeMenu(); + }, + closeMenu() { + this.$emit("close"); + } + } + }; + function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_menu_option = vue.resolveComponent("ui-menu-option"); + const _component_ui_focus_container = vue.resolveComponent("ui-focus-container"); + return vue.openBlock(), vue.createBlock(_component_ui_focus_container, { + ref: "focusContainer", + class: vue.normalizeClass(["ui-menu", $options.classes]), + role: "menu", + tag: "ul", + lazy: "", + "contain-focus": $props.containFocus + }, { + default: vue.withCtx(() => [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($props.options, (option, index) => { + return vue.openBlock(), vue.createBlock(_component_ui_menu_option, { + key: index, + "disable-ripple": $props.disableRipple, + disabled: option[$props.keys.disabled], + href: option[$props.keys.href], + "icon-props": $props.iconProps || option[$props.keys.iconProps], + icon: $props.hasIcons ? option[$props.keys.icon] : null, + label: option[$props.keys.type] === "divider" ? null : option[$props.keys.label] || option, + "secondary-text": $props.hasSecondaryText ? option[$props.keys.secondaryText] : null, + target: option[$props.keys.target], + type: option[$props.keys.type], + onClick: ($event) => $options.selectOption(option), + onKeydown: [ + vue.withKeys(($event) => $options.selectOption(option), ["enter"]), + vue.withKeys($options.closeMenu, ["esc"]) + ] + }, { + default: vue.withCtx(() => [ + vue.renderSlot(_ctx.$slots, "option", { option }) + ]), + _: 2 + }, 1032, ["disable-ripple", "disabled", "href", "icon-props", "icon", "label", "secondary-text", "target", "type", "onClick", "onKeydown"]); + }), 128)) + ]), + _: 3 + }, 8, ["class", "contain-focus"]); + } + const UiMenu = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$f], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiMenu.vue"]]); + const UiPreloader_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$e = { + name: "UiPreloader", props: { - show: { - type: Boolean, - required: true - } - } -}; - -/***/ }), -/* 77 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-progress-circular', - + show: { + type: Boolean, + required: true + } + } + }; + const _hoisted_1$e = ["aria-busy"]; + function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-preloader", { "is-loading": $props.show }]) + }, [ + vue.createElementVNode("div", { + class: "ui-preloader__progressbar", + role: "progressbar", + "aria-busy": $props.show ? "true" : false + }, null, 8, _hoisted_1$e) + ], 2); + } + const UiPreloader = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$e], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiPreloader.vue"]]); + const UiProgressLinear_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$d = { + name: "UiProgressLinear", props: { - type: { - type: String, - default: 'indeterminate' }, - color: { - type: String, - default: 'primary' }, - progress: { - type: Number, - default: 0 - }, - size: { - type: Number, - default: 32 - }, - stroke: Number, - autoStroke: { - type: Boolean, - default: true - }, - disableTransition: { - type: Boolean, - default: false - } + type: { + type: String, + default: "indeterminate" + }, + color: { + type: String, + default: "primary" + }, + progress: { + type: Number, + default: 0 + } }, - computed: { - classes: function classes() { - return ['ui-progress-circular--color-' + this.color, 'ui-progress-circular--type-' + this.type]; - }, - strokeDashArray: function strokeDashArray() { - var circumference = 2 * Math.PI * this.radius; - - return Math.round(circumference * 1000) / 1000; - }, - strokeDashOffset: function strokeDashOffset() { - var progress = this.moderateProgress(this.progress); - var circumference = 2 * Math.PI * this.radius; - - return (100 - progress) / 100 * circumference; - }, - radius: function radius() { - var stroke = this.stroke ? this.stroke : 4; - return (this.size - stroke) / 2; - }, - calculatedStroke: function calculatedStroke() { - if (this.stroke) { - return this.stroke; - } - - if (this.autoStroke) { - return parseInt(this.size / 8, 10); - } - - return 4; + classes() { + return [`ui-progress-linear--color-${this.color}`, `ui-progress-linear--type-${this.type}`]; + }, + moderatedProgress() { + if (this.progress < 0) { + return 0; } - }, - - methods: { - moderateProgress: function moderateProgress(progress) { - if (isNaN(progress) || progress < 0) { - return 0; - } - - if (progress > 100) { - return 100; - } - - return progress; - } - } -}; - -/***/ }), -/* 78 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-progress-linear', - - props: { - type: { - type: String, - default: 'indeterminate' }, - color: { - type: String, - default: 'primary' }, - progress: { - type: Number, - default: 0 - } - }, - - computed: { - classes: function classes() { - return ['ui-progress-linear--color-' + this.color, 'ui-progress-linear--type-' + this.type]; - }, - moderatedProgress: function moderatedProgress() { - if (this.progress < 0) { - return 0; - } - - if (this.progress > 100) { - return 100; - } - - return this.progress; - } - } -}; - -/***/ }), -/* 79 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-radio', - + if (this.progress > 100) { + return 100; + } + return this.progress; + } + } + }; + const _hoisted_1$d = ["aria-valuenow"]; + const _hoisted_2$b = { + key: 1, + class: "ui-progress-linear__progress-bar is-indeterminate", + role: "progressbar", + "aria-valuemax": 100, + "aria-valuemin": 0 + }; + function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createBlock(vue.Transition, { name: "ui-progress-linear--transition-fade" }, { + default: vue.withCtx(() => [ + vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-progress-linear", $options.classes]) + }, [ + $props.type === "determinate" ? (vue.openBlock(), vue.createElementBlock("div", { + key: 0, + class: "ui-progress-linear__progress-bar is-determinate", + role: "progressbar", + "aria-valuemax": 100, + "aria-valuemin": 0, + "aria-valuenow": $options.moderatedProgress, + style: vue.normalizeStyle({ transform: `scaleX(${$options.moderatedProgress / 100})` }) + }, null, 12, _hoisted_1$d)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$b)) + ], 2) + ]), + _: 1 + }); + } + const UiProgressLinear = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$d], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiProgressLinear.vue"]]); + const UiRadio_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$c = { + name: "UiRadio", props: { - name: String, - label: String, - tabindex: [String, Number], - value: { - type: [Number, String], - required: true - }, - trueValue: { - type: [Number, String], - required: true - }, - checked: { - type: Boolean, - default: false - }, - color: { - type: String, - default: 'primary' }, - buttonPosition: { - type: String, - default: 'left' }, - disabled: { - type: Boolean, - default: false - } - }, - - data: function data() { - return { - isActive: false - }; + name: String, + label: String, + tabindex: [String, Number], + modelValue: { + type: [Number, String], + required: true + }, + trueValue: { + type: [Number, String], + required: true + }, + checked: { + type: Boolean, + default: false + }, + color: { + type: String, + default: "primary" + }, + buttonPosition: { + type: String, + default: "left" + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "change"], + data() { + return { + isActive: false + }; }, - - computed: { - classes: function classes() { - return ['ui-radio--color-' + this.color, 'ui-radio--button-position-' + this.buttonPosition, { 'is-active': this.isActive }, { 'is-checked': this.isChecked }, { 'is-disabled': this.disabled }]; - }, - isChecked: function isChecked() { - return this.value === this.trueValue; - } + classes() { + return [ + `ui-radio--color-${this.color}`, + `ui-radio--button-position-${this.buttonPosition}`, + { "is-active": this.isActive }, + { "is-checked": this.isChecked }, + { "is-disabled": this.disabled } + ]; + }, + isChecked() { + return this.modelValue === this.trueValue; + } }, - - created: function created() { - if (this.checked) { - this.$emit('input', this.trueValue); - } + created() { + if (this.checked && !this.isChecked) { + this.$emit("update:modelValue", this.trueValue); + } }, - - methods: { - focus: function focus() { - this.$refs.input.focus(); - }, - toggleCheck: function toggleCheck() { - if (!this.disabled) { - this.$emit('input', this.trueValue); - } - }, - onFocus: function onFocus(e) { - this.isActive = true; - this.$emit('focus', e); - }, - onBlur: function onBlur(e) { - this.isActive = false; - this.$emit('blur', e); - }, - onChange: function onChange(e) { - this.$emit('change', this.isChecked, e); - } - } -}; - -/***/ }), -/* 80 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiRadio_vue__ = __webpack_require__(18); - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-radio-group', - - props: { - name: { - type: String, - required: true - }, - tabindex: [String, Number], - label: String, - options: { - type: Array, - required: true - }, - value: { - type: [Number, String], - required: true - }, - keys: { - type: Object, - default: function _default() { - return { - id: 'id', - class: 'class', - label: 'label', - value: 'value', - checked: 'checked', - disabled: 'disabled' - }; - } - }, - color: { - type: String, - default: 'primary' }, - buttonPosition: { - type: String, - default: 'left' }, - vertical: { - type: Boolean, - default: false - }, - help: String, - error: String, - invalid: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false + focus() { + this.$refs.input.focus(); + }, + toggleCheck() { + if (!this.disabled) { + this.$emit("update:modelValue", this.trueValue); + } + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + }, + onChange(e) { + this.$emit("change", this.isChecked, e); + } + } + }; + const _hoisted_1$c = { class: "ui-radio__input-wrapper" }; + const _hoisted_2$a = [".checked", "disabled", "name", "tabindex", "value"]; + const _hoisted_3$a = /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-radio__focus-ring" }, null, -1); + const _hoisted_4$7 = /* @__PURE__ */ vue.createElementVNode("span", { class: "ui-radio__outer-circle" }, null, -1); + const _hoisted_5$7 = /* @__PURE__ */ vue.createElementVNode("span", { class: "ui-radio__inner-circle" }, null, -1); + const _hoisted_6$5 = { + key: 0, + class: "ui-radio__label-text" + }; + function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("label", { + class: vue.normalizeClass(["ui-radio", $options.classes]), + onClick: _cache[3] || (_cache[3] = (...args) => $options.toggleCheck && $options.toggleCheck(...args)) + }, [ + vue.createElementVNode("div", _hoisted_1$c, [ + vue.createElementVNode("input", { + ref: "input", + class: "ui-radio__input", + type: "radio", + ".checked": $props.checked, + disabled: $props.disabled, + name: $props.name, + tabindex: $props.tabindex, + value: $props.trueValue, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onChange: _cache[1] || (_cache[1] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[2] || (_cache[2] = (...args) => $options.onFocus && $options.onFocus(...args)) + }, null, 40, _hoisted_2$a), + _hoisted_3$a, + _hoisted_4$7, + _hoisted_5$7 + ]), + $props.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$5, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.label), 1) + ]) + ])) : vue.createCommentVNode("v-if", true) + ], 2); + } + const UiRadio = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$c], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiRadio.vue"]]); + const UiRadioGroup_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$b = { + name: "UiRadioGroup", + components: { + UiRadio + }, + props: { + name: { + type: String, + required: true + }, + tabindex: [String, Number], + label: String, + options: { + type: Array, + required: true + }, + modelValue: { + type: [Number, String], + required: true + }, + keys: { + type: Object, + default() { + return { + id: "id", + class: "class", + label: "label", + value: "value", + checked: "checked", + disabled: "disabled" + }; } + }, + color: { + type: String, + default: "primary" + }, + buttonPosition: { + type: String, + default: "left" + }, + vertical: { + type: Boolean, + default: false + }, + help: String, + error: String, + invalid: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } }, - - data: function data() { - return { - isActive: false, - initialValue: this.value, - selectedOptionValue: this.value - }; + emits: ["update:modelValue", "focus", "blur", "change"], + data() { + return { + isActive: false, + initialValue: this.modelValue + }; }, - - computed: { - classes: function classes() { - return ['ui-radio-group--color-' + this.color, 'ui-radio-group--button-position-' + this.buttonPosition, { 'is-vertical': this.vertical }, { 'is-active': this.isActive }, { 'is-invalid': this.invalid }, { 'is-disabled': this.disabled }]; - }, - hasFeedback: function hasFeedback() { - return this.showError || this.showHelp; - }, - showError: function showError() { - return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); - }, - showHelp: function showHelp() { - return Boolean(this.help) || Boolean(this.$slots.help); - } - }, - - watch: { - selectedOptionValue: function selectedOptionValue() { - this.$emit('input', this.selectedOptionValue); - this.$emit('change', this.selectedOptionValue); + classes() { + return [ + `ui-radio-group--color-${this.color}`, + `ui-radio-group--button-position-${this.buttonPosition}`, + { "is-vertical": this.vertical }, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-disabled": this.disabled } + ]; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + }, + selectedOptionValue: { + get() { + return this.modelValue; }, - value: function value() { - this.selectedOptionValue = this.value; + set(value) { + this.$emit("update:modelValue", value); + this.$emit("change", value); } + } }, - methods: { - reset: function reset() { - this.$emit('input', this.initialValue); - }, - isOptionCheckedByDefault: function isOptionCheckedByDefault(option) { - return this.initialValue == option[this.keys.value] || this.initialValue == option || option[this.keys.checked]; - }, - getTrueValue: function getTrueValue(option) { - if (typeof option === 'string' || typeof option === 'number') { - return option; - } - - var value = option[this.keys.value]; - - if (value === undefined) { - console.warn('[UiRadioGroup] option has no `value`: ', option); - return option; - } - - return value; - }, - onFocus: function onFocus(e) { - this.isActive = true; - this.$emit('focus', e); - }, - onBlur: function onBlur(e) { - this.isActive = false; - this.$emit('blur', e); + reset() { + this.$emit("update:modelValue", this.initialValue); + }, + isOptionCheckedByDefault(option) { + return this.initialValue == option[this.keys.value] || this.initialValue == option || option[this.keys.checked]; + }, + getTrueValue(option) { + if (typeof option === "string" || typeof option === "number") { + return option; } - }, - - components: { - UiRadio: __WEBPACK_IMPORTED_MODULE_0__UiRadio_vue__["a" /* default */] - } -}; - -/***/ }), -/* 81 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_classlist__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers_element_ref__ = __webpack_require__(13); - - - - -var startRipple = function startRipple(eventType, event) { - var holder = event.currentTarget || event.target; - - if (holder && !__WEBPACK_IMPORTED_MODULE_0__helpers_classlist__["a" /* default */].has(holder, 'ui-ripple-ink')) { - holder = holder.querySelector('.ui-ripple-ink'); - } - - if (!holder) { - return; - } - - var prev = holder.getAttribute('data-ui-event'); - - if (prev && prev !== eventType) { - return; - } - - holder.setAttribute('data-ui-event', eventType); - - var rect = holder.getBoundingClientRect(); - var x = event.clientX - rect.left; - var y = event.clientY - rect.top; - - var ripple = document.createElement('div'); - var max = void 0; - - if (rect.width === rect.height) { - max = rect.width * 1.412; - } else { - max = Math.sqrt(rect.width * rect.width + rect.height * rect.height); - } - - var size = max * 2 + 'px'; - - ripple.style.width = size; - ripple.style.height = size; - ripple.style.marginLeft = -max + x + 'px'; - ripple.style.marginTop = -max + y + 'px'; - - ripple.className = 'ui-ripple-ink__ink'; - holder.appendChild(ripple); - - setTimeout(function () { - __WEBPACK_IMPORTED_MODULE_0__helpers_classlist__["a" /* default */].add(ripple, 'is-held'); - }, 0); - - var releaseEvent = eventType === 'mousedown' ? 'mouseup' : 'touchend'; - - var handleRelease = function handleRelease() { - document.removeEventListener(releaseEvent, handleRelease); - - __WEBPACK_IMPORTED_MODULE_0__helpers_classlist__["a" /* default */].add(ripple, 'is-done'); - - var timeout = 650; - - setTimeout(function () { - holder.removeChild(ripple); - - if (holder.children.length === 0) { - holder.removeAttribute('data-ui-event'); - } - }, timeout); - }; - - document.addEventListener(releaseEvent, handleRelease); -}; - -var handleMouseDown = function handleMouseDown(e) { - if (e.button === 0) { - startRipple(e.type, e); - } -}; - -var handleTouchStart = function handleTouchStart(e) { - if (e.changedTouches) { - for (var i = 0; i < e.changedTouches.length; ++i) { - startRipple(e.type, e.changedTouches[i]); + const value = option[this.keys.value]; + if (value === void 0) { + console.warn("[UiRadioGroup] option has no `value`: ", option); + return option; } + return value; + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + } } -}; - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-ripple-ink', - - props: { - trigger: { - validator: function validator(value) { - return __WEBPACK_IMPORTED_MODULE_1__helpers_element_ref__["a" /* default */].validate(value, '[UiRippleInk]: Invalid prop: "trigger". Expected Element, VueComponent or CSS selector string.'); - } - } + }; + const _hoisted_1$b = { + key: 0, + class: "ui-radio-group__label-text" + }; + const _hoisted_2$9 = { class: "ui-radio-group__radios" }; + const _hoisted_3$9 = { + key: 1, + class: "ui-radio-group__feedback" + }; + const _hoisted_4$6 = { + key: 0, + class: "ui-radio-group__feedback-text" + }; + const _hoisted_5$6 = { + key: 1, + class: "ui-radio-group__feedback-text" + }; + function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_radio = vue.resolveComponent("ui-radio"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-radio-group", $options.classes]) + }, [ + $props.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.label), 1) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_2$9, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($props.options, (option) => { + return vue.openBlock(), vue.createBlock(_component_ui_radio, { + id: option[$props.keys.id], + key: option[$props.keys.id], + modelValue: $options.selectedOptionValue, + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $options.selectedOptionValue = $event), + class: vue.normalizeClass(["ui-radio-group__radio", option[$props.keys.class]]), + "button-position": $props.buttonPosition, + checked: $options.isOptionCheckedByDefault(option), + color: $props.color, + disabled: $props.disabled || option[$props.keys.disabled], + name: $props.name, + tabindex: $props.tabindex, + "true-value": $options.getTrueValue(option), + onBlur: $options.onBlur, + onFocus: $options.onFocus + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString(option[$props.keys.label] || option), 1) + ]), + _: 2 + }, 1032, ["id", "modelValue", "button-position", "checked", "class", "color", "disabled", "name", "tabindex", "true-value", "onBlur", "onFocus"]); + }), 128)) + ]), + $options.hasFeedback ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$9, [ + $options.showError ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$6, [ + vue.renderSlot(_ctx.$slots, "error", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$6, [ + vue.renderSlot(_ctx.$slots, "help", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.help), 1) + ]) + ])) : vue.createCommentVNode("v-if", true) + ])) : vue.createCommentVNode("v-if", true) + ], 2); + } + const UiRadioGroup = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$b], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiRadioGroup.vue"]]); + const UiSelectOption_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$a = { + name: "UiSelectOption", + components: { + UiIcon }, - - watch: { - trigger: function trigger() { - this.setupRipple(); + props: { + option: { + type: [String, Number, Object], + required: true + }, + type: { + type: String, + default: "basic" + }, + multiple: { + type: Boolean, + default: false + }, + highlighted: { + type: Boolean, + default: false + }, + selected: { + type: Boolean, + default: false + }, + keys: { + type: Object, + default() { + return { + class: "class", + label: "label", + image: "image" + }; } + } }, - - created: function created() { - this.triggerEl = null; - }, - mounted: function mounted() { - this.setupRipple(); - }, - beforeDestroy: function beforeDestroy() { - this.destroyRipple(); + computed: { + classes() { + return [ + `ui-select-option--type-${this.type}`, + this.option[this.keys.class], + { "is-highlighted": this.highlighted }, + { "is-selected": this.selected } + ]; + }, + imageStyle() { + return { "background-image": "url(" + this.option[this.keys.image] + ")" }; + } + } + }; + const _hoisted_1$a = { + key: 0, + class: "ui-select-option__basic" + }; + const _hoisted_2$8 = { + key: 1, + class: "ui-select-option__image" + }; + const _hoisted_3$8 = { class: "ui-select-option__image-text" }; + const _hoisted_4$5 = { + key: 2, + class: "ui-select-option__checkbox" + }; + const _hoisted_5$5 = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M9.984 17.016l9-9-1.406-1.453-7.594 7.594-3.563-3.563L5.016 12zm9-14.016C20.11 3 21 3.938 21 5.016v13.97C21 20.062 20.11 21 18.984 21H5.014C3.89 21 3 20.064 3 18.986V5.015C3 3.94 3.89 3 5.014 3h13.97z" }) + ], -1); + const _hoisted_6$4 = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M18.984 3C20.062 3 21 3.938 21 5.016v13.97C21 20.062 20.062 21 18.984 21H5.014C3.938 21 3 20.064 3 18.986V5.015C3 3.94 3.936 3 5.014 3h13.97zm0 2.016H5.014v13.97h13.97V5.015z" }) + ], -1); + function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + return vue.openBlock(), vue.createElementBlock("li", { + class: vue.normalizeClass(["ui-select-option", $options.classes]) + }, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + $props.type === "basic" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, vue.toDisplayString($props.option[$props.keys.label] || $props.option), 1)) : vue.createCommentVNode("v-if", true), + $props.type === "image" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$8, [ + vue.createElementVNode("div", { + class: "ui-select-option__image-object", + style: vue.normalizeStyle($options.imageStyle) + }, null, 4), + vue.createElementVNode("div", _hoisted_3$8, vue.toDisplayString($props.option[$props.keys.label]), 1) + ])) : vue.createCommentVNode("v-if", true), + $props.multiple ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$5, [ + $props.selected ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { key: 0 }, { + default: vue.withCtx(() => [ + _hoisted_5$5 + ]), + _: 1 + })) : (vue.openBlock(), vue.createBlock(_component_ui_icon, { key: 1 }, { + default: vue.withCtx(() => [ + _hoisted_6$4 + ]), + _: 1 + })) + ])) : vue.createCommentVNode("v-if", true) + ]) + ], 2); + } + const UiSelectOption = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$a], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSelectOption.vue"]]); + const UiSelect_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$9 = { + name: "UiSelect", + components: { + UiIcon, + UiPopover, + UiProgressCircular, + UiSelectOption }, - - - methods: { - setupRipple: function setupRipple() { - this.triggerEl = __WEBPACK_IMPORTED_MODULE_1__helpers_element_ref__["a" /* default */].resolve(this.trigger, this.$el.parentElement); - - if (!this.triggerEl) { - console.error('[UiRippleInk]: Trigger element not found.'); - return; - } - - this.triggerEl.addEventListener('touchstart', handleTouchStart); - this.triggerEl.addEventListener('mousedown', handleMouseDown); - }, - destroyRipple: function destroyRipple() { - if (!this.triggerEl) { - return; - } - - this.triggerEl.removeEventListener('mousedown', handleMouseDown); - this.triggerEl.removeEventListener('touchstart', handleTouchStart); - } - } -}; - -/***/ }), -/* 82 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiPopover_vue__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__UiProgressCircular_vue__ = __webpack_require__(8); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__UiSelectOption_vue__ = __webpack_require__(143); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_RespondsToExternalClick__ = __webpack_require__(24); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__helpers_util__ = __webpack_require__(6); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__helpers_element_scroll__ = __webpack_require__(21); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_fuzzysearch__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_fuzzysearch___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_fuzzysearch__); - - - - - - - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-select', - + mixins: [RespondsToExternalClick], props: { - name: String, - tabindex: [String, Number], - value: { - type: [String, Number, Object, Array], - required: true - }, - options: { - type: Array, - default: function _default() { - return []; - } - }, - placeholder: String, - icon: String, - iconPosition: { - type: String, - default: 'left' }, - label: String, - floatingLabel: { - type: Boolean, - default: false - }, - type: { - type: String, - default: 'basic' }, - multiple: { - type: Boolean, - default: false - }, - multipleDelimiter: { - type: String, - default: ', ' - }, - hasSearch: { - type: Boolean, - default: false - }, - searchPlaceholder: { - type: String, - default: 'Search' - }, - filter: Function, - disableFilter: { - type: Boolean, - default: false - }, - loading: { - type: Boolean, - default: false - }, - noResults: { - type: Boolean, - default: false - }, - keys: { - type: Object, - default: function _default() { - return { - class: 'class', - label: 'label', - value: 'value', - image: 'image' - }; - } - }, - invalid: { - type: Boolean, - default: false - }, - help: String, - error: String, - disabled: { - type: Boolean, - default: false + name: String, + tabindex: [String, Number], + modelValue: { + type: [String, Number, Object, Array], + required: true + }, + options: { + type: Array, + default() { + return []; + } + }, + placeholder: String, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + label: String, + floatingLabel: { + type: Boolean, + default: false + }, + type: { + type: String, + default: "basic" + }, + multiple: { + type: Boolean, + default: false + }, + multipleDelimiter: { + type: String, + default: ", " + }, + hasSearch: { + type: Boolean, + default: false + }, + searchPlaceholder: { + type: String, + default: "Search" + }, + filter: Function, + disableFilter: { + type: Boolean, + default: false + }, + loading: { + type: Boolean, + default: false + }, + noResults: { + type: Boolean, + default: false + }, + keys: { + type: Object, + default() { + return { + class: "class", + label: "label", + value: "value", + image: "image" + }; } + }, + invalid: { + type: Boolean, + default: false + }, + help: String, + error: String, + disabled: { + type: Boolean, + default: false + } }, - - data: function data() { - return { - query: '', - isActive: false, - isTouched: false, - selectedIndex: -1, - highlightedIndex: -1, - initialValue: JSON.stringify(this.value) - }; + emits: [ + "update:modelValue", + "query-change", + "change", + "select", + "touch", + "focus", + "blur", + "dropdown-open", + "dropdown-close" + ], + data() { + return { + query: "", + isActive: false, + isTouched: false, + selectedIndex: -1, + highlightedIndex: -1, + initialValue: JSON.stringify(this.modelValue) + }; }, - - computed: { - classes: function classes() { - return ['ui-select--type-' + this.type, 'ui-select--icon-position-' + this.iconPosition, { 'is-active': this.isActive }, { 'is-invalid': this.invalid }, { 'is-touched': this.isTouched }, { 'is-disabled': this.disabled }, { 'is-multiple': this.multiple }, { 'has-label': this.hasLabel }, { 'has-floating-label': this.hasFloatingLabel }]; - }, - labelClasses: function labelClasses() { - return { - 'is-inline': this.hasFloatingLabel && this.isLabelInline, - 'is-floating': this.hasFloatingLabel && !this.isLabelInline - }; - }, - hasLabel: function hasLabel() { - return Boolean(this.label) || Boolean(this.$slots.default); - }, - hasFloatingLabel: function hasFloatingLabel() { - return this.hasLabel && this.floatingLabel; - }, - isLabelInline: function isLabelInline() { - return this.value.length === 0 && !this.isActive; - }, - hasFeedback: function hasFeedback() { - return this.showError || this.showHelp; - }, - showError: function showError() { - return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); - }, - showHelp: function showHelp() { - return Boolean(this.help) || Boolean(this.$slots.help); - }, - filteredOptions: function filteredOptions() { - var _this = this; - - if (this.disableFilter) { - return this.options; - } - - var options = this.options.filter(function (option) { - if (_this.filter) { - return _this.filter(option, _this.query, _this.defaultFilter); - } - - return _this.defaultFilter(option, _this.query); - }); - - if (this.sort) { - options.sort(this.sort.bind(this)); - } - - return options; - }, - displayText: function displayText() { - var _this2 = this; - - if (this.multiple) { - if (this.value.length > 0) { - return this.value.map(function (value) { - return value[_this2.keys.label] || value; - }).join(this.multipleDelimiter); - } - - return ''; - } - - return this.value ? this.value[this.keys.label] || this.value : ''; - }, - hasDisplayText: function hasDisplayText() { - return Boolean(this.displayText.length); - }, - hasNoResults: function hasNoResults() { - if (this.loading || this.query.length === 0) { - return false; - } - - return this.disableFilter ? this.noResults : this.filteredOptions.length === 0; - }, - submittedValue: function submittedValue() { - var _this3 = this; - - if (!this.name || !this.value) { - return; - } - - if (Array.isArray(this.value)) { - return this.value.map(function (option) { - return option[_this3.keys.value] || option; - }).join(','); - } - - return this.value[this.keys.value] || this.value; + classes() { + return [ + `ui-select--type-${this.type}`, + `ui-select--icon-position-${this.iconPosition}`, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-touched": this.isTouched }, + { "is-disabled": this.disabled }, + { "is-multiple": this.multiple }, + { "has-label": this.hasLabel }, + { "has-floating-label": this.hasFloatingLabel } + ]; + }, + labelClasses() { + return { + "is-inline": this.hasFloatingLabel && this.isLabelInline, + "is-floating": this.hasFloatingLabel && !this.isLabelInline + }; + }, + hasLabel() { + return Boolean(this.label) || Boolean(this.$slots.default); + }, + hasFloatingLabel() { + return this.hasLabel && this.floatingLabel; + }, + isLabelInline() { + return this.modelValue.length === 0 && !this.isActive; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + }, + filteredOptions() { + if (this.disableFilter) { + return this.options; + } + const options = this.options.filter((option) => { + if (this.filter) { + return this.filter(option, this.query, this.defaultFilter); + } + return this.defaultFilter(option, this.query); + }); + if (this.sort) { + options.sort(this.sort.bind(this)); + } + return options; + }, + displayText() { + if (this.multiple) { + if (this.modelValue.length > 0) { + return this.modelValue.map((value) => value[this.keys.label] || value).join(this.multipleDelimiter); + } + return ""; + } + return this.modelValue ? this.modelValue[this.keys.label] || this.modelValue : ""; + }, + hasDisplayText() { + return Boolean(this.displayText.length); + }, + hasNoResults() { + if (this.loading || this.query.length === 0) { + return false; + } + return this.disableFilter ? this.noResults : this.filteredOptions.length === 0; + }, + submittedValue() { + if (!this.name || !this.modelValue) { + return; + } + if (Array.isArray(this.modelValue)) { + return this.modelValue.map((option) => option[this.keys.value] || option).join(","); } + return this.modelValue[this.keys.value] || this.modelValue; + }, + emptyValue() { + return this.multiple ? [] : ""; + } }, - watch: { - filteredOptions: function filteredOptions() { - this.highlightedIndex = 0; - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__helpers_element_scroll__["a" /* resetScroll */])(this.$refs.optionsList); - }, - query: function query() { - this.$emit('query-change', this.query); - }, - isActive: function isActive(value) { - if (value) { - this.addExternalClickListener(this.$el, this.onExternalClick); - } else { - this.removeExternalClickListener(); - } + filteredOptions() { + this.highlightedIndex = 0; + resetScroll(this.$refs.optionsList); + }, + query() { + this.$emit("query-change", this.query); + }, + isActive(value) { + if (value) { + this.addExternalClickListener(this.$el, this.onExternalClick); + } else { + this.removeExternalClickListener(); } + } }, - - created: function created() { - if (!this.value || this.value === '') { - this.setValue(null); - } + created() { + const invalidMultipleValue = this.multiple && !Array.isArray(this.modelValue); + const invalidEmptyValue = !this.modelValue && this.modelValue !== ""; + if (invalidMultipleValue || invalidEmptyValue) { + this.$emit("update:modelValue", this.emptyValue); + this.initialValue = JSON.stringify(this.emptyValue); + } }, - - methods: { - setValue: function setValue(value) { - value = value ? value : this.multiple ? [] : ''; - - this.$emit('input', value); - this.$emit('change', value); - }, - highlightOption: function highlightOption(index) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { autoScroll: true }; - - if (this.highlightedIndex === index || this.$refs.options.length === 0) { - return; - } - - var firstIndex = 0; - var lastIndex = this.$refs.options.length - 1; - - if (index < firstIndex) { - index = lastIndex; - } else if (index > lastIndex) { - index = firstIndex; - } - - this.highlightedIndex = index; - - if (options.autoScroll) { - this.scrollOptionIntoView(this.$refs.options[index].$el); - } - }, - selectHighlighted: function selectHighlighted(index, e) { - if (this.$refs.options.length > 0) { - e.preventDefault(); - this.selectOption(this.$refs.options[index].option, index); - } - }, - selectOption: function selectOption(option, index) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { autoClose: true }; - - var shouldSelect = this.multiple && !this.isOptionSelected(option); - - if (this.multiple) { - this.updateOption(option, { select: shouldSelect }); - } else { - this.setValue(option); - this.selectedIndex = index; - } - - this.$emit('select', option, { - selected: this.multiple ? shouldSelect : true - }); - - this.highlightedIndex = index; - - if (!this.multiple) { - this.clearQuery(); - } - - if (!this.multiple && options.autoClose) { - this.closeDropdown(); - } - }, - isOptionSelected: function isOptionSelected(option) { - if (this.multiple) { - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__helpers_util__["c" /* looseIndexOf */])(this.value, option) > -1; - } - - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__helpers_util__["b" /* looseEqual */])(this.value, option); - }, - updateOption: function updateOption(option) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { select: true }; - - var value = []; - var updated = false; - var i = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__helpers_util__["c" /* looseIndexOf */])(this.value, option); - - if (options.select && i < 0) { - value = this.value.concat(option); - updated = true; - } - - if (!options.select && i > -1) { - value = this.value.slice(0, i).concat(this.value.slice(i + 1)); - updated = true; - } - - if (updated) { - this.setValue(value); - } - }, - defaultFilter: function defaultFilter(option, query) { - var text = option[this.keys.label] || option; - - if (typeof text === 'string') { - text = text.toLowerCase(); - } - - return __WEBPACK_IMPORTED_MODULE_7_fuzzysearch___default()(query.toLowerCase(), text); - }, - clearSelection: function clearSelection() { - this.setValue(null); - }, - clearQuery: function clearQuery() { - this.query = ''; - }, - focus: function focus() { - this.$refs.label.focus(); - }, - toggleDropdown: function toggleDropdown() { - this.$refs.dropdown.toggle(); - }, - openDropdown: function openDropdown() { - if (this.disabled) { - return; - } - - this.$refs.dropdown.open(); - }, - closeDropdown: function closeDropdown() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { blurAfterClose: false }; - - this.$refs.dropdown.close(); - - if (!this.isTouched) { - this.isTouched = true; - this.$emit('touch'); - } - - if (options.blurAfterClose) { - this.isActive = false; - } else { - this.$refs.label.focus(); - } - }, - onFocus: function onFocus(e) { - if (this.isActive) { - return; - } - - this.isActive = true; - this.$emit('focus', e); - }, - onBlur: function onBlur(e) { - this.isActive = false; - this.$emit('blur', e); - - if (this.$refs.dropdown.isOpen()) { - this.closeDropdown({ blurAfterClose: true }); - } - }, - onOpen: function onOpen() { - var _this4 = this; - - this.isActive = true; - - this.$refs.dropdown.$el.style.width = this.$refs.label.getBoundingClientRect().width + 'px'; - - this.$nextTick(function () { - _this4.scrollOptionIntoView(_this4.$refs.optionsList.querySelector('.is-selected')); - }); - - this.$emit('dropdown-open'); - }, - onReveal: function onReveal() { - this.$refs[this.hasSearch ? 'searchInput' : 'dropdownContent'].focus(); - }, - onClose: function onClose() { - this.highlightedIndex = this.multiple ? -1 : this.selectedIndex; - this.$emit('dropdown-close'); - }, - onExternalClick: function onExternalClick() { - if (this.$refs.dropdown.isOpen()) { - this.closeDropdown({ blurAfterClose: true }); - } else if (this.isActive) { - this.isActive = false; - } - }, - scrollOptionIntoView: function scrollOptionIntoView(optionEl) { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__helpers_element_scroll__["b" /* scrollIntoView */])(optionEl, { - container: this.$refs.optionsList, - marginTop: 180 - }); - }, - reset: function reset() { - this.setValue(JSON.parse(this.initialValue)); - this.clearQuery(); - this.resetTouched(); - - this.selectedIndex = -1; - this.highlightedIndex = -1; - }, - resetTouched: function resetTouched() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { touched: false }; - - this.isTouched = options.touched; + setValue(value) { + this.$emit("update:modelValue", value); + this.$emit("change", value); + }, + highlightOption(index, options = { autoScroll: true }) { + if (this.highlightedIndex === index || this.$refs.options.length === 0) { + return; } - }, - - components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiPopover: __WEBPACK_IMPORTED_MODULE_1__UiPopover_vue__["a" /* default */], - UiProgressCircular: __WEBPACK_IMPORTED_MODULE_2__UiProgressCircular_vue__["a" /* default */], - UiSelectOption: __WEBPACK_IMPORTED_MODULE_3__UiSelectOption_vue__["a" /* default */] - }, - - mixins: [__WEBPACK_IMPORTED_MODULE_4__mixins_RespondsToExternalClick__["a" /* default */]] -}; - -/***/ }), -/* 83 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-select-option', - - props: { - option: { - type: [String, Number, Object], - required: true - }, - type: { - type: String, - default: 'basic' }, - multiple: { - type: Boolean, - default: false - }, - highlighted: { - type: Boolean, - default: false - }, - selected: { - type: Boolean, - default: false - }, - keys: { - type: Object, - default: function _default() { - return { - class: 'class', - label: 'label', - image: 'image' - }; - } + const firstIndex = 0; + const lastIndex = this.$refs.options.length - 1; + if (index < firstIndex) { + index = lastIndex; + } else if (index > lastIndex) { + index = firstIndex; + } + this.highlightedIndex = index; + if (options.autoScroll) { + this.scrollOptionIntoView(this.$refs.options[index].$el); + } + }, + selectHighlighted(index, e) { + if (this.$refs.options.length > 0) { + e.preventDefault(); + this.selectOption(this.$refs.options[index].option, index); + } + }, + selectOption(option, index, options = { autoClose: true }) { + const shouldSelect = this.multiple && !this.isOptionSelected(option); + if (this.multiple) { + this.updateOption(option, { select: shouldSelect }); + } else { + this.setValue(option); + this.selectedIndex = index; + } + this.$emit("select", option, { + selected: this.multiple ? shouldSelect : true + }); + this.highlightedIndex = index; + if (!this.multiple) { + this.clearQuery(); + } + if (!this.multiple && options.autoClose) { + this.closeDropdown(); + } + }, + isOptionSelected(option) { + if (this.multiple) { + return looseIndexOf(this.modelValue, option) > -1; + } + return looseEqual(this.modelValue, option); + }, + updateOption(option, options = { select: true }) { + let value = []; + let updated = false; + const i2 = looseIndexOf(this.modelValue, option); + if (options.select && i2 < 0) { + value = this.modelValue.concat(option); + updated = true; + } + if (!options.select && i2 > -1) { + value = this.modelValue.slice(0, i2).concat(this.modelValue.slice(i2 + 1)); + updated = true; + } + if (updated) { + this.setValue(value); + } + }, + defaultFilter(option, query) { + let text = option[this.keys.label] || option; + if (typeof text === "string") { + text = text.toLowerCase(); + } + return fuzzysearch_1(query.toLowerCase(), text); + }, + clearSelection() { + this.setValue(this.emptyValue); + }, + clearQuery() { + this.query = ""; + }, + focus() { + this.$refs.label.focus(); + }, + toggleDropdown() { + this.$refs.dropdown.toggle(); + }, + openDropdown() { + if (this.disabled) { + return; + } + this.$refs.dropdown.open(); + }, + closeDropdown(options = { blurAfterClose: false }) { + this.$refs.dropdown.close(); + if (!this.isTouched) { + this.isTouched = true; + this.$emit("touch"); + } + if (options.blurAfterClose) { + this.isActive = false; + } else { + this.$refs.label.focus(); } - }, - - computed: { - classes: function classes() { - return ['ui-select-option--type-' + this.type, this.option[this.keys.class], { 'is-highlighted': this.highlighted }, { 'is-selected': this.selected }]; - }, - imageStyle: function imageStyle() { - return { 'background-image': 'url(' + this.option[this.keys.image] + ')' }; + }, + onFocus(e) { + if (this.isActive) { + return; } - }, - + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + if (this.$refs.dropdown.isOpen()) { + this.closeDropdown({ blurAfterClose: true }); + } + }, + onOpen() { + this.isActive = true; + this.$refs.dropdown.$el.style.width = this.$refs.label.getBoundingClientRect().width + "px"; + this.$nextTick(() => { + this.scrollOptionIntoView(this.$refs.optionsList.querySelector(".is-selected")); + }); + this.$emit("dropdown-open"); + }, + onReveal() { + this.$refs[this.hasSearch ? "searchInput" : "dropdownContent"].focus(); + }, + onClose() { + this.highlightedIndex = this.multiple ? -1 : this.selectedIndex; + this.$emit("dropdown-close"); + }, + onExternalClick() { + if (this.$refs.dropdown.isOpen()) { + this.closeDropdown({ blurAfterClose: true }); + } else if (this.isActive) { + this.isActive = false; + } + }, + scrollOptionIntoView(optionEl) { + scrollIntoView(optionEl, { + container: this.$refs.optionsList, + marginTop: 180 + }); + }, + reset() { + this.setValue(JSON.parse(this.initialValue)); + this.clearQuery(); + this.resetTouched(); + this.selectedIndex = -1; + this.highlightedIndex = -1; + }, + resetTouched(options = { touched: false }) { + this.isTouched = options.touched; + } + } + }; + const _hoisted_1$9 = ["name", "value"]; + const _hoisted_2$7 = { + key: 1, + class: "ui-select__icon-wrapper" + }; + const _hoisted_3$7 = { class: "ui-select__content" }; + const _hoisted_4$4 = ["tabindex"]; + const _hoisted_5$4 = { class: "ui-select__display" }; + const _hoisted_6$3 = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M6.984 9.984h10.03L12 15z" }) + ], -1); + const _hoisted_7$2 = ["placeholder"]; + const _hoisted_8$1 = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + viewBox: "0 0 24 24" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M9.516 14.016c2.484 0 4.5-2.016 4.5-4.5s-2.016-4.5-4.5-4.5-4.5 2.016-4.5 4.5 2.016 4.5 4.5 4.5zm6 0l4.97 4.97-1.5 1.5-4.97-4.97v-.797l-.28-.282c-1.126.984-2.626 1.547-4.22 1.547-3.61 0-6.516-2.86-6.516-6.47S5.906 3 9.516 3s6.47 2.906 6.47 6.516c0 1.594-.564 3.094-1.548 4.22l.28.28h.798z" }) + ], -1); + const _hoisted_9$1 = { + ref: "optionsList", + class: "ui-select__options" + }; + const _hoisted_10 = { class: "ui-select__no-results" }; + const _hoisted_11 = /* @__PURE__ */ vue.createTextVNode("No results found"); + const _hoisted_12 = { + key: 0, + class: "ui-select__feedback" + }; + const _hoisted_13 = { + key: 0, + class: "ui-select__feedback-text" + }; + const _hoisted_14 = { + key: 1, + class: "ui-select__feedback-text" + }; + function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_progress_circular = vue.resolveComponent("ui-progress-circular"); + const _component_ui_select_option = vue.resolveComponent("ui-select-option"); + const _component_ui_popover = vue.resolveComponent("ui-popover"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-select", $options.classes]) + }, [ + $props.name ? (vue.openBlock(), vue.createElementBlock("input", { + key: 0, + class: "ui-select__hidden-input", + type: "hidden", + name: $props.name, + value: $options.submittedValue + }, null, 8, _hoisted_1$9)) : vue.createCommentVNode("v-if", true), + $props.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$7, [ + vue.renderSlot(_ctx.$slots, "icon", {}, () => [ + vue.createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_3$7, [ + vue.createElementVNode("div", { + ref: "label", + class: "ui-select__label", + tabindex: $props.disabled ? null : $props.tabindex || "0", + onFocus: _cache[8] || (_cache[8] = (...args) => $options.onFocus && $options.onFocus(...args)), + onKeydown: [ + _cache[9] || (_cache[9] = vue.withKeys(vue.withModifiers((...args) => $options.openDropdown && $options.openDropdown(...args), ["prevent"]), ["enter"])), + _cache[10] || (_cache[10] = vue.withKeys(vue.withModifiers((...args) => $options.openDropdown && $options.openDropdown(...args), ["prevent"]), ["space"])), + _cache[11] || (_cache[11] = vue.withKeys((...args) => $options.onBlur && $options.onBlur(...args), ["tab"])) + ] + }, [ + $props.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", { + key: 0, + class: vue.normalizeClass(["ui-select__label-text", $options.labelClasses]) + }, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.label), 1) + ]) + ], 2)) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_5$4, [ + vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-select__display-value", { "is-placeholder": !$options.hasDisplayText }]) + }, vue.toDisplayString($options.hasDisplayText ? $options.displayText : $options.hasFloatingLabel && $options.isLabelInline ? null : $props.placeholder), 3), + vue.createVNode(_component_ui_icon, { class: "ui-select__dropdown-button" }, { + default: vue.withCtx(() => [ + _hoisted_6$3 + ]), + _: 1 + }) + ]), + vue.createVNode(_component_ui_popover, { + ref: "dropdown", + class: "ui-select__dropdown", + "close-on-scroll": false, + "constrain-to-scroll-parent": false, + "close-on-external-click": false, + disabled: $props.disabled, + onClose: $options.onClose, + onOpen: $options.onOpen, + onReveal: $options.onReveal + }, { + default: vue.withCtx(() => [ + vue.createElementVNode("div", { + ref: "dropdownContent", + class: "ui-select__dropdown-content", + tabindex: "-1", + onKeydown: [ + _cache[3] || (_cache[3] = vue.withKeys(vue.withModifiers(($event) => $options.highlightOption($data.highlightedIndex + 1), ["prevent"]), ["down"])), + _cache[4] || (_cache[4] = vue.withKeys(vue.withModifiers(($event) => $options.selectHighlighted($data.highlightedIndex, $event), ["prevent", "stop"]), ["enter"])), + _cache[5] || (_cache[5] = vue.withKeys(vue.withModifiers(($event) => $options.closeDropdown(), ["prevent"]), ["esc"])), + _cache[6] || (_cache[6] = vue.withKeys((...args) => $options.onBlur && $options.onBlur(...args), ["tab"])), + _cache[7] || (_cache[7] = vue.withKeys(vue.withModifiers(($event) => $options.highlightOption($data.highlightedIndex - 1), ["prevent"]), ["up"])) + ] + }, [ + $props.hasSearch ? (vue.openBlock(), vue.createElementBlock("div", { + key: 0, + class: "ui-select__search", + onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => { + }, ["stop"])), + onKeydown: _cache[2] || (_cache[2] = vue.withKeys(vue.withModifiers(() => { + }, ["stop"]), ["space"])) + }, [ + vue.withDirectives(vue.createElementVNode("input", { + ref: "searchInput", + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.query = $event), + autocomplete: "off", + class: "ui-select__search-input", + type: "text", + placeholder: $props.searchPlaceholder + }, null, 8, _hoisted_7$2), [ + [vue.vModelText, $data.query] + ]), + vue.createVNode(_component_ui_icon, { class: "ui-select__search-icon" }, { + default: vue.withCtx(() => [ + _hoisted_8$1 + ]), + _: 1 + }), + $props.loading ? (vue.openBlock(), vue.createBlock(_component_ui_progress_circular, { + key: 0, + class: "ui-select__search-progress", + size: 20, + stroke: 4 + })) : vue.createCommentVNode("v-if", true) + ], 32)) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("ul", _hoisted_9$1, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($options.filteredOptions, (option, index) => { + return vue.openBlock(), vue.createBlock(_component_ui_select_option, { + ref_for: true, + ref: "options", + key: index, + highlighted: $data.highlightedIndex === index, + keys: $props.keys, + multiple: $props.multiple, + option, + selected: $options.isOptionSelected(option), + type: $props.type, + onClick: vue.withModifiers(($event) => $options.selectOption(option, index), ["stop"]), + onMouseover: vue.withModifiers(($event) => $options.highlightOption(index, { autoScroll: false }), ["stop"]) + }, { + default: vue.withCtx(() => [ + vue.renderSlot(_ctx.$slots, "option", { + highlighted: $data.highlightedIndex === index, + index, + option, + selected: $options.isOptionSelected(option) + }) + ]), + _: 2 + }, 1032, ["highlighted", "keys", "multiple", "option", "selected", "type", "onClick", "onMouseover"]); + }), 128)), + vue.withDirectives(vue.createElementVNode("div", _hoisted_10, [ + vue.renderSlot(_ctx.$slots, "no-results", {}, () => [ + _hoisted_11 + ]) + ], 512), [ + [vue.vShow, $options.hasNoResults] + ]) + ], 512) + ], 544) + ]), + _: 3 + }, 8, ["disabled", "onClose", "onOpen", "onReveal"]) + ], 40, _hoisted_4$4), + $options.hasFeedback ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_12, [ + $options.showError ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [ + vue.renderSlot(_ctx.$slots, "error", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14, [ + vue.renderSlot(_ctx.$slots, "help", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.help), 1) + ]) + ])) : vue.createCommentVNode("v-if", true) + ])) : vue.createCommentVNode("v-if", true) + ]) + ], 2); + } + const UiSelect = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$9], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSelect.vue"]]); + const UiSlider_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$8 = { + name: "UiSlider", components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */] - } -}; - -/***/ }), -/* 84 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers_classlist__ = __webpack_require__(5); - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-slider', - + UiIcon + }, props: { - name: String, - tabindex: [String, Number], - icon: String, - value: { - type: Number, - required: true - }, - min: { - type: Number, - default: 0 - }, - max: { - type: Number, - default: 100 - }, - step: { - type: Number, - default: 10 - }, - snapToSteps: { - type: Boolean, - default: false - }, - showMarker: { - type: Boolean, - default: false - }, - markerValue: [String, Number], - disabled: { - type: Boolean, - default: false - } + name: String, + tabindex: [String, Number], + icon: String, + modelValue: { + type: Number, + required: true + }, + min: { + type: Number, + default: 0 + }, + max: { + type: Number, + default: 100 + }, + step: { + type: Number, + default: 10 + }, + snapToSteps: { + type: Boolean, + default: false + }, + showMarker: { + type: Boolean, + default: false + }, + markerValue: [String, Number], + disabled: { + type: Boolean, + default: false + } }, - - data: function data() { - return { - initialValue: this.value, - isActive: false, - isDragging: false, - localValue: this.value - }; + emits: ["update:modelValue", "focus", "blur", "change", "dragstart", "dragend"], + data() { + return { + initialValue: this.modelValue, + isActive: false, + isDragging: false, + localValue: this.modelValue + }; }, - - computed: { - classes: function classes() { - return [{ 'is-dragging': this.isDragging }, { 'is-disabled': this.disabled }, { 'is-active': this.isActive }, { 'has-icon': this.hasIcon }, { 'has-marker': this.showMarker }]; - }, - hasIcon: function hasIcon() { - return Boolean(this.$slots.icon) || Boolean(this.icon); - }, - fillStyle: function fillStyle() { - return { transform: 'scaleX(' + this.relativeValue(this.localValue) + ')' }; - }, - thumbStyle: function thumbStyle() { - return { - left: this.relativeValue(this.localValue) * 100 + '%' - }; - }, - markerText: function markerText() { - return this.markerValue === undefined ? this.value : this.markerValue; - }, - snapPoints: function snapPoints() { - var points = []; - var point = this.step * Math.ceil(this.moderatedMin / this.step); - - while (point <= this.moderatedMax) { - points.push(point); - point += this.step; - } - - return points; - }, - moderatedMin: function moderatedMin() { - return this.max > this.min ? this.min : 0; - }, - moderatedMax: function moderatedMax() { - return this.max > this.min ? this.max : 100; - } + classes() { + return [ + { "is-dragging": this.isDragging }, + { "is-disabled": this.disabled }, + { "is-active": this.isActive }, + { "has-icon": this.hasIcon }, + { "has-marker": this.showMarker } + ]; + }, + hasIcon() { + return Boolean(this.$slots.icon) || Boolean(this.icon); + }, + fillStyle() { + return { transform: "scaleX(" + this.relativeValue(this.localValue) + ")" }; + }, + thumbStyle() { + return { + left: this.relativeValue(this.localValue) * 100 + "%" + }; + }, + markerText() { + return this.markerValue === void 0 ? this.modelValue : this.markerValue; + }, + snapPoints() { + const points = []; + let point = this.step * Math.ceil(this.moderatedMin / this.step); + while (point <= this.moderatedMax) { + points.push(point); + point += this.step; + } + return points; + }, + moderatedMin() { + return this.max > this.min ? this.min : 0; + }, + moderatedMax() { + return this.max > this.min ? this.max : 100; + } }, - watch: { - value: function value() { - this.setValue(this.value); - }, - isDragging: function isDragging() { - var operation = this.isDragging ? 'add' : 'remove'; - __WEBPACK_IMPORTED_MODULE_1__helpers_classlist__["a" /* default */][operation](document.body, 'ui-slider--is-dragging'); - } + modelValue() { + this.setValue(this.modelValue); + }, + isDragging() { + const operation = this.isDragging ? "add" : "remove"; + classlist[operation](document.body, "ui-slider--is-dragging"); + } }, - - mounted: function mounted() { - this.initializeSlider(); + mounted() { + this.initializeSlider(); }, - beforeDestroy: function beforeDestroy() { - this.teardownSlider(); + beforeUnmount() { + this.teardownSlider(); }, - - methods: { - focus: function focus() { - this.$el.focus(); - }, - reset: function reset() { - this.setValue(this.initialValue); - }, - onFocus: function onFocus() { - this.isActive = true; - this.$emit('focus'); - }, - onBlur: function onBlur() { - this.isActive = false; - this.$emit('blur'); - }, - onExternalClick: function onExternalClick(e) { - if (!this.$el.contains(e.target)) { - this.onBlur(); - } - }, - setValueWithSnap: function setValueWithSnap(value) { - value = this.moderateValue(value); - - if (this.snapToSteps) { - value = this.getNearestSnapPoint(value); - } - - this.setValue(value); - }, - setValue: function setValue(value) { - value = this.moderateValue(value); - - if (value === this.localValue) { - return; - } - - this.localValue = value; - this.$emit('input', value); - this.$emit('change', value); - }, - incrementValue: function incrementValue() { - this.setValueWithSnap(this.localValue + this.step); - }, - decrementValue: function decrementValue() { - this.setValueWithSnap(this.localValue - this.step); - }, - getTrackOffset: function getTrackOffset() { - var el = this.$refs.track; - var offset = el.offsetLeft; - - while (el.offsetParent) { - el = el.offsetParent; - offset += el.offsetLeft; - } - - return offset; - }, - getPointStyle: function getPointStyle(point) { - return { - left: point + '%' - }; - }, - initializeSlider: function initializeSlider() { - document.addEventListener('touchend', this.onDragStop); - document.addEventListener('mouseup', this.onDragStop); - document.addEventListener('click', this.onExternalClick); - this.initializeDrag(); - }, - teardownSlider: function teardownSlider() { - document.removeEventListener('touchend', this.onDragStop); - document.removeEventListener('mouseup', this.onDragStop); - document.removeEventListener('click', this.onExternalClick); - }, - initializeDrag: function initializeDrag() { - var value = this.moderateValue(this.localValue ? this.localValue : 0); - this.setValue(value); - }, - onDragStart: function onDragStart(e) { - if (this.disabled) { - return; - } - - if (!this.isActive) { - this.onFocus(); - } - - this.isDragging = true; - this.dragUpdate(e); - - document.addEventListener('touchmove', this.onDragMove); - document.addEventListener('mousemove', this.onDragMove); - - this.$emit('dragstart', this.localValue, e); - }, - onDragMove: function onDragMove(e) { - this.dragUpdate(e); - }, - dragUpdate: function dragUpdate(e) { - var position = e.touches ? e.touches[0].pageX : e.pageX; - var trackLength = this.$refs.track.offsetWidth; - var relativeValue = (position - this.getTrackOffset()) / trackLength; - var value = this.moderateValue(this.moderatedMin + relativeValue * (this.moderatedMax - this.moderatedMin)); - - if (this.isDragging) { - this.setValue(Math.round(value)); - } - }, - onDragStop: function onDragStop(e) { - if (this.isDragging) { - this.isDragging = false; - - if (this.snapToSteps && this.value % this.step !== 0) { - this.setValueWithSnap(this.value); - } - - document.removeEventListener('touchmove', this.onDragMove); - document.removeEventListener('mousemove', this.onDragMove); - - this.$emit('dragend', this.localValue, e); - } - }, - getNearestSnapPoint: function getNearestSnapPoint(value) { - var previousSnapPoint = Math.floor(value / this.step) * this.step; - var nextSnapPoint = previousSnapPoint + this.step; - var midpoint = (previousSnapPoint + nextSnapPoint) / 2; - - if (previousSnapPoint < this.moderatedMin) { - if (nextSnapPoint > this.moderatedMax) { - return value; - } - return nextSnapPoint; - } - if (value >= midpoint && nextSnapPoint <= this.moderatedMax) { - return nextSnapPoint; - } - return previousSnapPoint; - }, - relativeValue: function relativeValue(value) { - return (value - this.moderatedMin) / (this.moderatedMax - this.moderatedMin); - }, - moderateValue: function moderateValue(value) { - if (value < this.moderatedMin) { - return this.moderatedMin; - } - - if (value > this.moderatedMax) { - return this.moderatedMax; - } - + focus() { + this.$el.focus(); + }, + reset() { + this.setValue(this.initialValue); + }, + onFocus() { + this.isActive = true; + this.$emit("focus"); + }, + onBlur() { + this.isActive = false; + this.$emit("blur"); + }, + onExternalClick(e) { + if (!this.$el.contains(e.target)) { + this.onBlur(); + } + }, + setValueWithSnap(value) { + value = this.moderateValue(value); + if (this.snapToSteps) { + value = this.getNearestSnapPoint(value); + } + this.setValue(value); + }, + setValue(value) { + value = this.moderateValue(value); + if (value === this.localValue) { + return; + } + this.localValue = value; + this.$emit("update:modelValue", value); + this.$emit("change", value); + }, + incrementValue() { + this.setValueWithSnap(this.localValue + this.step); + }, + decrementValue() { + this.setValueWithSnap(this.localValue - this.step); + }, + getTrackOffset() { + let el = this.$refs.track; + let offset2 = el.offsetLeft; + while (el.offsetParent) { + el = el.offsetParent; + offset2 += el.offsetLeft; + } + return offset2; + }, + getPointStyle(point) { + return { + left: point + "%" + }; + }, + initializeSlider() { + document.addEventListener("touchend", this.onDragStop); + document.addEventListener("mouseup", this.onDragStop); + document.addEventListener("click", this.onExternalClick); + this.initializeDrag(); + }, + teardownSlider() { + document.removeEventListener("touchend", this.onDragStop); + document.removeEventListener("mouseup", this.onDragStop); + document.removeEventListener("click", this.onExternalClick); + }, + initializeDrag() { + const value = this.moderateValue(this.localValue ? this.localValue : 0); + this.setValue(value); + }, + onDragStart(e) { + if (this.disabled) { + return; + } + if (!this.isActive) { + this.onFocus(); + } + this.isDragging = true; + this.dragUpdate(e); + document.addEventListener("touchmove", this.onDragMove, { passive: true }); + document.addEventListener("mousemove", this.onDragMove); + this.$emit("dragstart", this.localValue, e); + }, + onDragMove(e) { + this.dragUpdate(e); + }, + dragUpdate(e) { + const position = e.touches ? e.touches[0].pageX : e.pageX; + const trackLength = this.$refs.track.offsetWidth; + const relativeValue = (position - this.getTrackOffset()) / trackLength; + const value = this.moderateValue( + this.moderatedMin + relativeValue * (this.moderatedMax - this.moderatedMin) + ); + if (this.isDragging) { + this.setValue(Math.round(value)); + } + }, + onDragStop(e) { + if (this.isDragging) { + this.isDragging = false; + if (this.snapToSteps && this.modelValue % this.step !== 0) { + this.setValueWithSnap(this.modelValue); + } + document.removeEventListener("touchmove", this.onDragMove); + document.removeEventListener("mousemove", this.onDragMove); + this.$emit("dragend", this.localValue, e); + } + }, + getNearestSnapPoint(value) { + const previousSnapPoint = Math.floor(value / this.step) * this.step; + const nextSnapPoint = previousSnapPoint + this.step; + const midpoint = (previousSnapPoint + nextSnapPoint) / 2; + if (previousSnapPoint < this.moderatedMin) { + if (nextSnapPoint > this.moderatedMax) { return value; + } + return nextSnapPoint; } - }, - + if (value >= midpoint && nextSnapPoint <= this.moderatedMax) { + return nextSnapPoint; + } + return previousSnapPoint; + }, + relativeValue(value) { + return (value - this.moderatedMin) / (this.moderatedMax - this.moderatedMin); + }, + moderateValue(value) { + if (value < this.moderatedMin) { + return this.moderatedMin; + } + if (value > this.moderatedMax) { + return this.moderatedMax; + } + return value; + } + } + }; + const _hoisted_1$8 = ["aria-valuemax", "aria-valuemin", "aria-valuenow", "tabindex"]; + const _hoisted_2$6 = ["name", "value"]; + const _hoisted_3$6 = { + key: 1, + class: "ui-slider__icon" + }; + const _hoisted_4$3 = { class: "ui-slider__track-background" }; + const _hoisted_5$3 = { + key: 0, + class: "ui-slider__marker" + }; + const _hoisted_6$2 = /* @__PURE__ */ vue.createElementVNode("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 24 24", + width: "36", + height: "36" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { d: "M11 .5c-1.7.2-3.4.9-4.7 2-1.1.9-2 2-2.5 3.2-1.2 2.4-1.2 5.1-.1 7.7 1.1 2.6 2.8 5 5.3 7.5 1.2 1.2 2.8 2.7 3 2.7 0 0 .3-.2.6-.5 3.2-2.7 5.6-5.6 7.1-8.5.8-1.5 1.1-2.6 1.3-3.8.2-1.4 0-2.9-.5-4.3-1.2-3.2-4.1-5.4-7.5-5.8-.5-.2-1.5-.2-2-.2z" }) + ], -1); + const _hoisted_7$1 = { class: "ui-slider__marker-text" }; + function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-slider", $options.classes]), + role: "slider", + "aria-valuemax": $options.moderatedMax, + "aria-valuemin": $options.moderatedMin, + "aria-valuenow": $data.localValue, + tabindex: $props.disabled ? null : $props.tabindex || "0", + onBlur: _cache[2] || (_cache[2] = (...args) => $options.onBlur && $options.onBlur(...args)), + onFocus: _cache[3] || (_cache[3] = (...args) => $options.onFocus && $options.onFocus(...args)), + onKeydown: [ + _cache[4] || (_cache[4] = vue.withKeys(vue.withModifiers((...args) => $options.decrementValue && $options.decrementValue(...args), ["prevent"]), ["down"])), + _cache[5] || (_cache[5] = vue.withKeys(vue.withModifiers((...args) => $options.decrementValue && $options.decrementValue(...args), ["prevent"]), ["left"])), + _cache[6] || (_cache[6] = vue.withKeys(vue.withModifiers((...args) => $options.incrementValue && $options.incrementValue(...args), ["prevent"]), ["right"])), + _cache[7] || (_cache[7] = vue.withKeys(vue.withModifiers((...args) => $options.incrementValue && $options.incrementValue(...args), ["prevent"]), ["up"])) + ] + }, [ + $props.name ? (vue.openBlock(), vue.createElementBlock("input", { + key: 0, + class: "ui-slider__hidden-input", + type: "hidden", + name: $props.name, + value: $props.modelValue + }, null, 8, _hoisted_2$6)) : vue.createCommentVNode("v-if", true), + $options.hasIcon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$6, [ + vue.renderSlot(_ctx.$slots, "icon", {}, () => [ + vue.createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", { + ref: "track", + class: "ui-slider__track", + onMousedown: _cache[0] || (_cache[0] = (...args) => $options.onDragStart && $options.onDragStart(...args)), + onTouchstartPassive: _cache[1] || (_cache[1] = (...args) => $options.onDragStart && $options.onDragStart(...args)) + }, [ + vue.createElementVNode("div", _hoisted_4$3, [ + $props.snapToSteps ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList($options.snapPoints, (point) => { + return vue.openBlock(), vue.createElementBlock("span", { + key: point, + class: "ui-slider__snap-point", + style: vue.normalizeStyle({ left: 100 * $options.relativeValue(point) + "%" }) + }, null, 4); + }), 128)) : vue.createCommentVNode("v-if", true) + ]), + vue.createElementVNode("div", { + class: "ui-slider__track-fill", + style: vue.normalizeStyle($options.fillStyle) + }, null, 4), + vue.createElementVNode("div", { + ref: "thumb", + class: "ui-slider__thumb", + style: vue.normalizeStyle($options.thumbStyle) + }, [ + $props.showMarker ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$3, [ + _hoisted_6$2, + vue.createElementVNode("span", _hoisted_7$1, vue.toDisplayString($options.markerText), 1) + ])) : vue.createCommentVNode("v-if", true) + ], 4) + ], 544) + ], 42, _hoisted_1$8); + } + const UiSlider = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$8], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSlider.vue"]]); + const UiSnackbar_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$7 = { + name: "UiSnackbar", components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */] - } -}; - -/***/ }), -/* 85 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiButton_vue__ = __webpack_require__(7); - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-snackbar', - + UiButton + }, props: { - message: String, - action: String, - actionColor: { - type: String, - default: 'accent' }, - transition: { - type: String, - default: 'slide' } - }, - + message: String, + action: String, + actionColor: { + type: String, + default: "accent" + }, + transition: { + type: String, + default: "slide" + } + }, + emits: ["action-click", "show", "hide"], computed: { - transitionName: function transitionName() { - return 'ui-snackbar--transition-' + this.transition; - } + transitionName() { + return "ui-snackbar--transition-" + this.transition; + } }, - methods: { - onClick: function onClick() { - this.$emit('click'); - }, - onActionClick: function onActionClick() { - this.$emit('action-click'); - }, - onEnter: function onEnter() { - this.$emit('show'); - }, - onLeave: function onLeave() { - this.$emit('hide'); - } - }, - + onActionClick() { + this.$emit("action-click"); + }, + onEnter() { + this.$emit("show"); + }, + onLeave() { + this.$emit("hide"); + } + } + }; + const _hoisted_1$7 = { class: "ui-snackbar" }; + const _hoisted_2$5 = { class: "ui-snackbar__message" }; + const _hoisted_3$5 = { class: "ui-snackbar__action" }; + function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_button = vue.resolveComponent("ui-button"); + return vue.openBlock(), vue.createBlock(vue.Transition, { + name: $options.transitionName, + appear: "", + onAfterEnter: $options.onEnter, + onAfterLeave: $options.onLeave + }, { + default: vue.withCtx(() => [ + vue.createElementVNode("div", _hoisted_1$7, [ + vue.createElementVNode("div", _hoisted_2$5, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.message), 1) + ]) + ]), + vue.createElementVNode("div", _hoisted_3$5, [ + $props.action ? (vue.openBlock(), vue.createBlock(_component_ui_button, { + key: 0, + class: "ui-snackbar__action-button", + type: "secondary", + color: $props.actionColor, + onClick: vue.withModifiers($options.onActionClick, ["stop"]) + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString($props.action), 1) + ]), + _: 1 + }, 8, ["color", "onClick"])) : vue.createCommentVNode("v-if", true) + ]) + ]) + ]), + _: 3 + }, 8, ["name", "onAfterEnter", "onAfterLeave"]); + } + const UiSnackbar = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSnackbar.vue"]]); + const UiSnackbarContainer_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$6 = { + name: "UiSnackbarContainer", components: { - UiButton: __WEBPACK_IMPORTED_MODULE_0__UiButton_vue__["a" /* default */] - } -}; - -/***/ }), -/* 86 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiSnackbar_vue__ = __webpack_require__(19); - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-snackbar-container', - + UiSnackbar + }, props: { - queueSnackbars: { - type: Boolean, - default: false - }, - duration: { - type: Number, - default: 5000 - }, - allowHtml: { - type: Boolean, - default: false - }, - position: { - type: String, - default: 'left' }, - transition: { - type: String, - default: 'slide' } - }, - - data: function data() { - return { - queue: [], - snackbarTimeout: null - }; + queueSnackbars: { + type: Boolean, + default: false + }, + duration: { + type: Number, + default: 5e3 + }, + allowHtml: { + type: Boolean, + default: false + }, + position: { + type: String, + default: "left" + }, + transition: { + type: String, + default: "slide" + } + }, + emits: ["queue-end", "snackbar-show", "snackbar-hide"], + data() { + return { + queue: [], + snackbarTimeout: null + }; }, - - computed: { - classes: function classes() { - return ['ui-snackbar-container--position-' + this.position]; - } + classes() { + return [`ui-snackbar-container--position-${this.position}`]; + } }, - - beforeDestroy: function beforeDestroy() { - this.resetTimeout(); + beforeUnmount() { + this.resetTimeout(); }, - - methods: { - createSnackbar: function createSnackbar(snackbar) { - snackbar.show = false; - snackbar.duration = snackbar.duration || this.duration; - - this.queue.push(snackbar); - - if (this.queue.length === 1) { - return this.showNextSnackbar(); - } else if (!this.queueSnackbars) { - this.queue[0].show = false; - } - }, - showNextSnackbar: function showNextSnackbar() { - if (this.queue.length === 0) { - this.$emit('queue-end'); - return; - } - - this.queue[0].show = true; - }, - onShow: function onShow(snackbar) { - var _this = this; - - if (this.queue.indexOf(snackbar) !== 0) { - return; - } - - this.snackbarTimeout = setTimeout(function () { - _this.queue[0].show = false; - }, snackbar.duration); - - this.$emit('snackbar-show', snackbar); - this.callHook('onShow', snackbar); - }, - onHide: function onHide(snackbar, index) { - this.resetTimeout(); - - if (this.queueSnackbars || this.queue.length === 1) { - this.queue.splice(index, 1); - } else { - this.queue.splice(index, this.queue.length - 1); - } - - this.$emit('snackbar-hide', snackbar); - this.callHook('onHide', snackbar); - - this.showNextSnackbar(); - }, - onClick: function onClick(snackbar) { - snackbar.show = false; - this.callHook('onClick', snackbar); - }, - onActionClick: function onActionClick(snackbar) { - this.callHook('onActionClick', snackbar); - }, - callHook: function callHook(hook, snackbar) { - if (typeof snackbar[hook] === 'function') { - snackbar[hook].call(undefined, snackbar); - } - }, - resetTimeout: function resetTimeout() { - clearTimeout(this.snackbarTimeout); - this.snackbarTimeout = null; + createSnackbar(snackbar) { + snackbar.show = false; + snackbar.duration = snackbar.duration || this.duration; + this.queue.push(snackbar); + if (this.queue.length === 1) { + return this.showNextSnackbar(); + } else if (!this.queueSnackbars) { + this.queue[0].show = false; } - }, - - components: { - UiSnackbar: __WEBPACK_IMPORTED_MODULE_0__UiSnackbar_vue__["a" /* default */] - } -}; - -/***/ }), -/* 87 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_util__ = __webpack_require__(6); - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-switch', - + }, + showNextSnackbar() { + if (this.queue.length === 0) { + this.$emit("queue-end"); + return; + } + this.queue[0].show = true; + }, + onShow(snackbar) { + if (this.queue.indexOf(snackbar) !== 0) { + return; + } + this.snackbarTimeout = setTimeout(() => { + this.queue[0].show = false; + }, snackbar.duration); + this.$emit("snackbar-show", snackbar); + this.callHook("onShow", snackbar); + }, + onHide(snackbar, index) { + this.resetTimeout(); + if (this.queueSnackbars || this.queue.length === 1) { + this.queue.splice(index, 1); + } else { + this.queue.splice(index, this.queue.length - 1); + } + this.$emit("snackbar-hide", snackbar); + this.callHook("onHide", snackbar); + this.showNextSnackbar(); + }, + onClick(snackbar) { + snackbar.show = false; + this.callHook("onClick", snackbar); + }, + onActionClick(snackbar) { + this.callHook("onActionClick", snackbar); + }, + callHook(hook, snackbar) { + if (typeof snackbar[hook] === "function") { + snackbar[hook].call(void 0, snackbar); + } + }, + resetTimeout() { + clearTimeout(this.snackbarTimeout); + this.snackbarTimeout = null; + } + } + }; + const _hoisted_1$6 = ["innerHTML"]; + function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_snackbar = vue.resolveComponent("ui-snackbar"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-snackbar-container", $options.classes]) + }, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.queue, (snackbar, index) => { + return vue.withDirectives((vue.openBlock(), vue.createBlock(_component_ui_snackbar, { + key: index, + "action-color": snackbar.actionColor, + action: snackbar.action, + message: snackbar.message, + transition: $props.transition, + onActionClick: ($event) => $options.onActionClick(snackbar), + onClick: ($event) => $options.onClick(snackbar), + onHide: ($event) => $options.onHide(snackbar, index), + onShow: ($event) => $options.onShow(snackbar) + }, { + default: vue.withCtx(() => [ + vue.createCommentVNode(" eslint-disable-next-line vue/no-v-html "), + $props.allowHtml ? (vue.openBlock(), vue.createElementBlock("div", { + key: 0, + innerHTML: snackbar.message + }, null, 8, _hoisted_1$6)) : vue.createCommentVNode("v-if", true) + ]), + _: 2 + }, 1032, ["action-color", "action", "message", "transition", "onActionClick", "onClick", "onHide", "onShow"])), [ + [vue.vShow, snackbar.show] + ]); + }), 128)) + ], 2); + } + const UiSnackbarContainer = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSnackbarContainer.vue"]]); + const UiSwitch_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$5 = { + name: "UiSwitch", props: { - name: String, - label: String, - tabindex: [String, Number], - value: { - required: true - }, - trueValue: { - default: true - }, - falseValue: { - default: false - }, - submittedValue: { - type: String, - default: 'on' }, - checked: { - type: Boolean, - default: false - }, - color: { - type: String, - default: 'primary' }, - switchPosition: { - type: String, - default: 'left' }, - disabled: { - type: Boolean, - default: false - } - }, - - data: function data() { - return { - isActive: false, - isChecked: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers_util__["b" /* looseEqual */])(this.value, this.trueValue) || this.checked, - initialValue: this.value - }; + name: String, + label: String, + tabindex: [String, Number], + modelValue: { + required: true + }, + trueValue: { + default: true + }, + falseValue: { + default: false + }, + submittedValue: { + type: String, + default: "on" + }, + checked: { + type: Boolean, + default: false + }, + color: { + type: String, + default: "primary" + }, + switchPosition: { + type: String, + default: "left" + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "change"], + data() { + return { + isActive: false, + isChecked: looseEqual(this.modelValue, this.trueValue) || this.checked, + initialValue: this.modelValue + }; }, - - computed: { - classes: function classes() { - return ['ui-switch--color-' + this.color, 'ui-switch--switch-position-' + this.switchPosition, { 'is-active': this.isActive }, { 'is-checked': this.isChecked }, { 'is-disabled': this.disabled }]; - } + classes() { + return [ + `ui-switch--color-${this.color}`, + `ui-switch--switch-position-${this.switchPosition}`, + { "is-active": this.isActive }, + { "is-checked": this.isChecked }, + { "is-disabled": this.disabled } + ]; + } }, - watch: { - value: function value() { - this.isChecked = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers_util__["b" /* looseEqual */])(this.value, this.trueValue); - } + modelValue() { + this.isChecked = looseEqual(this.modelValue, this.trueValue); + } }, - - created: function created() { - this.$emit('input', this.isChecked ? this.trueValue : this.falseValue); + created() { + const value = this.isChecked ? this.trueValue : this.falseValue; + if (this.modelValue !== value) { + this.$emit("update:modelValue", value); + } }, - - methods: { - focus: function focus() { - this.$refs.input.focus(); - }, - onClick: function onClick(e) { - var isCheckedPrevious = this.isChecked; - var isChecked = e.target.checked; - - this.$emit('input', isChecked ? this.trueValue : this.falseValue, e); - - if (isCheckedPrevious !== isChecked) { - this.$emit('change', isChecked ? this.trueValue : this.falseValue, e); - } - }, - onFocus: function onFocus(e) { - this.isActive = true; - this.$emit('focus', e); - }, - onBlur: function onBlur(e) { - this.isActive = false; - this.$emit('blur', e); - } - } -}; - -/***/ }), -/* 88 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_uuid__ = __webpack_require__(23); - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-tab', - + focus() { + this.$refs.input.focus(); + }, + onClick(e) { + const isCheckedPrevious = this.isChecked; + const isChecked = e.target.checked; + this.$emit("update:modelValue", isChecked ? this.trueValue : this.falseValue, e); + if (isCheckedPrevious !== isChecked) { + this.$emit("change", isChecked ? this.trueValue : this.falseValue, e); + } + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + } + } + }; + const _hoisted_1$5 = { class: "ui-switch__input-wrapper" }; + const _hoisted_2$4 = [".checked", "disabled", "name", "tabindex", "value"]; + const _hoisted_3$4 = /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-switch__track" }, null, -1); + const _hoisted_4$2 = /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-switch__thumb" }, [ + /* @__PURE__ */ vue.createElementVNode("div", { class: "ui-switch__focus-ring" }) + ], -1); + const _hoisted_5$2 = { + key: 0, + class: "ui-switch__label-text" + }; + function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("label", { + class: vue.normalizeClass(["ui-switch", $options.classes]) + }, [ + vue.createElementVNode("div", _hoisted_1$5, [ + vue.createElementVNode("input", { + ref: "input", + class: "ui-switch__input", + type: "checkbox", + ".checked": $data.isChecked, + disabled: $props.disabled, + name: $props.name, + tabindex: $props.tabindex, + value: $props.submittedValue, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onClick: _cache[1] || (_cache[1] = (...args) => $options.onClick && $options.onClick(...args)), + onFocus: _cache[2] || (_cache[2] = (...args) => $options.onFocus && $options.onFocus(...args)) + }, null, 40, _hoisted_2$4), + _hoisted_3$4, + _hoisted_4$2 + ]), + $props.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$2, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.label), 1) + ]) + ])) : vue.createCommentVNode("v-if", true) + ], 2); + } + const UiSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiSwitch.vue"]]); + const UiTab_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$4 = { + name: "UiTab", props: { - id: { - type: String, - default: function _default() { - return __WEBPACK_IMPORTED_MODULE_0__helpers_uuid__["a" /* default */].short('ui-tab-'); - } - }, - title: String, - selected: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false + id: { + type: String, + default() { + return UUID.short("ui-tab-"); } + }, + title: String, + icon: String, + selected: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + tooltip: String, + openTooltipOn: String, + tooltipPosition: { + type: String, + default: "top" + } }, - - data: function data() { - return { - isActive: false - }; + emits: ["select", "deselect"], + data() { + return { + isActive: false + }; }, - - watch: { - disabled: function disabled() { - this.$parent.onTabDisabledChange(this); - } + disabled() { + this.$parent.onTabDisabledChange(this); + } }, - - created: function created() { - this.$parent.addTab(this); + created() { + this.$parent.addTab(this); }, - beforeDestroy: function beforeDestroy() { - this.$parent.removeTab(this); + beforeUnmount() { + this.$parent.removeTab(this); }, - - methods: { - activate: function activate() { - this.isActive = true; - this.$emit('select', this.id); - }, - deactivate: function deactivate() { - this.isActive = false; - this.$emit('deselect', this.id); - } - } -}; - -/***/ }), -/* 89 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__ = __webpack_require__(2); - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-tab-header-item', - + activate() { + this.isActive = true; + this.$emit("select", this.id); + }, + deactivate() { + this.isActive = false; + this.$emit("deselect", this.id); + } + } + }; + const _hoisted_1$4 = ["id", "aria-hidden", "tabindex"]; + function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) { + return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", { + id: $props.id, + class: "ui-tab", + role: "tabpanel", + "aria-hidden": !$data.isActive ? "true" : null, + tabindex: $data.isActive ? "0" : null + }, [ + vue.renderSlot(_ctx.$slots, "default") + ], 8, _hoisted_1$4)), [ + [vue.vShow, $data.isActive] + ]); + } + const UiTab = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTab.vue"]]); + const UiRender = (props) => { + return vue.h("div", { class: "ui-render" }, props.nodes); + }; + UiRender.props = ["nodes"]; + const UiTabHeaderItem_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$3 = { + name: "UiTabHeaderItem", components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_0__UiIcon_vue__["a" /* default */], - UiRippleInk: __WEBPACK_IMPORTED_MODULE_1__UiRippleInk_vue__["a" /* default */] - }, - - props: { - id: String, - type: { - type: String, - default: 'text' }, - title: String, - active: { - type: Boolean, - default: false - }, - disableRipple: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false - } + UiIcon, + UiRippleInk, + UiTooltip + }, + props: { + id: String, + type: { + type: String, + default: "text" + }, + title: String, + icon: String, + active: { + type: Boolean, + default: false + }, + disableRipple: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + tooltip: String, + openTooltipOn: String, + tooltipPosition: String }, - computed: { - classes: function classes() { - return ['ui-tab-header-item--type-' + this.type, { 'is-active': this.active }, { 'is-disabled': this.disabled }]; - }, - hasIcon: function hasIcon() { - return this.type === 'icon' || this.type === 'icon-and-text'; - }, - hasText: function hasText() { - return this.type === 'text' || this.type === 'icon-and-text'; - } - } -}; - -/***/ }), -/* 90 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__render__ = __webpack_require__(95); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiTabHeaderItem_vue__ = __webpack_require__(144); - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-tabs', - + classes() { + return [ + `ui-tab-header-item--type-${this.type}`, + { "is-active": this.active }, + { "is-disabled": this.disabled } + ]; + }, + hasIcon() { + return this.type === "icon" || this.type === "icon-and-text"; + }, + hasText() { + return this.type === "text" || this.type === "icon-and-text"; + } + } + }; + const _hoisted_1$3 = ["aria-controls", "aria-selected", "disabled", "tabindex"]; + const _hoisted_2$3 = { + key: 0, + class: "ui-tab-header-item__icon" + }; + const _hoisted_3$3 = { + key: 1, + class: "ui-tab-header-item__text" + }; + function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _component_ui_ripple_ink = vue.resolveComponent("ui-ripple-ink"); + const _component_ui_tooltip = vue.resolveComponent("ui-tooltip"); + return vue.openBlock(), vue.createElementBlock("li", { + class: vue.normalizeClass(["ui-tab-header-item", $options.classes]), + role: "tab", + "aria-controls": $props.id, + "aria-selected": $props.active ? "true" : null, + disabled: $props.disabled ? "true" : null, + tabindex: $props.active ? 0 : -1 + }, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + $options.hasIcon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$3, [ + _ctx.$slots.icon ? vue.renderSlot(_ctx.$slots, "icon", { key: 0 }) : $props.icon ? (vue.openBlock(), vue.createBlock(_component_ui_icon, { + key: 1, + icon: $props.icon + }, null, 8, ["icon"])) : vue.createCommentVNode("v-if", true) + ])) : vue.createCommentVNode("v-if", true), + $options.hasText ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$3, vue.toDisplayString($props.title), 1)) : vue.createCommentVNode("v-if", true) + ]), + !$props.disableRipple && !$props.disabled ? (vue.openBlock(), vue.createBlock(_component_ui_ripple_ink, { key: 0 })) : vue.createCommentVNode("v-if", true), + $props.tooltip ? (vue.openBlock(), vue.createBlock(_component_ui_tooltip, { + key: 1, + "open-on": $props.openTooltipOn, + position: $props.tooltipPosition + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString($props.tooltip), 1) + ]), + _: 1 + }, 8, ["open-on", "position"])) : vue.createCommentVNode("v-if", true) + ], 10, _hoisted_1$3); + } + const UiTabHeaderItem = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTabHeaderItem.vue"]]); + const UiTabs_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$2 = { + name: "UiTabs", components: { - Render: __WEBPACK_IMPORTED_MODULE_0__render__["a" /* default */], - UiTabHeaderItem: __WEBPACK_IMPORTED_MODULE_1__UiTabHeaderItem_vue__["a" /* default */] + Render: UiRender, + UiTabHeaderItem }, - props: { - type: { - type: String, - default: 'text' }, - confirmTabChange: Function, - backgroundColor: { - type: String, - default: 'default' }, - textColor: { - type: String, - default: 'black' }, - textColorActive: { - type: String, - default: 'primary' }, - indicatorColor: { - type: String, - default: 'primary' }, - fullwidth: { - type: Boolean, - default: false - }, - raised: { - type: Boolean, - default: false - }, - disableRipple: { - type: Boolean, - default: false - } + type: { + type: String, + default: "text" + }, + confirmTabChange: Function, + backgroundColor: { + type: String, + default: "default" + }, + textColor: { + type: String, + default: "black" + }, + textColorActive: { + type: String, + default: "primary" + }, + indicatorColor: { + type: String, + default: "primary" + }, + fullwidth: { + type: Boolean, + default: false + }, + raised: { + type: Boolean, + default: false + }, + disableRipple: { + type: Boolean, + default: false + } }, - - data: function data() { - return { - tabs: [], - activeTabId: null, - activeTabIndex: -1 - }; + emits: ["tab-click", "tab-change"], + data() { + return { + tabs: [], + activeTabId: null, + activeTabIndex: -1 + }; }, - - computed: { - classes: function classes() { - return ['ui-tabs--type-' + this.type, 'ui-tabs--text-color-' + this.textColor, 'ui-tabs--text-color-active-' + this.textColorActive, 'ui-tabs--background-color-' + this.backgroundColor, 'ui-tabs--indicator-color-' + this.indicatorColor, { 'is-raised': this.raised }, { 'is-fullwidth': this.fullwidth }]; - }, - hasIcon: function hasIcon() { - return this.type === 'icon' || this.type === 'icon-and-text'; - } + classes() { + return [ + `ui-tabs--type-${this.type}`, + `ui-tabs--text-color-${this.textColor}`, + `ui-tabs--text-color-active-${this.textColorActive}`, + `ui-tabs--background-color-${this.backgroundColor}`, + `ui-tabs--indicator-color-${this.indicatorColor}`, + { "is-raised": this.raised }, + { "is-fullwidth": this.fullwidth } + ]; + }, + hasIcon() { + return this.type === "icon" || this.type === "icon-and-text"; + } }, - watch: { - activeTabId: function activeTabId() { - var _this = this; - - this.tabs.forEach(function (tab, index) { - if (_this.activeTabId === tab.id) { - tab.activate(); - _this.activeTabIndex = index; - } else if (tab.isActive) { - tab.deactivate(); - } - }); - } + activeTabId() { + this.tabs.forEach((tab, index) => { + if (this.activeTabId === tab.id) { + tab.activate(); + this.activeTabIndex = index; + } else if (tab.isActive) { + tab.deactivate(); + } + }); + } }, - methods: { - addTab: function addTab(tab) { - this.tabs.push(tab); - - if (this.activeTabId === null || tab.selected) { - this.activeTabId = tab.id; - } - }, - removeTab: function removeTab(tab) { - var index = this.tabs.indexOf(tab); - - if (index > -1) { - this.tabs.splice(index, 1); - - if (tab.id === this.activeTabId) { - this.selectTab(this.findNearestTab()); - } - } - }, - onTabDisabledChange: function onTabDisabledChange(tab) { - if (tab.disabled && this.activeTabId === tab.id) { - this.selectTab(this.findNearestTab()); - } - }, - onTabClick: function onTabClick(tab, event) { - this.$emit('tab-click', tab, event); - this.selectTab(tab); - }, - selectTab: function selectTab(tab) { - if (tab === null || tab.disabled || tab.id === this.activeTabId) { - return; - } - - if (this.confirmTabChange && !this.confirmTabChange(this.tabs[this.activeTabIndex], tab)) { - return; - } - - this.activeTabId = tab.id; - this.$emit('tab-change', tab); - }, - selectNextTab: function selectNextTab() { - var nextTab = this.findNextTab(); - - if (nextTab) { - this.selectTab(nextTab); - nextTab.$el.focus(); - } - }, - selectPreviousTab: function selectPreviousTab() { - var previousTab = this.findPreviousTab(); - - if (previousTab) { - this.selectTab(previousTab); - previousTab.$el.focus(); - } - }, - findNextTab: function findNextTab() { - var tab = null; - - for (var i = this.activeTabIndex + 1; i < this.$refs.tabHeaders.length; i++) { - if (this.$refs.tabHeaders[i] && !this.$refs.tabHeaders[i].disabled) { - tab = this.$refs.tabHeaders[i]; - break; - } - } - - return tab; - }, - findPreviousTab: function findPreviousTab() { - var tab = null; - - for (var i = this.activeTabIndex - 1; i >= 0; i--) { - if (this.$refs.tabHeaders[i] && !this.$refs.tabHeaders[i].disabled) { - tab = this.$refs.tabHeaders[i]; - break; - } - } - - return tab; - }, - findNearestTab: function findNearestTab() { - return this.findPreviousTab() || this.findNextTab(); - }, - findTabById: function findTabById(id) { - for (var i = 0; i < this.$refs.tabHeaders.length; i++) { - if (id === this.$refs.tabHeaders[i].id) { - return this.$refs.tabHeaders[i]; - } - } - - return null; - }, - setActiveTab: function setActiveTab(tabId) { - var tab = this.findTabById(tabId); - - if (tab && !tab.disabled) { - this.selectTab(tab); - } + addTab(tab) { + this.tabs.push(tab); + if (this.activeTabId === null || tab.selected) { + this.activeTabId = tab.id; } - } -}; - -/***/ }), -/* 91 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__directives_autofocus__ = __webpack_require__(20); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_autosize__ = __webpack_require__(51); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_autosize___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_autosize__); - - - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-textbox', - - props: { - name: String, - placeholder: String, - tabindex: [String, Number], - value: { - type: [String, Number], - default: '' - }, - icon: String, - iconPosition: { - type: String, - default: 'left' }, - label: String, - floatingLabel: { - type: Boolean, - default: false - }, - type: { - type: String, - default: 'text' }, - multiLine: { - type: Boolean, - default: false - }, - rows: { - type: Number, - default: 2 - }, - autocomplete: String, - autocapitalize: String, - autofocus: { - type: Boolean, - default: false - }, - autosize: { - type: Boolean, - default: true - }, - min: Number, - max: Number, - step: { - type: [String, Number], - default: 'any' - }, - maxlength: Number, - minlength: Number, - enforceMaxlength: { - type: Boolean, - default: false - }, - required: { - type: Boolean, - default: false - }, - readonly: { - type: Boolean, - default: false - }, - help: String, - error: String, - invalid: { - type: Boolean, - default: false - }, - disabled: { - type: Boolean, - default: false + }, + removeTab(tab) { + const index = this.tabs.indexOf(tab); + if (index > -1) { + this.tabs.splice(index, 1); + if (tab.id === this.activeTabId) { + this.selectTab(this.findNearestTab()); + } } - }, - - data: function data() { - return { - isActive: false, - isTouched: false, - initialValue: this.value, - autosizeInitialized: false - }; - }, - - - computed: { - classes: function classes() { - return ['ui-textbox--icon-position-' + this.iconPosition, { 'is-active': this.isActive }, { 'is-invalid': this.invalid }, { 'is-touched': this.isTouched }, { 'is-multi-line': this.multiLine }, { 'has-counter': this.maxlength }, { 'is-disabled': this.disabled }, { 'has-label': this.hasLabel }, { 'has-floating-label': this.hasFloatingLabel }]; - }, - labelClasses: function labelClasses() { - return { - 'is-inline': this.hasFloatingLabel && this.isLabelInline, - 'is-floating': this.hasFloatingLabel && !this.isLabelInline - }; - }, - hasLabel: function hasLabel() { - return Boolean(this.label) || Boolean(this.$slots.default); - }, - hasFloatingLabel: function hasFloatingLabel() { - return this.hasLabel && this.floatingLabel; - }, - isLabelInline: function isLabelInline() { - return this.valueLength === 0 && !this.isActive; - }, - minValue: function minValue() { - if (this.type === 'number' && this.min !== undefined) { - return this.min; - } - - return null; - }, - maxValue: function maxValue() { - if (this.type === 'number' && this.max !== undefined) { - return this.max; - } - - return null; - }, - stepValue: function stepValue() { - return this.type === 'number' ? this.step : null; - }, - valueLength: function valueLength() { - return this.value === null ? 0 : String(this.value).length; - }, - hasFeedback: function hasFeedback() { - return this.showError || this.showHelp; - }, - showError: function showError() { - return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); - }, - showHelp: function showHelp() { - return Boolean(this.help) || Boolean(this.$slots.help); + }, + onTabDisabledChange(tab) { + if (tab.disabled && this.activeTabId === tab.id) { + this.selectTab(this.findNearestTab()); } - }, - - created: function created() { - if (this.value === null) { - this.initialValue = ''; - this.updateValue(''); + }, + onTabClick(tab, event) { + this.$emit("tab-click", tab, event); + this.selectTab(tab); + }, + selectTab(tab) { + if (tab === null || tab.disabled || tab.id === this.activeTabId) { + return; } - }, - mounted: function mounted() { - if (this.multiLine && this.autosize) { - __WEBPACK_IMPORTED_MODULE_2_autosize___default()(this.$refs.textarea); - this.autosizeInitialized = true; + if (this.confirmTabChange && !this.confirmTabChange(this.tabs[this.activeTabIndex], tab)) { + return; } - }, - beforeDestroy: function beforeDestroy() { - if (this.autosizeInitialized) { - __WEBPACK_IMPORTED_MODULE_2_autosize___default.a.destroy(this.$refs.textarea); + this.activeTabId = tab.id; + this.$emit("tab-change", tab); + }, + selectNextTab() { + const nextTab = this.findNextTab(); + if (nextTab) { + this.selectTab(nextTab); + nextTab.$el.focus(); } - }, - - - methods: { - updateValue: function updateValue(value) { - this.$emit('input', value); - }, - onChange: function onChange(e) { - this.$emit('change', this.value, e); - }, - onFocus: function onFocus(e) { - this.isActive = true; - this.$emit('focus', e); - }, - onBlur: function onBlur(e) { - this.isActive = false; - this.$emit('blur', e); - - if (!this.isTouched) { - this.isTouched = true; - this.$emit('touch'); - } - }, - onKeydown: function onKeydown(e) { - this.$emit('keydown', e); - }, - onKeydownEnter: function onKeydownEnter(e) { - this.$emit('keydown-enter', e); - }, - reset: function reset() { - if (document.activeElement === this.$refs.input || document.activeElement === this.$refs.textarea) { - document.activeElement.blur(); - } - - this.updateValue(this.initialValue); - this.resetTouched(); - }, - resetTouched: function resetTouched() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { touched: false }; - - this.isTouched = options.touched; - }, - refreshSize: function refreshSize() { - if (this.autosizeInitialized) { - __WEBPACK_IMPORTED_MODULE_2_autosize___default.a.update(this.$refs.textarea); + }, + selectPreviousTab() { + const previousTab = this.findPreviousTab(); + if (previousTab) { + this.selectTab(previousTab); + previousTab.$el.focus(); + } + }, + findNextTab() { + let tab = null; + for (let i2 = this.activeTabIndex + 1; i2 < this.$refs.tabHeaders.length; i2++) { + if (this.$refs.tabHeaders[i2] && !this.$refs.tabHeaders[i2].disabled) { + tab = this.$refs.tabHeaders[i2]; + break; + } + } + return tab; + }, + findPreviousTab() { + let tab = null; + for (let i2 = this.activeTabIndex - 1; i2 >= 0; i2--) { + if (this.$refs.tabHeaders[i2] && !this.$refs.tabHeaders[i2].disabled) { + tab = this.$refs.tabHeaders[i2]; + break; + } + } + return tab; + }, + findNearestTab() { + return this.findPreviousTab() || this.findNextTab(); + }, + findTabById(id) { + for (let i2 = 0; i2 < this.$refs.tabHeaders.length; i2++) { + if (id === this.$refs.tabHeaders[i2].id) { + return this.$refs.tabHeaders[i2]; + } + } + return null; + }, + setActiveTab(tabId) { + const tab = this.findTabById(tabId); + if (tab && !tab.disabled) { + this.selectTab(tab); + } + } + } + }; + const _hoisted_1$2 = { class: "ui-tabs__header" }; + const _hoisted_2$2 = { + class: "ui-tabs__header-items", + role: "tablist" + }; + const _hoisted_3$2 = { class: "ui-tabs__body" }; + function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { + const _component_render = vue.resolveComponent("render"); + const _component_ui_tab_header_item = vue.resolveComponent("ui-tab-header-item"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-tabs", $options.classes]) + }, [ + vue.createElementVNode("div", _hoisted_1$2, [ + vue.createElementVNode("ul", _hoisted_2$2, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.tabs, (tab) => { + return vue.openBlock(), vue.createBlock(_component_ui_tab_header_item, { + id: tab.id, + ref_for: true, + ref: "tabHeaders", + key: tab.id, + active: $data.activeTabId === tab.id, + "disable-ripple": $props.disableRipple, + disabled: tab.disabled, + title: tab.title, + icon: tab.icon, + type: $props.type, + tooltip: tab.tooltip, + "open-tooltip-on": tab.openTooltipOn, + "tooltip-position": tab.tooltipPosition, + onClick: ($event) => $options.onTabClick(tab, $event), + onKeydown: [ + vue.withKeys($options.selectPreviousTab, ["left"]), + vue.withKeys($options.selectNextTab, ["right"]) + ] + }, vue.createSlots({ + default: vue.withCtx(() => [ + tab.$slots.header ? (vue.openBlock(), vue.createBlock(_component_render, { + key: 0, + nodes: tab.$slots.header() + }, null, 8, ["nodes"])) : vue.createCommentVNode("v-if", true) + ]), + _: 2 + }, [ + !tab.$slots.header && tab.$slots.icon && $options.hasIcon ? { + name: "icon", + fn: vue.withCtx(() => [ + vue.createVNode(_component_render, { + nodes: tab.$slots.icon() + }, null, 8, ["nodes"]) + ]) + } : void 0 + ]), 1032, ["id", "active", "disable-ripple", "disabled", "title", "icon", "type", "tooltip", "open-tooltip-on", "tooltip-position", "onClick", "onKeydown"]); + }), 128)) + ]) + ]), + vue.createElementVNode("div", _hoisted_3$2, [ + vue.renderSlot(_ctx.$slots, "default") + ]) + ], 2); + } + const UiTabs = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTabs.vue"]]); + var autosize$1 = { exports: {} }; + /*! + Autosize 3.0.20 + license: MIT + http://www.jacklmoore.com/autosize + */ + (function(module2, exports3) { + (function(global2, factory) { + { + factory(exports3, module2); + } + })(commonjsGlobal, function(exports4, module3) { + var map = typeof Map === "function" ? /* @__PURE__ */ new Map() : function() { + var keys2 = []; + var values = []; + return { + has: function has(key) { + return keys2.indexOf(key) > -1; + }, + get: function get(key) { + return values[keys2.indexOf(key)]; + }, + set: function set2(key, value) { + if (keys2.indexOf(key) === -1) { + keys2.push(key); + values.push(value); + } + }, + "delete": function _delete(key) { + var index = keys2.indexOf(key); + if (index > -1) { + keys2.splice(index, 1); + values.splice(index, 1); } - }, - focus: function focus() { - (this.$refs.input || this.$refs.textarea).focus(); + } + }; + }(); + var createEvent = function createEvent2(name) { + return new Event(name, { bubbles: true }); + }; + try { + new Event("test"); + } catch (e) { + createEvent = function(name) { + var evt = document.createEvent("Event"); + evt.initEvent(name, true, false); + return evt; + }; + } + function assign(ta) { + if (!ta || !ta.nodeName || ta.nodeName !== "TEXTAREA" || map.has(ta)) + return; + var heightOffset = null; + var clientWidth = ta.clientWidth; + var cachedHeight = null; + function init() { + var style = window.getComputedStyle(ta, null); + if (style.resize === "vertical") { + ta.style.resize = "none"; + } else if (style.resize === "both") { + ta.style.resize = "horizontal"; + } + if (style.boxSizing === "content-box") { + heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); + } else { + heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); + } + if (isNaN(heightOffset)) { + heightOffset = 0; + } + update3(); + } + function changeOverflow(value) { + { + var width = ta.style.width; + ta.style.width = "0px"; + ta.offsetWidth; + ta.style.width = width; + } + ta.style.overflowY = value; + } + function getParentOverflows(el) { + var arr = []; + while (el && el.parentNode && el.parentNode instanceof Element) { + if (el.parentNode.scrollTop) { + arr.push({ + node: el.parentNode, + scrollTop: el.parentNode.scrollTop + }); + } + el = el.parentNode; + } + return arr; + } + function resize() { + var originalHeight = ta.style.height; + var overflows = getParentOverflows(ta); + var docTop = document.documentElement && document.documentElement.scrollTop; + ta.style.height = "auto"; + var endHeight = ta.scrollHeight + heightOffset; + if (ta.scrollHeight === 0) { + ta.style.height = originalHeight; + return; + } + ta.style.height = endHeight + "px"; + clientWidth = ta.clientWidth; + overflows.forEach(function(el) { + el.node.scrollTop = el.scrollTop; + }); + if (docTop) { + document.documentElement.scrollTop = docTop; + } + } + function update3() { + resize(); + var styleHeight = Math.round(parseFloat(ta.style.height)); + var computed = window.getComputedStyle(ta, null); + var actualHeight = Math.round(parseFloat(computed.height)); + if (actualHeight !== styleHeight) { + if (computed.overflowY !== "visible") { + changeOverflow("visible"); + resize(); + actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height)); + } + } else { + if (computed.overflowY !== "hidden") { + changeOverflow("hidden"); + resize(); + actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height)); + } + } + if (cachedHeight !== actualHeight) { + cachedHeight = actualHeight; + var evt = createEvent("autosize:resized"); + try { + ta.dispatchEvent(evt); + } catch (err) { + } + } + } + var pageResize = function pageResize2() { + if (ta.clientWidth !== clientWidth) { + update3(); + } + }; + var destroy3 = function(style) { + window.removeEventListener("resize", pageResize, false); + ta.removeEventListener("input", update3, false); + ta.removeEventListener("keyup", update3, false); + ta.removeEventListener("autosize:destroy", destroy3, false); + ta.removeEventListener("autosize:update", update3, false); + Object.keys(style).forEach(function(key) { + ta.style[key] = style[key]; + }); + map["delete"](ta); + }.bind(ta, { + height: ta.style.height, + resize: ta.style.resize, + overflowY: ta.style.overflowY, + overflowX: ta.style.overflowX, + wordWrap: ta.style.wordWrap + }); + ta.addEventListener("autosize:destroy", destroy3, false); + if ("onpropertychange" in ta && "oninput" in ta) { + ta.addEventListener("keyup", update3, false); + } + window.addEventListener("resize", pageResize, false); + ta.addEventListener("input", update3, false); + ta.addEventListener("autosize:update", update3, false); + ta.style.overflowX = "hidden"; + ta.style.wordWrap = "break-word"; + map.set(ta, { + destroy: destroy3, + update: update3 + }); + init(); + } + function destroy2(ta) { + var methods = map.get(ta); + if (methods) { + methods.destroy(); } - }, - + } + function update2(ta) { + var methods = map.get(ta); + if (methods) { + methods.update(); + } + } + var autosize2 = null; + if (typeof window === "undefined" || typeof window.getComputedStyle !== "function") { + autosize2 = function(el) { + return el; + }; + autosize2.destroy = function(el) { + return el; + }; + autosize2.update = function(el) { + return el; + }; + } else { + autosize2 = function(el, options) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], function(x) { + return assign(x); + }); + } + return el; + }; + autosize2.destroy = function(el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], destroy2); + } + return el; + }; + autosize2.update = function(el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], update2); + } + return el; + }; + } + module3.exports = autosize2; + }); + })(autosize$1, autosize$1.exports); + const autosize = autosize$1.exports; + const UiTextbox_vue_vue_type_style_index_0_lang = ""; + const _sfc_main$1 = { + name: "UiTextbox", components: { - UiIcon: __WEBPACK_IMPORTED_MODULE_1__UiIcon_vue__["a" /* default */] + UiIcon }, - directives: { - autofocus: __WEBPACK_IMPORTED_MODULE_0__directives_autofocus__["a" /* default */] - } -}; - -/***/ }), -/* 92 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__UiIconButton_vue__ = __webpack_require__(11); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__UiProgressLinear_vue__ = __webpack_require__(17); - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-toolbar', - + autofocus + }, props: { - type: { - type: String, - default: 'default' }, - textColor: { - type: String, - default: 'black' }, - title: String, - brand: String, - removeBrandDivider: { - type: Boolean, - default: false - }, - navIcon: { - type: String, - default: 'menu' - }, - removeNavIcon: { - type: Boolean, - default: false - }, - raised: { - type: Boolean, - default: true - }, - progressPosition: { - type: String, - default: 'bottom' }, - loading: { - type: Boolean, - default: false - } + name: String, + placeholder: String, + tabindex: [String, Number], + modelValue: { + type: [String, Number], + default: "" + }, + icon: String, + iconPosition: { + type: String, + default: "left" + }, + label: String, + floatingLabel: { + type: Boolean, + default: false + }, + type: { + type: String, + default: "text" + }, + multiLine: { + type: Boolean, + default: false + }, + rows: { + type: Number, + default: 2 + }, + autocomplete: String, + autocapitalize: String, + autofocus: { + type: Boolean, + default: false + }, + autosize: { + type: Boolean, + default: true + }, + min: Number, + max: Number, + step: { + type: [String, Number], + default: "any" + }, + maxlength: Number, + minlength: Number, + enforceMaxlength: { + type: Boolean, + default: false + }, + required: { + type: Boolean, + default: false + }, + readonly: { + type: Boolean, + default: false + }, + help: String, + error: String, + invalid: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, + emits: ["update:modelValue", "focus", "blur", "change", "touch", "keydown", "keydown-enter"], + data() { + return { + isActive: false, + isTouched: false, + initialValue: this.modelValue, + autosizeInitialized: false + }; }, - computed: { - classes: function classes() { - return ['ui-toolbar--type-' + this.type, 'ui-toolbar--text-color-' + this.textColor, 'ui-toolbar--progress-position-' + this.progressPosition, { 'is-raised': this.raised }]; - }, - progressColor: function progressColor() { - return this.textColor === 'black' ? 'primary' : 'white'; - }, - hasBrandDivider: function hasBrandDivider() { - return this.removeBrandDivider ? false : this.brand || this.$slots.brand; + classes() { + return [ + `ui-textbox--icon-position-${this.iconPosition}`, + { "is-active": this.isActive }, + { "is-invalid": this.invalid }, + { "is-touched": this.isTouched }, + { "is-multi-line": this.multiLine }, + { "has-counter": this.maxlength }, + { "is-disabled": this.disabled }, + { "has-label": this.hasLabel }, + { "has-floating-label": this.hasFloatingLabel } + ]; + }, + labelClasses() { + return { + "is-inline": this.hasFloatingLabel && this.isLabelInline, + "is-floating": this.hasFloatingLabel && !this.isLabelInline + }; + }, + hasLabel() { + return Boolean(this.label) || Boolean(this.$slots.default); + }, + hasFloatingLabel() { + return this.hasLabel && this.floatingLabel; + }, + isLabelInline() { + return this.valueLength === 0 && !this.isActive; + }, + minValue() { + if (this.type === "number" && this.min !== void 0) { + return this.min; } - }, - - methods: { - navIconClick: function navIconClick() { - this.$emit('nav-icon-click'); + return null; + }, + maxValue() { + if (this.type === "number" && this.max !== void 0) { + return this.max; } + return null; + }, + stepValue() { + return this.type === "number" ? this.step : null; + }, + valueLength() { + return this.modelValue === null ? 0 : String(this.modelValue).length; + }, + hasFeedback() { + return this.showError || this.showHelp; + }, + showError() { + return this.invalid && (Boolean(this.error) || Boolean(this.$slots.error)); + }, + showHelp() { + return Boolean(this.help) || Boolean(this.$slots.help); + } }, - - components: { - UiIconButton: __WEBPACK_IMPORTED_MODULE_0__UiIconButton_vue__["a" /* default */], - UiProgressLinear: __WEBPACK_IMPORTED_MODULE_1__UiProgressLinear_vue__["a" /* default */] - } -}; - -/***/ }), -/* 93 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tippy_js_esm__ = __webpack_require__(26); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers_element_ref__ = __webpack_require__(13); - - - - - -/* harmony default export */ __webpack_exports__["a"] = { - name: 'ui-tooltip', - - props: { - animation: { - type: String, - default: 'fade' }, - appendToBody: { - type: Boolean, - default: true - }, - openDelay: { - type: Number, - default: 0 - }, - openOn: { - type: String, - default: 'mouseenter focus' }, - position: { - type: String, - default: 'bottom' }, - trigger: { - validator: function validator(value) { - return __WEBPACK_IMPORTED_MODULE_1__helpers_element_ref__["a" /* default */].validate(value, '[UiTooltip]: Invalid prop: "trigger". Expected Element, VueComponent or CSS selector string.'); - } - }, - zIndex: Number + created() { + if (this.modelValue === null) { + this.initialValue = ""; + this.updateValue(""); + } }, - - mounted: function mounted() { - this.triggerEl = __WEBPACK_IMPORTED_MODULE_1__helpers_element_ref__["a" /* default */].resolve(this.trigger, this.$el.parentElement); - - if (!this.triggerEl) { - console.error('[UiTooltip]: Trigger element not found.'); - return; - } - - var options = { - animateFill: this.animation !== 'fade', - - animation: this.animation === 'none' ? 'fade' : this.animation, - arrow: false, - content: this.$el, - delay: [this.openDelay, 0], - distance: 4, - duration: this.animation === 'none' ? 0 : [250, 200], - ignoreAttributes: true, - lazy: true, - multiple: true, - placement: this.position, - theme: 'ui-tooltip', - trigger: this.openOn.replace('hover', 'mouseenter'), - zIndex: this.zIndex, - popperOptions: { - modifiers: { - computeStyle: { - gpuAcceleration: !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform)) - } - } - } - }; - - if (!this.appendToBody) { - options.appendTo = this.triggerEl.parentElement; - } - - this.tip = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_tippy_js_esm__["a" /* default */])(this.triggerEl, options); + mounted() { + if (this.multiLine && this.autosize) { + autosize(this.$refs.textarea); + this.autosizeInitialized = true; + } }, - beforeDestroy: function beforeDestroy() { - if (this.tip) { - this.tip.destroy(); - this.tip = null; - } - } -}; - -/***/ }), -/* 94 */ -/***/ (function(module, exports) { - - -document.addEventListener('DOMContentLoaded', function () { - var hadKeyboardEvent = false; - var keyboardModalityWhitelist = ['input:not([type])', 'input[type=text]', 'input[type=number]', 'input[type=date]', 'input[type=time]', 'input[type=datetime]', 'textarea', '[role=textbox]', '[supports-modality=keyboard]'].join(','); - - var isHandlingKeyboardThrottle = void 0; - - var matcher = function () { - var el = document.body; - - if (el.matchesSelector) { - return el.matchesSelector; - } - - if (el.webkitMatchesSelector) { - return el.webkitMatchesSelector; - } - - if (el.mozMatchesSelector) { - return el.mozMatchesSelector; - } - - if (el.msMatchesSelector) { - return el.msMatchesSelector; - } - - console.error('Couldn\'t find any matchesSelector method on document.body.'); - }(); - - var disableFocusRingByDefault = function disableFocusRingByDefault() { - var css = 'body:not([modality=keyboard]) :focus { outline: none; }'; - var head = document.head || document.getElementsByTagName('head')[0]; - var style = document.createElement('style'); - - style.type = 'text/css'; - style.id = 'disable-focus-ring'; - - if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - style.appendChild(document.createTextNode(css)); - } - - head.insertBefore(style, head.firstChild); - }; - - var focusTriggersKeyboardModality = function focusTriggersKeyboardModality(el) { - var triggers = false; - - if (matcher) { - triggers = matcher.call(el, keyboardModalityWhitelist) && matcher.call(el, ':not([readonly])'); - } - - return triggers; - }; - - disableFocusRingByDefault(); - - document.body.addEventListener('keydown', function () { - hadKeyboardEvent = true; - - if (isHandlingKeyboardThrottle) { - clearTimeout(isHandlingKeyboardThrottle); - } - - isHandlingKeyboardThrottle = setTimeout(function () { - hadKeyboardEvent = false; - }, 100); - }, true); - - document.body.addEventListener('focus', function (e) { - if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) { - document.body.setAttribute('modality', 'keyboard'); - } - }, true); - - document.body.addEventListener('blur', function () { - document.body.removeAttribute('modality'); - }, true); -}); - -/***/ }), -/* 95 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony default export */ __webpack_exports__["a"] = { - name: 'render', - - functional: true, - - props: ['nodes'], - - render: function render(createElement, context) { - return createElement('div', { class: 'ui-render' }, context.props.nodes); - } -}; - -/***/ }), -/* 96 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var isMergeableObject = function isMergeableObject(value) { - return isNonNullObject(value) - && !isSpecial(value) -}; - -function isNonNullObject(value) { - return !!value && typeof value === 'object' -} - -function isSpecial(value) { - var stringValue = Object.prototype.toString.call(value); - - return stringValue === '[object RegExp]' - || stringValue === '[object Date]' - || isReactElement(value) -} - -// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25 -var canUseSymbol = typeof Symbol === 'function' && Symbol.for; -var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7; - -function isReactElement(value) { - return value.$$typeof === REACT_ELEMENT_TYPE -} - -function emptyTarget(val) { - return Array.isArray(val) ? [] : {} -} - -function cloneUnlessOtherwiseSpecified(value, optionsArgument) { - var clone = !optionsArgument || optionsArgument.clone !== false; - - return (clone && isMergeableObject(value)) - ? deepmerge(emptyTarget(value), value, optionsArgument) - : value -} - -function defaultArrayMerge(target, source, optionsArgument) { - return target.concat(source).map(function(element) { - return cloneUnlessOtherwiseSpecified(element, optionsArgument) - }) -} - -function mergeObject(target, source, optionsArgument) { - var destination = {}; - if (isMergeableObject(target)) { - Object.keys(target).forEach(function(key) { - destination[key] = cloneUnlessOtherwiseSpecified(target[key], optionsArgument); - }); - } - Object.keys(source).forEach(function(key) { - if (!isMergeableObject(source[key]) || !target[key]) { - destination[key] = cloneUnlessOtherwiseSpecified(source[key], optionsArgument); - } else { - destination[key] = deepmerge(target[key], source[key], optionsArgument); - } - }); - return destination -} - -function deepmerge(target, source, optionsArgument) { - var sourceIsArray = Array.isArray(source); - var targetIsArray = Array.isArray(target); - var options = optionsArgument || { arrayMerge: defaultArrayMerge }; - var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; - - if (!sourceAndTargetTypesMatch) { - return cloneUnlessOtherwiseSpecified(source, optionsArgument) - } else if (sourceIsArray) { - var arrayMerge = options.arrayMerge || defaultArrayMerge; - return arrayMerge(target, source, optionsArgument) - } else { - return mergeObject(target, source, optionsArgument) - } -} - -deepmerge.all = function deepmergeAll(array, optionsArgument) { - if (!Array.isArray(array)) { - throw new Error('first argument should be an array') - } - - return array.reduce(function(prev, next) { - return deepmerge(prev, next, optionsArgument) - }, {}) -}; - -var deepmerge_1 = deepmerge; - -/* harmony default export */ __webpack_exports__["a"] = deepmerge_1; - - -/***/ }), -/* 97 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 98 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 99 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 100 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 101 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 102 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 103 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 104 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 105 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 106 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 107 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 108 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 109 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 110 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 111 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 112 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 113 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 114 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 115 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 116 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 117 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 118 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 119 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 120 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 121 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 122 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 123 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 124 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 125 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 126 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 127 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 128 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 129 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 130 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 131 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 132 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 133 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 134 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 135 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 136 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 137 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 138 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 139 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/**! - * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.14.7 - * @license - * Copyright (c) 2016 Federico Zivolo and contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; - -var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; -var timeoutDuration = 0; -for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { - if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { - timeoutDuration = 1; - break; - } -} - -function microtaskDebounce(fn) { - var called = false; - return function () { - if (called) { - return; - } - called = true; - window.Promise.resolve().then(function () { - called = false; - fn(); - }); - }; -} - -function taskDebounce(fn) { - var scheduled = false; - return function () { - if (!scheduled) { - scheduled = true; - setTimeout(function () { - scheduled = false; - fn(); - }, timeoutDuration); - } - }; -} - -var supportsMicroTasks = isBrowser && window.Promise; - -/** -* Create a debounced version of a method, that's asynchronously deferred -* but called in the minimum time possible. -* -* @method -* @memberof Popper.Utils -* @argument {Function} fn -* @returns {Function} -*/ -var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; - -/** - * Check if the given variable is a function - * @method - * @memberof Popper.Utils - * @argument {Any} functionToCheck - variable to check - * @returns {Boolean} answer to: is a function? - */ -function isFunction(functionToCheck) { - var getType = {}; - return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; -} - -/** - * Get CSS computed property of the given element - * @method - * @memberof Popper.Utils - * @argument {Eement} element - * @argument {String} property - */ -function getStyleComputedProperty(element, property) { - if (element.nodeType !== 1) { - return []; - } - // NOTE: 1 DOM access here - var window = element.ownerDocument.defaultView; - var css = window.getComputedStyle(element, null); - return property ? css[property] : css; -} - -/** - * Returns the parentNode or the host of the element - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} parent - */ -function getParentNode(element) { - if (element.nodeName === 'HTML') { - return element; - } - return element.parentNode || element.host; -} - -/** - * Returns the scrolling parent of the given element - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} scroll parent - */ -function getScrollParent(element) { - // Return body, `getScroll` will take care to get the correct `scrollTop` from it - if (!element) { - return document.body; - } - - switch (element.nodeName) { - case 'HTML': - case 'BODY': - return element.ownerDocument.body; - case '#document': - return element.body; - } - - // Firefox want us to check `-x` and `-y` variations as well - - var _getStyleComputedProp = getStyleComputedProperty(element), - overflow = _getStyleComputedProp.overflow, - overflowX = _getStyleComputedProp.overflowX, - overflowY = _getStyleComputedProp.overflowY; - - if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { - return element; - } - - return getScrollParent(getParentNode(element)); -} - -var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); -var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); - -/** - * Determines if the browser is Internet Explorer - * @method - * @memberof Popper.Utils - * @param {Number} version to check - * @returns {Boolean} isIE - */ -function isIE(version) { - if (version === 11) { - return isIE11; - } - if (version === 10) { - return isIE10; - } - return isIE11 || isIE10; -} - -/** - * Returns the offset parent of the given element - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} offset parent - */ -function getOffsetParent(element) { - if (!element) { - return document.documentElement; - } - - var noOffsetParent = isIE(10) ? document.body : null; - - // NOTE: 1 DOM access here - var offsetParent = element.offsetParent || null; - // Skip hidden elements which don't have an offsetParent - while (offsetParent === noOffsetParent && element.nextElementSibling) { - offsetParent = (element = element.nextElementSibling).offsetParent; - } - - var nodeName = offsetParent && offsetParent.nodeName; - - if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { - return element ? element.ownerDocument.documentElement : document.documentElement; - } - - // .offsetParent will return the closest TH, TD or TABLE in case - // no offsetParent is present, I hate this job... - if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { - return getOffsetParent(offsetParent); - } - - return offsetParent; -} - -function isOffsetContainer(element) { - var nodeName = element.nodeName; - - if (nodeName === 'BODY') { - return false; - } - return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; -} - -/** - * Finds the root node (document, shadowDOM root) of the given element - * @method - * @memberof Popper.Utils - * @argument {Element} node - * @returns {Element} root node - */ -function getRoot(node) { - if (node.parentNode !== null) { - return getRoot(node.parentNode); - } - - return node; -} - -/** - * Finds the offset parent common to the two provided nodes - * @method - * @memberof Popper.Utils - * @argument {Element} element1 - * @argument {Element} element2 - * @returns {Element} common offset parent - */ -function findCommonOffsetParent(element1, element2) { - // This check is needed to avoid errors in case one of the elements isn't defined for any reason - if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return document.documentElement; - } - - // Here we make sure to give as "start" the element that comes first in the DOM - var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; - var start = order ? element1 : element2; - var end = order ? element2 : element1; - - // Get common ancestor container - var range = document.createRange(); - range.setStart(start, 0); - range.setEnd(end, 0); - var commonAncestorContainer = range.commonAncestorContainer; - - // Both nodes are inside #document - - if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { - if (isOffsetContainer(commonAncestorContainer)) { - return commonAncestorContainer; - } - - return getOffsetParent(commonAncestorContainer); - } - - // one of the nodes is inside shadowDOM, find which one - var element1root = getRoot(element1); - if (element1root.host) { - return findCommonOffsetParent(element1root.host, element2); - } else { - return findCommonOffsetParent(element1, getRoot(element2).host); - } -} - -/** - * Gets the scroll value of the given element in the given side (top and left) - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @argument {String} side `top` or `left` - * @returns {number} amount of scrolled pixels - */ -function getScroll(element) { - var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; - - var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; - var nodeName = element.nodeName; - - if (nodeName === 'BODY' || nodeName === 'HTML') { - var html = element.ownerDocument.documentElement; - var scrollingElement = element.ownerDocument.scrollingElement || html; - return scrollingElement[upperSide]; - } - - return element[upperSide]; -} - -/* - * Sum or subtract the element scroll values (left and top) from a given rect object - * @method - * @memberof Popper.Utils - * @param {Object} rect - Rect object you want to change - * @param {HTMLElement} element - The element from the function reads the scroll values - * @param {Boolean} subtract - set to true if you want to subtract the scroll values - * @return {Object} rect - The modifier rect object - */ -function includeScroll(rect, element) { - var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var scrollTop = getScroll(element, 'top'); - var scrollLeft = getScroll(element, 'left'); - var modifier = subtract ? -1 : 1; - rect.top += scrollTop * modifier; - rect.bottom += scrollTop * modifier; - rect.left += scrollLeft * modifier; - rect.right += scrollLeft * modifier; - return rect; -} - -/* - * Helper to detect borders of a given element - * @method - * @memberof Popper.Utils - * @param {CSSStyleDeclaration} styles - * Result of `getStyleComputedProperty` on the given element - * @param {String} axis - `x` or `y` - * @return {number} borders - The borders size of the given axis - */ - -function getBordersSize(styles, axis) { - var sideA = axis === 'x' ? 'Left' : 'Top'; - var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - - return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); -} - -function getSize(axis, body, html, computedStyle) { - return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); -} - -function getWindowSizes(document) { - var body = document.body; - var html = document.documentElement; - var computedStyle = isIE(10) && getComputedStyle(html); - - return { - height: getSize('Height', body, html, computedStyle), - width: getSize('Width', body, html, computedStyle) - }; -} - -var classCallCheck = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -}; - -var createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; + beforeUnmount() { + if (this.autosizeInitialized) { + autosize.destroy(this.$refs.textarea); + } + }, + methods: { + updateValue(value) { + this.$emit("update:modelValue", value); + }, + onChange(e) { + this.$emit("change", this.modelValue, e); + }, + onFocus(e) { + this.isActive = true; + this.$emit("focus", e); + }, + onBlur(e) { + this.isActive = false; + this.$emit("blur", e); + if (!this.isTouched) { + this.isTouched = true; + this.$emit("touch"); + } + }, + onKeydown(e) { + this.$emit("keydown", e); + }, + onKeydownEnter(e) { + this.$emit("keydown-enter", e); + }, + reset() { + if (document.activeElement === this.$refs.input || document.activeElement === this.$refs.textarea) { + document.activeElement.blur(); + } + this.updateValue(this.initialValue); + this.resetTouched(); + }, + resetTouched(options = { touched: false }) { + this.isTouched = options.touched; + }, + refreshSize() { + if (this.autosizeInitialized) { + autosize.update(this.$refs.textarea); + } + }, + focus() { + (this.$refs.input || this.$refs.textarea).focus(); + } + } }; -}(); - - - - - -var defineProperty = function (obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -}; - -var _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; -}; - -/** - * Given element offsets, generate an output similar to getBoundingClientRect - * @method - * @memberof Popper.Utils - * @argument {Object} offsets - * @returns {Object} ClientRect like output - */ -function getClientRect(offsets) { - return _extends({}, offsets, { - right: offsets.left + offsets.width, - bottom: offsets.top + offsets.height - }); -} - -/** - * Get bounding client rect of given element - * @method - * @memberof Popper.Utils - * @param {HTMLElement} element - * @return {Object} client rect - */ -function getBoundingClientRect(element) { - var rect = {}; - - // IE10 10 FIX: Please, don't ask, the element isn't - // considered in DOM in some circumstances... - // This isn't reproducible in IE10 compatibility mode of IE11 - try { - if (isIE(10)) { - rect = element.getBoundingClientRect(); - var scrollTop = getScroll(element, 'top'); - var scrollLeft = getScroll(element, 'left'); - rect.top += scrollTop; - rect.left += scrollLeft; - rect.bottom += scrollTop; - rect.right += scrollLeft; - } else { - rect = element.getBoundingClientRect(); - } - } catch (e) {} - - var result = { - left: rect.left, - top: rect.top, - width: rect.right - rect.left, - height: rect.bottom - rect.top + const _hoisted_1$1 = { + key: 0, + class: "ui-textbox__icon-wrapper" }; - - // subtract scrollbar size from sizes - var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; - var width = sizes.width || element.clientWidth || result.right - result.left; - var height = sizes.height || element.clientHeight || result.bottom - result.top; - - var horizScrollbar = element.offsetWidth - width; - var vertScrollbar = element.offsetHeight - height; - - // if an hypothetical scrollbar is detected, we must be sure it's not a `border` - // we make this check conditional for performance reasons - if (horizScrollbar || vertScrollbar) { - var styles = getStyleComputedProperty(element); - horizScrollbar -= getBordersSize(styles, 'x'); - vertScrollbar -= getBordersSize(styles, 'y'); - - result.width -= horizScrollbar; - result.height -= vertScrollbar; - } - - return getClientRect(result); -} - -function getOffsetRectRelativeToArbitraryNode(children, parent) { - var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var isIE10 = isIE(10); - var isHTML = parent.nodeName === 'HTML'; - var childrenRect = getBoundingClientRect(children); - var parentRect = getBoundingClientRect(parent); - var scrollParent = getScrollParent(children); - - var styles = getStyleComputedProperty(parent); - var borderTopWidth = parseFloat(styles.borderTopWidth, 10); - var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); - - // In cases where the parent is fixed, we must ignore negative scroll in offset calc - if (fixedPosition && isHTML) { - parentRect.top = Math.max(parentRect.top, 0); - parentRect.left = Math.max(parentRect.left, 0); - } - var offsets = getClientRect({ - top: childrenRect.top - parentRect.top - borderTopWidth, - left: childrenRect.left - parentRect.left - borderLeftWidth, - width: childrenRect.width, - height: childrenRect.height - }); - offsets.marginTop = 0; - offsets.marginLeft = 0; - - // Subtract margins of documentElement in case it's being used as parent - // we do this only on HTML because it's the only element that behaves - // differently when margins are applied to it. The margins are included in - // the box of the documentElement, in the other cases not. - if (!isIE10 && isHTML) { - var marginTop = parseFloat(styles.marginTop, 10); - var marginLeft = parseFloat(styles.marginLeft, 10); - - offsets.top -= borderTopWidth - marginTop; - offsets.bottom -= borderTopWidth - marginTop; - offsets.left -= borderLeftWidth - marginLeft; - offsets.right -= borderLeftWidth - marginLeft; - - // Attach marginTop and marginLeft because in some circumstances we may need them - offsets.marginTop = marginTop; - offsets.marginLeft = marginLeft; - } - - if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { - offsets = includeScroll(offsets, parent); - } - - return offsets; -} - -function getViewportOffsetRectRelativeToArtbitraryNode(element) { - var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var html = element.ownerDocument.documentElement; - var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); - var width = Math.max(html.clientWidth, window.innerWidth || 0); - var height = Math.max(html.clientHeight, window.innerHeight || 0); - - var scrollTop = !excludeScroll ? getScroll(html) : 0; - var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; - - var offset = { - top: scrollTop - relativeOffset.top + relativeOffset.marginTop, - left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, - width: width, - height: height + const _hoisted_2$1 = { class: "ui-textbox__content" }; + const _hoisted_3$1 = { class: "ui-textbox__label" }; + const _hoisted_4$1 = ["autocomplete", "autocapitalize", "disabled", "max", "maxlength", "minlength", "min", "name", "placeholder", "readonly", "required", "step", "tabindex", "type", "value"]; + const _hoisted_5$1 = ["autocomplete", "autocapitalize", "disabled", "maxlength", "minlength", "name", "placeholder", "readonly", "required", "rows", "tabindex", "value"]; + const _hoisted_6$1 = { + key: 0, + class: "ui-textbox__feedback" }; - - return getClientRect(offset); -} - -/** - * Check if the given element is fixed or is inside a fixed parent - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @argument {Element} customContainer - * @returns {Boolean} answer to "isFixed?" - */ -function isFixed(element) { - var nodeName = element.nodeName; - if (nodeName === 'BODY' || nodeName === 'HTML') { - return false; - } - if (getStyleComputedProperty(element, 'position') === 'fixed') { - return true; - } - var parentNode = getParentNode(element); - if (!parentNode) { - return false; - } - return isFixed(parentNode); -} - -/** - * Finds the first parent of an element that has a transformed property defined - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} first transformed parent or documentElement - */ - -function getFixedPositionOffsetParent(element) { - // This check is needed to avoid errors in case one of the elements isn't defined for any reason - if (!element || !element.parentElement || isIE()) { - return document.documentElement; - } - var el = element.parentElement; - while (el && getStyleComputedProperty(el, 'transform') === 'none') { - el = el.parentElement; - } - return el || document.documentElement; -} - -/** - * Computed the boundaries limits and return them - * @method - * @memberof Popper.Utils - * @param {HTMLElement} popper - * @param {HTMLElement} reference - * @param {number} padding - * @param {HTMLElement} boundariesElement - Element used to define the boundaries - * @param {Boolean} fixedPosition - Is in fixed position mode - * @returns {Object} Coordinates of the boundaries - */ -function getBoundaries(popper, reference, padding, boundariesElement) { - var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - - // NOTE: 1 DOM access here - - var boundaries = { top: 0, left: 0 }; - var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); - - // Handle viewport case - if (boundariesElement === 'viewport') { - boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); - } else { - // Handle other cases based on DOM element used as boundaries - var boundariesNode = void 0; - if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(reference)); - if (boundariesNode.nodeName === 'BODY') { - boundariesNode = popper.ownerDocument.documentElement; - } - } else if (boundariesElement === 'window') { - boundariesNode = popper.ownerDocument.documentElement; - } else { - boundariesNode = boundariesElement; - } - - var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); - - // In case of HTML, we need a different computation - if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { - var _getWindowSizes = getWindowSizes(popper.ownerDocument), - height = _getWindowSizes.height, - width = _getWindowSizes.width; - - boundaries.top += offsets.top - offsets.marginTop; - boundaries.bottom = height + offsets.top; - boundaries.left += offsets.left - offsets.marginLeft; - boundaries.right = width + offsets.left; - } else { - // for all the other DOM elements, this one is good - boundaries = offsets; - } - } - - // Add paddings - padding = padding || 0; - var isPaddingNumber = typeof padding === 'number'; - boundaries.left += isPaddingNumber ? padding : padding.left || 0; - boundaries.top += isPaddingNumber ? padding : padding.top || 0; - boundaries.right -= isPaddingNumber ? padding : padding.right || 0; - boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; - - return boundaries; -} - -function getArea(_ref) { - var width = _ref.width, - height = _ref.height; - - return width * height; -} - -/** - * Utility used to transform the `auto` placement to the placement with more - * available space. - * @method - * @memberof Popper.Utils - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { - var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; - - if (placement.indexOf('auto') === -1) { - return placement; - } - - var boundaries = getBoundaries(popper, reference, padding, boundariesElement); - - var rects = { - top: { - width: boundaries.width, - height: refRect.top - boundaries.top - }, - right: { - width: boundaries.right - refRect.right, - height: boundaries.height - }, - bottom: { - width: boundaries.width, - height: boundaries.bottom - refRect.bottom - }, - left: { - width: refRect.left - boundaries.left, - height: boundaries.height - } + const _hoisted_7 = { + key: 0, + class: "ui-textbox__feedback-text" }; - - var sortedAreas = Object.keys(rects).map(function (key) { - return _extends({ - key: key - }, rects[key], { - area: getArea(rects[key]) - }); - }).sort(function (a, b) { - return b.area - a.area; - }); - - var filteredAreas = sortedAreas.filter(function (_ref2) { - var width = _ref2.width, - height = _ref2.height; - return width >= popper.clientWidth && height >= popper.clientHeight; - }); - - var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; - - var variation = placement.split('-')[1]; - - return computedPlacement + (variation ? '-' + variation : ''); -} - -/** - * Get offsets to the reference element - * @method - * @memberof Popper.Utils - * @param {Object} state - * @param {Element} popper - the popper element - * @param {Element} reference - the reference element (the popper will be relative to this) - * @param {Element} fixedPosition - is in fixed position mode - * @returns {Object} An object containing the offsets which will be applied to the popper - */ -function getReferenceOffsets(state, popper, reference) { - var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - - var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); - return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); -} - -/** - * Get the outer sizes of the given element (offset size + margins) - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Object} object containing width and height properties - */ -function getOuterSizes(element) { - var window = element.ownerDocument.defaultView; - var styles = window.getComputedStyle(element); - var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); - var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); - var result = { - width: element.offsetWidth + y, - height: element.offsetHeight + x + const _hoisted_8 = { + key: 1, + class: "ui-textbox__feedback-text" }; - return result; -} - -/** - * Get the opposite placement of the given one - * @method - * @memberof Popper.Utils - * @argument {String} placement - * @returns {String} flipped placement - */ -function getOppositePlacement(placement) { - var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; - return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash[matched]; - }); -} - -/** - * Get offsets to the popper - * @method - * @memberof Popper.Utils - * @param {Object} position - CSS position the Popper will get applied - * @param {HTMLElement} popper - the popper element - * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) - * @param {String} placement - one of the valid placement options - * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper - */ -function getPopperOffsets(popper, referenceOffsets, placement) { - placement = placement.split('-')[0]; - - // Get popper node sizes - var popperRect = getOuterSizes(popper); - - // Add position, width and height to our offsets object - var popperOffsets = { - width: popperRect.width, - height: popperRect.height + const _hoisted_9 = { + key: 2, + class: "ui-textbox__counter" }; - - // depending by the popper placement we have to compute its offsets slightly differently - var isHoriz = ['right', 'left'].indexOf(placement) !== -1; - var mainSide = isHoriz ? 'top' : 'left'; - var secondarySide = isHoriz ? 'left' : 'top'; - var measurement = isHoriz ? 'height' : 'width'; - var secondaryMeasurement = !isHoriz ? 'height' : 'width'; - - popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; - if (placement === secondarySide) { - popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; - } else { - popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; - } - - return popperOffsets; -} - -/** - * Mimics the `find` method of Array - * @method - * @memberof Popper.Utils - * @argument {Array} arr - * @argument prop - * @argument value - * @returns index or -1 - */ -function find(arr, check) { - // use native find if supported - if (Array.prototype.find) { - return arr.find(check); - } - - // use `filter` to obtain the same behavior of `find` - return arr.filter(check)[0]; -} - -/** - * Return the index of the matching object - * @method - * @memberof Popper.Utils - * @argument {Array} arr - * @argument prop - * @argument value - * @returns index or -1 - */ -function findIndex(arr, prop, value) { - // use native findIndex if supported - if (Array.prototype.findIndex) { - return arr.findIndex(function (cur) { - return cur[prop] === value; - }); - } - - // use `find` + `indexOf` if `findIndex` isn't supported - var match = find(arr, function (obj) { - return obj[prop] === value; - }); - return arr.indexOf(match); -} - -/** - * Loop trough the list of modifiers and run them in order, - * each of them will then edit the data object. - * @method - * @memberof Popper.Utils - * @param {dataObject} data - * @param {Array} modifiers - * @param {String} ends - Optional modifier name used as stopper - * @returns {dataObject} - */ -function runModifiers(modifiers, data, ends) { - var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); - - modifiersToRun.forEach(function (modifier) { - if (modifier['function']) { - // eslint-disable-line dot-notation - console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); - } - var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation - if (modifier.enabled && isFunction(fn)) { - // Add properties to offsets to make them a complete clientRect object - // we do this before each modifier to make sure the previous one doesn't - // mess with these values - data.offsets.popper = getClientRect(data.offsets.popper); - data.offsets.reference = getClientRect(data.offsets.reference); - - data = fn(data, modifier); + function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon = vue.resolveComponent("ui-icon"); + const _directive_autofocus = vue.resolveDirective("autofocus"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-textbox", $options.classes]) + }, [ + $props.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [ + vue.renderSlot(_ctx.$slots, "icon", {}, () => [ + vue.createVNode(_component_ui_icon, { icon: $props.icon }, null, 8, ["icon"]) + ]) + ])) : vue.createCommentVNode("v-if", true), + vue.createElementVNode("div", _hoisted_2$1, [ + vue.createElementVNode("label", _hoisted_3$1, [ + !$props.multiLine ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", { + key: 0, + ref: "input", + class: "ui-textbox__input", + autocomplete: $props.autocomplete ? $props.autocomplete : null, + autocapitalize: $props.autocapitalize ? $props.autocapitalize : null, + disabled: $props.disabled, + max: $options.maxValue, + maxlength: $props.enforceMaxlength ? $props.maxlength : null, + minlength: $props.minlength, + min: $options.minValue, + name: $props.name, + placeholder: $options.hasFloatingLabel ? null : $props.placeholder, + readonly: $props.readonly, + required: $props.required, + step: $options.stepValue, + tabindex: $props.tabindex, + type: $props.type, + value: $props.modelValue, + onBlur: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args)), + onChange: _cache[1] || (_cache[1] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[2] || (_cache[2] = (...args) => $options.onFocus && $options.onFocus(...args)), + onInput: _cache[3] || (_cache[3] = ($event) => $options.updateValue($event.target.value)), + onKeydown: [ + _cache[4] || (_cache[4] = vue.withKeys((...args) => $options.onKeydownEnter && $options.onKeydownEnter(...args), ["enter"])), + _cache[5] || (_cache[5] = (...args) => $options.onKeydown && $options.onKeydown(...args)) + ] + }, null, 40, _hoisted_4$1)), [ + [_directive_autofocus, $props.autofocus] + ]) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("textarea", { + key: 1, + ref: "textarea", + class: "ui-textbox__textarea", + autocomplete: $props.autocomplete ? $props.autocomplete : null, + autocapitalize: $props.autocapitalize ? $props.autocapitalize : null, + disabled: $props.disabled, + maxlength: $props.enforceMaxlength ? $props.maxlength : null, + minlength: $props.minlength, + name: $props.name, + placeholder: $options.hasFloatingLabel ? null : $props.placeholder, + readonly: $props.readonly, + required: $props.required, + rows: $props.rows, + tabindex: $props.tabindex, + value: $props.modelValue, + onBlur: _cache[6] || (_cache[6] = (...args) => $options.onBlur && $options.onBlur(...args)), + onChange: _cache[7] || (_cache[7] = (...args) => $options.onChange && $options.onChange(...args)), + onFocus: _cache[8] || (_cache[8] = (...args) => $options.onFocus && $options.onFocus(...args)), + onInput: _cache[9] || (_cache[9] = ($event) => $options.updateValue($event.target.value)), + onKeydown: [ + _cache[10] || (_cache[10] = vue.withKeys((...args) => $options.onKeydownEnter && $options.onKeydownEnter(...args), ["enter"])), + _cache[11] || (_cache[11] = (...args) => $options.onKeydown && $options.onKeydown(...args)) + ] + }, null, 40, _hoisted_5$1)), [ + [_directive_autofocus, $props.autofocus] + ]), + $props.label || _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", { + key: 2, + class: vue.normalizeClass(["ui-textbox__label-text", $options.labelClasses]) + }, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.label), 1) + ]) + ], 2)) : vue.createCommentVNode("v-if", true) + ]), + $options.hasFeedback || $props.maxlength ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$1, [ + $options.showError ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [ + vue.renderSlot(_ctx.$slots, "error", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.error), 1) + ]) + ])) : $options.showHelp ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [ + vue.renderSlot(_ctx.$slots, "help", {}, () => [ + vue.createTextVNode(vue.toDisplayString($props.help), 1) + ]) + ])) : vue.createCommentVNode("v-if", true), + $props.maxlength ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9, vue.toDisplayString($options.valueLength + "/" + $props.maxlength), 1)) : vue.createCommentVNode("v-if", true) + ])) : vue.createCommentVNode("v-if", true) + ]) + ], 2); + } + const UiTextbox = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiTextbox.vue"]]); + const UiToolbar_vue_vue_type_style_index_0_lang = ""; + const _sfc_main = { + name: "UiToolbar", + components: { + UiIconButton, + UiProgressLinear + }, + props: { + type: { + type: String, + default: "default" + }, + textColor: { + type: String, + default: "black" + }, + title: String, + brand: String, + removeBrandDivider: { + type: Boolean, + default: false + }, + navIcon: { + type: String, + default: "menu" + }, + removeNavIcon: { + type: Boolean, + default: false + }, + raised: { + type: Boolean, + default: true + }, + progressPosition: { + type: String, + default: "bottom" + }, + loading: { + type: Boolean, + default: false + } + }, + emits: ["nav-icon-click"], + computed: { + classes() { + return [ + `ui-toolbar--type-${this.type}`, + `ui-toolbar--text-color-${this.textColor}`, + `ui-toolbar--progress-position-${this.progressPosition}`, + { "is-raised": this.raised } + ]; + }, + progressColor() { + return this.textColor === "black" ? "primary" : "white"; + }, + hasBrandDivider() { + return this.removeBrandDivider ? false : this.brand || this.$slots.brand; + } + }, + methods: { + navIconClick() { + this.$emit("nav-icon-click"); + } } - }); - - return data; -} - -/** - * Updates the position of the popper, computing the new offsets and applying - * the new style.
- * Prefer `scheduleUpdate` over `update` because of performance reasons. - * @method - * @memberof Popper - */ -function update() { - // if popper is destroyed, don't perform any further update - if (this.state.isDestroyed) { - return; - } - - var data = { - instance: this, - styles: {}, - arrowStyles: {}, - attributes: {}, - flipped: false, - offsets: {} }; - - // compute reference element offsets - data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); - - // compute auto placement, store placement inside the data object, - // modifiers will be able to edit `placement` if needed - // and refer to originalPlacement to know the original value - data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); - - // store the computed placement inside `originalPlacement` - data.originalPlacement = data.placement; - - data.positionFixed = this.options.positionFixed; - - // compute the popper offsets - data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); - - data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; - - // run the modifiers - data = runModifiers(this.modifiers, data); - - // the first `update` will call `onCreate` callback - // the other ones will call `onUpdate` callback - if (!this.state.isCreated) { - this.state.isCreated = true; - this.options.onCreate(data); - } else { - this.options.onUpdate(data); - } -} - -/** - * Helper used to know if the given modifier is enabled. - * @method - * @memberof Popper.Utils - * @returns {Boolean} - */ -function isModifierEnabled(modifiers, modifierName) { - return modifiers.some(function (_ref) { - var name = _ref.name, - enabled = _ref.enabled; - return enabled && name === modifierName; - }); -} - -/** - * Get the prefixed supported property name - * @method - * @memberof Popper.Utils - * @argument {String} property (camelCase) - * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) - */ -function getSupportedPropertyName(property) { - var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; - var upperProp = property.charAt(0).toUpperCase() + property.slice(1); - - for (var i = 0; i < prefixes.length; i++) { - var prefix = prefixes[i]; - var toCheck = prefix ? '' + prefix + upperProp : property; - if (typeof document.body.style[toCheck] !== 'undefined') { - return toCheck; - } - } - return null; -} - -/** - * Destroys the popper. - * @method - * @memberof Popper - */ -function destroy() { - this.state.isDestroyed = true; - - // touch DOM only if `applyStyle` modifier is enabled - if (isModifierEnabled(this.modifiers, 'applyStyle')) { - this.popper.removeAttribute('x-placement'); - this.popper.style.position = ''; - this.popper.style.top = ''; - this.popper.style.left = ''; - this.popper.style.right = ''; - this.popper.style.bottom = ''; - this.popper.style.willChange = ''; - this.popper.style[getSupportedPropertyName('transform')] = ''; - } - - this.disableEventListeners(); - - // remove the popper if user explicity asked for the deletion on destroy - // do not use `remove` because IE11 doesn't support it - if (this.options.removeOnDestroy) { - this.popper.parentNode.removeChild(this.popper); - } - return this; -} - -/** - * Get the window associated with the element - * @argument {Element} element - * @returns {Window} - */ -function getWindow(element) { - var ownerDocument = element.ownerDocument; - return ownerDocument ? ownerDocument.defaultView : window; -} - -function attachToScrollParents(scrollParent, event, callback, scrollParents) { - var isBody = scrollParent.nodeName === 'BODY'; - var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; - target.addEventListener(event, callback, { passive: true }); - - if (!isBody) { - attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); - } - scrollParents.push(target); -} - -/** - * Setup needed event listeners used to update the popper position - * @method - * @memberof Popper.Utils - * @private - */ -function setupEventListeners(reference, options, state, updateBound) { - // Resize event listener on window - state.updateBound = updateBound; - getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); - - // Scroll event listener on scroll parents - var scrollElement = getScrollParent(reference); - attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); - state.scrollElement = scrollElement; - state.eventsEnabled = true; - - return state; -} - -/** - * It will add resize/scroll events and start recalculating - * position of the popper element when they are triggered. - * @method - * @memberof Popper - */ -function enableEventListeners() { - if (!this.state.eventsEnabled) { - this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); - } -} - -/** - * Remove event listeners used to update the popper position - * @method - * @memberof Popper.Utils - * @private - */ -function removeEventListeners(reference, state) { - // Remove resize event listener on window - getWindow(reference).removeEventListener('resize', state.updateBound); - - // Remove scroll event listener on scroll parents - state.scrollParents.forEach(function (target) { - target.removeEventListener('scroll', state.updateBound); - }); - - // Reset state - state.updateBound = null; - state.scrollParents = []; - state.scrollElement = null; - state.eventsEnabled = false; - return state; -} - -/** - * It will remove resize/scroll events and won't recalculate popper position - * when they are triggered. It also won't trigger `onUpdate` callback anymore, - * unless you call `update` method manually. - * @method - * @memberof Popper - */ -function disableEventListeners() { - if (this.state.eventsEnabled) { - cancelAnimationFrame(this.scheduleUpdate); - this.state = removeEventListeners(this.reference, this.state); - } -} - -/** - * Tells if a given input is a number - * @method - * @memberof Popper.Utils - * @param {*} input to check - * @return {Boolean} - */ -function isNumeric(n) { - return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); -} - -/** - * Set the style to the given popper - * @method - * @memberof Popper.Utils - * @argument {Element} element - Element to apply the style to - * @argument {Object} styles - * Object with a list of properties and values which will be applied to the element - */ -function setStyles(element, styles) { - Object.keys(styles).forEach(function (prop) { - var unit = ''; - // add unit if the value is numeric and is one of the following - if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { - unit = 'px'; - } - element.style[prop] = styles[prop] + unit; - }); -} - -/** - * Set the attributes to the given popper - * @method - * @memberof Popper.Utils - * @argument {Element} element - Element to apply the attributes to - * @argument {Object} styles - * Object with a list of properties and values which will be applied to the element - */ -function setAttributes(element, attributes) { - Object.keys(attributes).forEach(function (prop) { - var value = attributes[prop]; - if (value !== false) { - element.setAttribute(prop, attributes[prop]); - } else { - element.removeAttribute(prop); - } - }); -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} data.styles - List of style properties - values to apply to popper element - * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The same data object - */ -function applyStyle(data) { - // any property present in `data.styles` will be applied to the popper, - // in this way we can make the 3rd party modifiers add custom styles to it - // Be aware, modifiers could override the properties defined in the previous - // lines of this modifier! - setStyles(data.instance.popper, data.styles); - - // any property present in `data.attributes` will be applied to the popper, - // they will be set as HTML attributes of the element - setAttributes(data.instance.popper, data.attributes); - - // if arrowElement is defined and arrowStyles has some properties - if (data.arrowElement && Object.keys(data.arrowStyles).length) { - setStyles(data.arrowElement, data.arrowStyles); - } - - return data; -} - -/** - * Set the x-placement attribute before everything else because it could be used - * to add margins to the popper margins needs to be calculated to get the - * correct popper offsets. - * @method - * @memberof Popper.modifiers - * @param {HTMLElement} reference - The reference element used to position the popper - * @param {HTMLElement} popper - The HTML element used as popper - * @param {Object} options - Popper.js options - */ -function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { - // compute reference element offsets - var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); - - // compute auto placement, store placement inside the data object, - // modifiers will be able to edit `placement` if needed - // and refer to originalPlacement to know the original value - var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); - - popper.setAttribute('x-placement', placement); - - // Apply `position` to popper before anything else because - // without the position applied we can't guarantee correct computations - setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); - - return options; -} - -/** - * @function - * @memberof Popper.Utils - * @argument {Object} data - The data object generated by `update` method - * @argument {Boolean} shouldRound - If the offsets should be rounded at all - * @returns {Object} The popper's position offsets rounded - * - * The tale of pixel-perfect positioning. It's still not 100% perfect, but as - * good as it can be within reason. - * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 - * - * Low DPI screens cause a popper to be blurry if not using full pixels (Safari - * as well on High DPI screens). - * - * Firefox prefers no rounding for positioning and does not have blurriness on - * high DPI screens. - * - * Only horizontal placement and left/right values need to be considered. - */ -function getRoundedOffsets(data, shouldRound) { - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - var round = Math.round, - floor = Math.floor; - - var noRound = function noRound(v) { - return v; + const _hoisted_1 = { class: "ui-toolbar__left" }; + const _hoisted_2 = { + key: 0, + class: "ui-toolbar__nav-icon" }; - - var referenceWidth = round(reference.width); - var popperWidth = round(popper.width); - - var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; - var isVariation = data.placement.indexOf('-') !== -1; - var sameWidthParity = referenceWidth % 2 === popperWidth % 2; - var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; - - var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; - var verticalToInteger = !shouldRound ? noRound : round; - - return { - left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), - top: verticalToInteger(popper.top), - bottom: verticalToInteger(popper.bottom), - right: horizontalToInteger(popper.right) + const _hoisted_3 = { + key: 1, + class: "ui-toolbar__brand" }; -} - -var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent); - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function computeStyle(data, options) { - var x = options.x, - y = options.y; - var popper = data.offsets.popper; - - // Remove this legacy support in Popper.js v2 - - var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { - return modifier.name === 'applyStyle'; - }).gpuAcceleration; - if (legacyGpuAccelerationOption !== undefined) { - console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); - } - var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; - - var offsetParent = getOffsetParent(data.instance.popper); - var offsetParentRect = getBoundingClientRect(offsetParent); - - // Styles - var styles = { - position: popper.position + const _hoisted_4 = { class: "ui-toolbar__brand-text" }; + const _hoisted_5 = { + key: 0, + class: "ui-toolbar__title" }; - - var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); - - var sideA = x === 'bottom' ? 'top' : 'bottom'; - var sideB = y === 'right' ? 'left' : 'right'; - - // if gpuAcceleration is set to `true` and transform is supported, - // we use `translate3d` to apply the position to the popper we - // automatically use the supported prefixed version if needed - var prefixedProperty = getSupportedPropertyName('transform'); - - // now, let's make a step back and look at this code closely (wtf?) - // If the content of the popper grows once it's been positioned, it - // may happen that the popper gets misplaced because of the new content - // overflowing its reference element - // To avoid this problem, we provide two options (x and y), which allow - // the consumer to define the offset origin. - // If we position a popper on top of a reference element, we can set - // `x` to `top` to make the popper grow towards its top instead of - // its bottom. - var left = void 0, - top = void 0; - if (sideA === 'bottom') { - // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar) - // and not the bottom of the html element - if (offsetParent.nodeName === 'HTML') { - top = -offsetParent.clientHeight + offsets.bottom; - } else { - top = -offsetParentRect.height + offsets.bottom; - } - } else { - top = offsets.top; - } - if (sideB === 'right') { - if (offsetParent.nodeName === 'HTML') { - left = -offsetParent.clientWidth + offsets.right; - } else { - left = -offsetParentRect.width + offsets.right; - } - } else { - left = offsets.left; - } - if (gpuAcceleration && prefixedProperty) { - styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; - styles[sideA] = 0; - styles[sideB] = 0; - styles.willChange = 'transform'; - } else { - // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties - var invertTop = sideA === 'bottom' ? -1 : 1; - var invertLeft = sideB === 'right' ? -1 : 1; - styles[sideA] = top * invertTop; - styles[sideB] = left * invertLeft; - styles.willChange = sideA + ', ' + sideB; - } - - // Attributes - var attributes = { - 'x-placement': data.placement + const _hoisted_6 = { class: "ui-toolbar__right" }; + function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + const _component_ui_icon_button = vue.resolveComponent("ui-icon-button"); + const _component_ui_progress_linear = vue.resolveComponent("ui-progress-linear"); + return vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["ui-toolbar", $options.classes]) + }, [ + vue.createElementVNode("div", _hoisted_1, [ + !$props.removeNavIcon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [ + vue.renderSlot(_ctx.$slots, "icon", {}, () => [ + vue.createVNode(_component_ui_icon_button, { + size: "large", + type: "secondary", + color: $props.textColor, + icon: $props.navIcon, + onClick: $options.navIconClick + }, null, 8, ["color", "icon", "onClick"]) + ]) + ])) : vue.createCommentVNode("v-if", true), + $props.brand || _ctx.$slots.brand ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [ + vue.renderSlot(_ctx.$slots, "brand", {}, () => [ + vue.createElementVNode("div", _hoisted_4, vue.toDisplayString($props.brand), 1) + ]) + ])) : vue.createCommentVNode("v-if", true) + ]), + vue.createElementVNode("div", { + class: vue.normalizeClass(["ui-toolbar__body", { "has-brand-divider": $options.hasBrandDivider }]) + }, [ + vue.renderSlot(_ctx.$slots, "default", {}, () => [ + $props.title ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, vue.toDisplayString($props.title), 1)) : vue.createCommentVNode("v-if", true) + ]) + ], 2), + vue.createElementVNode("div", _hoisted_6, [ + vue.renderSlot(_ctx.$slots, "actions") + ]), + vue.withDirectives(vue.createVNode(_component_ui_progress_linear, { + class: "ui-toolbar__progress", + color: $options.progressColor + }, null, 8, ["color"]), [ + [vue.vShow, $props.loading] + ]) + ], 2); + } + const UiToolbar = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "C:/code/JosephusPaye/keen-ui-alt/src/UiToolbar.vue"]]); + const KeenUI = { + UiAlert, + UiAutocomplete, + UiButton, + UiCalendar, + UiCheckbox, + UiCheckboxGroup, + UiCloseButton, + UiCollapsible, + UiConfirm, + UiDatepicker, + UiDatepickerCalendar, + UiFab, + UiFileupload, + UiIcon, + UiIconButton, + UiMenu, + UiModal, + UiPopover, + UiPreloader, + UiProgressCircular, + UiProgressLinear, + UiRadio, + UiRadioGroup, + UiRippleInk, + UiSelect, + UiSlider, + UiSnackbar, + UiSnackbarContainer, + UiSwitch, + UiTab, + UiTabs, + UiTextbox, + UiToolbar, + UiTooltip }; - - // Update `data` attributes, styles and arrowStyles - data.attributes = _extends({}, attributes, data.attributes); - data.styles = _extends({}, styles, data.styles); - data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles); - - return data; -} - -/** - * Helper used to know if the given modifier depends from another one.
- * It checks if the needed modifier is listed and enabled. - * @method - * @memberof Popper.Utils - * @param {Array} modifiers - list of modifiers - * @param {String} requestingName - name of requesting modifier - * @param {String} requestedName - name of requested modifier - * @returns {Boolean} - */ -function isModifierRequired(modifiers, requestingName, requestedName) { - var requesting = find(modifiers, function (_ref) { - var name = _ref.name; - return name === requestingName; - }); - - var isRequired = !!requesting && modifiers.some(function (modifier) { - return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; - }); - - if (!isRequired) { - var _requesting = '`' + requestingName + '`'; - var requested = '`' + requestedName + '`'; - console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); - } - return isRequired; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function arrow(data, options) { - var _data$offsets$arrow; - - // arrow depends on keepTogether in order to work - if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { - return data; - } - - var arrowElement = options.element; - - // if arrowElement is a string, suppose it's a CSS selector - if (typeof arrowElement === 'string') { - arrowElement = data.instance.popper.querySelector(arrowElement); - - // if arrowElement is not found, don't run the modifier - if (!arrowElement) { - return data; - } - } else { - // if the arrowElement isn't a query selector we must check that the - // provided DOM node is child of its popper node - if (!data.instance.popper.contains(arrowElement)) { - console.warn('WARNING: `arrow.element` must be child of its popper element!'); - return data; - } - } - - var placement = data.placement.split('-')[0]; - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var isVertical = ['left', 'right'].indexOf(placement) !== -1; - - var len = isVertical ? 'height' : 'width'; - var sideCapitalized = isVertical ? 'Top' : 'Left'; - var side = sideCapitalized.toLowerCase(); - var altSide = isVertical ? 'left' : 'top'; - var opSide = isVertical ? 'bottom' : 'right'; - var arrowElementSize = getOuterSizes(arrowElement)[len]; - - // - // extends keepTogether behavior making sure the popper and its - // reference have enough pixels in conjunction - // - - // top/left side - if (reference[opSide] - arrowElementSize < popper[side]) { - data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); - } - // bottom/right side - if (reference[side] + arrowElementSize > popper[opSide]) { - data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; - } - data.offsets.popper = getClientRect(data.offsets.popper); - - // compute center of the popper - var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; - - // Compute the sideValue using the updated popper offsets - // take popper margin in account because we don't have this info available - var css = getStyleComputedProperty(data.instance.popper); - var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10); - var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10); - var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; - - // prevent arrowElement from being placed not contiguously to its popper - sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); - - data.arrowElement = arrowElement; - data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); - - return data; -} - -/** - * Get the opposite placement variation of the given one - * @method - * @memberof Popper.Utils - * @argument {String} placement variation - * @returns {String} flipped placement variation - */ -function getOppositeVariation(variation) { - if (variation === 'end') { - return 'start'; - } else if (variation === 'start') { - return 'end'; - } - return variation; -} - -/** - * List of accepted placements to use as values of the `placement` option.
- * Valid placements are: - * - `auto` - * - `top` - * - `right` - * - `bottom` - * - `left` - * - * Each placement can have a variation from this list: - * - `-start` - * - `-end` - * - * Variations are interpreted easily if you think of them as the left to right - * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` - * is right.
- * Vertically (`left` and `right`), `start` is top and `end` is bottom. - * - * Some valid examples are: - * - `top-end` (on top of reference, right aligned) - * - `right-start` (on right of reference, top aligned) - * - `bottom` (on bottom, centered) - * - `auto-end` (on the side with more space available, alignment depends by placement) - * - * @static - * @type {Array} - * @enum {String} - * @readonly - * @method placements - * @memberof Popper - */ -var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; - -// Get rid of `auto` `auto-start` and `auto-end` -var validPlacements = placements.slice(3); - -/** - * Given an initial placement, returns all the subsequent placements - * clockwise (or counter-clockwise). - * - * @method - * @memberof Popper.Utils - * @argument {String} placement - A valid placement (it accepts variations) - * @argument {Boolean} counter - Set to true to walk the placements counterclockwise - * @returns {Array} placements including their variations - */ -function clockwise(placement) { - var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var index = validPlacements.indexOf(placement); - var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); - return counter ? arr.reverse() : arr; -} - -var BEHAVIORS = { - FLIP: 'flip', - CLOCKWISE: 'clockwise', - COUNTERCLOCKWISE: 'counterclockwise' -}; - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function flip(data, options) { - // if `inner` modifier is enabled, we can't use the `flip` modifier - if (isModifierEnabled(data.instance.modifiers, 'inner')) { - return data; - } - - if (data.flipped && data.placement === data.originalPlacement) { - // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides - return data; - } - - var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); - - var placement = data.placement.split('-')[0]; - var placementOpposite = getOppositePlacement(placement); - var variation = data.placement.split('-')[1] || ''; - - var flipOrder = []; - - switch (options.behavior) { - case BEHAVIORS.FLIP: - flipOrder = [placement, placementOpposite]; - break; - case BEHAVIORS.CLOCKWISE: - flipOrder = clockwise(placement); - break; - case BEHAVIORS.COUNTERCLOCKWISE: - flipOrder = clockwise(placement, true); - break; - default: - flipOrder = options.behavior; - } - - flipOrder.forEach(function (step, index) { - if (placement !== step || flipOrder.length === index + 1) { - return data; - } - - placement = data.placement.split('-')[0]; - placementOpposite = getOppositePlacement(placement); - - var popperOffsets = data.offsets.popper; - var refOffsets = data.offsets.reference; - - // using floor because the reference offsets may contain decimals we are not going to consider here - var floor = Math.floor; - var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); - - var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); - var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); - var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); - var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); - - var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; - - // flip the variation if required - var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; - var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); - - if (overlapsRef || overflowsBoundaries || flippedVariation) { - // this boolean to detect any flip loop - data.flipped = true; - - if (overlapsRef || overflowsBoundaries) { - placement = flipOrder[index + 1]; - } - - if (flippedVariation) { - variation = getOppositeVariation(variation); - } - - data.placement = placement + (variation ? '-' + variation : ''); - - // this object contains `position`, we want to preserve it along with - // any additional property we may add in the future - data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); - - data = runModifiers(data.instance.modifiers, data, 'flip'); - } - }); - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function keepTogether(data) { - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var placement = data.placement.split('-')[0]; - var floor = Math.floor; - var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; - var side = isVertical ? 'right' : 'bottom'; - var opSide = isVertical ? 'left' : 'top'; - var measurement = isVertical ? 'width' : 'height'; - - if (popper[side] < floor(reference[opSide])) { - data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; - } - if (popper[opSide] > floor(reference[side])) { - data.offsets.popper[opSide] = floor(reference[side]); - } - - return data; -} - -/** - * Converts a string containing value + unit into a px value number - * @function - * @memberof {modifiers~offset} - * @private - * @argument {String} str - Value + unit string - * @argument {String} measurement - `height` or `width` - * @argument {Object} popperOffsets - * @argument {Object} referenceOffsets - * @returns {Number|String} - * Value in pixels, or original string if no values were extracted - */ -function toValue(str, measurement, popperOffsets, referenceOffsets) { - // separate value from unit - var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); - var value = +split[1]; - var unit = split[2]; - - // If it's not a number it's an operator, I guess - if (!value) { - return str; - } - - if (unit.indexOf('%') === 0) { - var element = void 0; - switch (unit) { - case '%p': - element = popperOffsets; - break; - case '%': - case '%r': - default: - element = referenceOffsets; - } - - var rect = getClientRect(element); - return rect[measurement] / 100 * value; - } else if (unit === 'vh' || unit === 'vw') { - // if is a vh or vw, we calculate the size based on the viewport - var size = void 0; - if (unit === 'vh') { - size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); - } else { - size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); - } - return size / 100 * value; - } else { - // if is an explicit pixel unit, we get rid of the unit and keep the value - // if is an implicit unit, it's px, and we return just the value - return value; - } -} - -/** - * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. - * @function - * @memberof {modifiers~offset} - * @private - * @argument {String} offset - * @argument {Object} popperOffsets - * @argument {Object} referenceOffsets - * @argument {String} basePlacement - * @returns {Array} a two cells array with x and y offsets in numbers - */ -function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { - var offsets = [0, 0]; - - // Use height if placement is left or right and index is 0 otherwise use width - // in this way the first offset will use an axis and the second one - // will use the other one - var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; - - // Split the offset string to obtain a list of values and operands - // The regex addresses values with the plus or minus sign in front (+10, -20, etc) - var fragments = offset.split(/(\+|\-)/).map(function (frag) { - return frag.trim(); - }); - - // Detect if the offset string contains a pair of values or a single one - // they could be separated by comma or space - var divider = fragments.indexOf(find(fragments, function (frag) { - return frag.search(/,|\s/) !== -1; - })); - - if (fragments[divider] && fragments[divider].indexOf(',') === -1) { - console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); - } - - // If divider is found, we divide the list of values and operands to divide - // them by ofset X and Y. - var splitRegex = /\s*,\s*|\s+/; - var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; - - // Convert the values with units to absolute pixels to allow our computations - ops = ops.map(function (op, index) { - // Most of the units rely on the orientation of the popper - var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; - var mergeWithPrevious = false; - return op - // This aggregates any `+` or `-` sign that aren't considered operators - // e.g.: 10 + +5 => [10, +, +5] - .reduce(function (a, b) { - if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { - a[a.length - 1] = b; - mergeWithPrevious = true; - return a; - } else if (mergeWithPrevious) { - a[a.length - 1] += b; - mergeWithPrevious = false; - return a; - } else { - return a.concat(b); + function install(app, config = {}) { + Object.keys(config).forEach((key) => { + if (startsWith(key, "Ui")) { + if (KeenUI[key] === void 0) { + return; + } + const Component = KeenUI[key]; + const props = config[key]; + configure(Component, props); } - }, []) - // Here we convert the string values into number values (in px) - .map(function (str) { - return toValue(str, measurement, popperOffsets, referenceOffsets); }); - }); - - // Loop trough the offsets arrays and execute the operations - ops.forEach(function (op, index) { - op.forEach(function (frag, index2) { - if (isNumeric(frag)) { - offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); + Object.keys(KeenUI).forEach((key) => { + if (startsWith(key, "Ui")) { + const Component = KeenUI[key]; + app.component(Component.name, Component); } }); - }); - return offsets; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @argument {Number|String} options.offset=0 - * The offset value as described in the modifier description - * @returns {Object} The data object, properly modified - */ -function offset(data, _ref) { - var offset = _ref.offset; - var placement = data.placement, - _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var basePlacement = placement.split('-')[0]; - - var offsets = void 0; - if (isNumeric(+offset)) { - offsets = [+offset, 0]; - } else { - offsets = parseOffset(offset, popper, reference, basePlacement); - } - - if (basePlacement === 'left') { - popper.top += offsets[0]; - popper.left -= offsets[1]; - } else if (basePlacement === 'right') { - popper.top += offsets[0]; - popper.left += offsets[1]; - } else if (basePlacement === 'top') { - popper.left += offsets[0]; - popper.top -= offsets[1]; - } else if (basePlacement === 'bottom') { - popper.left += offsets[0]; - popper.top += offsets[1]; - } - - data.popper = popper; - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function preventOverflow(data, options) { - var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); - - // If offsetParent is the reference element, we really want to - // go one step up and use the next offsetParent as reference to - // avoid to make this modifier completely useless and look like broken - if (data.instance.reference === boundariesElement) { - boundariesElement = getOffsetParent(boundariesElement); - } - - // NOTE: DOM access here - // resets the popper's position so that the document size can be calculated excluding - // the size of the popper element itself - var transformProp = getSupportedPropertyName('transform'); - var popperStyles = data.instance.popper.style; // assignment to help minification - var top = popperStyles.top, - left = popperStyles.left, - transform = popperStyles[transformProp]; - - popperStyles.top = ''; - popperStyles.left = ''; - popperStyles[transformProp] = ''; - - var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); - - // NOTE: DOM access here - // restores the original style properties after the offsets have been computed - popperStyles.top = top; - popperStyles.left = left; - popperStyles[transformProp] = transform; - - options.boundaries = boundaries; - - var order = options.priority; - var popper = data.offsets.popper; - - var check = { - primary: function primary(placement) { - var value = popper[placement]; - if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { - value = Math.max(popper[placement], boundaries[placement]); - } - return defineProperty({}, placement, value); - }, - secondary: function secondary(placement) { - var mainSide = placement === 'right' ? 'left' : 'top'; - var value = popper[mainSide]; - if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { - value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); - } - return defineProperty({}, mainSide, value); - } - }; - - order.forEach(function (placement) { - var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; - popper = _extends({}, popper, check[side](placement)); - }); - - data.offsets.popper = popper; - - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function shift(data) { - var placement = data.placement; - var basePlacement = placement.split('-')[0]; - var shiftvariation = placement.split('-')[1]; - - // if shift shiftvariation is specified, run the modifier - if (shiftvariation) { - var _data$offsets = data.offsets, - reference = _data$offsets.reference, - popper = _data$offsets.popper; - - var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; - var side = isVertical ? 'left' : 'top'; - var measurement = isVertical ? 'width' : 'height'; - - var shiftOffsets = { - start: defineProperty({}, side, reference[side]), - end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) - }; - - data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]); - } - - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function hide(data) { - if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { - return data; } - - var refRect = data.offsets.reference; - var bound = find(data.instance.modifiers, function (modifier) { - return modifier.name === 'preventOverflow'; - }).boundaries; - - if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { - // Avoid unnecessary DOM access if visibility hasn't changed - if (data.hide === true) { - return data; - } - - data.hide = true; - data.attributes['x-out-of-boundaries'] = ''; - } else { - // Avoid unnecessary DOM access if visibility hasn't changed - if (data.hide === false) { - return data; - } - - data.hide = false; - data.attributes['x-out-of-boundaries'] = false; - } - - return data; -} - -/** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ -function inner(data) { - var placement = data.placement; - var basePlacement = placement.split('-')[0]; - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; - - var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; - - popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); - - data.placement = getOppositePlacement(placement); - data.offsets.popper = getClientRect(popper); - - return data; -} - -/** - * Modifier function, each modifier can have a function of this type assigned - * to its `fn` property.
- * These functions will be called on each update, this means that you must - * make sure they are performant enough to avoid performance bottlenecks. - * - * @function ModifierFn - * @argument {dataObject} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {dataObject} The data object, properly modified - */ - -/** - * Modifiers are plugins used to alter the behavior of your poppers.
- * Popper.js uses a set of 9 modifiers to provide all the basic functionalities - * needed by the library. - * - * Usually you don't want to override the `order`, `fn` and `onLoad` props. - * All the other properties are configurations that could be tweaked. - * @namespace modifiers - */ -var modifiers = { - /** - * Modifier used to shift the popper on the start or end of its reference - * element.
- * It will read the variation of the `placement` property.
- * It can be one either `-end` or `-start`. - * @memberof modifiers - * @inner - */ - shift: { - /** @prop {number} order=100 - Index used to define the order of execution */ - order: 100, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: shift - }, - - /** - * The `offset` modifier can shift your popper on both its axis. - * - * It accepts the following units: - * - `px` or unit-less, interpreted as pixels - * - `%` or `%r`, percentage relative to the length of the reference element - * - `%p`, percentage relative to the length of the popper element - * - `vw`, CSS viewport width unit - * - `vh`, CSS viewport height unit - * - * For length is intended the main axis relative to the placement of the popper.
- * This means that if the placement is `top` or `bottom`, the length will be the - * `width`. In case of `left` or `right`, it will be the `height`. - * - * You can provide a single value (as `Number` or `String`), or a pair of values - * as `String` divided by a comma or one (or more) white spaces.
- * The latter is a deprecated method because it leads to confusion and will be - * removed in v2.
- * Additionally, it accepts additions and subtractions between different units. - * Note that multiplications and divisions aren't supported. - * - * Valid examples are: - * ``` - * 10 - * '10%' - * '10, 10' - * '10%, 10' - * '10 + 10%' - * '10 - 5vh + 3%' - * '-10px + 5vh, 5px - 6%' - * ``` - * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap - * > with their reference element, unfortunately, you will have to disable the `flip` modifier. - * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). - * - * @memberof modifiers - * @inner - */ - offset: { - /** @prop {number} order=200 - Index used to define the order of execution */ - order: 200, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: offset, - /** @prop {Number|String} offset=0 - * The offset value as described in the modifier description - */ - offset: 0 - }, - - /** - * Modifier used to prevent the popper from being positioned outside the boundary. - * - * A scenario exists where the reference itself is not within the boundaries.
- * We can say it has "escaped the boundaries" — or just "escaped".
- * In this case we need to decide whether the popper should either: - * - * - detach from the reference and remain "trapped" in the boundaries, or - * - if it should ignore the boundary and "escape with its reference" - * - * When `escapeWithReference` is set to`true` and reference is completely - * outside its boundaries, the popper will overflow (or completely leave) - * the boundaries in order to remain attached to the edge of the reference. - * - * @memberof modifiers - * @inner - */ - preventOverflow: { - /** @prop {number} order=300 - Index used to define the order of execution */ - order: 300, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: preventOverflow, - /** - * @prop {Array} [priority=['left','right','top','bottom']] - * Popper will try to prevent overflow following these priorities by default, - * then, it could overflow on the left and on top of the `boundariesElement` - */ - priority: ['left', 'right', 'top', 'bottom'], - /** - * @prop {number} padding=5 - * Amount of pixel used to define a minimum distance between the boundaries - * and the popper. This makes sure the popper always has a little padding - * between the edges of its container - */ - padding: 5, - /** - * @prop {String|HTMLElement} boundariesElement='scrollParent' - * Boundaries used by the modifier. Can be `scrollParent`, `window`, - * `viewport` or any DOM element. - */ - boundariesElement: 'scrollParent' - }, - - /** - * Modifier used to make sure the reference and its popper stay near each other - * without leaving any gap between the two. Especially useful when the arrow is - * enabled and you want to ensure that it points to its reference element. - * It cares only about the first axis. You can still have poppers with margin - * between the popper and its reference element. - * @memberof modifiers - * @inner - */ - keepTogether: { - /** @prop {number} order=400 - Index used to define the order of execution */ - order: 400, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: keepTogether - }, - - /** - * This modifier is used to move the `arrowElement` of the popper to make - * sure it is positioned between the reference element and its popper element. - * It will read the outer size of the `arrowElement` node to detect how many - * pixels of conjunction are needed. - * - * It has no effect if no `arrowElement` is provided. - * @memberof modifiers - * @inner - */ - arrow: { - /** @prop {number} order=500 - Index used to define the order of execution */ - order: 500, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: arrow, - /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ - element: '[x-arrow]' - }, - - /** - * Modifier used to flip the popper's placement when it starts to overlap its - * reference element. - * - * Requires the `preventOverflow` modifier before it in order to work. - * - * **NOTE:** this modifier will interrupt the current update cycle and will - * restart it if it detects the need to flip the placement. - * @memberof modifiers - * @inner - */ - flip: { - /** @prop {number} order=600 - Index used to define the order of execution */ - order: 600, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: flip, - /** - * @prop {String|Array} behavior='flip' - * The behavior used to change the popper's placement. It can be one of - * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid - * placements (with optional variations) - */ - behavior: 'flip', - /** - * @prop {number} padding=5 - * The popper will flip if it hits the edges of the `boundariesElement` - */ - padding: 5, - /** - * @prop {String|HTMLElement} boundariesElement='viewport' - * The element which will define the boundaries of the popper position. - * The popper will never be placed outside of the defined boundaries - * (except if `keepTogether` is enabled) - */ - boundariesElement: 'viewport' - }, - - /** - * Modifier used to make the popper flow toward the inner of the reference element. - * By default, when this modifier is disabled, the popper will be placed outside - * the reference element. - * @memberof modifiers - * @inner - */ - inner: { - /** @prop {number} order=700 - Index used to define the order of execution */ - order: 700, - /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ - enabled: false, - /** @prop {ModifierFn} */ - fn: inner - }, - - /** - * Modifier used to hide the popper when its reference element is outside of the - * popper boundaries. It will set a `x-out-of-boundaries` attribute which can - * be used to hide with a CSS selector the popper when its reference is - * out of boundaries. - * - * Requires the `preventOverflow` modifier before it in order to work. - * @memberof modifiers - * @inner - */ - hide: { - /** @prop {number} order=800 - Index used to define the order of execution */ - order: 800, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: hide - }, - - /** - * Computes the style that will be applied to the popper element to gets - * properly positioned. - * - * Note that this modifier will not touch the DOM, it just prepares the styles - * so that `applyStyle` modifier can apply it. This separation is useful - * in case you need to replace `applyStyle` with a custom implementation. - * - * This modifier has `850` as `order` value to maintain backward compatibility - * with previous versions of Popper.js. Expect the modifiers ordering method - * to change in future major versions of the library. - * - * @memberof modifiers - * @inner - */ - computeStyle: { - /** @prop {number} order=850 - Index used to define the order of execution */ - order: 850, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: computeStyle, - /** - * @prop {Boolean} gpuAcceleration=true - * If true, it uses the CSS 3D transformation to position the popper. - * Otherwise, it will use the `top` and `left` properties - */ - gpuAcceleration: true, - /** - * @prop {string} [x='bottom'] - * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. - * Change this if your popper should grow in a direction different from `bottom` - */ - x: 'bottom', - /** - * @prop {string} [x='left'] - * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. - * Change this if your popper should grow in a direction different from `right` - */ - y: 'right' - }, - - /** - * Applies the computed styles to the popper element. - * - * All the DOM manipulations are limited to this modifier. This is useful in case - * you want to integrate Popper.js inside a framework or view library and you - * want to delegate all the DOM manipulations to it. - * - * Note that if you disable this modifier, you must make sure the popper element - * has its position set to `absolute` before Popper.js can do its work! - * - * Just disable this modifier and define your own to achieve the desired effect. - * - * @memberof modifiers - * @inner - */ - applyStyle: { - /** @prop {number} order=900 - Index used to define the order of execution */ - order: 900, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: applyStyle, - /** @prop {Function} */ - onLoad: applyStyleOnLoad, - /** - * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier - * @prop {Boolean} gpuAcceleration=true - * If true, it uses the CSS 3D transformation to position the popper. - * Otherwise, it will use the `top` and `left` properties - */ - gpuAcceleration: undefined - } -}; - -/** - * The `dataObject` is an object containing all the information used by Popper.js. - * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. - * @name dataObject - * @property {Object} data.instance The Popper.js instance - * @property {String} data.placement Placement applied to popper - * @property {String} data.originalPlacement Placement originally defined on init - * @property {Boolean} data.flipped True if popper has been flipped by flip modifier - * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper - * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier - * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) - * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) - * @property {Object} data.boundaries Offsets of the popper boundaries - * @property {Object} data.offsets The measurements of popper, reference and arrow elements - * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values - * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values - * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 - */ - -/** - * Default options provided to Popper.js constructor.
- * These can be overridden using the `options` argument of Popper.js.
- * To override an option, simply pass an object with the same - * structure of the `options` object, as the 3rd argument. For example: - * ``` - * new Popper(ref, pop, { - * modifiers: { - * preventOverflow: { enabled: false } - * } - * }) - * ``` - * @type {Object} - * @static - * @memberof Popper - */ -var Defaults = { - /** - * Popper's placement. - * @prop {Popper.placements} placement='bottom' - */ - placement: 'bottom', - - /** - * Set this to true if you want popper to position it self in 'fixed' mode - * @prop {Boolean} positionFixed=false - */ - positionFixed: false, - - /** - * Whether events (resize, scroll) are initially enabled. - * @prop {Boolean} eventsEnabled=true - */ - eventsEnabled: true, - - /** - * Set to true if you want to automatically remove the popper when - * you call the `destroy` method. - * @prop {Boolean} removeOnDestroy=false - */ - removeOnDestroy: false, - - /** - * Callback called when the popper is created.
- * By default, it is set to no-op.
- * Access Popper.js instance with `data.instance`. - * @prop {onCreate} - */ - onCreate: function onCreate() {}, - - /** - * Callback called when the popper is updated. This callback is not called - * on the initialization/creation of the popper, but only on subsequent - * updates.
- * By default, it is set to no-op.
- * Access Popper.js instance with `data.instance`. - * @prop {onUpdate} - */ - onUpdate: function onUpdate() {}, - - /** - * List of modifiers used to modify the offsets before they are applied to the popper. - * They provide most of the functionalities of Popper.js. - * @prop {modifiers} - */ - modifiers: modifiers -}; - -/** - * @callback onCreate - * @param {dataObject} data - */ - -/** - * @callback onUpdate - * @param {dataObject} data - */ - -// Utils -// Methods -var Popper = function () { - /** - * Creates a new Popper.js instance. - * @class Popper - * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper - * @param {HTMLElement} popper - The HTML element used as the popper - * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) - * @return {Object} instance - The generated Popper.js instance - */ - function Popper(reference, popper) { - var _this = this; - - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - classCallCheck(this, Popper); - - this.scheduleUpdate = function () { - return requestAnimationFrame(_this.update); - }; - - // make update() debounced, so that it only runs at most once-per-tick - this.update = debounce(this.update.bind(this)); - - // with {} we create a new object with the options inside it - this.options = _extends({}, Popper.Defaults, options); - - // init state - this.state = { - isDestroyed: false, - isCreated: false, - scrollParents: [] - }; - - // get reference and popper elements (allow jQuery wrappers) - this.reference = reference && reference.jquery ? reference[0] : reference; - this.popper = popper && popper.jquery ? popper[0] : popper; - - // Deep merge modifiers options - this.options.modifiers = {}; - Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { - _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); - }); - - // Refactoring modifiers' list (Object => Array) - this.modifiers = Object.keys(this.options.modifiers).map(function (name) { - return _extends({ - name: name - }, _this.options.modifiers[name]); - }) - // sort the modifiers by order - .sort(function (a, b) { - return a.order - b.order; - }); - - // modifiers have the ability to execute arbitrary code when Popper.js get inited - // such code is executed in the same order of its modifier - // they could add new properties to their options configuration - // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! - this.modifiers.forEach(function (modifierOptions) { - if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { - modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); - } - }); - - // fire the first update to position the popper in the right place - this.update(); - - var eventsEnabled = this.options.eventsEnabled; - if (eventsEnabled) { - // setup event listeners, they will take care of update the position in specific situations - this.enableEventListeners(); - } - - this.state.eventsEnabled = eventsEnabled; - } - - // We can't use class properties because they don't get listed in the - // class prototype and break stuff like Sinon stubs - - - createClass(Popper, [{ - key: 'update', - value: function update$$1() { - return update.call(this); - } - }, { - key: 'destroy', - value: function destroy$$1() { - return destroy.call(this); - } - }, { - key: 'enableEventListeners', - value: function enableEventListeners$$1() { - return enableEventListeners.call(this); - } - }, { - key: 'disableEventListeners', - value: function disableEventListeners$$1() { - return disableEventListeners.call(this); - } - - /** - * Schedules an update. It will run on the next UI update available. - * @method scheduleUpdate - * @memberof Popper - */ - - - /** - * Collection of utilities useful when writing custom modifiers. - * Starting from version 1.7, this method is available only if you - * include `popper-utils.js` before `popper.js`. - * - * **DEPRECATION**: This way to access PopperUtils is deprecated - * and will be removed in v2! Use the PopperUtils module directly instead. - * Due to the high instability of the methods contained in Utils, we can't - * guarantee them to follow semver. Use them at your own risk! - * @static - * @private - * @type {Object} - * @deprecated since version 1.8 - * @member Utils - * @memberof Popper - */ - - }]); - return Popper; -}(); - -/** - * The `referenceObject` is an object that provides an interface compatible with Popper.js - * and lets you use it as replacement of a real DOM node.
- * You can use this method to position a popper relatively to a set of coordinates - * in case you don't have a DOM node to use as reference. - * - * ``` - * new Popper(referenceObject, popperNode); - * ``` - * - * NB: This feature isn't supported in Internet Explorer 10. - * @name referenceObject - * @property {Function} data.getBoundingClientRect - * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. - * @property {number} data.clientWidth - * An ES6 getter that will return the width of the virtual reference element. - * @property {number} data.clientHeight - * An ES6 getter that will return the height of the virtual reference element. - */ - - -Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; -Popper.placements = placements; -Popper.Defaults = Defaults; - -/* harmony default export */ __webpack_exports__["a"] = Popper; -//# sourceMappingURL=popper.js.map - -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(187))) - -/***/ }), -/* 140 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiAutocompleteSuggestion_vue__ = __webpack_require__(54); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2ff3038a_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiAutocompleteSuggestion_vue__ = __webpack_require__(152); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(104) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiAutocompleteSuggestion_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2ff3038a_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiAutocompleteSuggestion_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiAutocompleteSuggestion.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiAutocompleteSuggestion.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-2ff3038a", Component.options) - } else { - hotAPI.reload("data-v-2ff3038a", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 141 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCalendarWeek_vue__ = __webpack_require__(59); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3c0bb760_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCalendarWeek_vue__ = __webpack_require__(156); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(108) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiCalendarWeek_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3c0bb760_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiCalendarWeek_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiCalendarWeek.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiCalendarWeek.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-3c0bb760", Component.options) - } else { - hotAPI.reload("data-v-3c0bb760", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 142 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiMenuOption_vue__ = __webpack_require__(73); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5cb20b32_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiMenuOption_vue__ = __webpack_require__(164); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(116) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiMenuOption_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5cb20b32_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiMenuOption_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiMenuOption.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiMenuOption.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-5cb20b32", Component.options) - } else { - hotAPI.reload("data-v-5cb20b32", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 143 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSelectOption_vue__ = __webpack_require__(83); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a05cade2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSelectOption_vue__ = __webpack_require__(180); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(132) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiSelectOption_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a05cade2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiSelectOption_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiSelectOption.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiSelectOption.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-a05cade2", Component.options) - } else { - hotAPI.reload("data-v-a05cade2", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 144 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTabHeaderItem_vue__ = __webpack_require__(89); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_535cc9b2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTabHeaderItem_vue__ = __webpack_require__(161); -var disposed = false -function injectStyle (ssrContext) { - if (disposed) return - __webpack_require__(113) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - -/* template */ - -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_UiTabHeaderItem_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_535cc9b2_hasScoped_false_node_modules_vue_loader_lib_selector_type_template_index_0_UiTabHeaderItem_vue__["a" /* default */], - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) -Component.options.__file = "src\\UiTabHeaderItem.vue" -if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] UiTabHeaderItem.vue: functional components are not supported with templates, they should use render functions.")} - -/* hot reload */ -if (false) {(function () { - var hotAPI = require("vue-hot-reload-api") - hotAPI.install(require("vue"), false) - if (!hotAPI.compatible) return - module.hot.accept() - if (!module.hot.data) { - hotAPI.createRecord("data-v-535cc9b2", Component.options) - } else { - hotAPI.reload("data-v-535cc9b2", Component.options) - } - module.hot.dispose(function (data) { - disposed = true - }) -})()} - -/* harmony default export */ __webpack_exports__["a"] = Component.exports; - - -/***/ }), -/* 145 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-radio-group", - class: _vm.classes - }, [(_vm.label || _vm.$slots.default) ? _c('div', { - staticClass: "ui-radio-group__label-text" - }, [_vm._t("default", [_vm._v(_vm._s(_vm.label))])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-radio-group__radios" - }, _vm._l((_vm.options), function(option) { - return _c('ui-radio', { - key: option[_vm.keys.id], - staticClass: "ui-radio-group__radio", - class: option[_vm.keys.class], - attrs: { - "button-position": _vm.buttonPosition, - "checked": _vm.isOptionCheckedByDefault(option), - "color": _vm.color, - "disabled": _vm.disabled || option[_vm.keys.disabled], - "id": option[_vm.keys.id], - "name": _vm.name, - "tabindex": _vm.tabindex, - "true-value": _vm.getTrueValue(option) - }, - on: { - "blur": _vm.onBlur, - "focus": _vm.onFocus - }, - model: { - value: (_vm.selectedOptionValue), - callback: function($$v) { - _vm.selectedOptionValue = $$v - }, - expression: "selectedOptionValue" - } - }, [_vm._v(_vm._s(option[_vm.keys.label] || option))]) - }), 1), _vm._v(" "), (_vm.hasFeedback) ? _c('div', { - staticClass: "ui-radio-group__feedback" - }, [(_vm.showError) ? _c('div', { - staticClass: "ui-radio-group__feedback-text" - }, [_vm._t("error", [_vm._v(_vm._s(_vm.error))])], 2) : (_vm.showHelp) ? _c('div', { - staticClass: "ui-radio-group__feedback-text" - }, [_vm._t("help", [_vm._v(_vm._s(_vm.help))])], 2) : _vm._e()]) : _vm._e()]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-0686b3c2", esExports) - } -} - -/***/ }), -/* 146 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-slider", - class: _vm.classes, - attrs: { - "role": "slider", - "aria-valuemax": _vm.moderatedMax, - "aria-valuemin": _vm.moderatedMin, - "aria-valuenow": _vm.localValue, - "tabindex": _vm.disabled ? null : (_vm.tabindex || '0') - }, - on: { - "blur": _vm.onBlur, - "focus": _vm.onFocus, - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "down", 40, $event.key, ["Down", "ArrowDown"])) { return null; } - $event.preventDefault(); - return _vm.decrementValue($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "left", 37, $event.key, ["Left", "ArrowLeft"])) { return null; } - if ('button' in $event && $event.button !== 0) { return null; } - $event.preventDefault(); - return _vm.decrementValue($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "right", 39, $event.key, ["Right", "ArrowRight"])) { return null; } - if ('button' in $event && $event.button !== 2) { return null; } - $event.preventDefault(); - return _vm.incrementValue($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "up", 38, $event.key, ["Up", "ArrowUp"])) { return null; } - $event.preventDefault(); - return _vm.incrementValue($event) - }] - } - }, [(_vm.name) ? _c('input', { - staticClass: "ui-slider__hidden-input", - attrs: { - "type": "hidden", - "name": _vm.name - }, - domProps: { - "value": _vm.value - } - }) : _vm._e(), _vm._v(" "), (_vm.hasIcon) ? _c('div', { - staticClass: "ui-slider__icon" - }, [_vm._t("icon", [_c('ui-icon', { - attrs: { - "icon": _vm.icon - } - })])], 2) : _vm._e(), _vm._v(" "), _c('div', { - ref: "track", - staticClass: "ui-slider__track", - on: { - "mousedown": _vm.onDragStart, - "touchstart": _vm.onDragStart - } - }, [_c('div', { - staticClass: "ui-slider__track-background" - }, _vm._l((_vm.snapPoints), function(point) { - return (_vm.snapToSteps) ? _c('span', { - staticClass: "ui-slider__snap-point", - style: ({ - left: 100 * _vm.relativeValue(point) + '%' - }) - }) : _vm._e() - }), 0), _vm._v(" "), _c('div', { - staticClass: "ui-slider__track-fill", - style: (_vm.fillStyle) - }), _vm._v(" "), _c('div', { - ref: "thumb", - staticClass: "ui-slider__thumb", - style: (_vm.thumbStyle) - }, [(_vm.showMarker) ? _c('div', { - staticClass: "ui-slider__marker" - }, [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "viewBox": "0 0 24 24", - "width": "36", - "height": "36" - } - }, [_c('path', { - attrs: { - "d": "M11 .5c-1.7.2-3.4.9-4.7 2-1.1.9-2 2-2.5 3.2-1.2 2.4-1.2 5.1-.1 7.7 1.1 2.6 2.8 5 5.3 7.5 1.2 1.2 2.8 2.7 3 2.7 0 0 .3-.2.6-.5 3.2-2.7 5.6-5.6 7.1-8.5.8-1.5 1.1-2.6 1.3-3.8.2-1.4 0-2.9-.5-4.3-1.2-3.2-4.1-5.4-7.5-5.8-.5-.2-1.5-.2-2-.2z" - } - })]), _vm._v(" "), _c('span', { - staticClass: "ui-slider__marker-text" - }, [_vm._v(_vm._s(_vm.markerText))])]) : _vm._e()])])]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-0d1a7c42", esExports) - } -} - -/***/ }), -/* 147 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('transition', { - attrs: { - "name": _vm.disableAnimation ? null : 'ui-alert--transition-toggle' - } - }, [_c('div', { - staticClass: "ui-alert", - class: _vm.classes, - attrs: { - "role": "alert" - } - }, [_c('div', { - staticClass: "ui-alert__body" - }, [(!_vm.removeIcon) ? _c('div', { - staticClass: "ui-alert__icon" - }, [_vm._t("icon", [(_vm.type === 'info') ? _c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M12.984 9V6.984h-1.97V9h1.97zm0 8.016v-6h-1.97v6h1.97zm-.984-15c5.53 0 9.984 4.453 9.984 9.984S17.53 21.984 12 21.984 2.016 17.53 2.016 12 6.47 2.016 12 2.016z" - } - })])]) : _vm._e(), _vm._v(" "), (_vm.type === 'success') ? _c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M9.984 17.016l9-9-1.406-1.453-7.594 7.594-3.563-3.563L5.016 12zm2.016-15c5.53 0 9.984 4.453 9.984 9.984S17.53 21.984 12 21.984 2.016 17.53 2.016 12 6.47 2.016 12 2.016z" - } - })])]) : _vm._e(), _vm._v(" "), (_vm.type === 'warning') ? _c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M12.984 14.016v-4.03h-1.97v4.03h1.97zm0 3.984v-2.016h-1.97V18h1.97zm-12 3L12 2.016 23.016 21H.986z" - } - })])]) : _vm._e(), _vm._v(" "), (_vm.type === 'error') ? _c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M12.984 12.984v-6h-1.97v6h1.97zm0 4.032V15h-1.97v2.016h1.97zm-.984-15c5.53 0 9.984 4.453 9.984 9.984S17.53 21.984 12 21.984 2.016 17.53 2.016 12 6.47 2.016 12 2.016z" - } - })])]) : _vm._e()])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-alert__content" - }, [_vm._t("default")], 2), _vm._v(" "), _c('div', { - staticClass: "ui-alert__dismiss-button" - }, [(_vm.dismissible) ? _c('ui-close-button', { - attrs: { - "size": "small" - }, - on: { - "click": _vm.dismissAlert - } - }) : _vm._e()], 1)])])]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-0dfa6b64", esExports) - } -} - -/***/ }), -/* 148 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-snackbar-container", - class: _vm.classes - }, _vm._l((_vm.queue), function(snackbar, index) { - return _c('ui-snackbar', { - directives: [{ - name: "show", - rawName: "v-show", - value: (snackbar.show), - expression: "snackbar.show" - }], - key: index, - attrs: { - "action-color": snackbar.actionColor, - "action": snackbar.action, - "message": snackbar.message, - "transition": _vm.transition - }, - on: { - "action-click": function($event) { - _vm.onActionClick(snackbar) - }, - "click": function($event) { - _vm.onClick(snackbar) - }, - "hide": function($event) { - _vm.onHide(snackbar, index) - }, - "show": function($event) { - _vm.onShow(snackbar) - } - } - }, [(_vm.allowHtml) ? _c('div', { - domProps: { - "innerHTML": _vm._s(snackbar.message) - } - }) : _vm._e()]) - }), 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-0e0792ee", esExports) - } -} - -/***/ }), -/* 149 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-calendar", - class: _vm.classes - }, [_c('ui-calendar-controls', { - ref: "controls", - staticClass: "ui-calendar__header", - attrs: { - "color": _vm.color, - "date-in-view": _vm.dateInView, - "lang": _vm.lang, - "max-date": _vm.maxDate, - "min-date": _vm.minDate, - "year-range": _vm.yearRange - }, - on: { - "go-to-date": _vm.goToDate - } - }), _vm._v(" "), _c('div', { - staticClass: "ui-calendar__body" - }, [_c('ui-calendar-month', { - ref: "month", - attrs: { - "color": _vm.color, - "date-in-view": _vm.dateInView, - "lang": _vm.lang, - "selected": _vm.value, - "start-of-week": _vm.startOfWeek, - "square-cells": _vm.squareCells - }, - on: { - "change": _vm.onMonthChange, - "date-select": _vm.onDateSelect - }, - scopedSlots: _vm._u([{ - key: "date", - fn: function(props) { - return [(_vm.$scopedSlots.date) ? _vm._t("date", null, { - date: props.date - }) : [_vm._v(_vm._s(props.date.getDate()))]] - } - }]) - })], 1)], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-10feac3c", esExports) - } -} - -/***/ }), -/* 150 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('label', { - staticClass: "ui-radio", - class: _vm.classes, - on: { - "click": _vm.toggleCheck - } - }, [_c('div', { - staticClass: "ui-radio__input-wrapper" - }, [_c('input', { - ref: "input", - staticClass: "ui-radio__input", - attrs: { - "type": "radio", - "disabled": _vm.disabled, - "name": _vm.name, - "tabindex": _vm.tabindex - }, - domProps: { - "checked": _vm.checked, - "value": _vm.trueValue - }, - on: { - "blur": _vm.onBlur, - "change": _vm.onChange, - "focus": _vm.onFocus - } - }), _vm._v(" "), _c('div', { - staticClass: "ui-radio__focus-ring" - }), _vm._v(" "), _c('span', { - staticClass: "ui-radio__outer-circle" - }), _vm._v(" "), _c('span', { - staticClass: "ui-radio__inner-circle" - })]), _vm._v(" "), (_vm.label || _vm.$slots.default) ? _c('div', { - staticClass: "ui-radio__label-text" - }, [_vm._t("default", [_vm._v(_vm._s(_vm.label))])], 2) : _vm._e()]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-1658ed6d", esExports) - } -} - -/***/ }), -/* 151 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('transition', { - attrs: { - "name": "ui-progress-linear--transition-fade" - } - }, [_c('div', { - staticClass: "ui-progress-linear", - class: _vm.classes - }, [(_vm.type === 'determinate') ? _c('div', { - staticClass: "ui-progress-linear__progress-bar is-determinate", - style: ({ - 'transform': ("scaleX(" + (_vm.moderatedProgress / 100) + ")") - }), - attrs: { - "role": "progressbar", - "aria-valuemax": 100, - "aria-valuemin": 0, - "aria-valuenow": _vm.moderatedProgress - } - }) : _c('div', { - staticClass: "ui-progress-linear__progress-bar is-indeterminate", - attrs: { - "role": "progressbar", - "aria-valuemax": 100, - "aria-valuemin": 0 - } - })])]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-22995a30", esExports) - } -} - -/***/ }), -/* 152 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('li', { - staticClass: "ui-autocomplete-suggestion", - class: _vm.classes - }, [_vm._t("default", [(_vm.type === 'simple') ? _c('div', { - staticClass: "ui-autocomplete-suggestion__simple" - }, [_vm._v("\n " + _vm._s(_vm.suggestion[_vm.keys.label] || _vm.suggestion) + "\n ")]) : _vm._e(), _vm._v(" "), (_vm.type === 'image') ? _c('div', { - staticClass: "ui-autocomplete-suggestion__image" - }, [_c('div', { - staticClass: "ui-autocomplete-suggestion__image-object", - style: (_vm.imageStyle) - }), _vm._v(" "), _c('div', { - staticClass: "ui-autocomplete-suggestion__image-text" - }, [_vm._v(_vm._s(_vm.suggestion[_vm.keys.label]))])]) : _vm._e()])], 2) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-2ff3038a", esExports) - } -} - -/***/ }), -/* 153 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-tabs", - class: _vm.classes - }, [_c('div', { - staticClass: "ui-tabs__header" - }, [_c('ul', { - staticClass: "ui-tabs__header-items", - attrs: { - "role": "tablist" - } - }, _vm._l((_vm.tabs), function(tab) { - return _c('ui-tab-header-item', { - key: tab.id, - ref: "tabHeaders", - refInFor: true, - attrs: { - "active": _vm.activeTabId === tab.id, - "disable-ripple": _vm.disableRipple, - "disabled": tab.disabled, - "id": tab.id, - "title": tab.title, - "type": _vm.type - }, - nativeOn: { - "click": function($event) { - _vm.onTabClick(tab, $event) - }, - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "left", 37, $event.key, ["Left", "ArrowLeft"])) { return null; } - if ('button' in $event && $event.button !== 0) { return null; } - return _vm.selectPreviousTab($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "right", 39, $event.key, ["Right", "ArrowRight"])) { return null; } - if ('button' in $event && $event.button !== 2) { return null; } - return _vm.selectNextTab($event) - }] - } - }, [(tab.$slots.header) ? _c('render', { - attrs: { - "nodes": tab.$slots.header - } - }) : (_vm.hasIcon && Boolean(tab.$slots.icon)) ? _c('render', { - attrs: { - "slot": "icon", - "nodes": tab.$slots.icon - }, - slot: "icon" - }) : _vm._e()], 1) - }), 1)]), _vm._v(" "), _c('div', { - staticClass: "ui-tabs__body" - }, [_vm._t("default")], 2)]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-309a677c", esExports) - } -} - -/***/ }), -/* 154 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-preloader", - class: { - 'is-loading': _vm.show - } - }, [_c('div', { - staticClass: "ui-preloader__progressbar", - attrs: { - "role": "progressbar", - "aria-busy": _vm.show ? 'true' : false - } - })]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-32cd8368", esExports) - } -} - -/***/ }), -/* 155 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('span', { - staticClass: "ui-icon", - class: [_vm.iconSet, _vm.icon], - attrs: { - "aria-label": _vm.ariaLabel - } - }, [(_vm.useSvg) ? _c('svg', { - staticClass: "ui-icon__svg" - }, [_c('use', { - attrs: { - "xmlns:xlink": "http://www.w3.org/1999/xlink", - "xlink:href": '#' + _vm.icon - } - })]) : _vm._t("default", [_vm._v(_vm._s(_vm.removeText ? null : _vm.icon))])], 2) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-39a27af7", esExports) - } -} - -/***/ }), -/* 156 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('tr', { - staticClass: "ui-calendar-week", - class: _vm.classes - }, _vm._l((_vm.dates), function(date) { - return _c('td', { - key: date.toString() - }, [_c('button', { - staticClass: "ui-calendar-week__date", - class: _vm.getDateClasses(date), - attrs: { - "disabled": _vm.isDateDisabled(date) - }, - on: { - "click": function($event) { - _vm.selectDate(date) - } - } - }, [_vm._t("default", [_vm._v(_vm._s(date.getDate()))], { - date: date - })], 2)]) - }), 0) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-3c0bb760", esExports) - } -} - -/***/ }), -/* 157 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('ui-focus-container', { - ref: "focusContainer", - staticClass: "ui-menu", - class: _vm.classes, - attrs: { - "role": "menu", - "tag": "ul", - "lazy": "", - "contain-focus": _vm.containFocus - } - }, _vm._l((_vm.options), function(option, index) { - return _c('ui-menu-option', { - key: index, - attrs: { - "disable-ripple": _vm.disableRipple, - "disabled": option[_vm.keys.disabled], - "href": option[_vm.keys.href], - "icon-props": _vm.iconProps || option[_vm.keys.iconProps], - "icon": _vm.hasIcons ? option[_vm.keys.icon] : null, - "label": option[_vm.keys.type] === 'divider' ? null : option[_vm.keys.label] || option, - "secondary-text": _vm.hasSecondaryText ? option[_vm.keys.secondaryText] : null, - "target": option[_vm.keys.target], - "type": option[_vm.keys.type] - }, - nativeOn: { - "click": function($event) { - _vm.selectOption(option) - }, - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - _vm.selectOption(option) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "esc", 27, $event.key, ["Esc", "Escape"])) { return null; } - return _vm.closeMenu($event) - }] - } - }, [_vm._t("option", null, { - option: option - })], 2) - }), 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-41a170dd", esExports) - } -} - -/***/ }), -/* 158 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('ui-focus-container', { - ref: "focusContainer", - staticClass: "ui-popover", - class: { - 'is-raised': _vm.raised - }, - attrs: { - "role": "dialog", - "contain-focus": _vm.containFocus, - "focus-redirector": _vm.focusRedirector - }, - on: { - "focus-overflow": function($event) { - _vm.close() - } - } - }, [_vm._t("default")], 2) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-48582497", esExports) - } -} - -/***/ }), -/* 159 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('button', { - staticClass: "ui-fab", - class: _vm.classes, - attrs: { - "aria-label": _vm.ariaLabel || _vm.tooltip - }, - on: { - "click": _vm.onClick - } - }, [(_vm.icon || _vm.$slots.default) ? _c('div', { - staticClass: "ui-fab__icon" - }, [_vm._t("default", [_c('ui-icon', { - attrs: { - "icon": _vm.icon - } - })])], 2) : _vm._e(), _vm._v(" "), _c('span', { - staticClass: "ui-fab__focus-ring" - }), _vm._v(" "), (!_vm.disableRipple) ? _c('ui-ripple-ink') : _vm._e(), _vm._v(" "), (_vm.tooltip) ? _c('ui-tooltip', { - attrs: { - "open-on": _vm.openTooltipOn, - "position": _vm.tooltipPosition - } - }, [_vm._v(_vm._s(_vm.tooltip))]) : _vm._e()], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-4a69660e", esExports) - } -} - -/***/ }), -/* 160 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('ui-modal', { - ref: "modal", - staticClass: "ui-confirm", - attrs: { - "role": "alertdialog", - "dismiss-on": _vm.dismissOn, - "dismissible": !_vm.loading, - "title": _vm.title, - "transition": _vm.transition, - "size": _vm.size - }, - on: { - "close": _vm.onModalClose, - "hide": _vm.onModalHide, - "open": _vm.onModalOpen, - "reveal": _vm.onModalReveal - } - }, [_c('div', { - staticClass: "ui-confirm__message" - }, [_vm._t("default")], 2), _vm._v(" "), _c('div', { - staticClass: "ui-confirm__footer", - attrs: { - "slot": "footer" - }, - slot: "footer" - }, [_c('ui-button', { - ref: "confirmButton", - attrs: { - "color": _vm.confirmButtonColor, - "icon": _vm.confirmButtonIcon, - "loading": _vm.loading - }, - on: { - "click": _vm.confirm - } - }, [_vm._v(_vm._s(_vm.confirmButtonText))]), _vm._v(" "), _c('ui-button', { - ref: "denyButton", - attrs: { - "disabled": _vm.loading, - "icon": _vm.denyButtonIcon - }, - on: { - "click": _vm.deny - } - }, [_vm._v(_vm._s(_vm.denyButtonText))])], 1)]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-4f7f2732", esExports) - } -} - -/***/ }), -/* 161 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('li', { - staticClass: "ui-tab-header-item", - class: _vm.classes, - attrs: { - "role": "tab", - "aria-controls": _vm.id, - "aria-selected": _vm.active ? 'true' : null, - "disabled": _vm.disabled, - "tabindex": _vm.active ? 0 : -1 - } - }, [_vm._t("default", [(_vm.hasIcon) ? _c('div', { - staticClass: "ui-tab-header-item__icon" - }, [_vm._t("icon")], 2) : _vm._e(), _vm._v(" "), (_vm.hasText) ? _c('div', { - staticClass: "ui-tab-header-item__text" - }, [_vm._v(_vm._s(_vm.title))]) : _vm._e()]), _vm._v(" "), (!_vm.disableRipple && !_vm.disabled) ? _c('ui-ripple-ink') : _vm._e()], 2) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-535cc9b2", esExports) - } -} - -/***/ }), -/* 162 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-select", - class: _vm.classes - }, [(_vm.name) ? _c('input', { - staticClass: "ui-select__hidden-input", - attrs: { - "type": "hidden", - "name": _vm.name - }, - domProps: { - "value": _vm.submittedValue - } - }) : _vm._e(), _vm._v(" "), (_vm.icon || _vm.$slots.icon) ? _c('div', { - staticClass: "ui-select__icon-wrapper" - }, [_vm._t("icon", [_c('ui-icon', { - attrs: { - "icon": _vm.icon - } - })])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-select__content" - }, [_c('div', { - ref: "label", - staticClass: "ui-select__label", - attrs: { - "tabindex": _vm.disabled ? null : (_vm.tabindex || '0') - }, - on: { - "focus": _vm.onFocus, - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - $event.preventDefault(); - return _vm.openDropdown($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "space", 32, $event.key, [" ", "Spacebar"])) { return null; } - $event.preventDefault(); - return _vm.openDropdown($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "tab", 9, $event.key, "Tab")) { return null; } - return _vm.onBlur($event) - }] - } - }, [(_vm.label || _vm.$slots.default) ? _c('div', { - staticClass: "ui-select__label-text", - class: _vm.labelClasses - }, [_vm._t("default", [_vm._v(_vm._s(_vm.label))])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-select__display" - }, [_c('div', { - staticClass: "ui-select__display-value", - class: { - 'is-placeholder': !_vm.hasDisplayText - } - }, [_vm._v("\n " + _vm._s(_vm.hasDisplayText ? _vm.displayText : (_vm.hasFloatingLabel && _vm.isLabelInline) ? null : _vm.placeholder) + "\n ")]), _vm._v(" "), _c('ui-icon', { - staticClass: "ui-select__dropdown-button" - }, [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M6.984 9.984h10.03L12 15z" - } - })])])], 1), _vm._v(" "), _c('ui-popover', { - ref: "dropdown", - staticClass: "ui-select__dropdown", - attrs: { - "close-on-scroll": false, - "constrain-to-scroll-parent": false, - "disabled": _vm.disabled - }, - on: { - "close": _vm.onClose, - "open": _vm.onOpen, - "reveal": _vm.onReveal - } - }, [_c('div', { - ref: "dropdownContent", - staticClass: "ui-select__dropdown-content", - attrs: { - "tabindex": "-1" - }, - on: { - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "down", 40, $event.key, ["Down", "ArrowDown"])) { return null; } - $event.preventDefault(); - _vm.highlightOption(_vm.highlightedIndex + 1) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - $event.preventDefault(); - $event.stopPropagation(); - _vm.selectHighlighted(_vm.highlightedIndex, $event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "esc", 27, $event.key, ["Esc", "Escape"])) { return null; } - $event.preventDefault(); - _vm.closeDropdown() - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "tab", 9, $event.key, "Tab")) { return null; } - return _vm.onBlur($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "up", 38, $event.key, ["Up", "ArrowUp"])) { return null; } - $event.preventDefault(); - _vm.highlightOption(_vm.highlightedIndex - 1) - }] - } - }, [(_vm.hasSearch) ? _c('div', { - staticClass: "ui-select__search", - on: { - "click": function($event) { - $event.stopPropagation(); - }, - "keydown": function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "space", 32, $event.key, [" ", "Spacebar"])) { return null; } - $event.stopPropagation(); - } - } - }, [_c('input', { - directives: [{ - name: "model", - rawName: "v-model", - value: (_vm.query), - expression: "query" - }], - ref: "searchInput", - staticClass: "ui-select__search-input", - attrs: { - "autocomplete": "off", - "type": "text", - "placeholder": _vm.searchPlaceholder - }, - domProps: { - "value": (_vm.query) - }, - on: { - "input": function($event) { - if ($event.target.composing) { return; } - _vm.query = $event.target.value - } - } - }), _vm._v(" "), _c('ui-icon', { - staticClass: "ui-select__search-icon" - }, [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M9.516 14.016c2.484 0 4.5-2.016 4.5-4.5s-2.016-4.5-4.5-4.5-4.5 2.016-4.5 4.5 2.016 4.5 4.5 4.5zm6 0l4.97 4.97-1.5 1.5-4.97-4.97v-.797l-.28-.282c-1.126.984-2.626 1.547-4.22 1.547-3.61 0-6.516-2.86-6.516-6.47S5.906 3 9.516 3s6.47 2.906 6.47 6.516c0 1.594-.564 3.094-1.548 4.22l.28.28h.798z" - } - })])]), _vm._v(" "), (_vm.loading) ? _c('ui-progress-circular', { - staticClass: "ui-select__search-progress", - attrs: { - "size": 20, - "stroke": 4 - } - }) : _vm._e()], 1) : _vm._e(), _vm._v(" "), _c('ul', { - ref: "optionsList", - staticClass: "ui-select__options" - }, [_vm._l((_vm.filteredOptions), function(option, index) { - return _c('ui-select-option', { - key: index, - ref: "options", - refInFor: true, - attrs: { - "highlighted": _vm.highlightedIndex === index, - "keys": _vm.keys, - "multiple": _vm.multiple, - "option": option, - "selected": _vm.isOptionSelected(option), - "type": _vm.type - }, - nativeOn: { - "click": function($event) { - $event.stopPropagation(); - _vm.selectOption(option, index) - }, - "mouseover": function($event) { - $event.stopPropagation(); - _vm.highlightOption(index, { - autoScroll: false - }) - } - } - }, [_vm._t("option", null, { - highlighted: _vm.highlightedIndex === index, - index: index, - option: option, - selected: _vm.isOptionSelected(option) - })], 2) - }), _vm._v(" "), _c('div', { - directives: [{ - name: "show", - rawName: "v-show", - value: (_vm.hasNoResults), - expression: "hasNoResults" - }], - staticClass: "ui-select__no-results" - }, [_vm._t("no-results", [_vm._v("No results found")])], 2)], 2)])])], 1), _vm._v(" "), (_vm.hasFeedback) ? _c('div', { - staticClass: "ui-select__feedback" - }, [(_vm.showError) ? _c('div', { - staticClass: "ui-select__feedback-text" - }, [_vm._t("error", [_vm._v(_vm._s(_vm.error))])], 2) : (_vm.showHelp) ? _c('div', { - staticClass: "ui-select__feedback-text" - }, [_vm._t("help", [_vm._v(_vm._s(_vm.help))])], 2) : _vm._e()]) : _vm._e()])]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-54cff87a", esExports) - } -} - -/***/ }), -/* 163 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('transition', { - attrs: { - "name": _vm.transitionName - }, - on: { - "after-enter": _vm.onEnter, - "after-leave": _vm.onLeave - } - }, [_c('div', { - staticClass: "ui-snackbar", - on: { - "click": _vm.onClick - } - }, [_c('div', { - staticClass: "ui-snackbar__message" - }, [_vm._t("default", [_vm._v(_vm._s(_vm.message))])], 2), _vm._v(" "), _c('div', { - staticClass: "ui-snackbar__action" - }, [(_vm.action) ? _c('ui-button', { - staticClass: "ui-snackbar__action-button", - attrs: { - "type": "secondary", - "color": _vm.actionColor - }, - on: { - "click": function($event) { - $event.stopPropagation(); - return _vm.onActionClick($event) - } - } - }, [_vm._v(_vm._s(_vm.action))]) : _vm._e()], 1)])]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-5ad542fa", esExports) - } -} - -/***/ }), -/* 164 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c(_vm.isAnchor ? 'a' : 'li', { - tag: "component", - staticClass: "ui-menu-option", - class: _vm.classes, - attrs: { - "role": "menu-item", - "href": _vm.isAnchor ? (_vm.disabled ? null : _vm.href) : null, - "tabindex": (_vm.isDivider || _vm.isAnchor || _vm.disabled) ? null : '0', - "target": _vm.isAnchor ? (_vm.disabled ? null : _vm.target) : null - } - }, [(!_vm.isDivider) ? _vm._t("default", [_c('div', { - staticClass: "ui-menu-option__content" - }, [(_vm.icon) ? _c('ui-icon', { - staticClass: "ui-menu-option__icon", - attrs: { - "icon-set": _vm.iconProps.iconSet, - "icon": _vm.icon, - "remove-text": _vm.iconProps.removeText, - "use-svg": _vm.iconProps.useSvg - } - }) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-menu-option__text" - }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), (_vm.secondaryText) ? _c('div', { - staticClass: "ui-menu-option__secondary-text" - }, [_vm._v("\n " + _vm._s(_vm.secondaryText) + "\n ")]) : _vm._e()], 1)]) : _vm._e(), _vm._v(" "), (!_vm.disabled && !_vm.isDivider && !_vm.disableRipple) ? _c('ui-ripple-ink') : _vm._e()], 2) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-5cb20b32", esExports) - } -} - -/***/ }), -/* 165 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('transition', { - attrs: { - "name": _vm.toggleTransition - }, - on: { - "after-enter": _vm.onEnter, - "after-leave": _vm.onLeave - } - }, [_c('div', { - directives: [{ - name: "show", - rawName: "v-show", - value: (_vm.isOpen), - expression: "isOpen" - }], - staticClass: "ui-modal ui-modal__mask", - class: _vm.classes, - attrs: { - "role": _vm.role - }, - on: { - "mousedown": function($event) { - if ($event.target !== $event.currentTarget) { return null; } - return _vm.onBackdropMouseDown($event) - }, - "mouseup": function($event) { - if ($event.target !== $event.currentTarget) { return null; } - return _vm.onBackdropMouseUp($event) - } - } - }, [_c('div', { - staticClass: "ui-modal__wrapper", - class: { - 'has-dummy-scrollbar': _vm.preventShift - }, - style: (_vm.alignTopStyle), - on: { - "mousedown": function($event) { - if ($event.target !== $event.currentTarget) { return null; } - return _vm.onBackdropMouseDown($event) - }, - "mouseup": function($event) { - if ($event.target !== $event.currentTarget) { return null; } - return _vm.onBackdropMouseUp($event) - } - } - }, [_c('ui-focus-container', { - ref: "focusContainer", - staticClass: "ui-modal__container", - attrs: { - "tabindex": "-1" - }, - nativeOn: { - "keydown": function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "esc", 27, $event.key, ["Esc", "Escape"])) { return null; } - $event.stopPropagation(); - return _vm.onEsc($event) - } - } - }, [(!_vm.removeHeader) ? _c('div', { - staticClass: "ui-modal__header" - }, [_vm._t("header", [_c('h1', { - staticClass: "ui-modal__header-text" - }, [_vm._v(_vm._s(_vm.title))])]), _vm._v(" "), _c('div', { - staticClass: "ui-modal__close-button" - }, [(_vm.dismissOnCloseButton && !_vm.removeCloseButton && _vm.dismissible) ? _c('ui-close-button', { - on: { - "click": _vm.close - } - }) : _vm._e()], 1)], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-modal__body" - }, [_vm._t("default")], 2), _vm._v(" "), (_vm.hasFooter) ? _c('div', { - staticClass: "ui-modal__footer" - }, [_vm._t("footer")], 2) : _vm._e()])], 1)])]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-5cfba9c2", esExports) - } -} - -/***/ }), -/* 166 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-ripple-ink" - }) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-5ef65288", esExports) - } -} - -/***/ }), -/* 167 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c(_vm.isAnchor ? 'a' : 'button', { - tag: "component", - staticClass: "ui-button", - class: _vm.classes, - attrs: { - "disabled": _vm.disabled || _vm.loading, - "href": _vm.isAnchor ? (_vm.disabled ? null : _vm.href) : null, - "type": _vm.isAnchor ? null : _vm.buttonType - }, - on: { - "click": _vm.onClick - } - }, [_c('div', { - staticClass: "ui-button__content" - }, [(_vm.icon || _vm.$slots.icon) ? _c('div', { - staticClass: "ui-button__icon" - }, [_vm._t("icon", [_c('ui-icon', { - attrs: { - "icon": _vm.icon - } - })])], 2) : _vm._e(), _vm._v(" "), _vm._t("default"), _vm._v(" "), (_vm.hasDropdown && _vm.iconPosition !== 'right') ? _c('ui-icon', { - staticClass: "ui-button__dropdown-icon" - }, [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M6.984 9.984h10.03L12 15z" - } - })])]) : _vm._e()], 2), _vm._v(" "), _c('div', { - staticClass: "ui-button__focus-ring" - }), _vm._v(" "), (_vm.loading) ? _c('ui-progress-circular', { - staticClass: "ui-button__progress", - attrs: { - "disable-transition": "", - "color": _vm.progressColor, - "size": 18, - "stroke": 4.5 - } - }) : _vm._e(), _vm._v(" "), (!_vm.disableRipple && !_vm.disabled) ? _c('ui-ripple-ink') : _vm._e(), _vm._v(" "), (_vm.hasDropdown) ? _c('ui-popover', { - ref: "dropdown", - attrs: { - "contain-focus": "", - "append-to-body": _vm.appendDropdownToBody, - "constrain-to-scroll-parent": _vm.constrainDropdownToScrollParent, - "position": _vm.dropdownPosition, - "open-on": _vm.openDropdownOn - }, - on: { - "close": _vm.onDropdownClose, - "open": _vm.onDropdownOpen - } - }, [_vm._t("dropdown")], 2) : _vm._e(), _vm._v(" "), (_vm.tooltip) ? _c('ui-tooltip', { - attrs: { - "open-on": _vm.openTooltipOn, - "position": _vm.tooltipPosition - } - }, [_vm._v(_vm._s(_vm.tooltip))]) : _vm._e()], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-663a40a0", esExports) - } -} - -/***/ }), -/* 168 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c(_vm.tag, { - tag: "component", - staticClass: "ui-focus-container" - }, [(_vm.renderRedirector) ? _c('span', { - staticClass: "ui-focus-container__focus-redirector", - attrs: { - "tabindex": "0" - }, - on: { - "focus": function($event) { - _vm.redirectFocus($event, { - isTabbingForward: false - }) - } - } - }) : _vm._e(), _vm._v(" "), _c('div', { - ref: "content", - staticClass: "ui-focus-container__content", - attrs: { - "tabindex": "-1" - } - }, [_vm._t("default")], 2), _vm._v(" "), (!_vm.disabled && _vm.containFocus) ? _c('span', { - ref: "lastFocusable", - staticClass: "ui-focus-container__last-focusable", - attrs: { - "tabindex": "-1" - } - }) : _vm._e(), _vm._v(" "), (_vm.renderRedirector) ? _c('span', { - staticClass: "ui-focus-container__focus-redirector", - attrs: { - "tabindex": "0" - }, - on: { - "focus": function($event) { - _vm.redirectFocus($event, { - isTabbingForward: true - }) - } - } - }) : _vm._e()]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-6c26f987", esExports) - } -} - -/***/ }), -/* 169 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-tooltip" - }, [_vm._t("default")], 2) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-6cedb6f5", esExports) - } -} - -/***/ }), -/* 170 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-calendar-controls", - class: _vm.classes - }, [_c('ui-icon-button', { - staticClass: "ui-calendar-controls__nav-button", - attrs: { - "icon": "keyboard_arrow_left", - "type": "secondary", - "color": _vm.color === 'default' ? 'default' : 'white', - "disabled": _vm.previousMonthDisabled - }, - on: { - "click": _vm.goToPreviousMonth - } - }, [_c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M15.422 16.078l-1.406 1.406-6-6 6-6 1.406 1.406-4.594 4.594z" - } - })])])], 1), _vm._v(" "), _c('div', { - staticClass: "ui-calendar-controls__month-and-year" - }, [_vm._v(_vm._s(_vm.monthAndYear))]), _vm._v(" "), _c('ui-icon-button', { - staticClass: "ui-calendar-controls__nav-button", - attrs: { - "icon": "keyboard_arrow_right", - "type": "secondary", - "color": _vm.color === 'default' ? 'default' : 'white', - "disabled": _vm.nextMonthDisabled - }, - on: { - "click": _vm.goToNextMonth - } - }, [_c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M8.578 16.36l4.594-4.595L8.578 7.17l1.406-1.405 6 6-6 6z" - } - })])])], 1)], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-6fbf1812", esExports) - } -} - -/***/ }), -/* 171 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-datepicker", - class: _vm.classes - }, [_c('input', { - staticClass: "ui-datepicker__hidden-input", - attrs: { - "type": "hidden", - "name": _vm.name - }, - domProps: { - "value": _vm.submittedValue - } - }), _vm._v(" "), (_vm.icon || _vm.$slots.icon) ? _c('div', { - staticClass: "ui-datepicker__icon-wrapper" - }, [_vm._t("icon", [_c('ui-icon', { - attrs: { - "icon": _vm.icon - } - })])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-datepicker__content" - }, [_c('div', { - ref: "label", - staticClass: "ui-datepicker__label", - attrs: { - "tabindex": _vm.disabled ? null : (_vm.tabindex || '0') - }, - on: { - "focus": _vm.onFocus, - "click": function($event) { - _vm.togglePicker({ - returnFocus: false - }) - }, - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - $event.preventDefault(); - _vm.togglePicker({ - returnFocus: false - }) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "space", 32, $event.key, [" ", "Spacebar"])) { return null; } - $event.preventDefault(); - _vm.togglePicker({ - returnFocus: false - }) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "tab", 9, $event.key, "Tab")) { return null; } - return _vm.onTabAway($event) - }] - } - }, [(_vm.label || _vm.$slots.default) ? _c('div', { - staticClass: "ui-datepicker__label-text", - class: _vm.labelClasses - }, [_vm._t("default", [_vm._v(_vm._s(_vm.label))])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-datepicker__display" - }, [_c('div', { - staticClass: "ui-datepicker__display-value", - class: { - 'is-placeholder': !_vm.hasDisplayText - } - }, [_vm._v("\n " + _vm._s(_vm.hasDisplayText ? _vm.displayText : (_vm.hasFloatingLabel && _vm.isLabelInline) ? null : _vm.placeholder) + "\n ")]), _vm._v(" "), (_vm.usesPopover && !_vm.disabled) ? _c('ui-icon', { - staticClass: "ui-datepicker__dropdown-button" - }, [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M6.984 9.984h10.03L12 15z" - } - })])]) : _vm._e()], 1), _vm._v(" "), (_vm.usesPopover) ? _c('ui-popover', { - directives: [{ - name: "show", - rawName: "v-show", - value: (!_vm.disabled), - expression: "!disabled" - }], - ref: "popover", - attrs: { - "contain-focus": "", - "open-on": "manual", - "close-on-scroll": false, - "append-to-body": _vm.appendDropdownToBody, - "z-index": _vm.dropdownZIndex - }, - on: { - "close": _vm.onPickerClose, - "open": _vm.onPickerOpen - } - }, [_c('ui-datepicker-calendar', { - attrs: { - "color": _vm.color, - "date-filter": _vm.dateFilter, - "lang": _vm.lang, - "max-date": _vm.maxDate, - "min-date": _vm.minDate, - "orientation": _vm.orientation, - "current-view": _vm.calendarView, - "value": _vm.date, - "start-of-week": _vm.startOfWeek, - "year-range": _vm.yearRange - }, - on: { - "update:currentView": function($event) { - _vm.calendarView = $event - }, - "date-select": _vm.onDateSelect - } - })], 1) : _vm._e()], 1), _vm._v(" "), (_vm.hasFeedback) ? _c('div', { - staticClass: "ui-datepicker__feedback" - }, [(_vm.showError) ? _c('div', { - staticClass: "ui-datepicker__feedback-text" - }, [_vm._t("error", [_vm._v(_vm._s(_vm.error))])], 2) : (_vm.showHelp) ? _c('div', { - staticClass: "ui-datepicker__feedback-text" - }, [_vm._t("help", [_vm._v(_vm._s(_vm.help))])], 2) : _vm._e()]) : _vm._e()]), _vm._v(" "), (_vm.usesModal && !_vm.disabled) ? _c('ui-modal', { - ref: "modal", - attrs: { - "remove-header": "", - "size": "auto" - }, - on: { - "hidden": _vm.onPickerClose, - "open": _vm.onPickerOpen - } - }, [_c('ui-datepicker-calendar', { - attrs: { - "color": _vm.color, - "date-filter": _vm.dateFilter, - "lang": _vm.lang, - "max-date": _vm.maxDate, - "min-date": _vm.minDate, - "orientation": _vm.orientation, - "current-view": _vm.calendarView, - "value": _vm.date, - "start-of-week": _vm.startOfWeek, - "year-range": _vm.yearRange - }, - on: { - "update:currentView": function($event) { - _vm.calendarView = $event - }, - "date-select": _vm.onDateSelect - } - })], 1) : _vm._e()], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-74517e3a", esExports) - } -} - -/***/ }), -/* 172 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('label', { - staticClass: "ui-checkbox", - class: _vm.classes - }, [_c('input', { - ref: "input", - staticClass: "ui-checkbox__input", - attrs: { - "type": "checkbox", - "disabled": _vm.disabled, - "name": _vm.name, - "tabindex": _vm.tabindex - }, - domProps: { - "checked": _vm.isChecked, - "value": _vm.submittedValue - }, - on: { - "blur": _vm.onBlur, - "click": _vm.onClick, - "focus": _vm.onFocus - } - }), _vm._v(" "), _vm._m(0), _vm._v(" "), (_vm.label || _vm.$slots.default) ? _c('div', { - staticClass: "ui-checkbox__label-text" - }, [_vm._t("default", [_vm._v(_vm._s(_vm.label))])], 2) : _vm._e()]) -} -var staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-checkbox__checkmark" - }, [_c('div', { - staticClass: "ui-checkbox__checkmark-background" - }), _vm._v(" "), _c('div', { - staticClass: "ui-checkbox__focus-ring" - })]) -}] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-7905fb7e", esExports) - } -} - -/***/ }), -/* 173 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-checkbox-group", - class: _vm.classes - }, [(_vm.label || _vm.$slots.default) ? _c('div', { - staticClass: "ui-checkbox-group__label-text" - }, [_vm._t("default", [_vm._v(_vm._s(_vm.label))])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-checkbox-group__checkboxes" - }, _vm._l((_vm.options), function(option, index) { - return _c('ui-checkbox', { - key: option[_vm.keys.id], - staticClass: "ui-checkbox-group__checkbox", - class: option[_vm.keys.class], - attrs: { - "box-position": _vm.boxPosition, - "checked": _vm.isOptionCheckedByDefault(option), - "color": _vm.color, - "disabled": _vm.disabled || option[_vm.keys.disabled], - "id": option[_vm.keys.id], - "name": _vm.name || option[_vm.keys.name] - }, - on: { - "blur": _vm.onBlur, - "change": function($event) { - _vm.onChange(arguments, option) - }, - "focus": _vm.onFocus - }, - model: { - value: (_vm.checkboxValues[index]), - callback: function($$v) { - _vm.$set(_vm.checkboxValues, index, $$v) - }, - expression: "checkboxValues[index]" - } - }, [_vm._v(_vm._s(option[_vm.keys.label] || option))]) - }), 1), _vm._v(" "), (_vm.hasFeedback) ? _c('div', { - staticClass: "ui-checkbox-group__feedback" - }, [(_vm.showError) ? _c('div', { - staticClass: "ui-checkbox-group__feedback-text" - }, [_vm._t("error", [_vm._v(_vm._s(_vm.error))])], 2) : (_vm.showHelp) ? _c('div', { - staticClass: "ui-checkbox-group__feedback-text" - }, [_vm._t("help", [_vm._v(_vm._s(_vm.help))])], 2) : _vm._e()]) : _vm._e()]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-7a92836e", esExports) - } -} - -/***/ }), -/* 174 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('button', { - staticClass: "ui-close-button", - class: _vm.classes, - attrs: { - "aria-label": "Close", - "type": "button", - "disabled": _vm.disabled - }, - on: { - "click": _vm.onClick - } - }, [_c('div', { - staticClass: "ui-close-button__icon" - }, [_c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M18.984 6.422L13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578z" - } - })])])], 1), _vm._v(" "), _c('span', { - staticClass: "ui-close-button__focus-ring" - }), _vm._v(" "), (!_vm.disableRipple && !_vm.disabled) ? _c('ui-ripple-ink') : _vm._e()], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-7ba5f488", esExports) - } -} - -/***/ }), -/* 175 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('transition', { - attrs: { - "name": _vm.disableTransition ? null : 'ui-progress-circular--transition-fade' - } - }, [_c('div', { - staticClass: "ui-progress-circular", - class: _vm.classes, - style: ({ - 'width': _vm.size + 'px', - 'height': _vm.size + 'px' - }) - }, [(_vm.type === 'determinate') ? _c('svg', { - staticClass: "ui-progress-circular__determinate", - attrs: { - "role": "progressbar", - "aria-valuemax": 100, - "aria-valuemin": 0, - "aria-valuenow": _vm.progress, - "height": _vm.size, - "width": _vm.size - } - }, [_c('circle', { - staticClass: "ui-progress-circular__determinate-path", - style: ({ - 'stroke-dashoffset': _vm.strokeDashOffset, - 'stroke-width': _vm.calculatedStroke - }), - attrs: { - "fill": "transparent", - "stroke-dashoffset": "0", - "cx": _vm.size / 2, - "cy": _vm.size / 2, - "r": _vm.radius, - "stroke-dasharray": _vm.strokeDashArray - } - })]) : _c('svg', { - staticClass: "ui-progress-circular__indeterminate", - attrs: { - "role": "progressbar", - "viewBox": "25 25 50 50", - "aria-valuemax": 100, - "aria-valuemin": 0 - } - }, [_c('circle', { - staticClass: "ui-progress-circular__indeterminate-path", - attrs: { - "cx": "50", - "cy": "50", - "fill": "none", - "r": "20", - "stroke-miterlimit": "10", - "stroke-width": _vm.calculatedStroke - } - })])])]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-7bea93ea", esExports) - } -} - -/***/ }), -/* 176 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-autocomplete", - class: _vm.classes - }, [(_vm.icon || _vm.$slots.icon) ? _c('div', { - staticClass: "ui-autocomplete__icon-wrapper" - }, [_vm._t("icon", [_c('ui-icon', { - attrs: { - "icon": _vm.icon - } - })])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-autocomplete__content" - }, [_c('label', { - staticClass: "ui-autocomplete__label" - }, [(_vm.label || _vm.$slots.default) ? _c('div', { - staticClass: "ui-autocomplete__label-text", - class: _vm.labelClasses - }, [_vm._t("default", [_vm._v(_vm._s(_vm.label))])], 2) : _vm._e(), _vm._v(" "), _c('ui-icon', { - directives: [{ - name: "show", - rawName: "v-show", - value: (!_vm.disabled && _vm.valueLength > 0), - expression: "!disabled && valueLength > 0" - }], - staticClass: "ui-autocomplete__clear-button", - attrs: { - "title": "Clear" - }, - nativeOn: { - "click": function($event) { - _vm.updateValue('') - } - } - }, [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M18.984 6.422L13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578z" - } - })])]), _vm._v(" "), _c('input', { - directives: [{ - name: "autofocus", - rawName: "v-autofocus", - value: (_vm.autofocus), - expression: "autofocus" - }], - ref: "input", - staticClass: "ui-autocomplete__input", - attrs: { - "autocomplete": "off", - "disabled": _vm.disabled, - "name": _vm.name, - "placeholder": _vm.hasFloatingLabel ? null : _vm.placeholder, - "readonly": _vm.readonly ? _vm.readonly : null, - "tabindex": _vm.tabindex - }, - domProps: { - "value": _vm.value - }, - on: { - "blur": _vm.onBlur, - "change": _vm.onChange, - "focus": _vm.onFocus, - "input": function($event) { - _vm.updateValue($event.target.value) - }, - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "down", 40, $event.key, ["Down", "ArrowDown"])) { return null; } - $event.preventDefault(); - _vm.highlightSuggestion(_vm.highlightedIndex + 1) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - _vm.selectHighlighted(_vm.highlightedIndex, $event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "esc", 27, $event.key, ["Esc", "Escape"])) { return null; } - return _vm.closeDropdown($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "tab", 9, $event.key, "Tab")) { return null; } - return _vm.closeDropdown($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "up", 38, $event.key, ["Up", "ArrowUp"])) { return null; } - $event.preventDefault(); - _vm.highlightSuggestion(_vm.highlightedIndex - 1) - }] - } - }), _vm._v(" "), _c('ul', { - directives: [{ - name: "show", - rawName: "v-show", - value: (_vm.showDropdown), - expression: "showDropdown" - }], - staticClass: "ui-autocomplete__suggestions" - }, _vm._l((_vm.matchingSuggestions), function(suggestion, index) { - return _c('ui-autocomplete-suggestion', { - key: index, - ref: "suggestions", - refInFor: true, - attrs: { - "highlighted": _vm.highlightedIndex === index, - "keys": _vm.keys, - "suggestion": suggestion, - "type": _vm.type - }, - nativeOn: { - "click": function($event) { - _vm.selectSuggestion(suggestion) - } - } - }, [_vm._t("suggestion", null, { - highlighted: _vm.highlightedIndex === index, - index: index, - suggestion: suggestion - })], 2) - }), 1)], 1), _vm._v(" "), (_vm.hasFeedback) ? _c('div', { - staticClass: "ui-autocomplete__feedback" - }, [(_vm.showError) ? _c('div', { - staticClass: "ui-autocomplete__feedback-text" - }, [_vm._t("error", [_vm._v(_vm._s(_vm.error))])], 2) : (_vm.showHelp) ? _c('div', { - staticClass: "ui-autocomplete__feedback-text" - }, [_vm._t("help", [_vm._v(_vm._s(_vm.help))])], 2) : _vm._e()]) : _vm._e()])]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-7ede18e6", esExports) - } -} - -/***/ }), -/* 177 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - directives: [{ - name: "show", - rawName: "v-show", - value: (_vm.isActive), - expression: "isActive" - }], - staticClass: "ui-tab", - attrs: { - "role": "tabpanel", - "aria-hidden": !_vm.isActive ? 'true' : null, - "id": _vm.id, - "tabindex": _vm.isActive ? '0' : null - } - }, [_vm._t("default")], 2) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-813aeaf2", esExports) - } -} - -/***/ }), -/* 178 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('label', { - staticClass: "ui-fileupload", - class: _vm.classes - }, [(_vm.renderInput) ? _c('input', { - ref: "input", - staticClass: "ui-fileupload__input", - attrs: { - "type": "file", - "accept": _vm.accept, - "disabled": _vm.disabled, - "multiple": _vm.multiple, - "name": _vm.name, - "required": _vm.required, - "tabindex": _vm.tabindex - }, - on: { - "blur": _vm.onBlur, - "input": _vm.onInput, - "change": _vm.onChange, - "focus": _vm.onFocus - } - }) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-fileupload__content" - }, [_c('div', { - staticClass: "ui-fileupload__icon" - }, [_vm._t("icon", [_c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M5.016 18h13.969v2.016H5.016V18zM9 15.984v-6H5.016L12 3l6.984 6.984H15v6H9z" - } - })])])])], 2), _vm._v(" "), (_vm.hasSelection) ? _c('span', { - staticClass: "ui-fileupload__display-text" - }, [_vm._v(_vm._s(_vm.displayText))]) : _vm._t("default", [_vm._v(_vm._s(_vm.placeholder))])], 2), _vm._v(" "), _c('div', { - staticClass: "ui-fileupload__focus-ring" - }), _vm._v(" "), (!_vm.disableRipple && !_vm.disabled) ? _c('ui-ripple-ink') : _vm._e()], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-965da30a", esExports) - } -} - -/***/ }), -/* 179 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c(_vm.isAnchor ? 'a' : 'button', { - tag: "component", - staticClass: "ui-icon-button", - class: _vm.classes, - attrs: { - "aria-label": _vm.ariaLabel || _vm.tooltip, - "disabled": _vm.disabled || _vm.loading, - "href": _vm.isAnchor ? (_vm.disabled ? null : _vm.href) : null, - "type": _vm.isAnchor ? null : _vm.buttonType - }, - on: { - "click": _vm.onClick - } - }, [(_vm.icon || _vm.$slots.default) ? _c('div', { - staticClass: "ui-icon-button__icon" - }, [_vm._t("default", [_c('ui-icon', { - attrs: { - "icon": _vm.icon - } - })])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-icon-button__focus-ring" - }), _vm._v(" "), (_vm.loading) ? _c('ui-progress-circular', { - staticClass: "ui-icon-button__progress", - attrs: { - "color": _vm.progressColor, - "size": _vm.size === 'large' ? 24 : 18, - "stroke": 4.5 - } - }) : _vm._e(), _vm._v(" "), (!_vm.disableRipple && !_vm.disabled) ? _c('ui-ripple-ink') : _vm._e(), _vm._v(" "), (_vm.hasDropdown) ? _c('ui-popover', { - ref: "dropdown", - attrs: { - "constain-focus": "", - "append-to-body": _vm.appendDropdownToBody, - "constrain-to-scroll-parent": _vm.constrainDropdownToScrollParent, - "position": _vm.dropdownPosition, - "open-on": _vm.openDropdownOn - }, - on: { - "close": _vm.onDropdownClose, - "open": _vm.onDropdownOpen - } - }, [_vm._t("dropdown")], 2) : _vm._e(), _vm._v(" "), (_vm.tooltip) ? _c('ui-tooltip', { - attrs: { - "open-on": _vm.openTooltipOn, - "position": _vm.tooltipPosition - } - }, [_vm._v(_vm._s(_vm.tooltip))]) : _vm._e()], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-9db4dbee", esExports) - } -} - -/***/ }), -/* 180 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('li', { - staticClass: "ui-select-option", - class: _vm.classes - }, [_vm._t("default", [(_vm.type === 'basic') ? _c('div', { - staticClass: "ui-select-option__basic" - }, [_vm._v("\n " + _vm._s(_vm.option[_vm.keys.label] || _vm.option) + "\n ")]) : _vm._e(), _vm._v(" "), (_vm.type === 'image') ? _c('div', { - staticClass: "ui-select-option__image" - }, [_c('div', { - staticClass: "ui-select-option__image-object", - style: (_vm.imageStyle) - }), _vm._v(" "), _c('div', { - staticClass: "ui-select-option__image-text" - }, [_vm._v(_vm._s(_vm.option[_vm.keys.label]))])]) : _vm._e(), _vm._v(" "), (_vm.multiple) ? _c('div', { - staticClass: "ui-select-option__checkbox" - }, [(_vm.selected) ? _c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M9.984 17.016l9-9-1.406-1.453-7.594 7.594-3.563-3.563L5.016 12zm9-14.016C20.11 3 21 3.938 21 5.016v13.97C21 20.062 20.11 21 18.984 21H5.014C3.89 21 3 20.064 3 18.986V5.015C3 3.94 3.89 3 5.014 3h13.97z" - } - })])]) : _c('ui-icon', [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M18.984 3C20.062 3 21 3.938 21 5.016v13.97C21 20.062 20.062 21 18.984 21H5.014C3.938 21 3 20.064 3 18.986V5.015C3 3.94 3.936 3 5.014 3h13.97zm0 2.016H5.014v13.97h13.97V5.015z" - } - })])])], 1) : _vm._e()])], 2) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-a05cade2", esExports) - } -} - -/***/ }), -/* 181 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-textbox", - class: _vm.classes - }, [(_vm.icon || _vm.$slots.icon) ? _c('div', { - staticClass: "ui-textbox__icon-wrapper" - }, [_vm._t("icon", [_c('ui-icon', { - attrs: { - "icon": _vm.icon - } - })])], 2) : _vm._e(), _vm._v(" "), _c('div', { - staticClass: "ui-textbox__content" - }, [_c('label', { - staticClass: "ui-textbox__label" - }, [(!_vm.multiLine) ? _c('input', { - directives: [{ - name: "autofocus", - rawName: "v-autofocus", - value: (_vm.autofocus), - expression: "autofocus" - }], - ref: "input", - staticClass: "ui-textbox__input", - attrs: { - "autocomplete": _vm.autocomplete ? _vm.autocomplete : null, - "autocapitalize": _vm.autocapitalize ? _vm.autocapitalize : null, - "disabled": _vm.disabled, - "max": _vm.maxValue, - "maxlength": _vm.enforceMaxlength ? _vm.maxlength : null, - "minlength": _vm.minlength, - "min": _vm.minValue, - "name": _vm.name, - "number": _vm.type === 'number' ? true : null, - "placeholder": _vm.hasFloatingLabel ? null : _vm.placeholder, - "readonly": _vm.readonly, - "required": _vm.required, - "step": _vm.stepValue, - "tabindex": _vm.tabindex, - "type": _vm.type - }, - domProps: { - "value": _vm.value - }, - on: { - "blur": _vm.onBlur, - "change": _vm.onChange, - "focus": _vm.onFocus, - "input": function($event) { - _vm.updateValue($event.target.value) - }, - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - return _vm.onKeydownEnter($event) - }, _vm.onKeydown] - } - }) : _c('textarea', { - directives: [{ - name: "autofocus", - rawName: "v-autofocus", - value: (_vm.autofocus), - expression: "autofocus" - }], - ref: "textarea", - staticClass: "ui-textbox__textarea", - attrs: { - "autocomplete": _vm.autocomplete ? _vm.autocomplete : null, - "autocapitalize": _vm.autocapitalize ? _vm.autocapitalize : null, - "disabled": _vm.disabled, - "maxlength": _vm.enforceMaxlength ? _vm.maxlength : null, - "minlength": _vm.minlength, - "name": _vm.name, - "placeholder": _vm.hasFloatingLabel ? null : _vm.placeholder, - "readonly": _vm.readonly, - "required": _vm.required, - "rows": _vm.rows, - "tabindex": _vm.tabindex - }, - domProps: { - "value": _vm.value - }, - on: { - "blur": _vm.onBlur, - "change": _vm.onChange, - "focus": _vm.onFocus, - "input": function($event) { - _vm.updateValue($event.target.value) - }, - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - return _vm.onKeydownEnter($event) - }, _vm.onKeydown] - } - }), _vm._v(" "), (_vm.label || _vm.$slots.default) ? _c('div', { - staticClass: "ui-textbox__label-text", - class: _vm.labelClasses - }, [_vm._t("default", [_vm._v(_vm._s(_vm.label))])], 2) : _vm._e()]), _vm._v(" "), (_vm.hasFeedback || _vm.maxlength) ? _c('div', { - staticClass: "ui-textbox__feedback" - }, [(_vm.showError) ? _c('div', { - staticClass: "ui-textbox__feedback-text" - }, [_vm._t("error", [_vm._v(_vm._s(_vm.error))])], 2) : (_vm.showHelp) ? _c('div', { - staticClass: "ui-textbox__feedback-text" - }, [_vm._t("help", [_vm._v(_vm._s(_vm.help))])], 2) : _vm._e(), _vm._v(" "), (_vm.maxlength) ? _c('div', { - staticClass: "ui-textbox__counter" - }, [_vm._v("\n " + _vm._s(_vm.valueLength + '/' + _vm.maxlength) + "\n ")]) : _vm._e()]) : _vm._e()])]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-ac038220", esExports) - } -} - -/***/ }), -/* 182 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-toolbar", - class: _vm.classes - }, [_c('div', { - staticClass: "ui-toolbar__left" - }, [(!_vm.removeNavIcon) ? _c('div', { - staticClass: "ui-toolbar__nav-icon" - }, [_vm._t("icon", [_c('ui-icon-button', { - attrs: { - "size": "large", - "type": "secondary", - "color": _vm.textColor, - "icon": _vm.navIcon - }, - on: { - "click": _vm.navIconClick - } - })])], 2) : _vm._e(), _vm._v(" "), (_vm.brand || _vm.$slots.brand) ? _c('div', { - staticClass: "ui-toolbar__brand" - }, [_vm._t("brand", [_c('div', { - staticClass: "ui-toolbar__brand-text" - }, [_vm._v(_vm._s(_vm.brand))])])], 2) : _vm._e()]), _vm._v(" "), _c('div', { - staticClass: "ui-toolbar__body", - class: { - 'has-brand-divider': _vm.hasBrandDivider - } - }, [_vm._t("default", [(_vm.title) ? _c('div', { - staticClass: "ui-toolbar__title" - }, [_vm._v(_vm._s(_vm.title))]) : _vm._e()])], 2), _vm._v(" "), _c('div', { - staticClass: "ui-toolbar__right" - }, [_vm._t("actions")], 2), _vm._v(" "), _c('ui-progress-linear', { - directives: [{ - name: "show", - rawName: "v-show", - value: (_vm.loading), - expression: "loading" - }], - staticClass: "ui-toolbar__progress", - attrs: { - "color": _vm.progressColor - } - })], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-b19a1326", esExports) - } -} - -/***/ }), -/* 183 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-datepicker-calendar", - class: _vm.classes - }, [_c('div', { - staticClass: "ui-datepicker-calendar__header" - }, [_c('div', { - staticClass: "ui-datepicker-calendar__header-year", - class: { - 'is-active': _vm.showYearPicker - }, - attrs: { - "tabindex": "0" - }, - on: { - "click": function($event) { - _vm.$emit('update:currentView', 'year') - }, - "keydown": function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - _vm.$emit('update:currentView', 'year') - } - } - }, [_vm._v(_vm._s(_vm.headerYear))]), _vm._v(" "), _c('div', { - staticClass: "ui-datepicker-calendar__header-date", - class: { - 'is-active': !_vm.showYearPicker - }, - attrs: { - "tabindex": "0" - }, - on: { - "click": function($event) { - _vm.$emit('update:currentView', 'date') - }, - "keydown": function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - _vm.$emit('update:currentView', 'date') - } - } - }, [_c('span', { - staticClass: "ui-datepicker-calendar__header-weekday" - }, [_vm._v(_vm._s(_vm.headerWeekday) + ", ")]), _vm._v(" "), _c('span', { - staticClass: "ui-datepicker-calendar__header-day" - }, [_vm._v(_vm._s(_vm.headerDay))])])]), _vm._v(" "), _c('ul', { - directives: [{ - name: "show", - rawName: "v-show", - value: (_vm.showYearPicker), - expression: "showYearPicker" - }], - ref: "years", - staticClass: "ui-datepicker-calendar__years" - }, _vm._l((_vm.yearRange), function(year) { - return (!_vm.isYearOutOfRange(year)) ? _c('li', { - staticClass: "ui-datepicker-calendar__year", - class: _vm.getYearClasses(year), - attrs: { - "tabindex": "0" - }, - on: { - "click": function($event) { - _vm.selectYear(year) - }, - "keydown": function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - _vm.selectYear(year) - } - } - }, [_vm._v(_vm._s(year))]) : _vm._e() - }), 0), _vm._v(" "), _c('div', { - directives: [{ - name: "show", - rawName: "v-show", - value: (!_vm.showYearPicker), - expression: "!showYearPicker" - }], - staticClass: "ui-datepicker-calendar__body" - }, [_c('ui-calendar-controls', { - ref: "controls", - attrs: { - "date-in-view": _vm.dateInView, - "lang": _vm.lang, - "max-date": _vm.maxDate, - "min-date": _vm.minDate, - "year-range": _vm.yearRange - }, - on: { - "go-to-date": _vm.onGoToDate - } - }), _vm._v(" "), _c('ui-calendar-month', { - ref: "month", - attrs: { - "square-cells": "", - "color": _vm.color, - "date-filter": _vm.dateFilter, - "date-in-view": _vm.dateInView, - "lang": _vm.lang, - "max-date": _vm.maxDate, - "min-date": _vm.minDate, - "selected": _vm.value, - "start-of-week": _vm.startOfWeek - }, - on: { - "change": _vm.onMonthChange, - "date-select": _vm.onDateSelect - } - })], 1)]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-b37986d0", esExports) - } -} - -/***/ }), -/* 184 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('label', { - staticClass: "ui-switch", - class: _vm.classes - }, [_c('div', { - staticClass: "ui-switch__input-wrapper" - }, [_c('input', { - ref: "input", - staticClass: "ui-switch__input", - attrs: { - "type": "checkbox", - "disabled": _vm.disabled, - "name": _vm.name, - "tabindex": _vm.tabindex - }, - domProps: { - "checked": _vm.isChecked, - "value": _vm.submittedValue - }, - on: { - "blur": _vm.onBlur, - "click": _vm.onClick, - "focus": _vm.onFocus - } - }), _vm._v(" "), _c('div', { - staticClass: "ui-switch__track" - }), _vm._v(" "), _vm._m(0)]), _vm._v(" "), (_vm.label || _vm.$slots.default) ? _c('div', { - staticClass: "ui-switch__label-text" - }, [_vm._t("default", [_vm._v(_vm._s(_vm.label))])], 2) : _vm._e()]) -} -var staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-switch__thumb" - }, [_c('div', { - staticClass: "ui-switch__focus-ring" - })]) -}] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-ba5ec29c", esExports) - } -} - -/***/ }), -/* 185 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: "ui-collapsible", - class: _vm.classes - }, [_c('div', { - staticClass: "ui-collapsible__header", - attrs: { - "aria-controls": _vm.id, - "aria-expanded": _vm.isOpen ? 'true' : 'false', - "tabindex": _vm.disabled ? null : 0 - }, - on: { - "click": _vm.toggleCollapsible, - "keydown": [function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { return null; } - $event.preventDefault(); - return _vm.toggleCollapsible($event) - }, function($event) { - if (!('button' in $event) && _vm._k($event.keyCode, "space", 32, $event.key, [" ", "Spacebar"])) { return null; } - $event.preventDefault(); - return _vm.toggleCollapsible($event) - }] - } - }, [_c('div', { - staticClass: "ui-collapsible__header-content" - }, [_vm._t("header", [_vm._v(_vm._s(_vm.title))])], 2), _vm._v(" "), (!_vm.removeIcon) ? _c('ui-icon', { - staticClass: "ui-collapsible__header-icon" - }, [_c('svg', { - attrs: { - "xmlns": "http://www.w3.org/2000/svg", - "width": "24", - "height": "24", - "viewBox": "0 0 24 24" - } - }, [_c('path', { - attrs: { - "d": "M7.406 7.828L12 12.422l4.594-4.594L18 9.234l-6 6-6-6z" - } - })])]) : _vm._e(), _vm._v(" "), (!_vm.disableRipple && !_vm.disabled) ? _c('ui-ripple-ink') : _vm._e()], 1), _vm._v(" "), _c('transition', { - on: { - "enter": _vm.onEnter, - "after-enter": _vm.afterEnter, - "before-leave": _vm.beforeLeave, - "leave": _vm.onLeave - } - }, [_c('div', { - directives: [{ - name: "show", - rawName: "v-show", - value: (_vm.isOpen), - expression: "isOpen" - }], - ref: "bodyWrapper", - staticClass: "ui-collapsible__body-wrapper", - attrs: { - "aria-hidden": _vm.isOpen ? null : 'true', - "id": _vm.id - } - }, [_c('div', { - staticClass: "ui-collapsible__body" - }, [_vm._t("default")], 2)])])], 1) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-ca040308", esExports) - } -} - -/***/ }), -/* 186 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('table', { - staticClass: "ui-calendar-month" - }, [_c('thead', { - staticClass: "ui-calendar-month__header" - }, [_c('tr', _vm._l((_vm.daysOfWeek), function(day) { - return _c('th', [_vm._v(_vm._s(day))]) - }), 0)]), _vm._v(" "), _c('tbody', { - staticClass: "ui-calendar-month__body" - }, _vm._l((_vm.currentWeekStartDates), function(date) { - return _c("ui-calendar-week", { - key: date.toString(), - tag: "tr", - attrs: { - "color": _vm.color, - "date-filter": _vm.dateFilter, - "max-date": _vm.maxDate, - "min-date": _vm.minDate, - "month": _vm.currentWeekStartDates[1].getMonth(), - "selected": _vm.selected, - "square-cells": _vm.squareCells, - "week-start": date - }, - on: { - "date-select": _vm.onDateSelect - }, - scopedSlots: _vm._u([{ - key: "default", - fn: function(props) { - return (_vm.$scopedSlots.date) ? [_vm._t("date", null, { - date: props.date - })] : undefined - } - }]) - }) - }), 1)]) -} -var staticRenderFns = [] -render._withStripped = true -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = esExports; -if (false) { - module.hot.accept() - if (module.hot.data) { - require("vue-hot-reload-api").rerender("data-v-e023bc58", esExports) - } -} - -/***/ }), -/* 187 */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); -} catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), -/* 188 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__bootstrap__ = __webpack_require__(29); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__configure__ = __webpack_require__(30); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_util__ = __webpack_require__(6); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__UiAlert_vue__ = __webpack_require__(31); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__UiAutocomplete_vue__ = __webpack_require__(32); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__UiButton_vue__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__UiCalendar_vue__ = __webpack_require__(33); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__UiCheckbox_vue__ = __webpack_require__(15); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__UiCheckboxGroup_vue__ = __webpack_require__(34); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__UiCloseButton_vue__ = __webpack_require__(10); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__UiCollapsible_vue__ = __webpack_require__(35); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__UiConfirm_vue__ = __webpack_require__(36); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__UiDatepicker_vue__ = __webpack_require__(37); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__UiDatepickerCalendar_vue__ = __webpack_require__(16); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__UiFab_vue__ = __webpack_require__(38); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__UiFileupload_vue__ = __webpack_require__(39); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__UiIcon_vue__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__UiIconButton_vue__ = __webpack_require__(11); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__UiMenu_vue__ = __webpack_require__(40); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__UiModal_vue__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__UiPopover_vue__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__UiPreloader_vue__ = __webpack_require__(41); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__UiProgressCircular_vue__ = __webpack_require__(8); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__UiProgressLinear_vue__ = __webpack_require__(17); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__UiRadio_vue__ = __webpack_require__(18); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__UiRadioGroup_vue__ = __webpack_require__(42); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__UiRippleInk_vue__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__UiSelect_vue__ = __webpack_require__(43); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__UiSlider_vue__ = __webpack_require__(44); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__UiSnackbar_vue__ = __webpack_require__(19); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__UiSnackbarContainer_vue__ = __webpack_require__(45); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__UiSwitch_vue__ = __webpack_require__(46); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__UiTab_vue__ = __webpack_require__(47); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__UiTabs_vue__ = __webpack_require__(48); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__UiTextbox_vue__ = __webpack_require__(49); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__UiToolbar_vue__ = __webpack_require__(50); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__UiTooltip_vue__ = __webpack_require__(9); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiAlert", function() { return __WEBPACK_IMPORTED_MODULE_3__UiAlert_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiAutocomplete", function() { return __WEBPACK_IMPORTED_MODULE_4__UiAutocomplete_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiButton", function() { return __WEBPACK_IMPORTED_MODULE_5__UiButton_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiCalendar", function() { return __WEBPACK_IMPORTED_MODULE_6__UiCalendar_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiCheckbox", function() { return __WEBPACK_IMPORTED_MODULE_7__UiCheckbox_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiCheckboxGroup", function() { return __WEBPACK_IMPORTED_MODULE_8__UiCheckboxGroup_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiCloseButton", function() { return __WEBPACK_IMPORTED_MODULE_9__UiCloseButton_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiCollapsible", function() { return __WEBPACK_IMPORTED_MODULE_10__UiCollapsible_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiConfirm", function() { return __WEBPACK_IMPORTED_MODULE_11__UiConfirm_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiDatepicker", function() { return __WEBPACK_IMPORTED_MODULE_12__UiDatepicker_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiDatepickerCalendar", function() { return __WEBPACK_IMPORTED_MODULE_13__UiDatepickerCalendar_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiFab", function() { return __WEBPACK_IMPORTED_MODULE_14__UiFab_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiFileupload", function() { return __WEBPACK_IMPORTED_MODULE_15__UiFileupload_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiIcon", function() { return __WEBPACK_IMPORTED_MODULE_16__UiIcon_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiIconButton", function() { return __WEBPACK_IMPORTED_MODULE_17__UiIconButton_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiMenu", function() { return __WEBPACK_IMPORTED_MODULE_18__UiMenu_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiModal", function() { return __WEBPACK_IMPORTED_MODULE_19__UiModal_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiPopover", function() { return __WEBPACK_IMPORTED_MODULE_20__UiPopover_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiPreloader", function() { return __WEBPACK_IMPORTED_MODULE_21__UiPreloader_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiProgressCircular", function() { return __WEBPACK_IMPORTED_MODULE_22__UiProgressCircular_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiProgressLinear", function() { return __WEBPACK_IMPORTED_MODULE_23__UiProgressLinear_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiRadio", function() { return __WEBPACK_IMPORTED_MODULE_24__UiRadio_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiRadioGroup", function() { return __WEBPACK_IMPORTED_MODULE_25__UiRadioGroup_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiRippleInk", function() { return __WEBPACK_IMPORTED_MODULE_26__UiRippleInk_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiSelect", function() { return __WEBPACK_IMPORTED_MODULE_27__UiSelect_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiSlider", function() { return __WEBPACK_IMPORTED_MODULE_28__UiSlider_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiSnackbar", function() { return __WEBPACK_IMPORTED_MODULE_29__UiSnackbar_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiSnackbarContainer", function() { return __WEBPACK_IMPORTED_MODULE_30__UiSnackbarContainer_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiSwitch", function() { return __WEBPACK_IMPORTED_MODULE_31__UiSwitch_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiTab", function() { return __WEBPACK_IMPORTED_MODULE_32__UiTab_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiTabs", function() { return __WEBPACK_IMPORTED_MODULE_33__UiTabs_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiTextbox", function() { return __WEBPACK_IMPORTED_MODULE_34__UiTextbox_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiToolbar", function() { return __WEBPACK_IMPORTED_MODULE_35__UiToolbar_vue__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UiTooltip", function() { return __WEBPACK_IMPORTED_MODULE_36__UiTooltip_vue__["a"]; }); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -var KeenUI = { - UiAlert: __WEBPACK_IMPORTED_MODULE_3__UiAlert_vue__["a" /* default */], - UiAutocomplete: __WEBPACK_IMPORTED_MODULE_4__UiAutocomplete_vue__["a" /* default */], - UiButton: __WEBPACK_IMPORTED_MODULE_5__UiButton_vue__["a" /* default */], - UiCalendar: __WEBPACK_IMPORTED_MODULE_6__UiCalendar_vue__["a" /* default */], - UiCheckbox: __WEBPACK_IMPORTED_MODULE_7__UiCheckbox_vue__["a" /* default */], - UiCheckboxGroup: __WEBPACK_IMPORTED_MODULE_8__UiCheckboxGroup_vue__["a" /* default */], - UiCloseButton: __WEBPACK_IMPORTED_MODULE_9__UiCloseButton_vue__["a" /* default */], - UiCollapsible: __WEBPACK_IMPORTED_MODULE_10__UiCollapsible_vue__["a" /* default */], - UiConfirm: __WEBPACK_IMPORTED_MODULE_11__UiConfirm_vue__["a" /* default */], - UiDatepicker: __WEBPACK_IMPORTED_MODULE_12__UiDatepicker_vue__["a" /* default */], - UiDatepickerCalendar: __WEBPACK_IMPORTED_MODULE_13__UiDatepickerCalendar_vue__["a" /* default */], - UiFab: __WEBPACK_IMPORTED_MODULE_14__UiFab_vue__["a" /* default */], - UiFileupload: __WEBPACK_IMPORTED_MODULE_15__UiFileupload_vue__["a" /* default */], - UiIcon: __WEBPACK_IMPORTED_MODULE_16__UiIcon_vue__["a" /* default */], - UiIconButton: __WEBPACK_IMPORTED_MODULE_17__UiIconButton_vue__["a" /* default */], - UiMenu: __WEBPACK_IMPORTED_MODULE_18__UiMenu_vue__["a" /* default */], - UiModal: __WEBPACK_IMPORTED_MODULE_19__UiModal_vue__["a" /* default */], - UiPopover: __WEBPACK_IMPORTED_MODULE_20__UiPopover_vue__["a" /* default */], - UiPreloader: __WEBPACK_IMPORTED_MODULE_21__UiPreloader_vue__["a" /* default */], - UiProgressCircular: __WEBPACK_IMPORTED_MODULE_22__UiProgressCircular_vue__["a" /* default */], - UiProgressLinear: __WEBPACK_IMPORTED_MODULE_23__UiProgressLinear_vue__["a" /* default */], - UiRadio: __WEBPACK_IMPORTED_MODULE_24__UiRadio_vue__["a" /* default */], - UiRadioGroup: __WEBPACK_IMPORTED_MODULE_25__UiRadioGroup_vue__["a" /* default */], - UiRippleInk: __WEBPACK_IMPORTED_MODULE_26__UiRippleInk_vue__["a" /* default */], - UiSelect: __WEBPACK_IMPORTED_MODULE_27__UiSelect_vue__["a" /* default */], - UiSlider: __WEBPACK_IMPORTED_MODULE_28__UiSlider_vue__["a" /* default */], - UiSnackbar: __WEBPACK_IMPORTED_MODULE_29__UiSnackbar_vue__["a" /* default */], - UiSnackbarContainer: __WEBPACK_IMPORTED_MODULE_30__UiSnackbarContainer_vue__["a" /* default */], - UiSwitch: __WEBPACK_IMPORTED_MODULE_31__UiSwitch_vue__["a" /* default */], - UiTab: __WEBPACK_IMPORTED_MODULE_32__UiTab_vue__["a" /* default */], - UiTabs: __WEBPACK_IMPORTED_MODULE_33__UiTabs_vue__["a" /* default */], - UiTextbox: __WEBPACK_IMPORTED_MODULE_34__UiTextbox_vue__["a" /* default */], - UiToolbar: __WEBPACK_IMPORTED_MODULE_35__UiToolbar_vue__["a" /* default */], - UiTooltip: __WEBPACK_IMPORTED_MODULE_36__UiTooltip_vue__["a" /* default */] -}; - -KeenUI.install = function (Vue) { - var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - Object.keys(config).forEach(function (key) { - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__helpers_util__["a" /* startsWith */])(key, 'Ui')) { - if (KeenUI[key] === undefined) { - return; - } - - var Component = KeenUI[key]; - var props = config[key]; - - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__configure__["a" /* default */])(Component, props); - } - }); - - Object.keys(KeenUI).forEach(function (key) { - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__helpers_util__["a" /* startsWith */])(key, 'Ui')) { - var Component = KeenUI[key]; - Vue.component(Component.name, Component); - } - }); -}; - -if (typeof window !== 'undefined' && window.Vue) { - window.Vue.use(KeenUI, window.KeenUiConfig); -} - -/* harmony default export */ __webpack_exports__["default"] = KeenUI; - - - -/***/ }) -/******/ ]); -}); \ No newline at end of file + if (typeof window !== "undefined") { + window.KeenUI = KeenUI; + } + exports2.UiAlert = UiAlert; + exports2.UiAutocomplete = UiAutocomplete; + exports2.UiButton = UiButton; + exports2.UiCalendar = UiCalendar; + exports2.UiCheckbox = UiCheckbox; + exports2.UiCheckboxGroup = UiCheckboxGroup; + exports2.UiCloseButton = UiCloseButton; + exports2.UiCollapsible = UiCollapsible; + exports2.UiConfirm = UiConfirm; + exports2.UiDatepicker = UiDatepicker; + exports2.UiDatepickerCalendar = UiDatepickerCalendar; + exports2.UiFab = UiFab; + exports2.UiFileupload = UiFileupload; + exports2.UiIcon = UiIcon; + exports2.UiIconButton = UiIconButton; + exports2.UiMenu = UiMenu; + exports2.UiModal = UiModal; + exports2.UiPopover = UiPopover; + exports2.UiPreloader = UiPreloader; + exports2.UiProgressCircular = UiProgressCircular; + exports2.UiProgressLinear = UiProgressLinear; + exports2.UiRadio = UiRadio; + exports2.UiRadioGroup = UiRadioGroup; + exports2.UiRippleInk = UiRippleInk; + exports2.UiSelect = UiSelect; + exports2.UiSlider = UiSlider; + exports2.UiSnackbar = UiSnackbar; + exports2.UiSnackbarContainer = UiSnackbarContainer; + exports2.UiSwitch = UiSwitch; + exports2.UiTab = UiTab; + exports2.UiTabs = UiTabs; + exports2.UiTextbox = UiTextbox; + exports2.UiToolbar = UiToolbar; + exports2.UiTooltip = UiTooltip; + exports2.install = install; + Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); +}); diff --git a/package.json b/package.json index a90ec04c..399b5178 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,23 @@ "name": "keen-ui", "version": "1.4.0", "description": "Keen UI is a Vue.js UI library with a simple API, inspired by Google's Material Design.", - "main": "dist/keen-ui.js", + "main": "./dist/keen-ui.js", + "module": "./dist/keen-ui.esm.js", + "exports": { + ".": { + "import": "./dist/keen-ui.esm.js", + "require": "./dist/keen-ui.js" + }, + "./keen-ui.css": "./dist/keen-ui.css", + "./src/*": { + "import": "./src/*" + }, + "./css/*": "./lib/css/*", + "./*": { + "import": "./lib/*.esm.js", + "require": "./lib/*.js" + } + }, "scripts": { "dev": "vite serve --config build/vite.config.docs.mjs docs-src", "build:dist": "vite build --config build/vite.config.dist.mjs --mode development", diff --git a/src/index.js b/src/index.js index 3438780e..11d049d6 100644 --- a/src/index.js +++ b/src/index.js @@ -74,7 +74,7 @@ const KeenUI = { UiTooltip, }; -KeenUI.install = function (app, config = {}) { +export function install(app, config = {}) { // Configure the component props Object.keys(config).forEach((key) => { if (startsWith(key, "Ui")) { @@ -96,15 +96,8 @@ KeenUI.install = function (app, config = {}) { app.component(Component.name, Component); } }); -}; - -// Make Keen UI available globally when in a browser environment -if (typeof window !== "undefined") { - window.KeenUI = KeenUI; } -export default KeenUI; - export { UiAlert, UiAutocomplete, @@ -141,3 +134,8 @@ export { UiToolbar, UiTooltip, }; + +export default { + ...KeenUI, + install, +}; diff --git a/usage-example-static/README.md b/usage-example-static/README.md new file mode 100644 index 00000000..9d69d10e --- /dev/null +++ b/usage-example-static/README.md @@ -0,0 +1,11 @@ +# Keen UI static usage example + +This is an example of using Vue + Keen UI via global script tags, without a build system like Vite or Webpack. + +## Usage + +- From the Keen UI root directory: + - Run `yarn` to install dependencies + - Run `yarn build:dist && yarn build:dist:prod` to build the library +- From this `usage-example-static` directory: + - Open the `index.html` file in your browser. If it's working you should see a message and some styled buttons. diff --git a/usage-example-static/index.html b/usage-example-static/index.html new file mode 100644 index 00000000..b4680038 --- /dev/null +++ b/usage-example-static/index.html @@ -0,0 +1,39 @@ + + + + + Keen UI Static Usage Example + + + + + +
+
{{ message }}
+
+ Button from Keen UI plugin +
+
+ Button from component registration +
+ + + + diff --git a/usage-example-vite/.gitignore b/usage-example-vite/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/usage-example-vite/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/usage-example-vite/README.md b/usage-example-vite/README.md new file mode 100644 index 00000000..ea17e0dc --- /dev/null +++ b/usage-example-vite/README.md @@ -0,0 +1,18 @@ +# Keen UI Vite usage example + +This is an example Vite project to test the usage of Keen UI: + +- using the default export and named exports +- using lib exports +- using the Keen UI `.vue` source files directly + +## Usage + +- From the Keen UI root directory: + - Run `yarn` to install dependencies + - Run `yarn build:all && yarn build:all:prod` to build the library + - Run `yarn link` +- From this `usage-example-vite` directory: + - Run `yarn` to install dependencies + - Run `yarn link keen-ui` to link the local Keen UI build to the example project + - Run `yarn dev` to start Vite and visit the URL shown to view the example diff --git a/usage-example-vite/index.html b/usage-example-vite/index.html new file mode 100644 index 00000000..795e4fba --- /dev/null +++ b/usage-example-vite/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + Vue + + +
+ + + diff --git a/usage-example-vite/package.json b/usage-example-vite/package.json new file mode 100644 index 00000000..acd369bf --- /dev/null +++ b/usage-example-vite/package.json @@ -0,0 +1,18 @@ +{ + "name": "usage-test", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "vue": "^3.2.45" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.0.0", + "vite": "^4.0.0" + } +} diff --git a/usage-example-vite/public/vite.svg b/usage-example-vite/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/usage-example-vite/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/usage-example-vite/src/App.vue b/usage-example-vite/src/App.vue new file mode 100644 index 00000000..725f57dc --- /dev/null +++ b/usage-example-vite/src/App.vue @@ -0,0 +1,20 @@ + + + diff --git a/usage-example-vite/src/components/UsesDefaultExport.vue b/usage-example-vite/src/components/UsesDefaultExport.vue new file mode 100644 index 00000000..666df22e --- /dev/null +++ b/usage-example-vite/src/components/UsesDefaultExport.vue @@ -0,0 +1,10 @@ + + + diff --git a/usage-example-vite/src/components/UsesLibExport.vue b/usage-example-vite/src/components/UsesLibExport.vue new file mode 100644 index 00000000..92e36c04 --- /dev/null +++ b/usage-example-vite/src/components/UsesLibExport.vue @@ -0,0 +1,10 @@ + + + diff --git a/usage-example-vite/src/components/UsesNamedExport.vue b/usage-example-vite/src/components/UsesNamedExport.vue new file mode 100644 index 00000000..8b85d5cd --- /dev/null +++ b/usage-example-vite/src/components/UsesNamedExport.vue @@ -0,0 +1,10 @@ + + + diff --git a/usage-example-vite/src/components/UsesSrcExport.vue b/usage-example-vite/src/components/UsesSrcExport.vue new file mode 100644 index 00000000..93d678e2 --- /dev/null +++ b/usage-example-vite/src/components/UsesSrcExport.vue @@ -0,0 +1,7 @@ + + + diff --git a/usage-example-vite/src/main.js b/usage-example-vite/src/main.js new file mode 100644 index 00000000..6b98efe7 --- /dev/null +++ b/usage-example-vite/src/main.js @@ -0,0 +1,7 @@ +import { createApp } from 'vue' + +import './style.css' + +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/usage-example-vite/src/style.css b/usage-example-vite/src/style.css new file mode 100644 index 00000000..3ad6ba79 --- /dev/null +++ b/usage-example-vite/src/style.css @@ -0,0 +1,9 @@ +* { + box-sizing: border-box; +} + +:root { + font-family: system-ui, sans-serif; + font-size: 16px; + text-align: center; +} diff --git a/usage-example-vite/vite.config.js b/usage-example-vite/vite.config.js new file mode 100644 index 00000000..05c17402 --- /dev/null +++ b/usage-example-vite/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], +}) diff --git a/usage-example-vite/yarn.lock b/usage-example-vite/yarn.lock new file mode 100644 index 00000000..d4bf7fed --- /dev/null +++ b/usage-example-vite/yarn.lock @@ -0,0 +1,365 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/parser@^7.16.4": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" + integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== + +"@esbuild/android-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" + integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== + +"@esbuild/android-arm@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" + integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== + +"@esbuild/android-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" + integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== + +"@esbuild/darwin-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" + integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== + +"@esbuild/darwin-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" + integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== + +"@esbuild/freebsd-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" + integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== + +"@esbuild/freebsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" + integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== + +"@esbuild/linux-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" + integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== + +"@esbuild/linux-arm@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" + integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== + +"@esbuild/linux-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" + integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== + +"@esbuild/linux-loong64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" + integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== + +"@esbuild/linux-mips64el@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" + integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== + +"@esbuild/linux-ppc64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" + integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== + +"@esbuild/linux-riscv64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" + integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== + +"@esbuild/linux-s390x@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" + integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== + +"@esbuild/linux-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" + integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== + +"@esbuild/netbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" + integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== + +"@esbuild/openbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" + integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== + +"@esbuild/sunos-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" + integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== + +"@esbuild/win32-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" + integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== + +"@esbuild/win32-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" + integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== + +"@esbuild/win32-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" + integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== + +"@vitejs/plugin-vue@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz#93815beffd23db46288c787352a8ea31a0c03e5e" + integrity sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA== + +"@vue/compiler-core@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz#d9311207d96f6ebd5f4660be129fb99f01ddb41b" + integrity sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/shared" "3.2.45" + estree-walker "^2.0.2" + source-map "^0.6.1" + +"@vue/compiler-dom@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz#c43cc15e50da62ecc16a42f2622d25dc5fd97dce" + integrity sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw== + dependencies: + "@vue/compiler-core" "3.2.45" + "@vue/shared" "3.2.45" + +"@vue/compiler-sfc@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz#7f7989cc04ec9e7c55acd406827a2c4e96872c70" + integrity sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.45" + "@vue/compiler-dom" "3.2.45" + "@vue/compiler-ssr" "3.2.45" + "@vue/reactivity-transform" "3.2.45" + "@vue/shared" "3.2.45" + estree-walker "^2.0.2" + magic-string "^0.25.7" + postcss "^8.1.10" + source-map "^0.6.1" + +"@vue/compiler-ssr@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz#bd20604b6e64ea15344d5b6278c4141191c983b2" + integrity sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ== + dependencies: + "@vue/compiler-dom" "3.2.45" + "@vue/shared" "3.2.45" + +"@vue/reactivity-transform@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz#07ac83b8138550c83dfb50db43cde1e0e5e8124d" + integrity sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.45" + "@vue/shared" "3.2.45" + estree-walker "^2.0.2" + magic-string "^0.25.7" + +"@vue/reactivity@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.45.tgz#412a45b574de601be5a4a5d9a8cbd4dee4662ff0" + integrity sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A== + dependencies: + "@vue/shared" "3.2.45" + +"@vue/runtime-core@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz#7ad7ef9b2519d41062a30c6fa001ec43ac549c7f" + integrity sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A== + dependencies: + "@vue/reactivity" "3.2.45" + "@vue/shared" "3.2.45" + +"@vue/runtime-dom@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz#1a2ef6ee2ad876206fbbe2a884554bba2d0faf59" + integrity sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA== + dependencies: + "@vue/runtime-core" "3.2.45" + "@vue/shared" "3.2.45" + csstype "^2.6.8" + +"@vue/server-renderer@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz#ca9306a0c12b0530a1a250e44f4a0abac6b81f3f" + integrity sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g== + dependencies: + "@vue/compiler-ssr" "3.2.45" + "@vue/shared" "3.2.45" + +"@vue/shared@3.2.45": + version "3.2.45" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2" + integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg== + +csstype@^2.6.8: + version "2.6.21" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" + integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== + +esbuild@^0.16.3: + version "0.16.17" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" + integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg== + optionalDependencies: + "@esbuild/android-arm" "0.16.17" + "@esbuild/android-arm64" "0.16.17" + "@esbuild/android-x64" "0.16.17" + "@esbuild/darwin-arm64" "0.16.17" + "@esbuild/darwin-x64" "0.16.17" + "@esbuild/freebsd-arm64" "0.16.17" + "@esbuild/freebsd-x64" "0.16.17" + "@esbuild/linux-arm" "0.16.17" + "@esbuild/linux-arm64" "0.16.17" + "@esbuild/linux-ia32" "0.16.17" + "@esbuild/linux-loong64" "0.16.17" + "@esbuild/linux-mips64el" "0.16.17" + "@esbuild/linux-ppc64" "0.16.17" + "@esbuild/linux-riscv64" "0.16.17" + "@esbuild/linux-s390x" "0.16.17" + "@esbuild/linux-x64" "0.16.17" + "@esbuild/netbsd-x64" "0.16.17" + "@esbuild/openbsd-x64" "0.16.17" + "@esbuild/sunos-x64" "0.16.17" + "@esbuild/win32-arm64" "0.16.17" + "@esbuild/win32-ia32" "0.16.17" + "@esbuild/win32-x64" "0.16.17" + +estree-walker@^2.0.2: + 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== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +postcss@^8.1.10, postcss@^8.4.20: + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rollup@^3.7.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.10.0.tgz#6eb19196d8b3b375ca651cb78261faac48e24cd6" + integrity sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA== + optionalDependencies: + fsevents "~2.3.2" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +vite@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.0.4.tgz#4612ce0b47bbb233a887a54a4ae0c6e240a0da31" + integrity sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw== + dependencies: + esbuild "^0.16.3" + postcss "^8.4.20" + resolve "^1.22.1" + rollup "^3.7.0" + optionalDependencies: + fsevents "~2.3.2" + +vue@^3.2.45: + version "3.2.45" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.45.tgz#94a116784447eb7dbd892167784619fef379b3c8" + integrity sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA== + dependencies: + "@vue/compiler-dom" "3.2.45" + "@vue/compiler-sfc" "3.2.45" + "@vue/runtime-dom" "3.2.45" + "@vue/server-renderer" "3.2.45" + "@vue/shared" "3.2.45"