Generic form builder in Kotlin

Overview

Build status codecov codebeat badge API Android Arsenal Maven Central

This is a Kotlin port of FormMaster

Examples

Full Screen Partial Screen Login
Example Example Example

Documentation

https://thejuki.github.io/KFormMaster

Java Compatibility

  • This library was ported from Java and is still compatible with Java code
  • See Java Example

Installation

NOTE: This library was moved from Bintray/JCenter to Maven Central. The group id is now "com.github.thejuki".

Add this in your app's build.gradle file:

ext {
  kFormMasterVersion = [Latest]
}

implementation "com.github.thejuki:k-form-master:$kFormMasterVersion"

Add this to your root build.gradle file:

allprojects {
    repositories {
        mavenCentral()
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

BrowserStack

BrowserStack

The App Automate feature of BrowserStack is used for Espresso testing of this library. The App Automate REST API is used to upload the example app and test app to test multiple devices in parallel.

License

This library is available as open source under the terms of the Apache License, Version 2.0.

Comments
  • Element is visible even though set to invisible

    Element is visible even though set to invisible

    Description

    [Description of the bug]

    My form is meant to display questions one by one as a user answers them.

    I accomplish this by building the form and its elements and setting visibility to false (line 153). Then I go through and explicitly enable the first question (line 182).

    However, what I am seeing is that Question 3 (tag 3) is visible. The logcat output in the image shows Element with tag 3 is set INVISIBLE (visible = false).

    Playing around, if i set tag 3 manually to invisible (line 183) it will disappear.

    Expected behavior

    elements set to visible = false are not shown

    Actual behavior

    an element set to visible = false is shown on the UI

    Steps to reproduce the bug

    KFormMaster version

    • Version: 4.0.1

    System information

    • Android OS: 8.1/Latest
    • Issue in Emulator: Yes/No/Untested
    • Issue in physical device: Yes/No/Untested
    bug 
    opened by dhaksddj 17
  • Type Radio as Button Group

    Type Radio as Button Group

    Hi there,

    I'm looking for a way to create a button group which is acting like a custom radio button. So it could by something like a SwitchFormType with more than two switches.

    You can find an example attached.

    example

    enhancement 
    opened by darkwood-studios 16
  • Dealing with validation of free form text

    Dealing with validation of free form text

    This is more a question looking for ideas.

    When I declare a FormMultiLIneEditTextElement, everytime the use enters a character, the listeners fire.

    Is there some way to know when they have finished typing? Maybe some sort of out of focus listener which I could use to trigger validation?

    enhancement 
    opened by dhaksddj 13
  • Logo Proposal for KFormMaster

    Logo Proposal for KFormMaster

    Hi, I'm a graphic designer and I like to collaborate with open source projects. Do you know that the graphic image of a project is very important? thinking about it I would like to design a logo for your Project KFormMaster.

    I will be pleased to collaborate with you.

    opened by area55git 13
  • Request: ability to intercept touch event

    Request: ability to intercept touch event

    Hi,

    I have been given a requirement where a previously completed question is edited, that the user see a message first to confirm they wish to edit the field.

    Currently, the only listener is after they have chosen a value, I show a dialog asking them to confirm the change and then manually set the value to the old value if they say cancel.

    Edit: If i set the value back because they chose cancel, won't the listener fire again putting me in a loop?

    enhancement 
    opened by dhaksddj 12
  • ERROR: Failed to resolve: com.github.TheJuki:ImagePicker:1.11

    ERROR: Failed to resolve: com.github.TheJuki:ImagePicker:1.11

    there is bug when installing the latest version of this library (6.5.2), it show error ERROR: Failed to resolve: com.github.TheJuki:ImagePicker:1.11 Show in Project Structure dialog Affected Modules: app

    but its working okay in previous version (6.5.1).

    bug 
    opened by anggit97 11
  • SegmentedListItem: Drawable should fit size

    SegmentedListItem: Drawable should fit size

    Hi there,

    the SegmentedListItem with a drawable works great so for. But if I set the name to null there is a huge space left below the icon.

    Better: If there is no name set for the button, the drawable should use the additional space and scale to fit.

    icons2

    enhancement 
    opened by darkwood-studios 11
  • Save and restore an input value while scroll

    Save and restore an input value while scroll

    opened by vivchar 11
  • Request: ProgressBarFormField

    Request: ProgressBarFormField

    Hi there,

    I want to show a loading indicator within my form. But I have no idea how to add a view between some form fields. Something like that would be great:

    formBuilder = form(context!!, recyclerView!!) {
    button(1) {
        value = "Send"
        valueObservers.add { _, _ ->
            loadData()
        }
    }
    progress(2) {
        visible = false
    }
    }
    
    fun loadData() {
            formBuilder.getFormElement<FormProgressElement>(2).visible = true
    }
    
    enhancement 
    opened by darkwood-studios 10
  • Form element set to visible = false still appears

    Form element set to visible = false still appears

    Hi,

    I know I mentioned this before but it has reappeared. I'm looping through the elements, setting them to false but one element still appears. Logcat shows it is being set to false.

    Can you have a look because I'm struggling to find a workaround?

    You mentioned last time using the dsl but not sure if that will make difference when I want to amend an existing form elements via FormBuilder class.

    bug 
    opened by dhaksddj 10
  • How to update height of segmented Button

    How to update height of segmented Button

    Hi there,

    I want to update the height of a segmented button on value change.

    This is my approch:

    segmented<SquareMeterListItem>(1) {
        valueObservers.add { newValue, element ->
            (element as FormSegmentedElement).radioButtonHeight = newValue?.getRadioButtonHeight()
        }
    }
    

    The method "getRadioButtonHeight" return null or 60

    Problem: The app crashes. It looks like a loop.

    Any ideas how to change the height of the segmented button on value change?

    bug 
    opened by darkwood-studios 9
  • Bump kotlin-gradle-plugin from 1.7.22 to 1.8.0

    Bump kotlin-gradle-plugin from 1.7.22 to 1.8.0

    Bumps kotlin-gradle-plugin from 1.7.22 to 1.8.0.

    Release notes

    Sourced from kotlin-gradle-plugin's releases.

    Kotlin 1.8.0

    Changelog

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend

    ... (truncated)

    Changelog

    Sourced from kotlin-gradle-plugin's changelog.

    1.8.0

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend

    ... (truncated)

    Commits
    • da1a843 Add ChangeLog for 1.8.0-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump places from 2.7.0 to 3.0.0

    Bump places from 2.7.0 to 3.0.0

    Bumps places from 2.7.0 to 3.0.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump threetenabp from 1.4.0 to 1.4.4

    Bump threetenabp from 1.4.0 to 1.4.4

    Bumps threetenabp from 1.4.0 to 1.4.4.

    Changelog

    Sourced from threetenabp's changelog.

    Version 1.4.4 (2022-11-03)

    • Update ThreeTenBP dependency to 1.6.5 ([change log][threeten165])
    • Update time zone data to 2022g(gtz).

    Version 1.4.3 (2022-11-03)

    • Update ThreeTenBP dependency to 1.6.4 ([change log][threeten164])
    • Update time zone data to 2022f(gtz).

    Version 1.4.2 (2022-10-13)

    • Update ThreeTenBP dependency to 1.6.3 ([change log][threeten163])
    • Update time zone data to 2022e(gtz).

    Version 1.4.1 (2022-09-26)

    • Update ThreeTenBP dependency to 1.6.2 ([change log][threeten162])
    • Update time zone data to 2022d(gtz).
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump mockk from 1.12.3 to 1.13.3

    Bump mockk from 1.12.3 to 1.13.3

    Bumps mockk from 1.12.3 to 1.13.3.

    Release notes

    Sourced from mockk's releases.

    V1.13.3

    What's Changed

    New Contributors

    Full Changelog: https://github.com/mockk/mockk/compare/1.13.2...1.13.3

    1.13.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/mockk/mockk/compare/1.13.1...1.13.2

    1.13.1

    New major release, mainly because the dependency to be included in gradle/maven files has changed from io.mockk:mockk to io.mockk:mockk-<platform>, where platform is either jvm or android.

    What's Changed

    Full Changelog: https://github.com/mockk/mockk/compare/v1.12.8...1.13.1

    V1.12.8

    Big thanks to @โ€‹aSemy, @โ€‹qoomon and @โ€‹kubode for investigating and fixing the bugs introduced in v1.12.7 and further improving the library!

    What's Changed

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Migrate to Maven Central

    Migrate to Maven Central

    https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

    https://www.marcogomiero.com/posts/2021/move-libray-jcenter-to-maven/

    https://getstream.io/blog/publishing-libraries-to-mavencentral-2021/

    https://github.com/GetStream/stream-chat-android

    https://central.sonatype.org/pages/ossrh-guide.html

    https://s01.oss.sonatype.org/#stagingRepositories

    opened by TheJuki 13
Releases(8.3.0)
  • 8.3.0(Apr 18, 2022)

    Updated

    • Targeting SDK API Level 32 (Minimum SDK API Level is still 19)
    • Targeting Java 11
    • Kotlin, Gradle, and several dependencies updated
    • #244 - Remove jcenter() repository and use jitpack dependencies
    • Updated Docs with latest version of mkdocs-material with dark theme toggle

    Issues Resolved

    • #292 - Added require check before signing to prevent needing to sign for Jitpack builds
    • #286 - Register mainViewLayout for FormButtonElement
    • #281 - Use latest version of Dhaval2404/ImagePicker and confirmed #172 is still fixed
    • #277 - Made FormBuilderHelper's listener variable public

    Breaking Changes

    • FormImageElement now needs activityResultLauncher set to a ActivityResultLauncher for Intent
    • FormImageElement now uses Glide instead of Picasso. applyCircleCrop: Boolean has replaced imageTransformation.\
    • FormImageElement's onSelectImage definition changed to ((image: Uri?, error: String?) -> Unit)?
    • FormPlacesAutoCompleteElement in the Example app now needs activityResultLauncher set to a ActivityResultLauncher for Intent
    Source code(tar.gz)
    Source code(zip)
  • 8.2.1(Mar 9, 2021)

    Issues Resolved

    • #244 Migrated to Maven Central (New group id: com.github.thejuki)
      • Still need to migrate older builds from Bintray/JCenter
      • Also, need to use new io.github.gradle-nexus.publish-plugin when Android support is added to fix publishing on release
    • #239 Add back displayNewValue to FormSegmentedElement as this caused more issues
    • #236 Add new SegmentedInlineTitle for a radio group with an inline title (Needed a new layout file and did not want breaking existing segmented usages that have a lot of buttons to display or a long title)
    • #228 Removed call to notifyDataSetChanged() in setItems() as this is not needed
    • #231 Updated imagepicker dependency to rename strings to avoid conflicts

    Breaking Changes

    • #243, #241 Add displayValueFor to FormPickerMultiCheckBoxElement
      • FormPickerMultiCheckBoxElement now needs generic for inner class: multiCheckBox<ListItem, List>
    Source code(tar.gz)
    Source code(zip)
  • 8.1.0(Nov 29, 2020)

  • 8.0.0(Nov 27, 2020)

    Targeting SDK API Level 30, Min API Level 19

    Issues Resolved

    • #196 InlineDatePickerElement: https://thejuki.github.io/KFormMaster/element/inlineDatePicker/
    • #197 Removed disabling FormTextViewElement
    • #201 Setting backgroundColor for the main view for the Header and Label elements
    • #205 Fixed remaining issue with displayNewValue
    • #214 Upgraded to ViewRenderers
    • #220 Moved FormActivityTest to main form folder
    Source code(tar.gz)
    Source code(zip)
  • 7.0.0(Jul 5, 2020)

    Issues Resolved

    • #194 Added editViewGravity. The button element's default gravity is CENTER.
    • #195 Added editViewPaintFlags. Set the value to Paint.UNDERLINE_TEXT_FLAG to underline all text, for example.
    • #179 Moved imagepicker dependency to JCenter since JitPack was not working for everyone.

    Breaking change:

    • editViewGravity replaces both rightToLeft and centerText. Set value to Gravity.START, Gravity.END, Gravity.CENTER, etc.
    Source code(tar.gz)
    Source code(zip)
  • 6.5.6(Jun 14, 2020)

  • 6.5.5(Jun 7, 2020)

  • 6.5.4(May 22, 2020)

  • 6.5.3(May 14, 2020)

    • #185 Add new properties for FormImageElement:
      • displayImageWidth and displayImageHeight to change the size of the image displayed on the form
      • changeImageLabel to set the text of the label that currently is set to "Change Image"
      • showChangeImageLabel to show/hide the "Change Image" label
    Source code(tar.gz)
    Source code(zip)
  • 6.5.2(Mar 9, 2020)

    • #172 Fix ImagePickerActivity where when crop is enabled AND using start() with the completionHandler, the gallery or camera app opens again after a photo is selected/confirmed.

    For now, this fix is in a fork of ImagePicker with JitPack providing the build: https://jitpack.io/#TheJuki/ImagePicker/1.11

    Source code(tar.gz)
    Source code(zip)
  • 6.5.1(Feb 1, 2020)

    • Fix FormSegmentedElement radioButtonWidth and radioButtonHeight to use dp
    • Make FormSegmentedElement properties dynamic. Add height and width to SegmentedDrawable.
    Source code(tar.gz)
    Source code(zip)
  • 6.5.0(Jan 25, 2020)

    Breaking changes:

    • Button text is not centered by default. Set centerText to true to center the text.
    • "padding" in the segmented form element has been renamed to radioButtonPadding

    Fixes:

    • #163 Fix issue where the segmented radio buttons may not align to the top. Added radioGroupWrapContent, radioButtonWidth, and radioButtonHeight to assist with fixed sizing for the buttons.
    • #164 Added titlePadding and padding to assist with squeezing the icon and text together.
    • #167 Setting the titleIcon on a button form element will set the button's drawable. Use padding to squeeze the icon and text together.
    • #169 Added displayNewValue() function. This function is called when the value changes to display the new value specific to the form element.
    Source code(tar.gz)
    Source code(zip)
  • 6.4.8(Dec 15, 2019)

  • 6.4.7(Dec 12, 2019)

  • 6.4.6(Dec 4, 2019)

  • 6.4.5(Dec 4, 2019)

    • #158 Add ability to change the image of the ImageView by changing value
    • #152 Add support for loading images from a data: string including SVGs in the ImageView
    Source code(tar.gz)
    Source code(zip)
  • 6.4.4(Nov 26, 2019)

  • 6.4.3(Oct 26, 2019)

  • 6.4.2(Sep 8, 2019)

  • 6.4.1(Aug 25, 2019)

    • Update dependencies:
      • Bump RendererRecyclerViewAdapter from 2.7.0 to 2.8.0
      • Bump tokenautocomplete from 3.0.1 to 3.0.2
      • Bump imagepicker from 1.2 to 1.3
    • Fix code style issues
    Source code(tar.gz)
    Source code(zip)
  • 6.4.0(May 20, 2019)

    • #119, #122 Image View Picker element added
    • #120 Add displayValueFor to dropdown element
    • #118 Add theme to picker elements to style the alert dialog
    • Added is24HourView to dateTime and time elements
    • Set min SDK version to 19
    Source code(tar.gz)
    Source code(zip)
  • 6.3.4(Mar 25, 2019)

  • 6.3.3(Mar 14, 2019)

    • #107 New color in colors.xml for TextView Element: colorFormMasterElementTextView
    • #102 The Segmented Element should keep the model value when it is refreshed
    • #106 Possible fix to date format issues
    Source code(tar.gz)
    Source code(zip)
  • 6.3.2(Mar 12, 2019)

  • 6.3.1(Mar 3, 2019)

  • 6.3.0(Feb 17, 2019)

  • 6.2.0(Feb 7, 2019)

  • 6.1.1(Nov 16, 2018)

  • 6.1.0(Nov 13, 2018)

  • 6.0.0(Nov 11, 2018)

    • #72 The Form Header can now collapse elements when initialized or later
    • Removed Form Element Builder Classes
    • Migration Guide: https://thejuki.github.io/KFormMaster/migrateBuilder/
    Source code(tar.gz)
    Source code(zip)
Run Kotlin/JS libraries in Kotlin/JVM and Kotlin/Native programs

Zipline This library streamlines using Kotlin/JS libraries from Kotlin/JVM and Kotlin/Native programs. It makes it possible to do continuous deploymen

Cash App 1.5k Dec 30, 2022
A somewhat copy past of Jetbrain's code from the kotlin plugin repo to make it humanly possible to test Intellij IDEA kotlin plugins that work on kotlin

A somewhat copy past of Jetbrain's code from the kotlin plugin repo to make it humanly possible to test Intellij IDEA kotlin plugins that work on kotlin

common sense OSS 0 Jan 20, 2022
Real life Kotlin Multiplatform project with an iOS application developed in Swift with SwiftUI, an Android application developed in Kotlin with Jetpack Compose and a backed in Kotlin hosted on AppEngine.

Conferences4Hall Real life Kotlin Multiplatform project with an iOS application developed in Swift with SwiftUI, an Android application developed in K

Gรฉrard Paligot 98 Dec 15, 2022
Android + Kotlin + Github Actions + ktlint + Detekt + Gradle Kotlin DSL + buildSrc = โค๏ธ

kotlin-android-template ?? A simple Github template that lets you create an Android/Kotlin project and be up and running in a few seconds. This templa

Nicola Corti 1.5k Jan 3, 2023
LifecycleMvp 1.2 0.0 Kotlin is MVP architecture implementation with Android Architecture Components and Kotlin language features

MinSDK 14+ Download Gradle Add to project level build.gradle allprojects { repositories { ... maven { url 'https://jitpack.io' }

Robert 20 Nov 9, 2021
Opinionated Redux-like implementation backed by Kotlin Coroutines and Kotlin Multiplatform Mobile

CoRed CoRed is Redux-like implementation that maintains the benefits of Redux's core idea without the boilerplate. No more action types, action creato

Kittinun Vantasin 28 Dec 10, 2022
๐Ÿ‘‹ A common toolkit (utils) โš’๏ธ built to help you further reduce Kotlin boilerplate code and improve development efficiency. Do you think 'kotlin-stdlib' or 'android-ktx' is not sweet enough? You need this! ๐Ÿญ

Toolkit [ ?? Work in progress โ› ?? ??๏ธ ?? ] Snapshot version: repositories { maven("https://s01.oss.sonatype.org/content/repositories/snapshots") }

ๅ‡› 35 Jul 23, 2022
An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile.

An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile. ้กน็›ฎๆžถๆž„ไธป่ฆๅˆ†ไธบๅŽŸ็”Ÿ็ณป็ปŸๅฑ‚ใ€Android/iOSไธšๅŠกSDKๅฑ‚ใ€KMM SDKๅฑ‚ใ€KMMไธšๅŠก้€ป่พ‘SDKๅฑ‚ใ€iOS sdkfra

libill 4 Nov 20, 2022
Provides Kotlin libs and some features for building Kotlin plugins

Kotlin Plugin Provides Kotlin libs and some features for building awesome Kotlin plugins. Can be used instead of CreeperFace's KotlinLib (don't use to

null 3 Dec 24, 2021
Notes-App-Kotlin - Notes App Built Using Kotlin

Notes-App-Kotlin Splash Screen Home Page Adding New Notes Filter Feature Search

Priyanka 4 Oct 2, 2022
Kotlin-client-dsl - A kotlin-based dsl project for a (Client) -> (Plugin) styled program

kotlin-client-dsl a kotlin-based dsl project for a (Client) -> (Plugin) styled p

jackson 3 Dec 10, 2022
A Kotlin Native program to show the time since a date, using Kotlin LibUI

TimeSince A Kotlin Native program to show the time since a date, using Kotlin LibUI Report Bug . Request Feature About The Project TimeSince is a Kotl

Russell Banks 2 May 6, 2022
RoomJetpackCompose is an app written in Kotlin and shows a simple solution to perform CRUD operations in the Room database using Kotlin Flow in clean architecture.

RoomJetpackCompose is an app written in Kotlin and shows a simple solution to perform CRUD operations in the Room database using Kotlin Flow in clean architecture.

Alex 27 Jan 1, 2023
Create an application with Kotlin/JVM and Kotlin/JS, and explore features around code sharing, serialization, server- and client

Practical Kotlin Multiplatform on the Web ๋ณธ ์ €์žฅ์†Œ๋Š” ์ฝ”ํ‹€๋ฆฐ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ธฐ๋ฐ˜ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์›Œํฌ์ˆ(๊ฐ•์ขŒ)์„ ์œ„ํ•ด ์ž‘์„ฑ๋œ ํ…œํ”Œ๋ฆฟ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์›Œํฌ์ˆ ๊ณผ์ •์—์„œ ์ฝ”ํ‹€๋ฆฐ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋ก ํŠธ์—”๋“œ(front-end)๋Š” Ko

SpringRunner 14 Nov 5, 2022
Create an application with Kotlin/JVM and Kotlin/JS, and explore features around code sharing, serialization, server- and client

Building a Full Stack Web App with Kotlin Multiplatform ๋ณธ ์ €์žฅ์†Œ๋Š” INFCON 2022์—์„œ ์ฝ”ํ‹€๋ฆฐ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ธฐ๋ฐ˜ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ธ์ฆˆ์˜จ๋žฉ์„ ์œ„ํ•ด ์ž‘์„ฑ๋œ ํ…œํ”Œ๋ฆฟ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ํ•ธ์ฆˆ์˜จ ๊ณผ์ •์—์„œ ์ฝ”ํ‹€๋ฆฐ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์„

Arawn Park 19 Sep 8, 2022
Kotlin library for Android

KAndroid Kotlin library for Android providing useful extensions to eliminate boilerplate code in Android SDK and focus on productivity. Download Downl

Paweล‚ Gajda 890 Nov 13, 2022
Type-safe time calculations in Kotlin, powered by generics.

Time This library is made for you if you have ever written something like this: val duration = 10 * 1000 to represent a duration of 10 seconds(in mill

Kizito Nwose 958 Dec 10, 2022
๐Ÿ“’ NotyKT is a complete ๐Ÿ’ŽKotlin-stack (Backend + Android) ๐Ÿ“ฑ application built to demonstrate the use of Modern development tools with best practices implementation๐Ÿฆธ.

NotyKT ??๏ธ NotyKT is the complete Kotlin-stack note taking ??๏ธ application ?? built to demonstrate a use of Kotlin programming language in server-side

Shreyas Patil 1.4k Jan 4, 2023
A Kotlin DSL wrapper around the mikepenz/MaterialDrawer library.

MaterialDrawerKt Create navigation drawers in your Activities and Fragments without having to write any XML, in pure Kotlin code, with access to all t

Mรกrton Braun 517 Nov 19, 2022