Permalink
Browse files

Merge git://github.com/SitePen/dgrid into tree-dup-ids

Conflicts:
	List.js
	tree.js
  • Loading branch information...
2 parents 660b5a9 + 6e20a48 commit ce1523f47371193e4871363a32e64ae772c6b903 @kriszyp committed Sep 11, 2012
View
@@ -1,258 +1,46 @@
-# 0.3.0
-
-## General
-
-### column plugin names are now lowercase
-
-Formerly, column plugins and the named arguments storing their module return values
-had their first letter capitalized. However, given that these plugins are in
-fact simply functions which modify (and return) their first passed argument,
-and are not in fact constructors, their nomenclature has been amended to
-all-lowercase to avoid confusion, and to further convey that they are intended
-to be run without the `new` keyword.
-
-When running on a case-insensitive filesystem (e.g. Windows, or Mac OS X by
-default), this change likely won't have any immediate visible effect on
-existing code which requests the module with an initial capital letter.
-However, revising code to reference the all-lowercase module ID is encouraged.
-
-### new TouchScroll implementation
-
-The TouchScroll module provides touch-event-based scrolling for dgrid
-components on touch devices. Originally this module was borrowed from a
-snapshot of a dojox/mobile module, but this implementation blocked several
-dgrid features from working correctly on touch devices.
-
-That module has been replaced by a new barebones implementation written from the
-ground up. Further development on this module is likely to occur.
-
-### additional extensions
-
-The following extensions have been added since v0.2:
-
-* ColumnReorder: allows reordering columns in simple grids via DnD
-* ColumnHider: allows dynamically hiding/showing grid columns from a simple menu
-* Pagination: adds controls for discrete pagination
-
-More information on these extensions can be found on the
-[Extensions](https://github.com/SitePen/dgrid/wiki/Components-Extensions) page of the wiki.
-
-## CSS
-
-### column-<id> and columnset-* classes now prefixed with dgrid-
-
-The `column-<id>` classes added by the Grid module, and the `columnset-*`
-classes added by the ColumnSet mixin, have been renamed to include the `dgrid-`
-prefix like most other classes automatically added by dgrid components.
-
-The main exception is the `field-<field>` classes, which are intentionally not
-namespaced in this fashion, as they are thought to be more applicable to the
-particular use-case and less applicable to the dgrid components themselves.
-
-In the overwhelming majority of cases, it is recommended to style using the
-`.field-<field>` classes (or, if a `className` is specified in the column
-definition, use that as it overrides the `.field-<field>` class).
-
-### ColumnResizer: handle node class is now dgrid-resize-handle
-
-The class on the resize handle node added to each header cell by the
-ColumnResizer extension was formerly `dgrid-resize-handler`; this has been
-corrected to `dgrid-resize-handle`.
-
-## List
-
-While these changes relate particularly to code in List.js, note that the changes
-essentially affect all dgrid components, since all components extend from or
-mix into List.
-
-### new: get and set methods
-
-Central `get` and `set` functions have been implemented, somewhat akin to the
-interfaces seen in `dojo/Stateful` and `dijit/_WidgetBase`. However, there are
-some key differences:
-
-* dgrid supports custom getters and setters, but they are named following the
- pattern of `_getFoo` and `_setFoo`, unlike Dijit's `_getFooAttr` and `_setFooAttr`.
-* `watch` is not implemented.
-
-Most `set*` functions found throughout dgrid components are now implemented
-as custom setters, and should thus be accessed via the central `set` method.
-For example, `setQuery(...)` is now `set("query", ...)`. Deprecation stubs
-are currently in place for the old APIs, but will be removed in the future.
-
-### sortOrder property and sort function replaced by getter/setter
-
-Previously, `sortOrder` was the (arguably internal) instance property used to
-store the current sort options. Sort code has since been rearranged; the new
-recommended way to retrieve existing sort options is to call `get("sort")`.
-
-Meanwhile, the `sort` method has been deprecated in favor of `set("sort", ...)`.
-Sort order can also now be initially defined when creating a list or grid by
-specifying a `sort` property in the object passed to the constructor.
-
-## Grid
-
-### columndef.get function now takes one parameter
-
-The `get` function on column definitions is now passed only one argument: the
-object for the row in question.
-
-Earlier, the object was the second parameter, in order to match the signature of
-the same function in dojox grid components. However, the first parameter did
-absolutely nothing in dgrid, and has now been removed.
-
-## _StoreMixin (OnDemandList/OnDemandGrid, Pagination)
-
-### new: columndef.set function
-
-Store-backed grids now support a `set` function on the column definition object.
-Like `get`, this function receives an object, which contains the updated item as
-it will be `put` into the store. The function may return a value to replace the
-value in the field represented by the column.
-
-Additionally, since the object passed to the function is the
-object that will be `put`, it is possible to perform more complex
-transformations by modifying the object directly; in this case, the function
-may elect not to return anything. Note, however, that this approach should
-be used sparingly and carefully, since it is possible to do anything to the
-item, and complications may develop if multiple columns in the same grid take
-this approach.
-
-### new: updateDirty
-
-Store-backed grids also now have an `updateDirty(id, field, value)` method,
-which can be used to update dirty state of items represented in the grid.
-(On master this was previously known as `setDirty`, but did not exist in v0.2.)
-
-## Selection / CellSelection
-
-### dgrid-select and dgrid-deselect events
-
-The behavior and signature of selection events has changed significantly.
-
-* When a range is selected, instead of firing many individual events for each
- affected row/cell, a single batched event will be fired.
-* These events now include a `rows` or `cells` property yielding an array of objects,
- rather than a `row` or `cell` property yielding a single object.
-* Deselect events will now fire when rows are removed, or if a refresh occurs
- which resets the grid's selection.
-
-### new: allowSelectAll property, disabled by default
-
-Previously, checkbox selectors provided the ability to select all rows.
-This ability is still provided, but is now determined by the value of the
-`allowSelectAll` property.
-
-Note, however, that this property defaults to `false`. This feature is not
-needed in all use cases, and its implications should be considered beforehand,
-especially with regard to the lazy-loading nature of store-backed lists and grids.
-
-Additionally, it is now possible to use Ctrl+A or Cmd+A to toggle between
-selecting all items and selecting no items.
-
-### new: allowSelect method
-
-`Selection` now exposes an `allowSelect` method on the instance. This method
-receives a row object (or a cell object in the case of `CellSelection`) and
-is expected to return `true` or `false`, reflecting whether selection of this
-row or cell should be permitted.
-
-This is particularly useful in conjunction with the selector column plugin,
-which will display a disabled checkbox or radio button as appropriate.
-
-### new: deselectOnRefresh property
-
-Previously, the `Selection` module would clear the selection whenever a list
-or grid is refreshed. While this is still the default, the behavior can now
-be disabled by setting `deselectOnRefresh` to `false`.
-
-## selector
-
-### columndef.type is now columndef.selectorType
-
-In dgrid 0.2, the selector type (generally either `"checkbox"` or `"radio"`)
-could be specified within the column definition object via the `type` property.
-This has been changed to `selectorType` to avoid ambiguity. The selector type
-can also be specified as the second argument to the `selector` column plugin
-function instead, as before.
-
-## editor
-
-The editor column plugin has been significantly refactored since v0.2.
-The most notable changes in terms of API effects are noted below.
-
-### widgetArgs property is now editorArgs
-
-The `widgetArgs` property supported in the column definition by the editor
-plugin has been renamed to `editorArgs` to be agnostic as to whether the
-editor is a widget or a standard input, leaving the door open for usage with
-standard HTML input types.
-
-### editorArgs cannot be specified as a function
-
-Previously, it was possible to specify `widgetArgs` as a function instead of an
-object. The function would receive a store item and be expected to return an
-object hash to pass to the widget constructor each time an editor is rendered.
-
-This capability was rarely useful, and is no longer viable, particularly due to
-how editors now behave when `editOn` is specified: the editor component is only
-constructed once, rather than every time a cell is activated for editing.
-
-Thus, widget properties may only be specified directly via an object hash to
-the `editorArgs` property. For more advanced cases where the value needs to be
-computed or transformed on a per-item basis, use the `get` function in the
-column definition object to return the appropriate data.
-
-### dgrid-datachange event properties
-
-The `dgrid-datachange` event emitted by the editor column plugin now includes
-a `cell` property, which contains the same data retrievable via
-`grid.cell(event)`. Since `grid.cell` is already called in the relevant
-editor code, it is exposed directly on the event to avoid forcing developers
-to perform the same lookup again on the other end.
-
-Since it is possible to get cell and row information from this property,
-the previously-exposed `rowId` property of the `dgrid-datachange` event is
-now deprecated and will be removed in a future release.
-
-The `dgrid-datachange` event also now includes a `grid` property containing a
-reference to the Grid instance from which the event was fired.
-
-## tree
-
-### expand method added to grid instance
-
-Tree columns now add an `expand(row, expand)` method to their parent grid,
-for programmatically expanding or collapsing grid rows. See the documentation
-for details.
-
-## DnD
-
-### dndTargetConfig improved; is now dndParams
-
-Previously, the DnD plugin defined a `dndTargetConfig` instance property, which
-was a params object to be passed to the DnD Source constructor. However,
-this was only used internally and did not consult any value provided via the
-constructor.
-
-This property has been renamed to `dndParams`, and now accepts an object value
-via the constructor's arguments object.
-
-### new: dndConstructor
-
-Previously, the DnD plugin would always create an instance of the `GridSource`
-constructor it defines and exposes. A `dndConstructor` property has been added,
-which can be used to specify an alternative DnD implementation to instantiate.
-
-For best results, the constructor used should extend the `GridSource` constructor
-exposed by the DnD module.
-
-### default dndSourceType is now dgrid-row
-
-The default value for the `dndSourceType` property has been changed from `row`
-to `dgrid-row` to prevent ambiguity.
-
-### DnD Source instance now stored as grid.dndSource
-
-Previously, the DnD Source instance was stored on the grid instance under the
-`dndTarget` property; this has been renamed more appropriately to `dndSource`.
+This document outlines changes since 0.3.0. For older changelogs, see the
+[dgrid wiki](https://github.com/SitePen/dgrid/wiki).
+
+# 0.3.1
+
+## Significant changes
+
+* Column plugins can now define the following functions on column definitions,
+ providing more opportune timing for initialization and tear-down:
+ * `init`, which will be executed at the time the grid's column configuration
+ is (re-)applied
+ * `destroy`, which will be executed when the grid is destroyed, as well as
+ before a new column configuration is applied
+* The `tree` plugin now supports the following column definition properties:
+ * `shouldExpand(row, level, previouslyExpanded)`, a function providing for
+ conditional automatic expansion of parent rows (#141)
+ * `indentWidth`, an integer specifying the size (in pixels) of each level's
+ indent (note that the default is now `9`, though it was previously `19`)
+ * `renderExpando()`, a function which can replace the default logic for
+ rendering the expando node (the arrow next to the content of each cell)
+* The `editor` plugin now augments the grid instance with an `edit(cell)` method
+ which can be used to programmatically activate the editor in a given cell.
+* A `util/mouse` module has been added, which exposes simulated events for
+ the mouse entering and leaving grid rows and cells. (#165)
+* A `package.js` has been added in order to streamline the build process.
+ `package.json` has been updated to reflect the presence of `package.js` and
+ reference the latest versions of xstyle and put-selector, each of which now
+ have a `package.js` of their own.
+
+## Other Fixes
+
+* Mouse events for expanding/collapsing rows in tree grids should be a bit more
+ reliable. (#112)
+* Rows expanded in a tree grid which has been started up but is currently hidden
+ will now be rendered properly when re-shown. (#140)
+* The `tree` and `editor` plugins can now both be used on the same column, by
+ wrapping `editor` with `tree`. (#144)
+* `sortable` now defaults to `false` for columns where `field` is `"_item"`
+ or entirely unspecified (in which case there's nothing to sort by anyway).
+ (#149)
+* The `Pagination` extension now behaves appropriately with empty result sets.
+ (#173)
+* The `ColumnHider` extension now iterates over `subRows` rather than `columns`,
+ making it a bit more reliable in general. (#164)
+* A couple of issues with the `DijitRegistry` extension were identified and
+ fixed. (#146, thanks jdohert)
Oops, something went wrong.

0 comments on commit ce1523f

Please sign in to comment.