Skip to content
Snippets Groups Projects
Unverified Commit b7ce2ab9 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3418136 by shalini_jha, smustgrave, rohit sankhla: Add last() function...

Issue #3418136 by shalini_jha, smustgrave, rohit sankhla: Add last() function to ItemInterface/ItemList
parent 43717fbb
No related branches found
No related tags found
9 merge requests!11197Issue #3506427 by eduardo morales alberti: Remove responsive_image.ajax from hook,!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!10786Issue #3490579 by shalini_jha, mstrelan: Add void return to all views...,!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!2062Issue #3246454: Add weekly granularity to views date sort,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation
Pipeline #347045 passed with warnings
......@@ -91,6 +91,14 @@ public function set($index, $value);
*/
public function first();
/**
* Returns the last item in this list.
*
* @return \Drupal\Core\TypedData\TypedDataInterface|null
* The last item in this list, or NULL if there are no items.
*/
public function last(): ?TypedDataInterface;
/**
* Appends a new item to the list.
*
......
......@@ -303,4 +303,11 @@ public function __clone() {
}
}
/**
* {@inheritdoc}
*/
public function last(): ?TypedDataInterface {
return $this->get($this->count() - 1);
}
}
......@@ -695,4 +695,25 @@ public function testTypedDataValidation(): void {
$this->assertSame('0.value', $violations[0]->getPropertyPath());
}
/**
* Tests the last() method on typed data lists.
*/
public function testTypedDataListsLast(): void {
// Create an ItemList with two string items.
$value = ['zero', 'one'];
$typed_data = $this->createTypedData(ListDataDefinition::create('string'), $value);
// Assert that the last item is the second one ('one').
$this->assertEquals('one', $typed_data->last()->getValue());
// Add another item to the list and check the last item.
$value[] = 'two';
$typed_data = $this->createTypedData(ListDataDefinition::create('string'), $value);
$this->assertEquals('two', $typed_data->last()->getValue());
// Check behavior with an empty list.
$typed_data = $this->createTypedData(ListDataDefinition::create('string'), []);
$this->assertNull($typed_data->last(), 'Empty list should return NULL.');
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment