├── .gitmodules ├── BrickKit ├── app │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── ic_launcher-web.png │ │ │ ├── res │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── values │ │ │ │ ├── dimens.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ ├── drawable-anydpi │ │ │ │ ├── rounded_bg.xml │ │ │ │ └── ic_arrow_forward.xml │ │ │ ├── drawable │ │ │ │ ├── arrow_down_black.xml │ │ │ │ └── arrow_up_black.xml │ │ │ └── layout │ │ │ │ ├── fragment_brick.xml │ │ │ │ ├── passive_brick.xml │ │ │ │ ├── vertical_fragment_brick.xml │ │ │ │ ├── text_brick.xml │ │ │ │ ├── active_brick.xml │ │ │ │ ├── text_brick_vm.xml │ │ │ │ ├── active_brick_placeholder.xml │ │ │ │ ├── activity_main.xml │ │ │ │ └── controller_brick_vm.xml │ │ │ ├── java │ │ │ └── com │ │ │ │ └── wayfair │ │ │ │ └── brickkitdemo │ │ │ │ ├── addremove │ │ │ │ ├── datamodel │ │ │ │ │ └── ControllerDataModel.kt │ │ │ │ ├── viewmodel │ │ │ │ │ └── ControllerViewModel.kt │ │ │ │ └── AddRemoveBrickFragment.kt │ │ │ │ ├── simplebrick │ │ │ │ ├── viewmodel │ │ │ │ │ └── TextViewModel.kt │ │ │ │ ├── datamodel │ │ │ │ │ └── TextDataModel.kt │ │ │ │ └── SimpleBrickFragment.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── mainfragment │ │ │ │ ├── bricks │ │ │ │ │ ├── PassiveBrick.kt │ │ │ │ │ └── ActiveBrick.kt │ │ │ │ └── MainActivityFragment.kt │ │ │ │ ├── fragmentbrick │ │ │ │ ├── FragmentBrickFragment.kt │ │ │ │ └── bricks │ │ │ │ │ └── FragmentBrick.kt │ │ │ │ ├── BrickFragment.kt │ │ │ │ ├── bricks │ │ │ │ └── TextBrick.kt │ │ │ │ ├── infinitescroll │ │ │ │ └── InfiniteScrollBrickFragment.kt │ │ │ │ └── staggeredinfinitescroll │ │ │ │ └── StaggeredInfiniteScrollBrickFragment.kt │ │ │ └── AndroidManifest.xml │ ├── detekt-baseline.xml │ ├── proguard-rules.pro │ └── build.gradle ├── bricks │ ├── .gitignore │ ├── src │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── res │ │ │ │ ├── values │ │ │ │ │ ├── config.xml │ │ │ │ │ └── dimens.xml │ │ │ │ └── values-sw600dp │ │ │ │ │ └── config.xml │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── wayfair │ │ │ │ └── brickkit │ │ │ │ ├── OpenForTesting.kt │ │ │ │ ├── padding │ │ │ │ ├── ZeroBrickPadding.kt │ │ │ │ ├── BrickPadding.kt │ │ │ │ └── BrickPaddingFactory.kt │ │ │ │ ├── animator │ │ │ │ └── AvoidFlickerItemAnimator.kt │ │ │ │ ├── size │ │ │ │ ├── FullWidthBrickSize.kt │ │ │ │ ├── HalfWidthBrickSize.kt │ │ │ │ ├── ThirdWidthBrickSize.kt │ │ │ │ ├── QuarterWidthBrickSize.kt │ │ │ │ ├── FullPhoneHalfTabletBrickSize.kt │ │ │ │ ├── FullPhoneThirdTabletBrickSize.kt │ │ │ │ ├── FullPhoneFullHalfTabletBrickSize.kt │ │ │ │ ├── FullPhoneFullQuarterTabletBrickSize.kt │ │ │ │ ├── FullPhoneHalfThirdTabletBrickSize.kt │ │ │ │ ├── HalfPhoneThirdTabletBrickSize.kt │ │ │ │ ├── HalfPhoneHalfQuarterTabletBrickSize.kt │ │ │ │ ├── HalfPhoneThirdQuarterTabletBrickSize.kt │ │ │ │ ├── NumberOfColumnsBrickSize.kt │ │ │ │ ├── PercentageBrickSize.kt │ │ │ │ └── BrickSize.kt │ │ │ │ ├── DataSetChangedListener.kt │ │ │ │ ├── OnReachedItemAtPosition.kt │ │ │ │ ├── BrickSpanSizeLookup.kt │ │ │ │ ├── BrickDiffUtilCallback.kt │ │ │ │ ├── viewholder │ │ │ │ ├── BrickViewHolder.kt │ │ │ │ └── factory │ │ │ │ │ └── BrickViewHolderFactory.kt │ │ │ │ ├── SafeAdapterListUpdateCallback.kt │ │ │ │ ├── brick │ │ │ │ ├── ViewModel.kt │ │ │ │ ├── DataModel.kt │ │ │ │ ├── BaseBrick.kt │ │ │ │ └── ViewModelBrick.kt │ │ │ │ ├── BrickRecyclerItemDecoration.kt │ │ │ │ └── BrickRecyclerAdapter.kt │ │ └── androidTest │ │ │ ├── java │ │ │ └── com │ │ │ │ └── wayfair │ │ │ │ └── brickkit │ │ │ │ ├── size │ │ │ │ ├── FullWidthBrickSizeTest.kt │ │ │ │ ├── HalfWidthBrickSizeTest.kt │ │ │ │ ├── ThirdWidthBrickSizeTest.kt │ │ │ │ ├── QuarterWidthBrickSizeTest.kt │ │ │ │ ├── FullPhoneHalfTabletBrickSizeTest.kt │ │ │ │ ├── FullPhoneThirdTabletBrickSizeTest.kt │ │ │ │ ├── HalfPhoneThirdTabletBrickSizeTest.kt │ │ │ │ ├── FullPhoneHalfThirdTabletBrickSizeTest.kt │ │ │ │ ├── FullPhoneFullHalfTabletBrickSizeTest.kt │ │ │ │ ├── FullPhoneFullQuarterTabletBrickSizeTest.kt │ │ │ │ ├── HalfPhoneHalfQuarterTabletBrickSizeTest.kt │ │ │ │ ├── HalfPhoneThirdQuarterTabletBrickSizeTest.kt │ │ │ │ ├── NumberOfColumnsBrickSizeTest.kt │ │ │ │ ├── PercentageBrickSizeTest.kt │ │ │ │ ├── BrickSizeTest.kt │ │ │ │ └── BrickSizeTestKtx.kt │ │ │ │ ├── animator │ │ │ │ └── AvoidFlickerItemAnimatorTest.kt │ │ │ │ ├── padding │ │ │ │ ├── ZeroBrickPaddingTest.kt │ │ │ │ ├── BrickPaddingTest.kt │ │ │ │ └── BrickPaddingFactoryTest.kt │ │ │ │ ├── brick │ │ │ │ ├── ViewModelTest.kt │ │ │ │ ├── DataModelTest.kt │ │ │ │ ├── BaseBrickTest.kt │ │ │ │ └── ViewModelBrickTest.kt │ │ │ │ ├── SafeAdapterListUpdateCallbackTest.kt │ │ │ │ ├── BrickDiffUtilCallbackTest.kt │ │ │ │ ├── BrickSpanSizeLookupTest.kt │ │ │ │ ├── viewholder │ │ │ │ └── factory │ │ │ │ │ └── BrickViewHolderFactoryTest.kt │ │ │ │ └── BrickRecyclerItemDecorationTest.kt │ │ │ └── res │ │ │ └── layout │ │ │ ├── text_brick_vm_placeholder.xml │ │ │ └── text_brick_vm.xml │ ├── detekt-baseline.xml │ └── build.gradle ├── settings.gradle ├── .editorconfig ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── .gitignore ├── config │ ├── ktlint.gradle │ ├── detekt.gradle │ └── quality │ │ └── checkstyle │ │ └── checkstyle.xml ├── gradle.properties ├── build.gradle ├── gradlew.bat ├── scripts │ └── publish-mavencentral.gradle └── gradlew ├── .gitignore ├── Docs └── SampleImage │ ├── BrickKit.png │ ├── Reverse.png │ ├── SpanExample.png │ ├── StickyFooter.png │ ├── StickyHeader.png │ └── SimpleFragment.png ├── CONTRIBUTING.md ├── renovate.json ├── .github └── workflows │ ├── codecov_baseline.yml │ ├── ci.yml │ └── publish.yml ├── README.md ├── CHANGELOG.md └── LICENSE /.gitmodules: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /BrickKit/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /BrickKit/bricks/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /BrickKit/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':bricks' 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle/ 2 | .idea/ 3 | BrickKit/bricks/src/main/gen/ -------------------------------------------------------------------------------- /Docs/SampleImage/BrickKit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/Docs/SampleImage/BrickKit.png -------------------------------------------------------------------------------- /Docs/SampleImage/Reverse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/Docs/SampleImage/Reverse.png -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Docs/SampleImage/SpanExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/Docs/SampleImage/SpanExample.png -------------------------------------------------------------------------------- /Docs/SampleImage/StickyFooter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/Docs/SampleImage/StickyFooter.png -------------------------------------------------------------------------------- /Docs/SampleImage/StickyHeader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/Docs/SampleImage/StickyHeader.png -------------------------------------------------------------------------------- /BrickKit/.editorconfig: -------------------------------------------------------------------------------- 1 | 2 | # ktlint configuration 3 | [*.{kt,kts}] 4 | max_line_length=150 5 | disabled_rules=import-ordering 6 | -------------------------------------------------------------------------------- /Docs/SampleImage/SimpleFragment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/Docs/SampleImage/SimpleFragment.png -------------------------------------------------------------------------------- /BrickKit/app/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/BrickKit/app/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /BrickKit/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/BrickKit/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/BrickKit/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/BrickKit/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/BrickKit/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/BrickKit/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wayfair/brickkit-android/HEAD/BrickKit/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /BrickKit/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | .idea/ 5 | /.idea/workspace.xml 6 | /.idea/libraries 7 | .DS_Store 8 | /build 9 | /captures 10 | .externalNativeBuild 11 | -------------------------------------------------------------------------------- /BrickKit/app/detekt-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/res/values/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4dp 4 | 8dp 5 | 6 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/res/values-sw600dp/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | true 5 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/OpenForTesting.kt: -------------------------------------------------------------------------------- 1 | package com.wayfair.brickkit 2 | 3 | @Target(AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FUNCTION) 4 | annotation class OpenForTesting 5 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/padding/ZeroBrickPadding.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.padding 5 | 6 | class ZeroBrickPadding : BrickPadding(0, 0, 0, 0, 0, 0, 0, 0) 7 | -------------------------------------------------------------------------------- /BrickKit/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /BrickKit/config/ktlint.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'org.jlleitschuh.gradle.ktlint' 2 | 3 | ktlint { 4 | android = true 5 | outputToConsole = true 6 | reporters { 7 | reporter "checkstyle" 8 | reporter "plain_group_by_file" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/drawable-anydpi/rounded_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #3F51B5 5 | #303F9F 6 | #FF4081 7 | 8 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/animator/AvoidFlickerItemAnimator.kt: -------------------------------------------------------------------------------- 1 | package com.wayfair.brickkit.animator 2 | 3 | import androidx.recyclerview.widget.DefaultItemAnimator 4 | 5 | internal class AvoidFlickerItemAnimator : DefaultItemAnimator() { 6 | init { 7 | changeDuration = 0 8 | supportsChangeAnimations = false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/FullWidthBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class FullWidthBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | FullWidthBrickSize().verifyGetSpans(240, 240, 240, 240) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/HalfWidthBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class HalfWidthBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | HalfWidthBrickSize().verifyGetSpans(120, 120, 120, 120) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/ThirdWidthBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class ThirdWidthBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | ThirdWidthBrickSize().verifyGetSpans(80, 80, 80, 80) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/QuarterWidthBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class QuarterWidthBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | QuarterWidthBrickSize().verifyGetSpans(60, 60, 60, 60) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/FullPhoneHalfTabletBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class FullPhoneHalfTabletBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | FullPhoneHalfTabletBrickSize().verifyGetSpans(240, 240, 120, 120) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/FullPhoneThirdTabletBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class FullPhoneThirdTabletBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | FullPhoneThirdTabletBrickSize().verifyGetSpans(240, 240, 80, 80) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/HalfPhoneThirdTabletBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class HalfPhoneThirdTabletBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | HalfPhoneThirdTabletBrickSize().verifyGetSpans(120, 120, 80, 80) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | We welcome your contributions! 4 | 5 | ## TL;DR 6 | 7 | 1. Fork it 8 | 2. Create your feature branch (`git checkout -b my-new-feature`) 9 | 3. Commit your changes (`git commit -am 'Add some feature'`) 10 | 4. Push to the branch (`git push origin my-new-feature`) 11 | 5. Create a new Pull Request 12 | 13 | ## Guidelines 14 | 15 | ### Pre-commit 16 | 17 | - Create an issue 18 | - Tests 19 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/FullPhoneHalfThirdTabletBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class FullPhoneHalfThirdTabletBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | FullPhoneHalfThirdTabletBrickSize().verifyGetSpans(240, 240, 120, 80) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/FullWidthBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class FullWidthBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT, 10 | BrickDataManager.SPAN_COUNT, 11 | BrickDataManager.SPAN_COUNT, 12 | BrickDataManager.SPAN_COUNT 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/FullPhoneFullHalfTabletBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class FullPhoneFullHalfTabletBrickSizeTest { 9 | 10 | @Test 11 | fun testGetSpans() { 12 | FullPhoneFullHalfTabletBrickSize().verifyGetSpans(240, 240, 240, 120) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/FullPhoneFullQuarterTabletBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class FullPhoneFullQuarterTabletBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | FullPhoneFullQuarterTabletBrickSize().verifyGetSpans(240, 240, 240, 60) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/HalfPhoneHalfQuarterTabletBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class HalfPhoneHalfQuarterTabletBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | HalfPhoneHalfQuarterTabletBrickSize().verifyGetSpans(120, 120, 120, 60) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/DataSetChangedListener.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2017-2021 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit 5 | 6 | /** 7 | * Listener which can be used to listen for data set changes. 8 | */ 9 | interface DataSetChangedListener { 10 | /** 11 | * Callback that will be triggered when data set changes occur. 12 | */ 13 | fun onDataSetChanged() 14 | } 15 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/HalfPhoneThirdQuarterTabletBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class HalfPhoneThirdQuarterTabletBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | HalfPhoneThirdQuarterTabletBrickSize().verifyGetSpans(120, 120, 80, 60) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/HalfWidthBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class HalfWidthBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT / 2, 10 | BrickDataManager.SPAN_COUNT / 2, 11 | BrickDataManager.SPAN_COUNT / 2, 12 | BrickDataManager.SPAN_COUNT / 2 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/ThirdWidthBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class ThirdWidthBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT / 3, 10 | BrickDataManager.SPAN_COUNT / 3, 11 | BrickDataManager.SPAN_COUNT / 3, 12 | BrickDataManager.SPAN_COUNT / 3 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/QuarterWidthBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class QuarterWidthBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT / 4, 10 | BrickDataManager.SPAN_COUNT / 4, 11 | BrickDataManager.SPAN_COUNT / 4, 12 | BrickDataManager.SPAN_COUNT / 4 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/FullPhoneHalfTabletBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class FullPhoneHalfTabletBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT, 10 | BrickDataManager.SPAN_COUNT, 11 | BrickDataManager.SPAN_COUNT / 2, 12 | BrickDataManager.SPAN_COUNT / 2 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/FullPhoneThirdTabletBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class FullPhoneThirdTabletBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT, 10 | BrickDataManager.SPAN_COUNT, 11 | BrickDataManager.SPAN_COUNT / 3, 12 | BrickDataManager.SPAN_COUNT / 3 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/FullPhoneFullHalfTabletBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class FullPhoneFullHalfTabletBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT, 10 | BrickDataManager.SPAN_COUNT, 11 | BrickDataManager.SPAN_COUNT, 12 | BrickDataManager.SPAN_COUNT / 2 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/FullPhoneFullQuarterTabletBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class FullPhoneFullQuarterTabletBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT, 10 | BrickDataManager.SPAN_COUNT, 11 | BrickDataManager.SPAN_COUNT, 12 | BrickDataManager.SPAN_COUNT / 4 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/FullPhoneHalfThirdTabletBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class FullPhoneHalfThirdTabletBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT, 10 | BrickDataManager.SPAN_COUNT, 11 | BrickDataManager.SPAN_COUNT / 2, 12 | BrickDataManager.SPAN_COUNT / 3 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/HalfPhoneThirdTabletBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class HalfPhoneThirdTabletBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT / 2, 10 | BrickDataManager.SPAN_COUNT / 2, 11 | BrickDataManager.SPAN_COUNT / 3, 12 | BrickDataManager.SPAN_COUNT / 3 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/drawable/arrow_down_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/drawable/arrow_up_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /BrickKit/bricks/detekt-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LongParameterList:BrickPadding.kt$BrickPadding$( val innerLeftPadding: Int, val innerTopPadding: Int, val innerRightPadding: Int, val innerBottomPadding: Int, val outerLeftPadding: Int, val outerTopPadding: Int, val outerRightPadding: Int, val outerBottomPadding: Int ) 6 | 7 | 8 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/NumberOfColumnsBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class NumberOfColumnsBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | NumberOfColumnsBrickSize(6).verifyGetSpans(40, 40, 40, 40) 12 | NumberOfColumnsBrickSize(2).verifyGetSpans(120, 120, 120, 120) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/HalfPhoneHalfQuarterTabletBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class HalfPhoneHalfQuarterTabletBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT / 2, 10 | BrickDataManager.SPAN_COUNT / 2, 11 | BrickDataManager.SPAN_COUNT / 2, 12 | BrickDataManager.SPAN_COUNT / 4 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/HalfPhoneThirdQuarterTabletBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class HalfPhoneThirdQuarterTabletBrickSize : BrickSize( 9 | BrickDataManager.SPAN_COUNT / 2, 10 | BrickDataManager.SPAN_COUNT / 2, 11 | BrickDataManager.SPAN_COUNT / 3, 12 | BrickDataManager.SPAN_COUNT / 4 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/OnReachedItemAtPosition.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2017-2021 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit 5 | 6 | /** 7 | * Callback interface used to notify when binding items. 8 | */ 9 | interface OnReachedItemAtPosition { 10 | /** 11 | * Callback when binding items. 12 | * 13 | * @param position position of item that was bound 14 | */ 15 | fun bindingItemAtPosition(position: Int) 16 | } 17 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/drawable-anydpi/ic_arrow_forward.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/layout/fragment_brick.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/animator/AvoidFlickerItemAnimatorTest.kt: -------------------------------------------------------------------------------- 1 | package com.wayfair.brickkit.animator 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Assert.assertFalse 5 | import org.junit.Test 6 | 7 | class AvoidFlickerItemAnimatorTest { 8 | @Test 9 | fun testConstructor() { 10 | AvoidFlickerItemAnimator().apply { 11 | assertFalse(supportsChangeAnimations) 12 | assertEquals(0, changeDuration) 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/layout/passive_brick.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/PercentageBrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import org.junit.Test 7 | 8 | class PercentageBrickSizeTest { 9 | @Test 10 | fun testGetSpans() { 11 | PercentageBrickSize(.2f).verifyGetSpans(48, 48, 48, 48) 12 | PercentageBrickSize(.4f).verifyGetSpans(96, 96, 96, 96) 13 | PercentageBrickSize(.5f).verifyGetSpans(120, 120, 120, 120) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/NumberOfColumnsBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class NumberOfColumnsBrickSize(numberOfColumns: Int) : BrickSize( 9 | BrickDataManager.SPAN_COUNT / numberOfColumns, 10 | BrickDataManager.SPAN_COUNT / numberOfColumns, 11 | BrickDataManager.SPAN_COUNT / numberOfColumns, 12 | BrickDataManager.SPAN_COUNT / numberOfColumns 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/size/PercentageBrickSize.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | 8 | class PercentageBrickSize(percentage: Float) : BrickSize( 9 | (BrickDataManager.SPAN_COUNT * percentage).toInt(), 10 | (BrickDataManager.SPAN_COUNT * percentage).toInt(), 11 | (BrickDataManager.SPAN_COUNT * percentage).toInt(), 12 | (BrickDataManager.SPAN_COUNT * percentage).toInt() 13 | ) 14 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/java/com/wayfair/brickkitdemo/addremove/datamodel/ControllerDataModel.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2017-2021 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkitdemo.addremove.datamodel 5 | 6 | import com.wayfair.brickkit.brick.DataModel 7 | 8 | /** 9 | * Data model for a controller brick. 10 | */ 11 | class ControllerDataModel(initialValue: Int) : DataModel() { 12 | 13 | var value: Int = initialValue 14 | set(value) { 15 | field = value 16 | notifyChange() 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/java/com/wayfair/brickkitdemo/simplebrick/viewmodel/TextViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.wayfair.brickkitdemo.simplebrick.viewmodel 2 | 3 | import androidx.databinding.Bindable 4 | import com.wayfair.brickkit.brick.ViewModel 5 | import com.wayfair.brickkitdemo.simplebrick.datamodel.TextDataModel 6 | 7 | /** 8 | * A view model for a text brick. 9 | */ 10 | class TextViewModel(dataModel: TextDataModel) : ViewModel(dataModel) { 11 | /** 12 | * Method that data binding uses to set the view's text. 13 | * 14 | * @return the text 15 | */ 16 | @get:Bindable 17 | val text: String 18 | get() = dataModel.text 19 | } 20 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 0dp 9 | 11 | 8dp 12 | 13 | 16dp 14 | 15 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/layout/vertical_fragment_brick.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | BrickKit 4 | - 5 | + 6 | Simple Brick View 7 | Add/Remove Brick View 8 | Infinite Scroll Brick View 9 | Staggered Infinite Scroll Brick View 10 | Fragment Brick View 11 | 12 | 13 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/java/com/wayfair/brickkitdemo/simplebrick/datamodel/TextDataModel.kt: -------------------------------------------------------------------------------- 1 | package com.wayfair.brickkitdemo.simplebrick.datamodel 2 | 3 | import com.wayfair.brickkit.brick.DataModel 4 | 5 | /** 6 | * Data model for text bricks. 7 | */ 8 | class TextDataModel(initialText: String) : DataModel() { 9 | 10 | var text: String = initialText 11 | private set(value) { 12 | field = value 13 | notifyChange() 14 | } 15 | 16 | /** 17 | * Append the string to the existing text. 18 | * 19 | * @param newText the new string to be appended 20 | */ 21 | fun appendText(newText: String) { 22 | text += newText 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /BrickKit/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/mdemaso/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "description": "Renovate configuration recommended by the Wayfair OSPO", 4 | "labels": [ 5 | "renovate/{{depName}}" 6 | ], 7 | "extends": [ 8 | "config:base", 9 | ":dependencyDashboard", 10 | ":rebaseStalePrs" 11 | ], 12 | "schedule": [ 13 | "before 3am every weekday" 14 | ], 15 | "enabledManagers": [ 16 | "github-actions" 17 | ], 18 | "packageRules": [ 19 | { 20 | "matchUpdateTypes": ["minor", "patch", "pin", "digest"], 21 | "groupName": "Minor Updates", 22 | "automerge": false 23 | }, 24 | { 25 | "matchManagers": ["github-actions"], 26 | "groupName": "GitHub Actions" 27 | } 28 | ] 29 | } 30 | 31 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/main/java/com/wayfair/brickkit/BrickSpanSizeLookup.kt: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright © 2017-2021 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit 5 | 6 | import android.content.Context 7 | import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup 8 | 9 | /** 10 | * [androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup] which grabs the span size 11 | * from the brick at the given position. 12 | */ 13 | internal class BrickSpanSizeLookup( 14 | private val context: Context, 15 | private val brickDataManager: BrickDataManager 16 | ) : SpanSizeLookup() { 17 | 18 | override fun getSpanSize(position: Int): Int = 19 | brickDataManager.recyclerViewItems.getOrNull(position)?.spanSize?.getSpans(context) ?: 1 20 | } 21 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/res/layout/text_brick_vm_placeholder.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /.github/workflows/codecov_baseline.yml: -------------------------------------------------------------------------------- 1 | name: CodeCov Baseline Publish 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'dev' 7 | jobs: 8 | codecov-baseline-publish: 9 | name: Publish codecov baseline for dev 10 | runs-on: macos-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v3 14 | 15 | - name: set up JDK 11 16 | uses: actions/setup-java@v3 17 | with: 18 | java-version: 11.0.1+13 19 | distribution: 'zulu' 20 | cache: gradle 21 | 22 | - name: Run Tests 23 | uses: reactivecircus/android-emulator-runner@v2 24 | with: 25 | api-level: 29 26 | script: cd BrickKit && ./gradlew connectedCheck 27 | 28 | - name: Upload to Codecov 29 | run: bash <(curl -s https://codecov.io/bash) 30 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/padding/ZeroBrickPaddingTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.padding 5 | 6 | import org.junit.Assert.assertEquals 7 | import org.junit.Test 8 | 9 | class ZeroBrickPaddingTest { 10 | @Test 11 | fun testZeroBrickPadding() { 12 | ZeroBrickPadding().apply { 13 | assertEquals(0, innerLeftPadding) 14 | assertEquals(0, innerTopPadding) 15 | assertEquals(0, innerRightPadding) 16 | assertEquals(0, innerBottomPadding) 17 | assertEquals(0, outerLeftPadding) 18 | assertEquals(0, outerTopPadding) 19 | assertEquals(0, outerRightPadding) 20 | assertEquals(0, outerBottomPadding) 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /BrickKit/bricks/src/androidTest/java/com/wayfair/brickkit/size/BrickSizeTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2017-2020 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkit.size 5 | 6 | import com.wayfair.brickkit.BrickDataManager 7 | import org.junit.Test 8 | 9 | class BrickSizeTest { 10 | @Test 11 | fun testGetSpans() { 12 | val brickSize = object : BrickSize(PORTRAIT_PHONE, LANDSCAPE_PHONE, PORTRAIT_TABLET, LANDSCAPE_TABLET) {} 13 | 14 | brickSize.verifyGetSpans(BrickDataManager.SPAN_COUNT, LANDSCAPE_PHONE, PORTRAIT_TABLET, LANDSCAPE_TABLET) 15 | } 16 | 17 | companion object { 18 | private const val LANDSCAPE_TABLET = 60 19 | private const val PORTRAIT_TABLET = 120 20 | private const val LANDSCAPE_PHONE = 180 21 | private const val PORTRAIT_PHONE = 250 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/java/com/wayfair/brickkitdemo/MainActivity.kt: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright © 2017-2021 Wayfair. All rights reserved. 3 | */ 4 | package com.wayfair.brickkitdemo 5 | 6 | import android.os.Bundle 7 | import androidx.appcompat.app.AppCompatActivity 8 | import com.wayfair.brickkitdemo.mainfragment.MainActivityFragment 9 | 10 | /** 11 | * Main activity for the app. 12 | */ 13 | class MainActivity : AppCompatActivity() { 14 | 15 | override fun onCreate(savedInstanceState: Bundle?) { 16 | super.onCreate(savedInstanceState) 17 | setContentView(R.layout.activity_main) 18 | setSupportActionBar(findViewById(R.id.toolbar)) 19 | 20 | if (savedInstanceState == null) { 21 | supportFragmentManager.beginTransaction().replace(R.id.content, MainActivityFragment()).commit() 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /BrickKit/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |