Tower: upload laundry_management 19.0.19.0.4 (via marketplace)

This commit is contained in:
2026-05-01 15:00:41 +00:00
parent 0254cac7fc
commit 9a69aa7709

View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<!--
Quick Create Customer popup (POS only).
Layout: Phone first (required), Name second (optional — falls back
to phone if left empty), Street last.
Title and labels are bound to component getters that wrap _t() so
Odoo's user-language switching applies. Do not put Arabic/English
strings side-by-side in any label.
-->
<t t-name="laundry_management.QuickCreatePartner">
<Dialog title="title" size="'md'">
<div class="p-3">
<!-- Phone / Mobile — required, first, autofocused -->
<div class="mb-3">
<label class="form-label fw-bold">
<t t-esc="labelPhone"/>
<span class="text-danger ms-1">*</span>
</label>
<input type="tel"
class="form-control form-control-lg"
t-att-class="{'is-invalid': state.phoneError}"
t-att-value="state.phone"
t-on-input="(ev) => { this.state.phone = ev.target.value; this.state.phoneError = false; }"
t-on-keydown="(ev) => ev.key === 'Enter' &amp;&amp; this.confirm()"
t-att-placeholder="placeholderPhone"
t-ref="phoneInput"
inputmode="tel"
autocomplete="tel"/>
<div t-if="state.phoneError" class="invalid-feedback"
t-esc="errorPhoneRequired"/>
</div>
<!-- Name — optional. If empty on confirm, the server
defaults the partner name to the phone number. -->
<div class="mb-3">
<label class="form-label">
<t t-esc="labelName"/>
<span class="text-muted ms-1" style="font-weight:400;"
t-esc="nameOptionalHint"/>
</label>
<input type="text"
class="form-control form-control-lg"
t-att-value="state.name"
t-on-input="(ev) => this.state.name = ev.target.value"
t-on-keydown="(ev) => ev.key === 'Enter' &amp;&amp; this.confirm()"
t-att-placeholder="placeholderName"/>
</div>
<!-- Street — fully optional -->
<div class="mb-3">
<label class="form-label text-muted"
t-esc="labelStreet"/>
<input type="text"
class="form-control form-control-lg"
t-att-value="state.street"
t-on-input="(ev) => this.state.street = ev.target.value"
t-on-keydown="(ev) => ev.key === 'Enter' &amp;&amp; this.confirm()"
t-att-placeholder="placeholderStreet"/>
</div>
</div>
<t t-set-slot="footer">
<button class="btn btn-primary btn-lg flex-fill"
t-on-click="confirm"
t-esc="labelCreate"/>
<button class="btn btn-secondary btn-lg flex-fill"
t-on-click="cancel"
t-esc="labelCancel"/>
</t>
</Dialog>
</t>
</templates>