Remove link support from Menu
- Not needed anymore since every link item has been rewritten as a button. Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
This commit is contained in:
parent
332fbdda84
commit
008f3601ca
5 changed files with 18 additions and 43 deletions
|
@ -36,7 +36,6 @@ export class RoomViewModel extends ViewModel {
|
||||||
}
|
}
|
||||||
this._clearUnreadTimout = null;
|
this._clearUnreadTimout = null;
|
||||||
this._closeUrl = this.urlCreator.urlUntilSegment("session");
|
this._closeUrl = this.urlCreator.urlUntilSegment("session");
|
||||||
this._detailsUrl = this.urlCreator.urlForSegment("details");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async load() {
|
async load() {
|
||||||
|
@ -104,7 +103,6 @@ export class RoomViewModel extends ViewModel {
|
||||||
get id() { return this._room.id; }
|
get id() { return this._room.id; }
|
||||||
get timelineViewModel() { return this._timelineVM; }
|
get timelineViewModel() { return this._timelineVM; }
|
||||||
get isEncrypted() { return this._room.isEncrypted; }
|
get isEncrypted() { return this._room.isEncrypted; }
|
||||||
get detailsUrl() { return this._detailsUrl; }
|
|
||||||
|
|
||||||
get error() {
|
get error() {
|
||||||
if (this._timelineError) {
|
if (this._timelineError) {
|
||||||
|
@ -289,6 +287,12 @@ export class RoomViewModel extends ViewModel {
|
||||||
get composerViewModel() {
|
get composerViewModel() {
|
||||||
return this._composerVM;
|
return this._composerVM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleDetailsPanel() {
|
||||||
|
let path = this.navigation.path.until("room");
|
||||||
|
path = path.with(this.navigation.segment("details", true));
|
||||||
|
this.navigation.applyPath(path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ComposerViewModel extends ViewModel {
|
class ComposerViewModel extends ViewModel {
|
||||||
|
|
|
@ -673,10 +673,8 @@ button.link {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding: 8px 32px 8px 8px;
|
padding: 8px 32px 8px 8px;
|
||||||
text-decoration: none;
|
|
||||||
font-size: 1.6rem;
|
font-size: 1.6rem;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
display: block;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,33 +17,15 @@ limitations under the License.
|
||||||
import {TemplateView} from "./TemplateView.js";
|
import {TemplateView} from "./TemplateView.js";
|
||||||
|
|
||||||
export class Menu extends TemplateView {
|
export class Menu extends TemplateView {
|
||||||
|
static option(label, callback) {
|
||||||
|
return new MenuOption(label, callback);
|
||||||
|
}
|
||||||
|
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
super();
|
super();
|
||||||
this._options = options;
|
this._options = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
static optionWithButton(label, callback) {
|
|
||||||
const option = new MenuOption(label);
|
|
||||||
option.setCallback(callback);
|
|
||||||
return option;
|
|
||||||
}
|
|
||||||
|
|
||||||
static optionWithLink(label, link) {
|
|
||||||
const option = new MenuOption(label);
|
|
||||||
option.setLink(link);
|
|
||||||
return option;
|
|
||||||
}
|
|
||||||
|
|
||||||
_convertToDOM(t, option) {
|
|
||||||
if (option.callback) {
|
|
||||||
return t.button({ className: "menu-item", onClick: option.callback }, option.label);
|
|
||||||
}
|
|
||||||
else if (option.link) {
|
|
||||||
return t.a({ className: "menu-item", href: option.link }, option.label);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
render(t) {
|
render(t) {
|
||||||
return t.ul({className: "menu", role: "menu"}, this._options.map(o => {
|
return t.ul({className: "menu", role: "menu"}, this._options.map(o => {
|
||||||
const className = {
|
const className = {
|
||||||
|
@ -55,28 +37,19 @@ export class Menu extends TemplateView {
|
||||||
}
|
}
|
||||||
return t.li({
|
return t.li({
|
||||||
className,
|
className,
|
||||||
}, this._convertToDOM(t, o));
|
}, t.button({className:"menu-item", onClick: o.callback}, o.label));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MenuOption {
|
class MenuOption {
|
||||||
constructor(label) {
|
constructor(label, callback) {
|
||||||
this.label = label;
|
this.label = label;
|
||||||
|
this.callback = callback;
|
||||||
this.icon = null;
|
this.icon = null;
|
||||||
this.destructive = false;
|
this.destructive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setCallback(callback) {
|
|
||||||
this.callback = callback;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
setLink(link) {
|
|
||||||
this.link = link;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
setIcon(className) {
|
setIcon(className) {
|
||||||
this.icon = className;
|
this.icon = className;
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -68,15 +68,15 @@ export class RoomView extends TemplateView {
|
||||||
} else {
|
} else {
|
||||||
const vm = this.value;
|
const vm = this.value;
|
||||||
const options = [];
|
const options = [];
|
||||||
options.push(Menu.optionWithLink(vm.i18n`Room details`, vm.detailsUrl))
|
options.push(Menu.option(vm.i18n`Room details`, () => vm.toggleDetailsPanel()))
|
||||||
if (vm.canLeave) {
|
if (vm.canLeave) {
|
||||||
options.push(Menu.optionWithButton(vm.i18n`Leave room`, () => vm.leaveRoom()).setDestructive());
|
options.push(Menu.option(vm.i18n`Leave room`, () => vm.leaveRoom()).setDestructive());
|
||||||
}
|
}
|
||||||
if (vm.canForget) {
|
if (vm.canForget) {
|
||||||
options.push(Menu.optionWithButton(vm.i18n`Forget room`, () => vm.forgetRoom()).setDestructive());
|
options.push(Menu.option(vm.i18n`Forget room`, () => vm.forgetRoom()).setDestructive());
|
||||||
}
|
}
|
||||||
if (vm.canRejoin) {
|
if (vm.canRejoin) {
|
||||||
options.push(Menu.optionWithButton(vm.i18n`Rejoin room`, () => vm.rejoinRoom()));
|
options.push(Menu.option(vm.i18n`Rejoin room`, () => vm.rejoinRoom()));
|
||||||
}
|
}
|
||||||
if (!options.length) {
|
if (!options.length) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -93,9 +93,9 @@ export class BaseMessageView extends TemplateView {
|
||||||
createMenuOptions(vm) {
|
createMenuOptions(vm) {
|
||||||
const options = [];
|
const options = [];
|
||||||
if (vm.canAbortSending) {
|
if (vm.canAbortSending) {
|
||||||
options.push(Menu.optionWithButton(vm.i18n`Cancel`, () => vm.abortSending()));
|
options.push(Menu.option(vm.i18n`Cancel`, () => vm.abortSending()));
|
||||||
} else if (vm.canRedact) {
|
} else if (vm.canRedact) {
|
||||||
options.push(Menu.optionWithButton(vm.i18n`Delete`, () => vm.redact()).setDestructive());
|
options.push(Menu.option(vm.i18n`Delete`, () => vm.redact()).setDestructive());
|
||||||
}
|
}
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue