U
    dRfq                  	   @   s   d dl mZmZmZmZmZmZ d dlmZ ddl	m
Z
mZmZmZ ddlmZ ddlmZ ddlmZmZ dZd	d
 Zdd Zdd Zd!ddZdd Zd"ddZd#ddZd$ddZefddZdd  ZdS )%    )
EmailInputNumberInputPasswordInputTextarea	TextInputURLInput)	mark_safe   )get_bootstrap_settingget_field_rendererget_form_rendererget_formset_renderer)BootstrapError)
text_value)add_css_class
render_tagz
form-groupc                 K   s   t f |}|| f| S )z'Render a formset to a Bootstrap layout.)r   renderZformsetkwargsrenderer_cls r   4/tmp/pip-unpacked-wheel-ebr10wu1/bootstrap4/forms.pyrender_formset   s    
r   c                 K   s   t f |}|| f| S )z,Render formset errors to a Bootstrap layout.)r   render_errorsr   r   r   r   render_formset_errors   s    
r   c                 K   s   t f |}|| f| S )z$Render a form to a Bootstrap layout.)r   r   )formr   r   r   r   r   render_form   s    
r   allc                 K   s   t f |}|| f||S )z)Render form errors to a Bootstrap layout.)r   r   )r   typer   r   r   r   r   render_form_errors   s    
r   c                 K   s   t f |}|| f| S )z%Render a field to a Bootstrap layout.)r   r   )fieldr   r   r   r   r   render_field$   s    
r!   N c                 C   s6   i }|r||d< |r||d< |r(||d< t d|| dS )zRender a label with content.forclasstitlelabelattrscontent)r   )r)   	label_forlabel_classZlabel_titler(   r   r   r   render_label*   s    r,   btn-primaryc
                 C   sX  i }
t d|}t|  }|dkr2t |d}n^|dksB|dkrNt |d}nB|dks^|dkrjt |d	}n&|d
ks|dkr|n|rtdj|d|r|dkrtdj|d|dkr||
d< t ||}||
d< |r
d}|r|dkrtdj|d||
d< |
dd nd}|	r|	|
d< |r*||
d< |r8||
d< |rF||
d< t||
t| dS )zRender a button with content.Zbtnxszbtn-xssmsmallzbtn-smZlgZlargezbtn-lgZmdZmediumzFParameter "size" should be "xs", "sm", "lg" or empty ("{size}" given).)size)ZsubmitresetbuttonlinkzgParameter "button_type" should be "submit", "reset", "button", "link" or empty ("{button_type}" given).)button_typer4   r   r$   azAButton of type "{button_type}" is not allowed a "href" parameter.hrefroler3   idnamevaluer%   r'   )	r   r   lowerstripr   format
setdefaultr   r   )r)   r5   Zbutton_classr1   r7   r:   r;   r%   Zextra_classesr9   r(   classestagr   r   r   render_button6   sV    


rB   c                 K   sf   |dkr6|st d}|s t d}|s,td}t|d}| }|rLdj||d}|rbt|||d| }|S )	zRender a field with its label.Z
horizontalZhorizontal_label_classZhorizontal_field_classz&#160;zcontrol-labelz'<div class="{field_class}">{html}</div>)field_classhtml)r*   r+   )r
   r   r   r>   r,   )r    r&   rC   r*   r+   Zlayoutr   rD   r   r   r   render_field_and_labelv   s    
rE   c                 C   s   dj || dS )zRender a Bootstrap form group.z(<div class="{css_class}">{content}</div>)	css_classr)   )r>   )r)   rF   r   r   r   render_form_group   s    rG   c                 C   s   t | ttttttfS )z
    Return whether this widget should have a placeholder.

    Only text, text area, number, e-mail, url, password, number and derived inputs have placeholders.
    )
isinstancer   r   r   r   r   r   )Zwidgetr   r   r   is_widget_with_placeholder   s    rI   )r   )NNr"   )	Nr-   r"   r"   NNNr"   r"   )r"   Nr"   r"   ) Zdjango.formsr   r   r   r   r   r   Zdjango.utils.safestringr   Z	bootstrapr
   r   r   r   
exceptionsr   textr   utilsr   r   ZFORM_GROUP_CLASSr   r   r   r   r!   r,   rB   rE   rG   rI   r   r   r   r   <module>   s2    

         
@
