A lightweight Vue.js UI library with a simple API, inspired by Google's Material Design.

Overview

Keen UI

Keen UI is a Vue.js UI library with a simple API, inspired by Google's Material Design.

Keen UI is not a CSS framework. Therefore, it doesn't include styles for a grid system, typography, etc. Instead, the focus is on interactive components that require Javascript. You should be able to use Keen UI with any page layout, structure, or CSS framework.

Documentation and demo

http://josephuspaye.github.io/Keen-UI/

Requirements

Optional

Browser support

IE 10+ (due to Flexbox support).

Installation

npm install keen-ui --save

Usage

CSS Reset

Before using Keen UI, ensure that the following CSS resets are applied to your site.

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    font-size: 100%;
}

You can add the reset to your stylesheet (before other styles). If you are using a CSS framework, check to see if the framework already includes a reset (most CSS frameworks do). The root font size set on <html> can be customized to globally resize the components.

ES6

Use as a Vue plugin (globally registers all components):

import Vue from 'vue';
import KeenUI from 'keen-ui';
import 'keen-ui/dist/keen-ui.css';

Vue.use(KeenUI);

new Vue({
    components: {
        // all Keen UI components already registered
    }
});

Use individual components:

import Vue from 'vue';
import { UiAlert, UiButton } from 'keen-ui';

new Vue({
    components: {
        UiAlert,
        UiButton
    }
});

Script tag

First, add a stylesheet link to the Keen UI CSS file in dist/keen-ui.min.css. Then, add a script tag pointing to dist/keen-ui.min.js after adding Vue.

If Keen UI detects the global Vue object, all components will be registered automatically. The components will also be made available globally via window.KeenUI.

Example:

<!-- Place this in <head> -->
<link rel="stylesheet" href="path/to/keen-ui.min.css">

<!-- Place this in <body> -->
<div id="app">
    <ui-button>Hello world!</ui-button>
</div>

<script src="path/to/vue.js"></script>
<script src="path/to/keen-ui.min.js"></script>
<script>
    new Vue({
        el: '#app',
        components: {
            // all Keen UI components already registered
        }
    });
</script>

Customization

You can customize many aspects of Keen UI, including theme colors, component sizes, default props, and more.

See Customization.

Using standalone components

Each component is built into a standalone file with the necessary CSS included. You can use these individual standalone components without importing the rest of the library. The standalone components are located in the lib/ folder.

NOTE: Standalone component files each contain their own dependencies, and many contain overlapping dependencies. As a result, using multiple standalone files may increase the size of your bundle due to duplicate code.

import Vue from 'vue';
import 'keen-ui/src/bootstrap'; // Required when using standalone components, should be imported only once in your project
import UiButton from 'keen-ui/lib/UiButton';

new Vue({
    components: {
        UiButton
    }
});

Licence

Keen UI is open source and released under the MIT Licence.

Copyright (c) 2019 Josephus Paye II.

PS: Made something cool with Keen UI? I would love to know! Tweet to me at @JosephusPaye.

