Code Monkey home page Code Monkey logo

control-panel's People

Contributors

ameobea avatar freeman-lab avatar joestrong avatar rreusser 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

control-panel's Issues

Direct value input for range control

I know this library is somehow unmaintained, well, in case that someone still watches it, i'd like to ask whether there's simple way to make value of range input direcly editable.

API for updating state

Hey @freeman-lab,

I'm playing around with some ideas to improve the authoring process for Idyll, and one of them is to automatically give the user a control panel that hooks into the reactive state (see idyll-lang/idyll#320).

This is working great, but it only updates in one direction. Is there a way to programmatically update the control panel's state?

Handles seem too small for touch events in range sliders

If your touch event falls onto the rail instead of the little grabber, it has no effect on touch devices. Solutions either seem to be to drop the built-in element with this undesirable behavior or to make the grabbable area slightly wider.

Control-panel in Angular app

Hi

I'm using control-panel in an angular application in a component using Three.js
I get the following error on the console:

core.js:1448 ERROR TypeError: fs.readFileSync is not a function at new Plate (index.js:29) at Plate (index.js:15)

Any advice how to resolve this?

Best
stefan

Field types and improvements

Hi!

I started playing with various fields, and have found that sometimes it is useful to have additional field types:

  • textarea - for large text content, like description, tagline, title, data-uri encoded image, svg etc. In conjunction with autosize it is even better than usual type='text'. As an option - replace default text input with textarea and autosize. API won’t change, for the end user there will be no difference, but UX will be smoother.
  • radio - an alternative for select. It may work better for small sets, as it shows all possible options at once, which makes interaction easier and faster.
  • custom - renders custom user HTML. That could be dividers, section titles, custom inputs, like vecN inputs, unit inputs (number + unit select), reset button, file input etc. It is quite easy to implement, and covers the rest of possible use-cases. Also that allows for extending control-panel with additional fields from other packages.

Any thoughts?

Prama finds

Hi @freeman-lab, very nice lib!
I was really laughing hard when I saw this repo, as recently I’ve spent 3 days on exact functionality in prama (parameters manager). Funny thing is that API is literally the same. But prama is nowhere close to the nice style of control-panel.
Therefore I can just share bugs and features I stumbled upon.
First off, it seems range slider does not work in iOS. I used Lea Veorou’s multirange for that purpose.
Second, it would be really nice to have control panel draggable, because some components, like gl-spectrum are full-screen. Though that task can be solved by user.
Third, I found that saving and loading current state to sessionStorage might come in handy at debugging, to avoid setting up parameters anew each page reload.
Wished I knew that package 3 days before!

color picker z index?

When two control panels are placed next to each other but non-overlapping, the color picker from one panel can be hidden by the other panel. A few attempts at playing with the z-index failed. Probably something tricky with the positioning settings. Big 👍 if anyone can figure this out =)

overlap

Webpack is unsupported?

When trying to use control-panel with Webpack, I get:

Uncaught Error: Cannot find module "fs"

and

./node_modules/control-panel/index.js Module not found: Error: Can't resolve 'fs' in '$PATH_TO_PROJECT/node_modules/control-panel'.

This seems to be a known problem with other repos (see here, for example), but the solutions provided for those repos (namely, adding node: { fs: "empty: } to the webpack.config.js) do not seem to work — trying that results in a new error: Uncaught TypeError: fs.readFileSync is not a function.

Following up on that error leads to information that fs.readFileSync will never truly work in the browser, as it is a Node function (see here).

mobile support

There's at least one issue with viewing the control panel on iOS/android. This issue can be a place to track it, as well as any others that we find.

  • range slider doesn't work because it's not supported on iOS, we should be able to use multirange instead (thanks @dfcreative for the tip!)

make panel draggable?

As pointed out by @dfcreative, for some use cases it might be really useful to be able to drag the panel around the screen. Unclear whether we want to add that to this module, or just put together a nice simple demo showing others how to make the panel draggable by composing with other modules (assuming it's simple!).

Stop event propagation

I end up typing this in nearly every example, otherwise the events leak through and, for example, pan the underlying view even when I'm dragging a slider:

var el = document.querySelector('.control-panel');
var events = ['mousemove', 'click', 'mousedown', 'mouseup'];
for (var i = 0; i < events.length; i++) {
  el.addEventListener(events[i], function(ev) {
    ev.stopPropagation();
  });
}

Note to self: make a PR for this! I wonder what the full set of events stopped from propagating should be.

Make panel closable.

Hi freeman,

Nice project and thank you for your work! I just use it and it is perfect except I think one little Close Panel button like dat-gui or dis-gui would be good for preview demo when editing.

example-01

I show you a picture for this.

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.