0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-22 17:30:29 +01:00

Handle changes via callbacks instead of observers

Dieser Commit ist enthalten in:
Angus McLeod 2020-04-29 11:42:39 +10:00
Ursprung e2b1c9e69f
Commit 2844a75f30
8 geänderte Dateien mit 63 neuen und 31 gelöschten Zeilen

Datei anzeigen

@ -25,8 +25,10 @@ export default Component.extend({
} }
}, },
@observes('connector') actions: {
updated() { changeConnector(value) {
this.onUpdate('connector'); this.set('connector', value);
this.onUpdate('connector', this.connectorType);
}
} }
}); });

Datei anzeigen

@ -24,10 +24,14 @@ export default Component.extend({
this.send('addPair'); this.send('addPair');
} }
if (this.hasOutput && !this.input.outputConnector) { if (this.hasOutput) {
const options = this.options; this.set('input.output', null);
this.set('input.output_type', defaultSelectionType('output', options));
this.set('input.output_connector', defaultConnector('output', this.inputType, options)); if (!this.input.outputConnector) {
const options = this.options;
this.set('input.output_type', defaultSelectionType('output', options));
this.set('input.output_connector', defaultConnector('output', this.inputType, options));
}
} }
}, },

Datei anzeigen

@ -72,16 +72,6 @@ export default Component.extend({
return type ? I18n.t(`admin.wizard.selector.label.${snakeCase(type)}`) : null; return type ? I18n.t(`admin.wizard.selector.label.${snakeCase(type)}`) : null;
}, },
@observes('inputType')
resetActiveType() {
this.set('activeType', defaultSelectionType(this.selectorType, this.options));
},
@observes('activeType')
clearValue() {
this.set('value', null);
},
@discourseComputed('activeType') @discourseComputed('activeType')
comboBoxContent(activeType) { comboBoxContent(activeType) {
const controller = getOwner(this).lookup('controller:admin-wizards-wizard-show'); const controller = getOwner(this).lookup('controller:admin-wizards-wizard-show');
@ -167,19 +157,38 @@ export default Component.extend({
return this.activeType === type && this[`${type}Enabled`]; return this.activeType === type && this[`${type}Enabled`];
}, },
@observes('activeType', 'value') changeValue(value) {
updated() { this.set('value', value);
this.onUpdate('selector'); this.onUpdate('selector', this.activeType);
},
@observes('inputType')
resetActiveType() {
this.set('activeType', defaultSelectionType(this.selectorType, this.options));
}, },
actions: { actions: {
toggleType(type) { toggleType(type) {
this.set('activeType', type); this.set('activeType', type);
this.set('showTypes', false); this.set('showTypes', false);
this.set('value', null);
this.onUpdate('selector');
}, },
toggleTypes() { toggleTypes() {
this.toggleProperty('showTypes'); this.toggleProperty('showTypes');
},
changeValue(value) {
this.changeValue(value);
},
changeInputValue(event) {
this.changeValue(event.target.value);
},
changeUserValue(previousValue, value) {
this.changeValue(value);
} }
} }
}) })

Datei anzeigen

@ -77,8 +77,8 @@ export default Component.extend({
this.onUpdate(this.property, 'input'); this.onUpdate(this.property, 'input');
}, },
inputUpdated(type) { inputUpdated(component, type) {
this.onUpdate(this.property, type); this.onUpdate(this.property, component, type);
} }
} }
}); });

Datei anzeigen

@ -0,0 +1,12 @@
import ValueList from 'admin/components/value-list';
export default ValueList.extend({
_saveValues() {
if (this.inputType === "array") {
this.onChange(this.collection);
return;
}
this.onChange(this.collection.join(this.inputDelimiter || "\n"));
}
})

Datei anzeigen

@ -117,8 +117,9 @@ export default Mixin.create({
this.setupObservers(type); this.setupObservers(type);
}, },
mappedFieldUpdated(property, type) { mappedFieldUpdated(property, mappedComponent, type) {
this.get(this.componentType).notifyPropertyChange(property); const obj = this.get(this.componentType);
obj.notifyPropertyChange(property);
} }
} }
}) })

Datei anzeigen

@ -2,7 +2,7 @@
{{combo-box {{combo-box
value=connector value=connector
content=connectors content=connectors
onChange=(action (mut connector))}} onChange=(action "changeConnector")}}
{{else}} {{else}}
{{#if connector}} {{#if connector}}
<span class="connector-single"> <span class="connector-single">

Datei anzeigen

@ -24,14 +24,15 @@
{{input {{input
type="text" type="text"
value=value value=value
placeholder=(i18n placeholderKey)}} placeholder=(i18n placeholderKey)
change=(action "changeInputValue")}}
{{/if}} {{/if}}
{{#if showComboBox}} {{#if showComboBox}}
{{combo-box {{combo-box
value=value value=value
content=comboBoxContent content=comboBoxContent
onChange=(action (mut value)) onChange=(action "changeValue")
options=(hash options=(hash
none=placeholderKey none=placeholderKey
)}} )}}
@ -41,19 +42,21 @@
{{multi-select {{multi-select
content=multiSelectContent content=multiSelectContent
value=value value=value
onChange=(action (mut value)) onChange=(action "changeValue")
options=multiSelectOptions}} options=multiSelectOptions}}
{{/if}} {{/if}}
{{#if showList}} {{#if showList}}
{{value-list {{wizard-value-list
values=value values=value
addKey=placeholderKey}} addKey=placeholderKey
onChange=(action "changeValue")}}
{{/if}} {{/if}}
{{#if showTag}} {{#if showTag}}
{{tag-chooser {{tag-chooser
tags=value tags=value
onChange=(action "changeValue")
options=(hash options=(hash
none=placeholderKey none=placeholderKey
filterable=true filterable=true
@ -65,6 +68,7 @@
includeMessageableGroups='true' includeMessageableGroups='true'
placeholderKey=placeholderKey placeholderKey=placeholderKey
usernames=value usernames=value
autocomplete="discourse"}} autocomplete="discourse"
onChangeCallback=(action "changeUserValue")}}
{{/if}} {{/if}}
</div> </div>