Comments
  • Keen UI based on vue@2.0x

    Keen UI based on [email protected]

    Just finished about all components and pass the docs as test...

    Notice that code style hasn't been justify so this pr couldn't been merged for now.. I will commit some changes soon..

    Delete the RadioGroup and make Radio replace it... 3-level two way prop is too complicated to apply for vue2.0.

    And many other changes... Meanwhile, I create a work-flow repo for keen-ui's ssr dev..

    checkout a new branch first maybe?

    opened by LucasIcarus 64
  • UiSelect @query-changed=

    UiSelect @query-changed="brandQueryChanged | debounce 500" not work

     <ui-select
                      label="XXX" name="select-cat-2" 
                      show-search 
                      @query-changed="brandQueryChanged | debounce 500"
                      :loading="loading.selectBrands" :options-loaded="loading.brandsOptionsLoaded"
                      :options="brandsOptionsSelect" :value.sync="goodFm.brandId"
              ></ui-select>
    

    bad,not work

     <ui-select
                      label="XXX" name="select-cat-2" 
                      show-search 
                      @query-changed="brandQueryChanged"
                      :loading="loading.selectBrands" :options-loaded="loading.brandsOptionsLoaded"
                      :options="brandsOptionsSelect" :value.sync="goodFm.brandId"
              ></ui-select>
    

    it's ok.

    why?

    question 
    opened by xiaolongyuan 19
  • the date&time picker is important

    the date&time picker is important

    keen-ui is so beautiful and useful; i have found the thing like it for a long time;

    I do not find a datetime component in keen-ui; and do you have a plan to support it???

    and the rich text editor like Draft.js is important too, i think

    request implemented 
    opened by kuerme 19
  • Porting to Vue 2 (Help?)

    Porting to Vue 2 (Help?)

    I'm trying to upgrade Keen-UI to support vue 2 (whose RC1 came out a few days ago). I got everything running in a simple test harness (https://github.com/thehumaneffort/keen-ui/tree/next), and fixed a few trivial errors, but doing so did not cause anything to really work. I'm unfamiliar with Vue (and Vue 2), so it's probably due to some lack of understanding. I'd love to help out and get everything moved over, but I'm going to need a bit of help understanding things. Does anybody have time to hold my hand through the first stages?

    question 
    opened by dts 17
  • UiModel issue : close button disabled

    UiModel issue : close button disabled

        <div class="ui-modal-header">
                        <slot name="header">
                            <h1 v-text="header" class="ui-modal-header-text"></h1>
                        </slot>
    
                        <ui-icon-button
                            type="clear" icon="&#xE5CD" class="ui-modal-close-button" @click="close"
                            :disabled="!dismissible" v-if="showCloseButton" v-el:close-button
                        ></ui-icon-button>
                    </div>
    

    :disabled="!dismissible"

    question 
    opened by xiaolongyuan 16
  • Port from stylus to SASS

    Port from stylus to SASS

    This seems to be the most complete UI Library for VueJS, but I need to be able to style it, at the moment this doesn't seem to be possible without editing the vanilla CSS file or overriding the styling.

    What would it be the easiest way of porting this to SASS (without overriding all .vue files :p)? For example, if I import a component using ES6, would I be able to add my SCSS/CSS file externally or it would possibly conflict with inline CSS added by WebPack?

    import Vue from 'vue';
    import { UiAlert, UiButton } from 'keen-ui';
    
    new Vue({
        components: {
            UiAlert,
            UiButton
        }
    });
    

    Also, sometimes I have components in different sections of the website that have different design. Is it possible to add a custom class without targeting an external component wrapper? If not, it would be nice to have some kind of :custom-class props, to target at least the main container.

    opened by microcipcip 13
  • Radio Group Missing Value Prop

    Radio Group Missing Value Prop

    When running the Basic Radio Group component from the examples page, I'm getting the following error:

    vue.runtime.esm.js:427 [Vue warn]: Missing required prop: "value"
    
    found in
    
    ---> <UiRadio> at C:\code\packages\keen-ui\src\UiRadio.vue
           <UiRadioGroup> at C:\code\packages\keen-ui\src\UiRadioGroup.vue
    
    opened by curly33 11
  • UiSelect still doesn't work with preselect

    UiSelect still doesn't work with preselect

    I think you still have some issues with the <ui-select> default or value. I have associated a object with the same value, but it doesn't preselect it, nothing is selected, just like 0.8.8

    opened by EmilMoe 10
  • UI-Select value field

    UI-Select value field

    Please, add value field in options for write to (:value). Its so unnaturally every time making temporary variable, lookup value from options to this variable, and then watch for changes for get new value only.

    example Options for list = [{ text: 'variant1', value:'id1' }, { text: 'variant2', value:'id2' }] data model = { .... 'selectvalue': 'id1' }

    question implemented 
    opened by gendalf 10
  • Checkbox value

    Checkbox value "on"

    I noticed that the submitted value for a checked checkbox is "on", while the synced value of the model is true. Is there a way to have the checkbox submit true instead?

    question implemented 
    opened by lowerends 10
  • UiAutocomplete

    UiAutocomplete

    I'm not sure where you define the value prop? But it's returning the text value. I can't see how to return the value property which contains my id?

    Ideally I would like to:

    • :text.sync=""
    • - to sync the text
    • :value.sync=""
    • - to sync the value
    • :object.sync=""
    • - to sync the whole object
    opened by EmilMoe 10
  • Build with vite (and rollup)

    Build with vite (and rollup)

    I tried to experiment a little with building with vite so we can get rid of webpack. There was a bit of complication with the lib build as vite does not allow multiple entries but I have found an elegant way of doing it.

    Please take a look once you have some time and let me know what you think.

    opened by kilobyte2007 5
  • Dart Sass deprecation warnings

    Dart Sass deprecation warnings

    We just migrated from node-sass (which is deprecated) to the recommended sass package and encountered we cannot fix these warnings in our Vue project as they originate from keen-ui components.

    This is just an example but there are lots of them:

    DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.
    
    Recommendation: math.div(strip-unit($value), strip-unit($base))
    
    More info and automated migrator: https://sass-lang.com/d/slash-div
    
       ╷
    57 │         $value: strip-unit($value) / strip-unit($base) * 1rem;
       │                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       ╵
        node_modules/keen-ui/src/styles/util.scss 57:17       to-rem()
        node_modules/keen-ui/src/styles/util.scss 31:17       rem()
        node_modules/keen-ui/src/styles/variables.scss 33:39  @import
        node_modules/keen-ui/src/styles/imports.scss 2:9      @import
        stdin 155:9                                           root stylesheet
    
    opened by desko27 1
  • Vue.js 3.0 and further plans

    Vue.js 3.0 and further plans

    Hey contributors and maintainers, Now that Vue.js 3 is released and stable, are there plans to upgrade Keen UI to support Vue.js 3? I know that the plan was initially to move the documentation to Storybook but I see that stalled, what about the other plans for Keen 2.0, is there any development going on?

    I think I would be open to contributing to help migrate to Vue.js 3 and to fixing bugs/improving things. I am not sure about the storybook migration as I didn't fully understand the benefit of migrating the docs there, could you please give some insight into how you see this?

    I really love the library and would really love to see it grow and develop further. Please share your thoughts on this. Thanks!

    opened by kilobyte2007 8
  • autocomplete on custom case

    autocomplete on custom case

    <ui-autocomplete
      :keys="{ label: 'name', value: 'id' }"
      :suggestions="teachers" v-model="teacherID"
    >
    

    if id equal to number 0 then the selection return an object ( teacher ), not id

    OwO

    [Vue warn]: Invalid prop: type check failed for prop "value". Expected String, Number, got Object 
    
    opened by PyroHo 0
  • UiSelect selected template

    UiSelect selected template

    Am I missing something in the documentation or are we lacking an option to set a template for the selected item like there's a template for every item in the list?

    opened by EmilMoe 3
