Classes_Prop_Type::make() ->default( [] ), 'tab-id' => String_Prop_Type::make(), 'attributes' => Attributes_Prop_Type::make(), ]; } protected function define_atomic_controls(): array { return [ Section::make() ->set_label( __( 'Settings', 'elementor' ) ) ->set_id( 'settings' ) ->set_items( [] ), ]; } protected function define_base_styles(): array { $display = String_Prop_Type::generate( 'block' ); return [ static::BASE_STYLE_KEY => Style_Definition::make() ->add_variant( Style_Variant::make() ->add_prop( 'display', $display ) ->add_prop( 'padding', $this->get_base_padding() ) ->add_prop( 'min-width', $this->get_base_min_width() ) ), ]; } protected function get_base_padding(): array { return Size_Prop_Type::generate( [ 'size' => 10, 'unit' => 'px', ] ); } protected function get_base_min_width(): array { return Size_Prop_Type::generate( [ 'size' => 30, 'unit' => 'px', ] ); } protected function define_initial_attributes() { return [ 'role' => 'tabpanel', ]; } protected function define_default_children() { return [ Atomic_Paragraph::generate() ->settings( [ 'text' => String_Prop_Type::generate( 'Tab Content' ), ] ) ->build(), ]; } protected function add_render_attributes() { parent::add_render_attributes(); $settings = $this->get_atomic_settings(); $base_style_class = $this->get_base_styles_dictionary()[ static::BASE_STYLE_KEY ]; $initial_attributes = $this->define_initial_attributes(); $attributes = [ 'class' => [ 'e-con', 'e-atomic-element', $base_style_class, ...( $settings['classes'] ?? [] ), ], ]; if ( ! empty( $settings['tab-id'] ) ) { $attributes['data-tab-id'] = esc_attr( $settings['tab-id'] ); $attributes['aria-labelledby'] = esc_attr( $settings['tab-id'] ); } if ( ! empty( $settings['_cssid'] ) ) { $attributes['id'] = esc_attr( $settings['_cssid'] ); } $this->add_render_attribute( '_wrapper', array_merge( $initial_attributes, $attributes ) ); } }