Code Monkey home page Code Monkey logo

cxjs's Introduction


cxjs logo

version downloads


CxJS, or simply Cx, is a feature-rich JavaScript framework for building complex web front-ends, such as BI tools, dashboards and admin apps.

Learn CxJS

Explore CxJS by checking out available online resources:

If you need help, ask a question on StackOverflow. If you find a bug, please raise an issue. Request an invite to our Slack channel and become a member of the CxJS community.

Starting a new project

CxJS is available as an NPM package - cx, which includes compiled code, source code and TypeScript definitions.

Besides the cx package, you'll need other packages such as cx-react (or cx-preact) and babel-preset-cx-env.

You'll also need to configure Babel and webpack.

The quickest way to setup everything up is to use CLI:

npm install cx-cli --global
cx create my-app
cd my-app
npm start

Or if you prefer Yarn:

yarn create cx-app my-app
cd my-app
yarn start

Alternatively, you can download the files from one of the project templates:

Themes

Once you create a new project, you may want to try our ready-to-use visual themes:

Install the theme using npm or yarn.

npm install cx-theme-frost

Open my-app/app/index.scss and replace

@import "~cx/src/variables";
@import "~cx/src/index";

with

@import "~theme-package-name/src/variables";
@import "~theme-package-name/src/index";

Please read theme NPM package documentation to learn how to enable theme specific features.

Features

CxJS uses React for DOM manipulation and offers many high-level features on top of it.

Widgets

Charts

UI Concepts

State Management

Layout

Theming

Development

This is a monolith repository used to develop main npm packages, documentation, widget gallery and fiddle. It uses yarn workspaces, so please use yarn to install packages and run the applications.

yarn install

Build CxJS:

yarn build

Run tests:

yarn test

Run Docs:

yarn start

Run Gallery:

yarn gallery

Run Fiddle:

yarn fiddle

License

CxJS is available under the MIT License.

cxjs's People

Contributors

acoj1993 avatar andreabaco96 avatar andrewshulgin avatar bojanmikanovic80 avatar danijela991 avatar ddovla avatar dragan-bjelosevic avatar endritarr avatar gitter-badger avatar gygasync avatar igor-pejakovic-codaxy avatar jiripudil avatar lazojankovic avatar majamihajlovic avatar markodj994 avatar milicatadic avatar mrdjanm avatar mstijak avatar nebojsa-peric avatar nikolatechie avatar njegos1997 avatar ognjenst avatar okremenovic avatar sasatatar avatar scibernix avatar stefandragicevic avatar tymarats avatar vedranvucic77 avatar vladimiraxy avatar yrodrigez 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cxjs's Issues

Slider onWheel support

Sometimes it makes sense to have sliders that respond to mouse wheel events over them, so maybe put that as an opt-in attribute?

Feature request: desktop like theme

It would be nice to have a desktop like theme with minimum spacing between components (equivalent to the ExtJS classic one).
Developing "Single Page Applications" requires sometimes to display a lot of widgets in a single window, so having compact components is a need.

`import` improvements

Currently, imports are handled like this:
import {TextField} from 'cx/ui/form/TextField';
or
import {TextField} from 'cx/ui/form/';

Using a build step it would be possible to pre-package and offer multiple entries inside the dist folder. These would be app, ui, forms, grid, nav, layout, svg, charts. After that import would look like this:
import {TextField} from 'cx/forms';;
import {NumericAxis, BarGraph} from 'cx/charts';

Pros:

  • Rollup could be used to concatenate all files - Babel would not add its overhead into each file
  • Babel could be used to transform JSX - the host app would not have to worry about that and could loose { pragma: 'VDOM.createElement' } from the configuration.
  • Probably some performance gains

Cons:

  • It's non-trivial to implement - some transformation would have to be done to skip and reference imports which belong to the other output file
  • Source maps would have to be used to access original files
  • It would be difficult to work with non-compat version of Inferno and Inferno's plugin for Babel - that would require a separate build

Warning: Unknown prop `level` on <h1> tag

Hi Marko:

