This commit is contained in:
yumoqing 2025-09-28 11:16:21 +08:00
parent 8c1caa3f93
commit 32f4f90f1f
2 changed files with 28 additions and 28 deletions

View File

@ -45,33 +45,5 @@ bricks.MultipleStateImage = class extends bricks.Layout {
} }
} }
bricks.MultipleStateIcon = class extends bricks.Svg {
constructor(opts){
opts.url = opts.urls[opts.state];
super(opts);
this.state = opts.state;
this.urls = opts.urls;
this.bind('click', this.change_state.bind(this));
}
change_state(event){
event.stopPropagation();
var states = Object.keys(this.urls);
for (var i=0;i<states.length;i++){
if (states[i] == this.state){
var k = i + 1;
if (k >= states.length) k = 0;
this.set_state(states[k]);
this.dispatch('state_changed', this.state);
break;
}
}
}
set_state(state){
this.state = state;
this.set_url(this.urls[state]);
}
}
bricks.Factory.register('MultipleStateImage', bricks.MultipleStateImage); bricks.Factory.register('MultipleStateImage', bricks.MultipleStateImage);
bricks.Factory.register('MultipleStateIcon', bricks.MultipleStateIcon);

View File

@ -129,6 +129,34 @@ bricks.StatedSvg = class extends bricks.Svg {
if (! done) this.set_url(null); if (! done) this.set_url(null);
} }
} }
bricks.MultipleStateIcon = class extends bricks.Svg {
constructor(opts){
opts.url = opts.urls[opts.state];
super(opts);
this.state = opts.state;
this.urls = opts.urls;
this.bind('click', this.change_state.bind(this));
}
change_state(event){
event.stopPropagation();
var states = Object.keys(this.urls);
for (var i=0;i<states.length;i++){
if (states[i] == this.state){
var k = i + 1;
if (k >= states.length) k = 0;
this.set_state(states[k]);
this.dispatch('state_changed', this.state);
break;
}
}
}
set_state(state){
this.state = state;
this.set_url(this.urls[state]);
}
}
bricks.Factory.register('Svg', bricks.Svg); bricks.Factory.register('Svg', bricks.Svg);
bricks.Factory.register('StatedSvg', bricks.StatedSvg); bricks.Factory.register('StatedSvg', bricks.StatedSvg);
bricks.Factory.register('MultipleStateIcon', bricks.MultipleStateIcon);