From 4ae16b32ddc9f4134a7c6284bf187ffb1a5cfe46 Mon Sep 17 00:00:00 2001 From: Nils Jacobsen Date: Thu, 6 Jun 2024 10:38:00 +0200 Subject: [PATCH] feat: add message when first pattern added to a language --- .../src/stories/inlang-message-bundle.ts | 11 ++++ .../src/stories/inlang-variant.ts | 61 +++++++++++-------- 2 files changed, 46 insertions(+), 26 deletions(-) diff --git a/inlang/source-code/message-bundle-component/src/stories/inlang-message-bundle.ts b/inlang/source-code/message-bundle-component/src/stories/inlang-message-bundle.ts index d23df0fb39..5f90ea75bf 100644 --- a/inlang/source-code/message-bundle-component/src/stories/inlang-message-bundle.ts +++ b/inlang/source-code/message-bundle-component/src/stories/inlang-message-bundle.ts @@ -48,6 +48,13 @@ export default class InlangMessageBundle extends LitElement { } } + _addMessage = (message: Message) => { + if (this.messageBundle) { + this.messageBundle.messages.push(message) + this.requestUpdate() + } + } + override async firstUpdated() { await this.updateComplete // override primitive colors to match the design system @@ -146,6 +153,8 @@ export default class InlangMessageBundle extends LitElement { .message=${message} .inputs=${this._fakeInputs()} .triggerSave=${this._triggerSave} + .addMessage=${this._addMessage} + .languageTag=${languageTag} .lintReports=${messageLintReports} >` ) @@ -153,6 +162,8 @@ export default class InlangMessageBundle extends LitElement { .message=${message} .inputs=${this._fakeInputs()} .triggerSave=${this._triggerSave} + .addMessage=${this._addMessage} + .languageTag=${languageTag} .lintReports=${messageLintReports} >`} diff --git a/inlang/source-code/message-bundle-component/src/stories/inlang-variant.ts b/inlang/source-code/message-bundle-component/src/stories/inlang-variant.ts index 916076a2fc..05854a30e7 100644 --- a/inlang/source-code/message-bundle-component/src/stories/inlang-variant.ts +++ b/inlang/source-code/message-bundle-component/src/stories/inlang-variant.ts @@ -1,4 +1,4 @@ -import type { Variant, Message } from "@inlang/sdk/v2" +import { type Variant, type Message, createMessage, type LanguageTag } from "@inlang/sdk/v2" import { LitElement, css, html } from "lit" import { customElement, property, state } from "lit/decorators.js" import upsertVariant from "../helper/crud/variant/upsert.js" @@ -89,6 +89,9 @@ export default class InlangVariant extends LitElement { @property() message: Message | undefined + @property() + languageTag: LanguageTag | undefined + @property() variant: Variant | undefined @@ -98,12 +101,41 @@ export default class InlangVariant extends LitElement { @property() lintReports: MessageLintReport[] | undefined + @property() + addMessage: (newMessage: Message) => void = () => {} + @property() triggerSave: () => void = () => {} @state() private _pattern: string | undefined = undefined + _save = () => { + if (this.message && this.variant && this._pattern) { + // upsert variant + upsertVariant({ + message: this.message, + variant: { + match: this.variant.match, + pattern: [ + { + type: "text", + value: this._pattern, + }, + ], + }, + }) + this.triggerSave() + } else { + // new message + if (this.languageTag && this._pattern) { + //TODO: only text pattern supported + this.addMessage(createMessage({ locale: this.languageTag, text: this._pattern })) + this.triggerSave() + } + } + } + private get _selectors(): string[] | undefined { // @ts-ignore - just for prototyping return this.message ? this.message.selectors.map((selector) => selector.arg.name) : undefined @@ -118,6 +150,7 @@ export default class InlangVariant extends LitElement { } override render() { + //console.log(this.message) return html`
${this.variant && this._matches ? this._matches.map((match) => html`
${match}
`) @@ -142,31 +175,7 @@ export default class InlangVariant extends LitElement { }} >
- { - if (this.message && this.variant && this._pattern) { - // upsert variant - upsertVariant({ - message: this.message, - variant: { - match: this.variant.match, - pattern: [ - { - type: "text", - value: this._pattern, - }, - ], - }, - }) - this.triggerSave() - } else { - // new message - console.info("TODO create new message") - } - }} - >Save + this._save()}>Save ${this.message?.selectors && this.message.selectors.length === 0 ? html`