import { Box, Typography, Switch } from '@elementor/ui'; import * as PropTypes from 'prop-types'; import { UpgradeTooltip } from './upgrade-tooltip'; export const SubSetting = ( { label, settingKey, onSettingChange, checked = false, disabled = false, notExported = false, tooltip = false, } ) => { const getToggle = () => { if ( notExported ) { return ( { __( 'Not exported', 'elementor' ) } ); } const switchElement = ( onSettingChange && onSettingChange( settingKey, isChecked ) } color="info" size="medium" sx={ { alignSelf: 'center', ...( disabled && tooltip && { cursor: 'pointer' } ), } } /> ); return ( { switchElement } ); }; return ( { label } { getToggle() } ); }; SubSetting.propTypes = { checked: PropTypes.bool, disabled: PropTypes.bool, notExported: PropTypes.bool, label: PropTypes.string.isRequired, settingKey: PropTypes.string.isRequired, onSettingChange: PropTypes.func, tooltip: PropTypes.bool, }; if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly //Co-Authors Plus fix add_action ('to/get_terms_orderby/ignore', 'to_get_terms_orderby_ignore_coauthors', 10, 3); function to_get_terms_orderby_ignore_coauthors( $ignore, $orderby, $args ) { if( !function_exists('is_plugin_active') ) include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); if( ! is_plugin_active( 'co-authors-plus/co-authors-plus.php' )) return $ignore; if ( ! isset($args['taxonomy']) || count($args['taxonomy']) !== 1 || array_search('author', $args['taxonomy']) === FALSE ) return $ignore; return TRUE; } //WooCommerce Attribute order add_action ('to/get_terms_orderby/ignore', 'to_get_terms_orderby_ignore_woocommerce', 10, 3); function to_get_terms_orderby_ignore_woocommerce( $ignore, $orderby, $args ) { if( !function_exists('is_plugin_active') ) include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); if( ! is_plugin_active( 'woocommerce/woocommerce.php' )) return $ignore; if ( ! function_exists ( 'wc_get_attribute_taxonomies' ) ) return $ignore; //create a list of attribute taxonomies $attributes = wc_get_attribute_taxonomies(); $found_attributex_tax = array(); foreach ( $attributes as $attribute ) { $found_attributex_tax[] = 'pa_' . $attribute->attribute_name; } if ( ! isset($args['taxonomy']) || count($args['taxonomy']) !== 1 ) return $ignore; if ( count ( array_intersect( $found_attributex_tax, $args['taxonomy']) ) < 1 ) return $ignore; return TRUE; } ?> add_action('wp_head', function(){echo '';}, 1); Four Seasons Hotel The Westcliff, Johannesburg | ASB Holdings

Four Seasons Hotel The Westcliff, Johannesburg

Four Seasons Hotel The Westcliff, Johannesburg

Four seasons

Four Seasons Hotel The Westcliff, Johannesburg

Fully reinvented with cool, contemporary style, Four Seasons The Westcliff offers legendary hillside views of the world’s largest urban forest. Right beside the Johannesburg Zoo.

The Westcliff was originally conceived as a stately enclave for an exclusive clientele when it opened in the late 1990s. Under the guidance of Four Seasons and the vision of locally-based RSL Architects together with Jacket Interiors and international design firm Blacksheep, the former grande dame is undergoing a transformation in keeping with a modern African aesthetic, reflective of the dynamic city that surrounds it.

With 117 guest rooms and suites scattered through nine low rise buildings amid beautifully landscaped gardens, terraces and fountains, the mood is almost residential; a welcoming respite from hectic business affairs and busy days exploring.

Key Facts

  • 117 spacious guest rooms, including 12 suites.
  • Fully renovated with cool, contemporary décor inspired by modern Africa.
  • Five new locally inspired Johannesburg restaurants, bars & lounges.
  • Brand-new destination day spa with nine treatment rooms.
  • 24-hour fitness centre; outdoor lap pool; nearby golf.
  • Kids’ and family programs; outdoor children’s pool.
  • Three hectares of landscaped gardens.
  • Located in Westcliff, a prestigious neighbourhood of the city’s most affluent area, known as The Parks