Add copy button, fix #28

Add copy button, fix #28

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/soanvig/hptcg-deck-builder.git/'


updated alert example to show new prop

updated alert example to show new prop

<template>
  <div>
    <v-alert type="success" value="true">
      This is a success alert.
    </v-alert>

    <v-alert type="info" value="true">
      This is a info alert.
    </v-alert>

    <v-alert type="warning" value="true">
      This is a warning alert.
    </v-alert>

    <v-alert type="error" value="true">
      This is a error alert.
    </v-alert>
  </div>
</template>

<template>
  <div>
    <v-alert color="success" icon="check_circle" value="true">
      This is a success alert.
    </v-alert>

    <v-alert color="info" icon="info" value="true">
      This is a info alert.
    </v-alert>

    <v-alert color="warning" icon="priority_high" value="true">
      This is a warning alert.
    </v-alert>

    <v-alert color="error" icon="warning" value="true">
      This is a error alert.
    </v-alert>
  </div>
</template>


Darker background color for header.

Darker background color for header.


Disable titles

Disable titles

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/JosefFriedrich-nodejs/baldr.git/'


test lyric

test lyric

<template>
    <div style="background-color: lightgreen;">

        <text style="text-align: center;">header</text>

        <lyric style="flex:1; background-color: dodgerblue" file-path="/sdcard/qhk.trc"></lyric>

        <text style="text-align: center;">footer</text>

    </div>
</template>

<script>
    module.exports = {
        data: {},
        methods: {}
    }
</script>

<style>

</style>

error: pathspec 'WeexPractice/src/lyric.vue' did not match any file(s) known to git


add global text-align css

add global text-align css

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/sy264115809/goblin.git/'


[dashboard] statistic values

[dashboard] statistic values

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/modum-io/web.git/'


Revert "Dummy commit to trigger GitHub reevaluation"

This reverts commit f3554c83e5102ea78bddeb401f72c697ba55de9d.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/PayBreak/basket.git/'


Changed date to 24 hour format.

Changed date to 24 hour format.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/evercam/evercam-admin.git/'


Record answerState for hint events.

Record answerState for hint events.

<template v-if="ready">

    <ui-alert v-if="itemError" :dismissible="false" type="error">
      {{ $tr('itemError') }}
    </ui-alert>

      <content-renderer
        ref="contentRenderer"
        class="content-renderer"
        :id="content.id"
        :kind="content.kind"
        :files="content.files"
        :contentId="content.content_id"
        :channelId="channelId"
        :available="content.available"
        :extraFields="content.extra_fields"
        :assessment="true"
        :itemId="itemId"
        @answerGiven="answerGiven"
        @hintTaken="hintTaken"
        @sessionInitialized="sessionInitialized"
        @itemError="handleItemError"/>

      <icon-button @click="checkAnswer" v-show="!complete" class="question-btn" :class="{shaking: shake}" id="check-answer-button" :text="$tr('check')"></icon-button>
      <transition name="delay">
        <icon-button @click="nextQuestion" v-show="complete" class="question-btn next-question-button" :text="$tr('correct')"></icon-button>
      </transition>
      <slot/>

      <exercise-attempts
        class="attemptprogress"
        :waiting="!complete"
        :success="success"
        :numSpaces="attemptsWindowN"
        :log="recentAttempts"
      />

{{ $tr('goal', {count: totalCorrectRequiredM}) }}

{{ $tr('tryAgain') }}

</template>


fix route error

fix route error

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/notadd/administration.git/'


Changed the if order to get perhaps even a little bit more out of it

<template>

    ...
    <template
      v-else
    >
      <button
        v-if="shouldShowCommentButton"
        type="button"
        class="add-diff-note js-add-diff-note-button"
        title="Add a comment to this line"
        @click="handleCommentButton"
      >
        <icon
          :size="12"
          name="comment"
        />
      </button>

      <diff-gutter-avatars
        v-if="shouldShowAvatarsOnGutter"
        :discussions="discussions"
      />
    </template>

</template>


fix extra shadow on sidebar bottom

fix extra shadow on sidebar bottom

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/aligerum/clockwork.git/'


add banner component

add banner component

<template>

 {{ classification }}

</template>

error: pathspec 'client/src/components/Banner.vue' did not match any file(s) known to git


Decrease banner component height

Decrease banner component height

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/mplusmuseum/mplusmuseum-stories.git/'


total

total

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/lijianqiang/open-plan-vue.git/'


support new subscription service

support new subscription service


Plus size for little cocktail cards elements to overflow on purpose

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/barprive/barprive.com.git/'


feat(Layout): add Layout component

feat(Layout): add Layout component

Layout component responsible for constructing the frame of how the website should look

<template>

      <navbar-component>
        <router-view name="menu" slot="menu"></router-view>
      </navbar-component>

        <router-view name="main"></router-view>

</template>

error: pathspec 'src/components/Layout/Layout.vue' did not match any file(s) known to git


Changes

Changes

1. UI Changes

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/chetanraj/rssrdr-vue.git/'


Re-enable eslint for directive and util

Re-enable eslint for directive and util

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/doximity/vue-genome.git/'


docs(Versions): update functionality

docs(Versions): update functionality

<template>
  <v-btn
    :href="`https://github.com/vuetifyjs/vuetify/releases/${version}`"
    class="hidden-xs-only"
    flat
    target="_blank"
    rel="noopener"
  >
    <span
      class="text-lowercase"
      v-text="version"
    />
  </v-btn>
</template>

<script>
  // Utilities
  import {
    mapState
  } from 'vuex'

  export default {
    computed: {
      ...mapState('app', [
        'currentVersion'
      ]),
      version () {
        return `v${this.currentVersion}`
      }
    }
  }
</script>

<template>
  <v-menu
    attach
    bottom
    lazy
    left
    offset-y
    class="hidden-xs-only"
  >
    <v-btn
      slot="activator"
      class="pr-1 pl-3"
      flat
    >
      <span
        class="mr-1 text-lowercase"
        v-text="`v${currentVersion}`"
      />
      <v-icon>mdi-menu-down</v-icon>
    </v-btn>
  </v-menu>
</template>

<script>
  // Utilities
  import {
    mapState
  } from 'vuex'

  export default {
    computed: {
      ...mapState('app', [
        'currentVersion'
      ])
    }
  }
</script>


add

add

app

<template>

		<router-view class="app-content" v-el:content
		 v-bind:style="{ 'padding-top' : topbarHeight, 'padding-bottom' : tabbarHeight }"></router-view>
		<navbar class="app-navigation" v-ref:navbar v-bind:height="topbarHeight"></navbar>
		<tabbar class="app-navigation" v-ref:tabbar v-bind:height.sync="tabbarHeight"></tabbar>

		<popout class="app-popout" v-ref:popout></popout>

</template>

error: pathspec 'src/package/1.0.0/components/app.vue' did not match any file(s) known to git


Fixed panel

Fixed panel

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Sean2525/kantaishigure.git/'


Removed console.log

Removed console.log

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/riggerthegeek/ci-menu.git/'


Add : pointer cursor on load more component

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Gramatiik/radion-vue.git/'


Removes hamburger css, Adjust drawer to be full height, Adds underlay

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/NathanielDavid/Sumie.git/'


clarify docs

clarify docs

fatal: unable to open .git/objects/pack/tmp_pack_jYx8CZ: No such file or directory
fatal: index-pack failed


Fix blur issue on mobiles

Fix blur issue on mobiles


26.6.5 todoMVC

26.6.5 todoMVC

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/sunningQD/vue.git/'


Adjust layout of role switcher

Adjust layout of role switcher

<template>

    <class-rename-modal
      v-if="showEditNameModal"
      :classname="currClass.name"
      :classid="currClass.id"
    />

{{currClass.name}}

      <mat-svg id="edit-icon" class="name-edit" category="image" name="edit" aria-hidden="true"/>

        {{$tr('tableTitle')}}

        <mat-svg class="icon" category="action" name="search" aria-hidden="true"/>
        <input
          id="search-field"
          :aria-label="$tr('searchText')"
          type="search"
          v-model="searchFilter"
          :placeholder="$tr('searchText')">

        <router-link :to="classEnrollLink" class="table-name">
          <icon-button
            class="enroll-user-button"
            :text="$tr('enrollUsers')"
            :primary="true"/>
        </router-link>

    <user-remove-modal
      v-if="showRemoveUserModal"
      :classname="currClass.name"
      :classid="currClass.id"
      :username="currentUserRemove.username"
      :userid="currentUserRemove.id"
    />

{{$tr('users')}}

           {{$tr('fullName')}}
           {{$tr('username')}}
           {{$tr('role')}}

              {{user.full_name}}

            {{user.username}}

            <role-switcher
              class="user-role"
              :currentRole="user.kind"
              @click-add-coach="addCoachRoleToUser(user)"
              @click-remove-coach="removeCoachRoleFromUser(user)"
            />

              {{$tr('remove')}}

{{ $tr('noUsersExist') }}

{{ $tr('allUsersFilteredOut') }}

</template>


docs: set default markup language to 'markup'

fixes prism highlighting exception

<template>

    <prism :language="language">
      <slot />
    </prism>

      <v-icon @click="copyMarkup">content_copy</v-icon>
      <v-slide-x-transition>
        Copied
      </v-slide-x-transition>

</template>


Prevent escaping in user tooltip

