module PolarisViewHelpers module Helper def polaris_css version = '7.5.0' major_version = version.split('.').first.to_i if major_version <= 6 %[].html_safe else %[].html_safe end end def polaris_random_input_name "pri-#{SecureRandom.hex(8)}" end def polaris_choice_list(form:, attribute:, title:, selected:, choices:, data:) render( partial: 'polaris/choice_list', locals: { form: form, attribute: attribute, title: title, selected: selected, choices: choices, data: data } ) end def polaris_page(&block) render( partial: 'polaris/page', locals: { block: block } ) end def polaris_page_header(title, &block) render( partial: 'polaris/page_header', locals: { title: title, block: block } ) end def polaris_heading(title) render( partial: 'polaris/heading', locals: { title: title } ) end def polaris_sub_heading(title) render( partial: 'polaris/sub_heading', locals: { title: title } ) end def polaris_page_content(&block) render( partial: 'polaris/page_content', locals: { block: block } ) end def polaris_layout(&block) render( partial: 'polaris/layout', locals: { block: block } ) end def polaris_layout_section(secondary: false, &block) extra_class = secondary ? "Polaris-Layout__Section--secondary" : "" render( partial: 'polaris/layout_section', locals: { block: block, extra_class: extra_class } ) end def polaris_form_layout(&block) render( partial: 'polaris/form_layout', locals: { block: block } ) end def polaris_tabs(&block) render( partial: 'polaris/tabs', locals: { block: block } ) end def polaris_tab(text, link_path, active = nil) unless active.present? active = link_path == request.original_fullpath end render( partial: 'polaris/tab', locals: { text: text, link_path: link_path, active: active } ) end def polaris_banner(options, &block) render( partial: 'polaris/banner', locals: { options: options, block: block } ) end def polaris_banner_actions(&block) render( partial: 'polaris/banner_actions', locals: { block: block } ) end def polaris_button_link_to(name = nil, link_destination = nil, button_options = nil, &block) if block_given? button_options, link_destination, name = link_destination, name, nil end button_options ||= {} additional_classes = button_options[:additional_classes] || "" (button_options[:modifiers] || []).each do |modifier| additional_classes += "Polaris-Button--#{modifier} " end render( partial: 'polaris/button_link_to', locals: { name: name, block: block, additional_classes: additional_classes, link_destination: link_destination, method: button_options[:method], remote: button_options[:remote], target: button_options[:target], confirm: button_options[:confirm] } ) end def polaris_link_to(name = nil, link_destination = nil, button_options = nil, &block) if block_given? button_options, link_destination, name = link_destination, name, nil end button_options ||= {} additional_classes = "" (button_options[:modifiers] || []).each do |modifier| additional_classes += "Polaris-Button--#{modifier} " end render( partial: 'polaris/link_to', locals: { name: name, block: block, additional_classes: additional_classes, link_destination: link_destination, method: button_options[:method], confirm: button_options[:confirm] } ) end def polaris_model_errors model render( partial: 'polaris/model_errors', locals: { model: model } ) end def polaris_page_actions(options) render( partial: 'polaris/page_actions', locals: options ) end def polaris_button_tag(name, button_options) additional_classes = "" (button_options[:modifiers] || []).each do |modifier| additional_classes += "Polaris-Button--#{modifier} " end button_options[:additional_classes] = additional_classes button_options[:name] = name render( partial: 'polaris/button_tag', locals: button_options ) end def polaris_annotated_section(heading:'', description:'', &block) render( partial: 'polaris/annotated_section', locals: { heading: heading, description: description, block: block } ) end def polaris_form_layout_item(form, att, text = nil, &block) render( partial: 'polaris/form_layout_item', locals: { form: form, att: att, text: text, block: block } ) end def polaris_form_layout_item_select(form, att, text = nil, &block) render( partial: 'polaris/form_layout_item_select', locals: { form: form, att: att, text: text, block: block } ) end def polaris_text_field(form, attribute, options = {}, element_type = :text_field, &block) unless attribute.is_a? Array attribute = [attribute] end render( partial: 'polaris/text_field', locals: { form: form, attribute: attribute, element_type: element_type, options: options, block: block } ) end def polaris_text_area(form, attribute, options = {}, element_type = :text_area, &block) polaris_text_field(form, attribute, options, element_type, &block) end def polaris_annotated_section_text_field(form, attribute, options = {}, element_type = :text_field, &block) unless attribute.is_a? Array attribute = [attribute] end render( partial: 'polaris/annotated_section_text_field', locals: { form: form, attribute: attribute, element_type: element_type, options: options, block: block } ) end def polaris_annotated_section_select(form, attribute, select_options = [], element_type = :select, &block) unless attribute.is_a? Array attribute = [attribute] end render( partial: 'polaris/annotated_section_select', locals: { form: form, attribute: attribute, element_type: element_type, select_options: select_options, block: block } ) end def polaris_annotated_section_input(form, attribute, input, &block) unless attribute.is_a? Array attribute = [attribute] end render( partial: 'polaris/annotated_section_input', locals: { form: form, attribute: attribute, input: input, block: block } ) end def polaris_resource_list(&block) render( partial: 'polaris/resource_list', locals: { block: block } ) end def polaris_resource_list_item(attributes) extra_classes = attributes[:media].present? ? "Polaris-ResourceList__Item--mediaThumbnail Polaris-ResourceList__Item--sizeMedium" : "" render( partial: 'polaris/resource_list_item', locals: { attributes: attributes, extra_classes: extra_classes } ) end def polaris_badge(content, status = nil) extra_class = status.present? ? "Polaris-Badge--status#{status.to_s.capitalize}" : "" render( partial: 'polaris/badge', locals: { content: content, status: status, extra_class: extra_class } ) end def polaris_thumbnail(attributes) render( partial: 'polaris/thumbnail', locals: { attributes: attributes } ) end def polaris_description_list(&block) render( partial: 'polaris/description_list', locals: { block: block } ) end def polaris_description_list_item(term, &block) render( partial: 'polaris/description_list_item', locals: { block: block, term: term } ) end def polaris_card(heading = nil, footer: nil, &block) render( partial: 'polaris/card', locals: { block: block, heading: heading, footer: footer } ) end def polaris_footer_help(icon: 'next-help-circle', &block) render( partial: 'polaris/footer_help', locals: { block: block, icon: icon } ) end def polaris_css_variable_hack_div(&block) render( partial: 'polaris/polaris_css_variable_hack_div', locals: { block: block } ) end end end