thesmythgroup / vue-toolkit Goto Github PK
View Code? Open in Web Editor NEWCompletely style-able, fully accessible UI components, built with Vue.
Home Page: https://thesmythgroup.github.io/vue-toolkit/
License: MIT License
Completely style-able, fully accessible UI components, built with Vue.
Home Page: https://thesmythgroup.github.io/vue-toolkit/
License: MIT License
Form validates control values against defined rules (or custom/arbitrary functions). Form is not submitted if validation fails.
Options:
<template>
<v-form :schema="schema">
<v-input name="name" />
</v-form>
<template>
<script>
{
// ...
data() {
return {
schema: {
name: { required, min }
},
};
}
</script>
<template>
<v-form>
<v-input name="name" rules="required|min:8" />
</v-form>
<template>
n/a
Show an asterixis in the Field
components label, when the associated control is required.
None.
Requires #1 to be completed first.
Enhance docs to document/explains things like:
n/a
I wonder if it modal/dialog should be centered vertically by default?
Form controls track their state individually. The Form
component aggregates control states and provides them in the submitted event.
dirty
pristine
touched
untouched
In each supported control, implement blur (touched, untouched) and change (dirty, pristine) events are associated data tracking.
n/a
Focus styling isn't very clear.
Focus styling would be obvious
Focus on a button
Allow apps to configure the strings used in components. This solution should be agnostic of what (if any) library the apps are using for i18n support.
Possibly use module options to pass an object of strings? Something like:
Vue.use(Common, {
i18n: {
'paginator.next': 'Next',
'paginator.prev': 'Previous',
}
});
n/a
The ability to have different, pre-defined, dialog sizes via Sass.
Sizes:
n/a
If you increase the page size and that page no longer exists because there aren't enough records it returns no results and shows "Page 2 of 1".
Ex: If you have a list of 40 results and you are viewing 25 and a time,
nav to page 2 then change per page to 50 and you are at page 2 of 1.
Current index should always be <= total pages.
Ex: If you have a list of 40 results and you are viewing 25 and a time,
nav to page 2 then change per page to 50 and you are at page 2 of 1.
n/a
Our main need at TSG was to solve some of the problems with our Vue 2.x components, but we are keenly interested in migrating to Vue 3 in the near future. Therefore you, dear reader, can consider Vue 3 support "on the roadmap."
TBD
n/a
When the dialog/modal is closed focus goes to first element in page
Focus would return to "Open Dialog" button or whatever initiated the modal or had focus before it appeared
Open a modal
Close a modal
Observe focus
n/a
Currently, form field errors can be rendered manually. For example:
<v-form :validation-schema="schema" v-slot="{ errors }">
<v-field label="Name">
<v-input name="name" />
<v-field-error v-if="errors && errors.name && errors.name.required">Name is required.</v-field-error>
</v-field>
</v-form>
However, it might be more convent if, globally, error messages could be reregistered by validator. This would eliminate the need for manually rendering messages for each field per validator.
v-field
v-field-error
in the templaten/a
Heading levels are not predictable and affect accessibility. For example, in the doc site the section title is an h2 (and should be an h1). The accordion component is hard-coded to be an h3, which would skip. I don't necessarily have a solution to suggest, but just pointing out that based on where an accordion or other component is used it might break the Heading tree.
Add an input component that restricts the input to numbers. Should also support Firefox.
The ability to reset a form back to it's initial values and default state. Use case: User makes changes to form, and then clicks a "Cancel" option.
Resetting a form should:
submitted
to back to falsePotentially expose reset
as a property on the slot context.
<v-form v-slot="{ reset }">
<!-- other stuff, etc -->
<v-button @click="reset"> Cancel </v-button>
</v-form>
n/a
Dialog doesn't trap focus when tabbing
See above
https://share.getcloudapp.com/GGu4Z48O
n/a
Some copy pasta on Dialog page
"Emitted when a chip is dismissed. "(should be dialog)
Default to open and fixed on desktop. Default to closed in mobile, with toggle button (hamburger) option to toggle sidebar. Maybe have an option to make sidebar collapsible in desktop.
Might need to introduce an additional component to handle the associated content.
n/a
Paginator select element doesn't have a label. Add aria-label="Items Per Page"
Currently, validation schema is set only once when the component loads.
Allow validation schema to be dynamic, potentially passing a computed property to validate based on conditions.
Ex:
schema = {
phone: this.phone ? [validators.minLength(10)] : [],
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.