mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
Update 'config.themes' config key when enabled themes list is sorted
This commit is contained in:
committed by
Corey Johnson & Kevin Sawicki
parent
7993e3ab39
commit
b110f430ee
38
spec/app/theme-config-panel-spec.coffee
Normal file
38
spec/app/theme-config-panel-spec.coffee
Normal file
@@ -0,0 +1,38 @@
|
||||
$ = require 'jquery'
|
||||
ThemeConfigPanel = require 'theme-config-panel'
|
||||
|
||||
describe "ThemeConfigPanel", ->
|
||||
panel = null
|
||||
|
||||
beforeEach ->
|
||||
config.set('core.themes', ['atom-dark-ui', 'atom-dark-syntax'])
|
||||
panel = new ThemeConfigPanel
|
||||
|
||||
describe "when an enabled theme is reloced in the themes list", ->
|
||||
it "updates the 'core.themes' config key to reflect the new order", ->
|
||||
li = panel.enabledThemes.children(':first').detach()
|
||||
panel.enabledThemes.append(li)
|
||||
panel.enabledThemes.sortable('option', 'update')()
|
||||
expect(config.get('core.themes')).toEqual ['atom-dark-syntax', 'atom-dark-ui']
|
||||
|
||||
describe "when a theme is dragged into the enabled themes list", ->
|
||||
it "updates the 'core.themes' config key to reflect the themes in the enabled list", ->
|
||||
dragHelper = panel.availableThemes.find("li[name='atom-light-ui']").clone()
|
||||
panel.enabledThemes.prepend(dragHelper)
|
||||
panel.enabledThemes.sortable('option', 'receive')(null, helper: dragHelper[0])
|
||||
panel.enabledThemes.sortable('option', 'update')()
|
||||
expect(config.get('core.themes')).toEqual ['atom-light-ui', 'atom-dark-ui', 'atom-dark-syntax']
|
||||
|
||||
describe "when the theme is already present in the enabled list", ->
|
||||
it "removes the previous instance of the theme, updating the order based on the location of drag", ->
|
||||
dragHelper = panel.availableThemes.find("li[name='atom-dark-ui']").clone()
|
||||
panel.enabledThemes.append(dragHelper)
|
||||
panel.enabledThemes.sortable('option', 'receive')(null, helper: dragHelper[0])
|
||||
panel.enabledThemes.sortable('option', 'update')()
|
||||
expect(config.get('core.themes')).toEqual ['atom-dark-syntax', 'atom-dark-ui']
|
||||
|
||||
dragHelper = panel.availableThemes.find("li[name='atom-dark-ui']").clone()
|
||||
panel.enabledThemes.prepend(dragHelper)
|
||||
panel.enabledThemes.sortable('option', 'receive')(null, helper: dragHelper[0])
|
||||
panel.enabledThemes.sortable('option', 'update')()
|
||||
expect(config.get('core.themes')).toEqual ['atom-dark-ui', 'atom-dark-syntax']
|
||||
@@ -33,7 +33,8 @@ class ThemeConfigPanel extends ConfigPanel
|
||||
@enabledThemes.append(@buildThemeLi(name))
|
||||
|
||||
@enabledThemes.sortable
|
||||
receive: @receiveEnabledTheme
|
||||
receive: (e, ui) => @enabledThemeReceived($(ui.helper))
|
||||
update: => @enabledThemesUpdated()
|
||||
|
||||
buildThemeLi: (name, {draggable} = {}) ->
|
||||
li = $$ ->
|
||||
@@ -50,7 +51,16 @@ class ThemeConfigPanel extends ConfigPanel
|
||||
else
|
||||
li
|
||||
|
||||
receiveEnabledTheme: (e, ui) =>
|
||||
name = $(ui.helper).attr('name')
|
||||
enabledThemeReceived: (helper) ->
|
||||
console.log "RECEIVE", helper
|
||||
name = helper.attr('name')
|
||||
@enabledThemes.find("[name='#{name}']:not('.ui-draggable')").remove()
|
||||
@enabledThemes.find(".ui-draggable").removeClass('ui-draggable')
|
||||
|
||||
enabledThemesUpdated: ->
|
||||
console.log "enabledThemesUpdated"
|
||||
console.log @getEnabledThemeNames()
|
||||
config.set('core.themes', @getEnabledThemeNames())
|
||||
|
||||
getEnabledThemeNames: ->
|
||||
$(li).attr('name') for li in @enabledThemes.children().toArray()
|
||||
|
||||
Reference in New Issue
Block a user