Automattic\WooCommerce\Blocks\BlockTypes

CustomerAccount::render_dropdownprivateWC 1.0

Render the block as a dropdown navigation.

Method of the class: CustomerAccount{}

No Hooks.

Returns

String. Rendered block output.

Usage

// private - for code of main (parent) class only
$result = $this->render_dropdown( $attributes, $classes_and_styles, $aria_label, $label_markup );
$attributes(array) (required)
Block attributes.
$classes_and_styles(array) (required)
Classes and styles from block attributes.
$aria_label(string) (required)
Pre-computed aria-label attribute string.
$label_markup(string) (required)
Pre-computed label HTML markup.

CustomerAccount::render_dropdown() code WC 10.8.1

<?php
private function render_dropdown( $attributes, $classes_and_styles, $aria_label, $label_markup ) {
	$allowed_svg = $this->get_allowed_svg();

	$context = array(
		'isDropdownOpen' => false,
		'showAbove'      => false,
		'alignRight'     => false,
	);

	$menu_items    = wc_get_account_menu_items();
	$dropdown_html = $this->render_dropdown_menu( $menu_items );

	ob_start();
	?>
	<div
		class="wp-block-woocommerce-customer-account wc-block-customer-account--has-dropdown <?php echo esc_attr( $classes_and_styles['classes'] ); ?>"
		style="<?php echo esc_attr( $classes_and_styles['styles'] ); ?>"
		data-wp-interactive="woocommerce/customer-account/private"
		<?php echo wp_interactivity_data_wp_context( $context ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		data-wp-class--wc-block-customer-account--align-right="context.alignRight"
		data-wp-class--wc-block-customer-account--is-dropdown-open="context.isDropdownOpen"
		data-wp-class--wc-block-customer-account--show-above="context.showAbove"
		data-wp-on--focusout="actions.handleFocusOut"
		data-wp-on-document--click="actions.handleDocumentClick"
		data-wp-on-document--keydown="actions.handleKeydown"
	>
		<button
			type="button"
			class="wc-block-customer-account__toggle"
			<?php echo $aria_label; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
			aria-haspopup="true"
			data-wp-bind--aria-expanded="context.isDropdownOpen"
			data-wp-on--click="actions.toggleDropdown"
		>
			<?php echo wp_kses( $this->render_icon( $attributes ), $allowed_svg ); ?>
			<?php echo $label_markup; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
			<?php echo $this->render_caret_icon(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</button>
		<nav
			class="wc-block-customer-account__dropdown"
			aria-label="<?php echo esc_attr__( 'Account navigation', 'woocommerce' ); ?>"
			data-wp-bind--hidden="!context.isDropdownOpen"
		>
			<?php echo $dropdown_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</nav>
	</div>
	<?php
	return (string) ob_get_clean();
}