New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug Report] High CPU usage in Safari on docs page + in webpack/simple bolerplate #2773

Closed
outluch opened this Issue Dec 11, 2017 · 15 comments

Comments

Projects
None yet
3 participants
@outluch

outluch commented Dec 11, 2017

Versions and Environment

Vuetify: 0.17.4
Vue: 2.5.9
Browsers: Safari 11.0.2
OS: Mac OS 10.13.2

Steps to reproduce

Open docs OR sample project https://github.com/vuetifyjs/webpack) in safari and open Activity monitor. Observe 99% CPU on that tab

Expected Behavior

Not so high CPU usage without activity in tab

Actual Behavior

CPU = 99%

Reproduction Link

https://github.com/vuetifyjs/webpack

@johnleider

This comment has been minimized.

Show comment
Hide comment
@johnleider

johnleider Dec 11, 2017

Member

What are your Mac's specs?

Member

johnleider commented Dec 11, 2017

What are your Mac's specs?

@outluch

This comment has been minimized.

Show comment
Hide comment
@outluch

outluch Dec 11, 2017

i7 2.2 GHz. It is pro 15 2014.
I honestly think it is some kind of loop. But I couldnot check that with safari dev tools. No profiler there 👎

outluch commented Dec 11, 2017

i7 2.2 GHz. It is pro 15 2014.
I honestly think it is some kind of loop. But I couldnot check that with safari dev tools. No profiler there 👎

@outluch

This comment has been minimized.

Show comment
Hide comment
@outluch

outluch Dec 11, 2017

Hmm. Now I dont observe problem with webpack template. But in Docs I do.

outluch commented Dec 11, 2017

Hmm. Now I dont observe problem with webpack template. But in Docs I do.

@johnleider

This comment has been minimized.

Show comment
Hide comment
@johnleider

johnleider Dec 12, 2017

Member

All of docs? Specific page? Please provide information as if you were trying to debug this.

Member

johnleider commented Dec 12, 2017

All of docs? Specific page? Please provide information as if you were trying to debug this.

@outluch

This comment has been minimized.

Show comment
Hide comment
@outluch

outluch Dec 12, 2017

Ok. I've found way to profile page.
Look: http://take.ms/5uZrW
Honestly, dont know what to look at next..

outluch commented Dec 12, 2017

Ok. I've found way to profile page.
Look: http://take.ms/5uZrW
Honestly, dont know what to look at next..

@ajsutton

This comment has been minimized.

Show comment
Hide comment
@ajsutton

ajsutton Jan 5, 2018

Contributor

For the record, I can reproduce this as well with the same constant cycle of safari invalidating the layout and the recomputing it. It appears to happen with 1.0-beta1 and 2 and to a lesser extent the latest stable version (can reproduce at https://vuetifyjs.com/vuetify/quick-start). With 0.17 it's not in quite so tight a loop and so uses about 50% of CPU instead of 100%.

Seems to be related to v-navigation-drawer. Just:

  <v-app>
    <v-navigation-drawer app></v-navigation-drawer>
  </v-app>

is enough to trigger it, but <v-app> by itself is not. It also doesn't happen if you omit the app param from v-navigation-drawer.

Contributor

ajsutton commented Jan 5, 2018

For the record, I can reproduce this as well with the same constant cycle of safari invalidating the layout and the recomputing it. It appears to happen with 1.0-beta1 and 2 and to a lesser extent the latest stable version (can reproduce at https://vuetifyjs.com/vuetify/quick-start). With 0.17 it's not in quite so tight a loop and so uses about 50% of CPU instead of 100%.

Seems to be related to v-navigation-drawer. Just:

  <v-app>
    <v-navigation-drawer app></v-navigation-drawer>
  </v-app>

is enough to trigger it, but <v-app> by itself is not. It also doesn't happen if you omit the app param from v-navigation-drawer.

@ajsutton

This comment has been minimized.

Show comment
Hide comment
@ajsutton

ajsutton Jan 5, 2018

Contributor

Problem disappears if in the web inspector you disable the inline style rule:
max-height: calc(100% - 0px);

Unfortunately it also occurs with clipped navigation drawers which have max-height: calc(100% - 64px) which makes avoiding the calc much more difficult. This is a safari bug but it renders vuetify pretty unusable on Safari, especially with a laptop as the fans quickly spin up and battery drains very quickly.

Contributor

ajsutton commented Jan 5, 2018

Problem disappears if in the web inspector you disable the inline style rule:
max-height: calc(100% - 0px);

Unfortunately it also occurs with clipped navigation drawers which have max-height: calc(100% - 64px) which makes avoiding the calc much more difficult. This is a safari bug but it renders vuetify pretty unusable on Safari, especially with a laptop as the fans quickly spin up and battery drains very quickly.

@outluch

This comment has been minimized.

Show comment
Hide comment
@outluch

outluch Jan 5, 2018

Thanks for your investigation. I think it is huge problem. Safari is not IE6. It is mainstream browser.

outluch commented Jan 5, 2018

Thanks for your investigation. I think it is huge problem. Safari is not IE6. It is mainstream browser.

@ajsutton

This comment has been minimized.

Show comment
Hide comment
@ajsutton

ajsutton Jan 5, 2018

Contributor

It's not as simple as just having max-height with a calc though. I'm currently trying to build a reduction to identify the exact combination of styles that trigger the issue. Even though JavaScript execution isn't turning up in the profiler, without the vue/vuetify js in place the problem doesn't occur so it's some combination of styles and javascript.

Contributor

ajsutton commented Jan 5, 2018

It's not as simple as just having max-height with a calc though. I'm currently trying to build a reduction to identify the exact combination of styles that trigger the issue. Even though JavaScript execution isn't turning up in the profiler, without the vue/vuetify js in place the problem doesn't occur so it's some combination of styles and javascript.

@outluch

This comment has been minimized.

Show comment
Hide comment
@outluch

outluch Jan 5, 2018

Hey!
After looking at this


I ran vuetify docs in safari resonsive mode and no bug :)
What could this mean...

outluch commented Jan 5, 2018

Hey!
After looking at this


I ran vuetify docs in safari resonsive mode and no bug :)
What could this mean...

