@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
45 lines • 6.98 kB
JavaScript
import { combineLatest, isObservable, of } from 'rxjs';
import { map } from 'rxjs/operators';
import { gettext } from '../../i18n';
export class TranslateExtension {
constructor(translate, parser) {
this.translate = translate;
this.parser = parser;
}
prePopulate(field) {
const to = field.props || {};
if (!to.label || to._translated) {
return;
}
to._translated = true;
field.expressions = {
...(field.expressions || {}),
'props.label': to.label ? this.translate.stream(to.label) : to.label,
'props.description': to.description ? this.translate.stream(to.description) : to.description,
'props.placeholder': to.placeholder
? combineLatest([
this.translate.stream(to.placeholder),
this.translate.stream(gettext('e.g. {{ example }}')),
of(Boolean(to.removeExempliGratia))
]).pipe(map(([placeholder, expression, exempliGratia]) => !exempliGratia
? this.parser.interpolate(expression, { example: placeholder })
: placeholder))
: to.placeholder,
'props.options': (isObservable(to.options) ? to.options : of(to.options)).pipe(map((options) => (options || []).map(option => ({
...option,
label: this.translate.instant(option.label)
}))))
};
}
}
export function registerTranslateExtension(translate, parser) {
return {
extensions: [
{
name: 'translate',
extension: new TranslateExtension(translate, parser)
}
]
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvZHluYW1pYy1mb3Jtcy9pMThuL3RyYW5zbGF0ZS5leHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJDLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0IsU0FBMkIsRUFBVSxNQUF1QjtRQUE1RCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWlCO0lBQUcsQ0FBQztJQUNwRixXQUFXLENBQUMsS0FBd0I7UUFDbEMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdEIsS0FBSyxDQUFDLFdBQVcsR0FBRztZQUNsQixHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7WUFDNUIsYUFBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUs7WUFDcEUsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVztZQUM1RixtQkFBbUIsRUFBRSxFQUFFLENBQUMsV0FBVztnQkFDakMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztvQkFDWixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztvQkFDcEQsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQztpQkFDcEMsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUMvQyxDQUFDLGFBQWE7b0JBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDL0QsQ0FBQyxDQUFDLFdBQVcsQ0FDaEIsQ0FDRjtnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVc7WUFDbEIsZUFBZSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDNUUsR0FBRyxDQUFDLENBQUMsT0FBaUMsRUFBRSxFQUFFLENBQ3hDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdCLEdBQUcsTUFBTTtnQkFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUM1QyxDQUFDLENBQUMsQ0FDSixDQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxTQUEyQixFQUFFLE1BQXVCO0lBQzdGLE9BQU87UUFDTCxVQUFVLEVBQUU7WUFDVjtnQkFDRSxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLElBQUksa0JBQWtCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQzthQUNyRDtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGFyc2VyLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBpc09ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vLi4vaTE4bic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVFeHRlbnNpb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBwYXJzZXI6IFRyYW5zbGF0ZVBhcnNlcikge31cbiAgcHJlUG9wdWxhdGUoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSB7XG4gICAgY29uc3QgdG8gPSBmaWVsZC5wcm9wcyB8fCB7fTtcbiAgICBpZiAoIXRvLmxhYmVsIHx8IHRvLl90cmFuc2xhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdG8uX3RyYW5zbGF0ZWQgPSB0cnVlO1xuICAgIGZpZWxkLmV4cHJlc3Npb25zID0ge1xuICAgICAgLi4uKGZpZWxkLmV4cHJlc3Npb25zIHx8IHt9KSxcbiAgICAgICdwcm9wcy5sYWJlbCc6IHRvLmxhYmVsID8gdGhpcy50cmFuc2xhdGUuc3RyZWFtKHRvLmxhYmVsKSA6IHRvLmxhYmVsLFxuICAgICAgJ3Byb3BzLmRlc2NyaXB0aW9uJzogdG8uZGVzY3JpcHRpb24gPyB0aGlzLnRyYW5zbGF0ZS5zdHJlYW0odG8uZGVzY3JpcHRpb24pIDogdG8uZGVzY3JpcHRpb24sXG4gICAgICAncHJvcHMucGxhY2Vob2xkZXInOiB0by5wbGFjZWhvbGRlclxuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuc3RyZWFtKHRvLnBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLnN0cmVhbShnZXR0ZXh0KCdlLmcuIHt7IGV4YW1wbGUgfX0nKSksXG4gICAgICAgICAgICBvZihCb29sZWFuKHRvLnJlbW92ZUV4ZW1wbGlHcmF0aWEpKVxuICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtwbGFjZWhvbGRlciwgZXhwcmVzc2lvbiwgZXhlbXBsaUdyYXRpYV0pID0+XG4gICAgICAgICAgICAgICFleGVtcGxpR3JhdGlhXG4gICAgICAgICAgICAgICAgPyB0aGlzLnBhcnNlci5pbnRlcnBvbGF0ZShleHByZXNzaW9uLCB7IGV4YW1wbGU6IHBsYWNlaG9sZGVyIH0pXG4gICAgICAgICAgICAgICAgOiBwbGFjZWhvbGRlclxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiB0by5wbGFjZWhvbGRlcixcbiAgICAgICdwcm9wcy5vcHRpb25zJzogKGlzT2JzZXJ2YWJsZSh0by5vcHRpb25zKSA/IHRvLm9wdGlvbnMgOiBvZih0by5vcHRpb25zKSkucGlwZShcbiAgICAgICAgbWFwKChvcHRpb25zOiBBcnJheTx7IGxhYmVsOiBzdHJpbmcgfT4pID0+XG4gICAgICAgICAgKG9wdGlvbnMgfHwgW10pLm1hcChvcHRpb24gPT4gKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbixcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KG9wdGlvbi5sYWJlbClcbiAgICAgICAgICB9KSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcGFyc2VyOiBUcmFuc2xhdGVQYXJzZXIpIHtcbiAgcmV0dXJuIHtcbiAgICBleHRlbnNpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd0cmFuc2xhdGUnLFxuICAgICAgICBleHRlbnNpb246IG5ldyBUcmFuc2xhdGVFeHRlbnNpb24odHJhbnNsYXRlLCBwYXJzZXIpXG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuIl19