@bodynarf/react.components 1.13.7 → 1.14.0

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 (101) hide show
  1. package/changelog.md +55 -0
  2. package/components/index.d.ts +14 -0
  3. package/components/index.d.ts.map +1 -1
  4. package/components/index.js +14 -0
  5. package/components/modal/component/index.d.ts +7 -0
  6. package/components/modal/component/index.d.ts.map +1 -0
  7. package/components/modal/component/index.js +42 -0
  8. package/components/modal/component/style.scss +42 -0
  9. package/components/modal/index.d.ts +3 -0
  10. package/components/modal/index.d.ts.map +1 -0
  11. package/components/modal/index.js +2 -0
  12. package/components/modal/types.d.ts +44 -0
  13. package/components/modal/types.d.ts.map +1 -0
  14. package/components/modal/types.js +1 -0
  15. package/components/multiselect/components/withoutLabel/index.js +2 -2
  16. package/components/primitives/index.d.ts +4 -0
  17. package/components/primitives/index.d.ts.map +1 -1
  18. package/components/primitives/index.js +4 -0
  19. package/components/primitives/number/components/withLabel/index.d.ts.map +1 -1
  20. package/components/primitives/number/components/withLabel/index.js +10 -2
  21. package/components/primitives/number/components/withoutLabel/index.d.ts.map +1 -1
  22. package/components/primitives/number/components/withoutLabel/index.js +12 -4
  23. package/components/primitives/number/types.d.ts +6 -0
  24. package/components/primitives/number/types.d.ts.map +1 -1
  25. package/components/primitives/radioGroup/component/index.d.ts +7 -0
  26. package/components/primitives/radioGroup/component/index.d.ts.map +1 -0
  27. package/components/primitives/radioGroup/component/index.js +42 -0
  28. package/components/primitives/radioGroup/component/style.scss +269 -0
  29. package/components/primitives/radioGroup/index.d.ts +3 -0
  30. package/components/primitives/radioGroup/index.d.ts.map +1 -0
  31. package/components/primitives/radioGroup/index.js +2 -0
  32. package/components/primitives/radioGroup/types.d.ts +61 -0
  33. package/components/primitives/radioGroup/types.d.ts.map +1 -0
  34. package/components/primitives/radioGroup/types.js +1 -0
  35. package/components/primitives/slider/component/index.d.ts +7 -0
  36. package/components/primitives/slider/component/index.d.ts.map +1 -0
  37. package/components/primitives/slider/component/index.js +47 -0
  38. package/components/primitives/slider/component/style.scss +319 -0
  39. package/components/primitives/slider/index.d.ts +3 -0
  40. package/components/primitives/slider/index.d.ts.map +1 -0
  41. package/components/primitives/slider/index.js +2 -0
  42. package/components/primitives/slider/types.d.ts +51 -0
  43. package/components/primitives/slider/types.d.ts.map +1 -0
  44. package/components/primitives/slider/types.js +1 -0
  45. package/components/primitives/switch/component/index.d.ts +7 -0
  46. package/components/primitives/switch/component/index.d.ts.map +1 -0
  47. package/components/primitives/switch/component/index.js +39 -0
  48. package/components/primitives/switch/component/style.scss +214 -0
  49. package/components/primitives/switch/index.d.ts +3 -0
  50. package/components/primitives/switch/index.d.ts.map +1 -0
  51. package/components/primitives/switch/index.js +2 -0
  52. package/components/primitives/switch/types.d.ts +23 -0
  53. package/components/primitives/switch/types.d.ts.map +1 -0
  54. package/components/primitives/switch/types.js +1 -0
  55. package/components/primitives/timePicker/component/index.d.ts +8 -0
  56. package/components/primitives/timePicker/component/index.d.ts.map +1 -0
  57. package/components/primitives/timePicker/component/index.js +65 -0
  58. package/components/primitives/timePicker/component/style.scss +26 -0
  59. package/components/primitives/timePicker/index.d.ts +3 -0
  60. package/components/primitives/timePicker/index.d.ts.map +1 -0
  61. package/components/primitives/timePicker/index.js +2 -0
  62. package/components/primitives/timePicker/types.d.ts +33 -0
  63. package/components/primitives/timePicker/types.d.ts.map +1 -0
  64. package/components/primitives/timePicker/types.js +1 -0
  65. package/components/search/component/index.d.ts.map +1 -1
  66. package/components/search/component/index.js +9 -3
  67. package/components/search/types.d.ts +5 -0
  68. package/components/search/types.d.ts.map +1 -1
  69. package/components/stepper/component/index.d.ts +7 -0
  70. package/components/stepper/component/index.d.ts.map +1 -0
  71. package/components/stepper/component/index.js +56 -0
  72. package/components/stepper/component/style.scss +430 -0
  73. package/components/stepper/index.d.ts +3 -0
  74. package/components/stepper/index.d.ts.map +1 -0
  75. package/components/stepper/index.js +2 -0
  76. package/components/stepper/types.d.ts +65 -0
  77. package/components/stepper/types.d.ts.map +1 -0
  78. package/components/stepper/types.js +1 -0
  79. package/components/tabs/component/index.js +1 -1
  80. package/components/timeline/component/index.d.ts +7 -0
  81. package/components/timeline/component/index.d.ts.map +1 -0
  82. package/components/timeline/component/index.js +36 -0
  83. package/components/timeline/component/style.scss +395 -0
  84. package/components/timeline/index.d.ts +3 -0
  85. package/components/timeline/index.d.ts.map +1 -0
  86. package/components/timeline/index.js +2 -0
  87. package/components/timeline/types.d.ts +55 -0
  88. package/components/timeline/types.d.ts.map +1 -0
  89. package/components/timeline/types.js +1 -0
  90. package/components/tooltip/component/index.d.ts +6 -0
  91. package/components/tooltip/component/index.d.ts.map +1 -0
  92. package/components/tooltip/component/index.js +80 -0
  93. package/components/tooltip/index.d.ts +3 -0
  94. package/components/tooltip/index.d.ts.map +1 -0
  95. package/components/tooltip/index.js +2 -0
  96. package/components/tooltip/types.d.ts +31 -0
  97. package/components/tooltip/types.d.ts.map +1 -0
  98. package/components/tooltip/types.js +1 -0
  99. package/package.json +1 -1
  100. package/readme.md +18 -3
  101. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,269 @@