Releases(v1.4.0)
  • v1.4.0(Aug 6, 2022)

    v1.4.0

    Potentially Breaking Change: Upgraded from node-sass to sass, and fixed warnings about / division (see #529). node-sass is now deprecated, and sass no longer uses the / operator for division.

    If you import Keen UI components from the source folder (e.g. import UiButton from 'keen-ui/src/UiButton.vue), this release might break your project due to the switch from node-sass to sass. There are a few options to fix this:

    1. If you don't need Sass customisation, import from the compiled components instead of the source components. The compiled components come with plain CSS instead of Sass. Here's an example of changing from a source component import to a compiled component import:

      -import UiButton from 'keen-ui/src/UiButton.vue'
      +import { UiButton } from 'keen-ui'
      
    2. Upgrade to sass in your project, and replace all usage of / for division in your Sass files with the new math.div() function.

    3. Pin your version of Keen UI to the previous release (1.3.2) to avoid getting the new version with the breaking change until you're ready to upgrade to sass.

    UiPopover

    • Add new props closeOnEsc and closeOnExternalClick for more control over when the popover closes. See #536.

    View all changes: https://github.com/JosephusPaye/Keen-UI/compare/v1.3.2...v1.4.0

    Source code(tar.gz)
    Source code(zip)
  • v1.3.2(Dec 31, 2021)

    v1.3.2

    Sass customisation

    • Add the ability to define a custom rem() function to override Keen UI's default. See #520.

    UiCalendar

    • Fix the prev/next month buttons being incorrectly disabled when yearRange is a list of years in descending order. See #491.

    UiCollapsible

    • Hide collapsible content overflow only during the open/close animation. See #519.

    UiModal

    • Close on backdrop click only if the backdrop also got a mousedown event. This avoids closing the modal when selecting text and releasing the mouse with the cursor over the backdrop. See #497.
    • Added a new prop beforeClose that can be used to dynamically allow or reject closing of the modal on backdrop clicks. See the docs for details.

    UiPopover

    • Support rendering inside a Shadow DOM. See #518.

    UiSwitch

    • Fix UiSwitch thumb overlapping open modals in certain cases due to z-index. See #514.

    UiTextbox

    • Add autocapitalize prop. See #501.
    • Fix a value of zero being treated as falsy in UiTextbox value length calculation. Previously, when the value was the number 0, the textbox would be considered empty. See #516.

    View all changes: https://github.com/JosephusPaye/Keen-UI/compare/v1.3.1...v1.3.2

    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Sep 11, 2020)

    v1.3.1

    UiFileupload

    • Potentially Breaking: Update UiFileupload's clear() method to reset the placeholder. See #510.

    View all changes: https://github.com/JosephusPaye/Keen-UI/compare/v1.3.0...v1.3.1

    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Mar 8, 2020)

    UiSlider

    • Potentially Breaking: Update slider to work when initially-hidden, e.g. in a tab or modal. The refreshSize() method is no longer needed and has been removed. See #489.

    UiPopover

    • Change Tippy's hideOnClick prop to true to close popover on external click

    See all changes: https://github.com/JosephusPaye/Keen-UI/compare/v1.2.1...v1.3.0

    Source code(tar.gz)
    Source code(zip)
  • v1.2.1(Nov 19, 2019)

    UiSelectOption

    • Allow a Number as option. See #472.

    UiCheckbox, UiRadio, UiRadioGroup

    • Change selected check to use strict equals (===) instead of loose equal (==). This allows an empty string '' to be used as the radio or checkbox's value. See #465.

    UiCheckbox

    • Apply border-radius to checkmark background. Also switch background from ::before pseudo element to an actual element: .ui-checkbox__checkmark-background. This avoids visual artifacts that appear when applying border-radius to a pseudo element. See #471.

    UiDatepicker

    • Add new prop defaultView to set the default datepicker view: date or year. See #454.

    UiTextbox

    • Add new prop minlength to set the minlength attribute on the textbox input or textarea.
    • Allow a Number for step prop. See #460.
    • Ensure floating label doesn't overflow parent when scaling up. See [#447](https://github.com/JosephusPaye/Keen-UI/issues/

    See all changes: https://github.com/JosephusPaye/Keen-UI/compare/v1.2.0...v1.2.1

    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Jul 9, 2019)

    UiCalendar (new)

    • Added a new calendar component for showing calendars. Using a scoped slot, you can specify a custom template that will be used to render each date in the calendar. This could be used to add things like events to the calendar.

    UiDatepicker

    • Breaking Remove OK and Cancel button in modal picker. Now, like the popover picker, dismissing the picker without a selection is "Cancel" and selecting a date is "OK".
    • Rewrite internal calendar for better semantics and accessibility.
    • Removed month switch animation. This unnecessarily slows down the user when switching through many months.
    • Add new prop appendDropdownToBody to append the dropdown to the document body.
    • Add new prop dropdownZIndex to customize the dropdown z-index.
    • Fix implementation to respect yearRange prop. See #449.
    • Keep dropdown open on scroll

    UiModal

    • Add new size: auto, to make the modal's width grow to fit its content.

    UiPopover

    • Upgrade to Tippy.js 4.
    • Breaking: Remove offset prop, as it's not recommended for interactive poppers (which is what UiPopover is).
    • Add new animation: scale.
    • Add new prop zIndex to customize the z-index of the popover.

    UiSelect

    • Keep dropdown open on scroll

    UiTooltip

    • Upgrade to Tippy.js 4.
    • Add new animation: scale.
    • Add new prop zIndex to customize the z-index of the tooltip.
    Source code(tar.gz)
    Source code(zip)
  • v1.1.2(Feb 17, 2019)

  • v1.1.1(Feb 2, 2019)

    UiDatepicker

    Fix month transition when current date is not in target month. See #434.

    https://github.com/JosephusPaye/Keen-UI/compare/v1.1.0...v1.1.1

    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(Feb 2, 2019)

  • v1.1.0(Jan 28, 2019)

    There are breaking changes in this release. Read through and update your usage where required. The upgrade should take less than an hour. If you find any changes not documented here, please file a new issue.

    Note: currently Keen UI doesn't follow semver, and there may be breaking changes in minor x.x releases. To avoid these breaking changes, use the ~ version constraint to lock to a specific minor version, restricting updates to patch releases only. Example, in package.json:

    -"keen-ui": "^1.1.0",
    +"keen-ui": "~1.0.0",
    

    General

    UiAlert

    • Add new prop disableAnimation to disable the show/hide animation.

    UiAutocomplete

    • Add new method focus() to focus programmatically.
    • Add new prop sort for a custom sort function.
    • Pass default filter function as third parameter to filter prop.

    UiButton

    • Breaking: Accepted values for prop dropdownPosition have changed to match Tippy.js. See docs for new values.
    • Fix ripple position starting off when directly clicking an inner element. Fixes #220.
    • Add tooltip, tooltipPosition and openTooltipOn props.
    • Make focus ring transition to fill the button. Previously, it stopped halfway. Fixes #205.
    • Remove UiProgressCircular from the DOM when loading is false. Previously, it was hidden with display: none.
    • Remove pointer cursor, to match default HTML buttons. If you want the hand pointer on buttons by default, add:
      .ui-button {
          cursor: pointer;
      }
      
    • For secondary buttons, use button color as background for hover and focus.
    • Add new prop href. Setting this prop will render an anchor tag.

    UiCollapsible

    • Breaking: Remove no longer needed refreshHeight() method.
    • Refactor toggle transition to be smoother and less janky.

    UiConfirm

    • Breaking: Default transition scale is now scale-down. If you didn't use size="scale", this will not affect you.
    • Add new prop size.
    • Document reveal and hide events.

    UiDatepicker

    • Breaking: The month of the submitted value now starts at 1, instead of JavaScript's default which starts at 0. So, January is now 1 instead of 0, February is 2, etc.
    • Allow a string for value prop. See #45.
    • Add new prop startOfWeek to change the starting day of the week in the calendar shown.
    • Add new method clear to clear the selected date.

    UiFab

    • Breaking: tooltipPosition prop accepted values have changed to match Tippy.js. See docs for new values.

    UiFileupload

    • Add new method openPicker() to open the file picker programmatically.
    • Add new method clear() to clear the selected file, if any.

    UiIconButton

    • Breaking: Accepted values for prop dropdownPosition have changed to match Tippy.js. See docs for new values.
    • Breaking: tooltipPosition prop accepted values have changed to match Tippy.js. See docs for new values.
    • Remove UiProgressCircular from the DOM when loading is false. Previously, it was hidden with display: none.
    • Remove pointer cursor, to match default HTML buttons.
    • For secondary icon buttons, use button color as background for hover and focus.
    • Add new size: mini.
    • Add href prop. Setting this prop will render an anchor tag.

    UiMenu and UiMenuOption

    • Add new props href and target for menu options. Setting the href prop will render the menu option as an anchor tag.
    • Fix focus containment when tabbing backwards.

    UiModal

    • Breaking: Default transition scale is now scale-down. If you didn't use size="scale", this will not affect you.
    • Add new props alignTop and alignTopMargin, for creating modals that are vertically aligned to the top of the viewport.
    • Add new size fullscreen.
    • Add new transition scale-up.

    UiPopover

    • Breaking: Switch positioning library to Tippy.js, which uses Popper.js.
    • Breaking: trigger prop is now a DOM Element, VueComponent instance, or selector string. If no trigger is provided or the selector doesn't match any element, the popover's immediate parent element is used as the trigger.
      <!-- Instead of: ref + trigger -->
      <button ref="button">My Button</button>
      <ui-popover trigger="button">My Popover</ui-popover>
      
      <!-- Use: nested <ui-popover> in target element -->
      <button>
          My Button <ui-popover>My Popover</ui-popover>
      </button>
      
    • Breaking: Rename dropdownPosition prop to position, to match UiTooltip. Accepted values have changed to match Tippy.js. See docs for new values.
    • Remove prop removeOnClose, no longer needed. All popovers are now removed from the DOM on close.
    • Add new prop animation to choose animation style.
    • Add new prop closeOnScroll to close an open popover on external scroll.
    • Add new prop appendToBody, to choose between appending popover to document.body or the local parent element.
    • Add new method isOpen(), used to determine if the popover is open.
    • Add new events reveal and hide.
    • Add new prop disabled, to disable the popover.
    • Add new prop offset, to change the popover's offset from the trigger element.

    UiProgressLinear

    • Rewrite animation to use transform only (GPU accelerated), remove ::before/::after pseudo elements used for previous animation.

    UiRippleInk

    • Breaking: trigger prop is now a DOM Element instance or selector string. If no trigger is provided or the selector doesn't match any element, the ripple's immediate parent element is used as the trigger.
    • Fix incorrect ripple position when clicking directly on trigger's inner elements. Fixes #220.

    UiSelect

    • Add new method clearSelection() to clear the current selection.
    • Add new method clearQuery() to clear the current search query.
    • Add new method focus() to focus programmatically.
    • Add new prop sort for a custom sort function.
    • Pass default filter function as third parameter to filter prop.

    UiSlider

    • Add new method focus() to focus programmatically.
    • Add new props min and max to specify a custom slider range. See #368.

    UiSnackbarContainer

    • Add new event queue-end, emitted when the last snackbar in a queue is hidden.

    UiTabs and UiTab

    • UiTabs

      • Breaking: argument passed to tab-change event handler is now the tab instance, not the id. To get the id, use tab.id.
      • Breaking: Remove refreshIndicator method, no longer needed.
      • Change active tab indicator animation, to fix issues related to window resizing and initially hidden tabs. Fixes #328.
      • Add new event tab-click, emitted when a tab is clicked, whether or not the tab is selected.
      • Add new prop confirmTabChange, A function that will be called for confirmation when the user attempts to change tabs.
    • UiTab

      • Breaking: Remove show prop, use v-for with a filtered array of tabs instead.
      • Breaking: Remove icon (string) and iconProps (object) props, use the header slot instead.
      • Tabs can now be created using v-for. Fixes #349.
      • HTML can now be used in tab headers, using the header slot.

    UiTextbox

    • Add new method focus() to focus programmatically.

    UiTooltip

    • Breaking: Switch positioning library to Tippy.js, which uses Popper.js.
    • Breaking: trigger prop is now a DOM Element, VueComponent instance, or selector string. If no trigger is provided or the selector doesn't match any element, the tooltip's immediate parent element is used as the trigger.
      <!-- Instead of: ref + trigger -->
      <button ref="button">My Button</button>
      <ui-tooltip trigger="button">My Tooltip</ui-tooltip>
      
      <!-- Use: nested <ui-tooltip> in target element -->
      <button>
          My Button <ui-tooltip>My Tooltip</ui-tooltip>
      </button>
      
    • Breaking: position prop accepted values have changed to match Tippy.js. See docs for new values.
    • Add new prop animation to choose animation style.
    • Add new prop appendToBody, to choose between appending tooltip to document.body or the local parent element.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Sep 3, 2017)

    • Upgrade Vue to v2.4.2 and fix template warnings. See #268.
    • Add aria-describedby attribute to UiTooltip
    • Fix bug where help and error content provided via slot isn't shown unless the help or error props are set. Affects UiAutocomplete, UiCheckboxGroup, UiDatepicker, UiRadioGroup, UiSelect, and UiTextbox. See #204.
    • Allow null for UiAutocomplete and UiTextbox value prop. See #253.
    • Allow UiTooltip trigger prop to be a VueComponent instance. See #204.
    • Add checked attribute to the input element for UiRadio. See #207.
    • Fix error being thrown when using UiRippleInk with SVG elements on touch devices. See #236.
    • Fix minor errors and dead links in the docs
    • Remove Material Icons webfont and use inline SVG icons in the docs
    • Update contributing guidelines with information about linting, BEM and using the next branch
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Jan 31, 2017)

    There are several breaking changes in this release, as the components have been re-written from scratch to support Vue 2. However, this release marks a stabilization of the API (hence v1.0) and breaking changes will be avoided in 1.x where possible.

    Please consult the docs for component API changes.

    Highlights

    • New components: UiCheckboxGroup, UiDatepicker and UiFileupload
    • Documentation for customizing the components
    • Global configuration now available for certain component props
    • CSS switched from Stylus to Sass, adopting the BEM naming convention
    • Component sizing switched from px to rem, using a root font size of 16px. Changing this font size will scale the components up/down appropriately.
    • Component event names switched from past tense to present to be more in line with the native DOM events
    • Remove validatorjs and draggabilly dependencies
    • Now shipping both minified and unminified versions of standalone component files in lib/
    • Fix several issues and unnecessary API limitations
    Source code(tar.gz)
    Source code(zip)
  • v0.8.9(Aug 10, 2016)

    New

    • UiAutocomplete, UiSelect, and UiTextbox: Add ui-input::set-validity event for setting the validity and a custom error message from outside the component
    • UiAutocomplete and UiSelect: Add new filter prop for defining a custom search filter function
    • UiAutocomplete and UiSelect: Add new prop keys to allow for redefining the text, value and image keys
    • UiAutocomplete and UiTextbox: Add autofocus prop
    • UiAutocomplete: Add opened, and closed events
    • UiAutocomplete: Add highlighted, highlight-overflow and selected events (thanks @rowanwins)
    • UiAutocomplete: Add autoHighlightFirstMatch and cycleHighlight props for customizing highlight behaviour (thanks @rowanwins)
    • UiButton and UiIconButton: Add buttonType prop
    • UiCheckbox: New model and value prop combination can be used for connecting multiple checkboxes to a single model (array).
    • UiFab and UiIconButton: Add openTooltipOn prop for customizing which events cause the tooltip to show
    • UiMenu and UiPopover: Add ui-dropdown::open, ui-dropdown::close and ui-dropdown::toggle events
    • UiMenu and UiMenuOption: Add partial and closeOnSelect props, to allow for using custom HTML in menu options
    • UiModal: Add revealed and hidden events, for detecting when the show/hide transition ends
    • UiSelect: Add new optionsLoaded for selects with dynamic options
    • UiSelect: Allow for more flexibity in the format of the options and default props. options now supports a plain array, e.g. ['Red', 'Blue', 'Green'] as well as an array of objects whose keys can be redefined to something other than text and value. default now supports any string, number or object, or an array of those, (provided the string, number or value key of the object matches with an option) - (thanks @qetee)
    • UiSelect: Add ui-select::set-selected event for programmatically setting the currently selected value/values
    • UiSnackbarContainer: Add allowHtml attribute to snackbar object, which allows for HTML in the message attribute
    • UiTabs: Add id prop
    • UiTabs: Add ui-tabs::select event for programmatically changing the active tab

    Fixes

    • UiAlert: Fix reactivity of icon prop
    • UiAutocomplete and UiTextbox: Fix debounce prop handling
    • UiAutocomplete, UiSelect and UiTextbox: Update validation-rules prop to accept Array, for specifying regex validation rules that use the pipe | character.
    • UiButton and UiIconButton: Fix dropdownPosition prop not being passed to UiPopover
    • UiCollapsible: fix height issues when using dynamic content in the collapsible body (thanks @citycide). Note that you should still trigger ui-collapsible::refresh-height when you change the collapsible body content.
    • UiFab and UiIconButton: Set icon width to 100% to fix horizontal centering in Safari on macOS
    • UiMenu, UiModal, and UiPopover: Make sure lastFocussedElement exists before attempting to return the focus. This fixes an error with Webpack hot reloading (thanks @lesion).
    • UiMenu and UiPopover: Automatically adjust horizontal positioning to keep dropdown in the viewport (thanks @AlexandreBonaventure)
    • UiProgressLinear: Fix color incorrectly defaulting to "color-color-primary" (thanks @lesion)

    Breaking

    • UiCheckbox: Rename value prop to model, value now maps directly to the checkbox input's value attribute and is used with connecting multiple checkboxes to a single array.
    • UiMenu and UiMenuOption: Rename UiMenuItem component to UiMenuOption
    • UiSelect: Remove noResults prop in favor of setting optionsLoaded to true and setting an empty array for options
    • UiSelect: Rename disableFiltering prop to optionsDynamic, because the prop does more than just disabling filtering
    • UiTextbox: autocomplete prop type changed to String, to allow for configuring browser autocomplete

    Docs

    • Add View Source links for components and examples
    Source code(tar.gz)
    Source code(zip)
  • v0.8.8(May 21, 2016)

    New

    Fixes

    • Added pointer cursor to all relevant interactive components (UiButton, UiIconButton, UiFab, UiMenuItem, UiCheckbox, UiRadio, UiSwitch)
    • Fixed z-index issue with tooltips and dropdowns in a modal
    • UiIcon: Vertically align icons to middle for use inline with text
    • UiMenu: Show scrollbar when menu height exceeds viewport height
    • UiAutocomplete, UiRadioGroup, UiRating and UiTextbox: Keep help text visible when disabled
    • UiIconButton and UiFab: Fixed horizontal centering of icon in Firefox
    • UiIconButton: Changed display to inline-flex
    • UiCollapsible: Fixed header vertical centering in IE

    Breaking

    • UiMenu and UiMenuItem: Renamed keyboardShortcut and showKeyboardShortcuts props to secondaryText and showSecondaryText, menu options should use the secondaryText property for showing secondary text like keyboard shortcuts and badges
    • UiButton and UiIconButton: Renamed showMenuKeyboardShortcuts prop to showMenuSecondaryText, menu options should use the secondaryText property for showing secondary text like keyboard shortcuts and badges
    Source code(tar.gz)
    Source code(zip)
  • v0.8.4(Apr 18, 2016)

