Widgets for user interactions.
這裡只顯示彼此間有代碼差異的版本。 顯示所有版本。
Initial build() support for Tabs.
Tabs
Issue #258.
␄
Migrate most modules to use base.Exception.
base.Exception
Issue #259.
Bump version number.
JSDoc: Correct return type.
Issue #185.
Flesh out TabEntry a bit.
TabEntry
Highly inspired by GridColumn and Layout.
GridColumn
Layout
Initial rough out of a Tabs widget.
Use thead/tbody elements to build a Grid.
thead
tbody
Grid
Minor indentation tweak.
Clear the Grid container when building.
The regexp was too forgiving and did not detect that contents were duplicated.
General improvements to use of RegExp in tests.
The recent experience with an overly forgiving expression suggests another look at the whole set of tests, particularly the use of .*.
.*
Hoisted the GUID expression to the file level and used in a few other locations.
It is well known that using RegExp with HTML is generally a Bad Idea(tm). These tests really should be rewritten to compare at the DOM level.
Issues #190, #254.
Support CSS classes in GridColumn.
These are accessible as a separate method that Grid can use to style the resulting td element, like it does for tr.
td
tr
Remove now redundant call to contentWrapper().
Wrap items in the built array in an object.
This will allow for a future change to have a parallel item.
Make sure GridColumn.render() always returns a Widget.
GridColumn.render()
Widget
Rename ClassesFunc to RowClassesFunc.
ClassesFunc
RowClassesFunc
A forth coming ColClassesFunc will have a slightly different signature, so keep the names a bit more explicit.
ColClassesFunc
Along similar lines, also rename the associated methods.
Stop using event as a local name as it shadows a global.
Issue #238.
JSDoc: Indicate func is optional.
Remove old renderFunc initilization.
Change GridColumn to use a setter for title.
More like Grid.
Set the renderFunc using a setter rather than in the config.
This makes it consistent with Grid.rowClasses().
Grid.rowClasses()
Validate the rowClasses() callback.
Make field a required property for GridColumn.
Support per-row styling via CSS classes.
Change RenderFunc to return Content instead of Widget.
RenderFunc
Content
More consistent with other APIs.
Additionaly GridColumn test.
Finally build the Grid.
Export GridColumn and Grid.
Not complete, but will display.
Add initial column support.
Like data, this will start off live and manipulated directly. Convience methods, if any, will come later.
Also, remove a bit of snarkiness from the data comment.
Expose a GridColumn.render() method.
Give each GridColumn instance a unique id.
JSDoc: Add some missing types.
Update RenderFunc to return a Widget.
Derive a default column title from field name and tests.
Replace if check with optional chaining.
Issue #192.
Be sure to destroy previous content when setting new.
Issue #194.
Remove explicit uid support.
If a caller needs it, they can supply it.
Support live data.
Simplify Modal by always having content present.
Modal
Similar to what we did for Layout.
Give GridColumn an empty config in the test.
Be sure to destroy previous panel when setting a new one.
Initial rough out of a Grid widget.
Implement Layout.#onDestroy().
Layout.#onDestroy()
Export Layout.
By no means complete, but, good enough for experimentation.
Loop over panels rather than explicitly listing them.
Initialize the panels to an empty string.
Simplifies the code in #onBuild() quite a bit.
Rename Layout.#panel to #panels.
Layout.#panel
#panels
Make the panel constants opaque rather than strings.
Add a test for ints with contentWrapper().
Very rough initial Layout widget.
Add descriptive text to some assertions.
Issue #215.
Make use of new TestCase features in testing.
TestCase
Issue #183.
JSDoc: Update some references to the new (or correct) location.
Closes #214.
Make use of the new TestCase.assertNoRaises() method.
TestCase.assertNoRaises()
Issue #211.
Briefly document aria-describedby in Modal.
aria-describedby
Verify Modal has exactly one of the mandatory ARIA attributes.
JSDoc: Correct the documentation for a couple of methods.
Issue #190.
Implement a generic verification framework for Widgets.
Currently automatically called after build() and before show() and users may call explicitly.
Implement helper methods for adding HTML attributes to a Widget.
eslint: Fixup for forthcoming newline-per-chained-call tweak.
newline-per-chained-call
Issue #203.
Rename ContentTestCase to ContentWrapperTestCase.
ContentTestCase
ContentWrapperTestCase
Issue #191.
Factor out the types that contentWrapper() accepts for reuse.
Initial implementation of Modal.
JSDoc: Correct some types.
Implement ElementAdapter.
ElementAdapter
Have contentWrapper() support Widget.
It is a pass-thru, no wrapping.
style-nudge: Right-place #private property.
Darn regressions.
Issue #197.
Rename Content to StringAdapter.
StringAdapter
It will probably be easier to have one adapter per type, and a wrapper function to select them.
Introduce contentWrapper().
It will figure out the appropriate adapter to use for various types.
Initial Content adapter than handles strings.
Provide a way to install Widget styles on demand.
Documents and demonstrates how to have a class specific style and make sure it is installed upon instantiation.
Log that Widget.clear() is deprecated.
Widget.clear()
JSDoc: Document that when replacing a widget, destroy the old one.
Implement Widget.{show,hide}() methods and visible getter.
Widget.{show,hide}()
Document how Widget subclasses should generally work.
Implement Widget.{build,destroy}() methods.
Widget.{build,destroy}()
Emphasize that Widget needs to be subclassed.
Tests for Widget.
Add a Dispatcher to Widget and expose on()/off() methods.
Dispatcher
Currently there are no supported events. Those will be added later.
Remove experimental support for w2ui.
Issue #189.
Bump version numbers.
Experiment with using the w2ui library.
Export the Widget base class.
Originally the idea had been to keep it closed. But there might be needs to create app specific widgets that do not need to be in this library.
Issue #167.