Tower: upload laundry_management 19.0.19.0.4 (via marketplace)
This commit is contained in:
@@ -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' && 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' && 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' && 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>
|
||||
Reference in New Issue
Block a user