jornada-ui 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/lib/commonjs/components/capture-photo/index.js +19 -10
  2. package/lib/commonjs/components/capture-photo/index.js.map +1 -1
  3. package/lib/commonjs/components/input/styles.js +1 -1
  4. package/lib/commonjs/components/maintenance-description-input/index.js +17 -5
  5. package/lib/commonjs/components/maintenance-description-input/index.js.map +1 -1
  6. package/lib/commonjs/components/maintenance-description-input/styles.js +5 -0
  7. package/lib/commonjs/components/maintenance-description-input/styles.js.map +1 -1
  8. package/lib/commonjs/components/toggle-fuel/index.js +48 -41
  9. package/lib/commonjs/components/toggle-fuel/index.js.map +1 -1
  10. package/lib/commonjs/components/toggle-fuel/style.js +22 -15
  11. package/lib/commonjs/components/toggle-fuel/style.js.map +1 -1
  12. package/lib/commonjs/stories/toggle-fuel/toggle-fuel.stories.js +81 -28
  13. package/lib/commonjs/stories/toggle-fuel/toggle-fuel.stories.js.map +1 -1
  14. package/lib/module/components/capture-photo/index.js +19 -10
  15. package/lib/module/components/capture-photo/index.js.map +1 -1
  16. package/lib/module/components/input/styles.js +1 -1
  17. package/lib/module/components/maintenance-description-input/index.js +16 -5
  18. package/lib/module/components/maintenance-description-input/index.js.map +1 -1
  19. package/lib/module/components/maintenance-description-input/styles.js +5 -0
  20. package/lib/module/components/maintenance-description-input/styles.js.map +1 -1
  21. package/lib/module/components/toggle-fuel/index.js +50 -43
  22. package/lib/module/components/toggle-fuel/index.js.map +1 -1
  23. package/lib/module/components/toggle-fuel/style.js +22 -15
  24. package/lib/module/components/toggle-fuel/style.js.map +1 -1
  25. package/lib/module/stories/toggle-fuel/toggle-fuel.stories.js +80 -27
  26. package/lib/module/stories/toggle-fuel/toggle-fuel.stories.js.map +1 -1
  27. package/lib/typescript/commonjs/src/components/capture-photo/index.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/src/components/maintenance-description-input/index.d.ts +1 -0
  29. package/lib/typescript/commonjs/src/components/maintenance-description-input/index.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/src/components/maintenance-description-input/styles.d.ts +5 -0
  31. package/lib/typescript/commonjs/src/components/maintenance-description-input/styles.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/src/components/toggle-fuel/index.d.ts +1 -2
  33. package/lib/typescript/commonjs/src/components/toggle-fuel/index.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/src/components/toggle-fuel/style.d.ts +16 -9
  35. package/lib/typescript/commonjs/src/components/toggle-fuel/style.d.ts.map +1 -1
  36. package/lib/typescript/commonjs/src/stories/toggle-fuel/toggle-fuel.stories.d.ts +3 -0
  37. package/lib/typescript/commonjs/src/stories/toggle-fuel/toggle-fuel.stories.d.ts.map +1 -1
  38. package/lib/typescript/module/src/components/capture-photo/index.d.ts.map +1 -1
  39. package/lib/typescript/module/src/components/maintenance-description-input/index.d.ts +1 -0
  40. package/lib/typescript/module/src/components/maintenance-description-input/index.d.ts.map +1 -1
  41. package/lib/typescript/module/src/components/maintenance-description-input/styles.d.ts +5 -0
  42. package/lib/typescript/module/src/components/maintenance-description-input/styles.d.ts.map +1 -1
  43. package/lib/typescript/module/src/components/toggle-fuel/index.d.ts +1 -2
  44. package/lib/typescript/module/src/components/toggle-fuel/index.d.ts.map +1 -1
  45. package/lib/typescript/module/src/components/toggle-fuel/style.d.ts +16 -9
  46. package/lib/typescript/module/src/components/toggle-fuel/style.d.ts.map +1 -1
  47. package/lib/typescript/module/src/stories/toggle-fuel/toggle-fuel.stories.d.ts +3 -0
  48. package/lib/typescript/module/src/stories/toggle-fuel/toggle-fuel.stories.d.ts.map +1 -1
  49. package/package.json +1 -1
  50. package/src/components/capture-photo/index.tsx +25 -16
  51. package/src/components/input/styles.ts +30 -30
  52. package/src/components/maintenance-description-input/index.tsx +55 -49
  53. package/src/components/maintenance-description-input/interface.d.ts +38 -36
  54. package/src/components/maintenance-description-input/styles.ts +38 -33
  55. package/src/components/toggle-fuel/index.tsx +93 -62
  56. package/src/components/toggle-fuel/interface.d.ts +25 -7
  57. package/src/components/toggle-fuel/style.ts +42 -35
  58. package/src/stories/toggle-fuel/toggle-fuel.stories.tsx +112 -68
