diff --git a/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart b/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart index 71f1b221..aaff531d 100644 --- a/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart +++ b/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart @@ -14,9 +14,49 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +import 'package:copy_with_extension/copy_with_extension.dart'; import 'package:wyatt_ui_components/src/domain/entities/entities.dart'; +part 'component_theme_data.g.dart'; +@CopyWith() class ComponentThemeData { + factory ComponentThemeData({ + TopAppBarComponent? appBar, + TopNavigationBarComponent? topNavigationBarComponent, + BottomNavigationBarComponent? bottomNavigationBar, + ErrorWidgetComponent? errorWidget, + LoadingWidgetComponent? loadingWidget, + LoaderComponent? loaderComponent, + RichTextBuilderComponent? richTextBuilderComponent, + TextInputComponent? textInputComponent, + FileSelectionButtonComponent? fileSelectionButtonComponent, + FlatButtonComponent? flatButtonComponent, + SimpleIconButtonComponent? simpleIconButtonComponent, + SymbolButtonComponent? symbolButtonComponent, + InformationCardComponent? informationCardComponent, + PortfolioCardComponent? portfolioCardComponent, + QuoteCardComponent? quoteCardComponent, + SkillCardComponent? skillCardComponent, + }) => + ComponentThemeData.raw( + appBar: appBar, + topNavigationBarComponent: topNavigationBarComponent, + bottomNavigationBar: bottomNavigationBar, + errorWidget: errorWidget, + loadingWidget: loadingWidget, + loaderComponent: loaderComponent, + richTextBuilderComponent: richTextBuilderComponent, + textInputComponent: textInputComponent, + fileSelectionButtonComponent: fileSelectionButtonComponent, + flatButtonComponent: flatButtonComponent, + simpleIconButtonComponent: simpleIconButtonComponent, + symbolButtonComponent: symbolButtonComponent, + informationCardComponent: informationCardComponent, + portfolioCardComponent: portfolioCardComponent, + quoteCardComponent: quoteCardComponent, + skillCardComponent: skillCardComponent, + ); + const ComponentThemeData.raw({ this.appBar, this.topNavigationBarComponent, @@ -35,11 +75,11 @@ class ComponentThemeData { this.quoteCardComponent, this.skillCardComponent, }); + final TopAppBarComponent? appBar; final TopNavigationBarComponent? topNavigationBarComponent; final BottomNavigationBarComponent? bottomNavigationBar; - final ErrorWidgetComponent? errorWidget; final LoadingWidgetComponent? loadingWidget; final LoaderComponent? loaderComponent; diff --git a/packages/wyatt_ui_components/lib/src/features/component_theme_data.g.dart b/packages/wyatt_ui_components/lib/src/features/component_theme_data.g.dart new file mode 100644 index 00000000..b080a1dd --- /dev/null +++ b/packages/wyatt_ui_components/lib/src/features/component_theme_data.g.dart @@ -0,0 +1,265 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'component_theme_data.dart'; + +// ************************************************************************** +// CopyWithGenerator +// ************************************************************************** + +abstract class _$ComponentThemeDataCWProxy { + ComponentThemeData appBar(TopAppBarComponent? appBar); + + ComponentThemeData topNavigationBarComponent( + TopNavigationBarComponent? topNavigationBarComponent); + + ComponentThemeData bottomNavigationBar( + BottomNavigationBarComponent? bottomNavigationBar); + + ComponentThemeData errorWidget(ErrorWidgetComponent? errorWidget); + + ComponentThemeData loadingWidget(LoadingWidgetComponent? loadingWidget); + + ComponentThemeData loaderComponent(LoaderComponent? loaderComponent); + + ComponentThemeData richTextBuilderComponent( + RichTextBuilderComponent? richTextBuilderComponent); + + ComponentThemeData textInputComponent(TextInputComponent? textInputComponent); + + ComponentThemeData fileSelectionButtonComponent( + FileSelectionButtonComponent? fileSelectionButtonComponent); + + ComponentThemeData flatButtonComponent( + FlatButtonComponent? flatButtonComponent); + + ComponentThemeData simpleIconButtonComponent( + SimpleIconButtonComponent? simpleIconButtonComponent); + + ComponentThemeData symbolButtonComponent( + SymbolButtonComponent? symbolButtonComponent); + + ComponentThemeData informationCardComponent( + InformationCardComponent? informationCardComponent); + + ComponentThemeData portfolioCardComponent( + PortfolioCardComponent? portfolioCardComponent); + + ComponentThemeData quoteCardComponent(QuoteCardComponent? quoteCardComponent); + + ComponentThemeData skillCardComponent(SkillCardComponent? skillCardComponent); + + /// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support. + /// + /// Usage + /// ```dart + /// ComponentThemeData(...).copyWith(id: 12, name: "My name") + /// ```` + ComponentThemeData call({ + TopAppBarComponent? appBar, + TopNavigationBarComponent? topNavigationBarComponent, + BottomNavigationBarComponent? bottomNavigationBar, + ErrorWidgetComponent? errorWidget, + LoadingWidgetComponent? loadingWidget, + LoaderComponent? loaderComponent, + RichTextBuilderComponent? richTextBuilderComponent, + TextInputComponent? textInputComponent, + FileSelectionButtonComponent? fileSelectionButtonComponent, + FlatButtonComponent? flatButtonComponent, + SimpleIconButtonComponent? simpleIconButtonComponent, + SymbolButtonComponent? symbolButtonComponent, + InformationCardComponent? informationCardComponent, + PortfolioCardComponent? portfolioCardComponent, + QuoteCardComponent? quoteCardComponent, + SkillCardComponent? skillCardComponent, + }); +} + +/// Proxy class for `copyWith` functionality. This is a callable class and can be used as follows: `instanceOfComponentThemeData.copyWith(...)`. Additionally contains functions for specific fields e.g. `instanceOfComponentThemeData.copyWith.fieldName(...)` +class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy { + const _$ComponentThemeDataCWProxyImpl(this._value); + + final ComponentThemeData _value; + + @override + ComponentThemeData appBar(TopAppBarComponent? appBar) => this(appBar: appBar); + + @override + ComponentThemeData topNavigationBarComponent( + TopNavigationBarComponent? topNavigationBarComponent) => + this(topNavigationBarComponent: topNavigationBarComponent); + + @override + ComponentThemeData bottomNavigationBar( + BottomNavigationBarComponent? bottomNavigationBar) => + this(bottomNavigationBar: bottomNavigationBar); + + @override + ComponentThemeData errorWidget(ErrorWidgetComponent? errorWidget) => + this(errorWidget: errorWidget); + + @override + ComponentThemeData loadingWidget(LoadingWidgetComponent? loadingWidget) => + this(loadingWidget: loadingWidget); + + @override + ComponentThemeData loaderComponent(LoaderComponent? loaderComponent) => + this(loaderComponent: loaderComponent); + + @override + ComponentThemeData richTextBuilderComponent( + RichTextBuilderComponent? richTextBuilderComponent) => + this(richTextBuilderComponent: richTextBuilderComponent); + + @override + ComponentThemeData textInputComponent( + TextInputComponent? textInputComponent) => + this(textInputComponent: textInputComponent); + + @override + ComponentThemeData fileSelectionButtonComponent( + FileSelectionButtonComponent? fileSelectionButtonComponent) => + this(fileSelectionButtonComponent: fileSelectionButtonComponent); + + @override + ComponentThemeData flatButtonComponent( + FlatButtonComponent? flatButtonComponent) => + this(flatButtonComponent: flatButtonComponent); + + @override + ComponentThemeData simpleIconButtonComponent( + SimpleIconButtonComponent? simpleIconButtonComponent) => + this(simpleIconButtonComponent: simpleIconButtonComponent); + + @override + ComponentThemeData symbolButtonComponent( + SymbolButtonComponent? symbolButtonComponent) => + this(symbolButtonComponent: symbolButtonComponent); + + @override + ComponentThemeData informationCardComponent( + InformationCardComponent? informationCardComponent) => + this(informationCardComponent: informationCardComponent); + + @override + ComponentThemeData portfolioCardComponent( + PortfolioCardComponent? portfolioCardComponent) => + this(portfolioCardComponent: portfolioCardComponent); + + @override + ComponentThemeData quoteCardComponent( + QuoteCardComponent? quoteCardComponent) => + this(quoteCardComponent: quoteCardComponent); + + @override + ComponentThemeData skillCardComponent( + SkillCardComponent? skillCardComponent) => + this(skillCardComponent: skillCardComponent); + + @override + + /// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support. + /// + /// Usage + /// ```dart + /// ComponentThemeData(...).copyWith(id: 12, name: "My name") + /// ```` + ComponentThemeData call({ + Object? appBar = const $CopyWithPlaceholder(), + Object? topNavigationBarComponent = const $CopyWithPlaceholder(), + Object? bottomNavigationBar = const $CopyWithPlaceholder(), + Object? errorWidget = const $CopyWithPlaceholder(), + Object? loadingWidget = const $CopyWithPlaceholder(), + Object? loaderComponent = const $CopyWithPlaceholder(), + Object? richTextBuilderComponent = const $CopyWithPlaceholder(), + Object? textInputComponent = const $CopyWithPlaceholder(), + Object? fileSelectionButtonComponent = const $CopyWithPlaceholder(), + Object? flatButtonComponent = const $CopyWithPlaceholder(), + Object? simpleIconButtonComponent = const $CopyWithPlaceholder(), + Object? symbolButtonComponent = const $CopyWithPlaceholder(), + Object? informationCardComponent = const $CopyWithPlaceholder(), + Object? portfolioCardComponent = const $CopyWithPlaceholder(), + Object? quoteCardComponent = const $CopyWithPlaceholder(), + Object? skillCardComponent = const $CopyWithPlaceholder(), + }) { + return ComponentThemeData( + appBar: appBar == const $CopyWithPlaceholder() + ? _value.appBar + // ignore: cast_nullable_to_non_nullable + : appBar as TopAppBarComponent?, + topNavigationBarComponent: + topNavigationBarComponent == const $CopyWithPlaceholder() + ? _value.topNavigationBarComponent + // ignore: cast_nullable_to_non_nullable + : topNavigationBarComponent as TopNavigationBarComponent?, + bottomNavigationBar: bottomNavigationBar == const $CopyWithPlaceholder() + ? _value.bottomNavigationBar + // ignore: cast_nullable_to_non_nullable + : bottomNavigationBar as BottomNavigationBarComponent?, + errorWidget: errorWidget == const $CopyWithPlaceholder() + ? _value.errorWidget + // ignore: cast_nullable_to_non_nullable + : errorWidget as ErrorWidgetComponent?, + loadingWidget: loadingWidget == const $CopyWithPlaceholder() + ? _value.loadingWidget + // ignore: cast_nullable_to_non_nullable + : loadingWidget as LoadingWidgetComponent?, + loaderComponent: loaderComponent == const $CopyWithPlaceholder() + ? _value.loaderComponent + // ignore: cast_nullable_to_non_nullable + : loaderComponent as LoaderComponent?, + richTextBuilderComponent: + richTextBuilderComponent == const $CopyWithPlaceholder() + ? _value.richTextBuilderComponent + // ignore: cast_nullable_to_non_nullable + : richTextBuilderComponent as RichTextBuilderComponent?, + textInputComponent: textInputComponent == const $CopyWithPlaceholder() + ? _value.textInputComponent + // ignore: cast_nullable_to_non_nullable + : textInputComponent as TextInputComponent?, + fileSelectionButtonComponent: + fileSelectionButtonComponent == const $CopyWithPlaceholder() + ? _value.fileSelectionButtonComponent + // ignore: cast_nullable_to_non_nullable + : fileSelectionButtonComponent as FileSelectionButtonComponent?, + flatButtonComponent: flatButtonComponent == const $CopyWithPlaceholder() + ? _value.flatButtonComponent + // ignore: cast_nullable_to_non_nullable + : flatButtonComponent as FlatButtonComponent?, + simpleIconButtonComponent: + simpleIconButtonComponent == const $CopyWithPlaceholder() + ? _value.simpleIconButtonComponent + // ignore: cast_nullable_to_non_nullable + : simpleIconButtonComponent as SimpleIconButtonComponent?, + symbolButtonComponent: + symbolButtonComponent == const $CopyWithPlaceholder() + ? _value.symbolButtonComponent + // ignore: cast_nullable_to_non_nullable + : symbolButtonComponent as SymbolButtonComponent?, + informationCardComponent: + informationCardComponent == const $CopyWithPlaceholder() + ? _value.informationCardComponent + // ignore: cast_nullable_to_non_nullable + : informationCardComponent as InformationCardComponent?, + portfolioCardComponent: + portfolioCardComponent == const $CopyWithPlaceholder() + ? _value.portfolioCardComponent + // ignore: cast_nullable_to_non_nullable + : portfolioCardComponent as PortfolioCardComponent?, + quoteCardComponent: quoteCardComponent == const $CopyWithPlaceholder() + ? _value.quoteCardComponent + // ignore: cast_nullable_to_non_nullable + : quoteCardComponent as QuoteCardComponent?, + skillCardComponent: skillCardComponent == const $CopyWithPlaceholder() + ? _value.skillCardComponent + // ignore: cast_nullable_to_non_nullable + : skillCardComponent as SkillCardComponent?, + ); + } +} + +extension $ComponentThemeDataCopyWith on ComponentThemeData { + /// Returns a callable class that can be used as follows: `instanceOfComponentThemeData.copyWith(...)` or like so:`instanceOfComponentThemeData.copyWith.fieldName(...)`. + // ignore: library_private_types_in_public_api + _$ComponentThemeDataCWProxy get copyWith => + _$ComponentThemeDataCWProxyImpl(this); +} diff --git a/packages/wyatt_ui_components/pubspec.yaml b/packages/wyatt_ui_components/pubspec.yaml index 80e5e707..6b8848b6 100644 --- a/packages/wyatt_ui_components/pubspec.yaml +++ b/packages/wyatt_ui_components/pubspec.yaml @@ -10,17 +10,20 @@ environment: dependencies: flutter: { sdk: flutter } + copy_with_extension: ^5.0.0 wyatt_component_copy_with_extension: git: url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git path: packages/wyatt_component_copy_with_extension dev_dependencies: - build_runner: ^2.3.3 flutter_test: { sdk: flutter } wyatt_analysis: hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub version: ^2.4.0 + + build_runner: ^2.3.3 + copy_with_extension_gen: ^5.0.0 wyatt_component_copy_with_gen: git: url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git