Skip to content

Commit

Permalink
Cleaned up proptypes to be a little more DRY
Browse files Browse the repository at this point in the history
  • Loading branch information
job13er committed Jun 9, 2017
1 parent 12e0772 commit e9c3d48
Show file tree
Hide file tree
Showing 16 changed files with 81 additions and 220 deletions.
7 changes: 4 additions & 3 deletions addon/components/frost-table-body.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@ export default Component.extend({
// == PropTypes =============================================================

propTypes: {
// required
onCallback: PropTypes.func.isRequired,

// options
columns: PropTypes.arrayOf(ColumnPropType),
items: ItemsPropType
items: ItemsPropType,

// callbacks
onCallback: PropTypes.func.isRequired

// state
},
Expand Down
9 changes: 7 additions & 2 deletions addon/components/frost-table-cell-renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import {Component} from 'ember-frost-core'
import {PropTypes} from 'ember-prop-types'

import {ItemPropType} from 'ember-frost-table/typedefs'

export default Component.extend({
// == Dependencies ==========================================================

Expand All @@ -14,11 +16,14 @@ export default Component.extend({
// == PropTypes =============================================================

propTypes: {
// required
item: PropTypes.object,
// options
item: ItemPropType,
value: PropTypes.any,

// callbacks
onCallback: PropTypes.func.isRequired

// state
},

// == Computed Properties ===================================================
Expand Down
7 changes: 6 additions & 1 deletion addon/components/frost-table-cell.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {Component} from 'ember-frost-core'
import {PropTypes} from 'ember-prop-types'

import layout from '../templates/components/frost-table-cell'
import {ItemPropType} from 'ember-frost-table/typedefs'

export default Component.extend({
// == Dependencies ==========================================================
Expand All @@ -18,11 +19,15 @@ export default Component.extend({
// == PropTypes =============================================================

propTypes: {
// options
cellRenderer: PropTypes.any,
item: PropTypes.oneOfType([PropTypes.EmberObject, PropTypes.object]),
item: ItemPropType,
value: PropTypes.any,

// callbacks
onCallback: PropTypes.func.isRequired

// state
},

// == Computed Properties ===================================================
Expand Down
6 changes: 4 additions & 2 deletions addon/components/frost-table-header.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@ export default Component.extend({

propTypes: {
// options
onCallback: PropTypes.func.isRequired,
cellTagName: PropTypes.string,
columns: PropTypes.arrayOf(ColumnPropType)
columns: PropTypes.arrayOf(ColumnPropType),

// callbacks
onCallback: PropTypes.func.isRequired

// state
},
Expand Down
9 changes: 6 additions & 3 deletions addon/components/frost-table-row-selection.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {Component} from 'ember-frost-core'
import {PropTypes} from 'ember-prop-types'

import layout from '../templates/components/frost-table-row-selection'
import {ItemPropType} from 'ember-frost-table/typedefs'

export default Component.extend({

Expand All @@ -21,12 +22,14 @@ export default Component.extend({
// == PropTypes =============================================================

propTypes: {
// required
item: PropTypes.object.isRequired,
// options
item: ItemPropType.isRequired,
itemKey: PropTypes.string.isRequired,

// callbacks
onSelect: PropTypes.func.isRequired

// options
// state
},

getDefaultProps () {
Expand Down
8 changes: 5 additions & 3 deletions addon/components/frost-table-row.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {Component} from 'ember-frost-core'
import {PropTypes} from 'ember-prop-types'

import layout from '../templates/components/frost-table-row'
import {ColumnPropType} from 'ember-frost-table/typedefs'
import {ColumnPropType, ItemPropType} from 'ember-frost-table/typedefs'

export default Component.extend({
// == Dependencies ==========================================================
Expand All @@ -24,11 +24,13 @@ export default Component.extend({

propTypes: {
// options
onCallback: PropTypes.func.isRequired,
cellCss: PropTypes.string,
cellTagName: PropTypes.string,
columns: PropTypes.arrayOf(ColumnPropType),
item: PropTypes.oneOfType([PropTypes.EmberObject, PropTypes.object])
item: ItemPropType,

// callbacks
onCallback: PropTypes.func.isRequired

// state
},
Expand Down
14 changes: 5 additions & 9 deletions addon/components/frost-table.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {PropTypes} from 'ember-prop-types'

import layout from '../templates/components/frost-table'
import selection from '../utils/selection'
import {ColumnPropType, ItemsPropType} from 'ember-frost-table/typedefs'
import {ColumnPropType, ItemPropType, ItemsPropType} from 'ember-frost-table/typedefs'

export default Component.extend({
// == Dependencies ==========================================================
Expand All @@ -23,17 +23,13 @@ export default Component.extend({
// == PropTypes =============================================================

propTypes: {
// required
columns: PropTypes.arrayOf(ColumnPropType).isRequired,
items: ItemsPropType.isRequired,

// options
columns: PropTypes.arrayOf(ColumnPropType).isRequired,
itemKey: PropTypes.string,
selectedItems: PropTypes.arrayOf(PropTypes.oneOfType([
PropTypes.EmberObject,
PropTypes.object
])),
items: ItemsPropType.isRequired,
selectedItems: PropTypes.arrayOf(ItemPropType),

// callbacks
onCallback: PropTypes.func,
onSelectionChange: PropTypes.func,

Expand Down
12 changes: 6 additions & 6 deletions addon/typedefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ export const ColumnPropType = PropTypes.shape({
renderer: PropTypes.any
})

export const ItemPropType = PropTypes.oneOfType([
PropTypes.object,
PropTypes.EmberObject
])

export const ItemsPropType = PropTypes.oneOfType([
PropTypes.EmberObject, // DS.RecordArray
PropTypes.arrayOf(
PropTypes.oneOfType([
PropTypes.object,
PropTypes.EmberObject
])
)
PropTypes.arrayOf(ItemPropType)
])
5 changes: 3 additions & 2 deletions tests/dummy/app/pods/demo/frost-fixed-table/template.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@
name='John Doe'
)
)
onCallback= // a handler that handles an object with {action, row, col, args}
}}
{{ END-SNIPPET --}}
{{!-- BEGIN-SNIPPET dispatcher-example }}
dispatchNotifications ({action, row, col, args}) {
dispatchNotification ({action, row, col, args}) {
// row will be -1 for events that come from the header row,
// and zero indexed for data rows.
Logger.log(action, row, col, args)
Expand Down Expand Up @@ -89,4 +90,4 @@
}}
{{! END-SNIPPET }}
</div>
</div>
</div>
6 changes: 5 additions & 1 deletion tests/dummy/app/pods/demo/frost-table-body/template.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
name='John Doe'
)
)
onCallback= // a handler that handles an object with {action, row, col, args}
}}
{{ END-SNIPPET --}}

Expand Down Expand Up @@ -56,8 +58,10 @@
)
hook='myTableBody'
items=heroes

onCallback=(action 'dispatchNotification')
}}
</table>
{{! END-SNIPPET }}
</div>
</div>
</div>
4 changes: 3 additions & 1 deletion tests/dummy/app/pods/demo/frost-table-header/template.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@
)
)
hook='myTableHeader'

onCallback=(action 'dispatchNotification')
}}
</table>
{{! END-SNIPPET }}
</div>
</div>
</div>
6 changes: 5 additions & 1 deletion tests/dummy/app/pods/demo/frost-table-row/template.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
item=(hash
name='Jane Doe'
)
onCallback= // a handler that handles an object with {action, row, col, args}
}}
{{ END-SNIPPET --}}

Expand Down Expand Up @@ -54,9 +56,11 @@
)
hook='myTableRow'
item=heroes.[3]

onCallback=(action 'dispatchNotification')
}}
</tbody>
</table>
{{! END-SNIPPET }}
</div>
</div>
</div>
19 changes: 1 addition & 18 deletions tests/dummy/app/pods/demo/frost-table/controller.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,3 @@
import Ember from 'ember'
const {Logger, inject} = Ember
import HeroesController from '../heroes-controller'

export default HeroesController.extend({
notifier: inject.service(),

actions: {
dispatchNotifications ({action, row, col, args}) {
Logger.log('Dispatching: ', action, row, col, args)
// This is where you would do your custom dispatching.
const message = `(${action} ${row} ${col} ${args})`
this.get('notifier').addNotification({
message: message,
type: 'success',
autoClear: true
})
}
}
})
export default HeroesController.extend({})
3 changes: 2 additions & 1 deletion tests/dummy/app/pods/demo/frost-table/template.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
<div class='frost-demo-launch'>
{{! BEGIN-SNIPPET table }}
{{frost-table
onCallback=(action 'dispatchNotifications')
columns=(array
(hash
headerRenderer=(component 'text-input-renderer')
Expand All @@ -65,6 +64,8 @@
)
hook='myTable'
items=model.characters

onCallback=(action 'dispatchNotification')
}}
{{! END-SNIPPET }}
</div>
Expand Down
22 changes: 19 additions & 3 deletions tests/dummy/app/pods/demo/heroes-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,25 @@
* Controller for providing heroes data
*/
import Ember from 'ember'
const {Controller} = Ember
import heroes from './heroes'
const {Controller, Logger, inject} = Ember

import heroes from 'dummy/heroes'

export default Controller.extend({
heroes
heroes,

notifier: inject.service(),

actions: {
dispatchNotification ({action, row, col, args}) {
Logger.log('Dispatching: ', action, row, col, args)
// This is where you would do your custom dispatching.
const message = `(${action} ${row} ${col} ${args})`
this.get('notifier').addNotification({
message: message,
type: 'success',
autoClear: true
})
}
}
})
Loading

0 comments on commit e9c3d48

Please sign in to comment.