ハムル
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 フォームビルダーを使うには:
- 
form_forをgitlab_ui_form_forに変更。
- 
f.check_boxをf.gitlab_ui_checkbox_componentに変更。
- 
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で使用できるコンポーネントは以下の通りです。
現在、リストアップされたコンポーネントのみが利用可能ですが、より多くのコンポーネントが計画されています。
gitlab_ui_checkbox_component
引数
| 引数 | 説明 | 種類 | 必須(デフォルト値) | 
|---|---|---|---|
| method | gitlab_ui_form_forに渡されるオブジェクトの属性。 | Symbol | true | 
| label | HTMLが必要な場合は、この引数の代わりに labelスロットを使用できます。 | String | false(nil) | 
| help_text | チェックボックスの下に表示されるヘルプテキスト。 HTMLが必要な場合は、この引数の代わりに help_textスロットを使うことができます。 | String | false(nil) | 
| checkbox_options | Rails check_boxメソッド に渡されるオプション。 | Hash | false({}) | 
| checked_value | チェックボックスがチェックされたときの値。 | String | false('1') | 
| unchecked_value | チェックボックスがチェックされていないときの値。 | String | false('0') | 
| label_options | Rails labelメソッド に渡されるオプション。 | Hash | false({}) | 
スロット
このコンポーネントはViewComponent スロットをサポートします。
| スロット | 説明 | 
|---|---|
| label | チェックボックスラベルの内容。このスロットは label引数の代わりに使用できます。 | 
| help_text | チェックボックスの下に表示されるヘルプテキストの内容。このスロットは help_text引数の代わりに使用できます。 | 
gitlab_ui_radio_component
引数
| 引数 | 説明 | 種類 | 必須(デフォルト値) | 
|---|---|---|---|
| method | gitlab_ui_form_forに渡されるオブジェクトの属性。 | Symbol | true | 
| value | 無線タグの値。 | Symbol | true | 
| label | ラベルの内部に HTML コンテンツが必要な場合は、この引数の代わりに labelスロットを使用できます。 | String | false(nil) | 
| help_text | ラジオボタンの下に表示されるヘルプテキスト。ヘルプテキストの内部にHTMLコンテンツが必要な場合は、この引数の代わりに help_textスロットを使うことができます。 | String | false(nil) | 
| radio_options | Rails radio_buttonメソッド に渡されるオプション。 | Hash | false({}) | 
| label_options | Rails labelメソッド に渡されるオプション。 | Hash | false({}) | 
スロット
このコンポーネントはViewComponent スロットをサポートします。
| スロット | 説明 | 
|---|---|
| label | チェックボックスラベルの内容。このスロットは label引数の代わりに使用できます。 | 
| help_text | ラジオボタンの下に表示されるヘルプテキストの内容。このスロットは help_text引数の代わりに使用できます。 | 
