Skip to content

Releases: danielsaidi/SwiftUIKit

3.0.0

10 Oct 21:02
Compare
Choose a tag to compare

This major version removes all previously deprecated logic to make the library tighter and cleaner.

If you need any parts of the library that have now been removed, just grab them from the previous 2.9 versions.

✨ New features

  • The disableDynamicType view extension now accepts a size category.
  • The ListSelectItem now accepts a customizable checkmark icon.

💥 Breaking Changes

  • The Documents namespace has been removed without being previously deprecated.
  • The .safeAreaInsets environment value has been removed without being previously deprecated.
  • The Views/DetailPanel namespace has been removed without being previously deprecated.
  • The UIViewWrapper view has been removed without being previously deprecated.

2.9.3

04 Oct 07:15
Compare
Choose a tag to compare

This version removes the MockingKit dependency.

2.9.2

03 Oct 14:39
Compare
Choose a tag to compare

This version makes ocmpiling for macOS work in Xcode 14.

The version also deprecates more things, such as the list items. The list views are deprecated since later SwiftUI versions makes great use of the Label view to render things natively. The list views just adds extra complexity with little gains.

One thing that the list views did well, though, was to make the entire list items tappable, where native labels only take up as much space as they need, even in lists. To address this, there is a new button style called ListButtonStyle, which you can apply to an entire list to make all buttons behave the same way.

✨ New features

  • ListButtonStyle makes the button span across the entire width and applies a rectangular content shape.

💡 Behavior changes

  • List items will render differently, without the padding.

🐛 Bug fixes

  • This version fixes compile errors on macOS by temporarily only making some types available for iOS.

🗑 Deprecations

  • ListButton has been deprecated.
  • ListDisclosureIndicator has been deprecated.
  • ListHeader has been deprecated.
  • ListItem has been deprecated.
  • ListNavigationButton has been renamed to NavigationButton.
  • ListNavigationLink has been deprecated.
  • ListText has been deprecated.
  • ListTextContent has been deprecated.
  • ListToggle has been deprecated.

2.9.1

04 Sep 09:41
Compare
Choose a tag to compare

This version adjusts the undimmed presentation detents view extension, that has stopped working in later Xcode 14 betas.

The fix makes sure to always inject a .large detents into the provided set. This is hopefully temporary.

2.8.0

23 Jul 04:03
Compare
Choose a tag to compare

This version adds a the possibility to present custom sized, undimmed sheets in SwiftUI.

This version also adds a backported version of the native SwiftUI 4 ImageRenderer. The backported version is only available in iOS 15 and before. In iOS 16 and later, you'll get the native one.

✨ New features

  • Font+FontRepresentable adds new ways to create SwiftUI fonts with platform-agnostic ones.
  • ImageRepresentable+Size adds resizing to macOS, tvOS and watchOS as well.
  • ImageRenderer is a new type that replaces the old View+Snapshot extension and serves as a bridge between iOs 16 and earlier versions.
  • ImageRenderer+Image extends the SwiftUI 4 renderer with a platform-agnostic image property.
  • ImageRenderer+Scale extends the SwiftUI 4 renderer with new scale initializers.
  • View+PresentationDetents adds new presentationDetents(undimmed:) view modifiers.

🗑 Deprecations

  • Image+Snapshot has been replaced by the new ImageRenderer.

2.7.0

19 Jun 10:32
Compare
Choose a tag to compare

✨ New features

  • Color has new hex string- and int-based initializers.
  • ColorRepresentable is a new typealias that bridges NSColor and UIColor.
  • ColorRepresentable has new hex string- and int-based initializers.
  • ErrorAlerter is a new protocol that can be implemented by any type that can alert errors using an AlertContext.
  • ErrorAlertConvertible is a new protocol that can be implemented by any error that can describe itself as an error Alert.
  • FontRepresentable is a new typealias that bridges NSFont and UIFont.
  • Persisted can now be used with SwiftUI and will properly update observing views.

💡 Behavior changes

  • PresentationContext is now open instead of public.
  • DocumentCamera now passes on its actions instead of itself.
  • Unit tests no longer use Quick and Nimble.

🗑 Deprecations

  • DocumentGroupOnboardingScreen has been renamed to DocumentGroupSheet.
  • DocumentGroupOnboardingScreenError has been renamed to DocumentGroupSheetError.
  • DocumentGroupOnboardingScreen presentAsOnboarding has been renamed to presentFromDocumentGroup.
  • ImageResource has been renamed to ImageRepresentable.
  • ShadowStyle has been renamed to ViewShadowStyle to not conflict with the new SwiftUI 4 ShadowStyle that comes in Xcode 14.

2.6.0

26 Apr 07:10
Compare
Choose a tag to compare

This version adds focus and printing utils, makes the system font picker work better on multiple platforms and deprecates web views.

Web views can be found in the new WebViewKit from now on.

✨ New features

  • AlertContextFocusedValueKey is a new type that can be used to bind and access an focused alert.
  • FullScreenModalContextFocusedValueKey is a new type that can be used to bind and access a focused full.
  • ItemPrinter is a new protocol that can be implemented by types that can print printable items.
  • ItemPrintingView is a view protocol that adds item printing functionality to any view.
  • PrintableItem defines a list of printable items, currently only pdf documents.
  • SheetContextFocusedValueKey is a new type that can be used to bind and access a focused sheet.
  • StandardItemPrinter is an multi-platform ItemPrinter implementation that prints using UIPrintInteractionController.

