mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
some tweaks into PickAddressType
This commit is contained in:
parent
6fccc70e41
commit
9a02665053
@ -10,6 +10,7 @@ use Symfony\Component\Form\FormBuilderInterface;
|
|||||||
use Symfony\Component\Form\FormInterface;
|
use Symfony\Component\Form\FormInterface;
|
||||||
use Symfony\Component\Form\FormView;
|
use Symfony\Component\Form\FormView;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Form type for picking an address.
|
* Form type for picking an address.
|
||||||
@ -32,10 +33,14 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
|
|||||||
final class PickAddressType extends AbstractType
|
final class PickAddressType extends AbstractType
|
||||||
{
|
{
|
||||||
private AddressToIdDataTransformer $addressToIdDataTransformer;
|
private AddressToIdDataTransformer $addressToIdDataTransformer;
|
||||||
|
private TranslatorInterface $translator;
|
||||||
|
|
||||||
public function __construct(AddressToIdDataTransformer $addressToIdDataTransformer)
|
public function __construct(
|
||||||
{
|
AddressToIdDataTransformer $addressToIdDataTransformer,
|
||||||
|
TranslatorInterface $translator
|
||||||
|
) {
|
||||||
$this->addressToIdDataTransformer = $addressToIdDataTransformer;
|
$this->addressToIdDataTransformer = $addressToIdDataTransformer;
|
||||||
|
$this->translator = $translator;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
@ -46,16 +51,20 @@ final class PickAddressType extends AbstractType
|
|||||||
public function buildView(FormView $view, FormInterface $form, array $options)
|
public function buildView(FormView $view, FormInterface $form, array $options)
|
||||||
{
|
{
|
||||||
$view->vars['uniqid'] = $view->vars['attr']['data-input-address'] =\uniqid('input_address_');
|
$view->vars['uniqid'] = $view->vars['attr']['data-input-address'] =\uniqid('input_address_');
|
||||||
$view->vars['attr']['data-use-valid-from'] = $options['useValidFrom'];
|
$view->vars['attr']['data-use-valid-from'] = (int) $options['use_valid_from'];
|
||||||
$view->vars['attr']['data-use-valid-to'] = $options['useValidTo'];
|
$view->vars['attr']['data-use-valid-to'] = (int) $options['use_valid_to'];
|
||||||
|
$view->vars['attr']['data-button-text-create'] = $this->translator->trans($options['button_text_create']);
|
||||||
|
$view->vars['attr']['data-button-text-update'] = $this->translator->trans($options['button_text_update']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
{
|
{
|
||||||
$resolver->setDefaults([
|
$resolver->setDefaults([
|
||||||
'class' => Address::class,
|
'class' => Address::class,
|
||||||
'useValidFrom' => false,
|
'use_valid_to' => false,
|
||||||
'useValidTo' => false,
|
'use_valid_from' => false,
|
||||||
|
'button_text_create' => 'Create an address',
|
||||||
|
'button_text_update' => 'Update address',
|
||||||
|
|
||||||
// reset default from hidden type
|
// reset default from hidden type
|
||||||
'required' => true,
|
'required' => true,
|
||||||
|
@ -267,6 +267,9 @@ export default {
|
|||||||
title: { create: 'add_an_address_title', edit: 'edit_address' },
|
title: { create: 'add_an_address_title', edit: 'edit_address' },
|
||||||
openPanesInModal: true,
|
openPanesInModal: true,
|
||||||
stickyActions: false,
|
stickyActions: false,
|
||||||
|
// show a message when no address.
|
||||||
|
// if set to undefined, the value will be equivalent to false if stickyActions is false, true otherwise.
|
||||||
|
showMessageWhenNoAddress: undefined,
|
||||||
useDate: {
|
useDate: {
|
||||||
validFrom: false,
|
validFrom: false,
|
||||||
validTo: false
|
validTo: false
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<span v-if="forceRedirect">{{ $t('wait_redirection') }}</span>
|
<span v-if="forceRedirect">{{ $t('wait_redirection') }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="noAddressWithStickyActions" class="mt-5">
|
<div v-if="showMessageWhenNoAddress" class="mt-5">
|
||||||
<p class="chill-no-data-statement">
|
<p class="chill-no-data-statement">
|
||||||
{{ $t('not_yet_address') }}
|
{{ $t('not_yet_address') }}
|
||||||
</p>
|
</p>
|
||||||
@ -50,8 +50,8 @@ export default {
|
|||||||
},
|
},
|
||||||
props: [
|
props: [
|
||||||
'context',
|
'context',
|
||||||
'options',
|
|
||||||
'defaultz',
|
'defaultz',
|
||||||
|
'options',
|
||||||
'flag',
|
'flag',
|
||||||
'entity',
|
'entity',
|
||||||
'errorMsg',
|
'errorMsg',
|
||||||
@ -91,7 +91,11 @@ export default {
|
|||||||
forceRedirect() {
|
forceRedirect() {
|
||||||
return (!(this.context.backUrl === null || typeof this.context.backUrl === 'undefined'));
|
return (!(this.context.backUrl === null || typeof this.context.backUrl === 'undefined'));
|
||||||
},
|
},
|
||||||
noAddressWithStickyActions() {
|
showMessageWhenNoAddress() {
|
||||||
|
let showMessageWhenNoAddress = this.options.showMessageWhenNoAddress === undefined ? this.defaultz.showMessageWhenNoAddress : this.options.showMessageWhenNoAddress;
|
||||||
|
if (showMessageWhenNoAddress === true || showMessageWhenNoAddress === false) {
|
||||||
|
return !this.context.edit && !this.address.id && showMessageWhenNoAddress;
|
||||||
|
}
|
||||||
return !this.context.edit && !this.address.id && this.options.stickyActions;
|
return !this.context.edit && !this.address.id && this.options.stickyActions;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,8 +14,6 @@ inputs.forEach(el => {
|
|||||||
addressId = el.value,
|
addressId = el.value,
|
||||||
uniqid = el.dataset.inputAddress,
|
uniqid = el.dataset.inputAddress,
|
||||||
container = document.querySelector('div[data-input-address-container="' + uniqid + '"]'),
|
container = document.querySelector('div[data-input-address-container="' + uniqid + '"]'),
|
||||||
currentTarget = el,
|
|
||||||
i = 0,
|
|
||||||
isEdit = addressId !== '',
|
isEdit = addressId !== '',
|
||||||
addressIdInt = addressId !== '' ? parseInt(addressId) : null
|
addressIdInt = addressId !== '' ? parseInt(addressId) : null
|
||||||
;
|
;
|
||||||
@ -23,6 +21,7 @@ inputs.forEach(el => {
|
|||||||
if (container === null) {
|
if (container === null) {
|
||||||
throw Error("no container");
|
throw Error("no container");
|
||||||
}
|
}
|
||||||
|
console.log('useValidFrom', el.dataset.useValidFrom === '1');
|
||||||
|
|
||||||
const app = createApp({
|
const app = createApp({
|
||||||
template: `<app v-bind:addAddress="this.addAddress" @address-created="associateToInput"></app>`,
|
template: `<app v-bind:addAddress="this.addAddress" @address-created="associateToInput"></app>`,
|
||||||
@ -43,11 +42,11 @@ inputs.forEach(el => {
|
|||||||
/// null value take default component value defined in AddAddress data()
|
/// null value take default component value defined in AddAddress data()
|
||||||
button: {
|
button: {
|
||||||
text: {
|
text: {
|
||||||
create: null,
|
create: el.dataset.buttonTextCreate || null,
|
||||||
edit: null,
|
edit: el.dataset.buttonTextUpdate || null,
|
||||||
},
|
},
|
||||||
size: null,
|
size: null,
|
||||||
displayText: false
|
displayText: true
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Modal title text if create or edit address (trans chain, see i18n)
|
/// Modal title text if create or edit address (trans chain, see i18n)
|
||||||
@ -61,11 +60,12 @@ inputs.forEach(el => {
|
|||||||
|
|
||||||
/// Display actions buttons of panes in a sticky-form-button navbar
|
/// Display actions buttons of panes in a sticky-form-button navbar
|
||||||
stickyActions: false,
|
stickyActions: false,
|
||||||
|
showMessageWhenNoAddress: true,
|
||||||
|
|
||||||
/// Use Date fields
|
/// Use Date fields
|
||||||
useDate: {
|
useDate: {
|
||||||
validFrom: el.dataset.useValidFrom === 'true', //boolean, default: false
|
validFrom: el.dataset.useValidFrom === '1' || false, //boolean, default: false
|
||||||
validTo: el.dataset.useValidTo === 'true' //boolean, default: false
|
validTo: el.dataset.useValidTo === '1' || false, //boolean, default: false
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Don't display show renderbox Address: showPane display only a button
|
/// Don't display show renderbox Address: showPane display only a button
|
||||||
@ -76,7 +76,6 @@ inputs.forEach(el => {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
associateToInput(payload) {
|
associateToInput(payload) {
|
||||||
console.log(payload);
|
|
||||||
el.value = payload.addressId;
|
el.value = payload.addressId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,6 +84,8 @@ address more:
|
|||||||
extra: ""
|
extra: ""
|
||||||
distribution: cedex
|
distribution: cedex
|
||||||
Create a new address: Créer une nouvelle adresse
|
Create a new address: Créer une nouvelle adresse
|
||||||
|
Create an address: Créer une adresse
|
||||||
|
Update address: Modifier l'adresse
|
||||||
|
|
||||||
#serach
|
#serach
|
||||||
Your search is empty. Please provide search terms.: La recherche est vide. Merci de fournir des termes de recherche.
|
Your search is empty. Please provide search terms.: La recherche est vide. Merci de fournir des termes de recherche.
|
||||||
|
@ -89,28 +89,6 @@ class ThirdPartyType extends AbstractType
|
|||||||
])
|
])
|
||||||
;
|
;
|
||||||
|
|
||||||
/*
|
|
||||||
$builder
|
|
||||||
/*
|
|
||||||
->add('address', HiddenType::class)
|
|
||||||
->get('address')
|
|
||||||
->addModelTransformer(new CallbackTransformer(
|
|
||||||
function (?Address $address): string {
|
|
||||||
if (null === $address) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
return $address->getId();
|
|
||||||
},
|
|
||||||
function (?string $addressId): ?Address {
|
|
||||||
if (null === $addressId) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return $this->om
|
|
||||||
->getRepository(Address::class)
|
|
||||||
->findOneBy(['id' => (int) $addressId]);
|
|
||||||
}
|
|
||||||
))*/
|
|
||||||
|
|
||||||
// Contact Person ThirdParty (child)
|
// Contact Person ThirdParty (child)
|
||||||
if (ThirdParty::KIND_CONTACT === $options['kind'] || ThirdParty::KIND_CHILD === $options['kind']) {
|
if (ThirdParty::KIND_CONTACT === $options['kind'] || ThirdParty::KIND_CHILD === $options['kind']) {
|
||||||
$builder
|
$builder
|
||||||
@ -152,6 +130,12 @@ class ThirdPartyType extends AbstractType
|
|||||||
->add('address', PickAddressType::class, [
|
->add('address', PickAddressType::class, [
|
||||||
'label' => 'Address'
|
'label' => 'Address'
|
||||||
])
|
])
|
||||||
|
->add('address2', PickAddressType::class, [
|
||||||
|
'label' => 'Address',
|
||||||
|
'use_valid_from' => true,
|
||||||
|
'use_valid_to' => true,
|
||||||
|
'mapped' => false,
|
||||||
|
])
|
||||||
->add('nameCompany', TextType::class, [
|
->add('nameCompany', TextType::class, [
|
||||||
'label' => 'thirdparty.NameCompany',
|
'label' => 'thirdparty.NameCompany',
|
||||||
'required' => false
|
'required' => false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user