lib/lookbook/helpers/page_helper.rb in lookbook-2.0.0.beta.3 vs lib/lookbook/helpers/page_helper.rb in lookbook-2.0.0.beta.4
- old
+ new
@@ -3,16 +3,41 @@
#
# @api public
module PageHelper
# Returns the URL path to a page.
#
+ # @api private
# @param id [String, PageEntity] The id or PageEntity instance to generate a URL path for
def page_path(id)
page = id.is_a?(PageEntity) ? id : Engine.pages.find_by_id(id)
if page.present?
- lookbook_page_path page.lookup_path
+ page.docs_path
else
Lookbook.logger.warn "Could not find page with id ':#{id}'"
end
+ end
+
+ # Render a 'live' embed of a component preview.
+ #
+ # If no scenario name is provided then the default (first) preview
+ # scenario will be rendered in the embed.
+ #
+ # @param preview [String] Name of the preview class to embed
+ # @param scenario [String] Example method name
+ # @param opts [Hash] Options hash
+ def embed(preview, scenario = nil, **opts)
+ preview_entity = if preview.is_a?(Symbol)
+ Engine.previews.find_by_path(preview)
+ else
+ Engine.previews.find_by_preview_class(preview)
+ end
+ scenario_entity = scenario ? preview_entity&.scenario(scenario) : preview_entity&.default_scenario
+ opts[:actions] ||= ["inspect", "open"]
+
+ lookbook_render Embed::Component.new(
+ scenario: scenario_entity,
+ params: opts.fetch(:params, {}),
+ options: opts.except(:params)
+ )
end
end
end