vuetify 2.3.11 → 2.3.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/json/attributes.json +29 -17
- package/dist/json/tags.json +8 -0
- package/dist/json/web-types.json +217 -78
- package/dist/vuetify.css +17 -11
- package/dist/vuetify.css.map +1 -1
- package/dist/vuetify.js +215 -177
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VAutocomplete/VAutocomplete.js +4 -2
- package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/es5/components/VCalendar/VCalendar.js +1 -1
- package/es5/components/VCalendar/VCalendar.js.map +1 -1
- package/es5/components/VCalendar/util/events.js.map +1 -1
- package/es5/components/VCalendar/util/timestamp.js.map +1 -1
- package/es5/components/VColorPicker/VColorPickerEdit.js +36 -42
- package/es5/components/VColorPicker/VColorPickerEdit.js.map +1 -1
- package/es5/components/VCombobox/VCombobox.js +3 -1
- package/es5/components/VCombobox/VCombobox.js.map +1 -1
- package/es5/components/VData/VData.js +1 -2
- package/es5/components/VData/VData.js.map +1 -1
- package/es5/components/VDataIterator/VDataIterator.js +1 -1
- package/es5/components/VDataIterator/VDataIterator.js.map +1 -1
- package/es5/components/VDataTable/VDataTableHeaderDesktop.js +1 -1
- package/es5/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
- package/es5/components/VDatePicker/VDatePicker.js +1 -3
- package/es5/components/VDatePicker/VDatePicker.js.map +1 -1
- package/es5/components/VIcon/VIcon.js +11 -4
- package/es5/components/VIcon/VIcon.js.map +1 -1
- package/es5/components/VList/VListItem.js +1 -1
- package/es5/components/VList/VListItem.js.map +1 -1
- package/es5/components/VMenu/VMenu.js +4 -4
- package/es5/components/VMenu/VMenu.js.map +1 -1
- package/es5/components/VNavigationDrawer/VNavigationDrawer.js +6 -7
- package/es5/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
- package/es5/components/VOverflowBtn/VOverflowBtn.js +1 -1
- package/es5/components/VOverflowBtn/VOverflowBtn.js.map +1 -1
- package/es5/components/VSelect/VSelect.js +50 -45
- package/es5/components/VSelect/VSelect.js.map +1 -1
- package/es5/components/VSelect/VSelectList.js +2 -2
- package/es5/components/VSelect/VSelectList.js.map +1 -1
- package/es5/components/VSlider/VSlider.js +1 -2
- package/es5/components/VSlider/VSlider.js.map +1 -1
- package/es5/components/VTextField/VTextField.js +18 -6
- package/es5/components/VTextField/VTextField.js.map +1 -1
- package/es5/components/VWindow/VWindow.js +3 -3
- package/es5/components/VWindow/VWindow.js.map +1 -1
- package/es5/components/transitions/expand-transition.js.map +1 -1
- package/es5/directives/click-outside/index.js +1 -7
- package/es5/directives/click-outside/index.js.map +1 -1
- package/es5/directives/ripple/index.js +3 -3
- package/es5/directives/ripple/index.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/install.js +1 -1
- package/es5/install.js.map +1 -1
- package/es5/locale/ca.js +1 -1
- package/es5/locale/ca.js.map +1 -1
- package/es5/locale/fr.js +2 -2
- package/es5/locale/fr.js.map +1 -1
- package/es5/locale/it.js +3 -3
- package/es5/locale/it.js.map +1 -1
- package/es5/locale/th.js +17 -17
- package/es5/locale/th.js.map +1 -1
- package/es5/mixins/groupable/index.js +1 -1
- package/es5/mixins/groupable/index.js.map +1 -1
- package/es5/mixins/proxyable/index.js +1 -1
- package/es5/mixins/proxyable/index.js.map +1 -1
- package/es5/mixins/themeable/index.js +9 -10
- package/es5/mixins/themeable/index.js.map +1 -1
- package/es5/mixins/toggleable/index.js +1 -1
- package/es5/mixins/toggleable/index.js.map +1 -1
- package/es5/services/goto/index.js +0 -1
- package/es5/services/goto/index.js.map +1 -1
- package/es5/services/icons/presets/mdi.js +1 -1
- package/es5/services/icons/presets/mdi.js.map +1 -1
- package/es5/services/theme/index.js +3 -2
- package/es5/services/theme/index.js.map +1 -1
- package/es5/util/helpers.js +3 -3
- package/es5/util/helpers.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +4 -2
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VCalendar/VCalendar.js +1 -1
- package/lib/components/VCalendar/VCalendar.js.map +1 -1
- package/lib/components/VCalendar/util/events.js.map +1 -1
- package/lib/components/VCalendar/util/timestamp.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.js +31 -37
- package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.js +3 -1
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VData/VData.js +1 -2
- package/lib/components/VData/VData.js.map +1 -1
- package/lib/components/VDataIterator/VDataIterator.js +1 -1
- package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaderDesktop.js +1 -1
- package/lib/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.js +1 -3
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VIcon/VIcon.js +11 -4
- package/lib/components/VIcon/VIcon.js.map +1 -1
- package/lib/components/VList/VListItem.js +1 -1
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VMenu/VMenu.js +4 -4
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.js +6 -7
- package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
- package/lib/components/VOverflowBtn/VOverflowBtn.js +1 -1
- package/lib/components/VOverflowBtn/VOverflowBtn.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +6 -6
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelect/VSelectList.js +2 -2
- package/lib/components/VSelect/VSelectList.js.map +1 -1
- package/lib/components/VSlider/VSlider.js +1 -2
- package/lib/components/VSlider/VSlider.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +8 -6
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VWindow/VWindow.js +3 -3
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/components/transitions/expand-transition.js.map +1 -1
- package/lib/directives/click-outside/index.js +1 -7
- package/lib/directives/click-outside/index.js.map +1 -1
- package/lib/directives/ripple/index.js +3 -3
- package/lib/directives/ripple/index.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/install.js +4 -1
- package/lib/install.js.map +1 -1
- package/lib/locale/ca.js +1 -1
- package/lib/locale/ca.js.map +1 -1
- package/lib/locale/fr.js +2 -2
- package/lib/locale/fr.js.map +1 -1
- package/lib/locale/it.js +3 -3
- package/lib/locale/it.js.map +1 -1
- package/lib/locale/th.js +17 -17
- package/lib/locale/th.js.map +1 -1
- package/lib/mixins/groupable/index.js +1 -1
- package/lib/mixins/groupable/index.js.map +1 -1
- package/lib/mixins/proxyable/index.js +1 -1
- package/lib/mixins/proxyable/index.js.map +1 -1
- package/lib/mixins/themeable/index.js +9 -9
- package/lib/mixins/themeable/index.js.map +1 -1
- package/lib/mixins/toggleable/index.js +1 -1
- package/lib/mixins/toggleable/index.js.map +1 -1
- package/lib/services/goto/index.js +0 -1
- package/lib/services/goto/index.js.map +1 -1
- package/lib/services/icons/presets/mdi.js +1 -1
- package/lib/services/icons/presets/mdi.js.map +1 -1
- package/lib/services/theme/index.js +3 -2
- package/lib/services/theme/index.js.map +1 -1
- package/lib/util/helpers.js +3 -3
- package/lib/util/helpers.js.map +1 -1
- package/package.json +10 -11
- package/src/components/VAppBar/__tests__/VAppBar.spec.ts +1 -1
- package/src/components/VAutocomplete/VAutocomplete.ts +2 -2
- package/src/components/VAutocomplete/__tests__/VAutocomplete2.spec.ts +1 -1
- package/src/components/VBanner/__tests__/VBanner.spec.ts +4 -4
- package/src/components/VCalendar/VCalendar.ts +1 -1
- package/src/components/VCalendar/mixins/__tests__/calendar-with-events.spec.ts +4 -5
- package/src/components/VCalendar/util/__tests__/events.spec.ts +1 -1
- package/src/components/VCalendar/util/__tests__/timestamp.spec.ts +6 -6
- package/src/components/VCalendar/util/events.ts +1 -1
- package/src/components/VCalendar/util/timestamp.ts +2 -2
- package/src/components/VColorPicker/VColorPickerEdit.ts +35 -38
- package/src/components/VColorPicker/__tests__/VColorPicker.spec.ts +2 -11
- package/src/components/VColorPicker/__tests__/__snapshots__/VColorPicker.spec.ts.snap +0 -154
- package/src/components/VCombobox/VCombobox.ts +1 -1
- package/src/components/VData/VData.ts +1 -3
- package/src/components/VDataIterator/VDataIterator.ts +1 -1
- package/src/components/VDataTable/VDataTable.sass +18 -11
- package/src/components/VDataTable/VDataTableHeaderDesktop.ts +1 -1
- package/src/components/VDataTable/__tests__/VDataTable.spec.ts +2 -0
- package/src/components/VDataTable/__tests__/VDataTableHeader.spec.ts +1 -1
- package/src/components/VDataTable/__tests__/VEditDialog.spec.ts +1 -1
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +238 -0
- package/src/components/VDatePicker/VDatePicker.ts +4 -3
- package/src/components/VDatePicker/__tests__/VDatePicker.date.spec.ts +7 -5
- package/src/components/VDialog/__tests__/VDialog.spec.ts +4 -0
- package/src/components/VExpansionPanel/__tests__/VExpansionPanel.spec.ts +4 -4
- package/src/components/VForm/__tests__/VForm.spec.ts +12 -62
- package/src/components/VGrid/__tests__/VCol.spec.ts +2 -2
- package/src/components/VHover/__tests__/VHover.spec.ts +7 -13
- package/src/components/VIcon/VIcon.sass +6 -1
- package/src/components/VIcon/VIcon.ts +10 -4
- package/src/components/VIcon/__tests__/__snapshots__/VIcon.spec.ts.snap +6 -9
- package/src/components/VList/VListItem.ts +2 -2
- package/src/components/VMenu/VMenu.ts +5 -5
- package/src/components/VNavigationDrawer/VNavigationDrawer.ts +7 -9
- package/src/components/VNavigationDrawer/__tests__/VNavigationDrawer.spec.ts +34 -22
- package/src/components/VOverflowBtn/VOverflowBtn.ts +1 -1
- package/src/components/VProgressCircular/_variables.scss +1 -1
- package/src/components/VProgressLinear/VProgressLinear.sass +0 -2
- package/src/components/VProgressLinear/__tests__/VProgressLinear.spec.ts +1 -0
- package/src/components/VProgressLinear/__tests__/__snapshots__/VProgressLinear.spec.ts.snap +1 -1
- package/src/components/VRadioGroup/__tests__/VRadio.spec.ts +0 -15
- package/src/components/VRadioGroup/__tests__/__snapshots__/VRadio.spec.ts.snap +3 -3
- package/src/components/VRating/__tests__/VRating.spec.ts +1 -1
- package/src/components/VSelect/VSelect.ts +5 -4
- package/src/components/VSelect/VSelectList.ts +1 -1
- package/src/components/VSelect/__tests__/VSelect.spec.ts +5 -0
- package/src/components/VSelect/__tests__/VSelect2.spec.ts +4 -0
- package/src/components/VSelect/__tests__/VSelect3.spec.ts +47 -24
- package/src/components/VSelect/__tests__/VSelect4.spec.ts +4 -0
- package/src/components/VSelect/__tests__/__snapshots__/VSelect3.spec.ts.snap +280 -0
- package/src/components/VSlideGroup/__tests__/VSlideGroup.spec.ts +1 -1
- package/src/components/VSlider/VSlider.ts +1 -3
- package/src/components/VSnackbar/__tests__/VSnackbar.spec.ts +0 -15
- package/src/components/VTabs/VTabs.sass +1 -2
- package/src/components/VTextField/VTextField.ts +9 -6
- package/src/components/VTextField/__tests__/VTextField.spec.ts +1 -0
- package/src/components/VTextarea/__tests__/VTextarea.spec.ts +1 -1
- package/src/components/VTreeview/__tests__/VTreeview.spec.ts +23 -19
- package/src/components/VVirtualScroll/__tests__/VVirtualScroll.spec.ts +1 -1
- package/src/components/VWindow/VWindow.ts +2 -2
- package/src/components/VWindow/__tests__/VWindow.spec.ts +1 -1
- package/src/components/transitions/expand-transition.ts +4 -4
- package/src/directives/click-outside/index.ts +0 -9
- package/src/directives/intersect/__tests__/intersect.spec.ts +2 -2
- package/src/directives/ripple/__tests__/ripple.spec.ts +4 -4
- package/src/directives/ripple/index.ts +3 -3
- package/src/directives/touch/__tests__/touch.spec.ts +1 -1
- package/src/install.ts +4 -1
- package/src/locale/ca.ts +1 -1
- package/src/locale/fr.ts +2 -2
- package/src/locale/it.ts +3 -3
- package/src/locale/th.ts +17 -17
- package/src/mixins/activatable/__tests__/activatable.spec.ts +1 -1
- package/src/mixins/detachable/__tests__/detachable.spec.ts +0 -26
- package/src/mixins/groupable/index.ts +1 -2
- package/src/mixins/proxyable/index.ts +1 -2
- package/src/mixins/scrollable/__tests__/scrollable.spec.ts +1 -1
- package/src/mixins/themeable/index.ts +11 -12
- package/src/mixins/toggleable/index.ts +1 -2
- package/src/mixins/validatable/__tests__/validatable.spec.ts +1 -1
- package/src/services/application/__tests__/application.spec.ts +1 -1
- package/src/services/goto/__tests__/goto.spec.ts +1 -1
- package/src/services/goto/index.ts +0 -1
- package/src/services/icons/__tests__/__snapshots__/icons.spec.ts.snap +1 -1
- package/src/services/icons/presets/mdi.ts +1 -1
- package/src/services/theme/__tests__/theme.spec.ts +2 -2
- package/src/services/theme/index.ts +2 -2
- package/src/styles/settings/_dark.scss +14 -11
- package/src/util/__tests__/helpers.spec.ts +1 -1
- package/src/util/helpers.ts +7 -3
- package/types/index.d.ts +1 -0
- package/types/services/icons.d.ts +3 -0
- package/src/mixins/groupable/__tests__/groupable.spec.ts +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/theme/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-multi-spaces */\n// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as ThemeUtils from './utils'\nimport { getNestedValue } from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyParsedTheme,\n VuetifyThemes,\n VuetifyThemeVariant,\n Theme as ITheme,\n} from 'vuetify/types/services/theme'\n\nexport class Theme extends Service {\n static property: 'theme' = 'theme'\n\n public disabled = false\n\n public options: ITheme['options']\n\n public styleEl?: HTMLStyleElement\n\n public themes: VuetifyThemes\n\n public defaults: VuetifyThemes\n\n private isDark = null as boolean | null\n\n private unwatch = null as (() => void) | null\n\n private vueMeta = null as any | null\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n dark,\n disable,\n options,\n themes,\n } = preset[Theme.property]\n\n this.dark = Boolean(dark)\n this.defaults = this.themes = themes\n this.options = options\n\n if (disable) {\n this.disabled = true\n\n return\n }\n\n this.themes = {\n dark: this.fillVariant(themes.dark, true),\n light: this.fillVariant(themes.light, false),\n }\n }\n\n // When setting css, check for element\n // and apply new values\n set css (val: string) {\n if (this.vueMeta) {\n if (this.isVueMeta23) {\n this.applyVueMeta23()\n }\n return\n }\n this.checkOrCreateStyleElement() && (this.styleEl!.innerHTML = val)\n }\n\n set dark (val: boolean) {\n const oldDark = this.isDark\n\n this.isDark = val\n // Only apply theme after dark\n // has already been set before\n oldDark != null && this.applyTheme()\n }\n\n get dark () {\n return Boolean(this.isDark)\n }\n\n // Apply current theme default\n // only called on client side\n public applyTheme (): void {\n if (this.disabled) return this.clearCss()\n\n this.css = this.generatedStyles\n }\n\n public clearCss (): void {\n this.css = ''\n }\n\n // Initialize theme for SSR and SPA\n // Attach to ssrContext head or\n // apply new theme to document\n public init (root: Vue, ssrContext?: any): void {\n if (this.disabled) return\n\n /* istanbul ignore else */\n if ((root as any).$meta) {\n this.initVueMeta(root)\n } else if (ssrContext) {\n this.initSSR(ssrContext)\n }\n\n this.initTheme(root)\n }\n\n // Allows for you to set target theme\n public setTheme (theme: 'light' | 'dark', value: object) {\n this.themes[theme] = Object.assign(this.themes[theme], value)\n this.applyTheme()\n }\n\n // Reset theme defaults\n public resetThemes () {\n this.themes.light = Object.assign({}, this.defaults.light)\n this.themes.dark = Object.assign({}, this.defaults.dark)\n this.applyTheme()\n }\n\n // Check for existence of style element\n private checkOrCreateStyleElement (): boolean {\n this.styleEl = document.getElementById('vuetify-theme-stylesheet') as HTMLStyleElement\n\n /* istanbul ignore next */\n if (this.styleEl) return true\n\n this.genStyleElement() // If doesn't have it, create it\n\n return Boolean(this.styleEl)\n }\n\n private fillVariant (\n theme: Partial<VuetifyThemeVariant> = {},\n dark: boolean\n ): VuetifyThemeVariant {\n const defaultTheme = this.themes[dark ? 'dark' : 'light']\n\n return Object.assign({},\n defaultTheme,\n theme\n )\n }\n\n // Generate the style element\n // if applicable\n private genStyleElement (): void {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return\n\n /* istanbul ignore next */\n this.styleEl = document.createElement('style')\n this.styleEl.type = 'text/css'\n this.styleEl.id = 'vuetify-theme-stylesheet'\n\n if (this.options.cspNonce) {\n this.styleEl.setAttribute('nonce', this.options.cspNonce)\n }\n\n document.head.appendChild(this.styleEl)\n }\n\n private initVueMeta (root: any) {\n this.vueMeta = root.$meta()\n if (this.isVueMeta23) {\n // vue-meta needs to apply after mounted()\n root.$nextTick(() => {\n this.applyVueMeta23()\n })\n return\n }\n\n const metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo'\n const metaInfo = root.$options[metaKeyName] || {}\n\n root.$options[metaKeyName] = () => {\n metaInfo.style = metaInfo.style || []\n\n const vuetifyStylesheet = metaInfo.style.find((s: any) => s.id === 'vuetify-theme-stylesheet')\n\n if (!vuetifyStylesheet) {\n metaInfo.style.push({\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: (this.options || {}).cspNonce,\n })\n } else {\n vuetifyStylesheet.cssText = this.generatedStyles\n }\n\n return metaInfo\n }\n }\n\n private applyVueMeta23 () {\n const { set } = this.vueMeta.addApp('vuetify')\n\n set({\n style: [{\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: this.options.cspNonce,\n }],\n })\n }\n\n private initSSR (ssrContext?: any) {\n // SSR\n const nonce = this.options.cspNonce ? ` nonce=\"${this.options.cspNonce}\"` : ''\n ssrContext.head = ssrContext.head || ''\n ssrContext.head += `<style type=\"text/css\" id=\"vuetify-theme-stylesheet\"${nonce}>${this.generatedStyles}</style>`\n }\n\n private initTheme (root: Vue) {\n // Only watch for reactivity on client side\n if (typeof document === 'undefined') return\n\n // If we get here somehow, ensure\n // existing instance is removed\n if (this.unwatch) {\n this.unwatch()\n this.unwatch = null\n }\n\n // TODO: Update to use RFC if merged\n // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n root.$once('hook:created', () => {\n const obs = Vue.observable({ themes: this.themes })\n this.unwatch = root.$watch(() => obs.themes, () => this.applyTheme(), { deep: true })\n })\n this.applyTheme()\n }\n\n get currentTheme () {\n const target = this.dark ? 'dark' : 'light'\n\n return this.themes[target]\n }\n\n get generatedStyles (): string {\n const theme = this.parsedTheme\n /* istanbul ignore next */\n const options = this.options || {}\n let css\n\n if (options.themeCache != null) {\n css = options.themeCache.get(theme)\n /* istanbul ignore if */\n if (css != null) return css\n }\n\n css = ThemeUtils.genStyles(theme, options.customProperties)\n\n if (options.minifyTheme != null) {\n css = options.minifyTheme(css)\n }\n\n if (options.themeCache != null) {\n options.themeCache.set(theme, css)\n }\n\n return css\n }\n\n get parsedTheme (): VuetifyParsedTheme {\n return ThemeUtils.parse(\n this.currentTheme || {},\n undefined,\n getNestedValue(this.options, ['variations'], true)\n )\n }\n\n // Is using v2.3 of vue-meta\n // https://github.com/nuxt/vue-meta/releases/tag/v2.3.0\n private get isVueMeta23 (): boolean {\n return typeof this.vueMeta.addApp === 'function'\n }\n}\n"],"sourceRoot":"","file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/services/theme/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-multi-spaces */\n// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as ThemeUtils from './utils'\nimport { getNestedValue } from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyParsedTheme,\n VuetifyThemes,\n VuetifyThemeVariant,\n Theme as ITheme,\n} from 'vuetify/types/services/theme'\n\nexport class Theme extends Service {\n static property: 'theme' = 'theme'\n\n public disabled = false\n\n public options: ITheme['options']\n\n public styleEl?: HTMLStyleElement\n\n public themes: VuetifyThemes\n\n public defaults: VuetifyThemes\n\n private isDark = null as boolean | null\n\n private unwatch = null as (() => void) | null\n\n private vueMeta = null as any | null\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n dark,\n disable,\n options,\n themes,\n } = preset[Theme.property]\n\n this.dark = Boolean(dark)\n this.defaults = this.themes = themes\n this.options = options\n\n if (disable) {\n this.disabled = true\n\n return\n }\n\n this.themes = {\n dark: this.fillVariant(themes.dark, true),\n light: this.fillVariant(themes.light, false),\n }\n }\n\n // When setting css, check for element and apply new values\n /* eslint-disable-next-line accessor-pairs */\n set css (val: string) {\n if (this.vueMeta) {\n if (this.isVueMeta23) {\n this.applyVueMeta23()\n }\n return\n }\n this.checkOrCreateStyleElement() && (this.styleEl!.innerHTML = val)\n }\n\n set dark (val: boolean) {\n const oldDark = this.isDark\n\n this.isDark = val\n // Only apply theme after dark\n // has already been set before\n oldDark != null && this.applyTheme()\n }\n\n get dark () {\n return Boolean(this.isDark)\n }\n\n // Apply current theme default\n // only called on client side\n public applyTheme (): void {\n if (this.disabled) return this.clearCss()\n\n this.css = this.generatedStyles\n }\n\n public clearCss (): void {\n this.css = ''\n }\n\n // Initialize theme for SSR and SPA\n // Attach to ssrContext head or\n // apply new theme to document\n public init (root: Vue, ssrContext?: any): void {\n if (this.disabled) return\n\n /* istanbul ignore else */\n if ((root as any).$meta) {\n this.initVueMeta(root)\n } else if (ssrContext) {\n this.initSSR(ssrContext)\n }\n\n this.initTheme(root)\n }\n\n // Allows for you to set target theme\n public setTheme (theme: 'light' | 'dark', value: object) {\n this.themes[theme] = Object.assign(this.themes[theme], value)\n this.applyTheme()\n }\n\n // Reset theme defaults\n public resetThemes () {\n this.themes.light = Object.assign({}, this.defaults.light)\n this.themes.dark = Object.assign({}, this.defaults.dark)\n this.applyTheme()\n }\n\n // Check for existence of style element\n private checkOrCreateStyleElement (): boolean {\n this.styleEl = document.getElementById('vuetify-theme-stylesheet') as HTMLStyleElement\n\n /* istanbul ignore next */\n if (this.styleEl) return true\n\n this.genStyleElement() // If doesn't have it, create it\n\n return Boolean(this.styleEl)\n }\n\n private fillVariant (\n theme: Partial<VuetifyThemeVariant> = {},\n dark: boolean\n ): VuetifyThemeVariant {\n const defaultTheme = this.themes[dark ? 'dark' : 'light']\n\n return Object.assign({},\n defaultTheme,\n theme\n )\n }\n\n // Generate the style element\n // if applicable\n private genStyleElement (): void {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return\n\n /* istanbul ignore next */\n this.styleEl = document.createElement('style')\n this.styleEl.type = 'text/css'\n this.styleEl.id = 'vuetify-theme-stylesheet'\n\n if (this.options.cspNonce) {\n this.styleEl.setAttribute('nonce', this.options.cspNonce)\n }\n\n document.head.appendChild(this.styleEl)\n }\n\n private initVueMeta (root: any) {\n this.vueMeta = root.$meta()\n if (this.isVueMeta23) {\n // vue-meta needs to apply after mounted()\n root.$nextTick(() => {\n this.applyVueMeta23()\n })\n return\n }\n\n const metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo'\n const metaInfo = root.$options[metaKeyName] || {}\n\n root.$options[metaKeyName] = () => {\n metaInfo.style = metaInfo.style || []\n\n const vuetifyStylesheet = metaInfo.style.find((s: any) => s.id === 'vuetify-theme-stylesheet')\n\n if (!vuetifyStylesheet) {\n metaInfo.style.push({\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: (this.options || {}).cspNonce,\n })\n } else {\n vuetifyStylesheet.cssText = this.generatedStyles\n }\n\n return metaInfo\n }\n }\n\n private applyVueMeta23 () {\n const { set } = this.vueMeta.addApp('vuetify')\n\n set({\n style: [{\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: this.options.cspNonce,\n }],\n })\n }\n\n private initSSR (ssrContext?: any) {\n // SSR\n const nonce = this.options.cspNonce ? ` nonce=\"${this.options.cspNonce}\"` : ''\n ssrContext.head = ssrContext.head || ''\n ssrContext.head += `<style type=\"text/css\" id=\"vuetify-theme-stylesheet\"${nonce}>${this.generatedStyles}</style>`\n }\n\n private initTheme (root: Vue) {\n // Only watch for reactivity on client side\n if (typeof document === 'undefined') return\n\n // If we get here somehow, ensure\n // existing instance is removed\n if (this.unwatch) {\n this.unwatch()\n this.unwatch = null\n }\n\n // TODO: Update to use RFC if merged\n // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n root.$once('hook:created', () => {\n const obs = Vue.observable({ themes: this.themes })\n this.unwatch = root.$watch(() => obs.themes, () => this.applyTheme(), { deep: true })\n })\n this.applyTheme()\n }\n\n get currentTheme () {\n const target = this.dark ? 'dark' : 'light'\n\n return this.themes[target]\n }\n\n get generatedStyles (): string {\n const theme = this.parsedTheme\n /* istanbul ignore next */\n const options = this.options || {}\n let css\n\n if (options.themeCache != null) {\n css = options.themeCache.get(theme)\n /* istanbul ignore if */\n if (css != null) return css\n }\n\n css = ThemeUtils.genStyles(theme, options.customProperties)\n\n if (options.minifyTheme != null) {\n css = options.minifyTheme(css)\n }\n\n if (options.themeCache != null) {\n options.themeCache.set(theme, css)\n }\n\n return css\n }\n\n get parsedTheme (): VuetifyParsedTheme {\n return ThemeUtils.parse(\n this.currentTheme || {},\n undefined,\n getNestedValue(this.options, ['variations'], true)\n )\n }\n\n // Is using v2.3 of vue-meta\n // https://github.com/nuxt/vue-meta/releases/tag/v2.3.0\n private get isVueMeta23 (): boolean {\n return typeof this.vueMeta.addApp === 'function'\n }\n}\n"],"sourceRoot":"","file":"index.js"}
|
package/lib/util/helpers.js
CHANGED
|
@@ -67,9 +67,9 @@ export function getNestedValue(obj, path, fallback) {
|
|
|
67
67
|
export function deepEqual(a, b) {
|
|
68
68
|
if (a === b) return true;
|
|
69
69
|
|
|
70
|
-
if (a instanceof Date && b instanceof Date) {
|
|
71
|
-
// If the values are Date,
|
|
72
|
-
|
|
70
|
+
if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) {
|
|
71
|
+
// If the values are Date, compare them as timestamps
|
|
72
|
+
return false;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
if (a !== Object(a) || b !== Object(b)) {
|
package/lib/util/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,GAAP,MAAgB,KAAhB;AAKA,OAAM,SAAU,sBAAV,CACJ,CADI,EAEJ,EAAE,GAAG,KAFD,EAGJ,IAHI,EAGS;AAEb,SAAO,GAAG,CAAC,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,OAAF,CAAU,KAAV,EAAiB,GAAjB,CADE;AAGhB,IAAA,UAAU,EAAE,IAHI;;AAKhB,IAAA,MAAM,CAAE,CAAF,EAAK;AAAE,MAAA,IAAF;AAAQ,MAAA;AAAR,KAAL,EAAuB;AAC3B,MAAA,IAAI,CAAC,WAAL,GAAoB,GAAG,CAAC,IAAI,IAAI,CAAC,WAAL,IAAoB,EAAE,EAA/B,CAAmC,IAAnC,EAAnB;AAEA,aAAO,CAAC,CAAC,EAAD,EAAK,IAAL,EAAW,QAAX,CAAR;AACD;;AATe,GAAX,CAAP;AAWD;AAGD,OAAM,SAAU,eAAV,CAA2B,OAA3B,EAAmD,QAAQ,GAAG,EAA9D,EAAgE;AACpE,SAAO,EACL,GAAG,QADE;AAEL,OAAG,OAAO,CAAC,SAFN;AAGL,IAAA,KAAK,EAAE,OAAO,CAAC,GAHV;AAIL,QAAI,OAAO,CAAC,KAAR,IAAiB,EAArB;AAJK,GAAP;AAMD;AAED,OAAM,SAAU,oBAAV,CACJ,EADI,EAEJ,SAFI,EAGJ,EAHI,EAIJ,OAAA,GAA6C,KAJzC,EAI8C;AAElD,MAAI,IAAI,GAAI,KAAD,IAAiB;AAC1B,IAAA,EAAE,CAAC,KAAD,CAAF;AACA,IAAA,EAAE,CAAC,mBAAH,CAAuB,SAAvB,EAAkC,IAAlC,EAAwC,OAAxC;AACD,GAHD;;AAKA,EAAA,EAAE,CAAC,gBAAH,CAAoB,SAApB,EAA+B,IAA/B,EAAqC,OAArC;AACD;AAED,IAAI,gBAAgB,GAAG,KAAvB;;AACA,IAAI;AACF,MAAI,OAAO,MAAP,KAAkB,WAAtB,EAAmC;AACjC,UAAM,gBAAgB,GAAG,MAAM,CAAC,cAAP,CAAsB,EAAtB,EAA0B,SAA1B,EAAqC;AAC5D,MAAA,GAAG,EAAE,MAAK;AACR,QAAA,gBAAgB,GAAG,IAAnB;AACD;AAH2D,KAArC,CAAzB;AAMA,IAAA,MAAM,CAAC,gBAAP,CAAwB,cAAxB,EAAwC,gBAAxC,EAA0D,gBAA1D;AACA,IAAA,MAAM,CAAC,mBAAP,CAA2B,cAA3B,EAA2C,gBAA3C,EAA6D,gBAA7D;AACD;AACF,CAXD,CAWE,OAAO,CAAP,EAAU;AAAE,EAAA,OAAO,CAAC,IAAR,CAAa,CAAb;AAAiB;;AAC/B,SAAS,gBAAT;AAEA,OAAM,SAAU,uBAAV,CACJ,EADI,EAEJ,KAFI,EAGJ,EAHI,EAIJ,OAJI,EAIO;AAEX,EAAA,EAAE,CAAC,gBAAH,CAAoB,KAApB,EAA2B,EAA3B,EAA+B,gBAAgB,GAAG,OAAH,GAAa,KAA5D;AACD;AAED,OAAM,SAAU,cAAV,CAA0B,GAA1B,EAAoC,IAApC,EAA+D,QAA/D,EAA6E;AACjF,QAAM,IAAI,GAAG,IAAI,CAAC,MAAL,GAAc,CAA3B;AAEA,MAAI,IAAI,GAAG,CAAX,EAAc,OAAO,GAAG,KAAK,SAAR,GAAoB,QAApB,GAA+B,GAAtC;;AAEd,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAApB,EAA0B,CAAC,EAA3B,EAA+B;AAC7B,QAAI,GAAG,IAAI,IAAX,EAAiB;AACf,aAAO,QAAP;AACD;;AACD,IAAA,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAD,CAAL,CAAT;AACD;;AAED,MAAI,GAAG,IAAI,IAAX,EAAiB,OAAO,QAAP;AAEjB,SAAO,GAAG,CAAC,IAAI,CAAC,IAAD,CAAL,CAAH,KAAoB,SAApB,GAAgC,QAAhC,GAA2C,GAAG,CAAC,IAAI,CAAC,IAAD,CAAL,CAArD;AACD;AAED,OAAM,SAAU,SAAV,CAAqB,CAArB,EAA6B,CAA7B,EAAmC;AACvC,MAAI,CAAC,KAAK,CAAV,EAAa,OAAO,IAAP;;AAEb,MAAI,CAAC,YAAY,IAAb,IAAqB,CAAC,YAAY,IAAtC,EAA4C;AAC1C;AACA,QAAI,CAAC,CAAC,OAAF,OAAgB,CAAC,CAAC,OAAF,EAApB,EAAiC,OAAO,KAAP;AAClC;;AAED,MAAI,CAAC,KAAK,MAAM,CAAC,CAAD,CAAZ,IAAmB,CAAC,KAAK,MAAM,CAAC,CAAD,CAAnC,EAAwC;AACtC;AACA,WAAO,KAAP;AACD;;AAED,QAAM,KAAK,GAAG,MAAM,CAAC,IAAP,CAAY,CAAZ,CAAd;;AAEA,MAAI,KAAK,CAAC,MAAN,KAAiB,MAAM,CAAC,IAAP,CAAY,CAAZ,EAAe,MAApC,EAA4C;AAC1C;AACA,WAAO,KAAP;AACD;;AAED,SAAO,KAAK,CAAC,KAAN,CAAY,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAD,CAAF,EAAO,CAAC,CAAC,CAAD,CAAR,CAA1B,CAAP;AACD;AAED,OAAM,SAAU,oBAAV,CAAgC,GAAhC,EAA0C,IAA1C,EAAwD,QAAxD,EAAsE;AAC1E;AACA,MAAI,GAAG,IAAI,IAAP,IAAe,CAAC,IAAhB,IAAwB,OAAO,IAAP,KAAgB,QAA5C,EAAsD,OAAO,QAAP;AACtD,MAAI,GAAG,CAAC,IAAD,CAAH,KAAc,SAAlB,EAA6B,OAAO,GAAG,CAAC,IAAD,CAAV;AAC7B,EAAA,IAAI,GAAG,IAAI,CAAC,OAAL,CAAa,YAAb,EAA2B,KAA3B,CAAP,CAJ0E,CAIjC;;AACzC,EAAA,IAAI,GAAG,IAAI,CAAC,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP,CAL0E,CAK3C;;AAC/B,SAAO,cAAc,CAAC,GAAD,EAAM,IAAI,CAAC,KAAL,CAAW,GAAX,CAAN,EAAuB,QAAvB,CAArB;AACD;AAED,OAAM,SAAU,mBAAV,CACJ,IADI,EAEJ,QAFI,EAGJ,QAHI,EAGU;AAEd,MAAI,QAAQ,IAAI,IAAhB,EAAsB,OAAO,IAAI,KAAK,SAAT,GAAqB,QAArB,GAAgC,IAAvC;AAEtB,MAAI,IAAI,KAAK,MAAM,CAAC,IAAD,CAAnB,EAA2B,OAAO,QAAQ,KAAK,SAAb,GAAyB,IAAzB,GAAgC,QAAvC;AAE3B,MAAI,OAAO,QAAP,KAAoB,QAAxB,EAAkC,OAAO,oBAAoB,CAAC,IAAD,EAAO,QAAP,EAAiB,QAAjB,CAA3B;AAElC,MAAI,KAAK,CAAC,OAAN,CAAc,QAAd,CAAJ,EAA6B,OAAO,cAAc,CAAC,IAAD,EAAO,QAAP,EAAiB,QAAjB,CAArB;AAE7B,MAAI,OAAO,QAAP,KAAoB,UAAxB,EAAoC,OAAO,QAAP;AAEpC,QAAM,KAAK,GAAG,QAAQ,CAAC,IAAD,EAAO,QAAP,CAAtB;AAEA,SAAO,OAAO,KAAP,KAAiB,WAAjB,GAA+B,QAA/B,GAA0C,KAAjD;AACD;AAED,OAAM,SAAU,WAAV,CAAuB,MAAvB,EAAqC;AACzC,SAAO,KAAK,CAAC,IAAN,CAAW;AAAE,IAAA;AAAF,GAAX,EAAuB,CAAC,CAAD,EAAI,CAAJ,KAAU,CAAjC,CAAP;AACD;AAED,OAAM,SAAU,SAAV,CAAqB,EAArB,EAAwC;AAC5C,MAAI,CAAC,EAAD,IAAO,EAAE,CAAC,QAAH,KAAgB,IAAI,CAAC,YAAhC,EAA8C,OAAO,CAAP;AAE9C,QAAM,KAAK,GAAG,CAAC,MAAM,CAAC,gBAAP,CAAwB,EAAxB,EAA4B,gBAA5B,CAA6C,SAA7C,CAAf;AAEA,MAAI,CAAC,KAAL,EAAY,OAAO,SAAS,CAAC,EAAE,CAAC,UAAJ,CAAhB;AACZ,SAAO,KAAP;AACD;AAED,MAAM,aAAa,GAAG;AACpB,OAAK,OADe;AAEpB,OAAK,MAFe;AAGpB,OAAK;AAHe,CAAtB;AAMA,OAAM,SAAU,UAAV,CAAsB,GAAtB,EAAiC;AACrC,SAAO,GAAG,CAAC,OAAJ,CAAY,QAAZ,EAAsB,GAAG,IAAI,aAAa,CAAC,GAAD,CAAb,IAAsB,GAAnD,CAAP;AACD;AAED,OAAM,SAAU,kBAAV,CAAoD,GAApD,EAA4D,IAA5D,EAAqE;AACzE,QAAM,QAAQ,GAAG,EAAjB;;AAEA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAAI,CAAC,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AACpC,UAAM,GAAG,GAAG,IAAI,CAAC,CAAD,CAAhB;;AACA,QAAI,OAAO,GAAG,CAAC,GAAD,CAAV,KAAoB,WAAxB,EAAqC;AACnC,MAAA,QAAQ,CAAC,GAAD,CAAR,GAAgB,GAAG,CAAC,GAAD,CAAnB;AACD;AACF;;AAED,SAAO,QAAP;AACD;AAED,OAAM,SAAU,aAAV,CAAyB,GAAzB,EAAkE,IAAI,GAAG,IAAzE,EAA6E;AACjF,MAAI,GAAG,IAAI,IAAP,IAAe,GAAG,KAAK,EAA3B,EAA+B;AAC7B,WAAO,SAAP;AACD,GAFD,MAEO,IAAI,KAAK,CAAC,CAAC,GAAF,CAAT,EAAkB;AACvB,WAAO,MAAM,CAAC,GAAD,CAAb;AACD,GAFM,MAEA;AACL,WAAO,GAAG,MAAM,CAAC,GAAD,CAAK,GAAG,IAAI,EAA5B;AACD;AACF;AAED,OAAM,SAAU,SAAV,CAAqB,GAArB,EAAgC;AACpC,SAAO,CAAC,GAAG,IAAI,EAAR,EAAY,OAAZ,CAAoB,iBAApB,EAAuC,OAAvC,EAAgD,WAAhD,EAAP;AACD;AAED,OAAM,SAAU,QAAV,CAAoB,GAApB,EAA4B;AAChC,SAAO,GAAG,KAAK,IAAR,IAAgB,OAAO,GAAP,KAAe,QAAtC;AACD,C,CAED;;AACA,OAAO,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAP,CAAc;AACpC,EAAA,KAAK,EAAE,EAD6B;AAEpC,EAAA,GAAG,EAAE,CAF+B;AAGpC,EAAA,MAAM,EAAE,EAH4B;AAIpC,EAAA,GAAG,EAAE,EAJ+B;AAKpC,EAAA,KAAK,EAAE,EAL6B;AAMpC,EAAA,EAAE,EAAE,EANgC;AAOpC,EAAA,IAAI,EAAE,EAP8B;AAQpC,EAAA,IAAI,EAAE,EAR8B;AASpC,EAAA,KAAK,EAAE,EAT6B;AAUpC,EAAA,GAAG,EAAE,EAV+B;AAWpC,EAAA,IAAI,EAAE,EAX8B;AAYpC,EAAA,GAAG,EAAE,EAZ+B;AAapC,EAAA,SAAS,EAAE,CAbyB;AAcpC,EAAA,MAAM,EAAE,EAd4B;AAepC,EAAA,MAAM,EAAE,EAf4B;AAgBpC,EAAA,QAAQ,EAAE;AAhB0B,CAAd,CAAjB,C,CAmBP;AACA;;AACA,OAAM,SAAU,iBAAV,CAA6B,EAA7B,EAAsC,QAAtC,EAAsD;AAC1D,MAAI,CAAC,QAAQ,CAAC,UAAT,CAAoB,GAApB,CAAL,EAA+B;AAC7B,WAAO,QAAP;AACD,GAHyD,CAK1D;;;AACA,QAAM,QAAQ,GAAG,yBAAyB,QAAQ,CAAC,KAAT,CAAe,GAAf,EAAoB,GAApB,GAA2B,KAA3B,CAAiC,GAAjC,EAAsC,GAAtC,EAA2C,EAArF,CAN0D,CAQ1D;AACA;;AACA,SAAO,oBAAoB,CAAC,EAAD,EAAK,QAAL,EAAe,QAAf,CAA3B;AACD;AAED,OAAM,SAAU,IAAV,CAAmB,CAAnB,EAAuB;AAC3B,SAAO,MAAM,CAAC,IAAP,CAAY,CAAZ,CAAP;AACD;AAED;;;;AAGA,MAAM,UAAU,GAAG,QAAnB;AACA,OAAO,MAAM,QAAQ,GAAI,GAAD,IAAwB;AAC9C,SAAO,GAAG,CAAC,OAAJ,CAAY,UAAZ,EAAwB,CAAC,CAAD,EAAI,CAAJ,KAAU,CAAC,GAAG,CAAC,CAAC,WAAF,EAAH,GAAqB,EAAxD,CAAP;AACD,CAFM;AAIP;;;;AAGA,OAAM,SAAU,SAAV,CAAqB,CAArB,EAA+B,CAA/B,EAAuC;AAC3C,QAAM,IAAI,GAAU,EAApB;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAAC,CAAC,MAAtB,EAA8B,CAAC,EAA/B,EAAmC;AACjC,QAAI,CAAC,CAAC,OAAF,CAAU,CAAC,CAAC,CAAD,CAAX,IAAkB,CAAtB,EAAyB,IAAI,CAAC,IAAL,CAAU,CAAC,CAAC,CAAD,CAAX;AAC1B;;AACD,SAAO,IAAP;AACD;AAED;;;;AAGA,OAAM,SAAU,UAAV,CAAsB,GAAtB,EAAiC;AACrC,SAAO,GAAG,CAAC,MAAJ,CAAW,CAAX,EAAc,WAAd,KAA8B,GAAG,CAAC,KAAJ,CAAU,CAAV,CAArC;AACD;AAED,OAAM,SAAU,UAAV,CACJ,KADI,EAEJ,OAFI,EAGJ,SAHI,EAGgB;AAEpB,QAAM,GAAG,GAAG,OAAO,CAAC,CAAD,CAAnB;AACA,QAAM,MAAM,GAAmB,EAA/B;AACA,MAAI,OAAO,GAAG,IAAd;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,CAAC,MAA1B,EAAkC,CAAC,EAAnC,EAAuC;AACrC,UAAM,IAAI,GAAG,KAAK,CAAC,CAAD,CAAlB;AACA,UAAM,GAAG,GAAG,oBAAoB,CAAC,IAAD,EAAO,GAAP,CAAhC;;AACA,QAAI,OAAO,KAAK,GAAhB,EAAqB;AACnB,MAAA,OAAO,GAAG,GAAV;AACA,MAAA,MAAM,CAAC,IAAP,CAAY;AACV,QAAA,IAAI,EAAE,GADI;AAEV,QAAA,KAAK,EAAE;AAFG,OAAZ;AAID;;AACD,IAAA,MAAM,CAAC,MAAM,CAAC,MAAP,GAAgB,CAAjB,CAAN,CAA0B,KAA1B,CAAgC,IAAhC,CAAqC,IAArC;AACD;;AACD,SAAO,MAAP;AACD;AAED,OAAM,SAAU,WAAV,CAA0B,CAA1B,EAAuD;AAAS,SAAO,CAAC,IAAI,IAAL,GAAY,KAAK,CAAC,OAAN,CAAc,CAAd,IAAmB,CAAnB,GAAuB,CAAC,CAAD,CAAnC,GAAyC,EAAhD;AAAoD;AAE1H,OAAM,SAAU,SAAV,CACJ,KADI,EAEJ,MAFI,EAGJ,QAHI,EAIJ,MAJI,EAKJ,aALI,EAKuD;AAE3D,MAAI,MAAM,KAAK,IAAX,IAAmB,CAAC,MAAM,CAAC,MAA/B,EAAuC,OAAO,KAAP;AACvC,QAAM,cAAc,GAAG,IAAI,IAAI,CAAC,QAAT,CAAkB,MAAlB,EAA0B;AAAE,IAAA,WAAW,EAAE,QAAf;AAAyB,IAAA,KAAK,EAAE;AAAhC,GAA1B,CAAvB;AAEA,SAAO,KAAK,CAAC,IAAN,CAAW,CAAC,CAAD,EAAI,CAAJ,KAAS;AACzB,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,MAAM,CAAC,MAA3B,EAAmC,CAAC,EAApC,EAAwC;AACtC,YAAM,OAAO,GAAG,MAAM,CAAC,CAAD,CAAtB;AAEA,UAAI,KAAK,GAAG,oBAAoB,CAAC,CAAD,EAAI,OAAJ,CAAhC;AACA,UAAI,KAAK,GAAG,oBAAoB,CAAC,CAAD,EAAI,OAAJ,CAAhC;;AAEA,UAAI,QAAQ,CAAC,CAAD,CAAZ,EAAiB;AACf,SAAC,KAAD,EAAQ,KAAR,IAAiB,CAAC,KAAD,EAAQ,KAAR,CAAjB;AACD;;AAED,UAAI,aAAa,IAAI,aAAa,CAAC,OAAD,CAAlC,EAA6C;AAC3C,cAAM,YAAY,GAAG,aAAa,CAAC,OAAD,CAAb,CAAuB,KAAvB,EAA8B,KAA9B,CAArB;AAEA,YAAI,CAAC,YAAL,EAAmB;AAEnB,eAAO,YAAP;AACD,OAhBqC,CAkBtC;;;AACA,UAAI,KAAK,KAAK,IAAV,IAAkB,KAAK,KAAK,IAAhC,EAAsC;AACpC;AACD;;AAED,OAAC,KAAD,EAAQ,KAAR,IAAiB,CAAC,KAAD,EAAQ,KAAR,EAAe,GAAf,CAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAN,EAAU,QAAV,GAAqB,iBAArB,EAAxB,CAAjB;;AAEA,UAAI,KAAK,KAAK,KAAd,EAAqB;AACnB,YAAI,CAAC,KAAK,CAAC,KAAD,CAAN,IAAiB,CAAC,KAAK,CAAC,KAAD,CAA3B,EAAoC,OAAO,MAAM,CAAC,KAAD,CAAN,GAAgB,MAAM,CAAC,KAAD,CAA7B;AACpC,eAAO,cAAc,CAAC,OAAf,CAAuB,KAAvB,EAA8B,KAA9B,CAAP;AACD;AACF;;AAED,WAAO,CAAP;AACD,GAjCM,CAAP;AAkCD;AAED,OAAM,SAAU,aAAV,CAAyB,KAAzB,EAAqC,MAArC,EAA4D,IAA5D,EAAqE;AACzE,SAAO,KAAK,IAAI,IAAT,IACL,MAAM,IAAI,IADL,IAEL,OAAO,KAAP,KAAiB,SAFZ,IAGL,KAAK,CAAC,QAAN,GAAiB,iBAAjB,GAAqC,OAArC,CAA6C,MAAM,CAAC,iBAAP,EAA7C,MAA6E,CAAC,CAHhF;AAID;AAED,OAAM,SAAU,WAAV,CAA4C,KAA5C,EAAwD,MAAxD,EAAsE;AAC1E,MAAI,CAAC,MAAL,EAAa,OAAO,KAAP;AACb,EAAA,MAAM,GAAG,MAAM,CAAC,QAAP,GAAkB,WAAlB,EAAT;AACA,MAAI,MAAM,CAAC,IAAP,OAAkB,EAAtB,EAA0B,OAAO,KAAP;AAE1B,SAAO,KAAK,CAAC,MAAN,CAAc,IAAD,IAAe,MAAM,CAAC,IAAP,CAAY,IAAZ,EAAkB,IAAlB,CAAuB,GAAG,IAAI,aAAa,CAAC,oBAAoB,CAAC,IAAD,EAAO,GAAP,CAArB,EAAkC,MAAlC,EAA0C,IAA1C,CAA3C,CAA5B,CAAP;AACD;AAED;;;;;;;AAMA,OAAM,SAAU,WAAV,CAAkD,EAAlD,EAA2D,IAA3D,EAAyE,KAAzE,EAAkF;AACtF,MAAI,EAAE,CAAC,MAAH,CAAU,IAAV,KAAmB,EAAE,CAAC,YAAH,CAAgB,IAAhB,CAAnB,IAA6C,EAAE,CAAC,YAAH,CAAgB,IAAhB,EAA8B,IAA/E,EAAqF;AACnF,WAAO,KAAK,GAAG,QAAH,GAAqB,QAAjC;AACD;;AACD,MAAI,EAAE,CAAC,MAAH,CAAU,IAAV,CAAJ,EAAqB,OAAO,QAAP;AACrB,MAAI,EAAE,CAAC,YAAH,CAAgB,IAAhB,CAAJ,EAA2B,OAAO,QAAP;AAC5B;AAED,OAAM,SAAU,QAAV,CAAoB,EAApB,EAAkC,KAAlC,EAA+C;AACnD,MAAI,SAAS,GAAG,CAAhB;AACA,SAAO,CAAC,GAAG,IAAJ,KAAmB;AACxB,IAAA,YAAY,CAAC,SAAD,CAAZ;AACA,IAAA,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAJ,CAAT,EAAoB,KAApB,CAAtB;AACD,GAHD;AAID;AAED,OAAM,SAAU,QAAV,CAAuD,EAAvD,EAA8D,KAA9D,EAA2E;AAC/E,MAAI,UAAU,GAAG,KAAjB;AACA,SAAO,CAAC,GAAG,IAAJ,KAAiD;AACtD,QAAI,CAAC,UAAL,EAAiB;AACf,MAAA,UAAU,GAAG,IAAb;AACA,MAAA,UAAU,CAAC,MAAM,UAAU,GAAG,KAApB,EAA2B,KAA3B,CAAV;AACA,aAAO,EAAE,CAAC,GAAG,IAAJ,CAAT;AACD;AACF,GAND;AAOD;AAED,OAAM,SAAU,sBAAV,CAAkC,MAAlC,EAAkD,WAAlD,EAAkE;AACtE,SAAO,MAAM,CAAC,IAAP,CAAY,WAAZ,EAAyB,MAAzB,CAAgC,CAAC,IAAI,CAAC,CAAC,UAAF,CAAa,MAAb,CAArC,EAA2D,MAA3D,CAAkE,CAAC,GAAD,EAAW,CAAX,KAAwB;AAC/F,IAAA,GAAG,CAAC,CAAC,CAAC,OAAF,CAAU,MAAV,EAAkB,EAAlB,CAAD,CAAH,GAA6B,WAAW,CAAC,CAAD,CAAxC;AACA,WAAO,GAAP;AACD,GAHM,EAGJ,EAHI,CAAP;AAID;AAED,OAAM,SAAU,OAAV,CAAmB,EAAnB,EAA4B,IAAI,GAAG,SAAnC,EAA8C,IAA9C,EAA8E,QAAQ,GAAG,KAAzF,EAA8F;AAClG,MAAI,EAAE,CAAC,YAAH,CAAgB,IAAhB,CAAJ,EAA2B;AACzB,WAAO,EAAE,CAAC,YAAH,CAAgB,IAAhB,EAAuB,IAAI,YAAY,QAAhB,GAA2B,IAAI,EAA/B,GAAoC,IAA3D,CAAP;AACD,GAFD,MAEO,IAAI,EAAE,CAAC,MAAH,CAAU,IAAV,MAAoB,CAAC,IAAD,IAAS,QAA7B,CAAJ,EAA4C;AACjD,WAAO,EAAE,CAAC,MAAH,CAAU,IAAV,CAAP;AACD;;AACD,SAAO,SAAP;AACD;AAED,OAAM,SAAU,KAAV,CAAiB,KAAjB,EAAgC,GAAG,GAAG,CAAtC,EAAyC,GAAG,GAAG,CAA/C,EAAgD;AACpD,SAAO,IAAI,CAAC,GAAL,CAAS,GAAT,EAAc,IAAI,CAAC,GAAL,CAAS,GAAT,EAAc,KAAd,CAAd,CAAP;AACD;AAED,OAAM,SAAU,MAAV,CAAkB,GAAlB,EAA+B,MAA/B,EAA+C,IAAI,GAAG,GAAtD,EAAyD;AAC7D,SAAO,GAAG,GAAG,IAAI,CAAC,MAAL,CAAY,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,MAAM,GAAG,GAAG,CAAC,MAAzB,CAAZ,CAAb;AACD;AAED,OAAM,SAAU,KAAV,CAAiB,GAAjB,EAA8B,IAAI,GAAG,CAArC,EAAsC;AAC1C,QAAM,OAAO,GAAa,EAA1B;AACA,MAAI,KAAK,GAAG,CAAZ;;AACA,SAAO,KAAK,GAAG,GAAG,CAAC,MAAnB,EAA2B;AACzB,IAAA,OAAO,CAAC,IAAR,CAAa,GAAG,CAAC,MAAJ,CAAW,KAAX,EAAkB,IAAlB,CAAb;AACA,IAAA,KAAK,IAAI,IAAT;AACD;;AACD,SAAO,OAAP;AACD;AAED,OAAM,SAAU,qBAAV,CAAiC,KAAjC,EAAgD,MAAM,GAAG,KAAzD,EAA8D;AAClE,QAAM,IAAI,GAAG,MAAM,GAAG,IAAH,GAAU,IAA7B;;AACA,MAAI,KAAK,GAAG,IAAZ,EAAkB;AAChB,WAAO,GAAG,KAAK,IAAf;AACD;;AAED,QAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,CAAH,GAAwB,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAA7C;AACA,MAAI,IAAI,GAAG,CAAC,CAAZ;;AACA,SAAO,IAAI,CAAC,GAAL,CAAS,KAAT,KAAmB,IAAnB,IAA2B,IAAI,GAAG,MAAM,CAAC,MAAP,GAAgB,CAAzD,EAA4D;AAC1D,IAAA,KAAK,IAAI,IAAT;AACA,MAAE,IAAF;AACD;;AACD,SAAO,GAAG,KAAK,CAAC,OAAN,CAAc,CAAd,CAAgB,IAAI,MAAM,CAAC,IAAD,CAAM,GAA1C;AACD;AAED,OAAM,SAAU,kBAAV,CAA8B,GAA9B,EAAyE;AAC7E,MAAI,CAAC,GAAL,EAAU,OAAO,EAAP;AAEV,SAAO,MAAM,CAAC,IAAP,CAAY,GAAZ,EAAiB,MAAjB,CAAwB,CAAC,CAAD,EAAS,GAAT,KAAwB;AACrD,IAAA,CAAC,CAAC,QAAQ,CAAC,GAAD,CAAT,CAAD,GAAmB,GAAG,CAAC,GAAD,CAAtB;AACA,WAAO,CAAP;AACD,GAHM,EAGJ,EAHI,CAAP;AAID;AAED,OAAM,SAAU,SAAV,CACJ,MAAA,GAA0B,EADtB,EAEJ,MAAA,GAA0B,EAFtB,EAEwB;AAE5B,OAAK,MAAM,GAAX,IAAkB,MAAlB,EAA0B;AACxB,UAAM,cAAc,GAAG,MAAM,CAAC,GAAD,CAA7B;AACA,UAAM,cAAc,GAAG,MAAM,CAAC,GAAD,CAA7B,CAFwB,CAIxB;AACA;;AACA,QACE,QAAQ,CAAC,cAAD,CAAR,IACA,QAAQ,CAAC,cAAD,CAFV,EAGE;AACA,MAAA,MAAM,CAAC,GAAD,CAAN,GAAc,SAAS,CAAC,cAAD,EAAiB,cAAjB,CAAvB;AAEA;AACD;;AAED,IAAA,MAAM,CAAC,GAAD,CAAN,GAAc,cAAd;AACD;;AAED,SAAO,MAAP;AACD;AAED,OAAM,SAAU,SAAV,CAAwB,MAAxB,EAAwC,GAAxC,EAA8C;AAClD,SAAO,KAAK,CAAC,MAAD,CAAL,CAAc,IAAd,CAAmB,GAAnB,CAAP;AACD","sourcesContent":["import Vue from 'vue'\nimport { VNode, VNodeDirective } from 'vue/types'\nimport { VuetifyIcon } from 'vuetify/types/services/icons'\nimport { DataTableCompareFunction, SelectItemKey, ItemGroup } from 'vuetify/types'\n\nexport function createSimpleFunctional (\n c: string,\n el = 'div',\n name?: string\n) {\n return Vue.extend({\n name: name || c.replace(/__/g, '-'),\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`${c} ${data.staticClass || ''}`).trim()\n\n return h(el, data, children)\n },\n })\n}\n\nexport type BindingConfig = Pick<VNodeDirective, 'arg' | 'modifiers' | 'value'>\nexport function directiveConfig (binding: BindingConfig, defaults = {}): VNodeDirective {\n return {\n ...defaults,\n ...binding.modifiers,\n value: binding.arg,\n ...(binding.value || {}),\n }\n}\n\nexport function addOnceEventListener (\n el: EventTarget,\n eventName: string,\n cb: (event: Event) => void,\n options: boolean | AddEventListenerOptions = false\n): void {\n var once = (event: Event) => {\n cb(event)\n el.removeEventListener(eventName, once, options)\n }\n\n el.addEventListener(eventName, once, options)\n}\n\nlet passiveSupported = false\ntry {\n if (typeof window !== 'undefined') {\n const testListenerOpts = Object.defineProperty({}, 'passive', {\n get: () => {\n passiveSupported = true\n },\n })\n\n window.addEventListener('testListener', testListenerOpts, testListenerOpts)\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts)\n }\n} catch (e) { console.warn(e) }\nexport { passiveSupported }\n\nexport function addPassiveEventListener (\n el: EventTarget,\n event: string,\n cb: EventHandlerNonNull | (() => void),\n options: {}\n): void {\n el.addEventListener(event, cb, passiveSupported ? options : false)\n}\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (a instanceof Date && b instanceof Date) {\n // If the values are Date, they were convert to timestamp with getTime and compare it\n if (a.getTime() !== b.getTime()) return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport function getPropertyFromItem (\n item: object,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) return fallback === undefined ? item : fallback\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number): number[] {\n return Array.from({ length }, (v, k) => k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nconst tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>',\n} as any\n\nexport function escapeHTML (str: string): string {\n return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag)\n}\n\nexport function filterObjectOnKeys<T, K extends keyof T> (obj: T, keys: K[]): { [N in K]: T[N] } {\n const filtered = {} as { [N in K]: T[N] }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key]\n }\n }\n\n return filtered\n}\n\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function kebabCase (str: string): string {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object'\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n})\n\n// This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n// to the current name or component for that icon.\nexport function remapInternalIcon (vm: Vue, iconName: string): VuetifyIcon {\n if (!iconName.startsWith('$')) {\n return iconName\n }\n\n // Get the target icon name\n const iconPath = `$vuetify.icons.values.${iconName.split('$').pop()!.split('.').pop()}`\n\n // Now look up icon indirection name,\n // e.g. '$vuetify.icons.values.cancel'\n return getObjectValueByPath(vm, iconPath, iconName)\n}\n\nexport function keys<O> (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i])\n }\n return diff\n}\n\n/**\n * Makes the first character of a string uppercase\n */\nexport function upperFirst (str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function groupItems<T extends any = any> (\n items: T[],\n groupBy: string[],\n groupDesc: boolean[]\n): ItemGroup<T>[] {\n const key = groupBy[0]\n const groups: ItemGroup<T>[] = []\n let current = null\n for (var i = 0; i < items.length; i++) {\n const item = items[i]\n const val = getObjectValueByPath(item, key)\n if (current !== val) {\n current = val\n groups.push({\n name: val,\n items: [],\n })\n }\n groups[groups.length - 1].items.push(item)\n }\n return groups\n}\n\nexport function wrapInArray<T> (v: T | T[] | null | undefined): T[] { return v != null ? Array.isArray(v) ? v : [v] : [] }\n\nexport function sortItems<T extends any = any> (\n items: T[],\n sortBy: string[],\n sortDesc: boolean[],\n locale: string,\n customSorters?: Record<string, DataTableCompareFunction<T>>\n): T[] {\n if (sortBy === null || !sortBy.length) return items\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return items.sort((a, b) => {\n for (let i = 0; i < sortBy.length; i++) {\n const sortKey = sortBy[i]\n\n let sortA = getObjectValueByPath(a, sortKey)\n let sortB = getObjectValueByPath(b, sortKey)\n\n if (sortDesc[i]) {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters && customSorters[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA === null && sortB === null) {\n continue\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems<T extends any = any> (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter((item: any) => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\n/**\n * Returns:\n * - 'normal' for old style slots - `<template slot=\"default\">`\n * - 'scoped' for old style scoped slots (`<template slot=\"default\" slot-scope=\"data\">`) or bound v-slot (`#default=\"data\"`)\n * - 'v-slot' for unbound v-slot (`#default`) - only if the third param is true, otherwise counts as scoped\n */\nexport function getSlotType<T extends boolean = false> (vm: Vue, name: string, split?: T): (T extends true ? 'v-slot' : never) | 'normal' | 'scoped' | void {\n if (vm.$slots[name] && vm.$scopedSlots[name] && (vm.$scopedSlots[name] as any).name) {\n return split ? 'v-slot' as any : 'scoped'\n }\n if (vm.$slots[name]) return 'normal'\n if (vm.$scopedSlots[name]) return 'scoped'\n}\n\nexport function debounce (fn: Function, delay: number) {\n let timeoutId = 0 as any\n return (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), delay)\n }\n}\n\nexport function throttle<T extends (...args: any[]) => any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters<T>): void | ReturnType<T> => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\n }\n}\n\nexport function getPrefixedScopedSlots (prefix: string, scopedSlots: any) {\n return Object.keys(scopedSlots).filter(k => k.startsWith(prefix)).reduce((obj: any, k: string) => {\n obj[k.replace(prefix, '')] = scopedSlots[k]\n return obj\n }, {})\n}\n\nexport function getSlot (vm: Vue, name = 'default', data?: object | (() => object), optional = false) {\n if (vm.$scopedSlots[name]) {\n return vm.$scopedSlots[name]!(data instanceof Function ? data() : data)\n } else if (vm.$slots[name] && (!data || optional)) {\n return vm.$slots[name]\n }\n return undefined\n}\n\nexport function clamp (value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function padEnd (str: string, length: number, char = '0') {\n return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function chunk (str: string, size = 1) {\n const chunked: string[] = []\n let index = 0\n while (index < str.length) {\n chunked.push(str.substr(index, size))\n index += size\n }\n return chunked\n}\n\nexport function humanReadableFileSize (bytes: number, binary = false): string {\n const base = binary ? 1024 : 1000\n if (bytes < base) {\n return `${bytes} B`\n }\n\n const prefix = binary ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n let unit = -1\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base\n ++unit\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function camelizeObjectKeys (obj: Record<string, any> | null | undefined) {\n if (!obj) return {}\n\n return Object.keys(obj).reduce((o: any, key: string) => {\n o[camelize(key)] = obj[key]\n return o\n }, {})\n}\n\nexport function mergeDeep (\n source: Dictionary<any> = {},\n target: Dictionary<any> = {}\n) {\n for (const key in target) {\n const sourceProperty = source[key]\n const targetProperty = target[key]\n\n // Only continue deep merging if\n // both properties are objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n source[key] = mergeDeep(sourceProperty, targetProperty)\n\n continue\n }\n\n source[key] = targetProperty\n }\n\n return source\n}\n\nexport function fillArray<T> (length: number, obj: T) {\n return Array(length).fill(obj)\n}\n"],"sourceRoot":"","file":"helpers.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/util/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import Vue from 'vue'\nimport { VNode, VNodeDirective } from 'vue/types'\nimport { VuetifyIcon } from 'vuetify/types/services/icons'\nimport { DataTableCompareFunction, SelectItemKey, ItemGroup } from 'vuetify/types'\n\nexport function createSimpleFunctional (\n c: string,\n el = 'div',\n name?: string\n) {\n return Vue.extend({\n name: name || c.replace(/__/g, '-'),\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`${c} ${data.staticClass || ''}`).trim()\n\n return h(el, data, children)\n },\n })\n}\n\nexport type BindingConfig = Pick<VNodeDirective, 'arg' | 'modifiers' | 'value'>\nexport function directiveConfig (binding: BindingConfig, defaults = {}): VNodeDirective {\n return {\n ...defaults,\n ...binding.modifiers,\n value: binding.arg,\n ...(binding.value || {}),\n }\n}\n\nexport function addOnceEventListener (\n el: EventTarget,\n eventName: string,\n cb: (event: Event) => void,\n options: boolean | AddEventListenerOptions = false\n): void {\n var once = (event: Event) => {\n cb(event)\n el.removeEventListener(eventName, once, options)\n }\n\n el.addEventListener(eventName, once, options)\n}\n\nlet passiveSupported = false\ntry {\n if (typeof window !== 'undefined') {\n const testListenerOpts = Object.defineProperty({}, 'passive', {\n get: () => {\n passiveSupported = true\n },\n })\n\n window.addEventListener('testListener', testListenerOpts, testListenerOpts)\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts)\n }\n} catch (e) { console.warn(e) }\nexport { passiveSupported }\n\nexport function addPassiveEventListener (\n el: EventTarget,\n event: string,\n cb: EventHandlerNonNull | (() => void),\n options: {}\n): void {\n el.addEventListener(event, cb, passiveSupported ? options : false)\n}\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (\n a instanceof Date &&\n b instanceof Date &&\n a.getTime() !== b.getTime()\n ) {\n // If the values are Date, compare them as timestamps\n return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport function getPropertyFromItem (\n item: object,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) return fallback === undefined ? item : fallback\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number): number[] {\n return Array.from({ length }, (v, k) => k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nconst tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>',\n} as any\n\nexport function escapeHTML (str: string): string {\n return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag)\n}\n\nexport function filterObjectOnKeys<T, K extends keyof T> (obj: T, keys: K[]): { [N in K]: T[N] } {\n const filtered = {} as { [N in K]: T[N] }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key]\n }\n }\n\n return filtered\n}\n\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function kebabCase (str: string): string {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object'\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n})\n\n// This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n// to the current name or component for that icon.\nexport function remapInternalIcon (vm: Vue, iconName: string): VuetifyIcon {\n if (!iconName.startsWith('$')) {\n return iconName\n }\n\n // Get the target icon name\n const iconPath = `$vuetify.icons.values.${iconName.split('$').pop()!.split('.').pop()}`\n\n // Now look up icon indirection name,\n // e.g. '$vuetify.icons.values.cancel'\n return getObjectValueByPath(vm, iconPath, iconName)\n}\n\nexport function keys<O> (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i])\n }\n return diff\n}\n\n/**\n * Makes the first character of a string uppercase\n */\nexport function upperFirst (str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function groupItems<T extends any = any> (\n items: T[],\n groupBy: string[],\n groupDesc: boolean[]\n): ItemGroup<T>[] {\n const key = groupBy[0]\n const groups: ItemGroup<T>[] = []\n let current = null\n for (var i = 0; i < items.length; i++) {\n const item = items[i]\n const val = getObjectValueByPath(item, key)\n if (current !== val) {\n current = val\n groups.push({\n name: val,\n items: [],\n })\n }\n groups[groups.length - 1].items.push(item)\n }\n return groups\n}\n\nexport function wrapInArray<T> (v: T | T[] | null | undefined): T[] { return v != null ? Array.isArray(v) ? v : [v] : [] }\n\nexport function sortItems<T extends any = any> (\n items: T[],\n sortBy: string[],\n sortDesc: boolean[],\n locale: string,\n customSorters?: Record<string, DataTableCompareFunction<T>>\n): T[] {\n if (sortBy === null || !sortBy.length) return items\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return items.sort((a, b) => {\n for (let i = 0; i < sortBy.length; i++) {\n const sortKey = sortBy[i]\n\n let sortA = getObjectValueByPath(a, sortKey)\n let sortB = getObjectValueByPath(b, sortKey)\n\n if (sortDesc[i]) {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters && customSorters[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA === null && sortB === null) {\n continue\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems<T extends any = any> (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter((item: any) => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\n/**\n * Returns:\n * - 'normal' for old style slots - `<template slot=\"default\">`\n * - 'scoped' for old style scoped slots (`<template slot=\"default\" slot-scope=\"data\">`) or bound v-slot (`#default=\"data\"`)\n * - 'v-slot' for unbound v-slot (`#default`) - only if the third param is true, otherwise counts as scoped\n */\nexport function getSlotType<T extends boolean = false> (vm: Vue, name: string, split?: T): (T extends true ? 'v-slot' : never) | 'normal' | 'scoped' | void {\n if (vm.$slots[name] && vm.$scopedSlots[name] && (vm.$scopedSlots[name] as any).name) {\n return split ? 'v-slot' as any : 'scoped'\n }\n if (vm.$slots[name]) return 'normal'\n if (vm.$scopedSlots[name]) return 'scoped'\n}\n\nexport function debounce (fn: Function, delay: number) {\n let timeoutId = 0 as any\n return (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), delay)\n }\n}\n\nexport function throttle<T extends (...args: any[]) => any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters<T>): void | ReturnType<T> => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\n }\n}\n\nexport function getPrefixedScopedSlots (prefix: string, scopedSlots: any) {\n return Object.keys(scopedSlots).filter(k => k.startsWith(prefix)).reduce((obj: any, k: string) => {\n obj[k.replace(prefix, '')] = scopedSlots[k]\n return obj\n }, {})\n}\n\nexport function getSlot (vm: Vue, name = 'default', data?: object | (() => object), optional = false) {\n if (vm.$scopedSlots[name]) {\n return vm.$scopedSlots[name]!(data instanceof Function ? data() : data)\n } else if (vm.$slots[name] && (!data || optional)) {\n return vm.$slots[name]\n }\n return undefined\n}\n\nexport function clamp (value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function padEnd (str: string, length: number, char = '0') {\n return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function chunk (str: string, size = 1) {\n const chunked: string[] = []\n let index = 0\n while (index < str.length) {\n chunked.push(str.substr(index, size))\n index += size\n }\n return chunked\n}\n\nexport function humanReadableFileSize (bytes: number, binary = false): string {\n const base = binary ? 1024 : 1000\n if (bytes < base) {\n return `${bytes} B`\n }\n\n const prefix = binary ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n let unit = -1\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base\n ++unit\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function camelizeObjectKeys (obj: Record<string, any> | null | undefined) {\n if (!obj) return {}\n\n return Object.keys(obj).reduce((o: any, key: string) => {\n o[camelize(key)] = obj[key]\n return o\n }, {})\n}\n\nexport function mergeDeep (\n source: Dictionary<any> = {},\n target: Dictionary<any> = {}\n) {\n for (const key in target) {\n const sourceProperty = source[key]\n const targetProperty = target[key]\n\n // Only continue deep merging if\n // both properties are objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n source[key] = mergeDeep(sourceProperty, targetProperty)\n\n continue\n }\n\n source[key] = targetProperty\n }\n\n return source\n}\n\nexport function fillArray<T> (length: number, obj: T) {\n return Array(length).fill(obj)\n}\n"],"sourceRoot":"","file":"helpers.js"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vuetify",
|
|
3
3
|
"description": "Vue Material Component Framework",
|
|
4
|
-
"version": "2.3.
|
|
4
|
+
"version": "2.3.15",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "John Leider",
|
|
7
7
|
"email": "john@vuetifyjs.com"
|
|
@@ -60,17 +60,17 @@
|
|
|
60
60
|
"test:win32": "cross-env NODE_ENV=test jest -i",
|
|
61
61
|
"test:coverage": "yarn test --coverage",
|
|
62
62
|
"test:types": "tsc -p ./types/test/tsconfig.json",
|
|
63
|
-
"lint": "concurrently -n \"tsc,
|
|
64
|
-
"lint:fix": "concurrently -n \"tsc,
|
|
63
|
+
"lint": "concurrently -n \"tsc,eslint,types\" --kill-others-on-fail \"tsc --noEmit --pretty\" \"eslint --ext .js,.ts src -f codeframe --max-warnings 0\" \"yarn test:types\"",
|
|
64
|
+
"lint:fix": "concurrently -n \"tsc,eslint,types\" \"tsc --noEmit --pretty\" \"eslint --fix --ext .js,.ts src\" \"yarn test:types\""
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@fortawesome/fontawesome-svg-core": "^1.2.30",
|
|
68
68
|
"@fortawesome/free-solid-svg-icons": "^5.14.0",
|
|
69
69
|
"@fortawesome/vue-fontawesome": "^0.1.10",
|
|
70
70
|
"@mdi/font": "^4.5.95",
|
|
71
|
-
"@types/jest": "^
|
|
72
|
-
"@types/node": "^
|
|
73
|
-
"@vue/test-utils": "
|
|
71
|
+
"@types/jest": "^26.0.14",
|
|
72
|
+
"@types/node": "^14.11.10",
|
|
73
|
+
"@vue/test-utils": "1.0.0-beta.29",
|
|
74
74
|
"autoprefixer": "^9.6.1",
|
|
75
75
|
"babel-loader": "^8.0.6",
|
|
76
76
|
"babel-plugin-detective": "^2.0.0",
|
|
@@ -80,13 +80,13 @@
|
|
|
80
80
|
"concurrently": "^4.1.1",
|
|
81
81
|
"cssnano": "^4.1.10",
|
|
82
82
|
"dotenv": "^8.0.0",
|
|
83
|
-
"eslint-plugin-jest": "^
|
|
83
|
+
"eslint-plugin-jest": "^24.1.0",
|
|
84
84
|
"file-loader": "^4.1.0",
|
|
85
85
|
"fork-ts-checker-webpack-plugin": "^1.6.0",
|
|
86
86
|
"friendly-errors-webpack-plugin": "^1.7.0",
|
|
87
87
|
"happypack": "^5.0.1",
|
|
88
88
|
"identity-obj-proxy": "^3.0.0",
|
|
89
|
-
"jest-canvas-mock": "^2.
|
|
89
|
+
"jest-canvas-mock": "^2.3.0",
|
|
90
90
|
"mini-css-extract-plugin": "^0.8.0",
|
|
91
91
|
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
|
92
92
|
"postcss-loader": "^3.0.0",
|
|
@@ -96,8 +96,7 @@
|
|
|
96
96
|
"style-loader": "^0.23.1",
|
|
97
97
|
"stylus": "^0.54.5",
|
|
98
98
|
"stylus-loader": "^3.0.2",
|
|
99
|
-
"ts-loader": "^
|
|
100
|
-
"tslint": "^5.20.1",
|
|
99
|
+
"ts-loader": "^8.0.6",
|
|
101
100
|
"url-loader": "^2.1.0",
|
|
102
101
|
"vue-meta": "^2.4.0",
|
|
103
102
|
"vue-router": "^3.0.7",
|
|
@@ -115,5 +114,5 @@
|
|
|
115
114
|
"attributes": "dist/json/attributes.json"
|
|
116
115
|
},
|
|
117
116
|
"web-types": "dist/json/web-types.json",
|
|
118
|
-
"gitHead": "
|
|
117
|
+
"gitHead": "e0deddd686566fc6a27287f7e6c79e011a82b8ba"
|
|
119
118
|
}
|
|
@@ -421,8 +421,8 @@ export default VSelect.extend({
|
|
|
421
421
|
|
|
422
422
|
const currentItem = this.selectedItems[this.selectedIndex]
|
|
423
423
|
const currentItemText = this.getText(currentItem)
|
|
424
|
-
event.clipboardData
|
|
425
|
-
event.clipboardData
|
|
424
|
+
event.clipboardData?.setData('text/plain', currentItemText)
|
|
425
|
+
event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)
|
|
426
426
|
event.preventDefault()
|
|
427
427
|
},
|
|
428
428
|
},
|
|
@@ -276,7 +276,7 @@ describe('VAutocomplete.ts', () => {
|
|
|
276
276
|
expect(wrapper.vm.isMenuActive).toBe(true)
|
|
277
277
|
})
|
|
278
278
|
|
|
279
|
-
it('should not show menu when items are updated and hide-no-data is enabled
|
|
279
|
+
it('should not show menu when items are updated and hide-no-data is enabled', async () => {
|
|
280
280
|
const wrapper = mountFunction({
|
|
281
281
|
propsData: {
|
|
282
282
|
hideNoData: true,
|
|
@@ -112,12 +112,12 @@ describe('VBanner.ts', () => {
|
|
|
112
112
|
|
|
113
113
|
const icon = wrapper.find('.v-banner__icon')
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
expect(fn).not.toHaveBeenCalled()
|
|
116
116
|
icon.trigger('click')
|
|
117
|
-
|
|
117
|
+
expect(fn).toHaveBeenCalled()
|
|
118
118
|
})
|
|
119
119
|
|
|
120
|
-
it(
|
|
120
|
+
it(`should not render icon container if icon property and slot aren't passed`, () => {
|
|
121
121
|
const wrapper = mountFunction({
|
|
122
122
|
slots: {
|
|
123
123
|
default: 'Hello, World!',
|
|
@@ -127,7 +127,7 @@ describe('VBanner.ts', () => {
|
|
|
127
127
|
expect(wrapper.findAll('.v-banner__icon')).toHaveLength(0)
|
|
128
128
|
})
|
|
129
129
|
|
|
130
|
-
it(
|
|
130
|
+
it(`should not render actions container if slot isn't passed`, () => {
|
|
131
131
|
const wrapper = mountFunction({
|
|
132
132
|
slots: {
|
|
133
133
|
default: 'Hello, World!',
|
|
@@ -366,7 +366,7 @@ export default CalendarWithEvents.extend({
|
|
|
366
366
|
on: {
|
|
367
367
|
...this.$listeners,
|
|
368
368
|
'click:date': (day: CalendarTimestamp) => {
|
|
369
|
-
if (this.$listeners
|
|
369
|
+
if (this.$listeners.input) {
|
|
370
370
|
this.$emit('input', day.date)
|
|
371
371
|
}
|
|
372
372
|
if (this.$listeners['click:date']) {
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
} from '@vue/test-utils'
|
|
6
6
|
import CalendarWithEvents from '../calendar-with-events'
|
|
7
7
|
import { parseTimestamp } from '../../util/timestamp'
|
|
8
|
-
import { parseEvent } from '../../util/events'
|
|
9
8
|
|
|
10
9
|
const Mock = CalendarWithEvents.extend({
|
|
11
10
|
render: h => h('div'),
|
|
@@ -125,10 +124,10 @@ describe('calendar-with-events.ts', () => {
|
|
|
125
124
|
// Depending on the time format of the underlying system
|
|
126
125
|
// (12-hour with `h` || 12-hour with `hh` || 24-hour with `h` || 24-hour with `hh`),
|
|
127
126
|
// we expect the value passed to be-
|
|
128
|
-
expect(wrapper.vm.formatTime(testData1, true)).toMatch(/^0?8:30( AM)?$/) // 8:30 AM || 08:30 AM || 8:30 || 08:30
|
|
129
|
-
expect(wrapper.vm.formatTime(testData2, true)).toMatch(/^(0?5:45 PM|17:45)$/) // 5:45 PM || 05:45 PM || 17:45
|
|
130
|
-
expect(wrapper.vm.formatTime(testData3, true)).toMatch(/^0?9:05( AM)?$/) // 9:05 AM || 09:05 AM || 9:05 || 09:45
|
|
131
|
-
expect(wrapper.vm.formatTime(testData4, true)).toMatch(/^(0?3 PM|15)$/) // 3 AM || 03 AM || 15
|
|
127
|
+
expect(wrapper.vm.formatTime(testData1, true)).toMatch(/^0?8:30( AM)?$/i) // 8:30 AM || 08:30 AM || 8:30 || 08:30
|
|
128
|
+
expect(wrapper.vm.formatTime(testData2, true)).toMatch(/^(0?5:45 PM|17:45)$/i) // 5:45 PM || 05:45 PM || 17:45
|
|
129
|
+
expect(wrapper.vm.formatTime(testData3, true)).toMatch(/^0?9:05( AM)?$/i) // 9:05 AM || 09:05 AM || 9:05 || 09:45
|
|
130
|
+
expect(wrapper.vm.formatTime(testData4, true)).toMatch(/^(0?3 PM|15)$/i) // 3 AM || 03 AM || 15
|
|
132
131
|
})
|
|
133
132
|
|
|
134
133
|
it('should get events map', async () => {
|
|
@@ -52,7 +52,7 @@ describe('events.ts', () => {
|
|
|
52
52
|
expect(isEventOverlapping(parsed, getDayIdentifier(parseTimestamp('2019-02-16')), getDayIdentifier(parseTimestamp('2019-02-18')))).toBeFalsy()
|
|
53
53
|
})
|
|
54
54
|
|
|
55
|
-
it(
|
|
55
|
+
it(`should throw an error if start isn't defined`, () => {
|
|
56
56
|
const fn = () => parseEvent({
|
|
57
57
|
end: '2019-02-15',
|
|
58
58
|
}, 0, 'start', 'end')
|
|
@@ -381,13 +381,13 @@ describe('VCalendar/util/timestamp.ts', () => { // eslint-disable-line max-state
|
|
|
381
381
|
// TODO Create a test that doesn't fail when
|
|
382
382
|
// the day changes or ignore the code it
|
|
383
383
|
// covers
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
384
|
+
it.skip('should create native locale formatter', () => {
|
|
385
|
+
expect(createNativeLocaleFormatter('en-US', () => {})(parseTimestamp('2019-02-08'))).toBe('2/8/2019')
|
|
386
|
+
expect(createNativeLocaleFormatter('en-UK', () => {})(parseTimestamp('2019-02-08'))).toBe('2/8/2019')
|
|
387
|
+
expect(createNativeLocaleFormatter('ru-RU', () => {})(parseTimestamp('2019-02-08'))).toBe('2019-2-8')
|
|
388
|
+
})
|
|
389
389
|
|
|
390
|
-
it(
|
|
390
|
+
it(`should return emptyFormatter if Intl isn't defined`, () => {
|
|
391
391
|
const intl = global.Intl
|
|
392
392
|
global.Intl = undefined
|
|
393
393
|
expect(createNativeLocaleFormatter('', () => {})(parseTimestamp('2019-02-08'))).toBe('')
|
|
@@ -31,7 +31,7 @@ export function parseEvent (
|
|
|
31
31
|
const endIdentifier: number = getDayIdentifier(end)
|
|
32
32
|
const endOffset: number = start.hasTime ? 0 : 2359
|
|
33
33
|
const endTimestampIdentifier: number = getTimestampIdentifier(end) + endOffset
|
|
34
|
-
const allDay
|
|
34
|
+
const allDay = !start.hasTime
|
|
35
35
|
|
|
36
36
|
return { input, start, startIdentifier, startTimestampIdentifier, end, endIdentifier, endTimestampIdentifier, allDay, index, category }
|
|
37
37
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'
|
|
2
2
|
import { isLeapYear } from '../../../util/dateTimeUtils'
|
|
3
3
|
|
|
4
|
-
export const PARSE_REGEX
|
|
5
|
-
export const PARSE_TIME
|
|
4
|
+
export const PARSE_REGEX = /^(\d{4})-(\d{1,2})(-(\d{1,2}))?([^\d]+(\d{1,2}))?(:(\d{1,2}))?(:(\d{1,2}))?$/
|
|
5
|
+
export const PARSE_TIME = /(\d\d?)(:(\d\d?)|)(:(\d\d?)|)/
|
|
6
6
|
|
|
7
7
|
export const DAYS_IN_MONTH: number[] = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
|
|
8
8
|
export const DAYS_IN_MONTH_LEAP: number[] = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
|
|
@@ -115,53 +115,50 @@ export default Vue.extend({
|
|
|
115
115
|
])
|
|
116
116
|
},
|
|
117
117
|
genInputs (): VNode[] | VNode {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
if (this.internalMode === 'hexa') {
|
|
119
|
+
const hex = this.color.hexa
|
|
120
|
+
const value = this.hideAlpha && hex.endsWith('FF') ? hex.substr(0, 7) : hex
|
|
121
|
+
return this.genInput(
|
|
122
|
+
'hex',
|
|
123
|
+
{
|
|
124
|
+
maxlength: this.hideAlpha ? 7 : 9,
|
|
125
|
+
disabled: this.disabled,
|
|
126
|
+
},
|
|
127
|
+
value,
|
|
128
|
+
{
|
|
129
|
+
change: (e: Event) => {
|
|
130
|
+
const el = e.target as HTMLInputElement
|
|
131
|
+
this.$emit('update:color', this.currentMode.from(parseHex(el.value)))
|
|
132
|
+
},
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
} else {
|
|
136
|
+
const inputs = this.hideAlpha ? this.currentMode.inputs!.slice(0, -1) : this.currentMode.inputs!
|
|
137
|
+
return inputs.map(([target, max, type]) => {
|
|
138
|
+
const value = this.color[this.internalMode as keyof VColorPickerColor] as any
|
|
122
139
|
return this.genInput(
|
|
123
|
-
|
|
140
|
+
target,
|
|
124
141
|
{
|
|
125
|
-
|
|
142
|
+
type: 'number',
|
|
143
|
+
min: 0,
|
|
144
|
+
max,
|
|
145
|
+
step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,
|
|
126
146
|
disabled: this.disabled,
|
|
127
147
|
},
|
|
128
|
-
value,
|
|
148
|
+
this.getValue(value[target], type),
|
|
129
149
|
{
|
|
130
|
-
|
|
150
|
+
input: (e: Event) => {
|
|
131
151
|
const el = e.target as HTMLInputElement
|
|
132
|
-
|
|
152
|
+
const newVal = this.parseValue(el.value || '0', type)
|
|
153
|
+
|
|
154
|
+
this.$emit('update:color', this.currentMode.from(
|
|
155
|
+
Object.assign({}, value, { [target]: newVal }),
|
|
156
|
+
this.color.alpha
|
|
157
|
+
))
|
|
133
158
|
},
|
|
134
159
|
}
|
|
135
160
|
)
|
|
136
|
-
}
|
|
137
|
-
default: {
|
|
138
|
-
const inputs = this.hideAlpha ? this.currentMode.inputs!.slice(0, -1) : this.currentMode.inputs!
|
|
139
|
-
return inputs.map(([target, max, type]) => {
|
|
140
|
-
const value = this.color[this.internalMode as keyof VColorPickerColor] as any
|
|
141
|
-
return this.genInput(
|
|
142
|
-
target,
|
|
143
|
-
{
|
|
144
|
-
type: 'number',
|
|
145
|
-
min: 0,
|
|
146
|
-
max,
|
|
147
|
-
step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,
|
|
148
|
-
disabled: this.disabled,
|
|
149
|
-
},
|
|
150
|
-
this.getValue(value[target], type),
|
|
151
|
-
{
|
|
152
|
-
input: (e: Event) => {
|
|
153
|
-
const el = e.target as HTMLInputElement
|
|
154
|
-
const newVal = this.parseValue(el.value || '0', type)
|
|
155
|
-
|
|
156
|
-
this.$emit('update:color', this.currentMode.from(
|
|
157
|
-
Object.assign({}, value, { [target]: newVal }),
|
|
158
|
-
this.color.alpha
|
|
159
|
-
))
|
|
160
|
-
},
|
|
161
|
-
}
|
|
162
|
-
)
|
|
163
|
-
})
|
|
164
|
-
}
|
|
161
|
+
})
|
|
165
162
|
}
|
|
166
163
|
},
|
|
167
164
|
genSwitch (): VNode {
|
|
@@ -139,6 +139,8 @@ describe('VColorPicker.ts', () => {
|
|
|
139
139
|
})
|
|
140
140
|
|
|
141
141
|
// https://github.com/vuetifyjs/vuetify/issues/9472
|
|
142
|
+
// https://github.com/vuetifyjs/vuetify/issues/10402
|
|
143
|
+
// TODO: snapshot is too complex for this
|
|
142
144
|
it('should work correctly when initial value is null', () => {
|
|
143
145
|
const wrapper = mountFunction({
|
|
144
146
|
propsData: {
|
|
@@ -168,15 +170,4 @@ describe('VColorPicker.ts', () => {
|
|
|
168
170
|
|
|
169
171
|
expect(wrapper.html()).toMatchSnapshot()
|
|
170
172
|
})
|
|
171
|
-
|
|
172
|
-
// https://github.com/vuetifyjs/vuetify/issues/10402
|
|
173
|
-
it('should not hide alpha if given initial value of null', () => {
|
|
174
|
-
const wrapper = mountFunction({
|
|
175
|
-
propsData: {
|
|
176
|
-
value: null,
|
|
177
|
-
},
|
|
178
|
-
})
|
|
179
|
-
|
|
180
|
-
expect(wrapper.html()).toMatchSnapshot()
|
|
181
|
-
})
|
|
182
173
|
})
|