Prevent escaping in user tooltip

<template>
  <gl-popover :target="target" boundary="viewport" placement="top" show>

        <user-avatar-image :img-src="user.avatarUrl" :size="60" css-classes="mr-2"/>

          {{ user.name }}
          <gl-skeleton-loading
            v-if="nameIsLoading"
            :lines="1"
            class="animation-container-small mb-1"
          />

          @{{ user.username }}
          <gl-skeleton-loading v-else :lines="1" class="animation-container-small mb-1"/>

          {{ jobLine }}
          <gl-skeleton-loading
            v-if="jobInfoIsLoading"
            :lines="1"
            class="animation-container-small mb-1"
          />

          {{ user.location }}
          <gl-skeleton-loading
            v-if="locationIsLoading"
            :lines="1"
            class="animation-container-small mb-1"
          />

  </gl-popover>
</template>

<template>
  <gl-popover :target="target" boundary="viewport" placement="top" show>

        <user-avatar-image :img-src="user.avatarUrl" :size="60" css-classes="mr-2" />

          {{ user.name }}
          <gl-skeleton-loading
            v-if="nameIsLoading"
            :lines="1"
            class="animation-container-small mb-1"
          />

          @{{ user.username }}
          <gl-skeleton-loading v-else :lines="1" class="animation-container-small mb-1" />

          {{ jobLine }}
          <gl-skeleton-loading
            v-if="jobInfoIsLoading"
            :lines="1"
            class="animation-container-small mb-1"
          />

          {{ user.location }}
          <gl-skeleton-loading
            v-if="locationIsLoading"
            :lines="1"
            class="animation-container-small mb-1"
          />

  </gl-popover>
</template>


service Header

service Header

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/NewDadaFE/newdada-daojia.git/'


remove the deep data injector in favor of vue-loader 12

<template>
  <i class="md-svg-loader" v-html="html"></i>
</template>

<style lang="scss">
  .md-svg-loader {
    display: block;

    svg {
      width: 100%;
    }
  }
</style>

<script lang="babel">
  let mdSVGStore = {}

  export default {
    name: 'MdSVGLoader',
    props: {
      mdSrc: {
        type: String,
        required: true
      }
    },
    data: () => ({
      html: null
    }),
    watch: {
      mdSrc () {
        this.html = null
        this.loadSVG()
      }
    },
    methods: {
      isImage (mimetype) {
        return mimetype.indexOf('image') >= 0
      },
      isSVG (mimetype) {
        return mimetype.indexOf('svg') >= 0
      },
      async sethtml (value) {
        this.html = await mdSVGStore[this.mdSrc]

        await this.$nextTick()

        this.$emit('md-loaded')
      },
      loadSVG () {
        if (!mdSVGStore.hasOwnProperty(this.mdSrc)) {
          mdSVGStore[this.mdSrc] = new Promise((resolve, reject) => {
            const request = new window.XMLHttpRequest()
            const self = this

            request.open('GET', this.mdSrc, true)

            request.onload = function () {
              const mimetype = this.getResponseHeader('content-type')

              if (this.status >= 200 && this.status < 400 && self.isSVG(mimetype)) {
                resolve(this.response)
                self.sethtml()
              } else {
                reject(new Error(`The file ${self.mdSrc} is not a valid SVG.`))
              }
            }

            request.send()
          })
        } else {
          this.sethtml()
        }
      }
    },
    mounted () {
      this.loadSVG()
    }
  }
</script>

<template>
  <i class="md-svg-loader" v-html="html"></i>
</template>

<style lang="scss">
  .md-svg-loader {
    display: block;

    svg {
      width: 100%;
    }
  }
</style>

<script lang="babel">
  let mdSVGStore = {}

  export default {
    name: 'MdSVGLoader',
    props: {
      mdSrc: {
        type: String,
        required: true
      }
    },
    data: () => ({
      html: null
    }),
    watch: {
      mdSrc () {
        this.html = null
        this.loadSVG()
      }
    },
    methods: {
      isImage (mimetype) {
        return mimetype.indexOf('image') >= 0
      },
      isSVG (mimetype) {
        return mimetype.indexOf('svg') >= 0
      },
      async sethtml (value) {
        this.html = await mdSVGStore[this.mdSrc]

        await this.$nextTick()

        const dataset = [].filter.call(this.$el.attributes, attribute => /^data-/.test(attribute.name))

        dataset.forEach(data => {
          const childrenArray = Array.from(this.$el.querySelectorAll('*'))

          childrenArray.forEach(node => {
            node.setAttribute(data.name.toLowerCase(), '')
          })
        })

        await this.$nextTick()

        this.$emit('md-loaded')
      },
      loadSVG () {
        if (!mdSVGStore.hasOwnProperty(this.mdSrc)) {
          mdSVGStore[this.mdSrc] = new Promise((resolve, reject) => {
            const request = new window.XMLHttpRequest()
            const self = this

            request.open('GET', this.mdSrc, true)

            request.onload = function () {
              const mimetype = this.getResponseHeader('content-type')

              if (this.status >= 200 && this.status < 400 && self.isSVG(mimetype)) {
                resolve(this.response)
                self.sethtml()
              } else {
                reject(new Error(`The file ${self.mdSrc} is not a valid SVG.`))
              }
            }

            request.send()
          })
        } else {
          this.sethtml()
        }
      }
    },
    mounted () {
      this.loadSVG()
    }
  }
</script>


[rating-bar] add support to svg and png

[rating-bar] add support to svg and png

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/jaceks-iRonin/vue-material-test.git/'


Make sure back to M+ link doesn't open in new tab


[NOSTORY] Stylize Beam login button

[NOSTORY] Stylize Beam login button

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/WaddlingCo/streamperk-frontend.git/'


BugFix: Connection problem on Company Management View

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/modum-io/web.git/'


Small change

Small change

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/egoconf/egoconf.git/'


Add better label to field with placeholder

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/praneetloke/vue-material.git/'


Add processing job parameter component

Add processing job parameter component

Relion view

<template>

Processing Job Parameters for Job ID: {{this.id}}

</template>

error: pathspec 'client/src/js/modules/types/em/relion/components/job-parameters.vue' did not match any file(s) known to git


Add clear form progress

Add clear form progress

error: pathspec 'src/components/ClearFormProgress.vue' did not match any file(s) known to git


