vuetify 2.5.9 → 2.5.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/dist/json/attributes.json +58 -66
  2. package/dist/json/tags.json +0 -2
  3. package/dist/json/web-types.json +89 -146
  4. package/dist/vuetify.css +37 -24
  5. package/dist/vuetify.css.map +1 -1
  6. package/dist/vuetify.js +374 -177
  7. package/dist/vuetify.js.map +1 -1
  8. package/dist/vuetify.min.css +2 -2
  9. package/dist/vuetify.min.js +2 -2
  10. package/es5/components/VAppBar/VAppBar.js +3 -0
  11. package/es5/components/VAppBar/VAppBar.js.map +1 -1
  12. package/es5/components/VAutocomplete/VAutocomplete.js +20 -2
  13. package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
  14. package/es5/components/VCalendar/mixins/calendar-with-events.js +4 -2
  15. package/es5/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
  16. package/es5/components/VCalendar/mixins/mouse.js +19 -0
  17. package/es5/components/VCalendar/mixins/mouse.js.map +1 -1
  18. package/es5/components/VCalendar/util/timestamp.js +2 -2
  19. package/es5/components/VCalendar/util/timestamp.js.map +1 -1
  20. package/es5/components/VCombobox/VCombobox.js +0 -5
  21. package/es5/components/VCombobox/VCombobox.js.map +1 -1
  22. package/es5/components/VDataTable/VDataTableHeaderMobile.js +2 -2
  23. package/es5/components/VDataTable/VDataTableHeaderMobile.js.map +1 -1
  24. package/es5/components/VDialog/VDialog.js +4 -2
  25. package/es5/components/VDialog/VDialog.js.map +1 -1
  26. package/es5/components/VList/VListItem.js +8 -1
  27. package/es5/components/VList/VListItem.js.map +1 -1
  28. package/es5/components/VOverlay/VOverlay.js +1 -0
  29. package/es5/components/VOverlay/VOverlay.js.map +1 -1
  30. package/es5/components/VRadioGroup/VRadioGroup.js +7 -0
  31. package/es5/components/VRadioGroup/VRadioGroup.js.map +1 -1
  32. package/es5/components/VRangeSlider/VRangeSlider.js +4 -1
  33. package/es5/components/VRangeSlider/VRangeSlider.js.map +1 -1
  34. package/es5/components/VSelect/VSelect.js +1 -1
  35. package/es5/components/VSelect/VSelect.js.map +1 -1
  36. package/es5/components/VSlideGroup/VSlideGroup.js +93 -37
  37. package/es5/components/VSlideGroup/VSlideGroup.js.map +1 -1
  38. package/es5/components/VTabs/VTab.js +15 -4
  39. package/es5/components/VTabs/VTab.js.map +1 -1
  40. package/es5/components/VTabs/VTabsBar.js +1 -1
  41. package/es5/components/VTabs/VTabsBar.js.map +1 -1
  42. package/es5/components/VTextarea/VTextarea.js +11 -2
  43. package/es5/components/VTextarea/VTextarea.js.map +1 -1
  44. package/es5/components/VTooltip/VTooltip.js +2 -5
  45. package/es5/components/VTooltip/VTooltip.js.map +1 -1
  46. package/es5/components/VTreeview/VTreeview.js +1 -1
  47. package/es5/components/VTreeview/VTreeview.js.map +1 -1
  48. package/es5/components/transitions/createTransition.js +1 -5
  49. package/es5/components/transitions/createTransition.js.map +1 -1
  50. package/es5/directives/click-outside/index.js +19 -10
  51. package/es5/directives/click-outside/index.js.map +1 -1
  52. package/es5/directives/intersect/index.js +12 -11
  53. package/es5/directives/intersect/index.js.map +1 -1
  54. package/es5/directives/mutate/index.js +7 -6
  55. package/es5/directives/mutate/index.js.map +1 -1
  56. package/es5/directives/resize/index.js +8 -7
  57. package/es5/directives/resize/index.js.map +1 -1
  58. package/es5/directives/ripple/index.js +2 -3
  59. package/es5/directives/ripple/index.js.map +1 -1
  60. package/es5/directives/scroll/index.js +13 -10
  61. package/es5/directives/scroll/index.js.map +1 -1
  62. package/es5/framework.js +1 -1
  63. package/es5/locale/fr.js +1 -1
  64. package/es5/locale/fr.js.map +1 -1
  65. package/es5/mixins/detachable/index.js +32 -14
  66. package/es5/mixins/detachable/index.js.map +1 -1
  67. package/es5/mixins/intersectable/index.js +5 -2
  68. package/es5/mixins/intersectable/index.js.map +1 -1
  69. package/es5/mixins/menuable/index.js +5 -5
  70. package/es5/mixins/menuable/index.js.map +1 -1
  71. package/es5/mixins/overlayable/index.js +22 -35
  72. package/es5/mixins/overlayable/index.js.map +1 -1
  73. package/es5/mixins/routable/index.js +9 -3
  74. package/es5/mixins/routable/index.js.map +1 -1
  75. package/es5/services/goto/index.js +3 -1
  76. package/es5/services/goto/index.js.map +1 -1
  77. package/es5/util/helpers.js +23 -0
  78. package/es5/util/helpers.js.map +1 -1
  79. package/lib/components/VAppBar/VAppBar.js +4 -0
  80. package/lib/components/VAppBar/VAppBar.js.map +1 -1
  81. package/lib/components/VAutocomplete/VAutocomplete.js +18 -2
  82. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  83. package/lib/components/VCalendar/mixins/calendar-with-events.js +4 -2
  84. package/lib/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
  85. package/lib/components/VCalendar/mixins/mouse.js +19 -0
  86. package/lib/components/VCalendar/mixins/mouse.js.map +1 -1
  87. package/lib/components/VCalendar/util/timestamp.js +2 -2
  88. package/lib/components/VCalendar/util/timestamp.js.map +1 -1
  89. package/lib/components/VCombobox/VCombobox.js +0 -5
  90. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  91. package/lib/components/VDataTable/VDataTableHeaderMobile.js +2 -2
  92. package/lib/components/VDataTable/VDataTableHeaderMobile.js.map +1 -1
  93. package/lib/components/VDialog/VDialog.js +5 -2
  94. package/lib/components/VDialog/VDialog.js.map +1 -1
  95. package/lib/components/VList/VListItem.js +9 -1
  96. package/lib/components/VList/VListItem.js.map +1 -1
  97. package/lib/components/VOverlay/VOverlay.js +1 -0
  98. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  99. package/lib/components/VRadioGroup/VRadioGroup.js +9 -0
  100. package/lib/components/VRadioGroup/VRadioGroup.js.map +1 -1
  101. package/lib/components/VRangeSlider/VRangeSlider.js +4 -1
  102. package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
  103. package/lib/components/VSelect/VSelect.js +1 -1
  104. package/lib/components/VSelect/VSelect.js.map +1 -1
  105. package/lib/components/VSlideGroup/VSlideGroup.js +63 -40
  106. package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
  107. package/lib/components/VTabs/VTab.js +16 -6
  108. package/lib/components/VTabs/VTab.js.map +1 -1
  109. package/lib/components/VTabs/VTabsBar.js +1 -1
  110. package/lib/components/VTabs/VTabsBar.js.map +1 -1
  111. package/lib/components/VTextarea/VTextarea.js +8 -0
  112. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  113. package/lib/components/VTooltip/VTooltip.js +2 -5
  114. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  115. package/lib/components/VTreeview/VTreeview.js +1 -1
  116. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  117. package/lib/components/transitions/createTransition.js +1 -5
  118. package/lib/components/transitions/createTransition.js.map +1 -1
  119. package/lib/directives/click-outside/index.js +20 -10
  120. package/lib/directives/click-outside/index.js.map +1 -1
  121. package/lib/directives/intersect/index.js +12 -10
  122. package/lib/directives/intersect/index.js.map +1 -1
  123. package/lib/directives/mutate/index.js +7 -6
  124. package/lib/directives/mutate/index.js.map +1 -1
  125. package/lib/directives/resize/index.js +6 -5
  126. package/lib/directives/resize/index.js.map +1 -1
  127. package/lib/directives/ripple/index.js +2 -3
  128. package/lib/directives/ripple/index.js.map +1 -1
  129. package/lib/directives/scroll/index.js +9 -6
  130. package/lib/directives/scroll/index.js.map +1 -1
  131. package/lib/framework.js +1 -1
  132. package/lib/locale/fr.js +1 -1
  133. package/lib/locale/fr.js.map +1 -1
  134. package/lib/mixins/detachable/index.js +28 -13
  135. package/lib/mixins/detachable/index.js.map +1 -1
  136. package/lib/mixins/intersectable/index.js +5 -2
  137. package/lib/mixins/intersectable/index.js.map +1 -1
  138. package/lib/mixins/menuable/index.js +4 -4
  139. package/lib/mixins/menuable/index.js.map +1 -1
  140. package/lib/mixins/overlayable/index.js +23 -36
  141. package/lib/mixins/overlayable/index.js.map +1 -1
  142. package/lib/mixins/routable/index.js +12 -3
  143. package/lib/mixins/routable/index.js.map +1 -1
  144. package/lib/services/goto/index.js +3 -1
  145. package/lib/services/goto/index.js.map +1 -1
  146. package/lib/util/helpers.js +21 -0
  147. package/lib/util/helpers.js.map +1 -1
  148. package/package.json +2 -3
  149. package/src/components/VAppBar/VAppBar.ts +3 -0
  150. package/src/components/VAutocomplete/VAutocomplete.ts +15 -2
  151. package/src/components/VCalendar/mixins/calendar-with-events.sass +7 -1
  152. package/src/components/VCalendar/mixins/calendar-with-events.ts +3 -3
  153. package/src/components/VCalendar/mixins/mouse.ts +21 -0
  154. package/src/components/VCalendar/util/__tests__/events.spec.ts +1 -1
  155. package/src/components/VCalendar/util/timestamp.ts +2 -2
  156. package/src/components/VCombobox/VCombobox.ts +0 -5
  157. package/src/components/VCombobox/__tests__/VCombobox-multiple.spec.ts +113 -0
  158. package/src/components/VCombobox/__tests__/VCombobox.spec.ts +30 -0
  159. package/src/components/VDataTable/VDataTableHeaderMobile.ts +3 -1
  160. package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +0 -20
  161. package/src/components/VDialog/VDialog.ts +4 -2
  162. package/src/components/VImg/__tests__/VImg.spec.ts +1 -1
  163. package/src/components/VList/VListItem.sass +2 -1
  164. package/src/components/VList/VListItem.ts +7 -1
  165. package/src/components/VList/__tests__/VListItem.spec.ts +16 -0
  166. package/src/components/VOverlay/VOverlay.ts +1 -0
  167. package/src/components/VRadioGroup/VRadioGroup.ts +8 -0
  168. package/src/components/VRangeSlider/VRangeSlider.ts +3 -1
  169. package/src/components/VSelect/VSelect.ts +1 -1
  170. package/src/components/VSlideGroup/VSlideGroup.ts +75 -35
  171. package/src/components/VSlideGroup/__tests__/VSlideGroup.spec.ts +1 -3
  172. package/src/components/VSnackbar/VSnackbar.sass +2 -0
  173. package/src/components/VStepper/VStepper.sass +5 -1
  174. package/src/components/VStepper/_variables.scss +2 -1
  175. package/src/components/VTabs/VTab.ts +14 -4
  176. package/src/components/VTabs/VTabs.sass +5 -2
  177. package/src/components/VTabs/VTabsBar.ts +2 -2
  178. package/src/components/VTextarea/VTextarea.ts +7 -0
  179. package/src/components/VTooltip/VTooltip.ts +2 -5
  180. package/src/components/VTreeview/VTreeview.ts +1 -1
  181. package/src/components/transitions/createTransition.ts +1 -5
  182. package/src/directives/click-outside/__tests__/click-outside-shadow-dom.spec.ts +9 -6
  183. package/src/directives/click-outside/__tests__/click-outside.spec.ts +7 -4
  184. package/src/directives/click-outside/index.ts +19 -10
  185. package/src/directives/intersect/__tests__/intersect.spec.ts +13 -10
  186. package/src/directives/intersect/index.ts +13 -12
  187. package/src/directives/mutate/__tests__/mutate.spec.ts +36 -17
  188. package/src/directives/mutate/index.ts +8 -7
  189. package/src/directives/resize/__tests__/resize.spec.ts +4 -4
  190. package/src/directives/resize/index.ts +10 -5
  191. package/src/directives/ripple/index.ts +3 -5
  192. package/src/directives/scroll/__tests__/scroll.spec.ts +9 -9
  193. package/src/directives/scroll/index.ts +8 -7
  194. package/src/globals.d.ts +10 -11
  195. package/src/locale/fr.ts +1 -1
  196. package/src/mixins/detachable/index.ts +32 -15
  197. package/src/mixins/intersectable/index.ts +5 -2
  198. package/src/mixins/menuable/index.ts +4 -4
  199. package/src/mixins/overlayable/index.ts +24 -35
  200. package/src/mixins/routable/__tests__/routable.spec.ts +82 -5
  201. package/src/mixins/routable/index.ts +10 -3
  202. package/src/services/goto/index.ts +6 -1
  203. package/src/styles/components/_selection-controls.sass +4 -7
  204. package/src/styles/generic/_transitions.scss +219 -215
  205. package/src/styles/settings/_variables.scss +7 -7
  206. package/src/util/helpers.ts +22 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/detachable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Bootable from '../bootable'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { PropOptions } from 'vue'\nimport { VNode } from 'vue/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n}\n\nfunction validateAttachTarget (val: any) {\n const type = typeof val\n\n if (type === 'boolean' || type === 'string') return true\n\n return val.nodeType === Node.ELEMENT_NODE\n}\n\n/* @vue/component */\nexport default mixins<options &\n /* eslint-disable indent */\n ExtractVue<typeof Bootable>\n /* eslint-enable indent */\n>(Bootable).extend({\n name: 'detachable',\n\n props: {\n attach: {\n default: false,\n validator: validateAttachTarget,\n } as PropOptions<boolean | string | Element>,\n contentClass: {\n type: String,\n default: '',\n },\n },\n\n data: () => ({\n activatorNode: null as null | VNode | VNode[],\n hasDetached: false,\n }),\n\n watch: {\n attach () {\n this.hasDetached = false\n this.initDetach()\n },\n hasContent () {\n this.$nextTick(this.initDetach)\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n\n activator.forEach(node => {\n if (!node.elm) return\n if (!this.$el.parentNode) return\n\n const target = this.$el === this.$el.parentNode.firstChild\n ? this.$el\n : this.$el.nextSibling\n\n this.$el.parentNode.insertBefore(node.elm, target)\n })\n }\n })\n },\n\n mounted () {\n this.hasContent && this.initDetach()\n },\n\n deactivated () {\n this.isActive = false\n },\n\n beforeDestroy () {\n // IE11 Fix\n try {\n if (\n this.$refs.content &&\n this.$refs.content.parentNode\n ) {\n this.$refs.content.parentNode.removeChild(this.$refs.content)\n }\n\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n activator.forEach(node => {\n node.elm &&\n node.elm.parentNode &&\n node.elm.parentNode.removeChild(node.elm)\n })\n }\n } catch (e) { console.log(e) } /* eslint-disable-line no-console */\n },\n\n methods: {\n getScopeIdAttrs () {\n const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId')\n\n return scopeId && {\n [scopeId]: '',\n }\n },\n initDetach () {\n if (this._isDestroyed ||\n !this.$refs.content ||\n this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\n this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) return\n\n let target\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]')\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach)\n } else {\n // DOM Element\n target = this.attach\n }\n\n if (!target) {\n consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this)\n return\n }\n\n target.appendChild(this.$refs.content)\n\n this.hasDetached = true\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/detachable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;AACA;;AACA;;;;;;;;AAaA,SAAS,oBAAT,CAA+B,GAA/B,EAAuC;AACrC,MAAM,IAAI,WAAU,GAAV,CAAV;;AAEA,MAAI,IAAI,KAAK,SAAT,IAAsB,IAAI,KAAK,QAAnC,EAA6C,OAAO,IAAP;AAE7C,SAAO,GAAG,CAAC,QAAJ,KAAiB,IAAI,CAAC,YAA7B;AACD;;AAED,SAAS,eAAT,CAA0B,SAA1B,EAA4C;AAC1C,EAAA,SAAS,CAAC,OAAV,CAAkB,UAAA,IAAI,EAAG;AACvB,IAAA,IAAI,CAAC,GAAL,IACA,IAAI,CAAC,GAAL,CAAS,UADT,IAEA,IAAI,CAAC,GAAL,CAAS,UAAT,CAAoB,WAApB,CAAgC,IAAI,CAAC,GAArC,CAFA;AAGD,GAJD;AAKD;AAED;;;eACe,qBAIb,iBAJa,EAIH,MAJG,CAII;AACjB,EAAA,IAAI,EAAE,YADW;AAGjB,EAAA,KAAK,EAAE;AACL,IAAA,MAAM,EAAE;AACN,MAAA,OAAO,EAAE,KADH;AAEN,MAAA,SAAS,EAAE;AAFL,KADH;AAKL,IAAA,YAAY,EAAE;AACZ,MAAA,IAAI,EAAE,MADM;AAEZ,MAAA,OAAO,EAAE;AAFG;AALT,GAHU;AAcjB,EAAA,IAAI,EAAE;AAAA,WAAO;AACX,MAAA,aAAa,EAAE,IADJ;AAEX,MAAA,WAAW,EAAE;AAFF,KAAP;AAAA,GAdW;AAmBjB,EAAA,KAAK,EAAE;AACL,IAAA,MADK,oBACC;AACJ,WAAK,WAAL,GAAmB,KAAnB;AACA,WAAK,UAAL;AACD,KAJI;AAKL,IAAA,UALK,wBAKK;AACR,WAAK,SAAL,CAAe,KAAK,UAApB;AACD;AAPI,GAnBU;AA6BjB,EAAA,WA7BiB,yBA6BN;AAAA;;AACT,SAAK,SAAL,CAAe,YAAK;AAClB,UAAI,KAAI,CAAC,aAAT,EAAwB;AACtB,YAAM,SAAS,GAAG,KAAK,CAAC,OAAN,CAAc,KAAI,CAAC,aAAnB,IAAoC,KAAI,CAAC,aAAzC,GAAyD,CAAC,KAAI,CAAC,aAAN,CAA3E;AAEA,QAAA,SAAS,CAAC,OAAV,CAAkB,UAAA,IAAI,EAAG;AACvB,cAAI,CAAC,IAAI,CAAC,GAAV,EAAe;AACf,cAAI,CAAC,KAAI,CAAC,GAAL,CAAS,UAAd,EAA0B;AAE1B,cAAM,MAAM,GAAG,KAAI,CAAC,GAAL,KAAa,KAAI,CAAC,GAAL,CAAS,UAAT,CAAoB,UAAjC,GACX,KAAI,CAAC,GADM,GAEX,KAAI,CAAC,GAAL,CAAS,WAFb;;AAIA,UAAA,KAAI,CAAC,GAAL,CAAS,UAAT,CAAoB,YAApB,CAAiC,IAAI,CAAC,GAAtC,EAA2C,MAA3C;AACD,SATD;AAUD;AACF,KAfD;AAgBD,GA9CgB;AAgDjB,EAAA,OAhDiB,qBAgDV;AACL,SAAK,UAAL,IAAmB,KAAK,UAAL,EAAnB;AACD,GAlDgB;AAoDjB,EAAA,WApDiB,yBAoDN;AACT,SAAK,QAAL,GAAgB,KAAhB;AACD,GAtDgB;AAwDjB,EAAA,aAxDiB,2BAwDJ;AACX,QACE,KAAK,KAAL,CAAW,OAAX,IACA,KAAK,KAAL,CAAW,OAAX,CAAmB,UAFrB,EAGE;AACA,WAAK,KAAL,CAAW,OAAX,CAAmB,UAAnB,CAA8B,WAA9B,CAA0C,KAAK,KAAL,CAAW,OAArD;AACD;AACF,GA/DgB;AAiEjB,EAAA,SAjEiB,uBAiER;AAAA;;AACP,QAAI,KAAK,aAAT,EAAwB;AACtB,UAAM,SAAS,GAAG,KAAK,CAAC,OAAN,CAAc,KAAK,aAAnB,IAAoC,KAAK,aAAzC,GAAyD,CAAC,KAAK,aAAN,CAA3E;;AACA,UAAI,KAAK,GAAL,CAAS,WAAb,EAA0B;AACxB;AACA;AACA,YAAM,QAAQ,GAAG,IAAI,gBAAJ,CAAqB,UAAA,IAAI,EAAG;AAC3C,cACE,IAAI,CAAC,IAAL,CAAU,UAAA,MAAM;AAAA,mBAAI,KAAK,CAAC,IAAN,CAAW,MAAM,CAAC,YAAlB,EAAgC,QAAhC,CAAyC,MAAI,CAAC,GAA9C,CAAJ;AAAA,WAAhB,CADF,EAEE;AACA,YAAA,QAAQ,CAAC,UAAT;AACA,YAAA,eAAe,CAAC,SAAD,CAAf;AACD;AACF,SAPgB,CAAjB;AAQA,QAAA,QAAQ,CAAC,OAAT,CAAiB,KAAK,GAAL,CAAS,UAA1B,EAAuC;AAAE,UAAA,OAAO,EAAE,KAAX;AAAkB,UAAA,SAAS,EAAE;AAA7B,SAAvC;AACD,OAZD,MAYO;AACL,QAAA,eAAe,CAAC,SAAD,CAAf;AACD;AACF;AACF,GApFgB;AAsFjB,EAAA,OAAO,EAAE;AACP,IAAA,eADO,6BACQ;AACb,UAAM,OAAO,GAAG,mCAAqB,KAAK,MAA1B,EAAkC,2BAAlC,CAAhB;AAEA,aAAO,OAAO,wBACX,OADW,EACD,EADC,CAAd;AAGD,KAPM;AAQP,IAAA,UARO,wBAQG;AACR,UAAI,KAAK,YAAL,IACF,CAAC,KAAK,KAAL,CAAW,OADV,IAEF,KAAK,WAFH,IAGF;AACA;AACA,WAAK,MAAL,KAAgB,EALd,IAKoB;AACtB,WAAK,MAAL,KAAgB,IANd,IAMsB;AACxB,WAAK,MAAL,KAAgB,QAPlB,CAO2B;AAP3B,QAQE;AAEF,UAAI,MAAJ;;AACA,UAAI,KAAK,MAAL,KAAgB,KAApB,EAA2B;AACzB;AACA,QAAA,MAAM,GAAG,QAAQ,CAAC,aAAT,CAAuB,YAAvB,CAAT;AACD,OAHD,MAGO,IAAI,OAAO,KAAK,MAAZ,KAAuB,QAA3B,EAAqC;AAC1C;AACA,QAAA,MAAM,GAAG,QAAQ,CAAC,aAAT,CAAuB,KAAK,MAA5B,CAAT;AACD,OAHM,MAGA;AACL;AACA,QAAA,MAAM,GAAG,KAAK,MAAd;AACD;;AAED,UAAI,CAAC,MAAL,EAAa;AACX,oEAAuC,KAAK,MAAL,IAAe,YAAtD,GAAsE,IAAtE;AACA;AACD;;AAED,MAAA,MAAM,CAAC,WAAP,CAAmB,KAAK,KAAL,CAAW,OAA9B;AAEA,WAAK,WAAL,GAAmB,IAAnB;AACD;AAvCM;AAtFQ,CAJJ,C","sourcesContent":["// Mixins\nimport Bootable from '../bootable'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { PropOptions } from 'vue'\nimport { VNode } from 'vue/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n}\n\nfunction validateAttachTarget (val: any) {\n const type = typeof val\n\n if (type === 'boolean' || type === 'string') return true\n\n return val.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeActivator (activator: VNode[]) {\n activator.forEach(node => {\n node.elm &&\n node.elm.parentNode &&\n node.elm.parentNode.removeChild(node.elm)\n })\n}\n\n/* @vue/component */\nexport default mixins<options &\n /* eslint-disable indent */\n ExtractVue<typeof Bootable>\n /* eslint-enable indent */\n>(Bootable).extend({\n name: 'detachable',\n\n props: {\n attach: {\n default: false,\n validator: validateAttachTarget,\n } as PropOptions<boolean | string | Element>,\n contentClass: {\n type: String,\n default: '',\n },\n },\n\n data: () => ({\n activatorNode: null as null | VNode | VNode[],\n hasDetached: false,\n }),\n\n watch: {\n attach () {\n this.hasDetached = false\n this.initDetach()\n },\n hasContent () {\n this.$nextTick(this.initDetach)\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n\n activator.forEach(node => {\n if (!node.elm) return\n if (!this.$el.parentNode) return\n\n const target = this.$el === this.$el.parentNode.firstChild\n ? this.$el\n : this.$el.nextSibling\n\n this.$el.parentNode.insertBefore(node.elm, target)\n })\n }\n })\n },\n\n mounted () {\n this.hasContent && this.initDetach()\n },\n\n deactivated () {\n this.isActive = false\n },\n\n beforeDestroy () {\n if (\n this.$refs.content &&\n this.$refs.content.parentNode\n ) {\n this.$refs.content.parentNode.removeChild(this.$refs.content)\n }\n },\n\n destroyed () {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n if (this.$el.isConnected) {\n // Component has been destroyed but the element still exists, we must be in a transition\n // Wait for the transition to finish before cleaning up the detached activator\n const observer = new MutationObserver(list => {\n if (\n list.some(record => Array.from(record.removedNodes).includes(this.$el))\n ) {\n observer.disconnect()\n removeActivator(activator)\n }\n })\n observer.observe(this.$el.parentNode!, { subtree: false, childList: true })\n } else {\n removeActivator(activator)\n }\n }\n },\n\n methods: {\n getScopeIdAttrs () {\n const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId')\n\n return scopeId && {\n [scopeId]: '',\n }\n },\n initDetach () {\n if (this._isDestroyed ||\n !this.$refs.content ||\n this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\n this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) return\n\n let target\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]')\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach)\n } else {\n // DOM Element\n target = this.attach\n }\n\n if (!target) {\n consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this)\n return\n }\n\n target.appendChild(this.$refs.content)\n\n this.hasDetached = true\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
@@ -23,10 +23,13 @@ function intersectable(options) {
23
23
  _intersect.default.inserted(this.$el, {
24
24
  name: 'intersect',
25
25
  value: this.onObserve
26
- });
26
+ }, this.$vnode);
27
27
  },
28
28
  destroyed: function destroyed() {
29
- _intersect.default.unbind(this.$el);
29
+ _intersect.default.unbind(this.$el, {
30
+ name: 'intersect',
31
+ value: this.onObserve
32
+ }, this.$vnode);
30
33
  },
31
34
  methods: {
32
35
  onObserve: function onObserve(entries, observer, isIntersecting) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/intersectable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;AAGA;;;;AAPA;AAGA;AAGA;AAGc,SAAU,aAAV,CAAyB,OAAzB,EAAyD;AACrE,SAAO,aAAI,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,eADU;AAGhB,IAAA,OAHgB,qBAGT;AACL,yBAAU,QAAV,CAAmB,KAAK,GAAxB,EAA4C;AAC1C,QAAA,IAAI,EAAE,WADoC;AAE1C,QAAA,KAAK,EAAE,KAAK;AAF8B,OAA5C;AAID,KARe;AAUhB,IAAA,SAVgB,uBAUP;AACP,yBAAU,MAAV,CAAiB,KAAK,GAAtB;AACD,KAZe;AAchB,IAAA,OAAO,EAAE;AACP,MAAA,SADO,qBACI,OADJ,EAC0C,QAD1C,EAC0E,cAD1E,EACiG;AACtG,YAAI,CAAC,cAAL,EAAqB;;AAErB,aAAK,IAAI,CAAC,GAAG,CAAR,EAAW,MAAM,GAAG,OAAO,CAAC,SAAR,CAAkB,MAA3C,EAAmD,CAAC,GAAG,MAAvD,EAA+D,CAAC,EAAhE,EAAoE;AAClE,cAAM,QAAQ,GAAI,KAAa,OAAO,CAAC,SAAR,CAAkB,CAAlB,CAAb,CAAlB;;AAEA,cAAI,OAAO,QAAP,KAAoB,UAAxB,EAAoC;AAClC,YAAA,QAAQ;AACR;AACD;;AAED,oCAAY,OAAO,CAAC,SAAR,CAAkB,CAAlB,IAAuB,wFAAnC;AACD;AACF;AAdM;AAdO,GAAX,CAAP;AA+BD","sourcesContent":["// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n })\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/intersectable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;AAGA;;;;AAPA;AAGA;AAGA;AAGc,SAAU,aAAV,CAAyB,OAAzB,EAAyD;AACrE,SAAO,aAAI,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,eADU;AAGhB,IAAA,OAHgB,qBAGT;AACL,yBAAU,QAAV,CAAmB,KAAK,GAAxB,EAA4C;AAC1C,QAAA,IAAI,EAAE,WADoC;AAE1C,QAAA,KAAK,EAAE,KAAK;AAF8B,OAA5C,EAGG,KAAK,MAHR;AAID,KARe;AAUhB,IAAA,SAVgB,uBAUP;AACP,yBAAU,MAAV,CAAiB,KAAK,GAAtB,EAA0C;AACxC,QAAA,IAAI,EAAE,WADkC;AAExC,QAAA,KAAK,EAAE,KAAK;AAF4B,OAA1C,EAGG,KAAK,MAHR;AAID,KAfe;AAiBhB,IAAA,OAAO,EAAE;AACP,MAAA,SADO,qBACI,OADJ,EAC0C,QAD1C,EAC0E,cAD1E,EACiG;AACtG,YAAI,CAAC,cAAL,EAAqB;;AAErB,aAAK,IAAI,CAAC,GAAG,CAAR,EAAW,MAAM,GAAG,OAAO,CAAC,SAAR,CAAkB,MAA3C,EAAmD,CAAC,GAAG,MAAvD,EAA+D,CAAC,EAAhE,EAAoE;AAClE,cAAM,QAAQ,GAAI,KAAa,OAAO,CAAC,SAAR,CAAkB,CAAlB,CAAb,CAAlB;;AAEA,cAAI,OAAO,QAAP,KAAoB,UAAxB,EAAoC;AAClC,YAAA,QAAQ;AACR;AACD;;AAED,oCAAY,OAAO,CAAC,SAAR,CAAkB,CAAlB,IAAuB,wFAAnC;AACD;AACF;AAdM;AAjBO,GAAX,CAAP;AAkCD","sourcesContent":["// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n"],"sourceRoot":"","file":"index.js"}
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _positionable = _interopRequireDefault(require("../positionable"));
9
-
10
8
  var _stackable = _interopRequireDefault(require("../stackable"));
11
9
 
10
+ var _positionable = require("../positionable");
11
+
12
12
  var _activatable = _interopRequireDefault(require("../activatable"));
13
13
 
14
14
  var _detachable = _interopRequireDefault(require("../detachable"));
@@ -25,7 +25,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
25
25
 
26
26
  function _defineProperty(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; }
27
27
 
28
- var baseMixins = (0, _mixins.default)(_stackable.default, _positionable.default, _activatable.default, _detachable.default);
28
+ var baseMixins = (0, _mixins.default)(_stackable.default, (0, _positionable.factory)(['top', 'right', 'bottom', 'left', 'absolute']), _activatable.default, _detachable.default);
29
29
  /* @vue/component */
30
30
 
31
31
  var _default = baseMixins.extend().extend({
@@ -177,8 +177,8 @@ var _default = baseMixins.extend().extend({
177
177
  methods: {
178
178
  absolutePosition: function absolutePosition() {
179
179
  return {
180
- offsetTop: 0,
181
- offsetLeft: 0,
180
+ offsetTop: this.positionY || this.absoluteY,
181
+ offsetLeft: this.positionX || this.absoluteX,
182
182
  scrollHeight: 0,
183
183
  top: this.positionY || this.absoluteY,
184
184
  bottom: this.positionY || this.absoluteY,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/menuable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Positionable from '../positionable'\nimport Stackable from '../stackable'\nimport Activatable from '../activatable'\nimport Detachable from '../detachable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Stackable,\n Positionable,\n Activatable,\n Detachable,\n)\n\ninterface dimensions {\n top: number\n left: number\n bottom: number\n right: number\n width: number\n height: number\n offsetTop: number\n scrollHeight: number\n offsetLeft: number\n}\n\ninterface options extends ExtractVue<typeof baseMixins> {\n attach: boolean | string | Element\n offsetY: boolean\n offsetX: boolean\n dimensions: {\n activator: dimensions\n content: dimensions\n }\n $refs: {\n content: HTMLElement\n activator: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n name: 'menuable',\n\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0,\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0,\n },\n nudgeRight: {\n type: [Number, String],\n default: 0,\n },\n nudgeTop: {\n type: [Number, String],\n default: 0,\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0,\n },\n offsetOverflow: Boolean,\n openOnClick: Boolean,\n positionX: {\n type: Number,\n default: null,\n },\n positionY: {\n type: Number,\n default: null,\n },\n zIndex: {\n type: [Number, String],\n default: null,\n },\n },\n\n data: () => ({\n activatorNode: [] as VNode[],\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null as EventTarget | null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0,\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n },\n },\n relativeYOffset: 0,\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6,\n }),\n\n computed: {\n computedLeft () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0\n const minWidth = Math.max(a.width, c.width)\n let left = 0\n left += this.left ? activatorLeft - (minWidth - a.width) : activatorLeft\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth))\n ? a.width\n : Math.min(a.width, Number(this.maxWidth))\n\n left += this.left ? -maxWidth : a.width\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return left\n },\n computedTop () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n let top = 0\n\n if (this.top) top += a.height - c.height\n if (this.attach !== false) top += a.offsetTop\n else top += a.top + this.pageYOffset\n if (this.offsetY) top += this.top ? -a.height : a.height\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n\n return top\n },\n hasActivator (): boolean {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator\n },\n absoluteYOffset (): number {\n return this.pageYOffset - this.relativeYOffset\n },\n },\n\n watch: {\n disabled (val) {\n val && this.callDeactivate()\n },\n isActive (val) {\n if (this.disabled) return\n\n val ? this.callActivate() : this.callDeactivate()\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions',\n },\n\n beforeMount () {\n this.hasWindow = typeof window !== 'undefined'\n\n if (this.hasWindow) {\n window.addEventListener('resize', this.updateDimensions, false)\n }\n },\n\n beforeDestroy () {\n if (this.hasWindow) {\n window.removeEventListener('resize', this.updateDimensions, false)\n }\n },\n\n methods: {\n absolutePosition () {\n return {\n offsetTop: 0,\n offsetLeft: 0,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0,\n }\n },\n activate () {},\n calcLeft (menuWidth: number) {\n return convertToUnit(this.attach !== false\n ? this.computedLeft\n : this.calcXOverflow(this.computedLeft, menuWidth))\n },\n calcTop () {\n return convertToUnit(this.attach !== false\n ? this.computedTop\n : this.calcYOverflow(this.computedTop))\n },\n calcXOverflow (left: number, menuWidth: number) {\n const xOverflow = left + menuWidth - this.pageWidth + 12\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0)\n } else {\n left = Math.max(left, 12)\n }\n\n return left + this.getOffsetLeft()\n },\n calcYOverflow (top: number) {\n const documentHeight = this.getInnerHeight()\n const toTop = this.absoluteYOffset + documentHeight\n const activator = this.dimensions.activator\n const contentHeight = this.dimensions.content.height\n const totalHeight = top + contentHeight\n const isOverflowing = toTop < totalHeight\n\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing &&\n this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight\n ) {\n top = this.pageYOffset + (activator.top - contentHeight)\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12\n // If overflowing top\n } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n top = this.absoluteYOffset + 12\n }\n\n return top < 12 ? 12 : top\n },\n callActivate () {\n if (!this.hasWindow) return\n\n this.activate()\n },\n callDeactivate () {\n this.isContentActive = false\n\n this.deactivate()\n },\n checkForPageYOffset () {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop()\n }\n },\n checkActivatorFixed () {\n if (this.attach !== false) return\n let el = this.getActivator()\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true\n return\n }\n el = el.offsetParent as HTMLElement\n }\n this.activatorFixed = false\n },\n deactivate () {},\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n const onClick = listeners.click\n\n listeners.click = (e: MouseEvent & KeyboardEvent & FocusEvent) => {\n if (this.openOnClick) {\n onClick && onClick(e)\n }\n\n this.absoluteX = e.clientX\n this.absoluteY = e.clientY\n }\n\n return listeners\n },\n getInnerHeight () {\n if (!this.hasWindow) return 0\n\n return window.innerHeight ||\n document.documentElement.clientHeight\n },\n getOffsetLeft () {\n if (!this.hasWindow) return 0\n\n return window.pageXOffset ||\n document.documentElement.scrollLeft\n },\n getOffsetTop () {\n if (!this.hasWindow) return 0\n\n return window.pageYOffset ||\n document.documentElement.scrollTop\n },\n getRoundedBoundedClientRect (el: Element) {\n const rect = el.getBoundingClientRect()\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n }\n },\n measure (el: HTMLElement) {\n if (!el || !this.hasWindow) return null\n\n const rect = this.getRoundedBoundedClientRect(el)\n\n // Account for activator margin\n if (this.attach !== false) {\n const style = window.getComputedStyle(el)\n\n rect.left = parseInt(style.marginLeft!)\n rect.top = parseInt(style.marginTop!)\n }\n\n return rect\n },\n sneakPeek (cb: () => void) {\n requestAnimationFrame(() => {\n const el = this.$refs.content\n\n if (!el || el.style.display !== 'none') {\n cb()\n return\n }\n\n el.style.display = 'inline-block'\n cb()\n el.style.display = 'none'\n })\n },\n startTransition () {\n return new Promise<void>(resolve => requestAnimationFrame(() => {\n this.isContentActive = this.hasJustFocused = this.isActive\n resolve()\n }))\n },\n updateDimensions () {\n this.hasWindow = typeof window !== 'undefined'\n this.checkActivatorFixed()\n this.checkForPageYOffset()\n this.pageWidth = document.documentElement.clientWidth\n\n const dimensions: any = {\n activator: { ...this.dimensions.activator },\n content: { ...this.dimensions.content },\n }\n\n // Activator should already be shown\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition()\n } else {\n const activator = this.getActivator()\n if (!activator) return\n\n dimensions.activator = this.measure(activator)\n dimensions.activator.offsetLeft = activator.offsetLeft\n if (this.attach !== false) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop\n } else {\n dimensions.activator.offsetTop = 0\n }\n }\n\n // Display and hide to get dimensions\n this.sneakPeek(() => {\n if (this.$refs.content) {\n if (this.$refs.content.offsetParent) {\n const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent)\n\n this.relativeYOffset = window.pageYOffset + offsetRect.top\n dimensions.activator.top -= this.relativeYOffset\n dimensions.activator.left -= window.pageXOffset + offsetRect.left\n }\n\n dimensions.content = this.measure(this.$refs.content)\n }\n\n this.dimensions = dimensions\n })\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/menuable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Stackable from '../stackable'\nimport { factory as positionableFactory } from '../positionable'\nimport Activatable from '../activatable'\nimport Detachable from '../detachable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Stackable,\n positionableFactory(['top', 'right', 'bottom', 'left', 'absolute']),\n Activatable,\n Detachable,\n)\n\ninterface dimensions {\n top: number\n left: number\n bottom: number\n right: number\n width: number\n height: number\n offsetTop: number\n scrollHeight: number\n offsetLeft: number\n}\n\ninterface options extends ExtractVue<typeof baseMixins> {\n attach: boolean | string | Element\n offsetY: boolean\n offsetX: boolean\n dimensions: {\n activator: dimensions\n content: dimensions\n }\n $refs: {\n content: HTMLElement\n activator: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n name: 'menuable',\n\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0,\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0,\n },\n nudgeRight: {\n type: [Number, String],\n default: 0,\n },\n nudgeTop: {\n type: [Number, String],\n default: 0,\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0,\n },\n offsetOverflow: Boolean,\n openOnClick: Boolean,\n positionX: {\n type: Number,\n default: null,\n },\n positionY: {\n type: Number,\n default: null,\n },\n zIndex: {\n type: [Number, String],\n default: null,\n },\n },\n\n data: () => ({\n activatorNode: [] as VNode[],\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null as EventTarget | null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0,\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n },\n },\n relativeYOffset: 0,\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6,\n }),\n\n computed: {\n computedLeft () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0\n const minWidth = Math.max(a.width, c.width)\n let left = 0\n left += this.left ? activatorLeft - (minWidth - a.width) : activatorLeft\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth))\n ? a.width\n : Math.min(a.width, Number(this.maxWidth))\n\n left += this.left ? -maxWidth : a.width\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return left\n },\n computedTop () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n let top = 0\n\n if (this.top) top += a.height - c.height\n if (this.attach !== false) top += a.offsetTop\n else top += a.top + this.pageYOffset\n if (this.offsetY) top += this.top ? -a.height : a.height\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n\n return top\n },\n hasActivator (): boolean {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator\n },\n absoluteYOffset (): number {\n return this.pageYOffset - this.relativeYOffset\n },\n },\n\n watch: {\n disabled (val) {\n val && this.callDeactivate()\n },\n isActive (val) {\n if (this.disabled) return\n\n val ? this.callActivate() : this.callDeactivate()\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions',\n },\n\n beforeMount () {\n this.hasWindow = typeof window !== 'undefined'\n\n if (this.hasWindow) {\n window.addEventListener('resize', this.updateDimensions, false)\n }\n },\n\n beforeDestroy () {\n if (this.hasWindow) {\n window.removeEventListener('resize', this.updateDimensions, false)\n }\n },\n\n methods: {\n absolutePosition () {\n return {\n offsetTop: this.positionY || this.absoluteY,\n offsetLeft: this.positionX || this.absoluteX,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0,\n }\n },\n activate () {},\n calcLeft (menuWidth: number) {\n return convertToUnit(this.attach !== false\n ? this.computedLeft\n : this.calcXOverflow(this.computedLeft, menuWidth))\n },\n calcTop () {\n return convertToUnit(this.attach !== false\n ? this.computedTop\n : this.calcYOverflow(this.computedTop))\n },\n calcXOverflow (left: number, menuWidth: number) {\n const xOverflow = left + menuWidth - this.pageWidth + 12\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0)\n } else {\n left = Math.max(left, 12)\n }\n\n return left + this.getOffsetLeft()\n },\n calcYOverflow (top: number) {\n const documentHeight = this.getInnerHeight()\n const toTop = this.absoluteYOffset + documentHeight\n const activator = this.dimensions.activator\n const contentHeight = this.dimensions.content.height\n const totalHeight = top + contentHeight\n const isOverflowing = toTop < totalHeight\n\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing &&\n this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight\n ) {\n top = this.pageYOffset + (activator.top - contentHeight)\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12\n // If overflowing top\n } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n top = this.absoluteYOffset + 12\n }\n\n return top < 12 ? 12 : top\n },\n callActivate () {\n if (!this.hasWindow) return\n\n this.activate()\n },\n callDeactivate () {\n this.isContentActive = false\n\n this.deactivate()\n },\n checkForPageYOffset () {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop()\n }\n },\n checkActivatorFixed () {\n if (this.attach !== false) return\n let el = this.getActivator()\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true\n return\n }\n el = el.offsetParent as HTMLElement\n }\n this.activatorFixed = false\n },\n deactivate () {},\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n const onClick = listeners.click\n\n listeners.click = (e: MouseEvent & KeyboardEvent & FocusEvent) => {\n if (this.openOnClick) {\n onClick && onClick(e)\n }\n\n this.absoluteX = e.clientX\n this.absoluteY = e.clientY\n }\n\n return listeners\n },\n getInnerHeight () {\n if (!this.hasWindow) return 0\n\n return window.innerHeight ||\n document.documentElement.clientHeight\n },\n getOffsetLeft () {\n if (!this.hasWindow) return 0\n\n return window.pageXOffset ||\n document.documentElement.scrollLeft\n },\n getOffsetTop () {\n if (!this.hasWindow) return 0\n\n return window.pageYOffset ||\n document.documentElement.scrollTop\n },\n getRoundedBoundedClientRect (el: Element) {\n const rect = el.getBoundingClientRect()\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n }\n },\n measure (el: HTMLElement) {\n if (!el || !this.hasWindow) return null\n\n const rect = this.getRoundedBoundedClientRect(el)\n\n // Account for activator margin\n if (this.attach !== false) {\n const style = window.getComputedStyle(el)\n\n rect.left = parseInt(style.marginLeft!)\n rect.top = parseInt(style.marginTop!)\n }\n\n return rect\n },\n sneakPeek (cb: () => void) {\n requestAnimationFrame(() => {\n const el = this.$refs.content\n\n if (!el || el.style.display !== 'none') {\n cb()\n return\n }\n\n el.style.display = 'inline-block'\n cb()\n el.style.display = 'none'\n })\n },\n startTransition () {\n return new Promise<void>(resolve => requestAnimationFrame(() => {\n this.isContentActive = this.hasJustFocused = this.isActive\n resolve()\n }))\n },\n updateDimensions () {\n this.hasWindow = typeof window !== 'undefined'\n this.checkActivatorFixed()\n this.checkForPageYOffset()\n this.pageWidth = document.documentElement.clientWidth\n\n const dimensions: any = {\n activator: { ...this.dimensions.activator },\n content: { ...this.dimensions.content },\n }\n\n // Activator should already be shown\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition()\n } else {\n const activator = this.getActivator()\n if (!activator) return\n\n dimensions.activator = this.measure(activator)\n dimensions.activator.offsetLeft = activator.offsetLeft\n if (this.attach !== false) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop\n } else {\n dimensions.activator.offsetTop = 0\n }\n }\n\n // Display and hide to get dimensions\n this.sneakPeek(() => {\n if (this.$refs.content) {\n if (this.$refs.content.offsetParent) {\n const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent)\n\n this.relativeYOffset = window.pageYOffset + offsetRect.top\n dimensions.activator.top -= this.relativeYOffset\n dimensions.activator.left -= window.pageXOffset + offsetRect.left\n }\n\n dimensions.content = this.measure(this.$refs.content)\n }\n\n this.dimensions = dimensions\n })\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
@@ -121,19 +121,30 @@ var _default = _vue.default.extend().extend({
121
121
  hasScrollbar: function hasScrollbar(el) {
122
122
  if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
123
123
  var style = window.getComputedStyle(el);
124
- return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight;
124
+ return (['auto', 'scroll'].includes(style.overflowY) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight || ['auto', 'scroll'].includes(style.overflowX) && el.scrollWidth > el.clientWidth;
125
125
  },
126
- shouldScroll: function shouldScroll(el, delta) {
126
+ shouldScroll: function shouldScroll(el, e) {
127
127
  if (el.hasAttribute('data-app')) return false;
128
- var alreadyAtTop = el.scrollTop === 0;
129
- var alreadyAtBottom = el.scrollTop + el.clientHeight === el.scrollHeight;
128
+ var dir = e.shiftKey || e.deltaX ? 'x' : 'y';
129
+ var delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY;
130
+ var alreadyAtStart;
131
+ var alreadyAtEnd;
132
+
133
+ if (dir === 'y') {
134
+ alreadyAtStart = el.scrollTop === 0;
135
+ alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight;
136
+ } else {
137
+ alreadyAtStart = el.scrollLeft === 0;
138
+ alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth;
139
+ }
140
+
130
141
  var scrollingUp = delta < 0;
131
142
  var scrollingDown = delta > 0;
132
- if (!alreadyAtTop && scrollingUp) return true;
133
- if (!alreadyAtBottom && scrollingDown) return true;
143
+ if (!alreadyAtStart && scrollingUp) return true;
144
+ if (!alreadyAtEnd && scrollingDown) return true;
134
145
 
135
- if (alreadyAtTop || alreadyAtBottom) {
136
- return this.shouldScroll(el.parentNode, delta);
146
+ if (alreadyAtStart || alreadyAtEnd) {
147
+ return this.shouldScroll(el.parentNode, e);
137
148
  }
138
149
 
139
150
  return false;
@@ -148,8 +159,7 @@ var _default = _vue.default.extend().extend({
148
159
  }
149
160
  },
150
161
  checkPath: function checkPath(e) {
151
- var path = e.path || this.composedPath(e);
152
- var delta = e.deltaY;
162
+ var path = (0, _helpers.composedPath)(e);
153
163
 
154
164
  if (e.type === 'keydown' && path[0] === document.body) {
155
165
  var dialog = this.$refs.dialog; // getSelection returns null in firefox in some edge cases, can be ignored
@@ -157,7 +167,7 @@ var _default = _vue.default.extend().extend({
157
167
  var selected = window.getSelection().anchorNode;
158
168
 
159
169
  if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {
160
- return !this.shouldScroll(dialog, delta);
170
+ return !this.shouldScroll(dialog, e);
161
171
  }
162
172
 
163
173
  return true;
@@ -168,34 +178,11 @@ var _default = _vue.default.extend().extend({
168
178
  if (el === document) return true;
169
179
  if (el === document.documentElement) return true;
170
180
  if (el === this.$refs.content) return true;
171
- if (this.hasScrollbar(el)) return !this.shouldScroll(el, delta);
181
+ if (this.hasScrollbar(el)) return !this.shouldScroll(el, e);
172
182
  }
173
183
 
174
184
  return true;
175
185
  },
176
-
177
- /**
178
- * Polyfill for Event.prototype.composedPath
179
- */
180
- composedPath: function composedPath(e) {
181
- if (e.composedPath) return e.composedPath();
182
- var path = [];
183
- var el = e.target;
184
-
185
- while (el) {
186
- path.push(el);
187
-
188
- if (el.tagName === 'HTML') {
189
- path.push(document);
190
- path.push(window);
191
- return path;
192
- }
193
-
194
- el = el.parentElement;
195
- }
196
-
197
- return path;
198
- },
199
186
  hideScroll: function hideScroll() {
200
187
  if (this.$vuetify.breakpoint.smAndDown) {
201
188
  document.documentElement.classList.add('overflow-y-hidden');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/overlayable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend<Vue & Toggleable & Stackable & options>().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType<typeof VOverlay> | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent & KeyboardEvent) {\n if (e.type === 'keydown') {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY!) && el.scrollHeight > el.clientHeight\n },\n shouldScroll (el: Element, delta: number): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const alreadyAtTop = el.scrollTop === 0\n const alreadyAtBottom = el.scrollTop + el.clientHeight === el.scrollHeight\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtTop && scrollingUp) return true\n if (!alreadyAtBottom && scrollingDown) return true\n if ((alreadyAtTop || alreadyAtBottom)) {\n return this.shouldScroll(el.parentNode as Element, delta)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = e.path || this.composedPath(e)\n const delta = e.deltaY\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, delta)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, delta)\n }\n\n return true\n },\n /**\n * Polyfill for Event.prototype.composedPath\n */\n composedPath (e: WheelEvent): EventTarget[] {\n if (e.composedPath) return e.composedPath()\n\n const path = []\n let el = e.target as Element\n\n while (el) {\n path.push(el)\n\n if (el.tagName === 'HTML') {\n path.push(document)\n path.push(window)\n\n return path\n }\n\n el = el.parentElement!\n }\n return path\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener as EventHandlerNonNull, { passive: false })\n window.addEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener as EventHandlerNonNull)\n window.removeEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/overlayable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend<Vue & Toggleable & Stackable & options>().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType<typeof VOverlay> | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent & KeyboardEvent) {\n if (e.type === 'keydown') {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener as EventHandlerNonNull, { passive: false })\n window.addEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener as EventHandlerNonNull)\n window.removeEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
@@ -79,6 +79,9 @@ var _default = _vue.default.extend({
79
79
  watch: {
80
80
  $route: 'onRouteChange'
81
81
  },
82
+ mounted: function mounted() {
83
+ this.onRouteChange();
84
+ },
82
85
  methods: {
83
86
  click: function click(e) {
84
87
  this.$emit('click', e);
@@ -144,15 +147,18 @@ var _default = _vue.default.extend({
144
147
 
145
148
  if (!this.to || !this.$refs.link || !this.$route) return;
146
149
  var activeClass = "".concat(this.activeClass, " ").concat(this.proxyClass || '').trim();
147
- var path = "_vnode.data.class.".concat(activeClass);
150
+ var exactActiveClass = "".concat(this.exactActiveClass, " ").concat(this.proxyClass || '').trim() || activeClass;
151
+ var path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass);
148
152
  this.$nextTick(function () {
149
153
  /* istanbul ignore else */
150
- if ((0, _helpers.getObjectValueByPath)(_this.$refs.link, path)) {
154
+ if (!(0, _helpers.getObjectValueByPath)(_this.$refs.link, path) === _this.isActive) {
151
155
  _this.toggle();
152
156
  }
153
157
  });
154
158
  },
155
- toggle: function toggle() {}
159
+ toggle: function toggle() {
160
+ this.isActive = !this.isActive;
161
+ }
156
162
  }
157
163
  });
158
164
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/routable/index.ts"],"names":[],"mappings":"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","sourcesContent":["import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType<boolean | undefined>,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record<string, boolean> = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n },\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n click: this.click,\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass} ${this.proxyClass || ''}`.trim()\n\n const path = `_vnode.data.class.${activeClass}`\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (getObjectValueByPath(this.$refs.link, path)) {\n this.toggle()\n }\n })\n },\n toggle: () => { /* noop */ },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/routable/index.ts"],"names":[],"mappings":"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","sourcesContent":["import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType<boolean | undefined>,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record<string, boolean> = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n mounted () {\n this.onRouteChange()\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n },\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n click: this.click,\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass} ${this.proxyClass || ''}`.trim()\n const exactActiveClass = `${this.exactActiveClass} ${this.proxyClass || ''}`.trim() || activeClass\n\n const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass)\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (!getObjectValueByPath(this.$refs.link, path) === this.isActive) {\n this.toggle()\n }\n })\n },\n toggle () {\n this.isActive = !this.isActive\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
@@ -90,8 +90,10 @@ function goTo(_target) {
90
90
  var progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1);
91
91
  container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress));
92
92
  var clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight;
93
+ var reachBottom = clientHeight + container.scrollTop >= container.scrollHeight;
93
94
 
94
- if (progress === 1 || clientHeight + container.scrollTop === container.scrollHeight) {
95
+ if (progress === 1 || // Need to go lower but reach bottom
96
+ targetLocation > container.scrollTop && reachBottom) {
95
97
  return resolve(targetLocation);
96
98
  }
97
99
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/services/goto/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as easingPatterns from './easing-patterns'\nimport {\n getContainer,\n getOffset,\n} from './util'\n\n// Types\nimport { GoToOptions, VuetifyGoToTarget } from 'vuetify/types/services/goto'\n\nimport { VuetifyServiceContract } from 'vuetify/types/services'\n\nexport default function goTo (\n _target: VuetifyGoToTarget,\n _settings: GoToOptions = {}\n): Promise<number> {\n const settings: GoToOptions = {\n container: (document.scrollingElement as HTMLElement | null) || document.body || document.documentElement,\n duration: 500,\n offset: 0,\n easing: 'easeInOutCubic',\n appOffset: true,\n ..._settings,\n }\n const container = getContainer(settings.container)\n\n /* istanbul ignore else */\n if (settings.appOffset && goTo.framework.application) {\n const isDrawer = container.classList.contains('v-navigation-drawer')\n const isClipped = container.classList.contains('v-navigation-drawer--clipped')\n const { bar, top } = goTo.framework.application as any\n\n settings.offset += bar\n /* istanbul ignore else */\n if (!isDrawer || isClipped) settings.offset += top\n }\n\n const startTime = performance.now()\n\n let targetLocation: number\n if (typeof _target === 'number') {\n targetLocation = getOffset(_target) - settings.offset!\n } else {\n targetLocation = getOffset(_target) - getOffset(container) - settings.offset!\n }\n\n const startLocation = container.scrollTop\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const ease = typeof settings.easing === 'function'\n ? settings.easing\n : easingPatterns[settings.easing!]\n /* istanbul ignore else */\n if (!ease) throw new TypeError(`Easing function \"${settings.easing}\" not found.`)\n\n // Cannot be tested properly in jsdom\n /* istanbul ignore next */\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1)\n\n container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress))\n\n const clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight\n if (progress === 1 || clientHeight + container.scrollTop === container.scrollHeight) {\n return resolve(targetLocation)\n }\n\n requestAnimationFrame(step)\n }))\n}\n\ngoTo.framework = {} as Record<string, VuetifyServiceContract>\ngoTo.init = () => {}\n\nexport class Goto extends Service {\n public static property: 'goTo' = 'goTo'\n\n constructor () {\n super()\n\n return goTo\n }\n}\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/services/goto/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as easingPatterns from './easing-patterns'\nimport {\n getContainer,\n getOffset,\n} from './util'\n\n// Types\nimport { GoToOptions, VuetifyGoToTarget } from 'vuetify/types/services/goto'\n\nimport { VuetifyServiceContract } from 'vuetify/types/services'\n\nexport default function goTo (\n _target: VuetifyGoToTarget,\n _settings: GoToOptions = {}\n): Promise<number> {\n const settings: GoToOptions = {\n container: (document.scrollingElement as HTMLElement | null) || document.body || document.documentElement,\n duration: 500,\n offset: 0,\n easing: 'easeInOutCubic',\n appOffset: true,\n ..._settings,\n }\n const container = getContainer(settings.container)\n\n /* istanbul ignore else */\n if (settings.appOffset && goTo.framework.application) {\n const isDrawer = container.classList.contains('v-navigation-drawer')\n const isClipped = container.classList.contains('v-navigation-drawer--clipped')\n const { bar, top } = goTo.framework.application as any\n\n settings.offset += bar\n /* istanbul ignore else */\n if (!isDrawer || isClipped) settings.offset += top\n }\n\n const startTime = performance.now()\n\n let targetLocation: number\n if (typeof _target === 'number') {\n targetLocation = getOffset(_target) - settings.offset!\n } else {\n targetLocation = getOffset(_target) - getOffset(container) - settings.offset!\n }\n\n const startLocation = container.scrollTop\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const ease = typeof settings.easing === 'function'\n ? settings.easing\n : easingPatterns[settings.easing!]\n /* istanbul ignore else */\n if (!ease) throw new TypeError(`Easing function \"${settings.easing}\" not found.`)\n\n // Cannot be tested properly in jsdom\n /* istanbul ignore next */\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1)\n\n container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress))\n\n const clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight\n const reachBottom = clientHeight + container.scrollTop >= container.scrollHeight\n if (\n progress === 1 ||\n // Need to go lower but reach bottom\n (targetLocation > container.scrollTop && reachBottom)\n ) {\n return resolve(targetLocation)\n }\n\n requestAnimationFrame(step)\n }))\n}\n\ngoTo.framework = {} as Record<string, VuetifyServiceContract>\ngoTo.init = () => {}\n\nexport class Goto extends Service {\n public static property: 'goTo' = 'goTo'\n\n constructor () {\n super()\n\n return goTo\n }\n}\n"],"sourceRoot":"","file":"index.js"}
@@ -39,6 +39,7 @@ exports.humanReadableFileSize = humanReadableFileSize;
39
39
  exports.camelizeObjectKeys = camelizeObjectKeys;
40
40
  exports.mergeDeep = mergeDeep;
41
41
  exports.fillArray = fillArray;
42
+ exports.composedPath = composedPath;
42
43
  exports.camelize = exports.keyCodes = exports.passiveSupported = void 0;
43
44
 
44
45
  var _vue = _interopRequireDefault(require("vue"));
@@ -571,4 +572,26 @@ function mergeDeep() {
571
572
  function fillArray(length, obj) {
572
573
  return Array(length).fill(obj);
573
574
  }
575
+ /** Polyfill for Event.prototype.composedPath */
576
+
577
+
578
+ function composedPath(e) {
579
+ if (e.composedPath) return e.composedPath();
580
+ var path = [];
581
+ var el = e.target;
582
+
583
+ while (el) {
584
+ path.push(el);
585
+
586
+ if (el.tagName === 'HTML') {
587
+ path.push(document);
588
+ path.push(window);
589
+ return path;
590
+ }
591
+
592
+ el = el.parentElement;
593
+ }
594
+
595
+ return path;
596
+ }
574
597
  //# sourceMappingURL=helpers.js.map