1
+ .bbr-radio-group {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 0.5rem;
5
+
6
+ &.is-horizontal {
7
+ flex-direction: row;
8
+ flex-wrap: wrap;
9
+ gap: 1rem;
10
+ }
11
+ }
12
+
13
+ .bbr-radio-item {
14
+ display: flex;
15
+ align-items: center;
16
+ }
17
+
18
+ .is-checkradio.bbr-radio[type="radio"] {
19
+ outline: 0;
20
+ user-select: none;
21
+ display: inline-block;
22
+ position: absolute;
23
+ opacity: 0;
24
+
25
+ + label {
26
+ position: relative;
27
+ display: inline-flex;
28
+ align-items: center;
29
+ padding-left: 1.75rem;
30
+ cursor: pointer;
31
+ font-size: $size-normal;
32
+ line-height: 1.25;
33
+ min-height: 1.5rem;
34
+
35
+ &::before {
36
+ position: absolute;
37
+ left: 0;
38
+ top: 50%;
39
+ transform: translateY(-50%);
40
+ width: 1.25rem;
41
+ height: 1.25rem;
42
+ border: 0.1rem solid $grey-lighter;
43
+ border-radius: 50%;
44
+ background: transparent;
45
+ content: "";
46
+ transition: background 0.15s ease-out, border-color 0.15s ease-out;
47
+ }
48
+
49
+ &::after {
50
+ position: absolute;
51
+ left: 0.3125rem;
52
+ top: 50%;
53
+ transform: translateY(-50%) scale(0);
54
+ width: 0.625rem;
55
+ height: 0.625rem;
56
+ border-radius: 50%;
57
+ background: $primary;
58
+ content: "";
59
+ transition: transform 0.15s ease-out;
60
+ }
61
+ }
62
+
63
+ &:checked + label::after {
64
+ transform: translateY(-50%) scale(1);
65
+ }
66
+
67
+ &:checked + label::before {
68
+ border-color: $primary;
69
+ }
70
+
71
+ &:focus + label::before {
72
+ border-color: $primary;
73
+ box-shadow: 0 0 0 0.125em rgba($primary, 0.25);
74
+ }
75
+
76
+ &:hover:not(:disabled) + label::before {
77
+ border-color: $grey-light;
78
+ }
79
+
80
+ &:disabled {
81
+ cursor: not-allowed;
82
+
83
+ + label {
84
+ opacity: 0.5;
85
+ cursor: not-allowed;
86
+ }
87
+ }
88
+
89
+ // Circle style (default for radio)
90
+ &.is-circle + label {
91
+ &::before {
92
+ border-radius: 50%;
93
+ }
94
+
95
+ &::after {
96
+ border-radius: 50%;
97
+ }
98
+ }
99
+
100
+ // Block style
101
+ &.is-block {
102
+ + label {
103
+ padding: 0.5rem 0.75rem 0.5rem 2.25rem;
104
+ background: $white-bis;
105
+ border-radius: $radius;
106
+ width: 100%;
107
+
108
+ &::before {
109
+ left: 0.5rem;
110
+ }
111
+
112
+ &::after {
113
+ left: 0.8125rem;
114
+ }
115
+
116
+ &:hover {
117
+ background: $white-ter;
118
+ }
119
+ }
120
+
121
+ &:checked + label {
122
+ background: rgba($primary, 0.1);
123
+ }
124
+ }
125
+
126
+ // Without border
127
+ &.has-no-border + label::before {
128
+ border: none;
129
+ background: $grey-lighter;
130
+ }
131
+
132
+ &.has-no-border:checked + label::before {
133
+ background: rgba($primary, 0.2);
134
+ }
135
+
136
+ // Has background color
137
+ &.has-background-color + label::before {
138
+ background: $white-ter;
139
+ }
140
+
141
+ &.has-background-color:checked + label::before {
142
+ background: rgba($primary, 0.15);
143
+ border-color: $primary;
144
+ }
145
+
146
+ // Size variations
147
+ &.is-small {
148
+ + label {
149
+ font-size: $size-small;
150
+ padding-left: 1.5rem;
151
+
152
+ &::before {
153
+ width: 1rem;
154
+ height: 1rem;
155
+ }
156
+
157
+ &::after {
158
+ width: 0.5rem;
159
+ height: 0.5rem;
160
+ left: 0.25rem;
161
+ }
162
+ }
163
+
164
+ &.is-block + label {
165
+ padding-left: 2rem;
166
+
167
+ &::before {
168
+ left: 0.5rem;
169
+ }
170
+
171
+ &::after {
172
+ left: 0.75rem;
173
+ }
174
+ }
175
+ }
176
+
177
+ &.is-medium {
178
+ + label {
179
+ font-size: $size-medium;
180
+ padding-left: 2rem;
181
+
182
+ &::before {
183
+ width: 1.5rem;
184
+ height: 1.5rem;
185
+ }
186
+
187
+ &::after {
188
+ width: 0.75rem;
189
+ height: 0.75rem;
190
+ left: 0.375rem;
191
+ }
192
+ }
193
+
194
+ &.is-block + label {
195
+ padding-left: 2.5rem;
196
+
197
+ &::before {
198
+ left: 0.5rem;
199
+ }
200
+
201
+ &::after {
202
+ left: 0.875rem;
203
+ }
204
+ }
205
+ }
206
+
207
+ &.is-large {
208
+ + label {
209
+ font-size: $size-large;
210
+ padding-left: 2.25rem;
211
+
212
+ &::before {
213
+ width: 1.75rem;
214
+ height: 1.75rem;
215
+ }
216
+
217
+ &::after {
218
+ width: 0.875rem;
219
+ height: 0.875rem;
220
+ left: 0.4375rem;
221
+ }
222
+ }
223
+
224
+ &.is-block + label {
225
+ padding-left: 2.75rem;
226
+
227
+ &::before {
228
+ left: 0.5rem;
229
+ }
230
+
231
+ &::after {
232
+ left: 0.9375rem;
233
+ }
234
+ }
235
+ }
236
+
237
+ // Color variations
238
+ @each $name, $pair in $colors {
239
+ $color: nth($pair, 1);
240
+
241
+ &.is-#{$name} {
242
+ &:checked + label::before {
243
+ border-color: $color;
244
+ }
245
+
246
+ &:checked + label::after {
247
+ background: $color;
248
+ }
249
+
250
+ &:focus + label::before {
251
+ border-color: $color;
252
+ box-shadow: 0 0 0 0.125em rgba($color, 0.25);
253
+ }
254
+
255
+ &.is-block:checked + label {
256
+ background: rgba($color, 0.1);
257
+ }
258
+
259
+ &.has-background-color:checked + label::before {
260
+ background: rgba($color, 0.15);
261
+ border-color: $color;
262
+ }
263
+
264
+ &.has-no-border:checked + label::before {
265
+ background: rgba($color, 0.2);
266
+ }
267
+ }
268
+ }
269
+ }
@@ -0,0 +1,3 @@
1
+ export { default } from "./component";
2
+ export * from "./types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/radioGroup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from "./component";
2
+ export * from "./types";
@@ -0,0 +1,61 @@
1
+ import { BaseElementProps, ElementColor, ElementSize } from "../../../types";
2
+ /** Single radio item */
3
+ export interface RadioItem {
4
+ /** Unique item identifier */
5
+ id: string;
6
+ /** Item value */
7
+ value: string;
8
+ /** Displaying text (label) */
9
+ displayValue: string;
10
+ /** Is item disabled */
11
+ disabled?: boolean;
12
+ /** Element title (tooltip) */
13
+ title?: string;
14
+ }
15
+ /** RadioGroup component props type */
16
+ export type RadioGroupProps = BaseElementProps & {
17
+ /** Radio items to display */
18
+ items: Array<RadioItem>;
19
+ /** Currently selected item id */
20
+ value?: string;
21
+ /** Name attribute for all radio inputs in the group */
22
+ name?: string;
23
+ /** Component size */
24
+ size?: ElementSize;
25
+ /** Style. Colors the radio buttons */
26
+ style?: ElementColor;
27
+ /** Is component disabled */
28
+ disabled?: boolean;
29
+ /**
30
+ * Display radio buttons in a row (horizontal).
31
+ * @default false (vertical)
32
+ */
33
+ horizontal?: boolean;
34
+ /**
35
+ * Is full colored radio (filled background).
36
+ * @default false
37
+ */
38
+ block?: boolean;
39
+ /**
40
+ * Display radio with circle style.
41
+ * @default true
42
+ */
43
+ circle?: boolean;
44
+ /**
45
+ * Remove the radio border.
46
+ * @default false
47
+ */
48
+ withoutBorder?: boolean;
49
+ /**
50
+ * Radio has background color.
51
+ * Only works if style is set.
52
+ * @default false
53
+ */
54
+ hasBackgroundColor?: boolean;
55
+ /**
56
+ * Handler of selection change
57
+ * @param item Selected item
58
+ */
59
+ onValueChange?: (item: RadioItem) => void;
60
+ };
61
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/radioGroup/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,wBAAwB;AACxB,MAAM,WAAW,SAAS;IACtB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IAEX,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IAErB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sCAAsC;AACtC,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC7C,6BAA6B;IAC7B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAExB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,sCAAsC;IACtC,KAAK,CAAC,EAAE,YAAY,CAAC;IAErB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CAC7C,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { FC } from "react";
2
+ import "./style.scss";
3
+ import { SliderProps } from "../types";
4
+ /** Slider/Range input component */
5
+ declare const Slider: FC<SliderProps>;
6
+ export default Slider;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/primitives/slider/component/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,EAAE,EAAkC,MAAM,OAAO,CAAC;AAOxE,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,mCAAmC;AACnC,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CA+G3B,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useMemo, useState } from "react";
3
+ import { emptyFn, generateGuid, getClassName, isNullish } from "@bodynarf/utils";
4
+ import { ElementSize } from "../../../../types";
5
+ import { getElementColorClassName, getSizeClassName, mapDataAttributes } from "../../../../utils";
6
+ import "./style.scss";
7
+ /** Slider/Range input component */
8
+ const Slider = ({ onValueChange = emptyFn, defaultValue, name = generateGuid(), size = ElementSize.Normal, style, disabled = false, min = 0, max = 100, step = 1, showValue = false, showMinMax = false, showProgress = true, vertical = false, verticalHeight = "200px", circle = false, valueFormatter, onBlur, className, data, title, }) => {
9
+ const [value, setValue] = useState(defaultValue ?? min);
10
+ const progressPercent = useMemo(() => {
11
+ if (max === min) {
12
+ return 0;
13
+ }
14
+ return ((value - min) / (max - min)) * 100;
15
+ }, [value, min, max]);
16
+ const onChange = useCallback((event) => {
17
+ const newValue = Number(event.target.value);
18
+ setValue(newValue);
19
+ onValueChange(newValue);
20
+ }, [onValueChange]);
21
+ const handleBlur = useCallback(() => {
22
+ if (isNullish(onBlur)) {
23
+ return;
24
+ }
25
+ onBlur();
26
+ }, [onBlur]);
27
+ const elClassName = getClassName([
28
+ "slider",
29
+ "bbr-slider",
30
+ className,
31
+ getSizeClassName(size, ElementSize.Normal),
32
+ getElementColorClassName(style),
33
+ showProgress ? "has-output-tooltip" : "",
34
+ circle ? "is-circle" : "",
35
+ vertical ? "is-vertical" : "",
36
+ ]);
37
+ const containerClassName = getClassName([
38
+ "bbr-slider-container",
39
+ vertical ? "is-vertical" : "",
40
+ ]);
41
+ const dataAttributes = mapDataAttributes(data);
42
+ return (_jsxs("div", { className: containerClassName, style: vertical ? { height: verticalHeight } : undefined, children: [showValue === true && (_jsx("output", { className: "bbr-slider-output", style: { left: `calc(${progressPercent}% - 1rem)` }, children: valueFormatter ? valueFormatter(value) : value })), _jsx("input", { min: min, max: max, id: name, step: step, name: name, type: "range", title: title, value: value, ...dataAttributes, disabled: disabled, onBlur: handleBlur, onChange: onChange, className: elClassName, style: {
43
+ ["--progress-percent"]: `${progressPercent}%`,
44
+ ...(vertical ? { height: verticalHeight } : {}),
45
+ } }), showMinMax === true && (_jsxs("div", { className: "bbr-slider-labels", children: [_jsx("span", { className: "bbr-slider-label-min", children: min }), _jsx("span", { className: "bbr-slider-label-max", children: max })] }))] }));
46
+ };
47
+ export default Slider;