fix(MdButton): fix events when ripple is on (#1532)

<script>
  import MdComponent from 'core/MdComponent'
  import MdFocused from 'core/mixins/MdFocused/MdFocused'
  import MdRipple from 'core/mixins/MdRipple/MdRipple'
  import MdRouterLinkProps from 'core/utils/MdRouterLinkProps'
  import MdButtonContent from './MdButtonContent'

  export default new MdComponent({
    name: 'MdButton',
    data () {
      return {
        rippleActive: false
      }
    },
    components: {
      MdButtonContent
    },
    mixins: [
      MdRipple,
      MdFocused
    ],
    props: {
      href: String,
      type: {
        type: String,
        default: 'button'
      },
      disabled: Boolean,
      to: null
    },
    computed: {
      rippleWorks () {
        return this.mdRipple && !this.disabled
      }
    },
    render (createElement) {
      const buttonContent = createElement('md-button-content', {
        attrs: {
          mdRipple: this.mdRipple,
          disabled: this.disabled
        },
        props: {
          mdRippleActive: this.rippleActive
        },
        on: {
          'update:mdRippleActive': active => this.rippleActive = active,
        }
      }, this.$slots.default)
      let buttonAttrs = {
        staticClass: 'md-button',
        class: [
          this.$mdActiveTheme,
          {
            'md-ripple-off': !this.mdRipple,
            'md-focused': this.mdHasFocus
          }
        ],
        attrs: {
          ...this.attrs,
          href: this.href,
          disabled: this.disabled,
          type: !this.href && (this.type || 'button')
        },
        on: {
          ...this.$listeners,
          touchstart: event => {
            if (this.rippleWorks) {
              this.rippleActive = event
            }

            this.$listeners.touchstart && this.$listeners.touchstart(event)
          },
          touchmove: event => {
            if (this.rippleWorks) {
              this.rippleActive = event
            }

            this.$listeners.touchmove && this.$listeners.touchmove(event)
          },
          mousedown: event => {
            if (this.rippleWorks) {
              this.rippleActive = event
            }

            this.$listeners.mousedown && this.$listeners.mousedown(event)
          }
        }
      }
      let tag = 'button'

      if (this.href) {
        tag = 'a'
      } else if (this.$router && this.to) {
        this.$options.props = MdRouterLinkProps(this, this.$options.props)

        tag = 'router-link'
        buttonAttrs.props = this.$props
        delete buttonAttrs.props.type
        delete buttonAttrs.attrs.type
        delete buttonAttrs.props.href
        delete buttonAttrs.attrs.href
      }

      return createElement(tag, buttonAttrs, [buttonContent])
    }
  })
</script>

<style lang="scss">
  @import "~components/MdAnimation/variables";
  @import "~components/MdElevation/mixins";
  @import "~components/MdElevation/variables";

  $md-button-min-width: 88px;
  $md-button-height: 36px;
  $md-button-radius: 2px;
  $md-button-font-size: 14px;

  $md-button-dense-height: 32px;

  $md-button-icon-size: 40px;

  $md-button-fab-size: 56px;
  $md-button-fab-size-mini: $md-button-icon-size;

  .md-button-clean {
    margin: 0;
    padding: 0;
    display: inline-block;
    position: relative;
    overflow: hidden;
    outline: none;
    background: transparent;
    border: 0;
    border-radius: 0;
    transition: $md-transition-default;
    font-family: inherit;
    line-height: normal;
    text-decoration: none;
    vertical-align: top;
    white-space: nowrap;
  }

  .md-button {
    @extend .md-button-clean;
    min-width: $md-button-min-width;
    height: $md-button-height;
    margin: 6px 8px;
    user-select: none;
    border-radius: $md-button-radius;
    font-size: $md-button-font-size;
    font-weight: 500;
    text-transform: uppercase;

    &:active {
      outline: none;
    }

    &[disabled] {
      pointer-events: none;
    }

    &:not([disabled]) {
      cursor: pointer;

      &:hover,
      &:active,
      &.md-focused {
        &:before {
          background-color: currentColor;
          opacity: .12;
        }
      }

      &.md-focused {
        &.md-primary,
        &.md-accent {
          &:before {
            opacity: .2;
          }
        }
      }

      &:active {
        &:before {
          opacity: .2;
        }
      }

      &.md-ripple-off:active:before {
        opacity: .26;
      }
    }

    &.md-plain.md-button.md-raised:not([disabled]) {
      color: rgba(#000, .87);
      background-color: #fff;

      .md-icon-font {
        color: rgba(#000, .87);
      }

      .md-icon-image {
        fill: rgba(#000, .87);
      }
    }

    &::-moz-focus-inner {
      padding: 0;
      border: 0;
    }

    &:before {
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: 1;
      opacity: 0;
      transition: $md-transition-default;
      will-change: background-color, opacity;
      content: " ";
    }

    &.md-dense {
      height: $md-button-dense-height;
      font-size: 13px;
    }

    &.md-raised:not([disabled]) {
      @include md-elevation(2);

      &:active {
        @include md-elevation(8);
      }

      &.md-ripple-off:active:before {
        opacity: .2;
      }
    }

    + .md-button {
      margin-left: 0;
    }

    .md-ripple {
      padding: 0 8px;
      display: flex;
      justify-content: center;
      align-items: center;
    }
  }

  .md-button-spaced .md-ripple {
    padding: 0 16px;
  }

  .md-icon-button,
  .md-fab {
    border-radius: 50%;
    z-index: 10;

    &:before {
      border-radius: 50%;
    }

    .md-ripple {
      border-radius: 50%;
    }
  }

  .md-icon-button,
  .md-fab.md-mini,
  .md-fab.md-dense {
    .md-ripple-wave {
      top: 0 !important;
      right: 0 !important;
      bottom: 0 !important;
      left: 0 !important;
    }
  }

  .md-icon-button {
    width: $md-button-icon-size;
    min-width: $md-button-icon-size;
    height: $md-button-icon-size;
    margin: 0 6px;

    &.md-dense {
      width: $md-button-dense-height;
      min-width: $md-button-dense-height;
      height: $md-button-dense-height;
    }

    .md-ripple-enter-active {
      transition-duration: 1.2s;
    }
  }

  .md-fab {
    @include md-elevation(6);

    width: $md-button-fab-size;
    height: $md-button-fab-size;
    min-width: 0;
    overflow: hidden;

    &:active {
      @include md-elevation(12);
    }

    &.md-mini,
    &.md-dense {
      width: $md-button-fab-size-mini;
      height: $md-button-fab-size-mini;
    }

    &.md-fab-top-right,
    &.md-fab-top-left {
      position: absolute;
      top: 24px;
    }

    &.md-fab-bottom-right,
    &.md-fab-bottom-left {
      position: absolute;
      bottom: 24px;
    }

    &.md-fab-top-center,
    &.md-fab-bottom-center {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
    }

    &.md-fab-top-center {
      top: 24px;
    }

    &.md-fab-bottom-center {
      top: 24px;
    }

    &.md-fab-top-right,
    &.md-fab-bottom-right {
      right: 24px;
    }

    &.md-fab-top-left,
    &.md-fab-bottom-left {
      left: 24px;
    }

    &.md-fixed {
      position: fixed;
    }

    .md-ripple {
      padding: 0;
    }
  }
</style>

<script>
  import MdComponent from 'core/MdComponent'
  import MdFocused from 'core/mixins/MdFocused/MdFocused'
  import MdRipple from 'core/mixins/MdRipple/MdRipple'
  import MdRouterLinkProps from 'core/utils/MdRouterLinkProps'
  import MdButtonContent from './MdButtonContent'

  export default new MdComponent({
    name: 'MdButton',
    data () {
      return {
        rippleActive: false
      }
    },
    components: {
      MdButtonContent
    },
    mixins: [
      MdRipple,
      MdFocused
    ],
    props: {
      href: String,
      type: {
        type: String,
        default: 'button'
      },
      disabled: Boolean,
      to: null
    },
    computed: {
      rippleWorks () {
        return this.mdRipple && !this.disabled
      }
    },
    render (createElement) {
      const buttonContent = createElement('md-button-content', {
        attrs: {
          mdRipple: this.mdRipple,
          disabled: this.disabled
        },
        props: {
          mdRippleActive: this.rippleActive
        },
        on: {
          'update:mdRippleActive': active => this.rippleActive = active,
        }
      }, this.$slots.default)
      let buttonAttrs = {
        staticClass: 'md-button',
        class: [
          this.$mdActiveTheme,
          {
            'md-ripple-off': !this.mdRipple,
            'md-focused': this.mdHasFocus
          }
        ],
        attrs: {
          ...this.attrs,
          href: this.href,
          disabled: this.disabled,
          type: !this.href && (this.type || 'button')
        },
        on: {
          ...this.$listeners,
          touchstart: event => {
            if (!this.rippleWorks) {
              return false
            }

            this.rippleActive = event
            this.$listeners.touchstart && this.$listeners.touchstart(event)
          },
          touchmove: event => {
            if (!this.rippleWorks) {
              return false
            }

            this.rippleActive = event
            this.$listeners.touchmove && this.$listeners.touchmove(event)
          },
          mousedown: event => {
            if (!this.rippleWorks) {
              return false
            }

            this.rippleActive = event
            this.$listeners.mousedown && this.$listeners.mousedown(event)
          }
        }
      }
      let tag = 'button'

      if (this.href) {
        tag = 'a'
      } else if (this.$router && this.to) {
        this.$options.props = MdRouterLinkProps(this, this.$options.props)

        tag = 'router-link'
        buttonAttrs.props = this.$props
        delete buttonAttrs.props.type
        delete buttonAttrs.attrs.type
        delete buttonAttrs.props.href
        delete buttonAttrs.attrs.href
      }

      return createElement(tag, buttonAttrs, [buttonContent])
    }
  })
</script>

<style lang="scss">
  @import "~components/MdAnimation/variables";
  @import "~components/MdElevation/mixins";
  @import "~components/MdElevation/variables";

  $md-button-min-width: 88px;
  $md-button-height: 36px;
  $md-button-radius: 2px;
  $md-button-font-size: 14px;

  $md-button-dense-height: 32px;

  $md-button-icon-size: 40px;

  $md-button-fab-size: 56px;
  $md-button-fab-size-mini: $md-button-icon-size;

  .md-button-clean {
    margin: 0;
    padding: 0;
    display: inline-block;
    position: relative;
    overflow: hidden;
    outline: none;
    background: transparent;
    border: 0;
    border-radius: 0;
    transition: $md-transition-default;
    font-family: inherit;
    line-height: normal;
    text-decoration: none;
    vertical-align: top;
    white-space: nowrap;
  }

  .md-button {
    @extend .md-button-clean;
    min-width: $md-button-min-width;
    height: $md-button-height;
    margin: 6px 8px;
    user-select: none;
    border-radius: $md-button-radius;
    font-size: $md-button-font-size;
    font-weight: 500;
    text-transform: uppercase;

    &:active {
      outline: none;
    }

    &[disabled] {
      pointer-events: none;
    }

    &:not([disabled]) {
      cursor: pointer;

      &:hover,
      &:active,
      &.md-focused {
        &:before {
          background-color: currentColor;
          opacity: .12;
        }
      }

      &.md-focused {
        &.md-primary,
        &.md-accent {
          &:before {
            opacity: .2;
          }
        }
      }

      &:active {
        &:before {
          opacity: .2;
        }
      }

      &.md-ripple-off:active:before {
        opacity: .26;
      }
    }

    &.md-plain.md-button.md-raised:not([disabled]) {
      color: rgba(#000, .87);
      background-color: #fff;

      .md-icon-font {
        color: rgba(#000, .87);
      }

      .md-icon-image {
        fill: rgba(#000, .87);
      }
    }

    &::-moz-focus-inner {
      padding: 0;
      border: 0;
    }

    &:before {
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: 1;
      opacity: 0;
      transition: $md-transition-default;
      will-change: background-color, opacity;
      content: " ";
    }

    &.md-dense {
      height: $md-button-dense-height;
      font-size: 13px;
    }

    &.md-raised:not([disabled]) {
      @include md-elevation(2);

      &:active {
        @include md-elevation(8);
      }

      &.md-ripple-off:active:before {
        opacity: .2;
      }
    }

    + .md-button {
      margin-left: 0;
    }

    .md-ripple {
      padding: 0 8px;
      display: flex;
      justify-content: center;
      align-items: center;
    }
  }

  .md-button-spaced .md-ripple {
    padding: 0 16px;
  }

  .md-icon-button,
  .md-fab {
    border-radius: 50%;
    z-index: 10;

    &:before {
      border-radius: 50%;
    }

    .md-ripple {
      border-radius: 50%;
    }
  }

  .md-icon-button,
  .md-fab.md-mini,
  .md-fab.md-dense {
    .md-ripple-wave {
      top: 0 !important;
      right: 0 !important;
      bottom: 0 !important;
      left: 0 !important;
    }
  }

  .md-icon-button {
    width: $md-button-icon-size;
    min-width: $md-button-icon-size;
    height: $md-button-icon-size;
    margin: 0 6px;

    &.md-dense {
      width: $md-button-dense-height;
      min-width: $md-button-dense-height;
      height: $md-button-dense-height;
    }

    .md-ripple-enter-active {
      transition-duration: 1.2s;
    }
  }

  .md-fab {
    @include md-elevation(6);

    width: $md-button-fab-size;
    height: $md-button-fab-size;
    min-width: 0;
    overflow: hidden;

    &:active {
      @include md-elevation(12);
    }

    &.md-mini,
    &.md-dense {
      width: $md-button-fab-size-mini;
      height: $md-button-fab-size-mini;
    }

    &.md-fab-top-right,
    &.md-fab-top-left {
      position: absolute;
      top: 24px;
    }

    &.md-fab-bottom-right,
    &.md-fab-bottom-left {
      position: absolute;
      bottom: 24px;
    }

    &.md-fab-top-center,
    &.md-fab-bottom-center {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
    }

    &.md-fab-top-center {
      top: 24px;
    }

    &.md-fab-bottom-center {
      top: 24px;
    }

    &.md-fab-top-right,
    &.md-fab-bottom-right {
      right: 24px;
    }

    &.md-fab-top-left,
    &.md-fab-bottom-left {
      left: 24px;
    }

    &.md-fixed {
      position: fixed;
    }

    .md-ripple {
      padding: 0;
    }
  }
</style>


allow preventDefault in md-switch (#435)

* Allow preventDefault in md-switch

* typeof undefined check, remove comments


Don't show the data table if no repos - show add button


修改表单元素text

修改表单元素text

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/bingo-oss/bui-weex.git/'


Displaing text in list fix

Displaing text in list fix

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/soal/spDiary.git/'


tmp commit

tmp commit

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/avilang/run.git/'


remove log

remove log

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Luncher/BlogAdmin.git/'


Fix link

Fix link

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/fjyuu/nicovideo-style.git/'


chore: Add demo QToolbar page

chore: Add demo QToolbar page

<template>

        Toolbars are mainly used in Layout headers and footers, but they can be used
        in your Page view too.

      <q-toolbar>
        <q-btn flat>
          <q-icon name="menu" />
        </q-btn>
        <q-toolbar-title>
          Toolbar
        </q-toolbar-title>
        <q-btn flat>
          <q-icon name="more_vert" />
        </q-btn>
      </q-toolbar>

      <q-toolbar inverted>
        <q-btn flat>
          <q-icon name="menu" />
        </q-btn>
        <q-toolbar-title>
          Toolbar
        </q-toolbar-title>
        <q-btn flat>
          <q-icon name="more_vert" />
        </q-btn>
      </q-toolbar>

        They come in all colors.

      <q-toolbar color="secondary">
        <q-btn flat><q-icon name="assignment_ind" /></q-btn>
        <q-toolbar-title>
          Toolbar
        </q-toolbar-title>
        <q-btn flat><q-icon name="sim_card" /></q-btn>
        <q-btn flat><q-icon name="gamepad" /></q-btn>
      </q-toolbar>
      <q-toolbar color="yellow" class="text-dark">
        <q-btn flat><q-icon name="assignment_ind" /></q-btn>
        <q-toolbar-title>
          Toolbar
          Subtitle
        </q-toolbar-title>
        <q-btn flat><q-icon name="sim_card" /></q-btn>
        <q-btn flat><q-icon name="gamepad" /></q-btn>
      </q-toolbar>
      <q-toolbar color="orange">
        <q-btn flat><q-icon name="mail" /></q-btn>
        <q-toolbar-title>
          Long title for Toolbar. Very very very very very very long title.
        </q-toolbar-title>
        <q-btn flat><q-icon name="alarm" /></q-btn>
        <q-btn flat><q-icon name="router" /></q-btn>
        <q-btn flat><q-icon name="keyboard" /></q-btn>
      </q-toolbar>
      <q-toolbar color="dark">
        <q-btn flat><q-icon name="menu" /></q-btn>
        <q-btn flat><q-icon name="security" /></q-btn>
        <q-toolbar-title>
          Toolbar
        </q-toolbar-title>
        <q-btn flat><q-icon name="headset" /></q-btn>
        <q-btn flat><q-icon name="tv" /></q-btn>
      </q-toolbar>

        And inverted:

      <q-toolbar inverted color="secondary">
        <q-btn flat><q-icon name="assignment_ind" /></q-btn>
        <q-toolbar-title>
          Toolbar
        </q-toolbar-title>
        <q-btn flat><q-icon name="sim_card" /></q-btn>
        <q-btn flat><q-icon name="gamepad" /></q-btn>
      </q-toolbar>
      <q-toolbar inverted color="purple">
        <q-btn flat><q-icon name="assignment_ind" /></q-btn>
        <q-toolbar-title>
          Toolbar
          Subtitle
        </q-toolbar-title>
        <q-btn flat><q-icon name="sim_card" /></q-btn>
        <q-btn flat><q-icon name="gamepad" /></q-btn>
      </q-toolbar>
      <q-toolbar inverted color="orange">
        <q-btn flat><q-icon name="mail" /></q-btn>
        <q-toolbar-title>
          Long title for Toolbar. Very very very very very very long title.
        </q-toolbar-title>
        <q-btn flat><q-icon name="alarm" /></q-btn>
        <q-btn flat><q-icon name="router" /></q-btn>
        <q-btn flat><q-icon name="keyboard" /></q-btn>
      </q-toolbar>
      <q-toolbar inverted color="dark">
        <q-btn flat><q-icon name="menu" /></q-btn>
        <q-btn flat><q-icon name="security" /></q-btn>
        <q-toolbar-title>
          Toolbar
        </q-toolbar-title>
        <q-btn flat><q-icon name="headset" /></q-btn>
        <q-btn flat><q-icon name="tv" /></q-btn>
      </q-toolbar>

</template>

error: pathspec 'dev/components/components/toolbar.vue' did not match any file(s) known to git


Add 'location' to filters

Add 'location' to filters

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/soanvig/hptcg-deck-builder.git/'


Fix lost semicolon in loop statements

Fix lost semicolon in loop statements

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/m31271n/darkness.git/'


Add minor style tweak

Add minor style tweak

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/stefanjudis/stefan-judis-website.git/'


dont mess with my dev

dont mess with my dev


Disable submit button if facility settings haven’t changed

<template>

    <notifications
      :notification="notification"
      @dismiss="dismissNotification()"
    />

{{ $tr('pageHeader') }}

{{ $tr('pageDescription') }}

    <template v-if="settings!==null">

{{ $tr('currentFacilityHeader') }}

          {{ currentFacilityName }}

{{ $tr('settingsHeader') }}

          <template v-for="setting in settingsList">
            <k-checkbox
              :label="$tr(setting)"
              :checked="settings[setting]"
              @change="toggleSetting(setting)"
              :key="setting"
            />
          </template>

          <k-button
            :primary="false"
            :raised="true"
            @click="showModal=true"
            :text="$tr('resetToDefaultSettings')"
            name="reset-settings"
          />

          <k-button
            :primary="true"
            :raised="true"
            @click="saveConfig()"
            :text="$tr('saveChanges')"
            name="save-settings"
            :disabled="!settingsHaveChanged"
          />

    </template>

    <confirm-reset-modal
      id="confirm-reset"
      v-if="showModal"
      @click-confirm="resetToDefaultSettings()"
      @click-cancel="showModal=false"
    />

</template>

<template>

    <notifications
      :notification="notification"
      @dismiss="dismissNotification()"
    />

{{ $tr('pageHeader') }}

{{ $tr('pageDescription') }}

    <template v-if="settings!==null">

{{ $tr('currentFacilityHeader') }}

          {{ currentFacilityName }}

{{ $tr('settingsHeader') }}

          <template v-for="setting in settingsList">
            <k-checkbox
              :label="$tr(setting)"
              :checked="settings[setting]"
              @change="toggleSetting(setting)"
            />
          </template>

          <k-button
            :primary="false"
            :raised="true"
            @click="showModal=true"
            :text="$tr('resetToDefaultSettings')"
            name="reset-settings"
          />

          <k-button
            :primary="true"
            :raised="true"
            @click="saveFacilityConfig()"
            :text="$tr('saveChanges')"
            name="save-settings"
          />

    </template>

    <confirm-reset-modal
      id="confirm-reset"
      v-if="showModal"
      @click-confirm="resetToDefaultSettings()"
      @click-cancel="showModal=false"
    />

</template>


Added Top scroll.

Added Top scroll.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/evercam/evercam-admin.git/'


moved searchValue population to inputValue in case select doesn't have a model

<script>
  import { getObjectValueByPath } from '../../util/helpers'

  import VCard from '../VCard'
  import VCheckbox from '../VCheckbox'
  import VIcon from '../VIcon'
  import {
    VList,
    VListTile,
    VListTileAction,
    VListTileContent,
    VListTileTitle
  } from '../VList'
  import VMenu from '../VMenu'

  import Filterable from '../../mixins/filterable'
  import Input from '../../mixins/input'
  import Autocomplete from './mixins/autocomplete'
  import Generators from './mixins/generators'

  import ClickOutside from '../../directives/click-outside'

  export default {
    name: 'v-select',

    inheritAttrs: false,

    components: {
      VCard,
      VCheckbox,
      VIcon,
      VList,
      VListTile,
      VListTileAction,
      VListTileContent,
      VListTileTitle,
      VMenu
    },

    directives: {
      ClickOutside
    },

    mixins: [Autocomplete, Input, Filterable, Generators],

    data () {
      return {
        content: {},
        hasFocused: false,
        inputValue: this.multiple && !this.value ? [] : this.value,
        isBooted: false,
        lastItem: 20,
        lazySearch: null,
        isActive: false
      }
    },

    props: {
      appendIcon: {
        type: String,
        default: 'arrow_drop_down'
      },
      auto: Boolean,
      autocomplete: Boolean,
      bottom: Boolean,
      chips: Boolean,
      close: Boolean,
      debounce: {
        type: Number,
        default: 200
      },
      items: {
        type: Array,
        default: () => []
      },
      itemText: {
        type: String,
        default: 'text'
      },
      itemValue: {
        type: String,
        default: 'value'
      },
      itemDisabled: {
        type: String,
        default: 'disabled'
      },
      maxHeight: {
        type: [Number, String],
        default: 300
      },
      minWidth: {
        type: [Boolean, Number, String],
        default: false
      },
      multiple: Boolean,
      multiLine: Boolean,
      offset: Boolean,
      searchInput: {
        default: null
      },
      singleLine: Boolean,
      top: Boolean,
      returnObject: Boolean,
      overflow: Boolean,
      segmented: Boolean,
      editable: Boolean
    },

    computed: {
      classes () {
        return {
          'input-group--text-field input-group--select': true,
          'input-group--auto': this.auto,
          'input-group--overflow': this.overflow,
          'input-group--segmented': this.segmented,
          'input-group--editable': this.editable,
          'input-group--autocomplete': this.isAutocomplete,
          'input-group--single-line': this.singleLine || this.isDropdown,
          'input-group--multi-line': this.multiLine,
          'input-group--chips': this.chips,
          'input-group--multiple': this.multiple
        }
      },
      computedContentClass () {
        const children = [
          'menu__content--select',
          this.auto ? 'menu__content--auto' : '',
          this.isDropdown ? 'menu__content--dropdown' : ''
        ]

        return children.join(' ')
      },
      filteredItems () {
        const items = this.isAutocomplete && this.searchValue
          ? this.filterSearch()
          : this.items

        return !this.auto ? items.slice(0, this.lastItem) : items
      },
      isAutocomplete () {
        return this.autocomplete || this.editable
      },
      isDirty () {
        return this.selectedItems.length
      },
      isDropdown () {
        return this.segmented || this.overflow || this.editable
      },
      searchValue: {
        get () {
          return this.lazySearch
        },
        set (val) {
          this.lazySearch = val

          // Do not emit input changes if not booted
          val !== this.searchInput &&
            this.isBooted &&
            this.$emit('update:searchInput', val)
        }
      },
      selectedItems () {
        if (this.inputValue === null ||
          typeof this.inputValue === 'undefined') return []

        return this.items.filter(i => {
          if (!this.multiple) {
            return this.getValue(i) === this.getValue(this.inputValue)
          } else {
            // Always return Boolean
            return this.inputValue.find((j) => {
              return this.getValue(j) === this.getValue(i)
            }) !== undefined
          }
        })
      }
    },

    watch: {
      inputValue (val) {
        // Async calls may not have data ready at boot
        if (!this.multiple &&
          this.isAutocomplete
        ) this.searchValue = this.getText(val)

        this.$emit('input', val)
      },
      value (val) {
        this.inputValue = val
        this.validate()

        if (this.isAutocomplete) {
          this.$nextTick(this.$refs.menu.updateDimensions)
        }
      },
      multiple (val) {
        this.inputValue = val ? [] : null
      },
      isActive (val) {
        this.isBooted = true
        this.lastItem += !val ? 20 : 0
      },
      isBooted () {
        this.$nextTick(() => {
          if (this.content) {
            this.content.addEventListener('scroll', this.onScroll, false)
          }
        })
      },
      searchValue (val) {
        // Search value could change from async data
        // don't open menu if not booted
        if (!this.isBooted) return

        if (!this.isActive) this.isActive = true
        this.$refs.menu.listIndex = null

        this.$nextTick(() => {
          this.$refs.menu.listIndex = val ? 0 : -1
        })
      }
    },

    mounted () {
      this.$vuetify.load(() => {
        if (this._isDestroyed) return

        this.content = this.$refs.menu.$refs.content

        // Set input text
        if (this.isAutocomplete &&
          !this.multiple &&
          this.isDirty
        ) {
          this.searchValue = this.getText(this.inputValue)
        }
      })
    },

    beforeDestroy () {
      if (this.isBooted) {
        if (this.content) {
          this.content.removeEventListener('scroll', this.onScroll, false)
        }
      }
    },

    methods: {
      blur (e) {
        this.$nextTick(() => {
          this.focused = false
          if (this.multiple) this.searchValue = null

          this.$emit('blur', this.inputValue)
        })
      },
      focus (e) {
        this.focused = true
        if (this.$refs.input && this.isAutocomplete) {
          this.multiple &&
            this.$refs.input.focus() ||
            this.$refs.input.setSelectionRange(
              0,
              (this.searchValue || '').toString().length
            )
        }

        this.$emit('focus', e)
      },
      genLabel () {
        const singleLine = this.singleLine || this.isDropdown
        if (singleLine && this.isDirty ||
          singleLine && this.focused && this.searchValue
        ) return null

        const data = {}

        if (this.id) data.attrs = { for: this.id }

        return this.$createElement('label', data, this.$slots.label || this.label)
      },
      getPropertyFromItem (item, field) {
        if (item !== Object(item)) return item

        const value = getObjectValueByPath(item, field)

        return typeof value === 'undefined' ? item : value
      },
      getText (item) {
        return this.getPropertyFromItem(item, this.itemText)
      },
      getValue (item) {
        return this.getPropertyFromItem(item, this.itemValue)
      },
      onAutocompleteFocus () {
        this.focus()
      },
      onScroll () {
        if (!this.isActive) {
          requestAnimationFrame(() => (this.content.scrollTop = 0))
        } else {
          const showMoreItems = (
            this.content.scrollHeight -
            (this.content.scrollTop +
            this.content.clientHeight)
          ) < 200

          if (showMoreItems) {
            this.lastItem += 20
          }
        }
      },
      selectItem (item) {
        if (!this.multiple) {
          this.inputValue = this.returnObject ? item : this.getValue(item)
        } else {
          const inputValue = this.inputValue.slice()
          const i = this.inputValue.findIndex((i) => {
            return this.getValue(i) === this.getValue(item)
          })

          i !== -1 && inputValue.splice(i, 1) || inputValue.push(item)
          this.inputValue = inputValue.map((i) => {
            return this.returnObject ? i : this.getValue(i)
          })
        }

        if ((this.isAutocomplete && this.multiple)) {
          this.$nextTick(() => {
            this.$refs.input &&
              this.$refs.input.focus()
          })
        }

        if (this.multiple) this.searchValue = null

        this.$emit('change', this.inputValue)
      }
    },

    render (h) {
      const listeners = Object.assign({}, this.$listeners)
      delete listeners.input

      return this.genInputGroup([
        this.genSelectionsAndSearch(),
        this.genMenu()
      ], {
        attrs: {
          tabindex: this.isAutocomplete ? -1 : 0
        },
        directives: [{
          name: 'click-outside',
          value: () => {
            this.isActive = false
            this.$emit('change', this.inputValue)
          }
        }],
        on: {
          ...listeners,
          focus: !this.isAutocomplete ? this.focus : this.onAutocompleteFocus,
          blur: !this.isAutocomplete ? this.blur : () => {},
          click: () => {
            if (!this.isActive) this.isActive = true
          },
          keydown: this.onKeyDown // Located in mixins/autocomplete.js
        }
      })
    }
  }
</script>

<!-- TODO: Style between input-group and the components inside it should be
           better compartmentalized -->
<style lang="stylus" src="../../stylus/components/_text-fields.styl"></style>
<style lang="stylus" src="../../stylus/components/_input-groups.styl"></style>
<style lang="stylus" src="../../stylus/components/_select.styl"></style>

<script>
  import { getObjectValueByPath } from '../../util/helpers'

  import VCard from '../VCard'
  import VCheckbox from '../VCheckbox'
  import VIcon from '../VIcon'
  import {
    VList,
    VListTile,
    VListTileAction,
    VListTileContent,
    VListTileTitle
  } from '../VList'
  import VMenu from '../VMenu'

  import Filterable from '../../mixins/filterable'
  import Input from '../../mixins/input'
  import Autocomplete from './mixins/autocomplete'
  import Generators from './mixins/generators'

  import ClickOutside from '../../directives/click-outside'

  export default {
    name: 'v-select',

    inheritAttrs: false,

    components: {
      VCard,
      VCheckbox,
      VIcon,
      VList,
      VListTile,
      VListTileAction,
      VListTileContent,
      VListTileTitle,
      VMenu
    },

    directives: {
      ClickOutside
    },

    mixins: [Autocomplete, Input, Filterable, Generators],

    data () {
      return {
        content: {},
        hasFocused: false,
        inputValue: this.multiple && !this.value ? [] : this.value,
        isBooted: false,
        lastItem: 20,
        lazySearch: null,
        isActive: false
      }
    },

    props: {
      appendIcon: {
        type: String,
        default: 'arrow_drop_down'
      },
      auto: Boolean,
      autocomplete: Boolean,
      bottom: Boolean,
      chips: Boolean,
      close: Boolean,
      debounce: {
        type: Number,
        default: 200
      },
      items: {
        type: Array,
        default: () => []
      },
      itemText: {
        type: String,
        default: 'text'
      },
      itemValue: {
        type: String,
        default: 'value'
      },
      itemDisabled: {
        type: String,
        default: 'disabled'
      },
      maxHeight: {
        type: [Number, String],
        default: 300
      },
      minWidth: {
        type: [Boolean, Number, String],
        default: false
      },
      multiple: Boolean,
      multiLine: Boolean,
      offset: Boolean,
      searchInput: {
        default: null
      },
      singleLine: Boolean,
      top: Boolean,
      returnObject: Boolean,
      overflow: Boolean,
      segmented: Boolean,
      editable: Boolean
    },

    computed: {
      classes () {
        return {
          'input-group--text-field input-group--select': true,
          'input-group--auto': this.auto,
          'input-group--overflow': this.overflow,
          'input-group--segmented': this.segmented,
          'input-group--editable': this.editable,
          'input-group--autocomplete': this.isAutocomplete,
          'input-group--single-line': this.singleLine || this.isDropdown,
          'input-group--multi-line': this.multiLine,
          'input-group--chips': this.chips,
          'input-group--multiple': this.multiple
        }
      },
      computedContentClass () {
        const children = [
          'menu__content--select',
          this.auto ? 'menu__content--auto' : '',
          this.isDropdown ? 'menu__content--dropdown' : ''
        ]

        return children.join(' ')
      },
      filteredItems () {
        const items = this.isAutocomplete && this.searchValue
          ? this.filterSearch()
          : this.items

        return !this.auto ? items.slice(0, this.lastItem) : items
      },
      isAutocomplete () {
        return this.autocomplete || this.editable
      },
      isDirty () {
        return this.selectedItems.length
      },
      isDropdown () {
        return this.segmented || this.overflow || this.editable
      },
      searchValue: {
        get () {
          return this.lazySearch
        },
        set (val) {
          this.lazySearch = val

          // Do not emit input changes if not booted
          val !== this.searchInput &&
            this.isBooted &&
            this.$emit('update:searchInput', val)
        }
      },
      selectedItems () {
        if (this.inputValue === null ||
          typeof this.inputValue === 'undefined') return []

        return this.items.filter(i => {
          if (!this.multiple) {
            return this.getValue(i) === this.getValue(this.inputValue)
          } else {
            // Always return Boolean
            return this.inputValue.find((j) => {
              return this.getValue(j) === this.getValue(i)
            }) !== undefined
          }
        })
      }
    },

    watch: {
      inputValue (val) {
        this.$emit('input', val)
      },
      value (val) {
        this.inputValue = val
        this.validate()

        if (this.isAutocomplete) {
          // Async calls may not have data ready at boot
          if (!this.multiple) this.searchValue = this.getText(val)

          this.$nextTick(this.$refs.menu.updateDimensions)
        }
      },
      multiple (val) {
        this.inputValue = val ? [] : null
      },
      isActive (val) {
        this.isBooted = true
        this.lastItem += !val ? 20 : 0
      },
      isBooted () {
        this.$nextTick(() => {
          if (this.content) {
            this.content.addEventListener('scroll', this.onScroll, false)
          }
        })
      },
      searchValue (val) {
        // Search value could change from async data
        // don't open menu if not booted
        if (!this.isBooted) return

        if (!this.isActive) this.isActive = true
        this.$refs.menu.listIndex = null

        this.$nextTick(() => {
          this.$refs.menu.listIndex = val ? 0 : -1
        })
      }
    },

    mounted () {
      this.$vuetify.load(() => {
        if (this._isDestroyed) return

        this.content = this.$refs.menu.$refs.content

        // Set input text
        if (this.isAutocomplete &&
          !this.multiple &&
          this.isDirty
        ) {
          this.searchValue = this.getText(this.inputValue)
        }
      })
    },

    beforeDestroy () {
      if (this.isBooted) {
        if (this.content) {
          this.content.removeEventListener('scroll', this.onScroll, false)
        }
      }
    },

    methods: {
      blur (e) {
        this.$nextTick(() => {
          this.focused = false
          if (this.multiple) this.searchValue = null

          this.$emit('blur', this.inputValue)
        })
      },
      focus (e) {
        this.focused = true
        if (this.$refs.input && this.isAutocomplete) {
          this.multiple &&
            this.$refs.input.focus() ||
            this.$refs.input.setSelectionRange(
              0,
              (this.searchValue || '').toString().length
            )
        }

        this.$emit('focus', e)
      },
      genLabel () {
        const singleLine = this.singleLine || this.isDropdown
        if (singleLine && this.isDirty ||
          singleLine && this.focused && this.searchValue
        ) return null

        const data = {}

        if (this.id) data.attrs = { for: this.id }

        return this.$createElement('label', data, this.$slots.label || this.label)
      },
      getPropertyFromItem (item, field) {
        if (item !== Object(item)) return item

        const value = getObjectValueByPath(item, field)

        return typeof value === 'undefined' ? item : value
      },
      getText (item) {
        return this.getPropertyFromItem(item, this.itemText)
      },
      getValue (item) {
        return this.getPropertyFromItem(item, this.itemValue)
      },
      onAutocompleteFocus () {
        this.focus()
      },
      onScroll () {
        if (!this.isActive) {
          requestAnimationFrame(() => (this.content.scrollTop = 0))
        } else {
          const showMoreItems = (
            this.content.scrollHeight -
            (this.content.scrollTop +
            this.content.clientHeight)
          ) < 200

          if (showMoreItems) {
            this.lastItem += 20
          }
        }
      },
      selectItem (item) {
        if (!this.multiple) {
          this.inputValue = this.returnObject ? item : this.getValue(item)
        } else {
          const inputValue = this.inputValue.slice()
          const i = this.inputValue.findIndex((i) => {
            return this.getValue(i) === this.getValue(item)
          })

          i !== -1 && inputValue.splice(i, 1) || inputValue.push(item)
          this.inputValue = inputValue.map((i) => {
            return this.returnObject ? i : this.getValue(i)
          })
        }

        if ((this.isAutocomplete && this.multiple)) {
          this.$nextTick(() => {
            this.$refs.input &&
              this.$refs.input.focus()
          })
        }

        if (this.multiple) this.searchValue = null

        this.$emit('change', this.inputValue)
      }
    },

    render (h) {
      const listeners = Object.assign({}, this.$listeners)
      delete listeners.input

      return this.genInputGroup([
        this.genSelectionsAndSearch(),
        this.genMenu()
      ], {
        attrs: {
          tabindex: this.isAutocomplete ? -1 : 0
        },
        directives: [{
          name: 'click-outside',
          value: () => {
            this.isActive = false
            this.$emit('change', this.inputValue)
          }
        }],
        on: {
          ...listeners,
          focus: !this.isAutocomplete ? this.focus : this.onAutocompleteFocus,
          blur: !this.isAutocomplete ? this.blur : () => {},
          click: () => {
            if (!this.isActive) this.isActive = true
          },
          keydown: this.onKeyDown // Located in mixins/autocomplete.js
        }
      })
    }
  }
</script>

<!-- TODO: Style between input-group and the components inside it should be
           better compartmentalized -->
<style lang="stylus" src="../../stylus/components/_text-fields.styl"></style>
<style lang="stylus" src="../../stylus/components/_input-groups.styl"></style>
<style lang="stylus" src="../../stylus/components/_select.styl"></style>


[added] animations and captions

[added] animations and captions

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/mtlong29/JBShop_Site.git/'


more tweaks to highlighted background color

<template>

          {{ getOptionLabel(option) }}
          <button v-if="multiple" @click="deselect(option)" type="button" class="close">
            ×
          </button>

      <input
              ref="search"
              :debounce="debounce"
              v-model="search"
              @keydown.delete="maybeDeleteValue"
              @keyup.esc="onEscape"
              @keydown.up.prevent="typeAheadUp"
              @keydown.down.prevent="typeAheadDown"
              @keyup.enter.prevent="typeAheadSelect"
              @blur="open = false"
              @focus="open = true"
              type="search"
              class="form-control"
              :placeholder="searchPlaceholder"
              :readonly="!searchable"
              :style="{ width: isValueEmpty ? '100%' : 'auto' }"
      >

      <slot name="spinner">

Loading...

      </slot>

          {{ getOptionLabel(option) }}

      <transition name="fade">

      </transition>
      <transition name="fade">

          <slot name="no-options">Sorry, no matching options.</slot>

      </transition>

</template>


Add link to license file

Add link to license file

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/b263/tchart.git/'


优化图片展示

优化图片展示

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/JETWLL/vue-swiper-ppt.git/'


🐛  close #87

🐛  close #87

Annoying ETA Limit warning after each page reload #87

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/digitalideastudio/timeragent.git/'


Create SetUpLearningFacilityForm

Create SetUpLearningFacilityForm

<template>

  <OnboardingStepBase
    :title="$tr('setUpFacilityTitle')"
    :description="$tr('setUpFacilityDescription')"
    @submit="handleSubmit"
  >
    <KRadioButton
      v-model="selected"
      :label="$tr('createFacilityLabel')"
      value="CREATE"
      class="radio-button"
    />
    <KRadioButton
      v-model="selected"
      :label="$tr('importFacilityLabel')"
      value="IMPORT"
      class="radio-button"
    />
  </OnboardingStepBase>

</template>

<script>

  import OnboardingStepBase from '../OnboardingStepBase';

  export default {
    name: 'SetUpLearningFacilityForm',
    components: {
      OnboardingStepBase,
    },

    data() {
      return {
        selected: '',
      };
    },
    $trs: {
      setUpFacilityTitle: {
        message: 'Set up learning facility for this full device',
        context: '',
      },
      setUpFacilityDescription: {
        message:
          'Learning facility represents the location where you are installing Kolibri, such as a school, training center, or a home',
        context: '',
      },
      createFacilityLabel: {
        message: 'Create a new learning facility',
        context: '',
      },
      importFacilityLabel: {
        message: 'Import all data from an existing learning facility',
        context: '',
      },
    },
  };

</script>

<style lang="scss" scoped>

  .radio-button {
    padding-bottom: 8px;
    font-size: 0.875em;
  }

</style>

error: pathspec 'kolibri/plugins/setup_wizard/assets/src/views/onboarding-forms/SetUpLearningFacilityForm.vue' did not match any file(s) known to git


update password

update password

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/CHCP/toolmaker-web.git/'


refactor(snackbar): updated route

refactor(snackbar): updated route

<template lang="pug">
  v-fade-transition(appear)
    v-app(v-cloak v-if="!examples")
      app-drawer
      app-toolbar
      app-view
      app-fab
      app-snackbar

    div(v-else)#app
      router-view
</template>

<script>
  import AppDrawer from '@/components/core/AppDrawer'
  import AppFab from '@/components/core/AppFab'
  import AppSnackbar from '@/components/core/AppSnackbar'
  import AppToolbar from '@/components/core/AppToolbar'
  import AppView from '@/components/core/AppView'
  import Meta from '@/mixins/meta'

  import {
    mapMutations,
    mapState
  } from 'vuex'

  export default {
    name: 'Documentation',

    components: {
      AppDrawer,
      AppFab,
      AppSnackbar,
      AppToolbar,
      AppView
    },

    mixins: [Meta],

    computed: {
      ...mapState({
        isFullscreen: state => state.isFullscreen
      }),
      examples () {
        return !!this.$route.params.example
      }
    },

    mounted () {
      this.getReleases()

      this.snackbar({
        color: 'default',
        close: true,
        id: 'vue-conf-sale1',
        text: 'Go To Store',
        msg: 'The _Vuetify Alpha Theme_ on **SALE** through 3/28',
        to: { name: 'store/Index' },
        timeout: 0
      })
    },

    methods: {
      ...mapMutations('app', {
        snackbar: 'SNACKBAR'
      }),
      getReleases () {
        this.$http.get('/releases/releases.json').then(({ data }) => {
          this.$store.commit('app/RELEASES', data)
        }).catch(err => {
          console.log(err)
        })
      }
    }
  }
</script>

<style lang="stylus">
  @import '~vuetify/src/stylus/settings/_variables.styl'

  [v-cloak]
    display: none

  .dashme
    border: 1px dashed black !important

  main
    section
      &:before
        content ''
        display block
        position relative
        width 0
        height 80px
        margin-top -80px

  .container.page
    max-width: 1185px !important
    padding-top: 75px
    padding-bottom: 0
    transition: .2s $transition.fast-out-slow-in

    section
      margin-bottom: 48px
</style>

<template lang="pug">
  v-fade-transition(appear)
    v-app(v-cloak v-if="!examples")
      app-drawer
      app-toolbar
      app-view
      app-fab
      app-snackbar

    div(v-else)#app
      router-view
</template>

<script>
  import AppDrawer from '@/components/core/AppDrawer'
  import AppFab from '@/components/core/AppFab'
  import AppSnackbar from '@/components/core/AppSnackbar'
  import AppToolbar from '@/components/core/AppToolbar'
  import AppView from '@/components/core/AppView'
  import Meta from '@/mixins/meta'

  import {
    mapMutations,
    mapState
  } from 'vuex'

  export default {
    name: 'Documentation',

    components: {
      AppDrawer,
      AppFab,
      AppSnackbar,
      AppToolbar,
      AppView
    },

    mixins: [Meta],

    computed: {
      ...mapState({
        isFullscreen: state => state.isFullscreen
      }),
      examples () {
        return !!this.$route.params.example
      }
    },

    mounted () {
      this.getReleases()

      this.snackbar({
        color: 'default',
        close: true,
        id: 'vue-conf-sale',
        text: 'Go To Store',
        msg: 'The _Vuetify Alpha Theme_ on **SALE** through 3/28',
        to: '/store/product/813199294506',
        timeout: 0
      })
    },

    methods: {
      ...mapMutations('app', {
        snackbar: 'SNACKBAR'
      }),
      getReleases () {
        this.$http.get('/releases/releases.json').then(({ data }) => {
          this.$store.commit('app/RELEASES', data)
        }).catch(err => {
          console.log(err)
        })
      }
    }
  }
</script>

<style lang="stylus">
  @import '~vuetify/src/stylus/settings/_variables.styl'

  [v-cloak]
    display: none

  .dashme
    border: 1px dashed black !important

  main
    section
      &:before
        content ''
        display block
        position relative
        width 0
        height 80px
        margin-top -80px

  .container.page
    max-width: 1185px !important
    padding-top: 75px
    padding-bottom: 0
    transition: .2s $transition.fast-out-slow-in

    section
      margin-bottom: 48px
</style>


port compass to vue component

port compass to vue component

<template lang='jade'>
  .compass
    .arrow
</template>

<style lang='stylus'>
  @import "~styles/main"
  @import "~styles/flex"

  .compass
    @extend .blockShadow, .center
    width 13em
    height @width
    background #ddd
    position relative
    border-radius 50%
    .arrow
      width 80%
      height 80%
      background rgba(255,255,255,.75)
      border-radius 0 50% 50% 50%
      transform rotate(45deg)
</style>

error: pathspec 'src/Rascada/src/components/compass.vue' did not match any file(s) known to git


Fix Tabs Position Problem #260

Fix Tabs Position Problem #260

<template>

            <slot></slot>
            <slot name="empty" v-if="!tabs || !tabs.length"></slot>

                    {{ tab.title }}

                <slot name="tabs"></slot>

            <slot></slot>
            <slot name="empty" v-if="!tabs || !tabs.length"></slot>

</template>


Fixed issue where you couldnt save group names

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/codeweavers/Consign.git/'


Improve index loading effect

Improve index loading effect


Fix detail temperature chart and status sorting again

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/modum-io/web.git/'


Update channel total resources.

Update channel total resources.

<template>

  <immersive-full-screen
    :backPageText="$tr('selectContent')"
    :backPageLink="goBackLink"
  >
    <subpage-container withSideMargin>
      <task-progress
        v-if="showUpdateProgressBar"
        type="UPDATING_CHANNEL"
        status="QUEUED"
        :percentage="0"
        :showButtons="false"
        :cancellable="false"
        id="updatingchannel"
      />
      <task-progress
        v-else-if="taskInProgress"
        type="DOWNLOADING_CHANNEL_CONTENTS"
        v-bind="firstTask"
        :showButtons="false"
        :cancellable="false"
      />

        <ui-alert
          v-if="newVersionAvailable"
          type="info"
          :removeIcon="true"
          :dismissible="false"
        >
          {{ $tr('newVersionAvailableNotification') }}
        </ui-alert>

            {{ $tr('newVersionAvailable', { version: channel.version }) }}

          <k-button
            :text="$tr('update')"
            :primary="true"
            name="update"
            @click="updateChannelMetadata()"
          />

        {{ $tr('channelUpToDate') }}

      <channel-contents-summary
        :channel="channel"
        :channelOnDevice="channelOnDevice"
      />

      <ui-alert
        v-if="wizardStatus!==''"
        type="error"
        :dismissible="false"
      >
        {{ $tr('problemFetchingChannel') }}
      </ui-alert>

      <template v-if="onDeviceInfoIsReady">
        <ui-alert
          v-if="contentTransferError"
          type="error"
          :dismissible="false"
        >
          {{ $tr('problemTransferringContents') }}
        </ui-alert>

        <selected-resources-size
          :mode="mode"
          :fileSize="nodeCounts.fileSize"
          :resourceCount="nodeCounts.resources"
          :spaceOnDrive="availableSpace"
          @clickconfirm="startTransferringContent()"
        />

        <content-tree-viewer />
      </template>
    </subpage-container>
  </immersive-full-screen>

</template>


add suggested labels

add suggested labels

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/aligerum/keyring.git/'


adding ability to remove repos, #33

adding ability to remove repos, #33

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/almibe/library-weasel-ghissue-view.git/'


- add NoSssNoWorker mode

- add NoSssNoWorker mode

<style src="./annotationLayer.css"></style>
<script>

	import componentFactory from './componentFactory.js'

	if ( process.env.VUE_ENV !== 'server' ) {

		var pdfjsWrapper = require('./pdfjsWrapper.js').default;
		var PDFJS = require('pdfjs-dist/build/pdf.js');
		var component = componentFactory(pdfjsWrapper(PDFJS));
	} else {

		var component = componentFactory({});
	}

	export default component;
</script>

error: pathspec 'src/vuePdfNoSssNoWorker.vue' did not match any file(s) known to git


Wrapping strings in user-remove-modal to interpolate variables while rendering HTML

<template>

  <core-modal
    :title="$tr('modalTitle')"
    :has-error="false"
    @cancel="close"
  >

        <icon-button
          :text="$tr('cancel')"
          class="undo-btn"
          @click="close"
        />

        <icon-button
          :text="$tr('remove')"
          class="confirm-btn"
          :primary="true"
          @click="userRemove"
        />

  </core-modal>

</template>

<template>

  <core-modal
    :title="$tr('modalTitle')"
    :has-error="false"
    @cancel="close"
  >

      {{$trHtml('deleteConfirmation', {username, classname})}}

{{$tr('still')}} {{$tr('users')}}.

        <icon-button
          :text="$tr('cancel')"
          class="undo-btn"
          @click="close"
        />

        <icon-button
          :text="$tr('remove')"
          class="confirm-btn"
          :primary="true"
          @click="userRemove"
        />

  </core-modal>

</template>


Add a shadow behind the Nav component

Add a shadow behind the Nav component

This helps make the navigation's active indicator stand out against the
interface.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/astronote/astronote-docker.git/'


Update ProxiesTcp.vue

Update ProxiesTcp.vue

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/KunTengRom/xfrps.git/'


added shipment

added shipment


Reworked navigation menu and fixed bug with v-if to v-show

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/LokeCarlsson/lokecarlsson.git/'


add title back in

add title back in

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/shadowlion/shadowlion.github.io.git/'


Force 10 questions for official exam

Force 10 questions for official exam

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/JimmehCai/VTIC.git/'


Fix login attempt thing

Fix login attempt thing

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/JonathanTroyer/OC-Summer-2017-Table-Web.git/'


add code example

add code example

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/praneetloke/vue-material.git/'


Fix background color for person tile

Fix background color for person tile

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/stefanjudis/stefan-judis-website.git/'


Fix blockquotes

Fix blockquotes


Detach request field.

Detach request field.

<template>

                    <button class="button is-small is-active"
                            @click="setCurrentRequest(request), scheduleRequest(true)"
                            v-text="request.method"
                    ></button>

</template>

error: pathspec 'resources/assets/js/request.vue' did not match any file(s) known to git


Lightened the .fill colour to add a 'tail'  effect.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/ProjectTimato/timato-client-web.git/'


添加身份证上传组件

添加身份证上传组件

<template>

loading

上传身份证正面

相册

拍照

上传影像

请确保您的二代身份证处于有效期内

点击上传

身份证正面照片

              <form v-show="positive" enctype="multipart/form-data" style="opacity: 0;"><input id="btn1" style="width:100%;height:100%;position:absolute;top:0;left:0;" type="file" multiple="multiple" accept="image/*"></form>

点击上传

身份证反面照片

              <input style="display:none" ref="input2" type="file" accept="image" capture="camera">

          下一步

</template>

error: pathspec 'src/components/idCardCheck.vue' did not match any file(s) known to git


add input phone and email

add input phone and email

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/lucaslimax/curriculo_gratis.git/'


FIx the build

FIx the build

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/dmitrykurmanov/surveyjs.git/'


Listen to focus and blur events for tooltips


Fix error where same request could be executed twice

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/barprive/barprive.com.git/'


Improve search result styling on smaller devices

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/mplusmuseum/mplusmuseum-stories.git/'


Added checks for ttl inputs, display for inputs converted to seconds and disabled functions associated to buttons when button is disbaled.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/04n0/goldfish.git/'


Fix bug

Fix bug


Added complete sidebar and main__hero

Added complete sidebar and main__hero

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/eoinmurphy/field-guide.git/'


replace Firestore with Room

replace Firestore with Room

<template>

    <v-card>
      <v-list two-line subheader>
        <v-subheader>Threads</v-subheader>
        <v-list-tile v-for="(person, index) in Persons" :key="index">
          <v-list-tile-content>
            <v-list-tile-title>{{person.name}}</v-list-tile-title>
          </v-list-tile-content>
          <v-list-tile-action>
            <v-icon color="black" @click="remove(person['.key'])">delete</v-icon>
          </v-list-tile-action>
        </v-list-tile>
      </v-list>
      <v-container>
      <v-text-field label="Person Name" v-model="Person.name" @keyup.enter="add()"></v-text-field>
      <v-btn @click="add()">Add Person</v-btn>
      </v-container>
    </v-card>

        <v-progress-circular :size="200" :width="7" indeterminate color="amber"></v-progress-circular>

</template>

error: pathspec 'src/components/Room.vue' did not match any file(s) known to git


Revert "[NavItem] Change the component type to 'button' if 'href' or 'to' props are not defined"

This reverts commit 15180110d301a071c6439d8e299a278d94766026.

<template>
    <li class="nav-item" @click="onclick">
        <b-link :class="classObject" :to="to" :href="href" :exact="exact">
            <slot></slot>
        </b-link>
    </li>
</template>

<script>
    import bLink from './link.vue';

    export default {
        components: {bLink},
        computed: {
            classObject() {
                return [
                    'nav-link',
                    this.active ? 'active' : '',
                    this.disabled ? 'disabled' : ''
                ];
            }
        },
        props: {
            active: {
                type: Boolean,
                default: false
            },
            disabled: {
                type: Boolean,
                default: false
            },
            to: {
                type: [String, Object]
            },
            href: {
                type: String
            },
            exact: {
                type: Boolean
            }
        },
        methods: {
            onclick(e) {
                // Hide all drop-downs including navbar-toggle
                this.$root.$emit('shown::dropdown', this);
                this.$emit('click', e);
            }
        }
    };
</script>

<template>
    <li class="nav-item" @click="onclick">
        <b-link :is="itemType" :class="classObject" :to="to" :href="href" :exact="exact">
            <slot></slot>
        </b-link>
    </li>
</template>

<script>
    import bLink from './link.vue';

    export default {
        components: {bLink},
        computed: {
            itemType() {
                return (this.href || this.to) ? 'b-link' : 'button';
            },
            classObject() {
                return [
                    'nav-link',
                    this.active ? 'active' : '',
                    this.disabled ? 'disabled' : ''
                ];
            }
        },
        props: {
            active: {
                type: Boolean,
                default: false
            },
            disabled: {
                type: Boolean,
                default: false
            },
            to: {
                type: [String, Object]
            },
            href: {
                type: String
            },
            exact: {
                type: Boolean
            }
        },
        methods: {
            onclick(e) {
                // Hide all drop-downs including navbar-toggle
                this.$root.$emit('shown::dropdown', this);
                this.$emit('click', e);
            }
        }
    };
</script>


Fix route

Fix route


Update index.vue

Update index.vue


Updated portfolio with new projects

Updated portfolio with new projects


[NOSTORY] Add support for multi-tier Twitch subscriptions

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/WaddlingCo/streamperk-frontend.git/'


模态框组件

模态框组件

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/cheungzh/vueComponent.git/'


chore: Focus helper test page

chore: Focus helper test page

<template>

Focus helper test

    <q-list>
      <q-item clickable v-ripple>
        <q-item-section avatar>
          <q-icon color="primary" name="bluetooth" />
        </q-item-section>
        <q-item-section>List item</q-item-section>
      </q-item>
    </q-list>

    <q-list dark class="bg-black">
      <q-item clickable v-ripple>
        <q-item-section avatar>
          <q-icon color="primary" name="bluetooth" />
        </q-item-section>
        <q-item-section>List item</q-item-section>
      </q-item>
    </q-list>

</template>

error: pathspec 'dev/components/web-tests/hover.vue' did not match any file(s) known to git


Stub NewChannelVersionBanner

Stub NewChannelVersionBanner

<template>

  <div>
    {{ $tr('versionAvailable', { version }) }}
    <KButton :text="$tr('seeWhatsNewAction')" />
  </div>

</template>

<script>

  export default {
    name: 'NewChannelVersionBanner',
    components: {},
    props: {
      version: {
        type: Number,
      },
    },
    $trs: {
      versionAvailable: 'Version {version} is available!',
      seeWhatsNewAction: `See what's new`,
    },
  };

</script>

<style lang="scss" scoped></style>

error: pathspec 'kolibri/plugins/device/assets/src/views/SelectContentPage/NewChannelVersionBanner.vue' did not match any file(s) known to git


Updated mounts page to new bulma and axios versions


mini cart

mini cart

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/NewDadaFE/newdada-daojia.git/'


fixed bugs

fixed bugs

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/junyug/cms.git/'