Support passing escape item to TouchBar constructor
This commit is contained in:
parent
b24b4212c5
commit
414540bfcb
3 changed files with 28 additions and 9 deletions
|
@ -4,9 +4,11 @@
|
||||||
|
|
||||||
Process: [Main](../tutorial/quick-start.md#main-process)
|
Process: [Main](../tutorial/quick-start.md#main-process)
|
||||||
|
|
||||||
### `new TouchBar(items)` _Experimental_
|
### `new TouchBar(options)` _Experimental_
|
||||||
|
|
||||||
* `items` ([TouchBarButton](touch-bar-button.md) | [TouchBarColorPicker](touch-bar-color-picker.md) | [TouchBarGroup](touch-bar-group.md) | [TouchBarLabel](touch-bar-label.md) | [TouchBarPopover](touch-bar-popover.md) | [TouchBarScrubber](touch-bar-scrubber.md) | [TouchBarSegmentedControl](touch-bar-segmented-control.md) | [TouchBarSlider](touch-bar-slider.md) | [TouchBarSpacer](touch-bar-spacer.md))[]
|
* `options` - Object
|
||||||
|
* `items` ([TouchBarButton](touch-bar-button.md) | [TouchBarColorPicker](touch-bar-color-picker.md) | [TouchBarGroup](touch-bar-group.md) | [TouchBarLabel](touch-bar-label.md) | [TouchBarPopover](touch-bar-popover.md) | [TouchBarScrubber](touch-bar-scrubber.md) | [TouchBarSegmentedControl](touch-bar-segmented-control.md) | [TouchBarSlider](touch-bar-slider.md) | [TouchBarSpacer](touch-bar-spacer.md))[]
|
||||||
|
* `escapeItem` ([TouchBarButton](touch-bar-button.md) | [TouchBarColorPicker](touch-bar-color-picker.md) | [TouchBarGroup](touch-bar-group.md) | [TouchBarLabel](touch-bar-label.md) | [TouchBarPopover](touch-bar-popover.md) | [TouchBarScrubber](touch-bar-scrubber.md) | [TouchBarSegmentedControl](touch-bar-segmented-control.md) | [TouchBarSlider](touch-bar-slider.md) | [TouchBarSpacer](touch-bar-spacer.md)) (optional)
|
||||||
|
|
||||||
Creates a new touch bar with the specified items. Use
|
Creates a new touch bar with the specified items. Use
|
||||||
`BrowserWindow.setTouchBar` to add the `TouchBar` to a window.
|
`BrowserWindow.setTouchBar` to add the `TouchBar` to a window.
|
||||||
|
|
|
@ -20,17 +20,29 @@ class TouchBar extends EventEmitter {
|
||||||
touchBar._addToWindow(window)
|
touchBar._addToWindow(window)
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor (items) {
|
constructor (options) {
|
||||||
super()
|
super()
|
||||||
|
|
||||||
|
if (options == null) {
|
||||||
|
throw new Error('Must specify options object as first argument')
|
||||||
|
}
|
||||||
|
|
||||||
|
let {items, escapeItem} = options
|
||||||
|
|
||||||
|
// FIXME Support array as first argument, remove in 2.0
|
||||||
|
if (Array.isArray(options)) {
|
||||||
|
items = options
|
||||||
|
escapeItem = null
|
||||||
|
}
|
||||||
|
|
||||||
if (!Array.isArray(items)) {
|
if (!Array.isArray(items)) {
|
||||||
throw new Error('Must specify items array as first argument')
|
items = []
|
||||||
}
|
}
|
||||||
|
|
||||||
this.windowListeners = {}
|
this.windowListeners = {}
|
||||||
this.items = {}
|
this.items = {}
|
||||||
this.ordereredItems = []
|
this.ordereredItems = []
|
||||||
this.escapeItem = null
|
this.escapeItem = escapeItem
|
||||||
this.changeListener = (item) => {
|
this.changeListener = (item) => {
|
||||||
this.emit('change', item.id, item.type)
|
this.emit('change', item.id, item.type)
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,23 +6,28 @@ const {TouchBarButton, TouchBarColorPicker, TouchBarGroup} = TouchBar
|
||||||
const {TouchBarLabel, TouchBarPopover, TouchBarScrubber, TouchBarSegmentedControl, TouchBarSlider, TouchBarSpacer} = TouchBar
|
const {TouchBarLabel, TouchBarPopover, TouchBarScrubber, TouchBarSegmentedControl, TouchBarSlider, TouchBarSpacer} = TouchBar
|
||||||
|
|
||||||
describe('TouchBar module', function () {
|
describe('TouchBar module', function () {
|
||||||
it('throws an error when created without an items array', function () {
|
it('throws an error when created without an options object', function () {
|
||||||
assert.throws(() => {
|
assert.throws(() => {
|
||||||
const touchBar = new TouchBar()
|
const touchBar = new TouchBar()
|
||||||
touchBar.toString()
|
touchBar.toString()
|
||||||
}, /Must specify items array as first argument/)
|
}, /Must specify options object as first argument/)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('throws an error when created with invalid items', function () {
|
it('throws an error when created with invalid items', function () {
|
||||||
assert.throws(() => {
|
assert.throws(() => {
|
||||||
const touchBar = new TouchBar([1, true, {}, []])
|
const touchBar = new TouchBar({items: [1, true, {}, []]})
|
||||||
touchBar.toString()
|
touchBar.toString()
|
||||||
}, /Each item must be an instance of TouchBarItem/)
|
}, /Each item must be an instance of TouchBarItem/)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('throws an error when an invalid escape item is set', function () {
|
it('throws an error when an invalid escape item is set', function () {
|
||||||
assert.throws(() => {
|
assert.throws(() => {
|
||||||
const touchBar = new TouchBar([])
|
const touchBar = new TouchBar({items: [], escapeItem: 'esc'})
|
||||||
|
touchBar.toString()
|
||||||
|
}, /Escape item must be an instance of TouchBarItem/)
|
||||||
|
|
||||||
|
assert.throws(() => {
|
||||||
|
const touchBar = new TouchBar({items: []})
|
||||||
touchBar.escapeItem = 'esc'
|
touchBar.escapeItem = 'esc'
|
||||||
}, /Escape item must be an instance of TouchBarItem/)
|
}, /Escape item must be an instance of TouchBarItem/)
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue