* Copy Polyester Callout
* WIP Callout
* WIP
* More callout props work
* Update var name
* Fix stuff
* More small fixes
* We have a contextmenu rendering
* initial commit
* wip
* menu pops up at right place
* tryna get custom views
* onDismiss callback works
* onShow event
* Extract props from children
* wip on custom views
* update to latest
* Small fixes
* get focus ring
* wip
* Custom views work now
* update podfile
* wip
* custom view layout works
* remove unnecessary references
* remove more test code
* Clean up code
* Add a touch handler, yet hover effects still don't work
* reduce diffs
* Pull in changes from menu-macos branch
* tabs
* fix indents
* update podfile
* Fix typo
* fix indentation and typo
* Refactor updateCalloutFrameToTargetFrame
* refactor getting screenFrame
* wip
* remove anchorRect support for now
* Rewrote most of Callout
* anchor rects almost work. Boo flipped coordinates
* Delete iOS PLY code
* update inline documentation
* clean up for the day
* undo stuff
* Release window when closed
* directional hints wip
* Fixed bug with flipped Y coordinates in anchorRect, + directional hints work
* temporary workaround to get hover back
* Update comment
* More cleanup
* Fix alignment issues
* Change files
* Update snapshots
* Fix some nits
* Fix hover
* remove unnecessary breaks
* Fix some indentation
* fox more tabs, alphabetize list
* remove unnecessary import
* Don't need to remove observor
* Move styling off of apple theme into macos specific files
* undo change in win32 settings
* smaller diff
* remove unnecessary import
* update deps
* Add back dependency to Callout
* Fix test
* update podfile lock
* Get corner Radius on Callout working
* Fix review feedback
* IViewProps from adapters breaks web bundle for some reason
* Only build and pack ship libraries
* test pipeline
* Remove yarn bundle from NuGet Publish as well
* Simplify pipelines a bit
* fix yml
* Comment out NuGet Publish from PR again
* Remove comment now that NuGet Publish is shorter
* MSF -> FRN, podspec and podfile updates
* enable nuget publish
* more podfile / podspec renames
* some things I forgot to rename
* Change files
* more renaming
* more fixes
* Update package.nuspec
* Comment out NuGet Publish
### Platforms Impacted
- [x] iOS
- [x] macOS
- [ ] win32 (Office)
- [ ] windows
- [ ] android
### Description of changes
This change refactors some of our native iOS and macOS code for better downstream integration into the office codebase.
Namely:
- Every native module's `<Component>-Bridging-Header.h` has been renamed to `<Component>ViewManager.h`.
- These files were never bridging headers, and cocoa pods / swift never interpreted them as such. There is potential to improve the RN docs on how to write a native swift module here as well.
- Adds the `BUILD_LIBRARY_FOR_DISTRIBUTION` flag to each native module's pod spec
- This flag allows for ABI stability in our swift static libraries. Note that the main side effect of this flag is it produces a `.swiftinterface` file in the static libraries' swift module. I do not include the swift module in the NuGet to be included downstream in office. In my testing I found it was not needed to get iOS NativeButton to link, so I opted not to include the swif module. This may change in the future as I try to figure out why the macOS NativeButton static library won't link.
- Adds the `OTHER_SWIFT_FLAGS=-gline-tables-only` flag to each native module's pod spec
- This is a potential security risk that is fixed, as per the comment here https://github.com/microsoft/fluentui-react-native/pull/710#discussion_r688016727 .
- removes the `CLANG_DEBUG_INFORMATION_LEVEL=line-tables-only` build flag
- This caused issues with the previous `BUILD_LIBRARY_FOR_DISTRIBUTION` flag and build failures. I'm not sure why.
- Sets the Swift version to 5.0
- I added this because I noticed that Azure pipelines would actually use the Swift 5.3.2 compiler, so I wanted to be explicit which version of swift we are compiling for.
Prior to this change, we could not link the NativeButton component downstream into office due to some linker issues. This change updates a few parts of our native iOS and macOS code such that we can now link the iOS NativeButton. The macOS NativeButton static library still does not properly link, I'll leave that as a followup.
### Verification
I had a local change downstream in office to consume an intermediate NuGet produced by this PR and test that linking worked. That's where I saw that iOS and not macOS works. Link for those who can see it: https://office.visualstudio.com/OE/_build/results?buildId=9621115&view=logs&j=4257c0a7-7659-5375-d6e0-cde9f28a3d36
### Pull request checklist
This PR has considered (when applicable):
- [x] Automated Tests
- [x] Documentation and examples
- [ ] Keyboard Accessibility
- [ ] Voiceover
- [ ] Internationalization and Right-to-left Layouts
### Platforms Impacted
- [ ] iOS
- [X] macOS
- [ ] win32 (Office)
- [ ] windows
- [ ] android
### Description of changes
This PR adds a native module for the radio button component. This achieves the native look and feel and functionality of FocusZone via the JS RadioGroup control.
Open Issues:
1. Tabbing into focus zone doesn't focus the currently selected button.
2. When VO cursor is synchronized with keyboard focus, changing the VO cursor should only update keyboard focus without changing button states when entering FocusZone.
### Verification
https://user-images.githubusercontent.com/67026167/127902922-7bde9665-d217-427b-9d58-f79c5a652848.movhttps://user-images.githubusercontent.com/67026167/127902938-1063a983-a877-4156-b960-45ae2fe3f4f9.mov
### Pull request checklist
This PR has considered (when applicable):
- [ ] Automated Tests
- [ ] Documentation and examples
- [X] Keyboard Accessibility
- [X] Voiceover
- [ ] Internationalization and Right-to-left Layouts
### Platforms Impacted
- [ ] iOS
- [x] macOS
- [ ] win32 (Office)
- [ ] windows
- [ ] android
### Description of changes
This change introduces macOS support for the MenuButton component. As it is, it only supports a limited subset of the component's features, and lacks customization. I would like to add this initial version so that we can integrate it downstream and get feedback from clients. I tried to make no changes to the win32 implementation so as to not break compatibility.
I elected to implement this as a native module rather than composed of a `Button` and `ContextualMenu` component because I had a lot of trouble standing up the `ContextualMenu` component on macOS. `ContextualMenu` depends on `Callout`, which is only implemented for win32 and has a win32 specific API. On macOS, contextualMenus are generally not hosted in the equivalent of a `Callout` anyway; they are their own objects altogether.
Future followups can/wil include:
- Extending the functionality of this component to support more of the props available on win32
- Standing up `ContextualMenu` for macOS (new API and all), and then rewriting this component to actually be composed of `Button` and `ContextualMenu`.
- Porting this component to the new compose framework, along with ContextualMenu.
**Supported props:**
- menuItems,
- title,
- tooltip,
- submenus,
- disabled,
- onItemClick (only 1 subMenu level deep)
- content,
- Icon (png only)
- disabled,
- onItemClick
**Unsupported but next planned to be added**
- Layout (Right now the widht/height are hard coded. I looked into it and I'll probably need to implement a shadow view to get the proper layout).
### Verification
https://user-images.githubusercontent.com/6722175/127942675-2b912247-4044-4219-a84d-28cdb3be5daa.mov
### Pull request checklist
This PR has considered (when applicable):
- [ ] Automated Tests
- [ ] Documentation and examples
- [ ] Keyboard Accessibility
- [ ] Voiceover
- [ ] Internationalization and Right-to-left Layouts
* Remove apple theme module
* Get it working
* Update the all important nuspec
* wip
* Undo changes to icon
* revert iconTest changes
* revert one more icon change
* Podfile locks
* Remove one more icon change, add bug number.
* Change files
* Fix typo
* Use API properly
* update deps
* revert changes to button
* Fix bundle names in nuget specification file.
* Expand PR loop to include nuget pack. This will not be merged, but needs to be committed for now to make the PR loop run nuget to validate my fix.
* Revert PR changes
* Initial Commit
* Set up CI with Azure Pipelines
Comment out NPM package publish [skip ci]
* Update publish-nuget-job.yml
* Update publish-nuget-job.yml
* Try to use jobs
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* Deleted broken templates
* Update azure-pipelines.publish.yml for Azure Pipelines
* No more matrixes
* Update azure-pipelines.publish.yml for Azure Pipelines
* more changes
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update paths
* More updates
* Update
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* Update azure-pipelines.publish.yml for Azure Pipelines
* revert using cocoapod task
* Forgot word
* Remove compiler optimizations
* simplify apple-xcode-build
* Use xcode 12
* typo
* Add bridging header to podspec
* nevermind
* Remove section from Podfile
* Try only one config
* Use xcodebuild instead of xcode task
* typo
* another typo
* remove extra args from xcconfig
* simulator passes, device doesnt. what about mac?
* Maybe 4 of 6 passing
* Try xcode task again
* typo
* Maybe all 6 with a signing id
* more explicit derived data path
* maybe no sign
* Clean up ordering / path
* Remove unnecessary stuff
* Dont use env variable in one template
* Switch to use the default version of xcode like we do in fluentui apple
* Bring over xcode select script
* Move pipeline specific scripts to .ado/scripts
* Update nuspec comments to specify bundles are release bundles
* Explicitly specificy files to include in nuspec
* Update azure-pipelines.publish.yml for Azure Pipelines
* renamed nuspec in yml
* Fix some edits in package.nuspec
* Update azure-pipelines.publish.yml