dbm
Version:
92 lines (75 loc) • 5.64 kB
JavaScript
import React from "react";
import Dbm from "../../index.js";
export default class EditLanguage extends Dbm.react.BaseObject {
_construct() {
super._construct();
this.item.requireProperty("availableLanguages", []);
{
let request = Dbm.getGraphApi().requestRange([{"type": "byObjectType", "objectType": "language"}], ["type"]);
this.item.propertyInput("languages", request.properties.items);
Dbm.flow.runWhenMatched(request.properties.status, Dbm.loading.LoadingStatus.LOADED, Dbm.commands.callFunction(this._languagesLoaded.bind(this), []));
}
}
_languagesLoaded() {
//console.log("_languagesLoaded");
//console.log(this.item.languages);
let availableLanguageCodes = Dbm.utils.ArrayFunctions.mapField(Dbm.getRepositoryItem("site").availableLanguages, "code");
let filteredLanguages = Dbm.utils.ArrayFunctions.filterByField(this.item.languages, "identifier", availableLanguageCodes, "inArray");
this.item.availableLanguages = filteredLanguages;
}
getFlagUrl(aLanguageCode) {
let countryCode = aLanguageCode;
if(aLanguageCode === "en") {
countryCode = "gb";
}
return "https://flagcdn.com/" + countryCode + ".svg";
}
_renderMainElement() {
return React.createElement("div", {},
React.createElement(Dbm.react.admin.editorsgroup.EditRelation, {direction: "in", relationType: "for", objectType: "language"},
React.createElement(Dbm.react.context.AddItemByIdToContext, {"id": Dbm.react.source.contextVariable("valueEditor.editValue.value"), "as": "language"},
React.createElement(Dbm.react.form.Dropdown, {},
React.createElement("div", {"data-slot": "button", "className": "standard-field standard-field-padding"},
React.createElement("div", {className: "flex-row micro-item-spacing vertically-center-items"},
React.createElement("div", {className: "flex-row-item flex-no-resize"},
React.createElement(Dbm.react.area.HasData, {check: Dbm.react.source.contextVariable("language.id")},
React.createElement("div", {className: "language-circle centered-cell-holder overflow-hidden"},
React.createElement(Dbm.react.image.Image, {"src": Dbm.core.source.command(Dbm.commands.callFunction(this.getFlagUrl, [Dbm.react.source.contextVariable("language.identifier")])), "className": "background-cover full-size"})
)
),
React.createElement(Dbm.react.area.HasData, {check: Dbm.react.source.contextVariable("language.id"), checkType: "invert/default"},
React.createElement("div", {className: "language-circle centered-cell-holder"},
)
)
),
React.createElement("div", {className: "flex-row-item flex-resize"},
React.createElement(Dbm.react.area.HasData, {check: Dbm.react.source.contextVariable("language.id")},
Dbm.react.text.text(Dbm.react.source.contextVariable("language.name"))
),
React.createElement(Dbm.react.area.HasData, {check: Dbm.react.source.contextVariable("language.id"), checkType: "invert/default"},
"Language"
)
),
React.createElement("div", {className: "flex-row-item flex-no-resize"},
"v"
)
)
),
React.createElement("div", {"className": "dropdown-menu-max-height standard-dropdown"},
React.createElement(Dbm.react.area.List, {items: this.item.properties.availableLanguages, "as": "availableLanguage"},
React.createElement(Dbm.react.interaction.CommandButton, {"commands": [
Dbm.commands.setProperty(Dbm.react.source.contextVariable("valueEditor.editValue.value"), Dbm.react.source.contextVariable("availableLanguage.id")),
Dbm.commands.setProperty(Dbm.react.source.contextVariable("open"), false)
]},
React.createElement("div", {className: "standard-dropdown-row standard-dropdown-row-padding hover-row cursor-pointer"},
Dbm.react.text.text(Dbm.react.source.contextVariable("availableLanguage.name"))
)
),
)
)
)
)
),
);
}
}