Owner
Josephus Paye II
Software developer. CompSci at the University of Newcastle.
Josephus Paye II
Material design for Vue.js

Material Design for Vue.js Vue Material is Simple, lightweight and built exactly according to the Google Material Design specs Build well-designed app

Vue Material 9.7k Dec 30, 2022
Jenesius vue modal is simple library for Vue 3 only

Jenesius Vue Modal Jenesius vue modal is simple library for Vue 3 only . Site Documentation Installation npm i jenesius-vue-modal For add modals in yo

Архипцев Евгений 63 Dec 30, 2022
🐉 Material Component Framework for Vue

Supporting Vuetify Vuetify is a MIT licensed project that is developed and maintained full-time by John Leider and Heather Leider; with support from t

vuetify 36.2k Jan 3, 2023
Mosha-vue-toastify - A light weight and fun Vue 3 toast or notification or snack bar or however you wanna call it library.

Mosha Vue Toastify A lightweight and fun Vue 3 toast or notification or snack bar or however you wanna call it library. English | 简体中文 Talk is cheap,

Baidi Liu 187 Jan 2, 2023
Vue 3 + Vite + SSR template based on Vite Plugin SSR and inspired by Vitesse

Vite Vue SSR Starter Vue 3 + Vite + SSR template based on Vite Plugin SSR and inspired by Vitesse Features ⚡️ Vue 3, Vite 2, TypeScript ?? Domain-Driv

Oleg Koval 10 Aug 2, 2022
Simple, lightweight model-based validation for Vue.js

vuelidate Simple, lightweight model-based validation for Vue.js Sponsors Gold Silver Bronze Features & characteristics: Model based Decoupled from tem

Vuelidate 6.5k Jan 3, 2023
:tada: A magical vue admin https://panjiachen.github.io/vue-element-admin

English | 简体中文 | 日本語 | Spanish SPONSORED BY 活动服务销售平台 客户消息直达工作群 Introduction vue-element-admin is a production-ready front-end solution for admin inter

花裤衩 80.1k Dec 31, 2022
:eyes: Vue in React, React in Vue. Seamless integration of the two. :dancers:

vuera NOTE: This project is looking for a maintainer! Use Vue components in your React app: import React from 'react' import MyVueComponent from './My

Aleksandr Komarov 4k Dec 30, 2022
🎉 基于 vite 2.0 + vue 3.0 + vue-router 4.0 + vuex 4.0 + element-plus 的后台管理系统vue3-element-admin

vue3-element-admin ?? 基于 Vite 2.0 + Vue3.0 + Vue-Router 4.0 + Vuex 4.0 + element-plus 的后台管理系统 简介 vue3-element-admin 是一个后台前端解决方案,它基于 vue3 和 element-plu