💡 Behavior changes

  • SystemFontPicker has been adjusted to work better on various platforms.
  • SystemFontPickerFont has been adjusted to work better on various platforms.

🐛 Bug fixes

  • SystemFontPicker now uses the provided fonts instead of all.

🗑 Deprecations

  • SafariWebView has been deprecated - use WebViewKit instead.
  • WebView has been deprecated - use WebViewKit instead.

2.5.0

30 Mar 13:32
Compare
Choose a tag to compare

✨ New features

  • PageIndicator is a new view that mimics the page dots in a page view.
  • PageIndicatorDisplayMode is a new enum that can be used to control indicator views.
  • PageIndicatorStyle is a new enum that can be used to style indicator views.
  • PageView is now available for macOS as well.

💡 Behavior changes

  • PageView is now generic and no longer generates AnyView views.

💥 Breaking Changes

  • PageView for iOS is now generic with new initializer signatures.
  • PageView indexDisplayMode is now called pageIndicatorDisplayMode.

2.4.0

25 Mar 08:50
Compare
Choose a tag to compare

This release adds a bunch of new views and features as well as new macOS utils.

This release also deprecates a bunch of stuff to make the library more focused.

Note that WebView now wraps a WKWebView instead of a SFSafariViewController. If you want the old behavior, use the new SafariWebView.

✨ New features

  • DetailPanel is a new macOS view that mimics a trailing detail panel.
  • DetailPanelButtonGroup is a new macOS view that can be used to mimic a native, segmented button group.
  • DetailPanelContainer is a new macOS view with a main content view and a trailing detail panel.
  • DetailPanelContext is a new macOS class that can be used with the new DetailPanelPresenter.
  • DetailPanelForm is a new macOS view that can be used to wrap form content within a SideBar.
  • DetailPanelHeader is a new macOS view that can adjust the provided text to look like a native detail panel header.
  • DetailPanelPresenter is a new macOS protocol that can be implemented to add detail panel functionality to the implementing type.
  • ForEachPicker is a new view that works like the ListPicker, but doesn't wrap the content in a List.
  • ForEachMultiPicker is a new view that works like the MultiListPicker, but doesn't wrap the content in a List.
  • Form has a new detailPanelForm modifier.
  • FormActionButtonStyle now has mutable properties.
  • ListItemSubtitle is a new view that copies its behavior from the deprecated MenuListSubtitle.
  • ListText has a new icon and subtitle parameter.
  • ListTextContent is a new view that just renders the content of a ListText.
  • SafariWebView is a new name for the previous version of WebView.
  • ScanCodeGenerator generateCodeView is now a protocol implementation.
  • ScanCodeType now supports aztek and pdf417 as well.
  • ScanCodeType now implements more protocols to make it more versatile.
  • ScanCodeType has a new code128 case that replaces barcode.
  • ScanCodeType.name is now the capitalized version of the raw string value.
  • SidebarPresenter is a new macOS protocol that can be implemented to add sidebar functionality to the implementing type.
  • SystemFontPicker is a new view that uses a Picker.
  • SystemFontForEachPicker is a new view that uses a ForEach picker instead of a List.
  • SystemFontListPicker now has a fonts init parameter.
  • SystemFontListPicker now has an itemFontSize init parameter.
  • SystemFontListPicker now has a dismissAfterPick init parameter.
  • SystemFontPickerFonts initializer and properties are now public.
  • SystemFontPickerFont is a new public struct that is used by the various font pickers.
  • SystemFontPickerItem is a new view that can be used to display a picked system font.
  • Text has a new detailPanelHeader modifier.
  • UrlOpener now supports macOS as well.

💡 Behavior changes

  • ListItem now only applies a min height on iOS.
  • ListPicker now uses a ForEachPicker for each section.
  • ListMultiPicker now uses a ForEachMultiPicker for each section.
  • ScanCodeType.barcode is now an alias for ScanCodeType.code128.
  • WebView now wraps a WKWebView instead of a SFSafariViewController.

🗑 Deprecations

  • AsyncImage has been deprecated. Use SwiftUI AsyncImage instead.
  • AsyncImageLoader has been deprecated. Use SwiftUI AsyncImage instead.
  • BlurView and View+Blur is deprecated. Use the native material approach instead.
  • ColorBadge has been deprecated.
  • FontListPicker has been renamed to SystemFontListPicker.
  • FullHeightView has been deprecated.
  • FullSizeView has been deprecated.
  • FullWidthView has been deprecated.
  • ListPicker no longer has a title.
  • ListMultiPicker no longer has a title.
  • SystemFontListPicker no longer has a title.
  • Presentation/Toast has been deprecated. Use the new SystemNotification library instead.
  • View+Alert alert(context:) has been renamed to alert(_ :).
  • View+FullScreenCover fullScreenCover(context:) has been renamed to fullScreenCover(_ :).
  • View+Sheet sheet(context:) has been renamed to sheet(_ :).

💥 Breaking Changes

  • Color.clearInteractable has been deprecated and should not be used anymore.
  • Picker has been removed, since it caused conflicts with SwiftUI.
  • UrlOpener default functions are no longer part of the protocol definition.
  • View.clearInteractable has been deprecated and should not be used anymore.

2.3.2

07 Jan 10:34
Compare
Choose a tag to compare

💡 Behavior changes

  • ListNavigationButton is now available on all platforms.
  • ListDisclosureIndicator is now available on all platforms.

🗑 Deprecations

  • ListButtonLink has been renamed to ListNavigationButton.