Giter Club home page Giter Club logo

carbon-components-vue's People

Contributors

benceszenassy avatar caioafc avatar conradschmidt avatar davidnixon avatar dcwarwick avatar dependabot[bot] avatar felipebritor avatar fontinalis avatar janhassel avatar joshblack avatar junglebadger avatar kaiwedekind avatar lee-chase avatar mateusbandeiraa avatar michaelamorim4 avatar mojodna avatar moores2 avatar mrsideshowjack avatar ohotnikovm avatar olkab avatar rafaelmaiach avatar rodet avatar sabov avatar stephenhogsten avatar timonlukas avatar travis1111 avatar trickstival avatar wesleygazz avatar weslleyrsr avatar zrianinamariia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

carbon-components-vue's Issues

Harmonise config with carbon-react

Carbon react favours placing config in the package.json file where possible. Move to this pattern in this repo.

Update settings where appropriate and they differ from carbon-react and do not conflict with vue-cli.

As a developer it should be possible to preview the components without cloning the repo

Is your feature request related to a problem? Please describe.
In order to allow developers to preview components, we should deploy previews to a suitable location.

Describe the solution you'd like
Deploy the existing storybook stories via storybook at vue.carbondesignsystem.com

Describe alternatives you've considered
None

Additional context
The React implementation of Carbon components uses storybook to deploy component previews.

Page number, count and dropdown not updated when property number of items changes

Steps to reproduce the issue

  1. Open the storybook page http://vue.carbondesignsystem.com/?selectedKind=CvPagination
  2. Set the number of items knob to 1003
  3. Note the page count does not change.
  4. Change the number of items per page in the live component.
  5. Note the page count does change to the correct value
  6. Select the last page
  7. Change the number of items to 103
  8. Note neither page number not updated

Additional information

  • Screenshots or code
  • Notes

Add data-vis/pie chart component

Is your feature request related to a problem? Please describe.
Add a Vue.js implementation of the carbon pie-chart component http://www.carbondesignsystem.com/data-vis/pie-chart

Describe the solution you'd like
Single file templates, notes and story as per other components.

Ideally, it should not rely on core javascript.

Describe alternatives you've considered
Initial version can rely on core carbon javascript.

Additional context
Add any other context or screenshots about the feature request here.

Should show, hide, next, prev methods exist for components

The progress component, for instance, has setCurrent(step) method.

While initial values may make sense for components that are able to change their own state (eg. input) it does not make much sense for components that cannot.

Remove such functions in favour of using props only?

Review: bx--form-item usage

Is a bx--form-item really needed as part of form components?

carbon-components-react places it around 16

This repo currently 10.

If needed should we use cv-form-item.

Add data-vis/gauge component

Is your feature request related to a problem? Please describe.
Add a Vue.js implementation of the carbon guage component http://www.carbondesignsystem.com/data-vis/gauge

Describe the solution you'd like
Single file templates, notes and story as per other components.

Ideally, it should not rely on core javascript.

Describe alternatives you've considered
Initial version can rely on core carbon javascript.

Additional context
Add any other context or screenshots about the feature request here.

Migrate to carbon X

Carbon styling is in the process of being updated, there are some breaking changes in the HTML structure.

DO NOTE BREAK V1.

Steps to migrate

  • Create an experimental branch with styling switch
  • Document components with breaking changes and create issues.

Components with non-breaking changes

  • CvAccording
  • CvButton
  • CvCodeSnippet
  • CvContentSwitcher
  • CvDatePicker
  • CvDropdown

Pending in PR #272

  • CvBreadcrumb
  • CvCheckbox
  • CvDataTAble
  • CvFileUploader
  • CvForm
  • CvInlineLoader
  • CvInlineNotification
  • CvLink
  • CvList
  • CvLoading
  • CvModal
  • CvNumberInput
  • CvOverflowMenu
  • CvPagination
  • CvRadioButton
  • CvSkeletonText
  • CvSlider
  • CvTabs
  • CvToastNotification
  • CvTag
  • CvTextInput
  • CvTextArea
  • CvTile
  • CvTimePicker
  • CvToggle
  • CvToolbar

Not started

  • CvProgress
  • CvSearch
  • CvSelect
  • CvStructuredList

Review slots and props for possible slops

A number of component parts can be simple text or HTML content. When they are text they're easier to use as a prop but less flexible as a result.

Review component slots and props with the intention of having prop/slot hybrids hence slops ;-)

See invalid-message and helper-text for examples of a slop.

Components in need of update

  • Toggle left and right text
  • add more...

Add skeleton components

Many components have a loading form, referred to as a skeleton the Carbon Design System.

See https://www.carbondesignsystem.com/patterns/loading

Add skeleton components (not all at once). Either create a work item or reference this issue.