雪月欧巴 84 Nov 28, 2022
A template repository / quick start to build Azure Static Web Apps with a Node.js function. It uses Vue.js v3, Vue Router, Vuex, and Vite.js.

Azure Static Web App Template with Node.js API This is a template repository for creating Azure Static Web Apps that comes pre-configured with: Vue.js

Marc Duiker 6 Jun 25, 2022
A plugin that can help you create project friendly with Vue for @vue/cli 4.5

vue-cli-plugin-patch A plugin that can help you create project friendly with Vue for @vue/cli 4.5. Install First you need to install @vue/cli globally

null 2 Jan 6, 2022
Veloce: Starter template that uses Vue 3, Vite, TypeScript, SSR, Pinia, Vue Router, Express and Docker

Veloce Lightning-fast cold server start Instant hot module replacement (HMR) and dev SSR True on-demand compilation Tech Stack Vue 3: UI Rendering lib

Alan Morel 10 Oct 7, 2022
🌈 An enterprise-class UI components based on Ant Design and Vue. 🐜

Ant Design Vue An enterprise-class UI components based on Ant Design and Vue. English | 简体中文 Features An enterprise-class UI design system for desktop

vueComponent 17.6k Jan 9, 2023
Lightweight Mobile UI Components built on Vue

Vant Mobile UI Components built on Vue ?? 文档网站(国内) ?? 文档网站(GitHub) ???? 中文版介绍 Features 65+ Reusable components 1kb Component average size (min+gzip) 9

有赞 20.7k Dec 31, 2022
Lightweight UI components for Vue.js based on Bulma

Buefy is a lightweight library of responsive UI components for Vue.js based on Bulma framework and design. Features Keep your current Bulma theme / va

Buefy 9.4k Jan 8, 2023