25 Commits

Author SHA1 Message Date
Wenyu Zhang
b457b13005 Internal change.
PiperOrigin-RevId: 417635153
2021-12-21 09:32:05 -08:00
Jeff Verkoeyen
dc067749f1 Remove all pre-iOS 12 logic.
PiperOrigin-RevId: 400786978
2021-10-04 12:36:05 -07:00
Randall Li
502bc5d910 Ran a Swift formatter
PiperOrigin-RevId: 395947664
2021-09-10 09:48:14 -07:00
Jeff Verkoeyen
92254ea119 Rename all icons to an ic_<#name#> convention.
PiperOrigin-RevId: 308232277
2020-04-24 04:33:51 -07:00
Cody Weaver
fdf87c5995 [MDC/ColorScheme] Remove usage of init within MDC.
We recommend using `initWithDefaults` and we should follow the recommendation. This change removes all usage of `init` within MDC components in order to let us remove that initializer from the public surface.

PiperOrigin-RevId: 302958447
2020-03-25 13:36:51 -07:00
Andrew Overton
ab8c10bfdf
Don't use MDCBottomDrawerColorThemer (#9204)
Related to #9210
2019-12-10 10:01:58 -05:00
Bryan Oltman
68a65d33d3
[BottomAppBar] Delete deprecated MDCBottomAppBarColorThemer (#9166)
MDCBottomAppBarColorThemer has no internal use and is deprecated.

Fixes #9164
Fixes #9165
2019-12-06 17:10:33 -05:00
Andrew Overton
8b3ce02a7a
[NavigationDrawer] Nav drawer fix pt 2 (#8638)
Like #8612 and #8618, this is not a beautiful solution. It does fix the issue that led to #8618 being reverted though!
2019-10-25 12:54:48 -04:00
Andrew Overton
b4f12284b5 Revert "[NavigationDrawer] Fix over scrolled bottom navigation incorrectly showing the scrim and presenting view (#8618)"
This reverts commit 738682323f54197c3d6244740b2c5e0f2b9f53de.
2019-10-23 14:18:57 -04:00
Randall Li
738682323f
[NavigationDrawer] Fix over scrolled bottom navigation incorrectly showing the scrim and presenting view (#8618)
Fixes the over-scroll of the bottom navigation drawer so that it does not show the scrim and presenting view controller when over-scrolling the content.

We do this by setting the color of the scrim to the background color of the tracking scroll view.

The default scrim color is now exposed.

Before:
![Simulator Screen Shot - iPhone 11 Pro - 2019-10-21 at 16 36 06](https://user-images.githubusercontent.com/943565/67241188-f3ec6f00-f420-11e9-9b60-dcb57c06dbd8.png)


after:
![Simulator Screen Shot - iPhone 11 Pro - 2019-10-21 at 16 33 16](https://user-images.githubusercontent.com/943565/67240972-87717000-f420-11e9-8c03-de59039be43d.png)
![Simulator Screen Shot - iPhone 11 Pro - 2019-10-21 at 16 33 11](https://user-images.githubusercontent.com/943565/67240994-93f5c880-f420-11e9-8500-17359551cd37.png)


This work started with @andrewoverton's https://github.com/material-components/material-components-ios/pull/8612
2019-10-22 10:07:15 -04:00
featherless
a01712388b
[BottomAppBar] Deprecate the ColorThemer. (#8438)
Part of https://github.com/material-components/material-components-ios/issues/8429

There is no internal usage of this API.
2019-09-11 09:00:36 -04:00
Yarden Eitan
efe61588a6
update (#7246)
We need to add @objc annotations to colorScheme and typographyScheme instances in our Swift examples, because we moved to Swift 4.2, the respondsToSelector won't find `setColorScheme:` and `setTypographyScheme:` setters otherwise.
2019-04-23 10:21:14 -04:00
Andrew Overton
c56d5d76d3
Add @objc annotations to get examples to show up in Dragons (#7168)
This is a follow up PR for #7166 adds @objc annotations to Swift catalogMetadata() methods, because the Swift 4 compiler no longer attempts to infer what methods should be visible to Objective-C. As a result of this change in the compiler, no Swift examples were showing up in Dragons after #7166. See this article: https://useyourloaf.com/blog/objc-warnings-upgrading-to-swift-4/ for additional context.
2019-04-17 21:35:43 -04:00
Yarden Eitan
07417dfa71
[NavigationDrawer] Added support for customizing the initial drawer height factor (#7112)
We are adding a new property for NavigationDrawer's API called `maximumInitialDrawerHeight` which allows clients to set the initial height of the drawer, rather than it always being 50% of the screen's height.

We also had to be mindful that in some cases allowing any percentage could have the offset of the scrollView be a fractional number that wasn't reasonable, and therefore UIKit would round the scrollView's contentOffset to a close (yet different) value. Therefore to not cause inconsistencies between what the scrollView content offset returns and the drawer's initial offset, we rounded the number after the initial percentage calculation.

Unit tests have been added and all examples have been tested with and without the variable.

Resolves #7080
2019-04-12 15:33:06 -04:00
Randall Li
487a45d09b add missing imports to MaterialNavigationDrawer+ColorThemer 2018-12-05 20:54:22 -05:00
Yarden Eitan
31e3f33df3
[NavigationDrawer] Add dynamically sizing support for the drawer + performance improvements (#5587)
**Context:**
Clients need the ability to dynamically size their navigation drawer content and have the drawer work appropriately and correctly.

**The Problem:**
Currently we have no mechanism where we let the drawer know that the size of the content has changed and the internal calculations need to be re-calculated and re-applied.

Also, before we were partially listening to the `preferredContentSize` by asking if it has changed every so often using the conditional in the `contentHeightSurplus` getter. Some clients can have a very calculations heavy `preferredContentSize`, which will cause the whole drawer mechanism to lag.

**The Fix:**
Because the `contentViewController` and the `headerViewController` are child view controllers of `MDCBottomDrawerContainerViewController` , we can listen to `preferredContentSizeDidChangeForChildContentContainer` and reset the previously calculated variables and relayout the drawer.

**Testing:**
Unit Test + Tested on an iPhone X and iPhone 7 on all examples, portrait and landscape. A dragons example has been created exactly for the testing of the dynamically changing content size here: #5545 

**Related Bugs:**
Closes #5514
2018-11-08 09:46:22 +02:00
Yarden Eitan
2127004680
automatically disable scrolling (#5586)
**Context:**
Some clients were not aware that their content's scroll view needs to be disabled so the content will not start scrolling while dragging the drawer.

**The Problem:**
Clients need to explicitly set their tracking scroll view scrolling to disabled manually.

**The Fix:**
If a tracking scroll view is provided, set the scrolling to disabled automatically and therefore cause less client confusion

**Testing:**
Unit Test + Tested on an iPhone X on all examples.
2018-11-07 11:12:51 +02:00
Yarden Eitan
5dafdbaa86
graduate navigation drawer from Beta to Ready (#5470)
This PR is the last step in graduating the Navigation Drawer component from Beta to Ready.

We have resolved all the outstanding issues in the Navigation Drawer Project here: https://github.com/material-components/material-components-ios/projects/85 and hotlist: 1230549 .
The only outstanding issue is the unit tests ( #5466 , #5465 ) which were approved and are pending due to GitHub issues causing CI not to run.

We are essentially migrating here the NavigationDrawer component from the MaterialComponentsAlpha podspec to the MaterialComponents podspec so it can be used publicly using the normal means of installing our Pod.

This PR is blocked and can land once #5466 and #5465 land.

Closes #5333
2018-10-23 01:26:46 -04:00
rami-a
70457a398a
[NavigationDrawer] Add Color Themer support (#5458)
### The problem

BottomDrawer previously had no color themer support

### The fix

This change adds a color themer for BottomDrawer. Additionally this adds unit tests and updates the example to use the color themer. The guidelines indicate the content and header should utilize the semantic surface color, so that is what the themer applies to the BottomDrawer. 

**Note:** The drawer should be configured with its header and content ViewControllers before applying the theme.

### Related issues

Closes #4910 

### Code snippet

#### Swift
```
    let bottomDrawerViewController = MDCBottomDrawerViewController()
    bottomDrawerViewController.contentViewController = contentViewController
    bottomDrawerViewController.headerViewController = headerViewController
    MDCBottomDrawerColorThemer.applySemanticColorScheme(colorScheme,
                                                        toBottomDrawer: bottomDrawerViewController)
```

#### ObjC
```
MDCBottomDrawerViewController *bottomDrawer = [[MDCBottomDrawerViewController alloc] init];
bottomDrawer.contentViewController = contentViewController
bottomDrawer.headerViewController = headerViewController
[MDCBottomDrawerColorThemer applySemanticColorScheme:self.colorScheme
                                      toBottomDrawer:bottomDrawer];
```
2018-10-19 15:36:58 -04:00
Cody Weaver
d1a8746ad1
[NavigationDrawer] Add buttons to example to present navigation drawer (#5419)
### Context
In working on navigation drawer bugs the navigation drawer presents itself right when you open the example view controller.
### The problem
This makes it hard to do screenshot testing and harder to work on because you have to go back to the table view and then select the example again every time you want to present.
### The fix
Add a button to present the navigation drawer.
2018-10-15 18:00:37 -04:00
Yarden Eitan
6e31fd6d79
[NavigationDrawer] Added VoiceOver support to have the drawer show at full screen. (#5411)
This code allows us to have the navigation drawer be presented at full screen when VoiceOver or SwitchControl is enabled. Even if the content doesn't take up the full screen, this still makes the content show at full screen.

This has been tested by imitating the VoiceOver by enabling the `isAccessibilityMode` method to always return true. Has been tested on all examples, by altering their preferred content size to be small, and also in their default state. Has been tested on iOS 8.1, and iOS 11. iPhone 6, iPhone SE, and iPhone X. Portrait and Landscape.
2018-10-15 10:38:47 -04:00
Robert Moore
aef3cc73af
[NavigationDrawer] Fix Swift imports in examples. (#5096)
The Swift examples were not compiling internally because they were
missing many imports.
2018-09-11 14:52:07 -04:00
featherless
2181084272
[automated] Standardize our open source license stanza to what Xcode generates. (#4985)
Removes the need to copy-paste stanzas from other files anymore as we'll rely on #4478 to generate the correct stanza for us instead.

This was an automated change generated by running a find-and-replace regular expression:

```
/\*
 Copyright ([0-9]+)-present the Material Components for iOS authors\. All Rights Reserved\.

 Licensed under the Apache License, Version 2\.0 \(the "License"\);
 you may not use this file except in compliance with the License\.
 You may obtain a copy of the License at

 http://www\.apache\.org/licenses/LICENSE-2\.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.
 See the License for the specific language governing permissions and
 limitations under the License\.
 \*/
```

```
/\*
Copyright ([0-9]+)-present the Material Components for iOS authors\. All Rights Reserved\.

Licensed under the Apache License, Version 2\.0 \(the "License"\);
you may not use this file except in compliance with the License\.
You may obtain a copy of the License at

http://www\.apache\.org/licenses/LICENSE-2\.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.
See the License for the specific language governing permissions and
limitations under the License\.
\*/
```

```
/\*
 Copyright ([0-9]+)-present the Material Components for iOS authors\. All Rights Reserved\.
 Licensed under the Apache License, Version 2\.0 \(the "License"\);
 you may not use this file except in compliance with the License\.
 You may obtain a copy of the License at
 http://www\.apache\.org/licenses/LICENSE-2\.0
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.
 See the License for the specific language governing permissions and
 limitations under the License\.
 \*/
```

```
// Copyright $1-present the Material Components for iOS authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
```
2018-08-31 12:13:07 -04:00
Yarden Eitan
3480c50c67
updated to newest CbC standard (#4956)
Move to the new CbC standard released in CatalogByConvention v2.5.0. See PR: material-foundation/cocoapods-catalog-by-convention#27 for more info on the change.
2018-08-29 20:45:13 -04:00
guylivneh
b2d17e1ed6 [NavigationDrawer] Adding the navigation drawer component (#4886)
Adding the navigation drawer component that adds a presentation controller for showing UIViewControllers as a bottom drawer.

History of the component (last CL submitted for it): cl/209765207
Design doc: go/mdc-ios-navigation-drawer

This component will be the first alpha component in this repo, this means that it can still change and will not be included as part of the podspec at first.
2018-08-27 16:00:40 -04:00