<!--
{
  "availability" : [
    "macOS: 26.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ClassKitUI",
  "identifier" : "/documentation/ClassKitUI/AssignedDocumentMenuItem",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ClassKit UI"
    ],
    "preciseIdentifier" : "c:@M@ClassKitUI@objc(cs)AssignedDocumentMenuItem"
  },
  "title" : "AssignedDocumentMenuItem"
}
-->

# AssignedDocumentMenuItem

A menu item that provides assigned document submission functionality.

```
@objc class AssignedDocumentMenuItem
```

## Overview

`AssignedDocumentMenuItem` enables students to submit and withdraw assigned
documents directly from AppKit menus. The menu element loads asynchronously, fetching document
metadata from ClassKit and displaying the appropriate action based on the current submission status.
The element shows an in-line spinner during both initial loading and submission processing.

The following example shows how to create an assigned document menu item
and customize its behavior with validation and completion actions:

```swift
let menuItem = AssignedDocumentMenuItem(
    documentURL: documentURL,
    willSubmit: { url in
        // Validate the assigned document before submission
        guard await validateDocument(url) else {
            await showAlert("Please complete all sections before submitting")
            return false // Prevents submission
        }
        return true // Allows submission to continue
    },
    didSubmit: { url in
        // Handle successful submission
        logEvent("Assigned document submitted successfully!")
    }
)
// Add the configured item to the menu
menu.addItem(menuItem)
```

## Topics

### Initializers

[`init(documentURL: URL, willSubmit: (URL) async -> Bool, didSubmit: (URL) -> Void, willWithdraw: (URL) async -> Bool, didWithdraw: (URL) -> Void)`](/documentation/ClassKitUI/AssignedDocumentMenuItem/init(documentURL:willSubmit:didSubmit:willWithdraw:didWithdraw:))

Creates a menu item for assigned document submission.

## Relationships

### Conforms To

[`NSValidatedUserInterfaceItem`](/documentation/AppKit/NSValidatedUserInterfaceItem)

[`NSAccessibilityProtocol`](/documentation/AppKit/NSAccessibilityProtocol)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`NSCoding`](/documentation/Foundation/NSCoding)

[`Hashable`](/documentation/Swift/Hashable)

[`Equatable`](/documentation/Swift/Equatable)

[`NSCopying`](/documentation/Foundation/NSCopying)

[`NSUserInterfaceItemIdentification`](/documentation/AppKit/NSUserInterfaceItemIdentification)

[`CVarArg`](/documentation/Swift/CVarArg)

[`NSAccessibilityElementProtocol`](/documentation/AppKit/NSAccessibilityElementProtocol)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

### Inherits From

[`NSMenuItem`](/documentation/AppKit/NSMenuItem)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)