mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-03-15 12:29:16 +01:00
Merge branch 'product-store_integration' into product-store
This commit is contained in:
commit
5a8aa747e5
@ -98,8 +98,8 @@ export const FormChecklist = <TFieldValues extends FieldValues, TOptionValue, TC
|
||||
})}
|
||||
</div>
|
||||
<div className="actions">
|
||||
<FabButton type="button" onClick={selectAll(onChange)} className="is-info">{t('app.shared.form_checklist.select_all')}</FabButton>
|
||||
<FabButton type="button" onClick={unselectAll(onChange)} className="is-info">{t('app.shared.form_checklist.unselect_all')}</FabButton>
|
||||
<FabButton type="button" onClick={selectAll(onChange)} className="is-secondary">{t('app.shared.form_checklist.select_all')}</FabButton>
|
||||
<FabButton type="button" onClick={unselectAll(onChange)} className="is-secondary">{t('app.shared.form_checklist.unselect_all')}</FabButton>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
|
@ -39,6 +39,7 @@ export const CloneProductModal: React.FC<CloneProductModalProps> = ({ isOpen, to
|
||||
|
||||
return (
|
||||
<FabModal title={t('app.admin.store.clone_product_model.clone_product')}
|
||||
closeButton
|
||||
isOpen={isOpen}
|
||||
toggleModal={toggleModal}
|
||||
width={ModalSize.medium}
|
||||
|
@ -64,7 +64,7 @@ export const CategoriesFilter: React.FC<CategoriesFilterProps> = ({ productCateg
|
||||
</label>
|
||||
))}
|
||||
</div>
|
||||
<FabButton onClick={() => onApplyFilters(selectedCategories)} className="is-info">{t('app.admin.store.categories_filter.filter_apply')}</FabButton>
|
||||
<FabButton onClick={() => onApplyFilters(selectedCategories)} className="is-secondary">{t('app.admin.store.categories_filter.filter_apply')}</FabButton>
|
||||
</div>
|
||||
</AccordionItem>
|
||||
</>
|
||||
|
@ -54,7 +54,7 @@ export const KeywordFilter: React.FC<KeywordFilterProps> = ({ onApplyFilters, cu
|
||||
<div className="content">
|
||||
<div className="group">
|
||||
<input type="text" onChange={event => handleKeywordTyping(event)} value={keyword} />
|
||||
<FabButton onClick={() => onApplyFilters(keyword || undefined)} className="is-info">{t('app.admin.store.keyword_filter.filter_apply')}</FabButton>
|
||||
<FabButton onClick={() => onApplyFilters(keyword || undefined)} className="is-secondary">{t('app.admin.store.keyword_filter.filter_apply')}</FabButton>
|
||||
</div>
|
||||
</div>
|
||||
</AccordionItem>
|
||||
|
@ -76,7 +76,7 @@ export const MachinesFilter: React.FC<MachinesFilterProps> = ({ allMachines, onE
|
||||
</label>
|
||||
))}
|
||||
</div>
|
||||
<FabButton onClick={() => onApplyFilters(selectedMachines)} className="is-info">{t('app.admin.store.machines_filter.filter_apply')}</FabButton>
|
||||
<FabButton onClick={() => onApplyFilters(selectedMachines)} className="is-secondary">{t('app.admin.store.machines_filter.filter_apply')}</FabButton>
|
||||
</div>
|
||||
</AccordionItem>
|
||||
</>
|
||||
|
@ -83,7 +83,7 @@ export const StockFilter: React.FC<StockFilterProps> = ({ onApplyFilters, curren
|
||||
defaultValue={0}
|
||||
type="number" />
|
||||
</div>
|
||||
<FabButton type="submit" className="is-info">{t('app.admin.store.stock_filter.filter_apply')}</FabButton>
|
||||
<FabButton type="submit" className="is-secondary">{t('app.admin.store.stock_filter.filter_apply')}</FabButton>
|
||||
</div>
|
||||
</form>
|
||||
</AccordionItem>
|
||||
|
@ -274,7 +274,7 @@ const Orders: React.FC<OrdersProps> = ({ currentUser, onError }) => {
|
||||
<div className='content'>
|
||||
<div className="group">
|
||||
<input type="text" value={reference} onChange={(event) => handleReferenceChanged(event.target.value)}/>
|
||||
<FabButton onClick={applyFilters('reference')} className="is-info">{t('app.admin.store.orders.filter_apply')}</FabButton>
|
||||
<FabButton onClick={applyFilters('reference')} className="is-secondary">{t('app.admin.store.orders.filter_apply')}</FabButton>
|
||||
</div>
|
||||
</div>
|
||||
</AccordionItem>
|
||||
@ -292,7 +292,7 @@ const Orders: React.FC<OrdersProps> = ({ currentUser, onError }) => {
|
||||
</label>
|
||||
))}
|
||||
</div>
|
||||
<FabButton onClick={applyFilters('states')} className="is-info">{t('app.admin.store.orders.filter_apply')}</FabButton>
|
||||
<FabButton onClick={applyFilters('states')} className="is-secondary">{t('app.admin.store.orders.filter_apply')}</FabButton>
|
||||
</div>
|
||||
</AccordionItem>
|
||||
<AccordionItem id={2}
|
||||
@ -303,7 +303,7 @@ const Orders: React.FC<OrdersProps> = ({ currentUser, onError }) => {
|
||||
<div className='content'>
|
||||
<div className="group">
|
||||
<MemberSelect noHeader value={user as User} onSelected={handleSelectMember} />
|
||||
<FabButton onClick={applyFilters('user')} className="is-info">{t('app.admin.store.orders.filter_apply')}</FabButton>
|
||||
<FabButton onClick={applyFilters('user')} className="is-secondary">{t('app.admin.store.orders.filter_apply')}</FabButton>
|
||||
</div>
|
||||
</div>
|
||||
</AccordionItem>
|
||||
@ -328,7 +328,7 @@ const Orders: React.FC<OrdersProps> = ({ currentUser, onError }) => {
|
||||
defaultValue={periodTo}
|
||||
type="date" />
|
||||
</div>
|
||||
<FabButton onClick={applyFilters('period')} className="is-info">{t('app.admin.store.orders.filter_apply')}</FabButton>
|
||||
<FabButton onClick={applyFilters('period')} className="is-secondary">{t('app.admin.store.orders.filter_apply')}</FabButton>
|
||||
</div>
|
||||
</div>
|
||||
</AccordionItem>
|
||||
|
@ -247,7 +247,7 @@ export const ProductForm: React.FC<ProductFormProps> = ({ product, title, onSucc
|
||||
<div className="grpBtn">
|
||||
{product.id &&
|
||||
<>
|
||||
<FabButton className="main-action-btn" onClick={toggleCloneModal}>{t('app.admin.store.product_form.clone')}</FabButton>
|
||||
<FabButton onClick={toggleCloneModal}>{t('app.admin.store.product_form.clone')}</FabButton>
|
||||
<CloneProductModal isOpen={openCloneModal} toggleModal={toggleCloneModal} product={product} onSuccess={onSuccess} onError={onError} />
|
||||
</>
|
||||
}
|
||||
@ -349,7 +349,7 @@ export const ProductForm: React.FC<ProductFormProps> = ({ product, title, onSucc
|
||||
</div>
|
||||
<FabButton
|
||||
onClick={addProductImage}
|
||||
className='is-info'
|
||||
className='is-secondary'
|
||||
icon={<Plus size={24} />}>
|
||||
{t('app.admin.store.product_form.add_product_image')}
|
||||
</FabButton>
|
||||
@ -422,7 +422,7 @@ export const ProductForm: React.FC<ProductFormProps> = ({ product, title, onSucc
|
||||
</div>
|
||||
<FabButton
|
||||
onClick={addProductFile}
|
||||
className='is-info'
|
||||
className='is-secondary'
|
||||
icon={<Plus size={24} />}>
|
||||
{t('app.admin.store.product_form.add_product_file')}
|
||||
</FabButton>
|
||||
|
@ -66,6 +66,9 @@
|
||||
&.is-info {
|
||||
@include colorVariant(var(--information), var(--gray-soft-lightest));
|
||||
}
|
||||
&.is-secondary {
|
||||
@include colorVariant(var(--secondary), var(--gray-hard-darkest));
|
||||
}
|
||||
&.is-black {
|
||||
@include colorVariant(var(--gray-hard-darkest), var(--gray-soft-lightest));
|
||||
}
|
||||
|
@ -200,7 +200,7 @@
|
||||
align-items: center;
|
||||
span { @include title-base; }
|
||||
}
|
||||
.gift { color: var(--information); }
|
||||
.gift { color: var(--gray-hard-dark); }
|
||||
}
|
||||
.total {
|
||||
display: flex;
|
||||
@ -214,7 +214,7 @@
|
||||
width: 100%;
|
||||
height: auto;
|
||||
padding: 1.6rem 0.8rem;
|
||||
background-color: var(--information);
|
||||
background-color: var(--main);
|
||||
border: none;
|
||||
color: var(--gray-soft-lightest);
|
||||
justify-content: center;
|
||||
|
@ -35,6 +35,7 @@
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,7 @@
|
||||
align-items: center;
|
||||
span { @include title-base; }
|
||||
}
|
||||
.gift { color: var(--information); }
|
||||
.gift { color: var(--gray-hard-dark); }
|
||||
.total {
|
||||
padding: 1.6rem 0 0;
|
||||
align-items: flex-start;
|
||||
|
@ -58,7 +58,7 @@
|
||||
margin-left: 2.4rem;
|
||||
@include text-sm;
|
||||
font-weight: 500;
|
||||
color: var(--information);
|
||||
color: var(--gray-hard-dark);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@
|
||||
span {
|
||||
margin-left: 0.8rem;
|
||||
@include text-xs;
|
||||
color: var(--information);
|
||||
color: var(--gray-hard-dark);
|
||||
}
|
||||
}
|
||||
.parent {
|
||||
@ -58,7 +58,7 @@
|
||||
}
|
||||
&.is-active > p {
|
||||
@include text-base(600);
|
||||
color: var(--information);
|
||||
color: var(--primary);
|
||||
.children {
|
||||
max-height: 1000px;
|
||||
}
|
||||
|
@ -12,9 +12,9 @@
|
||||
padding-left: 1.6rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: var(--information-light);
|
||||
background-color: var(--secondary-light);
|
||||
border-radius: 100px;
|
||||
color: var(--information-dark);
|
||||
color: var(--gray-hard-dark);
|
||||
overflow: hidden;
|
||||
p { margin: 0; }
|
||||
button {
|
||||
|
@ -21,7 +21,7 @@
|
||||
color: var(--gray-hard-darkest);
|
||||
}
|
||||
li:last-of-type:not(:first-of-type) span {
|
||||
color: var(--information);
|
||||
color: var(--gray-hard-dark);
|
||||
}
|
||||
span {
|
||||
color: var(--gray-hard-light);
|
||||
@ -137,12 +137,12 @@
|
||||
content: '';
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background-color: var(--information);
|
||||
background-color: var(--gray-hard-dark);
|
||||
z-index: -1;
|
||||
}
|
||||
span {
|
||||
padding: 0 1.6rem;
|
||||
color: var(--information);
|
||||
color: var(--gray-hard-dark);
|
||||
background-color: var(--gray-soft-lightest);
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +56,7 @@
|
||||
<input type="file" id="testFile" name="attachment" accept="*/*" required>
|
||||
</span>
|
||||
</div>
|
||||
<input type="submit" class="btn btn-warning" ng-disabled="mimeTestForm.$invalid || $isUploading">
|
||||
<input type="submit" class="btn btn-warning" ng-disabled="mimeTestForm.$invalid || $isUploading" value="{{ 'app.shared.buttons.save' | translate}}">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -67,7 +67,7 @@
|
||||
<text-setting name="tracking_id"
|
||||
settings="allSettings"
|
||||
label="app.admin.settings.privacy.tracking_id"
|
||||
placeholder="UA-000000-2">
|
||||
placeholder="G-XXXXXX-X">
|
||||
</text-setting>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1048,6 +1048,7 @@ de:
|
||||
validate_member_error: "An error occurred: impossible to validate from this member."
|
||||
invalidate_member_error: "An error occurred: impossible to invalidate from this member."
|
||||
supporting_documents: "Supporting documents"
|
||||
change_role: "Change role"
|
||||
#extend a subscription for free
|
||||
free_extend_modal:
|
||||
extend_subscription: "Abonnement verlängern"
|
||||
|
@ -1048,6 +1048,7 @@ en:
|
||||
validate_member_error: "An error occurred: impossible to validate from this member."
|
||||
invalidate_member_error: "An error occurred: impossible to invalidate from this member."
|
||||
supporting_documents: "Supporting documents"
|
||||
change_role: "Change role"
|
||||
# extend a subscription for free
|
||||
free_extend_modal:
|
||||
extend_subscription: "Extend the subscription"
|
||||
|
@ -1048,6 +1048,7 @@ es:
|
||||
validate_member_error: "An error occurred: impossible to validate from this member."
|
||||
invalidate_member_error: "An error occurred: impossible to invalidate from this member."
|
||||
supporting_documents: "Supporting documents"
|
||||
change_role: "Change role"
|
||||
#extend a subscription for free
|
||||
free_extend_modal:
|
||||
extend_subscription: "Extend the subscription"
|
||||
|
@ -1048,6 +1048,7 @@ fr:
|
||||
validate_member_error: "Une erreur est survenue : impossible de valider ce membre."
|
||||
invalidate_member_error: "Une erreur est survenue : impossible d'invalider ce membre."
|
||||
supporting_documents: "Pièces justificatives"
|
||||
change_role: "Changer le rôle"
|
||||
#extend a subscription for free
|
||||
free_extend_modal:
|
||||
extend_subscription: "Prolonger l'abonnement"
|
||||
@ -1421,7 +1422,7 @@ fr:
|
||||
overlapping_categories_info: "Éviter la réservation de créneaux qui se chevauchent sera effectué en comparant la date et l'heure des catégories de réservations suivantes."
|
||||
default_slot_duration: "Durée par défaut pour les créneaux"
|
||||
duration_minutes: "Durée (en minutes)"
|
||||
default_slot_duration_info: "Les disponibilités des machines et des espaces sont divisées en plusieurs créneaux de cette durée. Cette valeur peur être changée pour chaque disponibilité."
|
||||
default_slot_duration_info: "Les disponibilités des machines et des espaces sont divisées en plusieurs créneaux de cette durée. Cette valeur peut être changée pour chaque disponibilité."
|
||||
modules: "Modules"
|
||||
machines: "Machines"
|
||||
machines_info_html: "Le module Réserver une machine peut être désactivé."
|
||||
@ -1647,7 +1648,7 @@ fr:
|
||||
online_payment: "Le module de paiement par carte bancaire est-il actif ?"
|
||||
invoices: "Le module est facturation est-il actif ?"
|
||||
openlab: "Le module de partage de projets (OpenLab) est-il actif ?"
|
||||
tracking_id_info_html: "Pour activer les suivi statistique des visites utilisant Google Analytics V4, définissez ici votre ID de suivi. Il se présente sous la forme G-XXXXXX. Visitez <a href='https://analytics.google.com/analytics/web/' target='_blank'>le site web de Google Analytics</a> pour en obtenir un.<br/><strong>Attention :</strong> si vous activez cette fonctionnalité, une cookie sera créé. Pensez à l'indiquer dans votre politique de confidentialité, ci-dessus."
|
||||
tracking_id_info_html: "Pour activer les suivi statistique des visites utilisant Google Analytics V4, définissez ici votre ID de suivi. Il se présente sous la forme G-XXXXXX-X. Visitez <a href='https://analytics.google.com/analytics/web/' target='_blank'>le site web de Google Analytics</a> pour en obtenir un.<br/><strong>Attention :</strong> si vous activez cette fonctionnalité, une cookie sera créé. Pensez à l'indiquer dans votre politique de confidentialité, ci-dessus."
|
||||
tracking_id: "ID de suivi"
|
||||
open_api_clients:
|
||||
add_new_client: "Créer un compte client"
|
||||
|
@ -1048,6 +1048,7 @@
|
||||
validate_member_error: "An error occurred: impossible to validate from this member."
|
||||
invalidate_member_error: "An error occurred: impossible to invalidate from this member."
|
||||
supporting_documents: "Supporting documents"
|
||||
change_role: "Change role"
|
||||
#extend a subscription for free
|
||||
free_extend_modal:
|
||||
extend_subscription: "Forleng abonnementet"
|
||||
|
@ -1048,6 +1048,7 @@ pt:
|
||||
validate_member_error: "Ocorreu um erro: impossível validar este membro."
|
||||
invalidate_member_error: "Ocorreu um erro: impossível invalidar este membro."
|
||||
supporting_documents: "Documentos"
|
||||
change_role: "Change role"
|
||||
#extend a subscription for free
|
||||
free_extend_modal:
|
||||
extend_subscription: "Estender assinatura"
|
||||
|
@ -1048,6 +1048,7 @@ zu:
|
||||
validate_member_error: "crwdns25940:0crwdne25940:0"
|
||||
invalidate_member_error: "crwdns25942:0crwdne25942:0"
|
||||
supporting_documents: "crwdns25944:0crwdne25944:0"
|
||||
change_role: "crwdns31200:0crwdne31200:0"
|
||||
#extend a subscription for free
|
||||
free_extend_modal:
|
||||
extend_subscription: "crwdns25946:0crwdne25946:0"
|
||||
|
Loading…
x
Reference in New Issue
Block a user