Skeletons for

  • CvAccordion
  • CvBreadcrumb
  • CvButton
  • CvCheckbox
  • CvCodeSnippet
  • CvDataTable - See #51
  • CvDatePicker
  • CvDropdown
  • CvFileUploader
  • CvNumberInpu
  • CvPagination
  • CvProgress
  • CvRadioButton
  • CvSearch
  • CvSkeletonText
  • CvSlider
  • CvStructuredList
  • CvTabs
  • CvTag
  • CvTextArea
  • CvTextInput
  • CvToggle

Add some more tests

Currently, only the CvTag component has any tests.

Add more tests (not all at once). Either create a work item or reference this issue.

Tests for

  • CvAccordion
  • CvBreadcrumb
  • CvButton
  • CvCheckbox
  • CvCodeSnippet
  • CvContentSwitcher
  • CvDataTable
  • CvDatePicker
  • CvDropdown
  • CvFileUploader
  • CvNumberInput
  • CvInlineLoading
  • CvInlineNotification
  • CvLink
  • CvList
  • CvLoading
  • CvModal
  • CvMultiSelect
  • CvOverflowMenu
  • CvPagination
  • CvProgress
  • CvRadioButton
  • CvSearch
  • CvSelect
  • CvSkeletongText
  • CvSlider
  • CvStructuredList
  • CvTabs
  • CvTag
  • CvTextArea
  • CvTextInput
  • CvTile
  • CvTimePicker
  • CvToastNotification
  • CvToggle
  • CvToolbar
  • CvTooltip
  • CvUIShell
  • CvWrapper

Note: Tests should include

  • prop type, default and required checks
  • Snapshots covering each property option
  • Functional tests based on usage

Replace DOM manipulation in CvContentSwitcher with something a bit more Vue

The current CvContnetSwitcher uses direct DOM manipulation to hide and show content.

A more Vue like solution would be to have a shared Vue instance that either uses events or data to display the content. Ideally, we would maintain support for the current implementation, but not if it makes the solution complicated.

Targetted at v1.0 to ensure any breaks are prior to the initial release.

bx-- Carbon css prefix

Carbon components has a dynamically applied prefix. This will make it possible in future to shift fom bx to another prefix e.g. ibm.

Should we provide a similar mechanism? If so propose one.

Create codepens to illustrate each component

Is your feature request related to a problem? Please describe.
There are codepens to illustrate the vanilla Carbon components. It would be great to have similar codepends illustrating the Carbon-Vue components.

Describe the solution you'd like
A codepen in the Carbon codepen org for each Carbon-Vue component.

Describe alternatives you've considered

Additional context

Add dropdown component

Is your feature request related to a problem? Please describe.
Add a Vue.js implementation of the carbon dropdown component http://www.carbondesignsystem.com/components/dropdown

Describe the solution you'd like
Single file templates, notes and story as per other components.

Ideally, it should not rely on core javascript.

Describe alternatives you've considered
Initial version can rely on core carbon javascript.

Additional context
Add any other context or screenshots about the feature request here.

Review: Use of v-model against v-bind.prop.sync

v-model was introduced to allow components built-in components to be wrapped, but can also be used with custom components.

v-model is a little unwieldy when it comes to multiple properties, but it can be achieved by using an object as the model prop. This can lead to maintaining a "value" data object or computed when it would otherwise not be needed.

v-bind.sync allows individual properties to raise events named "update:XXXX" where XXXX is the name of the prop.

https://vuejs.org/v2/guide/components-custom-events.html#sync-Modifier

Tasks

  • Determine which, if any components should use the prop.sync pattern instead.
  • Implement or raise issues

TextInput Password Field

Is your feature request related to a problem? Please describe.
I currently cannot make a TextInput with password style (hidden/show chars)

Describe the solution you'd like
Feature import of TextInput password field : https://www.carbondesignsystem.com/components/text-input/code

Describe alternatives you've considered
Alternative is to build my own password field from an usual textinput with calculated variable.

Replace setTimeout usage with this.$nextTick

In a number of places setTimeout is used to encourage a particular sequence of events. Perhaps Vue.nextTick or this.$nextTick was being used incorrectly or failing for some other reason.

Investigate and determine if use of setTimeout can be eradicated.

Add time picker component

Is your feature request related to a problem? Please describe.
Add a Vue.js implementation of the carbon time picker component http://www.carbondesignsystem.com/components/date-picker

Describe the solution you'd like
Single file templates, notes and story as per other components.

Ideally, it should not rely on core javascript.

Describe alternatives you've considered
Initial version can rely on core carbon javascript.

Additional context
Add any other context or screenshots about the feature request here.

Review use of core carbon scss with regards to duplicates and missing styles.

Brief

Some core styles are missing (e.g. bx--body) and when using the library styles are duplicated.

Detailed description

Currently, neither the storybook or users receive some core styling such as bx--body and plex fonts. This is because each component is importing only the styles specific to that component, missing out a number of settings and base styling.

Further to this when this library is used in another project style definitions can be duplicated. This is most obvious with bx--label which is used in a number of components. While the core SCSS libraries in carbon-components do put in place strategies to prevent this, they rely on a globally compiled file. However, .vue files appear to be treated as individual sandboxes which are then concatenated post-compile in Vue-CLI.

The strategy of importing only component specific files to ensure a user only gets the styles for the components they use may, as a result, be flawed.

While a Vue-CLI 3 project does by deafult remove duplicates in production, it does not in development which causes dev tools to slow down significantly.

Review and document strategy for carbon-components-vue and usage.

Set button types to button where that's the intent

Detailed description

Buttons should be assigned type button|submit|reset as per https://www.w3schools.com/tags/att_button_type.asp

Not doing so means buttons wrapped in a form submit in chrome by deault.

Steps to reproduce the issue

  1. Type some text into the input
  2. Click the button, it automatically submits. This may be desirable.
  3. Click on the tiles expand button, the same happens. This is not desirable.

Solution

  • Add a default type for all buttons but allow the user to override.
  • submit for actual CvButton
  • button for others.

Additional information

Make form-item optional

A number of components are wrapped with bx--form-item which adds styling. Make this optional in all cases, as per cv-select which formItem can be set to false.

Note: Need to consider that some components would have multiple roots if we simply removed the bx--form-item element.

  • cv-checkbox
  • cv-date-picker
  • cv-file-uploader
  • cv-number-input
  • cv-radio-group
  • cv-search
  • cv-select
  • cv-slider
  • cv-text-area
  • cv-text-input
  • cv-time-picker
  • cv-toggle

Add data-table components

Is your feature request related to a problem? Please describe.
Add a Vue.js implementation of the carbon data-table components http://www.carbondesignsystem.com/components/data-table

Describe the solution you'd like
Single file templates, notes and story as per other components.

Ideally, it should not rely on core javascript.

Describe alternatives you've considered
Initial version can rely on core carbon javascript.

Additional context
Add any other context or screenshots about the feature request here.

Todo:

  • Add filter
  • Add selection and associated controls
  • Add toolbar
  • Add overflow menu to rows
  • HTML table cell content
  • Update notes file

File uploader should use v-model

Provide a v-model for CvFileUploader.

NOTE: It is understood that valid file handlers are only available via a file selection dialog.

Introduce tests to the library - branch add-tests

The library does not currently run any tests during compilation, introduce a testing system to the library.

NOTE: It is not expected that tests for the whole library are added. Testing as part of the build for one component and documentation as to how tests are added to components.

SEE: React and Angular test implemenations for possible patterns to follow.

Allow TextInput to include error text and helper text

Is your feature request related to a problem? Please describe.
according to the textinput description, adding a bx--form-requirement element below the element should display a correctly formatted error message.

Describe the solution you'd like
cv-text-input should accept slots for helper text and error text (similar to number-input)

Describe alternatives you've considered
This could be done with text properties instead, but slots give more control and this is the strategy already used by numberinput

Additional context
Number field looks like it already includes both of these options, so this may already be on the queue for making text-input vue native, I don't know. I would think cv-text-input is the most common of all the form fields

Add data-vis/bar-graph component

Is your feature request related to a problem? Please describe.
Add a Vue.js implementation of the carbon bar-graph component http://www.carbondesignsystem.com/data-vis/bar-graph

Describe the solution you'd like
Single file templates, notes and story as per other components.

Ideally, it should not rely on core javascript.

Describe alternatives you've considered
Initial version can rely on core carbon javascript.

Additional context
Add any other context or screenshots about the feature request here.

Items left to do:

  • Make y-axis grid lines optional via an attribute.
  • Enable locales for formatting x and y scale labels.
  • Enable accessibility of generated content
  • Enable client to supply data values to be used on the scales when there is no data.
  • More and better stories.
  • Full review of API and code.

Add data-vis/scatter plot component

Is your feature request related to a problem? Please describe.
Add a Vue.js implementation of the carbon guage component http://www.carbondesignsystem.com/data-vis/scatter-plot

Describe the solution you'd like
Single file templates, notes and story as per other components.

Ideally, it should not rely on core javascript.

Describe alternatives you've considered
Initial version can rely on core carbon javascript.

Additional context
Add any other context or screenshots about the feature request here.

Add data-vis/line graph component

Is your feature request related to a problem? Please describe.
Add a Vue.js implementation of the carbon line-graph component http://www.carbondesignsystem.com/data-vis/line-graph

Describe the solution you'd like
Single file templates, notes and story as per other components.

Ideally, it should not rely on core javascript.

Describe alternatives you've considered
Initial version can rely on core carbon javascript.

Additional context
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.