"use strict"; class Inline_Edit_Field extends Component { on_ready() { this.current_value = this.args.value || ''; // Enter edit mode this.$sid('display_mode').on('click', () => { this.enter_edit_mode(); }); // Save this.$sid('save_btn').on('click', () => { this.save(); }); // Cancel this.$sid('cancel_btn').on('click', () => { this.cancel(); }); // Save on Enter, cancel on Escape this.$sid('input').on('keydown', e => { if (e.key === 'Enter') { e.preventDefault(); this.save(); } else if (e.key === 'Escape') { e.preventDefault(); this.cancel(); } }); } enter_edit_mode() { const $input = this.$sid('input'); $input.val(this.current_value); this.$sid('display_mode').hide(); this.$sid('edit_mode').show(); $input.focus(); $input.select(); } exit_edit_mode() { this.$sid('edit_mode').hide(); this.$sid('display_mode').show(); } save() { const new_value = this.$sid('input').val(); if (new_value === this.current_value) { this.exit_edit_mode(); return; } // Trigger callback if (this.args.on_save) { const result = this.args.on_save(new_value, this.current_value); // If callback returns false, don't save if (result === false) { return; } // If callback returns a promise, wait for it if (result && typeof result.then === 'function') { this.show_saving(); result.then(() => { this.current_value = new_value; this.update_display(); this.exit_edit_mode(); }).catch(() => { this.exit_edit_mode(); }); return; } } this.current_value = new_value; this.update_display(); this.exit_edit_mode(); } cancel() { this.exit_edit_mode(); } update_display() { const display = this.current_value || this.args.placeholder || 'Click to edit'; this.$sid('value_display').text(display); } show_saving() { this.$sid('save_btn').prop('disabled', true).html(''); this.$sid('cancel_btn').prop('disabled', true); } get_value() { return this.current_value; } set_value(value) { this.current_value = value; this.update_display(); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbmxpbmVfRWRpdF9GaWVsZCIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9yZWFkeSIsImN1cnJlbnRfdmFsdWUiLCJhcmdzIiwidmFsdWUiLCIkaWQiLCJvbiIsImVudGVyX2VkaXRfbW9kZSIsInNhdmUiLCJjYW5jZWwiLCJlIiwia2V5IiwicHJldmVudERlZmF1bHQiLCIkaW5wdXQiLCJ2YWwiLCJoaWRlIiwic2hvdyIsImZvY3VzIiwic2VsZWN0IiwiZXhpdF9lZGl0X21vZGUiLCJuZXdfdmFsdWUiLCJvbl9zYXZlIiwicmVzdWx0IiwidGhlbiIsInNob3dfc2F2aW5nIiwidXBkYXRlX2Rpc3BsYXkiLCJjYXRjaCIsImRpc3BsYXkiLCJwbGFjZWhvbGRlciIsInRleHQiLCJwcm9wIiwiaHRtbCIsImdldF92YWx1ZSIsInNldF92YWx1ZSJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL0lubGluZV9FZGl0X0ZpZWxkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIElubGluZV9FZGl0X0ZpZWxkIGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgb25fcmVhZHkoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudF92YWx1ZSA9IHRoaXMuYXJncy52YWx1ZSB8fCAnJztcblxuICAgICAgICAvLyBFbnRlciBlZGl0IG1vZGVcbiAgICAgICAgdGhpcy4kaWQoJ2Rpc3BsYXlfbW9kZScpLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJfZWRpdF9tb2RlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhdmVcbiAgICAgICAgdGhpcy4kaWQoJ3NhdmVfYnRuJykub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zYXZlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENhbmNlbFxuICAgICAgICB0aGlzLiRpZCgnY2FuY2VsX2J0bicpLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhdmUgb24gRW50ZXIsIGNhbmNlbCBvbiBFc2NhcGVcbiAgICAgICAgdGhpcy4kaWQoJ2lucHV0Jykub24oJ2tleWRvd24nLCAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZW50ZXJfZWRpdF9tb2RlKCkge1xuICAgICAgICBjb25zdCAkaW5wdXQgPSB0aGlzLiRpZCgnaW5wdXQnKTtcbiAgICAgICAgJGlucHV0LnZhbCh0aGlzLmN1cnJlbnRfdmFsdWUpO1xuXG4gICAgICAgIHRoaXMuJGlkKCdkaXNwbGF5X21vZGUnKS5oaWRlKCk7XG4gICAgICAgIHRoaXMuJGlkKCdlZGl0X21vZGUnKS5zaG93KCk7XG5cbiAgICAgICAgJGlucHV0LmZvY3VzKCk7XG4gICAgICAgICRpbnB1dC5zZWxlY3QoKTtcbiAgICB9XG5cbiAgICBleGl0X2VkaXRfbW9kZSgpIHtcbiAgICAgICAgdGhpcy4kaWQoJ2VkaXRfbW9kZScpLmhpZGUoKTtcbiAgICAgICAgdGhpcy4kaWQoJ2Rpc3BsYXlfbW9kZScpLnNob3coKTtcbiAgICB9XG5cbiAgICBzYXZlKCkge1xuICAgICAgICBjb25zdCBuZXdfdmFsdWUgPSB0aGlzLiRpZCgnaW5wdXQnKS52YWwoKTtcblxuICAgICAgICBpZiAobmV3X3ZhbHVlID09PSB0aGlzLmN1cnJlbnRfdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZXhpdF9lZGl0X21vZGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyaWdnZXIgY2FsbGJhY2tcbiAgICAgICAgaWYgKHRoaXMuYXJncy5vbl9zYXZlKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmFyZ3Mub25fc2F2ZShuZXdfdmFsdWUsIHRoaXMuY3VycmVudF92YWx1ZSk7XG5cbiAgICAgICAgICAgIC8vIElmIGNhbGxiYWNrIHJldHVybnMgZmFsc2UsIGRvbid0IHNhdmVcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBJZiBjYWxsYmFjayByZXR1cm5zIGEgcHJvbWlzZSwgd2FpdCBmb3IgaXRcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93X3NhdmluZygpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50X3ZhbHVlID0gbmV3X3ZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZV9kaXNwbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhpdF9lZGl0X21vZGUoKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhpdF9lZGl0X21vZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJlbnRfdmFsdWUgPSBuZXdfdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlX2Rpc3BsYXkoKTtcbiAgICAgICAgdGhpcy5leGl0X2VkaXRfbW9kZSgpO1xuICAgIH1cblxuICAgIGNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5leGl0X2VkaXRfbW9kZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZV9kaXNwbGF5KCkge1xuICAgICAgICBjb25zdCBkaXNwbGF5ID0gdGhpcy5jdXJyZW50X3ZhbHVlIHx8IHRoaXMuYXJncy5wbGFjZWhvbGRlciB8fCAnQ2xpY2sgdG8gZWRpdCc7XG4gICAgICAgIHRoaXMuJGlkKCd2YWx1ZV9kaXNwbGF5JykudGV4dChkaXNwbGF5KTtcbiAgICB9XG5cbiAgICBzaG93X3NhdmluZygpIHtcbiAgICAgICAgdGhpcy4kaWQoJ3NhdmVfYnRuJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKS5odG1sKCc8c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCI+PC9zcGFuPicpO1xuICAgICAgICB0aGlzLiRpZCgnY2FuY2VsX2J0bicpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgZ2V0X3ZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50X3ZhbHVlO1xuICAgIH1cblxuICAgIHNldF92YWx1ZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRfdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVfZGlzcGxheSgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxpQkFBaUIsU0FBU0MsZ0JBQWdCLENBQUM7RUFDN0NDLFFBQVFBLENBQUEsRUFBRztJQUNQLElBQUksQ0FBQ0MsYUFBYSxHQUFHLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLElBQUksRUFBRTs7SUFFMUM7SUFDQSxJQUFJLENBQUNDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQ0MsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNO01BQ3ZDLElBQUksQ0FBQ0MsZUFBZSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDOztJQUVGO0lBQ0EsSUFBSSxDQUFDRixHQUFHLENBQUMsVUFBVSxDQUFDLENBQUNDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUNuQyxJQUFJLENBQUNFLElBQUksQ0FBQyxDQUFDO0lBQ2YsQ0FBQyxDQUFDOztJQUVGO0lBQ0EsSUFBSSxDQUFDSCxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUNDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUNyQyxJQUFJLENBQUNHLE1BQU0sQ0FBQyxDQUFDO0lBQ2pCLENBQUMsQ0FBQzs7SUFFRjtJQUNBLElBQUksQ0FBQ0osR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDQyxFQUFFLENBQUMsU0FBUyxFQUFHSSxDQUFDLElBQUs7TUFDbkMsSUFBSUEsQ0FBQyxDQUFDQyxHQUFHLEtBQUssT0FBTyxFQUFFO1FBQ25CRCxDQUFDLENBQUNFLGNBQWMsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQ0osSUFBSSxDQUFDLENBQUM7TUFDZixDQUFDLE1BQU0sSUFBSUUsQ0FBQyxDQUFDQyxHQUFHLEtBQUssUUFBUSxFQUFFO1FBQzNCRCxDQUFDLENBQUNFLGNBQWMsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQ0gsTUFBTSxDQUFDLENBQUM7TUFDakI7SUFDSixDQUFDLENBQUM7RUFDTjtFQUVBRixlQUFlQSxDQUFBLEVBQUc7SUFDZCxNQUFNTSxNQUFNLEdBQUcsSUFBSSxDQUFDUixHQUFHLENBQUMsT0FBTyxDQUFDO0lBQ2hDUSxNQUFNLENBQUNDLEdBQUcsQ0FBQyxJQUFJLENBQUNaLGFBQWEsQ0FBQztJQUU5QixJQUFJLENBQUNHLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQ1UsSUFBSSxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDVixHQUFHLENBQUMsV0FBVyxDQUFDLENBQUNXLElBQUksQ0FBQyxDQUFDO0lBRTVCSCxNQUFNLENBQUNJLEtBQUssQ0FBQyxDQUFDO0lBQ2RKLE1BQU0sQ0FBQ0ssTUFBTSxDQUFDLENBQUM7RUFDbkI7RUFFQUMsY0FBY0EsQ0FBQSxFQUFHO0lBQ2IsSUFBSSxDQUFDZCxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUNVLElBQUksQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQ1YsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDVyxJQUFJLENBQUMsQ0FBQztFQUNuQztFQUVBUixJQUFJQSxDQUFBLEVBQUc7SUFDSCxNQUFNWSxTQUFTLEdBQUcsSUFBSSxDQUFDZixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUNTLEdBQUcsQ0FBQyxDQUFDO0lBRXpDLElBQUlNLFNBQVMsS0FBSyxJQUFJLENBQUNsQixhQUFhLEVBQUU7TUFDbEMsSUFBSSxDQUFDaUIsY0FBYyxDQUFDLENBQUM7TUFDckI7SUFDSjs7SUFFQTtJQUNBLElBQUksSUFBSSxDQUFDaEIsSUFBSSxDQUFDa0IsT0FBTyxFQUFFO01BQ25CLE1BQU1DLE1BQU0sR0FBRyxJQUFJLENBQUNuQixJQUFJLENBQUNrQixPQUFPLENBQUNELFNBQVMsRUFBRSxJQUFJLENBQUNsQixhQUFhLENBQUM7O01BRS9EO01BQ0EsSUFBSW9CLE1BQU0sS0FBSyxLQUFLLEVBQUU7UUFDbEI7TUFDSjs7TUFFQTtNQUNBLElBQUlBLE1BQU0sSUFBSSxPQUFPQSxNQUFNLENBQUNDLElBQUksS0FBSyxVQUFVLEVBQUU7UUFDN0MsSUFBSSxDQUFDQyxXQUFXLENBQUMsQ0FBQztRQUNsQkYsTUFBTSxDQUFDQyxJQUFJLENBQUMsTUFBTTtVQUNkLElBQUksQ0FBQ3JCLGFBQWEsR0FBR2tCLFNBQVM7VUFDOUIsSUFBSSxDQUFDSyxjQUFjLENBQUMsQ0FBQztVQUNyQixJQUFJLENBQUNOLGNBQWMsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDTyxLQUFLLENBQUMsTUFBTTtVQUNYLElBQUksQ0FBQ1AsY0FBYyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBQ0Y7TUFDSjtJQUNKO0lBRUEsSUFBSSxDQUFDakIsYUFBYSxHQUFHa0IsU0FBUztJQUM5QixJQUFJLENBQUNLLGNBQWMsQ0FBQyxDQUFDO0lBQ3JCLElBQUksQ0FBQ04sY0FBYyxDQUFDLENBQUM7RUFDekI7RUFFQVYsTUFBTUEsQ0FBQSxFQUFHO0lBQ0wsSUFBSSxDQUFDVSxjQUFjLENBQUMsQ0FBQztFQUN6QjtFQUVBTSxjQUFjQSxDQUFBLEVBQUc7SUFDYixNQUFNRSxPQUFPLEdBQUcsSUFBSSxDQUFDekIsYUFBYSxJQUFJLElBQUksQ0FBQ0MsSUFBSSxDQUFDeUIsV0FBVyxJQUFJLGVBQWU7SUFDOUUsSUFBSSxDQUFDdkIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDd0IsSUFBSSxDQUFDRixPQUFPLENBQUM7RUFDM0M7RUFFQUgsV0FBV0EsQ0FBQSxFQUFHO0lBQ1YsSUFBSSxDQUFDbkIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDeUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLHdEQUF3RCxDQUFDO0lBQzFHLElBQUksQ0FBQzFCLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQ3lCLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO0VBQ2pEO0VBRUFFLFNBQVNBLENBQUEsRUFBRztJQUNSLE9BQU8sSUFBSSxDQUFDOUIsYUFBYTtFQUM3QjtFQUVBK0IsU0FBU0EsQ0FBQzdCLEtBQUssRUFBRTtJQUNiLElBQUksQ0FBQ0YsYUFBYSxHQUFHRSxLQUFLO0lBQzFCLElBQUksQ0FBQ3FCLGNBQWMsQ0FBQyxDQUFDO0VBQ3pCO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=