@bolio-ui/core 3.0.0-alpha.1 → 3.0.0-alpha.2
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.
- package/dist/ContextMenu/index.js +3 -3
- package/dist/CssBaseline/index.js +2 -2
- package/dist/DateRangePicker/index.js +2 -2
- package/dist/ImageZoom/ImageZoom.d.ts +14 -0
- package/dist/ImageZoom/index.d.ts +3 -0
- package/dist/ImageZoom/index.js +17 -0
- package/dist/Menu/index.js +2 -2
- package/dist/Splitter/Splitter.d.ts +14 -0
- package/dist/Splitter/SplitterContext.d.ts +6 -0
- package/dist/Splitter/SplitterPanel.d.ts +13 -0
- package/dist/Splitter/index.d.ts +9 -0
- package/dist/Splitter/index.js +14 -0
- package/dist/Table/Table.d.ts +11 -1
- package/dist/Table/TableBody.d.ts +8 -2
- package/dist/Table/TableColumn.d.ts +2 -0
- package/dist/Table/TableHead.d.ts +9 -1
- package/dist/Table/TableSelectBox.d.ts +9 -0
- package/dist/Table/TableTypes.d.ts +8 -0
- package/dist/Table/index.d.ts +1 -1
- package/dist/Table/index.js +2 -2
- package/dist/Tour/Tour.d.ts +26 -0
- package/dist/Tour/index.d.ts +3 -0
- package/dist/Tour/index.js +23 -0
- package/dist/{chunk-AVO2SK2I.js → chunk-3S6G7WGK.js} +2 -2
- package/dist/{chunk-GYFW5NLU.js → chunk-BHQRX76X.js} +22 -4
- package/dist/chunk-FFEAKF3A.js +220 -0
- package/dist/{chunk-XLPOECCE.js → chunk-FL6J36B7.js} +3 -2
- package/dist/chunk-REWKR7S3.js +109 -0
- package/dist/chunk-STYC6O24.js +232 -0
- package/dist/{chunk-TDJGMSGT.js → chunk-WIIDIZYK.js} +3 -1
- package/dist/{chunk-TKICX5R6.js → chunk-ZNDN2VPZ.js} +225 -33
- package/dist/css/ButtonDropdown-ButtonDropdownItem.css +0 -1
- package/dist/css/ButtonGroup.css +0 -1
- package/dist/css/Calendar.css +0 -1
- package/dist/css/Carousel.css +0 -1
- package/dist/css/ColorInput.css +0 -2
- package/dist/css/ColorPicker.css +0 -3
- package/dist/css/Combobox.css +0 -2
- package/dist/css/DatePicker.css +0 -3
- package/dist/css/DateRangePicker.css +6 -3
- package/dist/css/Dropzone.css +0 -3
- package/dist/css/Fieldset-FieldsetGroup.css +0 -1
- package/dist/css/ImageZoom.css +93 -0
- package/dist/css/Input.css +0 -1
- package/dist/css/Menu-MenuList.css +0 -1
- package/dist/css/NumberInput.css +0 -1
- package/dist/css/PinInput.css +0 -1
- package/dist/css/Radio.css +0 -1
- package/dist/css/SegmentedControl.css +0 -1
- package/dist/css/Select-SelectDropdown.css +0 -1
- package/dist/css/Select-SelectOption.css +0 -1
- package/dist/css/Select.css +0 -1
- package/dist/css/Splitter.css +77 -0
- package/dist/css/Table-TableBody.css +10 -0
- package/dist/css/Table-TableHead.css +41 -0
- package/dist/css/Table-TableSelectBox.css +11 -0
- package/dist/css/TagsInput.css +0 -2
- package/dist/css/Textarea.css +0 -1
- package/dist/css/Toggle.css +0 -1
- package/dist/css/Tour.css +81 -0
- package/dist/css/use-toasts-toast-item.css +0 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +31 -19
- package/dist/styles.css +3227 -2939
- package/esm/ContextMenu/index.js +2 -2
- package/esm/CssBaseline/index.js +1 -1
- package/esm/DateRangePicker/index.js +1 -1
- package/esm/ImageZoom/ImageZoom.d.ts +14 -0
- package/esm/ImageZoom/index.d.ts +3 -0
- package/esm/ImageZoom/index.js +17 -0
- package/esm/Menu/index.js +1 -1
- package/esm/Splitter/Splitter.d.ts +14 -0
- package/esm/Splitter/SplitterContext.d.ts +6 -0
- package/esm/Splitter/SplitterPanel.d.ts +13 -0
- package/esm/Splitter/index.d.ts +9 -0
- package/esm/Splitter/index.js +14 -0
- package/esm/Table/Table.d.ts +11 -1
- package/esm/Table/TableBody.d.ts +8 -2
- package/esm/Table/TableColumn.d.ts +2 -0
- package/esm/Table/TableHead.d.ts +9 -1
- package/esm/Table/TableSelectBox.d.ts +9 -0
- package/esm/Table/TableTypes.d.ts +8 -0
- package/esm/Table/index.d.ts +1 -1
- package/esm/Table/index.js +1 -1
- package/esm/Tour/Tour.d.ts +26 -0
- package/esm/Tour/index.d.ts +3 -0
- package/esm/Tour/index.js +23 -0
- package/esm/{chunk-AVO2SK2I.js → chunk-3S6G7WGK.js} +1 -1
- package/esm/{chunk-GYFW5NLU.js → chunk-BHQRX76X.js} +22 -4
- package/esm/chunk-FFEAKF3A.js +220 -0
- package/esm/{chunk-XLPOECCE.js → chunk-FL6J36B7.js} +3 -2
- package/esm/chunk-REWKR7S3.js +109 -0
- package/esm/chunk-STYC6O24.js +232 -0
- package/esm/{chunk-TDJGMSGT.js → chunk-WIIDIZYK.js} +3 -1
- package/esm/chunk-ZNDN2VPZ.js +543 -0
- package/esm/css/ButtonDropdown-ButtonDropdownItem.css +0 -1
- package/esm/css/ButtonGroup.css +0 -1
- package/esm/css/Calendar.css +0 -1
- package/esm/css/Carousel.css +0 -1
- package/esm/css/ColorInput.css +0 -2
- package/esm/css/ColorPicker.css +0 -3
- package/esm/css/Combobox.css +0 -2
- package/esm/css/DatePicker.css +0 -3
- package/esm/css/DateRangePicker.css +6 -3
- package/esm/css/Dropzone.css +0 -3
- package/esm/css/Fieldset-FieldsetGroup.css +0 -1
- package/esm/css/ImageZoom.css +93 -0
- package/esm/css/Input.css +0 -1
- package/esm/css/Menu-MenuList.css +0 -1
- package/esm/css/NumberInput.css +0 -1
- package/esm/css/PinInput.css +0 -1
- package/esm/css/Radio.css +0 -1
- package/esm/css/SegmentedControl.css +0 -1
- package/esm/css/Select-SelectDropdown.css +0 -1
- package/esm/css/Select-SelectOption.css +0 -1
- package/esm/css/Select.css +0 -1
- package/esm/css/Splitter.css +77 -0
- package/esm/css/Table-TableBody.css +10 -0
- package/esm/css/Table-TableHead.css +41 -0
- package/esm/css/Table-TableSelectBox.css +11 -0
- package/esm/css/TagsInput.css +0 -2
- package/esm/css/Textarea.css +0 -1
- package/esm/css/Toggle.css +0 -1
- package/esm/css/Tour.css +81 -0
- package/esm/css/use-toasts-toast-item.css +0 -1
- package/esm/index.d.ts +7 -1
- package/esm/index.js +36 -24
- package/esm/styles.css +2987 -2699
- package/package.json +1 -1
- package/esm/chunk-TKICX5R6.js +0 -351
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkMAICNLTYjs = require('./chunk-MAICNLTY.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkV5I4ORQQjs = require('./chunk-V5I4ORQQ.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
var _chunk5KUROAEPjs = require('./chunk-5KUROAEP.js');
|
|
12
|
+
|
|
13
|
+
// core/Splitter/Splitter.tsx
|
|
14
|
+
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
15
|
+
|
|
16
|
+
// core/Splitter/SplitterContext.ts
|
|
17
|
+
|
|
18
|
+
var SplitterPanelContext = _react2.default.createContext(null);
|
|
19
|
+
|
|
20
|
+
// css-module-source:/Users/brunnoandrade/Desktop/BolioUI/bolio-ui/core/Splitter/Splitter.module.css.bolio-css-module-source
|
|
21
|
+
var Splitter_module_css_default = { "splitter": "Splitter-module_splitter__ZxGeO", "horizontal": "Splitter-module_horizontal__1LuP6", "vertical": "Splitter-module_vertical__APNTT", "panel": "Splitter-module_panel__UyXwt", "handle": "Splitter-module_handle__zkBUq" };
|
|
22
|
+
|
|
23
|
+
// core/Splitter/Splitter.tsx
|
|
24
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
25
|
+
var initialSizes = (panels) => {
|
|
26
|
+
const given = panels.map((panel) => panel.props.defaultSize);
|
|
27
|
+
const used = given.reduce((sum, size) => sum + (size != null ? size : 0), 0);
|
|
28
|
+
const open = given.filter((size) => size === void 0).length;
|
|
29
|
+
return given.map(
|
|
30
|
+
(size) => size === void 0 ? Math.max(0, 100 - used) / open : size
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
var SplitterComponent = _react2.default.forwardRef(
|
|
34
|
+
({
|
|
35
|
+
direction = "horizontal",
|
|
36
|
+
onResize,
|
|
37
|
+
handleLabel = "Resize",
|
|
38
|
+
className = "",
|
|
39
|
+
children,
|
|
40
|
+
style,
|
|
41
|
+
...props
|
|
42
|
+
}, ref) => {
|
|
43
|
+
const theme = _chunkV5I4ORQQjs.use_theme_default.call(void 0, );
|
|
44
|
+
const { SCALES } = _chunkMAICNLTYjs.use_scale_default.call(void 0, );
|
|
45
|
+
const baseId = _react.useId.call(void 0, );
|
|
46
|
+
const panels = _react2.default.Children.toArray(children).filter(
|
|
47
|
+
_react2.default.isValidElement
|
|
48
|
+
);
|
|
49
|
+
const horizontal = direction === "horizontal";
|
|
50
|
+
const [sizes, setSizes] = _react.useState.call(void 0, () => initialSizes(panels));
|
|
51
|
+
if (sizes.length !== panels.length) setSizes(initialSizes(panels));
|
|
52
|
+
const elements = _react.useRef.call(void 0, []);
|
|
53
|
+
const drag = _react.useRef.call(void 0, void 0);
|
|
54
|
+
const minOf = (index) => {
|
|
55
|
+
var _a;
|
|
56
|
+
return (_a = panels[index].props.minSize) != null ? _a : 0;
|
|
57
|
+
};
|
|
58
|
+
const maxOf = (index) => {
|
|
59
|
+
var _a;
|
|
60
|
+
return (_a = panels[index].props.maxSize) != null ? _a : 100;
|
|
61
|
+
};
|
|
62
|
+
const move = (index, delta, from) => {
|
|
63
|
+
const [a, b] = [from[index], from[index + 1]];
|
|
64
|
+
const low = Math.max(minOf(index) - a, b - maxOf(index + 1));
|
|
65
|
+
const high = Math.min(maxOf(index) - a, b - minOf(index + 1));
|
|
66
|
+
const applied = Math.min(Math.max(delta, low), high);
|
|
67
|
+
if (!applied && sizes[index] === a) return;
|
|
68
|
+
const next = [...from];
|
|
69
|
+
next[index] = a + applied;
|
|
70
|
+
next[index + 1] = b - applied;
|
|
71
|
+
setSizes(next);
|
|
72
|
+
if (onResize) onResize(next);
|
|
73
|
+
};
|
|
74
|
+
const pointerDown = (event) => {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
(_b = (_a = event.currentTarget).setPointerCapture) == null ? void 0 : _b.call(_a, event.pointerId);
|
|
77
|
+
const room = elements.current.reduce((sum, element) => {
|
|
78
|
+
const rect = element == null ? void 0 : element.getBoundingClientRect();
|
|
79
|
+
return sum + (rect ? horizontal ? rect.width : rect.height : 0);
|
|
80
|
+
}, 0);
|
|
81
|
+
drag.current = {
|
|
82
|
+
from: horizontal ? event.clientX : event.clientY,
|
|
83
|
+
sizes: [...sizes],
|
|
84
|
+
room
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
const pointerMove = (event, index) => {
|
|
88
|
+
var _a, _b;
|
|
89
|
+
const start = drag.current;
|
|
90
|
+
if (!start || !start.room) return;
|
|
91
|
+
if (!((_b = (_a = event.currentTarget).hasPointerCapture) == null ? void 0 : _b.call(_a, event.pointerId))) return;
|
|
92
|
+
const travelled = (horizontal ? event.clientX : event.clientY) - start.from;
|
|
93
|
+
move(index, travelled / start.room * 100, start.sizes);
|
|
94
|
+
};
|
|
95
|
+
const keyDown = (event, index) => {
|
|
96
|
+
const step = event.shiftKey ? 10 : 1;
|
|
97
|
+
const [less, more] = horizontal ? ["ArrowLeft", "ArrowRight"] : ["ArrowUp", "ArrowDown"];
|
|
98
|
+
const deltas = {
|
|
99
|
+
[less]: -step,
|
|
100
|
+
[more]: step,
|
|
101
|
+
Home: -100,
|
|
102
|
+
End: 100
|
|
103
|
+
};
|
|
104
|
+
if (!(event.key in deltas)) return;
|
|
105
|
+
event.preventDefault();
|
|
106
|
+
move(index, deltas[event.key], sizes);
|
|
107
|
+
};
|
|
108
|
+
const template = sizes.map((size) => `minmax(0, ${size}fr)`).join(" auto ");
|
|
109
|
+
const splitterStyle = {
|
|
110
|
+
"--splitter-template": template,
|
|
111
|
+
width: SCALES.width(1, "100%"),
|
|
112
|
+
height: SCALES.height(1, "100%"),
|
|
113
|
+
margin: `${SCALES.mt(0)} ${SCALES.mr(0)} ${SCALES.mb(0)} ${SCALES.ml(0)}`,
|
|
114
|
+
"--splitter-line": theme.palette.border,
|
|
115
|
+
"--splitter-active": theme.palette.primary,
|
|
116
|
+
...style
|
|
117
|
+
};
|
|
118
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
119
|
+
"div",
|
|
120
|
+
{
|
|
121
|
+
ref,
|
|
122
|
+
className: _chunk5KUROAEPjs.use_classes_default.call(void 0, Splitter_module_css_default.splitter, className, {
|
|
123
|
+
[Splitter_module_css_default.horizontal]: horizontal,
|
|
124
|
+
[Splitter_module_css_default.vertical]: !horizontal
|
|
125
|
+
}),
|
|
126
|
+
...props,
|
|
127
|
+
style: splitterStyle,
|
|
128
|
+
children: panels.map((panel, index) => {
|
|
129
|
+
var _a;
|
|
130
|
+
const [a, b] = [sizes[index], sizes[index + 1]];
|
|
131
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
|
|
132
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
133
|
+
SplitterPanelContext.Provider,
|
|
134
|
+
{
|
|
135
|
+
value: {
|
|
136
|
+
id: `${baseId}-panel-${index}`,
|
|
137
|
+
setElement: (element) => {
|
|
138
|
+
elements.current[index] = element;
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
children: panel
|
|
142
|
+
}
|
|
143
|
+
),
|
|
144
|
+
index < panels.length - 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
145
|
+
"div",
|
|
146
|
+
{
|
|
147
|
+
role: "separator",
|
|
148
|
+
tabIndex: 0,
|
|
149
|
+
"aria-label": handleLabel,
|
|
150
|
+
"aria-orientation": horizontal ? "vertical" : "horizontal",
|
|
151
|
+
"aria-controls": `${baseId}-panel-${index}`,
|
|
152
|
+
"aria-valuenow": Math.round(a),
|
|
153
|
+
"aria-valuemin": Math.round(
|
|
154
|
+
Math.max(minOf(index), a + b - maxOf(index + 1))
|
|
155
|
+
),
|
|
156
|
+
"aria-valuemax": Math.round(
|
|
157
|
+
Math.min(maxOf(index), a + b - minOf(index + 1))
|
|
158
|
+
),
|
|
159
|
+
className: _chunk5KUROAEPjs.joinClasses.call(void 0, Splitter_module_css_default.handle),
|
|
160
|
+
onPointerDown: pointerDown,
|
|
161
|
+
onPointerMove: (event) => pointerMove(event, index),
|
|
162
|
+
onPointerUp: () => drag.current = void 0,
|
|
163
|
+
onPointerCancel: () => drag.current = void 0,
|
|
164
|
+
onKeyDown: (event) => keyDown(event, index)
|
|
165
|
+
}
|
|
166
|
+
)
|
|
167
|
+
] }, (_a = panel.key) != null ? _a : index);
|
|
168
|
+
})
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
SplitterComponent.displayName = "BolioUISplitter";
|
|
174
|
+
var Splitter = _chunkMAICNLTYjs.with_scale_default.call(void 0, SplitterComponent);
|
|
175
|
+
var Splitter_default = Splitter;
|
|
176
|
+
|
|
177
|
+
// core/Splitter/SplitterPanel.tsx
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
var SplitterPanel = _react2.default.forwardRef(
|
|
181
|
+
({
|
|
182
|
+
// read by the Splitter
|
|
183
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
184
|
+
defaultSize,
|
|
185
|
+
minSize,
|
|
186
|
+
maxSize,
|
|
187
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
188
|
+
className = "",
|
|
189
|
+
children,
|
|
190
|
+
style,
|
|
191
|
+
...props
|
|
192
|
+
}, ref) => {
|
|
193
|
+
const config = _react.useContext.call(void 0, SplitterPanelContext);
|
|
194
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
195
|
+
"div",
|
|
196
|
+
{
|
|
197
|
+
ref: (element) => {
|
|
198
|
+
config == null ? void 0 : config.setElement(element);
|
|
199
|
+
if (typeof ref === "function") ref(element);
|
|
200
|
+
else if (ref) ref.current = element;
|
|
201
|
+
},
|
|
202
|
+
id: config == null ? void 0 : config.id,
|
|
203
|
+
className: _chunk5KUROAEPjs.use_classes_default.call(void 0, Splitter_module_css_default.panel, className),
|
|
204
|
+
...props,
|
|
205
|
+
style,
|
|
206
|
+
children
|
|
207
|
+
}
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
);
|
|
211
|
+
SplitterPanel.displayName = "BolioUISplitterPanel";
|
|
212
|
+
var SplitterPanel_default = SplitterPanel;
|
|
213
|
+
|
|
214
|
+
// core/Splitter/index.ts
|
|
215
|
+
Splitter_default.Panel = SplitterPanel_default;
|
|
216
|
+
var Splitter_default2 = Splitter_default;
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
exports.Splitter_default = Splitter_default2;
|
|
@@ -64,10 +64,11 @@ var MenuList = ({
|
|
|
64
64
|
};
|
|
65
65
|
_react.useEffect.call(void 0, () => {
|
|
66
66
|
var _a, _b;
|
|
67
|
-
|
|
67
|
+
const options = { preventScroll: true };
|
|
68
|
+
if (focus === "list") return (_a = listRef.current) == null ? void 0 : _a.focus(options);
|
|
68
69
|
const items = getItems();
|
|
69
70
|
const target = focus === "first" ? items[0] : items[items.length - 1];
|
|
70
|
-
(_b = target != null ? target : listRef.current) == null ? void 0 : _b.focus();
|
|
71
|
+
(_b = target != null ? target : listRef.current) == null ? void 0 : _b.focus(options);
|
|
71
72
|
}, []);
|
|
72
73
|
const typeahead = (key, items, index) => {
|
|
73
74
|
const now = Date.now();
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
|
|
3
|
+
var _chunkTWIOSRRPjs = require('./chunk-TWIOSRRP.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunk5KUROAEPjs = require('./chunk-5KUROAEP.js');
|
|
7
|
+
|
|
8
|
+
// core/ImageZoom/ImageZoom.tsx
|
|
9
|
+
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
10
|
+
|
|
11
|
+
// css-module-source:/Users/brunnoandrade/Desktop/BolioUI/bolio-ui/core/ImageZoom/ImageZoom.module.css.bolio-css-module-source
|
|
12
|
+
var ImageZoom_module_css_default = { "trigger": "ImageZoom-module_trigger__-42Bz", "dialog": "ImageZoom-module_dialog__TjA9E", "figure": "ImageZoom-module_figure__YIBq1", "zoomed": "ImageZoom-module_zoomed__7gfCP", "caption": "ImageZoom-module_caption__6SFRA", "close": "ImageZoom-module_close__iEiwJ" };
|
|
13
|
+
|
|
14
|
+
// core/ImageZoom/ImageZoom.tsx
|
|
15
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
16
|
+
var ImageZoom = _react2.default.forwardRef(
|
|
17
|
+
({
|
|
18
|
+
src,
|
|
19
|
+
alt,
|
|
20
|
+
zoomSrc,
|
|
21
|
+
caption,
|
|
22
|
+
closeLabel = "Close",
|
|
23
|
+
className = "",
|
|
24
|
+
...imageProps
|
|
25
|
+
}, ref) => {
|
|
26
|
+
const [open, setOpen] = _react.useState.call(void 0, false);
|
|
27
|
+
const dialog = _react.useRef.call(void 0, null);
|
|
28
|
+
_react.useEffect.call(void 0, () => {
|
|
29
|
+
var _a;
|
|
30
|
+
if (open) (_a = dialog.current) == null ? void 0 : _a.showModal();
|
|
31
|
+
}, [open]);
|
|
32
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
33
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
34
|
+
"button",
|
|
35
|
+
{
|
|
36
|
+
ref,
|
|
37
|
+
type: "button",
|
|
38
|
+
className: _chunk5KUROAEPjs.use_classes_default.call(void 0, ImageZoom_module_css_default.trigger, className),
|
|
39
|
+
"aria-haspopup": "dialog",
|
|
40
|
+
onClick: () => setOpen(true),
|
|
41
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTWIOSRRPjs.Image_default, { src, alt, ...imageProps })
|
|
42
|
+
}
|
|
43
|
+
),
|
|
44
|
+
open && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
45
|
+
"dialog",
|
|
46
|
+
{
|
|
47
|
+
ref: dialog,
|
|
48
|
+
"aria-label": alt,
|
|
49
|
+
className: ImageZoom_module_css_default.dialog,
|
|
50
|
+
onClose: () => setOpen(false),
|
|
51
|
+
onKeyDown: (event) => {
|
|
52
|
+
var _a;
|
|
53
|
+
if (event.key === "Escape") (_a = dialog.current) == null ? void 0 : _a.close();
|
|
54
|
+
},
|
|
55
|
+
onClick: (event) => {
|
|
56
|
+
var _a;
|
|
57
|
+
if (event.target === event.currentTarget) (_a = dialog.current) == null ? void 0 : _a.close();
|
|
58
|
+
},
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "figure", { className: ImageZoom_module_css_default.figure, children: [
|
|
61
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: zoomSrc || src, alt, className: ImageZoom_module_css_default.zoomed }),
|
|
62
|
+
caption && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "figcaption", { className: ImageZoom_module_css_default.caption, children: caption })
|
|
63
|
+
] }),
|
|
64
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
65
|
+
"button",
|
|
66
|
+
{
|
|
67
|
+
type: "button",
|
|
68
|
+
className: ImageZoom_module_css_default.close,
|
|
69
|
+
"aria-label": closeLabel,
|
|
70
|
+
onClick: () => {
|
|
71
|
+
var _a;
|
|
72
|
+
return (_a = dialog.current) == null ? void 0 : _a.close();
|
|
73
|
+
},
|
|
74
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
75
|
+
"svg",
|
|
76
|
+
{
|
|
77
|
+
viewBox: "0 0 24 24",
|
|
78
|
+
width: "1.5em",
|
|
79
|
+
height: "1.5em",
|
|
80
|
+
"aria-hidden": "true",
|
|
81
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
82
|
+
"path",
|
|
83
|
+
{
|
|
84
|
+
d: "M6 6l12 12M18 6L6 18",
|
|
85
|
+
fill: "none",
|
|
86
|
+
stroke: "currentColor",
|
|
87
|
+
strokeWidth: "2",
|
|
88
|
+
strokeLinecap: "round"
|
|
89
|
+
}
|
|
90
|
+
)
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
] });
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
ImageZoom.displayName = "BolioUIImageZoom";
|
|
102
|
+
var ImageZoom_default = ImageZoom;
|
|
103
|
+
|
|
104
|
+
// core/ImageZoom/index.ts
|
|
105
|
+
var ImageZoom_default2 = ImageZoom_default;
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
exports.ImageZoom_default = ImageZoom_default2;
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
|
|
3
|
+
var _chunkAXYDJGTNjs = require('./chunk-AXYDJGTN.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkBXDUHMWSjs = require('./chunk-BXDUHMWS.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkZRORQ2WHjs = require('./chunk-ZRORQ2WH.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkDXHNQANXjs = require('./chunk-DXHNQANX.js');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkV5I4ORQQjs = require('./chunk-V5I4ORQQ.js');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var _chunk5KUROAEPjs = require('./chunk-5KUROAEP.js');
|
|
19
|
+
|
|
20
|
+
// core/Tour/Tour.tsx
|
|
21
|
+
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
22
|
+
var _reactdom = require('react-dom');
|
|
23
|
+
|
|
24
|
+
// css-module-source:/Users/brunnoandrade/Desktop/BolioUI/bolio-ui/core/Tour/Tour.module.css.bolio-css-module-source
|
|
25
|
+
var Tour_module_css_default = { "tour": "Tour-module_tour__FLAxG", "spotlight": "Tour-module_spotlight__o7ukV", "dim": "Tour-module_dim__ZPmGZ", "card": "Tour-module_card__p9LCI", "centered": "Tour-module_centered__KJvbZ", "count": "Tour-module_count__2K7-G", "title": "Tour-module_title__Z-spV", "content": "Tour-module_content__qLvnb", "actions": "Tour-module_actions__HKbHi", "spacer": "Tour-module_spacer__dkdPy" };
|
|
26
|
+
|
|
27
|
+
// core/Tour/Tour.tsx
|
|
28
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
29
|
+
var CARD_WIDTH = 320;
|
|
30
|
+
var MARGIN = 8;
|
|
31
|
+
var GAP = 8;
|
|
32
|
+
var ROOM_BELOW = 240;
|
|
33
|
+
var resolve = (target) => !target ? null : typeof target === "string" ? document.querySelector(target) : typeof target === "function" ? target() : target;
|
|
34
|
+
var Tour = _react2.default.forwardRef(
|
|
35
|
+
({
|
|
36
|
+
steps,
|
|
37
|
+
open,
|
|
38
|
+
onClose,
|
|
39
|
+
current: customCurrent,
|
|
40
|
+
initialCurrent = 0,
|
|
41
|
+
onCurrentChange,
|
|
42
|
+
onFinish,
|
|
43
|
+
previousLabel = "Back",
|
|
44
|
+
nextLabel = "Next",
|
|
45
|
+
finishLabel = "Done",
|
|
46
|
+
skipLabel = "Skip",
|
|
47
|
+
stepLabel = (index, count) => `${index + 1} of ${count}`,
|
|
48
|
+
spotlightPadding = 6,
|
|
49
|
+
className = "",
|
|
50
|
+
style,
|
|
51
|
+
onKeyDown,
|
|
52
|
+
...props
|
|
53
|
+
}, ref) => {
|
|
54
|
+
const theme = _chunkV5I4ORQQjs.use_theme_default.call(void 0, );
|
|
55
|
+
const portal = _chunkBXDUHMWSjs.use_portal_default.call(void 0, "tour");
|
|
56
|
+
const id = _react.useId.call(void 0, );
|
|
57
|
+
const [selfCurrent, setSelfCurrent] = _react.useState.call(void 0, initialCurrent);
|
|
58
|
+
const current = Math.max(
|
|
59
|
+
0,
|
|
60
|
+
Math.min(customCurrent != null ? customCurrent : selfCurrent, steps.length - 1)
|
|
61
|
+
);
|
|
62
|
+
const step = steps[current];
|
|
63
|
+
const last = current === steps.length - 1;
|
|
64
|
+
const [rect, setRect] = _react.useState.call(void 0, null);
|
|
65
|
+
const card = _react.useRef.call(void 0, null);
|
|
66
|
+
const previous = _react.useRef.call(void 0, null);
|
|
67
|
+
const latestSteps = _chunkZRORQ2WHjs.use_latest_default.call(void 0, steps);
|
|
68
|
+
_react.useEffect.call(void 0, () => {
|
|
69
|
+
var _a, _b;
|
|
70
|
+
const target = (_a = latestSteps.current[current]) == null ? void 0 : _a.target;
|
|
71
|
+
if (!open) return;
|
|
72
|
+
const element = resolve(target);
|
|
73
|
+
if (!element) {
|
|
74
|
+
if (target) _chunkAXYDJGTNjs.log_warning_default.call(void 0, "The target of the step was not found.", "Tour");
|
|
75
|
+
setRect(null);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
(_b = element.scrollIntoView) == null ? void 0 : _b.call(element, { block: "center", inline: "nearest" });
|
|
79
|
+
const update = () => setRect(element.getBoundingClientRect());
|
|
80
|
+
update();
|
|
81
|
+
window.addEventListener("resize", update);
|
|
82
|
+
window.addEventListener("scroll", update, true);
|
|
83
|
+
return () => {
|
|
84
|
+
window.removeEventListener("resize", update);
|
|
85
|
+
window.removeEventListener("scroll", update, true);
|
|
86
|
+
};
|
|
87
|
+
}, [open, current, latestSteps]);
|
|
88
|
+
_react.useEffect.call(void 0, () => {
|
|
89
|
+
if (!open) return;
|
|
90
|
+
previous.current = document.activeElement;
|
|
91
|
+
return () => {
|
|
92
|
+
var _a, _b;
|
|
93
|
+
return (_b = (_a = previous.current) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);
|
|
94
|
+
};
|
|
95
|
+
}, [open]);
|
|
96
|
+
_react.useEffect.call(void 0, () => {
|
|
97
|
+
var _a;
|
|
98
|
+
if (open && portal) (_a = card.current) == null ? void 0 : _a.focus({ preventScroll: true });
|
|
99
|
+
}, [open, current, portal]);
|
|
100
|
+
if (!open || !step || !portal) return null;
|
|
101
|
+
const go = (next) => {
|
|
102
|
+
if (customCurrent === void 0) setSelfCurrent(next);
|
|
103
|
+
if (onCurrentChange) onCurrentChange(next);
|
|
104
|
+
};
|
|
105
|
+
const finish = () => {
|
|
106
|
+
if (onFinish) onFinish();
|
|
107
|
+
onClose();
|
|
108
|
+
};
|
|
109
|
+
const keyDownHandler = (event) => {
|
|
110
|
+
var _a, _b;
|
|
111
|
+
if (onKeyDown) onKeyDown(event);
|
|
112
|
+
if (event.key === "Escape") {
|
|
113
|
+
event.stopPropagation();
|
|
114
|
+
return onClose();
|
|
115
|
+
}
|
|
116
|
+
if (event.key !== "Tab") return;
|
|
117
|
+
const buttons = Array.from(
|
|
118
|
+
(_b = (_a = card.current) == null ? void 0 : _a.querySelectorAll("button")) != null ? _b : []
|
|
119
|
+
);
|
|
120
|
+
const [first, end] = [buttons[0], buttons[buttons.length - 1]];
|
|
121
|
+
const onCard = document.activeElement === card.current;
|
|
122
|
+
if (!first) return;
|
|
123
|
+
if (event.shiftKey && (onCard || document.activeElement === first)) {
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
end.focus();
|
|
126
|
+
} else if (!event.shiftKey && (onCard || document.activeElement === end)) {
|
|
127
|
+
event.preventDefault();
|
|
128
|
+
first.focus();
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
const width = Math.min(CARD_WIDTH, window.innerWidth - 2 * MARGIN);
|
|
132
|
+
const room = rect ? window.innerHeight - rect.bottom : 0;
|
|
133
|
+
const above = Boolean(rect && room < ROOM_BELOW && rect.top > room);
|
|
134
|
+
const cardStyle = rect ? {
|
|
135
|
+
width,
|
|
136
|
+
left: Math.max(
|
|
137
|
+
MARGIN,
|
|
138
|
+
Math.min(rect.left, window.innerWidth - width - MARGIN)
|
|
139
|
+
),
|
|
140
|
+
...above ? { bottom: window.innerHeight - rect.top + spotlightPadding + GAP } : { top: rect.bottom + spotlightPadding + GAP }
|
|
141
|
+
} : { width };
|
|
142
|
+
const dark = theme.type === "dark";
|
|
143
|
+
const tourStyle = {
|
|
144
|
+
"--tour-color": theme.palette.foreground,
|
|
145
|
+
"--tour-muted": theme.palette.accents_5,
|
|
146
|
+
"--tour-radius": theme.layout.radius,
|
|
147
|
+
"--tour-bg": dark ? theme.palette.accents_3 : theme.palette.background,
|
|
148
|
+
"--tour-shadow": theme.expressiveness.shadowMedium,
|
|
149
|
+
"--tour-dim": dark ? "rgb(0 0 0 / 60%)" : "rgb(0 0 0 / 55%)",
|
|
150
|
+
...style
|
|
151
|
+
};
|
|
152
|
+
return _reactdom.createPortal.call(void 0,
|
|
153
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
154
|
+
"div",
|
|
155
|
+
{
|
|
156
|
+
ref,
|
|
157
|
+
className: _chunk5KUROAEPjs.joinClasses.call(void 0, Tour_module_css_default.tour, className),
|
|
158
|
+
...props,
|
|
159
|
+
style: tourStyle,
|
|
160
|
+
onKeyDown: keyDownHandler,
|
|
161
|
+
children: [
|
|
162
|
+
rect ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
163
|
+
"div",
|
|
164
|
+
{
|
|
165
|
+
className: Tour_module_css_default.spotlight,
|
|
166
|
+
style: {
|
|
167
|
+
left: rect.left - spotlightPadding,
|
|
168
|
+
top: rect.top - spotlightPadding,
|
|
169
|
+
width: rect.width + 2 * spotlightPadding,
|
|
170
|
+
height: rect.height + 2 * spotlightPadding
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: Tour_module_css_default.dim }),
|
|
174
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
175
|
+
"div",
|
|
176
|
+
{
|
|
177
|
+
ref: card,
|
|
178
|
+
role: "dialog",
|
|
179
|
+
"aria-modal": "true",
|
|
180
|
+
"aria-labelledby": `${id}-title`,
|
|
181
|
+
"aria-describedby": `${id}-content`,
|
|
182
|
+
tabIndex: -1,
|
|
183
|
+
className: _chunk5KUROAEPjs.joinClasses.call(void 0, Tour_module_css_default.card, { [Tour_module_css_default.centered]: !rect }),
|
|
184
|
+
style: cardStyle,
|
|
185
|
+
children: [
|
|
186
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: Tour_module_css_default.count, children: stepLabel(current, steps.length) }),
|
|
187
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { id: `${id}-title`, className: Tour_module_css_default.title, children: step.title }),
|
|
188
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { id: `${id}-content`, className: Tour_module_css_default.content, children: step.content }),
|
|
189
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: Tour_module_css_default.actions, children: [
|
|
190
|
+
!last && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDXHNQANXjs.Button_default, { auto: true, scale: 0.75, effect: false, onClick: onClose, children: skipLabel }),
|
|
191
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: Tour_module_css_default.spacer }),
|
|
192
|
+
current > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
193
|
+
_chunkDXHNQANXjs.Button_default,
|
|
194
|
+
{
|
|
195
|
+
auto: true,
|
|
196
|
+
scale: 0.75,
|
|
197
|
+
effect: false,
|
|
198
|
+
onClick: () => go(current - 1),
|
|
199
|
+
children: previousLabel
|
|
200
|
+
}
|
|
201
|
+
),
|
|
202
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
203
|
+
_chunkDXHNQANXjs.Button_default,
|
|
204
|
+
{
|
|
205
|
+
auto: true,
|
|
206
|
+
scale: 0.75,
|
|
207
|
+
type: "primary",
|
|
208
|
+
effect: false,
|
|
209
|
+
onClick: last ? finish : () => go(current + 1),
|
|
210
|
+
children: last ? finishLabel : nextLabel
|
|
211
|
+
}
|
|
212
|
+
)
|
|
213
|
+
] })
|
|
214
|
+
]
|
|
215
|
+
}
|
|
216
|
+
)
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
),
|
|
220
|
+
portal
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
);
|
|
224
|
+
Tour.displayName = "BolioUITour";
|
|
225
|
+
var Tour_default = Tour;
|
|
226
|
+
|
|
227
|
+
// core/Tour/index.ts
|
|
228
|
+
var Tour_default2 = Tour_default;
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
exports.Tour_default = Tour_default2;
|
|
@@ -26,6 +26,9 @@ var CssBaseline = ({
|
|
|
26
26
|
font-size: 16px;
|
|
27
27
|
--bolioui-icons-background: ${theme.palette.background};
|
|
28
28
|
box-sizing: border-box;
|
|
29
|
+
/* the native parts of the page follow the theme: the clock of a time
|
|
30
|
+
field, the scrollbars and the pickers of the browser */
|
|
31
|
+
color-scheme: ${theme.type};
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
body {
|
|
@@ -53,7 +56,6 @@ var CssBaseline = ({
|
|
|
53
56
|
*:before,
|
|
54
57
|
*:after {
|
|
55
58
|
box-sizing: inherit;
|
|
56
|
-
text-rendering: geometricPrecision;
|
|
57
59
|
-webkit-tap-highlight-color: transparent;
|
|
58
60
|
}
|
|
59
61
|
|