Skip to content

Commit

Permalink
upd story
Browse files Browse the repository at this point in the history
  • Loading branch information
witwash committed Feb 14, 2025
1 parent df9541c commit 8fa8a73
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 6 deletions.
29 changes: 29 additions & 0 deletions optimus_widgetbook/lib/components/forms/number_input.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:dfunc/dfunc.dart';
import 'package:flutter/widgets.dart';
import 'package:optimus/optimus.dart';
import 'package:optimus_widgetbook/utils.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;

Expand All @@ -26,6 +27,10 @@ class _Content extends StatelessWidget {
final allowNegative =
k.boolean(label: 'Allow negative', initialValue: false);

final helper = k.stringOrNull(label: 'Helper Message');
final prefix = k.stringOrNull(label: 'Prefix');
final suffix = k.stringOrNull(label: 'Suffix');

return OptimusNumberInput(
label: label,
placeholder: placeholder,
Expand All @@ -34,6 +39,30 @@ class _Content extends StatelessWidget {
min: min,
max: max,
allowNegate: allowNegative,
isEnabled: k.isEnabledKnob,
size: k.widgetSizeKnob,
helper: helper?.toWidget(),
isInlined: k.boolean(label: 'Inlined'),
hasFixedDecimalScale: k.boolean(label: 'Has fixed decimal scale'),
isLoading: k.boolean(label: 'Is loading'),
precision: k.int.slider(label: 'Precision'),
prefix: prefix?.toWidget(),
isRequired: k.boolean(label: 'Required'),
initialValue: k.double.slider(label: 'Initial', max: max, min: min),
thousandSeparator: k.list(
label: 'Thousand Separator',
options: OptimusNumberSeparatorVariant.values,
labelBuilder: enumLabelBuilder,
initialOption: OptimusNumberSeparatorVariant.comma,
),
decimalSeparator: k.list(
label: 'Decimal Separator',
options: OptimusNumberSeparatorVariant.values,
labelBuilder: enumLabelBuilder,
initialOption: OptimusNumberSeparatorVariant.stop,
),
suffix: suffix?.toWidget(),
step: k.double.slider(label: 'Step', initialValue: 1),
);
}
}
6 changes: 3 additions & 3 deletions optimus_widgetbook/lib/components/list/list_tile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ Widget createDefaultStyle(BuildContext context) {
: null,
info: info.isNotEmpty ? Text(info) : null,
fontVariant: fontVariant,
prefix: iconOrNull(prefix),
suffix: iconOrNull(suffix),
infoWidget: iconOrNull(infoWidget),
prefix: prefix?.toWidget(),
suffix: suffix?.toWidget(),
infoWidget: infoWidget?.toWidget(),
onTap: ignore,
prefixSize: prefixSize,
prefixVerticalAlignment: prefixAlignment,
Expand Down
11 changes: 8 additions & 3 deletions optimus_widgetbook/lib/utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@ String enumOrNullLabelBuilder<T extends Enum>(T? value) => value?.name ?? '';

String enumLabelBuilder<T extends Enum>(T value) => value.name;

Icon? iconOrNull(IconDetails? details) =>
details?.let((details) => Icon(details.data));

extension KnobsBuilderExt on KnobsBuilder {
OptimusWidgetSize get widgetSizeKnob => list(
label: 'Size',
Expand Down Expand Up @@ -56,3 +53,11 @@ extension KnobsBuilderExt on KnobsBuilder {
extension WidgetbookContext on BuildContext {
bool get isInWidgetbookCloud => WidgetbookState.of(this).previewMode;
}

extension OptionalTextWidget on String {
Widget? toWidget() => let((value) => value.isNotEmpty ? Text(value) : null);
}

extension OptionalIconWidget on IconDetails {
Widget? toWidget() => let((details) => Icon(details.data));
}

0 comments on commit 8fa8a73

Please sign in to comment.