ハムル

HAMLはGitLabが使っているRuby on Railsのテンプレート言語です。

HAMLとパジャマデザインシステム

GitLab UIは Pajamasデザインシステムに準拠したVueコンポーネントライブラリです。これらのコンポーネントの多くはJavaScriptに依存しているため、Vueでしか使用できません。

しかし、より単純なコンポーネント(ボタン、チェックボックス、フォーム入力など)のいくつかはHAMLで使用することができます:

  • パジャマコンポーネントのいくつかはViewComponent として利用可能です。可能であれば、これらを使用してください。
  • ViewComponentが存在しない場合は、作成してください。サポートが必要な場合は、Foundationsチームに相談してください。
  • 予備として、要素に正しい CSS クラスを適用することで、これを行うことができます。
  • GitLab UI コンポーネントを HAML フォームで使うためのカスタムRuby on Rails フォームビルダーがあります。

GitLab UI フォームビルダーを使う

GitLab UI フォームビルダーを使うには:

  1. form_forgitlab_ui_form_for に変更。
  2. f.check_boxf.gitlab_ui_checkbox_component に変更。
  3. f.label を削除し、代わりにf.gitlab_ui_checkbox_component の第2引数にラベルを渡します。

使用例:

  •  = form_for @group do |f|
       .form-group.gl-mb-3
         .gl-form-checkbox.custom-control.custom-checkbox
           = f.check_box :prevent_sharing_groups_outside_hierarchy, disabled: !can_change_prevent_sharing_groups_outside_hierarchy?(@group), class: 'custom-control-input'
           = f.label :prevent_sharing_groups_outside_hierarchy, class: 'custom-control-label' do
             %span
               = safe_format(s_('GroupSettings|Prevent members from sending invitations to groups outside of %{group} and its subgroups.'), group: link_to_group(@group))
             %p.help-text= prevent_sharing_groups_outside_hierarchy_help_text(@group)
       
       .form-group.gl-mb-3
         .gl-form-checkbox.custom-control.custom-checkbox
           = f.check_box :lfs_enabled, checked: @group.lfs_enabled?, class: 'custom-control-input'
           = f.label :lfs_enabled, class: 'custom-control-label' do
             %span
               = _('Allow projects within this group to use Git LFS')
               = link_to sprite_icon('question-o'), help_page_path('topics/git/lfs/index')
             %p.help-text= _('This setting can be overridden in each project.')
    
  • After

     = gitlab_ui_form_for @group do |f|
       .form-group.gl-mb-3
         = f.gitlab_ui_checkbox_component :prevent_sharing_groups_outside_hierarchy,
             safe_format(s_('GroupSettings|Prevent members from sending invitations to groups outside of %{group} and its subgroups.'), group: link_to_group(@group)),
             help_text: prevent_sharing_groups_outside_hierarchy_help_text(@group),
             checkbox_options: { disabled: !can_change_prevent_sharing_groups_outside_hierarchy?(@group) }
       
       .form-group.gl-mb-3
         = f.gitlab_ui_checkbox_component :lfs_enabled, checkbox_options: { checked: @group.lfs_enabled? } do |c|
           - c.with_label do
             = _('Allow projects within this group to use Git LFS')
             = link_to sprite_icon('question-o'), help_page_path('topics/git/lfs/index')
           - c.with_help_text do
             = _('This setting can be overridden in each project.')
    

利用可能なコンポーネント

GitLab UIフォームビルダーを使用する場合、HAMLで使用できるコンポーネントは以下の通りです。

note
現在、リストアップされたコンポーネントのみが利用可能ですが、より多くのコンポーネントが計画されています。

gitlab_ui_checkbox_component

GitLab UI ドキュメント

引数
引数説明種類必須(デフォルト値)
method gitlab_ui_form_for に渡されるオブジェクトの属性。Symboltrue
labelHTMLが必要な場合は、この引数の代わりにlabel スロットを使用できます。String false (nil)
help_textチェックボックスの下に表示されるヘルプテキスト。 HTMLが必要な場合は、この引数の代わりにhelp_text スロットを使うことができます。String false (nil)
checkbox_options Railscheck_box メソッド に渡されるオプション。Hash false ({})
checked_valueチェックボックスがチェックされたときの値。String false ('1')
unchecked_valueチェックボックスがチェックされていないときの値。String false ('0')
label_options Railslabel メソッド に渡されるオプション。Hash false ({})
スロット

このコンポーネントはViewComponent スロットをサポートします。

スロット説明
labelチェックボックスラベルの内容。このスロットはlabel 引数の代わりに使用できます。
help_textチェックボックスの下に表示されるヘルプテキストの内容。このスロットはhelp_text 引数の代わりに使用できます。

gitlab_ui_radio_component

GitLab UI ドキュメント

引数
引数説明種類必須(デフォルト値)
method gitlab_ui_form_for に渡されるオブジェクトの属性。Symboltrue
value無線タグの値。Symboltrue
labelラベルの内部に HTML コンテンツが必要な場合は、この引数の代わりにlabel スロットを使用できます。String false (nil)
help_textラジオボタンの下に表示されるヘルプテキスト。ヘルプテキストの内部にHTMLコンテンツが必要な場合は、この引数の代わりにhelp_text スロットを使うことができます。String false (nil)
radio_options Railsradio_button メソッド に渡されるオプション。Hash false ({})
label_options Railslabel メソッド に渡されるオプション。Hash false ({})
スロット

このコンポーネントはViewComponent スロットをサポートします。

スロット説明
labelチェックボックスラベルの内容。このスロットはlabel 引数の代わりに使用できます。
help_textラジオボタンの下に表示されるヘルプテキストの内容。このスロットはhelp_text 引数の代わりに使用できます。