@ajsutton

This comment has been minimized.

Show comment
Hide comment
@ajsutton

ajsutton Jan 5, 2018

Contributor

So far I've managed to narrow this down to requiring:
The inline style:
max-height: calc(100% - 0px);

The css rule (which must have the data-booted conditional, just matching .navigation-drawer doesn't trigger the bug):
.navigation-drawer[data-booted="true"] {
transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

and something as yet unknown in the JavaScript including using a-la-carte with just VApp and VNavigationDrawer components.

Contributor

ajsutton commented Jan 5, 2018

So far I've managed to narrow this down to requiring:
The inline style:
max-height: calc(100% - 0px);

The css rule (which must have the data-booted conditional, just matching .navigation-drawer doesn't trigger the bug):
.navigation-drawer[data-booted="true"] {
transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

and something as yet unknown in the JavaScript including using a-la-carte with just VApp and VNavigationDrawer components.

@ajsutton

This comment has been minimized.

Show comment
Hide comment
@ajsutton

ajsutton Jan 5, 2018

Contributor

Bisecting on the dev branch, the first revision this problem occurs on is 6c612c5

It adds font awesome to dev/index.html - the problem occurs when it's there but doesn't when it's not. In other setups I can reproduce the problem without font awesome though. So possibly a timing issue?

Contributor

ajsutton commented Jan 5, 2018

Bisecting on the dev branch, the first revision this problem occurs on is 6c612c5

It adds font awesome to dev/index.html - the problem occurs when it's there but doesn't when it's not. In other setups I can reproduce the problem without font awesome though. So possibly a timing issue?

@ajsutton

This comment has been minimized.

Show comment
Hide comment
@ajsutton

ajsutton Jan 6, 2018

Contributor

Bisecting on the dev branch but ensuring we remove font awesome from dev/index.html each time points to d634351 which is more believable since it ties into how the data-booted="true" attribute is added and we know that's a key component of the issue.

Contributor

ajsutton commented Jan 6, 2018

Bisecting on the dev branch but ensuring we remove font awesome from dev/index.html each time points to d634351 which is more believable since it ties into how the data-booted="true" attribute is added and we know that's a key component of the issue.

@ajsutton

This comment has been minimized.

Show comment
Hide comment
@ajsutton

ajsutton Jan 7, 2018

Contributor

I still haven't been able to pin down the exact cause of this but have found a simple work around anyone struggling with this can apply in the meantime. Add the css below to your app:
.navigation-drawer {
transition-property: transform,width,box-shadow !important;
}

It's fairly likely there needs to be some extra properties added to that list to cover all the possible ways that navigation drawer can animate (hence this hasn't been committed to codebase) but it's enough to cover at least the basic cases. The key property not to add is max-height, doing so will trigger the high CPU usage again.

Contributor

ajsutton commented Jan 7, 2018

I still haven't been able to pin down the exact cause of this but have found a simple work around anyone struggling with this can apply in the meantime. Add the css below to your app:
.navigation-drawer {
transition-property: transform,width,box-shadow !important;
}

It's fairly likely there needs to be some extra properties added to that list to cover all the possible ways that navigation drawer can animate (hence this hasn't been committed to codebase) but it's enough to cover at least the basic cases. The key property not to add is max-height, doing so will trigger the high CPU usage again.

ajsutton added a commit to ajsutton/vuetify that referenced this issue Jan 8, 2018

fix: Avoid high CPU usage in Safari
A v-navigation-drawer with the app param causes Safari to repeatedly
invalidate and recalculate the layout, permanently consuming a CPU
core.

This is a bug in Safari (fixed in current tech preview) which is
triggered by the combination of using calc in the max-height,
transition-property including max-height and the element being created
using document.createElement (as vue does).

fixes vuetifyjs#2773
@ajsutton

This comment has been minimized.

Show comment
Hide comment
@ajsutton

ajsutton Jan 8, 2018

Contributor

Confirmed this is caused by a Safari bug. Minimal replication is available at https://www.symphonious.net/bugs/vuetify2773/

It has already been fixed in the current Safari Technology Preview so should be fixed in the next Safari release. However, it's an annoying enough problem that I'd recommend putting the work around in to vuetify for at least the 1.0 release. I'll submit a pull request to do that shortly.

Contributor

ajsutton commented Jan 8, 2018

Confirmed this is caused by a Safari bug. Minimal replication is available at https://www.symphonious.net/bugs/vuetify2773/

It has already been fixed in the current Safari Technology Preview so should be fixed in the next Safari release. However, it's an annoying enough problem that I'd recommend putting the work around in to vuetify for at least the 1.0 release. I'll submit a pull request to do that shortly.

@ajsutton ajsutton referenced this issue Jan 8, 2018

Merged

fix: Avoid high CPU usage in Safari #2958

4 of 8 tasks complete

johnleider added a commit that referenced this issue Jan 10, 2018

fix: Avoid high CPU usage in Safari (#2958)
* fix: Avoid high CPU usage in Safari

A v-navigation-drawer with the app param causes Safari to repeatedly
invalidate and recalculate the layout, permanently consuming a CPU
core.

This is a bug in Safari (fixed in current tech preview) which is
triggered by the combination of using calc in the max-height,
transition-property including max-height and the element being created
using document.createElement (as vue does).

fixes #2773

* style: Add comment explaining need for work around

#2958

johnleider added a commit that referenced this issue Feb 13, 2018

v1.0 (#3263)
* test(v-select): fixed v-select comparator test

* revert(layout): partial revert of app logic

the **fixed** prop can now be overwritten if **absolute** is used

* fix(v-list-tile-action): fixed alignment of selection-controls

fixes #2684

* fixed v-select test

* fix(detachable): fixed pug bug

when pug declares a boolean prop that is not bound, it is inferred to be **prop="prop"**

* fix(toolbar): fixed scroll threshold

* fix(v-list): remove ability to select icons in list tiles

* fix: fixed bug where drawer would close on any touch event

* fix(v-toolbar): allow dynamic changing of **scroll-off-screen**

* feat(routable): allow object for **ripple** prop

* [release] 1.0.0-alpha.2

* Update BACKERS.md

* enh: add possibility to define previous/next date icons in pickers (#2709)

* enh: add possibility to define previous/next date icons in pickers

fixes #2123

* changed prop names

* fix(Vicon): merge custom inline styles

Fixes #2764

* chore: convert release script to js, add PR template

* chore: add repository link to package.json

* chore: tidy up release script

* fix(v-progress-linear): fixed active/inactive animation

* fix(v-alert): close icon now inherits color

when using the **outline** prop, the dismiss icon was not being properly styled

fixes #2762

* fix(menuable): removed margin, added functionality to parse margin

fixes #2760

* fix(v-jumbotron): added width 100% to image

when `v-carousel-item` was updated to use the new `v-jumbotron` component, it was not taken into
account that the previous functionality used a background image that covered

fixes #2751

* fix(v-list): fixed spacing in mini drawer

when using a `v-list` inside of a `v-navigation-drawer` with the **mini-variant** prop, the
`v-list-group`'s icon was not being properly aligned

fixes #2746

* fix(maskable): will now mask a value on mount

if a value is provided and the **return-masked-value** prop is used, should emit the masked value if
it differs from the provided one

fixes #2722

* fix(v-list): fixed list display issue caused by a45089a

* fix(selection-controls): removed pointer events when disabled

fixes #2670

* ci(travis): fixed build process error

yarn 1.0 does not add itself to PATH, switching to npm global install for codecov

* fix: application not updating top on screen resize (#2782)

fixes #2781

* [release] 1.0.0-alpha.3

* refactor(helper classes): added missing !important declaration to helper classes

* fix(v-toolbar): fixed a bug where scrolling to top would bring back a manual-scrolled toolbar

* refactor(layout): changed how ssr bootable works (#2799)

* refactor(layout): changed how ssr bootable works

moved all logic to mixin, apply dataset value for boot status, hide until booted to avoid entry
animation or pre-emptive popin

* Use existing theme stylesheet if it exists

* reverted back to transition based booting, changed beforeMount to created in

* fixed lint

* added back ssr timeout, updated snapshots

* Pagination separation (#2790)

* Move v-data-table pagination outside of overflow so it's always visible

* Border fixes

* Make pagination controls wrap nicely on mobile

* fix(text-field): fixed bad styles causing issues

text-field was setting a different transition time for its prepend-icon, also fixed a 1px offset of
placeholder and input text

* feat(select/text-field): added new functionality, **solo-inverted**

produces a lower opacity background and inverts color on focus, similar to Google Keep/Contacts

* fix(v-select): fixed event call on empty value when blurring

* chore: bumped dependencies

* fix(v-bottom-nav): fixed `v-btn` not being highlighted

wrong method was being called in the **active** watcher causing an error. set default **height**
value to 56 to match spec, fixed styling issue on IE11 when positioning and hover issue on all
browsers

fixes #2801

* fix(tests): all tests were failing after latest dependency bump (#2817)

seems like using tilde as an alias prefix is broken. switched it out to @ instead

* test(v-form): increased coverage

* test(v-icon): increased coverage

* fix(directives): fixed a memory leak

the created object to hold the callback information was not being removed during unbind

fixes #2779

* refactor(resize/scroll): updated directive interface

can now declare `v-resize:1000="callback"` or `v-resize:200.quiet="callback"` for resize. can now
declare `v-scroll="{ value: callback, options: { passive: false }}`

* fix(text-field/select): set **input** to 100% width

on small devices, there are situations where the input would force an overflow because inputs have
some unchangable default width

* support font awesome 5 icons

* test: increased test coverage for mask/maskable/VTextField (#2851)

* fix(date-picker): incorrect button styles

active and current dates (and months) in date-picker had incorrect styles

fixes #2812

* fix(date-picker): allow external switching between date and month view

switching between date and month view using type prop was not working

closes #2809

* improve code (#2842)

* Applies a dark tint to the content. get primary text color theme dark (#2854)

* fix(v-toolbar): corrected directive arguments

* No style size on VIcon by default (#2846)

* tests for no style size by default

* fix(VIcon): Don't set default size in style attribute

fixes #2845

* Refactor, per johnleider's comments on the pull request

* Use spread operator in case data.style is not defined

* Remove semicolon

* Update test verbiage

* fix(v-chip): updated for spec

icon was improperly sized and not working properly in different themes"

* fix(v-pagination): removed overflow-x hide

overflow was added a long time ago but is no longer needed

* Update PULL_REQUEST_TEMPLATE.md

* Update BACKERS.md

* fix(v-select): fixed menu positioning when filtering

when filtering items, dimensions were updated by the pageYOffset was not, this caused repositioning
issues when the `v-select` menu was scrolled into overflow and then filtered

* chore: fixed postcss warnings on build

* chore: added name to mixins

* chore: fixed postcss warnings on dev as well

* fix: added Colorable mixin to VAvatar

this was done so that vuetify-helper-json will know that VAvatar
uses Colorable even though it's a functional component

* fix: removed unnecessary prop

`color` prop is defined in COlorable mixin

* fix(v-stepper-content): height not being set to auto

`v-stepper-content` should change its height to 'auto' after it is expanded. this was not happening
for the intial render

fixes #2870

* introduce new variable -text-transform and use it in tab (#2858)

* chore: enable performance reporting for development

* fix(VNavigationDrawer): only close on route change when mobile/temporary

fixes #2894

* fix: add missing boolean operator

*  refactor(v-tabs): refactored `v-tabs` functionality (#2838)

* refactor(v-tabs): refactored `v-tabs` functionality

* tweaks for various breakpoints and usages, removed need for registering tabs-bar, fixed test

* fixed overflow issues with dynamic tabs

v-tabs-slider will now re-evaluate when the tab items change, moved evaluation in tabClick to items as they will always be present

* updated logic on mount for v-tabs

* cleaned up swipe method

* improved test coverage

* tweaks to resolve #2756

* refactor(v-tabs): simplified logic, added tests

adjusted the logic to make `v-tabs` only care about the active index. this allows us to update the
model when using `router-link` and drastically simplifies reasoning about the code. added more tests

* added tabs-bar test

* fix for #1900

* enhancement for #1516

* added back tabs prop, sets extension height to match default tabs height

* added conditional to prevent default

* started abstracting funtionality

* refactored the refactor

* started test rewrite due to refactor (again)

* added more tests

* added more tests

* finished unit tests for tabs mixins

* style tweaks, removed margin from css selectors, switched to padding on container

* added tabs-items generation if none present and has v-tab-item's, added tests

* finished coverage for

* expanded coverage on

* updated tests

* fix(perf): directly set scroll offset instead of through the render fn

This prevents the component from having to re-render on every touch
event

 - also set will-change on touch start

* fix: missing position relative on .tabs__container

* Only apply theme to the tabs container

* fix: removed duplicated styles

* feat: right aligned tabs

* fix: callSlider on fixedTabs/centered/right props change

* fix: look for active tab in current component instead of all document

* fix: use activeClass instead of 'tabs__item--active'

* fix: use px width instead of % for slider

* fix: ignore pointer events for disabled prepend/append icon

* fix: call slider on mount

* Add another wrapper element for arrow backgrounds

 - Breaks scrolling and arrow states -_-

* fix: use bar for overflow calculation

* fix: use bar width to determine append icon visibility

* fix: callSlider on alignWithTitle change

* fix: proper scroll offset when scrolling tabs to the left

* fix: proper scroll offset when scrolling tabs to the left (2)

* rounded out tests, added arrows display on desktop if overflowing

* improved rendering performance

* refactor: css tweaks

flattens css structure
globally unsets pointer events for disabled icons

* lint

* Use contain instead of will-change

* Move transform back into the watcher

* fix: moved container styles from js to .styl

* fix: missing position:relative for tabs bar

* fix: arrows didn't work properly after resizing window

* fix(perf): move /(ap|pre)pendIconVisible/ from computed to a watcher

* fixed **align-with-title** prop

* move selected item into view

* fixed a bug where  could not be an object

* fix: allow omitting href/to/id props

* fixed tests

* fix(v-tabs): enforce model as string

* fix(v-tabs-items): fixed model sharing

* fix(VTabs): use new value as an index if tab action isn't found

* fix(v-tabs): fixed-tabs needed the container to grow

**fixed-tabs** should be centered on desktop, but the container was not growing

* fix(v-tabs): added flex-grow to centered tabs

* feat(v-tabs/v-tabs-items): allow **value** to accept Number's

* fix: do not apply ripple on disabled routable (#2899)

* [release] 1.0.0-beta.1

* fix: fixed right aligned tabs

* fix: flex-grow for tabs_container

* fix: move stylus with side-effects from tools to generic

tools are imported in every component file, causing duplicated css

* fix: remove old tooltip import from app.styl

doesn't need to imported if we aren't using tooltips

* fix(v-jumbotron): fixed improperly styled images

change introduced in 77dbf9f to fix #2751 didn't take into account
that images might overflow, and that's okay. changing to **min-width**

* chore: update lockfiles

This was omitted in 130bcb3

* fix: ripple prop as an object is passed as a bool to ripple directive

broken by ec9fcae

* fix(v-tabs): fixed error when using routes and tabs

Due to how `router-links` treat the **to** prop as an object, the component will be re-rendered with
the resolved route path from the designated name. this causes weird issues with our current setup,
the easiest solution was to add a conditional (that should of probably been there anyways)

fixes #2921

* fix(v-lists): fixed improper hover style

corrected the value of a hovered list link

fixes #2914

* fix(routable): added default to **exact** prop

in prior versions of vue, Boolean declared properties had a default value of undefined. This
changed, so the logic needs to as well. the only reason the tests did not break is because it was
defining undefined, which was overriding the new default value used by vue, _false_.

fixes #2485

* fix(v-toolbar): toolbar was applying incorrect application top

manual-scroll overrides everything, should update application top to 0

* chore: Remove HTML comments from jest snapshots

* fix(ssr): use requestAnimationFrame for bootable instead of setTimeout

 - also swapped .content and .content--wrap to prevent the animation

* fix(display-helpers): added !important to property declaration

all helper classes are considered **trumps** in terms of ITCSS, which means they should always
overwrite

* enh: unified console messages (#2920)

* enh: console warn when data-iterator item missed the key attr

* enh: unified console warn/error messages

* typo

* missing file

* tests

* refactor: removes  unused pointerSupport util (#2917)

* refactor: removes  unused pointerSupport util

* removed from type definition

* fix(v-speed-dial): renamed hover prop to open-on-hover (#2903)

* fix(v-speed-dial): renamed hover prop to open-on-hover

done to match similar prop in v-menu

* test: forgot to push test change

* fix(menu): clean up from the multiple renames in #2716

The absolute prop already existed, and some of its functionality was
inadvertently broken

fixes #1989

* fix(v-select): removed top and bottom padding for **chips** prop

padding caused input size to jump once a selection was made. this is an unintended side effect and
will now better match what is visible within the spec

* [release] 1.0.0-beta.2

* fix(v-tab): moved text specific styling to parent

the wrapping _.tab__item_ wrapper was inheriting applied classes, making it difficult to change text
styling

fixes #2909

* fix(v-icon): fixed render statement length for lint

refactored render logic to reduce the number of statements. decided to also reorganize method so
that it is a bit more clear what is going on. re-ordered classes in a more logic fashion, `fa icon
fa-lock` becomes `icon fa fa-lock` for example.

* fix(v-progress-circular): removed unused prop fill

* refactor(data-iterable): improved filter default fn

* refactor: replace prop dupes with mixins (#2902)

* feat(v-badge): refactored to use existing mixins

* refactor: switched applicationable to use positionable mixin

* refactor: switched speed-dial to use transitionable mixin

* refactor: switched expansion-panel-content to use rippleable mixin

* refactor: optimized filterObjectOnKeys

* fixes #2791, VSelect input loses focus after chip is removed (#2944)

* Enh/foreach optimizations (#2738)

* refactor: v-for forEach optimization

* refactor: v-grid forEach optimization

* refactor: v-list forEach optimization

* refactor: select-generators forEach optimization

* refactor: ripple forEach optimization

* refactor: validatable forEach optimization

* refactor: v-carousel forEach optimization

* refactor: v-expansion-panel forEach optimizations

* refactor: data-iterable forEach optimization

* refactor: v-radio-group forEach optimizations

* refactor: Vuetify.install forEach optimizations

* refactor: click-outside forEach optimization

* refactor: breadcrumbs forEach optimization

* refactor: v-tabs forEach optimizations

* refactor: v-stepper forEach optimizations

* refactor: button-group forEach optimization

* refactor: touch forEach optimizations

* refactor: v-select push optimization

* refactor: reverse loops

* beating codebeat

* removed unnecessary code from button-group

* refactor: change for..of to faster alternatives

babel's for..of is extremaly slow

addition to #2738

* cleanup(v-btn): contextual props are not used any more

* test: increased VSwitch coverage

* fix: replaced throw with consoleError

* pickers refactoring (#2664)

* v-picker

* v-time-picker-clock

* v-time-picker-title

* v-date-picker-title

* v-date-picker-header

* v-date-picker-years

* v-date-picker-date-table, v-date-picker-month-table

* v-time-picker

* v-date-picker

* misc, cleanup

* test: touch usage in pickers

* added transition prop to v-picker

* fixes, codebeat improvements

* fixes, codebeat improvements

* fixes, codebeat improvements

* codebeat improvements

* fixed picker title background in dark mode

* code style update

* ampm computed prop

* even more refactoring (picker-button mixin)

* fixed test

* fix(date-picker): incorrect button styles

active and current dates (and months) in date-picker had incorrect styles

fixes #2812

(cherry picked from commit 2e9d6af)

* fix(date-picker): allow external switching between date and month view

switching between date and month view using type prop was not working

closes #2809

(cherry picked from commit d6935aa)

* fix: do not pad hours with 0 in am/pm mode

* fix: time picker clock size

* fix: time picker title colon size in landscape mode

* fix: time picker active & disabled button text color

* fix: do not emit input if hour/minute is not allowed

* fix: restored firstAllowed

* cleanup(v-icon): contextual props are not used any more

* refactor: switched snackbar to use positionable mixin

* feat(stylus colors): allow redefinition

fixes #2155

* enh(VNavigationDrawer): re-initialise value when set to null

* fix (v-time-picker): computing firstAllowed hour in am/pm mode

* v-select with combobox option uses search value when blurring (#2879)

* Rename findExistingItem to findExistingIndex

Said function doesn't return an item, but rather the index of that item
within the items array. The name findExistingIndex reflects better what
the function actually does.

* fix: v-select with combobox option uses searchValue when blurring

When using v-select with the combobox option and items as objects (not
just primitives), and you select an option and then blur the field,
the itemValue becomes the text value of the selected item object.

fixes #2878

* Split comment into two lines

* Store the result of this.getValue(val) in a variable

This prevents it from beiing re-evaluated for every find iteration.

* Add darken/lighten variations to theme colors (#2872)

* feat(theme): add darken/lighten variations to theme colors + auto text

* Remove automatic text color

It was too ambitious for the timeframe, can revisit at some future time

* Allow the user to minify or cache the theme stylesheet

* Update VApp snapshots

* refactor: use consoleWarn instead of throwing a rangeError

* style: remove semicolon

* enh: allow any type of element in v-tabs

* feat(v-date-picker): improved animations

fixed text alignment to match spec in title, changed animation for changing date and date/month/year
view. removed shadow for active month

* enh(v-date-picker): **showCurrent** prop to hide current date selection

* feature: date picker events (#2946)

fixes #2672

* fix(v-date-picker): fixed prop definition

issue with merge, fixing missing `current` definition on `v-date-picker-date-table` generation

* feat(VSelect): allow the use of custom list tiles in items slot (#2710)

* Added support of custom v-list-tile as select item

* Added support of custom v-list-tile as select item

* Fix: needTile -> needsTile

* Update: change .test() to comparison operator

* Test: add 3 test cases

* Fix VSelect test snapshot

* test: update snapshots

* enhancement: changes the way of passing color to colorable mixin (#2953)

Currently the colorable mixin takes the name of the prop/computed
to get the color. This is not enough if the color is more dynamic,
for example planned events in date picker could potentially use
different colors for different event

* enh (v-date-picker): setting different color for each event

* chore: updated PR template

* fix(v-date-picker): adjusted styles and markup (#2966)

* fix(v-date-picker): adjusted styles and markup

removed unused class string from button generation. adjusted content tag to match what is output by
`v-btn` normally. added conditional for class generation type, **outline** uses
**addTextColorClasses** normally within `v-btn`, fixed bug where on some browsers the text inside of
the generated button would not be vertically center

* style(v-date-picker-date-table): updated doc block

* fix: updated current month styles

* fix: update btn__content tag in month picker, updated snapshots

* fix: line-height moved from picker to picker-title

This change centers the text in the calendar buttons

* refactor(v-date-picker): reverted back to fade-transition

removed **out-in** prop and added proper absolute positioning on exit

* fix: eventColor prop definition

* fix(v-avatar): removed class overwrite

class was being explicitly set in the render fn, updated logic to allow for bound class declaration

* Update README.md

* fix(v-expansion-panel): add max-width to resolve overflow issues (#2975)

* fix: Avoid high CPU usage in Safari (#2958)

* fix: Avoid high CPU usage in Safari

A v-navigation-drawer with the app param causes Safari to repeatedly
invalidate and recalculate the layout, permanently consuming a CPU
core.

This is a bug in Safari (fixed in current tech preview) which is
triggered by the combination of using calc in the max-height,
transition-property including max-height and the element being created
using document.createElement (as vue does).

fixes #2773

* style: Add comment explaining need for work around

#2958

* renamed variable in v-date-picker-date-table to match v-date-picker-month-table

* fix (v-date-picker): invalid color of selected disabled date

* lint

* refactor (v-date-picker): extracted common code to mixin

* fix: picker title transition for month picker

* fix(v-tabs): moved css property

text-decoration was being applied to the tabs item anchor

* feature: readonly date picker (#2974)

* feature: readonly date picker

* fix: disabled date picker header

* fixes disabled selected day color

shows selected day/month as disabled in readonly picker

renamed var

* fix (v-date-picker): removed shadow from selected date

* removed unused comuted props

* Fix for pixel gap between and after menu and scrollbar (#2977)

* Round to nearest pixel when measuring for menuables, prevents odd pixel gaps with subpixel values.

* Test to ensure bounded client rect is rounded.

* #2841 remove occurences of "all" property in data-iterable mixin (#2972)

* #2841 remove occurences of "all" property in data-iterable mixin as it duplicates"everyItem"

* #2841 add tests for usage of 'everyItem'

* [release] 1.0.0-beta.3

* fix(directives): fixed memory leak (#2997)

* fix(directives): fixed memory leak

resize and click-outside were storing references to the vnode context that was being passed, this
was not properly being GCed

* fixed drawer test

* removed comment

* refactor(v-app): added resize debounce

debounce removed from `v-resize` due to memory leak, replicating functionality in component

* [release] 1.0.0-beta.4

* fix: typo in prop definition

* (WIP) goTo() function to smooth scroll to the given location (#2913)

* $vuetify.goTo(digit) smooth scrolls to that offset

* add goTo to the $vuetify type definition

* fix type definition

* Add goTo('#anchor') support & error messages

* Switch to vuetify console methods

* Update index.d.ts

* Update index.d.ts

* Moved to /util

* Style fixes

* Duration is now an argument with a default value

* Switch to querySelector(target)

* Add goTo(Element) support

This allows passing refs as target

* Add Duration type check and error message

* test(VMenu): improve rounded dimensions test

see #2977

* fix: all color names are now lowercase

* refactor pre-commit checks (#3003)

* refactor pre-commit checks

- removed package-lock.json and added a warning if yarn isn't used
- removed .env from the repo, you should copy .env.example instead
- removed prepush hook, there's no reason to run tests twice
- lint commit messages to prevent common mistakes
- remove -i from jest, I don't think that cache bug exists any more
- freeze the lockfile in travis, so the build will fail if it isn't
  updated

* update commit message linter

* Bugfix - ReferenceError: isMaskDelimiter is not defined (#3006)

Fixes ReferenceError: isMaskDelimiter is not defined. (#2998)

* update dependencies

* fix(theme): warn when invalid strings are used + add more formats

- can now use 3-digit hex strings, with optional hash

fixes #2995

* remove comment

* fix(v-select): corrected search comparison

when using an object for the **items** prop, it was possible to activate the menu by simply tabbing
to the `v-select` component. wrong comparison value was being used, **getValue**, which always
worked for primitives and masked the issue for objects

fixes #2754

* fix(v-scroll): check if property exists before destructuring

during development, hot reload would call the unbind hook when rebuilding elements using `v-scroll`.
This was throwing an error if it had already been removed

* fix(v-btn): fixed absent click event with using router

* fix(v-jumbotron): added missing transition

* chore(dev): run tests in-band on windows

makes tests take 5x longer, but prevents cache conflicts

* fix(v-navigation-drawer): adjusted logic for route watcher

for SPA applications, the route resolves as the base before it changes to the current path

* Add noResize prop to v-text-field (#2994)

* refactor(v-data-table): changed the default alignment of headers

right alignment is usually for numbers, the problem is, with right align default, tables end up
looking bad if the user has no specified alignment

* fix(v-data-table): adjustment for implicit alignment

* fix(click-outside): adjusted logic for determining click-outside state (#3034)

fixes #3021

* fix(color-utils): refactored **intToHex** function

.padStart, while covered under babel-polyfill, is still not fully supported on very recent browser
versions

fixes #3042

* refactor(color-utils): changed approach of refactor for #3042

* fix: padStart polyfill implementation bug

>>> results in a long loop when negative length is provided

* feat(v-data-table): no-data and no-results slots can take custom tr/tds (#2952)

using the same logic as in the items slot, no-data and no-results slots
can now define their own tr and/or td tags.

fixes #2504

* fix/2996 btn toggle props (#3004)

* fix: bug when using color/class props on v-btn in v-btn-toggle

switched from directly manipulating button classes to changing data

fixes #2996

* test: added extra test

* fix: selected date button is invisible with color prop applied

* feat: min/max props for date/time picker (#3029)

* feat (v-date-picker): **min** and **max** props

fixes #2991

* feat (v-time-picker): **min** and **max** props

* small fixes

* refacotr (v-time-picker): allowed* accepts now only functions

And removes the isAllowedValue util

* refactor: extracted isDateAllowed function to util

* feat: pickerDate.sync prop (#3019)

fixes #3008

* feat: **width** and **full-width** props for pickers (#3001)

* feat: **width** prop for pickers

* cleanup and fixes

* fix: update styles to match material specs

* fix: time picker clock tweaks

* feat (v-picker): **full-width** prop

* fix (v-date-picker): current month was not outlined

* fix (v-date-picker): month button size

* fix: wrong landscape picker size in edge, cleanups

* refactor: abstract picker save/cancel functionality (#2955)

* refactor: remove save/cancel from date/time pickers

* feat: returnable (temporary name...) mixin

Save/cancel functionality abstracted from date/time pickers

closes #2945

* refactor (v-edit-dialog): added returnable mixing

* fix: hide slider when hideSlider is true (#3014)

fixes #2949

* fix (v-date-picker): event dot position

* fix (v-date-picker): showCurrent prop not working in month picker

* Update README.md

* Update BACKERS.md

* fix: expansion-panel can't find nested content (#3040)

expansion-panel only looked for expansion-panel-content in direct children.
moved to use registrable mixin instead.

fixes #2617

* beta.5 pickers tweaks

    * fix (v-date-picker): picker dimensions

    * fix (v-date-picker): update pickerDate on mount

* use eslint-config-standard (#3018)

* use eslint-config-standard

* non-strict truth check on header.sortable

* fix logic for "btn--depressed"

* remove unused eslint plugins

* refactor: simplify validation hint condition

* fix(dialog): partial revert

reverted line 176 back to original logic

* refactor(pickers): fixed lint

* refactor(goTo): moved back to prototype

when you're wrong, you're wrong! this functionality feels awkward having to manually import

* chore: updated webpack-dev-server

* fix(babelrc): transform harmony exports (#3054)

There is no export syntax in ES5, thus `export default` makes the artifact non-importable. CommonJS has become the defacto and this is the correct way to get imports working.

* fix (v-date-picker): picker body doesnt't show in IE11 (#3064)

* fix(v-chip): fixed focus styles in ie11

psuedo element was not properly positioned and overflowing in IE11

* fix (v-tabs): right aligned tabs were centered (#3067)

fixes #3061

* fix: make input error full width (#3077)

fixes a bug when using validation rules with persistent-hint

* fix(VTextField): only use valid domProps (#3078)

fixes #3072

* Fixed stylus path for es5/index.js (#3002)

* [release] 1.0.0-beta.5

* fix icons in IE11 with Compatibility View enabled (#3025)

* Fix snackbar animation and refactor (#2769)

* Fix snackbar animation and refactor

* Add snackbar queue support

* Revert "Add snackbar queue support"

This reverts commit 76ca77c.

* remove message and action props

* refactor: DRY up transition styles

* fix: increase button touch target size

* feat: add options to $vuetify.goTo (#3073)

* refactor($vuetify.goTo)

* rename easeFunction -> easing

* allow custom easing function, separate predefined patterns

* update type definition

* fix(types): make options optional

* fix: stepper style bleed (#3096)

stepper specific btn margins were bleeding into other components.
limited it to direct children of stepper__content

closes #3094

* fix: generate row in data-table no-data slot (#3106)

* fix: generate row in data-table no-data slot

make sure to generate tr/td for no-data slot when needed

closes #3088

* refactor: cleaned up code, re-added text-xs-center

* fix: stopped dialog activator event propagation (#3105)

dialog activator should not propagate click event

closes #2942

* fix (v-time-picker): allow null value (#3109)

* fix (v-time-picker): allow null value

fixes #2616

* fixed codebeat issue

* fix: allow change of period when value is null

* changed colors

* removed inputHour and inputMinute watchers

* cleanup

* Fix ripple directive binding issues (#3130)

* Fix ripple directive binding issues

Unbind was incorrect, it did not remove the registered event handlers.
Update did not update the value used by the event handler,
so a checkbox that is initially disabled would have an event
handler without the center: true option, and enabling the
checkbox would cause the ripple to appear at the mouse pointer's
location.

Fixes #2677

* Refactor ripple directive

Use global event handlers and store data on the element
instead of using anonymous functions as event handlers.
Don't add event handlers when ripple is disabled.
Hide the ripple if it is disabled while it is shown;
otherwise ripple would remain visible.
Update tests and add test for #2677.

Refs #2677

* fix table colspan with table-layout:fixed (#3129)

* fix issue with colspan=100% when table has table-layout:fixed

* fix test snapshot for VDataTable component

* Revert "fix test snapshot for VDataTable component"

This reverts commit a69256a.

* fix test snapshot for VDataTable component

* remove unused props & account for select-all column

* fix: check if selectAll is false

* Fix/#2802 footer auto height (#3104)

* fix(v-footer): added support for auto height

fixes #2802

* fix(v-footer): added support for 'auto' height

fixes #2802

* updated logic for footer update

* updated logic to allow for values like 100% and 50vh

* removed validator

* fix: append/prepend icon position for switch and checkbox (#2483)

fixes #2418

* fix: allow to override the elevation’s Stylus variables (#3098)

(cherry picked from commit 48a2a1a)

* revert(.babelrc): partial revert of #3054

was causing too many unsolvable issues in different environments, partially reverting until more
info from #3112

* Fix/2791 v select focus (#3075)

* fixes #2791, VSelect input loses focus after chip is removed

* fixes 2791 - after keeping focus select drops user input

* remove semicolon

* fix test and remove unecessary line

* fix space-before-blocks linting error

* adding tests

* fixing deletable chip test

* fix(v-btn): fixed fab styles in ie11 (#3127)

* fix(v-btn): fixed fab styles in ie11

fixed a bug where the fab styles were not proper on i11. also fixed a bug where btns would shift
when clicked in ie11

fixes #3068

* remove redundant height declaration and fixed ie11 bug

* fixed size variants in ie11

* adjusted logic to only set width when necessary

* fixed bug with content highlight v-toolbar-items

* final tweak for ie11

* fix(v-select): fixed select keyboard functionality (#3134)

when selecting with left and right, should always hide and remove input from updating the
searchValue

fixes #3069

* fix(v-tab): changed how active link is derived (#3126)

the current logic was very hacky and caused issues when building static sites, such as with nuxt

fixes #3010

* fix(bootable): added check for active status (#3132)

if lazy and active at boot, should show content

fixes #3084

* test (v-date-picker-date-table): additional events test

* feat(v-select): removed debounce prop (#3138)

this was added early on in the framework. Just as Vue removed this from the framework, this should
be handled by the developer

resolves #2978

* feat(v-bottom-sheet): added **hide-overlay** prop

resolves #2668

* prev/next-icon & expand-icon props (#3152)

* fix: carousel icons

* fix: date picker icons

* fix: tabs icons

* feat: data-iterable prev/next icons

* feat: v-expansion-panel-content expand-icon prop

* feat (v-date-picker): reactive prop (#3115)

* feat (v-date-picker): lazy prop

* test (v-date-picker): lazy prop tests

* renamed lazy prop to reactive

* fix(v-date-picker-title): fixed improper comparison for transition (#3160)

* fix(v-date-picker-title): fixed improper comparison for transition

was comparing the formatted string value of `date` when determining the transition direction.
updated to use the iso value

* removed unnecessary year watcher

* removed setReversing method

* fix: update $vuetify.application when created instead of mounted (#3156)

* fix (pickers): workaround for chrome 64 rendering issue (#3162)

* paramaterize sort icon (#3148)

* paramaterize sort icon

* added new line

* removed trailing spaces

* Fix snackbar width on sm, add auto-height prop (#3155)

* fix: use margins instead of transform to center snackbars

* fix: allow snackbar to shrink to contents

* feat: add autoHeight prop

* allow the use of multiple action buttons

vertical snackbars with multiple actions must use auto-height

* fix button width on all snackbar styles

* resolved ie11 bugs

* fix (v-date-picker): tableDate not set properly when pickerDate is nulled (#3147)

* fix: setting null pickerDate doesn't change the tableDate

* test (v-date-picker): test for pickerDate

* Update README.md (#3168)

* fixes #3165 - menu keeps selected item in frame when keydown scrolls (#3166)

* enh(goTo): fixed potential error when passing undefined/null (#3172)

and added support for passing VueComponent as target

* refactor(theme): simplify theme generation with SSR

* fix (v-picker): reverted default width to 290px (#3170)

* fix (v-picker): reverted default width to 290px

* reversed date button sizes and event dots positions

* [release] 1.0.0-beta.6

* Fix v-snackbar color prop (#3201)

* feat: **persistent** prop for v-edit-dialog (#3196)

fixes #3195

* init commit (#3213)

* fix(v-tooltip): fixed tooltip height (#3222)

fixes #3205

* Fix/#3022 list group icons (#3214)

* fix(v-list-group): added ability to remove icons

fixes #3022

* fix(v-list-group): removed icon generation if not needed

fixes #3022

* removed deprecated code

* test: DRY up VSelect tests

* fix(v-tabs): updated booting process (#3234)

updateTabs was not being called, also fixed initial render of slider being off by a few px

fixes #3174

* fix(v-tab): added back removed nextTick (#3232)

was evaluating before the route change was actually resolved

fixes #3203

* fix(v-select): removed useless operation (#3231)

fixes #3151

* fix(detachable): allow any object in the attach prop (#3241)

* fix(VSelect): add tags with tab when the menu is open (#3240)

* fix: correct type definition for $vuetidy.goTo

closes #3200

* fix(stackable): return a z-index of 0 in SSR)

ideally none of this would even be running ssr, but that's a bit too
much of a rewrite for now

fixes #3242

* remove missed console.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment