import {InitiativeTrackerConditionUtil} from "./dmscreen-initiativetracker-condition.js";
class _RenderableCollectionConditionsCustomEdit extends RenderableCollectionGenericRows {
constructor (
{
comp,
$wrpRows,
},
) {
super(comp, "conditionsCustom", $wrpRows);
}
/* -------------------------------------------- */
_populateRow ({comp, $wrpRow, entity}) {
const $iptName = ComponentUiUtil.$getIptStr(comp, "name");
const $iptColor = ComponentUiUtil.$getIptColor(comp, "color")
.addClass("w-100");
const $iptTurns = ComponentUiUtil.$getIptInt(comp, "turns", null, {isAllowNull: true, fallbackOnNaN: null})
.addClass("mr-2")
.placeholder("Unlimited");
const $btnDelete = this._utils.$getBtnDelete({entity});
$$($wrpRow)`
${$iptName}
${$iptColor}
${$iptTurns}
${$btnDelete}
`;
}
}
export class InitiativeTrackerConditionCustomEdit extends BaseComponent {
static _RenderState = class {
constructor () {
this.cbDoClose = null;
}
};
constructor ({conditionsCustom}) {
super();
this._state.conditionsCustom = conditionsCustom;
}
getConditionsCustom () {
return MiscUtil.copyFast(this._state.conditionsCustom);
}
async pGetShowModalResults () {
const rdState = new this.constructor._RenderState();
const {$modalInner, $modalFooter, doClose, pGetResolved} = UiUtil.getShowModal({
title: "Manage Custom Conditions",
isHeaderBorder: true,
hasFooter: true,
});
rdState.cbDoClose = doClose;
const $btnAdd = $(``)
.on("click", () => {
this._state.conditionsCustom = [...this._state.conditionsCustom, InitiativeTrackerConditionUtil.getNewRowState()];
});
const $wrpRows = $(``);
const compRows = new _RenderableCollectionConditionsCustomEdit({comp: this, $wrpRows});
this._addHookBase("conditionsCustom", () => compRows.render())();
$$($modalInner)`
Name
Color
Turns
${$btnAdd}
${$wrpRows}
`;
$$($modalFooter)`
${this._render_$getFooter({rdState})}
`;
return pGetResolved();
}
_render_$getFooter ({rdState}) {
const $btnSave = $(``)
.click(() => rdState.cbDoClose(true));
return $$`
${$btnSave}
`;
}
_getDefaultState () {
return {
conditionsCustom: [],
};
}
}