Just a small one. When I select General Purpose Widgets > Heading in CxDocs the browser gives an Unknown prop warning on the level tag. Everything seems to be fine but I can't seem to find where this is coming from. Have you seen this before? I basically get it wherever the level tag is used.

It's a fresh local install and I notice it doesn't happen in the online version of the docs.

Cheers,
Dave

Separate docs for Inner and Outer Layouts

  • Create a separate docs for Inner and Outer Layouts (currently is all listed together under Layouts).
  • In Outer Layouts page include additional info and import paths for Content and ContentPlaceholder components.

UploadButton layouting bug

Upload button in a neat layout makes container div scrollbar to appear (the container has overflow-x: auto), when it should not.

uploadbutton

Field input validation bug

ColorField and DateField widgets do not display a tooltip feedback in case of an invalid input.
Instead, the previous input value is restored silently.

Docs missing info

Custom formatting (Format.register) is not explained in the docs.

Style maps should not depend on other style maps

$cx-std-field-state-style-map: cx-deep-map-merge($cx-input-state-style-map, ()) !default;

One would expect that adding something to $cx-input-state-style-map would add it to $cx-std-field-state-style-map, but that's not the case.

Maps, when declared, should depend exclusively on Sass variables.

Incompatible TextArea and Button configurations

We made a recent change so that buttons do not receive focus on mousedown.
On the other side, by default, TextArea relies on blur event to propagate changes.

The problem occurs when the button is clicked while textarea is focused. Focus stays within the textarea and change is not propagated.

All widgets should work out of the box, so either change the defaults so TextArea submits on every input or focus buttons on click.

Backdrop animation

Animated windows are nice, but backdrops now look weird. The window first shrinks and after that is done the backdrop disappears. Backdrops should be animated too.

Password autofill is not caught

When the password is autofilled from Chrome, it will not be recognized as filled until you trigger any event (keypress, mouse click) on the page.
passwordautofill

Implement toggle mod for Grid with multiple selection

When passing multiple='true' attribute to the Grid widget, it is possible to select multiple rows holding the Ctrl key. Default behavior deselects all other rows if Ctrl key is not down.

Toggle mod would allow multiple rows selection without holding down the Ctrl key.

Styled scrollbars on mobile

Styled scrollbars override native scrollbars on mobile devices. Should we turn this on only for larger screens?

Disabled containers?

Is it possible to have entire containers disabled (meaning, all form inputs on the container would be disabled)?

NumberField input bugs

Two possibly related NumberField bugs (http://cx.codaxy.com/v/master/docs/widgets/number-fields)

  • when using percentage (ps) format, input field does not allow you to type decimal point
  • in the Formatted example, it's not possible to enter a 5-digit number like "23456" by individual keystroke succession. Pasting the value and manipulating the cursor manually works fine here, though.

CLI fails to create nested route

For example,

cx add route dashboard/world

will fail if folder app/routes/dashboard doesn't exists.

The correct behavior would be to create all missing folders.

ColorPicker not functioning properly

When the color picker is activated, it is shown as an overlay.
As soon as the mouse is down, the event is propagated and the overlay disappears, preventing finer color adjustment.

The same behavior can be observed on the color picker itself, indicating that the problem is not in the ColorField widget.
As soon as the mouse is down, the color picker loses focus, preventing finer color adjustment.

Throttling / debouncing

It would be a good idea if we could have throttling/debouncing options for Cx controls (e.g. slider).

Tooltips on mobile devices

Tooltips look and feel a little strange on mobile devices, but they work very well on desktop. Maybe it makes sense to have some global configuration for tooltips, at least to be able to hide them all.

Show import paths in docs

It should be readily visible where a certain Cx component can be imported from.

Example: PureContainer, subtitle: import {PureContainer} from 'cx/ui'

Calendar (and DateField) not working in Safari

The problem lies along these lines:

   handleMouseDown(e){
      this.props.handleSelect(e, new Date(e.target.dataset.date));
   }

For selected date of May 11, 2017, e.target.dataset.date is 2017-5-11, which cannot be parsed by Safari (see image below). 2017-05-11 would have worked fine, it seems.

date

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.