@@ -1,62 +1,93 @@
1
- /**
2
- * IMPORTS
3
- */
4
- import React, { forwardRef, useState } from "react";
5
- import { TouchableOpacity, Text, View } from "react-native";
6
-
7
- // typings
8
- import type { ToggleFuelProps } from "./interface";
9
- import { asBaseComponent } from "../../@types/as-base-component";
10
-
11
- // styles
12
- import { styles } from "./style";
13
-
14
- /**
15
- * Componente ToggleFuel para a interação da ui.
16
- */
17
- const ToggleFuel = forwardRef<View, ToggleFuelProps>(
18
- ({ onSelect, initialValue = "diesel" }, ref): React.ReactElement => {
19
- const [selecionado, setSelecionado] = useState<"diesel" | "arla">(initialValue);
20
-
21
- /**selecionar o tipo de combustível */
22
- const handlePress = (tipo: "diesel" | "arla") => {
23
- setSelecionado(tipo);
24
- onSelect(tipo);
25
- };
26
-
27
- return (
28
- <View ref={ref} style={styles.container}>
29
- <TouchableOpacity
30
- testID="diesel"
31
- accessibilityRole="button"
32
- accessibilityState={{ selected: selecionado === "diesel" }}
33
- style={[styles.botao, selecionado === "diesel" && styles.botaoSelecionadoEsquerda]}
34
- onPress={() => handlePress("diesel")}
35
- >
36
- <Text style={[styles.texto, selecionado === "diesel" && styles.textoSelecionado]}>
37
- Diesel
38
- </Text>
39
- </TouchableOpacity>
40
-
41
- <TouchableOpacity
42
- testID="arla"
43
- accessibilityRole="button"
44
- accessibilityState={{ selected: selecionado === "arla" }}
45
- style={[styles.botao, selecionado === "arla" && styles.botaoSelecionadoDireita]}
46
- onPress={() => handlePress("arla")}
47
- >
48
- <Text style={[styles.texto, selecionado === "arla" && styles.textoSelecionado]}>
49
- Arla
50
- </Text>
51
- </TouchableOpacity>
52
- </View>
53
- );
54
- }
55
- );
56
-
57
- ToggleFuel.displayName = "ToggleFuel";
58
-
59
- /**
60
- * EXPORTS
61
- */
62
- export default asBaseComponent(ToggleFuel);
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import React, { forwardRef, useMemo, useState } from "react";
5
+ import { TouchableOpacity, Text, View } from "react-native";
6
+
7
+ // typings
8
+ import type { ToggleFuelProps, ToggleOption } from "./interface";
9
+ import { asBaseComponent } from "../../@types/as-base-component";
10
+
11
+ // styles
12
+ import { styles } from "./style";
13
+
14
+ /**
15
+ * Componente ToggleFuel para a interação da ui.
16
+ */
17
+ const ToggleFuel = forwardRef<any, ToggleFuelProps>(
18
+ (
19
+ {
20
+ options: optionsProp,
21
+ value,
22
+ defaultValue,
23
+ testIDPrefix = "toggle-fuel",
24
+ accessibleLabel = "Toggle Fuel",
25
+ onSelect,
26
+ },
27
+ ref
28
+ ): React.ReactElement => {
29
+ const options = useMemo<ToggleOption[]>(
30
+ () =>
31
+ (optionsProp && optionsProp.length
32
+ ? optionsProp
33
+ : [
34
+ { value: "diesel", label: "Diesel" },
35
+ { value: "arla", label: "Arla" },
36
+ ]) as ToggleOption[],
37
+ [optionsProp]
38
+ );
39
+
40
+ const initial = value ?? defaultValue ?? options[0]?.value;
41
+ const [internal, setInternal] = useState<string | number | undefined>(initial);
42
+
43
+ const selected = value ?? internal;
44
+
45
+ const handlePress = (v: ToggleOption["value"]) => {
46
+ if (value === undefined) setInternal(v); // não-controlado
47
+ onSelect?.(v);
48
+ };
49
+
50
+ return (
51
+ <View
52
+ ref={ref}
53
+ style={[styles.container]}
54
+ accessibilityRole="tablist"
55
+ accessibilityLabel={accessibleLabel}
56
+ >
57
+ {options.map((opt, idx) => {
58
+ const isSelected = selected === opt.value;
59
+ const isFirst = idx === 0;
60
+ const isLast = idx === options.length - 1;
61
+
62
+ return (
63
+ <TouchableOpacity
64
+ key={`${opt.value}`}
65
+ testID={`${testIDPrefix}-${opt.value}`}
66
+ accessibilityRole="tab"
67
+ accessibilityState={{ selected: isSelected }}
68
+ onPress={() => handlePress(opt.value)}
69
+ style={[
70
+ styles.item,
71
+ isFirst && styles.itemFirst,
72
+ isLast && styles.itemLast,
73
+ isSelected && styles.itemSelected,
74
+ ]}
75
+ activeOpacity={0.8}
76
+ >
77
+ <Text style={[styles.itemText, isSelected && styles.itemTextSelected]}>
78
+ {opt.label}
79
+ </Text>
80
+ </TouchableOpacity>
81
+ );
82
+ })}
83
+ </View>
84
+ );
85
+ }
86
+ );
87
+
88
+ ToggleFuel.displayName = "ToggleFuel";
89
+
90
+ /**
91
+ * EXPORTS
92
+ */
93
+ export default asBaseComponent(ToggleFuel);
@@ -1,7 +1,25 @@
1
- /* eslint-disable no-unused-vars */
2
- interface ToggleFuelProps {
3
- onSelect: (tipo: "diesel" | "arla") => void;
4
- initialValue?: "diesel" | "arla";
5
- }
6
-
7
- export type { ToggleFuelProps };
1
+ /* eslint-disable no-unused-vars */
2
+
3
+ export type ToggleOption = {
4
+ value: string | number;
5
+ label: string;
6
+ };
7
+
8
+ interface ToggleFuelProps {
9
+ /** Lista de opções. Ex.: [{ value:'cavalo', label:'Cavalo' }, { value:'carreta', label:'Carreta' }] */
10
+ options?: ToggleOption[];
11
+
12
+ /** Modo controlado */
13
+ value?: ToggleOption["value"];
14
+
15
+ /** Modo não-controlado (valor inicial) */
16
+ defaultValue?: ToggleOption["value"];
17
+
18
+ /** Callback ao selecionar */
19
+ onSelect?: (value: ToggleOption["value"]) => void;
20
+
21
+ testIDPrefix?: string;
22
+ accessibleLabel?: string;
23
+ }
24
+
25
+ export type { ToggleFuelProps };
@@ -1,35 +1,42 @@
1
- import { StyleSheet } from "react-native";
2
- import { theme } from "../../styles/theme/theme";
3
-
4
- const styles = StyleSheet.create({
5
- container: {
6
- flexDirection: "row",
7
- borderRadius: 8,
8
- overflow: "hidden",
9
- marginTop: theme.margins.sm,
10
- backgroundColor: "#ffffff",
11
- },
12
- botao: {
13
- flex: 1,
14
- paddingVertical: 12,
15
- alignItems: "center",
16
- },
17
- botaoSelecionadoEsquerda: {
18
- backgroundColor: theme.colors.blue[400],
19
- },
20
- botaoSelecionadoDireita: {
21
- backgroundColor: theme.colors.blue[400],
22
- },
23
- texto: {
24
- fontSize: theme.fontSizes.sm,
25
- fontFamily: theme.fonts.inter_medium_500,
26
- color: theme.colors.blue[400],
27
- },
28
- textoSelecionado: {
29
- color: "#ffffff",
30
- fontSize: theme.fontSizes.sm,
31
- fontFamily: theme.fonts.inter_medium_500,
32
- },
33
- });
34
-
35
- export { styles };
1
+ import { StyleSheet } from "react-native";
2
+ import { theme } from "../../styles/theme/theme";
3
+
4
+ const styles = StyleSheet.create({
5
+ container: {
6
+ flexDirection: "row",
7
+ borderRadius: 8,
8
+ overflow: "hidden",
9
+ marginTop: theme.margins.sm,
10
+ backgroundColor: "#ffffff",
11
+ },
12
+ item: {
13
+ flex: 1,
14
+ paddingVertical: 10,
15
+ paddingHorizontal: 12,
16
+ alignItems: "center",
17
+ justifyContent: "center",
18
+ borderWidth: 1,
19
+ borderColor: "transparent",
20
+ },
21
+ itemFirst: {
22
+ borderTopLeftRadius: 10,
23
+ borderBottomLeftRadius: 10,
24
+ },
25
+ itemLast: {
26
+ borderTopRightRadius: 10,
27
+ borderBottomRightRadius: 10,
28
+ },
29
+ itemSelected: {
30
+ backgroundColor: theme.colors.blue[500],
31
+ },
32
+ itemText: {
33
+ fontSize: 14,
34
+ fontWeight: "600",
35
+ color: "#0F172A",
36
+ },
37
+ itemTextSelected: {
38
+ color: "#FFFFFF",
39
+ },
40
+ });
41
+
42
+ export { styles };
@@ -1,68 +1,112 @@
1
- /**
2
- * IMPORTS
3
- */
4
- import type React from "react";
5
- import type { Meta, StoryObj } from "@storybook/react";
6
-
7
- // components
8
- import ToggleFuel from "../../components/toggle-fuel";
9
-
10
- // typings
11
- import type { ToggleFuelProps } from "../../components/toggle-fuel/interface";
12
-
13
- /**
14
- * META
15
- */
16
- const meta: Meta<typeof ToggleFuel> = {
17
- title: "Componente/ToggleFuel",
18
- component: ToggleFuel as React.FC<ToggleFuelProps>,
19
- args: {
20
- initialValue: "diesel",
21
- onSelect: (tipo: "diesel" | "arla") => {
22
- return tipo;
23
- },
24
- },
25
- argTypes: {
26
- initialValue: {
27
- control: { type: "radio" },
28
- options: ["diesel", "arla"],
29
- description: "Valor inicial selecionado no toggle.",
30
- },
31
- onSelect: {
32
- description: "Callback disparado ao selecionar o tipo.",
33
- table: { disable: true },
34
- },
35
- },
36
- parameters: {
37
- docs: {
38
- description: {
39
- component: `
40
- ### ToggleFuel
41
-
42
- Componente de **toggle** para selecionar rapidamente entre **Diesel** e **Arla**.
43
-
44
- - \`initialValue\`: define o valor inicial ("diesel" | "arla")
45
- - \`onSelect\`: callback chamado ao trocar a seleção
46
-
47
- > Use este componente quando precisar de uma escolha simples e direta entre os dois tipos de combustível.
48
- `,
49
- },
50
- },
51
- },
52
- };
53
- export default meta;
54
-
55
- type Story = StoryObj<typeof ToggleFuel>;
56
-
57
- /**
58
- * STORIES
59
- */
60
- export const ToggleFuelDefault: Story = {
61
- name: "toggle-fuel",
62
- args: {
63
- initialValue: "diesel",
64
- onSelect(tipo) {
65
- return tipo;
66
- },
67
- },
68
- };
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import type React from "react";
5
+ import type { Meta, StoryObj } from "@storybook/react";
6
+
7
+ // components
8
+ import ToggleFuel from "../../components/toggle-fuel";
9
+
10
+ // typings
11
+ import type { ToggleFuelProps } from "../../components/toggle-fuel/interface";
12
+
13
+ /**
14
+ * META
15
+ */
16
+ const meta: Meta<typeof ToggleFuel> = {
17
+ title: "Componente/Toggle",
18
+ component: ToggleFuel as React.FC<ToggleFuelProps>,
19
+ args: {
20
+ defaultValue: "diesel",
21
+ },
22
+ argTypes: {
23
+ options: {
24
+ control: "object",
25
+ description: "Lista de opções { value, label }. Se omitido, usa Diesel/Arla.",
26
+ },
27
+ value: {
28
+ control: "text",
29
+ description: "Modo controlado: valor selecionado.",
30
+ },
31
+ defaultValue: {
32
+ control: "text",
33
+ description: "Valor inicial (não-controlado).",
34
+ },
35
+ testIDPrefix: {
36
+ control: "text",
37
+ description: "Prefixo para testID (default: 'toggle').",
38
+ },
39
+ onSelect: { action: "onSelect" },
40
+ },
41
+ parameters: {
42
+ docs: {
43
+ description: {
44
+ component: `
45
+ ### Toggle
46
+
47
+ Componente de **toogle** para usuário selecionar um opção.
48
+
49
+ - \`value\`: define o valor selecionado (modo controlado)
50
+ - \`defaultValue\`: define o valor inicial (modo não-controlado)
51
+ - \`options\`: lista de opções { value, label }. Se omitido, usa Diesel/Arla.
52
+ - \`onSelect\`: callback ao selecionar uma opção
53
+ - \`options\`: define as opções da mensagem (success, alert, error)
54
+
55
+ > Use este componente quando quiser selecionar uma opção.
56
+ `,
57
+ },
58
+ },
59
+ },
60
+ };
61
+ export default meta;
62
+
63
+ type Story = StoryObj<typeof ToggleFuel>;
64
+
65
+ /**
66
+ * STORIES
67
+ */
68
+ export const ToggleFuelDefault: Story = {
69
+ name: "toggle-fuel",
70
+ args: {
71
+ options: [
72
+ { value: "arla", label: "Arla" },
73
+ { value: "diesel", label: "Diesel" },
74
+ ],
75
+ onSelect(tipo) {
76
+ return tipo;
77
+ },
78
+ },
79
+ };
80
+
81
+ export const ToggleFuell: Story = {
82
+ args: {
83
+ options: [
84
+ { value: "arla", label: "Arla" },
85
+ { value: "diesel", label: "Diesel" },
86
+ ],
87
+ defaultValue: "credito",
88
+ },
89
+ };
90
+
91
+ export const CavaloCarreta: Story = {
92
+ name: "toggle-fuel-cavalo-carreta",
93
+ args: {
94
+ options: [
95
+ { value: "cavalo", label: "Cavalo" },
96
+ { value: "carreta", label: "Carreta" },
97
+ ],
98
+ defaultValue: "cavalo",
99
+ },
100
+ };
101
+
102
+ export const TresOpcoesPagamento: Story = {
103
+ name: "toggle-fuel-tres-opcoes-pagamento",
104
+ args: {
105
+ options: [
106
+ { value: "pix", label: "PIX" },
107
+ { value: "credito", label: "Crédito" },
108
+ { value: "debito", label: "Débito" },
109
+ ],
110
+ defaultValue: "credito",
111
+ },
112
+ };