@orcestr/ui 0.1.0 → 0.2.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.
- package/README.md +11 -11
- package/README.ru.md +10 -10
- package/dist/components/Action/ActionConfirmModal.d.ts.map +1 -1
- package/dist/components/Action/ActionTypes.d.ts +1 -1
- package/dist/components/Action/ActionTypes.d.ts.map +1 -1
- package/dist/components/ActionMenu/ActionMenu.d.ts.map +1 -1
- package/dist/components/Alert/Alert.d.ts.map +1 -1
- package/dist/components/Alert/Alert.js +1 -1
- package/dist/components/AppShell/AppShell.d.ts +11 -0
- package/dist/components/AppShell/AppShell.d.ts.map +1 -1
- package/dist/components/AppShell/AppShell.js +15 -14
- package/dist/components/AppSidebar/AppSidebar.d.ts.map +1 -1
- package/dist/components/AppSidebar/AppSidebar.js +84 -15
- package/dist/components/Badge/Badge.d.ts.map +1 -1
- package/dist/components/Badge/Badge.js +1 -1
- package/dist/components/BadgeSelectMenu/BadgeSelectMenu.d.ts.map +1 -1
- package/dist/components/BadgeSelectMenu/BadgeSelectMenu.js +5 -5
- package/dist/components/Box/Box.d.ts.map +1 -1
- package/dist/components/Box/Box.js +1 -1
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +2 -2
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +1 -1
- package/dist/components/Collapse/Collapse.d.ts.map +1 -1
- package/dist/components/Collapse/Collapse.js +5 -25
- package/dist/components/Combobox/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox/Combobox.js +7 -2
- package/dist/components/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/components/CommandPalette/CommandPalette.js +6 -12
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.js +1 -1
- package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.js +3 -3
- package/dist/components/CopyButton/CopyButton.d.ts +24 -0
- package/dist/components/CopyButton/CopyButton.d.ts.map +1 -0
- package/dist/components/CopyButton/CopyButton.js +81 -0
- package/dist/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/components/DataTable/DataTable.js +29 -22
- package/dist/components/DataTable/DataTableStateAdapters.d.ts.map +1 -1
- package/dist/components/DataTable/DataTableStateAdapters.js +3 -4
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.js +1 -1
- package/dist/components/DatePicker/DatePickerState.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePickerState.js +3 -1
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/DateRangePresetPicker/DateRangePresetPicker.d.ts.map +1 -1
- package/dist/components/DateRangePresetPicker/DateRangePresetPicker.js +1 -1
- package/dist/components/DateRangePresetPicker/DateRangePresetPickerState.d.ts.map +1 -1
- package/dist/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.d.ts +2 -1
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.js +3 -3
- package/dist/components/EntityPicker/EntityPicker.d.ts.map +1 -1
- package/dist/components/EntityPicker/EntityPicker.js +2 -2
- package/dist/components/Field/Field.d.ts.map +1 -1
- package/dist/components/Field/Field.js +1 -1
- package/dist/components/Flex/Flex.d.ts.map +1 -1
- package/dist/components/Flex/Flex.js +1 -1
- package/dist/components/Grid/Grid.d.ts.map +1 -1
- package/dist/components/Highlight/Highlight.d.ts.map +1 -1
- package/dist/components/Highlight/Highlight.js +1 -1
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js +3 -3
- package/dist/components/IconText/IconText.d.ts.map +1 -1
- package/dist/components/IconText/IconText.js +3 -1
- package/dist/components/IconTextButton/IconTextButton.d.ts.map +1 -1
- package/dist/components/InlineEdit/InlineEdit.d.ts.map +1 -1
- package/dist/components/InlineEdit/InlineEdit.js +22 -7
- package/dist/components/LinkButton/LinkButton.d.ts.map +1 -1
- package/dist/components/LinkButton/LinkButton.js +2 -2
- package/dist/components/Listbox/Listbox.js +2 -2
- package/dist/components/Menu/Menu.d.ts.map +1 -1
- package/dist/components/Menu/Menu.js +5 -5
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +4 -8
- package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.js +5 -7
- package/dist/components/NumberField/NumberField.d.ts.map +1 -1
- package/dist/components/NumberField/NumberField.js +1 -1
- package/dist/components/Overlay/OverlayProvider.d.ts +1 -1
- package/dist/components/Overlay/OverlayProvider.d.ts.map +1 -1
- package/dist/components/Overlay/OverlayProvider.js +3 -7
- package/dist/components/PaginatedCombobox/PaginatedCombobox.d.ts.map +1 -1
- package/dist/components/PaginatedCombobox/PaginatedCombobox.js +9 -8
- package/dist/components/PaginatedCombobox/PaginatedComboboxReactQueryAdapter.d.ts.map +1 -1
- package/dist/components/PaginatedCombobox/PaginatedComboboxReactQueryAdapter.js +2 -2
- package/dist/components/Pagination/Pagination.js +1 -1
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/Popover.js +16 -18
- package/dist/components/Portal/Portal.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.js +10 -23
- package/dist/components/Section/Section.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +4 -4
- package/dist/components/Separator/Separator.d.ts.map +1 -1
- package/dist/components/Separator/Separator.js +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/Skeleton/Skeleton.js +1 -1
- package/dist/components/SpecialModal/SpecialModal.d.ts.map +1 -1
- package/dist/components/SpecialModal/SpecialModal.js +2 -2
- package/dist/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.js +1 -1
- package/dist/components/Stack/Stack.d.ts.map +1 -1
- package/dist/components/Stack/Stack.js +1 -1
- package/dist/components/State/State.d.ts.map +1 -1
- package/dist/components/State/State.js +5 -5
- package/dist/components/State/stateIcon.d.ts.map +1 -1
- package/dist/components/StepperInput/StepperInput.js +2 -2
- package/dist/components/Switch/Switch.js +1 -1
- package/dist/components/Table/Table.d.ts.map +1 -1
- package/dist/components/Table/Table.js +2 -2
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +24 -15
- package/dist/components/Text/Text.d.ts.map +1 -1
- package/dist/components/Text/Text.js +1 -1
- package/dist/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/components/TextArea/TextArea.js +2 -2
- package/dist/components/TextField/TextField.d.ts.map +1 -1
- package/dist/components/TextField/TextField.js +3 -3
- package/dist/components/Toast/Toast.d.ts +0 -4
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/Toast/Toast.js +63 -45
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +7 -9
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/example/CodePreview.d.ts +2 -1
- package/dist/example/CodePreview.d.ts.map +1 -1
- package/dist/example/CodePreview.js +18 -53
- package/dist/example/ExampleActionsSection.d.ts +1 -1
- package/dist/example/ExampleActionsSection.d.ts.map +1 -1
- package/dist/example/ExampleActionsSection.js +3 -3
- package/dist/example/ExampleApplicationSection.d.ts.map +1 -1
- package/dist/example/ExampleApplicationSection.js +91 -23
- package/dist/example/ExampleBasicsSections.d.ts +1 -1
- package/dist/example/ExampleBasicsSections.d.ts.map +1 -1
- package/dist/example/ExampleBasicsSections.js +22 -8
- package/dist/example/ExampleDataSection.d.ts.map +1 -1
- package/dist/example/ExampleDataSection.js +5 -5
- package/dist/example/ExampleFieldsSection.d.ts.map +1 -1
- package/dist/example/ExampleFieldsSection.js +8 -10
- package/dist/example/ExampleFoundationsSection.d.ts +1 -1
- package/dist/example/ExampleFoundationsSection.d.ts.map +1 -1
- package/dist/example/ExampleFoundationsSection.js +4 -4
- package/dist/example/ExampleOverlays.d.ts.map +1 -1
- package/dist/example/ExampleOverlays.js +4 -4
- package/dist/example/ExampleOverlaysSection.d.ts.map +1 -1
- package/dist/example/ExampleOverlaysSection.js +22 -35
- package/dist/example/ExampleSelectionSection.d.ts.map +1 -1
- package/dist/example/ExampleSelectionSection.js +8 -8
- package/dist/example/ExampleStateSection.d.ts +3 -3
- package/dist/example/ExampleStateSection.d.ts.map +1 -1
- package/dist/example/ExampleStateSection.js +15 -14
- package/dist/example/ExampleThemePlayground.d.ts +26 -26
- package/dist/example/ExampleThemePlayground.d.ts.map +1 -1
- package/dist/example/ExampleThemePlayground.js +58 -44
- package/dist/example/UiExamplePage.d.ts.map +1 -1
- package/dist/example/UiExamplePage.js +42 -55
- package/dist/example/UiExampleSection.d.ts.map +1 -1
- package/dist/example/UiExampleSection.js +1 -1
- package/dist/example/codeSamples.d.ts +1 -1
- package/dist/example/codeSamples.d.ts.map +1 -1
- package/dist/example/codeSamples.js +172 -70
- package/dist/example/exampleData.d.ts.map +1 -1
- package/dist/example/exampleData.js +5 -11
- package/dist/example/styles.css +79 -119
- package/dist/hooks/useControllableState.d.ts.map +1 -1
- package/dist/hooks/useControllableState.js +1 -3
- package/dist/hooks/useFloatingLayer.d.ts.map +1 -1
- package/dist/hooks/useFloatingLayer.js +1 -1
- package/dist/hooks/useFloatingPosition.d.ts.map +1 -1
- package/dist/hooks/useFloatingPosition.js +10 -15
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useListNavigation.d.ts.map +1 -1
- package/dist/hooks/useListNavigation.js +2 -4
- package/dist/hooks/useOutsidePointerDown.d.ts.map +1 -1
- package/dist/hooks/useTypeahead.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/locale/LocaleProvider.d.ts.map +1 -1
- package/dist/locale/LocaleProvider.js +1 -1
- package/dist/provider/OrcestrUiProvider.d.ts.map +1 -1
- package/dist/styles/orcestr-ui.css +658 -1033
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/ThemeProvider.js +21 -29
- package/dist/theme/defaultTheme.d.ts.map +1 -1
- package/dist/theme/defaultTheme.js +200 -89
- package/dist/theme/systemProps.d.ts +2 -2
- package/dist/theme/systemProps.d.ts.map +1 -1
- package/dist/theme/systemProps.js +4 -35
- package/dist/theme/themeTypes.d.ts +24 -19
- package/dist/theme/themeTypes.d.ts.map +1 -1
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/utils/cn.d.ts.map +1 -1
- package/dist/utils/composeRefs.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/polymorphic.d.ts.map +1 -1
- package/package.json +4 -1
|
@@ -20,5 +20,5 @@ export const Checkbox = forwardRef(function Checkbox({ className, label, childre
|
|
|
20
20
|
return;
|
|
21
21
|
inputRef.current.indeterminate = actualChecked === 'indeterminate';
|
|
22
22
|
}, [actualChecked]);
|
|
23
|
-
return (_jsxs("label", { className: cn('oui-checkbox', className), "data-checked": actualChecked === true ? 'true' : undefined, "data-indeterminate": actualChecked === 'indeterminate' ? 'true' : undefined, "data-disabled": disabled ? 'true' : undefined, "data-testid": testId, children: [_jsx("input", { ref: composeRefs(inputRef, ref), type:
|
|
23
|
+
return (_jsxs("label", { className: cn('oui-checkbox', className), "data-checked": actualChecked === true ? 'true' : undefined, "data-indeterminate": actualChecked === 'indeterminate' ? 'true' : undefined, "data-disabled": disabled ? 'true' : undefined, "data-testid": testId, children: [_jsx("input", { ref: composeRefs(inputRef, ref), type: "checkbox", checked: inputChecked, disabled: disabled, onChange: handleChange, ...props }), _jsxs("span", { className: "oui-checkbox-box", children: [_jsx(LuCheck, { className: "oui-checkbox-check", size: 13 }), _jsx(LuMinus, { className: "oui-checkbox-minus", size: 13 })] }), label || children ? _jsx("span", { children: label ?? children }) : null] }));
|
|
24
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapse.d.ts","sourceRoot":"","sources":["../../../src/components/Collapse/Collapse.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Collapse.d.ts","sourceRoot":"","sources":["../../../src/components/Collapse/Collapse.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3D,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,OAAc,EACd,SAAS,EACT,KAAK,EACL,MAAM,GACT,EAAE,aAAa,2CAkBf"}
|
|
@@ -1,33 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import {} from 'react';
|
|
4
4
|
import { cn } from '../../utils/cn';
|
|
5
5
|
export function Collapse({ open, children, animate = true, className, style, testId, }) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const measure = useCallback(() => {
|
|
9
|
-
const element = contentRef.current;
|
|
10
|
-
if (!element)
|
|
11
|
-
return;
|
|
12
|
-
const nextHeight = element.scrollHeight;
|
|
13
|
-
setContentHeight((current) => (current === nextHeight ? current : nextHeight));
|
|
14
|
-
}, []);
|
|
15
|
-
useLayoutEffect(() => {
|
|
16
|
-
measure();
|
|
17
|
-
}, [children, measure, open]);
|
|
18
|
-
useLayoutEffect(() => {
|
|
19
|
-
const element = contentRef.current;
|
|
20
|
-
if (!element || typeof ResizeObserver === 'undefined')
|
|
21
|
-
return;
|
|
22
|
-
const observer = new ResizeObserver(() => measure());
|
|
23
|
-
observer.observe(element);
|
|
24
|
-
return () => observer.disconnect();
|
|
25
|
-
}, [measure]);
|
|
26
|
-
return (_jsx("div", { className: cn('oui-collapse', className), "data-state": open ? 'open' : 'closed', "data-testid": testId, style: {
|
|
27
|
-
height: open ? (contentHeight ?? undefined) : 0,
|
|
6
|
+
return (_jsx("div", { className: cn('oui-collapse', className), "data-state": open ? 'open' : 'closed', "data-animate": animate ? 'true' : 'false', "data-testid": testId, style: {
|
|
7
|
+
gridTemplateRows: open ? '1fr' : '0fr',
|
|
28
8
|
transition: animate
|
|
29
|
-
? '
|
|
9
|
+
? 'grid-template-rows 220ms cubic-bezier(0.22, 1, 0.36, 1)'
|
|
30
10
|
: 'none',
|
|
31
11
|
...style,
|
|
32
|
-
}, children: _jsx("div", {
|
|
12
|
+
}, children: _jsx("div", { className: "oui-collapse-content", children: children }) }));
|
|
33
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/Combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/Combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK1D,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAI/D,wBAAgB,QAAQ,CAAC,EACrB,KAAK,EACL,KAAK,EACL,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,QAAgB,EAChB,SAAgB,EAChB,WAAkB,EAClB,MAAM,GACT,EAAE;IACC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,2CAiGA"}
|
|
@@ -17,14 +17,19 @@ export function Combobox({ items, value, onValueChange, placeholder, selectedFal
|
|
|
17
17
|
setOpen(next);
|
|
18
18
|
if (!next)
|
|
19
19
|
setQuery('');
|
|
20
|
-
}, trigger: _jsx(Button, { v:
|
|
20
|
+
}, trigger: _jsx(Button, { v: "surface", fullWidth: true, disabled: disabled, pressAnimation: "none", className: "oui-combobox-trigger", "data-state": open ? 'open' : 'closed', testId: testId, rightIcon: _jsxs("span", { className: "oui-combobox-trigger-actions", children: [clearable && selected ? (_jsx("span", { "aria-label": clearLabel ?? copy.common.clear, className: "oui-combobox-clear", onPointerDown: (event) => {
|
|
21
21
|
event.preventDefault();
|
|
22
22
|
event.stopPropagation();
|
|
23
23
|
}, onClick: (event) => {
|
|
24
24
|
event.preventDefault();
|
|
25
25
|
event.stopPropagation();
|
|
26
26
|
onValueChange(null);
|
|
27
|
-
}, children: _jsx(LuX, { size: 14 }) })) : null, showChevron ? _jsx(LuChevronsUpDown, { size: 15 }) : null] }), children: _jsx("span", { className: selected || selectedFallbackLabel
|
|
27
|
+
}, children: _jsx(LuX, { size: 14 }) })) : null, showChevron ? _jsx(LuChevronsUpDown, { size: 15 }) : null] }), children: _jsx("span", { className: selected || selectedFallbackLabel
|
|
28
|
+
? 'oui-combobox-trigger-label'
|
|
29
|
+
: 'oui-combobox-placeholder', children: selected?.label ??
|
|
30
|
+
selectedFallbackLabel ??
|
|
31
|
+
placeholder ??
|
|
32
|
+
copy.common.selectValue }) }), className: "oui-combobox-content", testId: testId ? `${testId}-popover` : undefined, align: "start", sideOffset: 4, matchTriggerWidth: true, disabled: disabled, children: [_jsx("div", { className: "oui-combobox-search-wrap", children: _jsx(TextField, { autoFocus: true, size: 1, value: query, testId: testId ? `${testId}-search` : undefined, placeholder: searchPlaceholder ?? copy.common.search, onChange: (event) => setQuery(event.target.value) }) }), filtered.length === 0 ? (_jsx("div", { className: "oui-combobox-empty", children: emptyText ?? copy.common.noOptions })) : (_jsx(Listbox, { className: "oui-combobox-options", items: filtered, value: value, testId: testId ? `${testId}-listbox` : undefined, onValueChange: (next) => {
|
|
28
33
|
onValueChange(next);
|
|
29
34
|
setOpen(false);
|
|
30
35
|
setQuery('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../../src/components/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQH,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAIf,OAAO,EAGH,KAAK,iBAAiB,EACzB,MAAM,uBAAuB,CAAC;AAQ/B,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAQF,wBAAgB,cAAc,CAAC,EAC3B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAgB,EAChB,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,gBAAqB,EACrB,MAAM,GACT,EAAE;IACC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAChD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,
|
|
1
|
+
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../../src/components/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQH,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAIf,OAAO,EAGH,KAAK,iBAAiB,EACzB,MAAM,uBAAuB,CAAC;AAQ/B,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAQF,wBAAgB,cAAc,CAAC,EAC3B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAgB,EAChB,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,gBAAqB,EACrB,MAAM,GACT,EAAE;IACC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAChD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,2CAoSA"}
|
|
@@ -26,11 +26,7 @@ export function CommandPalette({ open, onOpenChange, items, recentItems = [], on
|
|
|
26
26
|
const filtered = useMemo(() => items.filter((item) => {
|
|
27
27
|
if (!normalizedQuery)
|
|
28
28
|
return true;
|
|
29
|
-
return [
|
|
30
|
-
actionItemSearchText(item),
|
|
31
|
-
item.group,
|
|
32
|
-
...(item.keywords ?? []),
|
|
33
|
-
]
|
|
29
|
+
return [actionItemSearchText(item), item.group, ...(item.keywords ?? [])]
|
|
34
30
|
.filter(Boolean)
|
|
35
31
|
.some((value) => value.toLowerCase().includes(normalizedQuery));
|
|
36
32
|
}), [items, normalizedQuery]);
|
|
@@ -57,9 +53,7 @@ export function CommandPalette({ open, onOpenChange, items, recentItems = [], on
|
|
|
57
53
|
];
|
|
58
54
|
}, [actualRecentTitle, copy.command.group, filtered, normalizedQuery, recentItems]);
|
|
59
55
|
const options = useMemo(() => groups.flatMap((group) => group.items), [groups]);
|
|
60
|
-
const actualSelectedIndex = options.length === 0
|
|
61
|
-
? 0
|
|
62
|
-
: Math.min(selectedIndex, options.length - 1);
|
|
56
|
+
const actualSelectedIndex = options.length === 0 ? 0 : Math.min(selectedIndex, options.length - 1);
|
|
63
57
|
const selectedItem = options[actualSelectedIndex] ?? null;
|
|
64
58
|
const close = useCallback(() => {
|
|
65
59
|
onOpenChange(false);
|
|
@@ -151,13 +145,13 @@ export function CommandPalette({ open, onOpenChange, items, recentItems = [], on
|
|
|
151
145
|
onOpenChange(true);
|
|
152
146
|
else
|
|
153
147
|
close();
|
|
154
|
-
}, maxWidth: 520, testId: testId, children: [_jsxs(Modal.Header, { children: [_jsxs("div", { className:
|
|
148
|
+
}, maxWidth: 520, testId: testId, children: [_jsxs(Modal.Header, { children: [_jsxs("div", { className: "oui-modal-title-wrap", children: [_jsx("h2", { className: "oui-modal-title", children: actualTitle }), _jsx("p", { className: "oui-modal-description", children: actualDescription })] }), _jsx(IconButton, { v: "ghost", icon: _jsx(LuX, { size: 18 }), "aria-label": copy.common.close, onClick: close })] }), _jsx(Modal.Body, { children: _jsxs("div", { className: "oui-command-palette", "data-testid": testId ? `${testId}-panel` : undefined, onKeyDown: handleKeyDown, children: [_jsx(TextField, { autoFocus: true, className: "oui-command-palette-search", leftSlot: _jsx(LuSearch, { size: 16 }), placeholder: actualPlaceholder, value: query, role: "combobox", "aria-autocomplete": "list", "aria-controls": listboxId, "aria-expanded": open, "aria-activedescendant": selectedItem
|
|
155
149
|
? commandOptionId(listboxId, actualSelectedIndex)
|
|
156
|
-
: undefined, onChange: (event) => setQuery(event.target.value) }), _jsx("div", { ref: optionsRef, id: listboxId, className:
|
|
150
|
+
: undefined, onChange: (event) => setQuery(event.target.value) }), _jsx("div", { ref: optionsRef, id: listboxId, className: "oui-command-palette-results", role: "listbox", "aria-label": copy.common.commandPaletteResults, children: _jsx(Collapse, { open: true, className: "oui-command-palette-collapse", children: groups.length > 0 ? (groups.map((groupData) => (_jsxs("div", { className: "oui-command-palette-group", children: [_jsx("div", { className: "oui-command-palette-group-title", "data-recent": groupData.recent ? 'true' : undefined, children: groupData.group }), _jsx("div", { className: "oui-command-palette-items", children: groupData.items.map((item) => {
|
|
157
151
|
const index = options.indexOf(item);
|
|
158
152
|
const selected = index === actualSelectedIndex;
|
|
159
|
-
return (_jsxs("button", { id: commandOptionId(listboxId, index), type:
|
|
160
|
-
}) })] }, groupData.group)))) : (_jsx("div", { className:
|
|
153
|
+
return (_jsxs("button", { id: commandOptionId(listboxId, index), type: "button", role: "option", "aria-selected": selected, className: "oui-command-palette-item", "data-selected": selected ? 'true' : undefined, "data-loading": item.loading ? 'true' : undefined, "data-tone": item.tone, "data-oui-command-index": index, "aria-busy": item.loading ? 'true' : undefined, disabled: isActionItemDisabled(item), onMouseEnter: () => setSelectedIndex(index), onClick: () => selectItem(item), children: [item.icon || item.loading ? (_jsx("span", { className: "oui-command-palette-item-icon", children: item.loading ? (_jsx(Spinner, { size: 1 })) : (item.icon) })) : null, _jsxs("span", { className: "oui-command-palette-item-main", children: [_jsx("span", { className: "oui-command-palette-item-label", children: item.label }), item.description ? (_jsx("span", { className: "oui-command-palette-item-description", children: item.description })) : null] }), item.shortcut ? (_jsx("span", { className: "oui-command-palette-shortcut", children: item.shortcut })) : null] }, `${groupData.group}-${item.key}`));
|
|
154
|
+
}) })] }, groupData.group)))) : (_jsx("div", { className: "oui-command-palette-empty", children: actualEmptyText })) }) })] }) })] }), _jsx(ActionConfirmModal, { item: confirmItem, open: confirmItem !== null, onCancel: () => setConfirmItem(null), onConfirm: () => {
|
|
161
155
|
confirmItem?.onSelect?.();
|
|
162
156
|
if (confirmItem)
|
|
163
157
|
onSelect(confirmItem.key);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import type { Tone } from '../../theme/systemProps';
|
|
3
3
|
import { type ModalProps } from '../Modal/Modal';
|
|
4
|
-
export type ConfirmDialogTone =
|
|
4
|
+
export type ConfirmDialogTone = Tone;
|
|
5
5
|
export type ConfirmDialogProps = {
|
|
6
6
|
open: boolean;
|
|
7
7
|
onOpenChange: (open: boolean) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/components/ConfirmDialog/ConfirmDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/components/ConfirmDialog/ConfirmDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAIpD,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGxD,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAErC,MAAM,MAAM,kBAAkB,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC1B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,IAAgB,EAChB,OAAe,EACf,eAAuB,EACvB,cAAsB,EACtB,mBAAmB,EACnB,QAAc,EACd,MAAM,EACN,SAAS,EACT,QAAQ,GACX,EAAE,kBAAkB,2CA0EpB"}
|
|
@@ -24,5 +24,5 @@ export function ConfirmDialog({ open, onOpenChange, title, description, message,
|
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
cancel();
|
|
27
|
-
}, maxWidth: maxWidth, closeOnOverlayClick: closeOnOverlayClick ?? canClose, testId: testId, children: [title || description ? (_jsxs(Modal.Header, { children: [_jsxs("div", { className:
|
|
27
|
+
}, maxWidth: maxWidth, closeOnOverlayClick: closeOnOverlayClick ?? canClose, testId: testId, children: [title || description ? (_jsxs(Modal.Header, { children: [_jsxs("div", { className: "oui-modal-title-wrap", children: [title ? _jsx("h2", { className: "oui-modal-title", children: title }) : null, description ? (_jsx("p", { className: "oui-modal-description", children: description })) : null] }), _jsx(IconButton, { v: "ghost", icon: _jsx(LuX, { size: 18 }), "aria-label": copy.common.close, disabled: !canClose, onClick: cancel })] })) : null, _jsxs(Modal.Body, { children: [message ? (_jsx(Text, { as: "p", tone: "muted", lh: 1.5, children: message })) : null, children] }), _jsx(Modal.Footer, { children: _jsxs(Flex, { g: 2, j: "e", w: "100%", children: [_jsx(Button, { v: "surface", onClick: cancel, disabled: !canClose, testId: testId ? `${testId}-cancel` : undefined, children: actualCancelLabel }), _jsx(Button, { tone: tone, loading: loading, disabled: confirmDisabled, onClick: onConfirm, testId: testId ? `${testId}-confirm` : undefined, children: actualConfirmLabel })] }) })] }));
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAMH,KAAK,UAAU,EACf,KAAK,YAAY,EACpB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAMH,KAAK,UAAU,EACf,KAAK,YAAY,EACpB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAS7C,wBAAgB,WAAW,CAAC,EACxB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,MAAM,GACT,EAAE;IACC,QAAQ,EAAE,YAAY,CAAC;QAAE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;KAAE,CAAC,CAAC;IACxE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,2CA6EA"}
|
|
@@ -44,7 +44,7 @@ export function ContextMenu({ children, items, className, testId, }) {
|
|
|
44
44
|
setPoint({ x: event.clientX, y: event.clientY });
|
|
45
45
|
},
|
|
46
46
|
});
|
|
47
|
-
return (_jsxs(_Fragment, { children: [trigger, point ? (_jsx(Portal, { children: _jsx("div", { ref: layerRef, className: cn('oui-popover-content oui-menu oui-action-menu-content oui-context-menu-content', className), "data-state":
|
|
47
|
+
return (_jsxs(_Fragment, { children: [trigger, point ? (_jsx(Portal, { children: _jsx("div", { ref: layerRef, className: cn('oui-popover-content oui-menu oui-action-menu-content oui-context-menu-content', className), "data-state": "opening", "data-layer": "dropdown", "data-testid": testId, style: {
|
|
48
48
|
left: point.x,
|
|
49
49
|
top: point.y,
|
|
50
50
|
zIndex: overlayLayerZIndex(overlay.zIndex, 'dropdown', layerIndex),
|
|
@@ -54,7 +54,7 @@ export function ContextMenu({ children, items, className, testId, }) {
|
|
|
54
54
|
} })] }));
|
|
55
55
|
}
|
|
56
56
|
function ContextMenuContent({ items, close, requestConfirmation, testId, }) {
|
|
57
|
-
return (_jsx("div", { className:
|
|
57
|
+
return (_jsx("div", { className: "oui-menu-list", role: "menu", "data-testid": testId, children: items.map((item) => (_jsxs("div", { children: [item.separatorBefore ? _jsx("div", { className: "oui-menu-separator" }) : null, _jsxs("button", { type: "button", role: "menuitem", className: "oui-menu-item oui-combobox-option", "data-tone": item.tone, "data-selected": "false", "data-loading": item.loading ? 'true' : undefined, "data-testid": testId ? `${testId}-${item.key}` : undefined, "aria-busy": item.loading ? 'true' : undefined, disabled: isActionItemDisabled(item) || Boolean(item.children?.length), onClick: () => {
|
|
58
58
|
if (isActionItemDisabled(item) || item.children?.length)
|
|
59
59
|
return;
|
|
60
60
|
if (item.confirm) {
|
|
@@ -64,5 +64,5 @@ function ContextMenuContent({ items, close, requestConfirmation, testId, }) {
|
|
|
64
64
|
}
|
|
65
65
|
item.onSelect?.();
|
|
66
66
|
close();
|
|
67
|
-
}, children: [item.icon || item.loading ? (_jsx("span", { className:
|
|
67
|
+
}, children: [item.icon || item.loading ? (_jsx("span", { className: "oui-menu-icon", children: item.loading ? _jsx(Spinner, { size: 1 }) : item.icon })) : null, _jsx("span", { className: "oui-menu-label", children: item.label })] })] }, item.key))) }));
|
|
68
68
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ButtonProps } from '../Button/Button';
|
|
2
|
+
import { type IconButtonProps } from '../IconButton/IconButton';
|
|
3
|
+
export type CopyButtonProps = Omit<ButtonProps, 'children' | 'leftIcon' | 'loading' | 'onClick'> & {
|
|
4
|
+
text: string;
|
|
5
|
+
label?: string;
|
|
6
|
+
copiedLabel?: string;
|
|
7
|
+
successMessage?: string;
|
|
8
|
+
errorMessage?: string;
|
|
9
|
+
resetMs?: number;
|
|
10
|
+
onCopied?: () => void;
|
|
11
|
+
onCopyError?: (error: unknown) => void;
|
|
12
|
+
};
|
|
13
|
+
export type CopyIconButtonProps = Omit<IconButtonProps, 'children' | 'icon' | 'loading' | 'onClick'> & {
|
|
14
|
+
text: string;
|
|
15
|
+
label?: string;
|
|
16
|
+
successMessage?: string;
|
|
17
|
+
errorMessage?: string;
|
|
18
|
+
resetMs?: number;
|
|
19
|
+
onCopied?: () => void;
|
|
20
|
+
onCopyError?: (error: unknown) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare function CopyButton({ text, label, copiedLabel, successMessage, errorMessage, resetMs, onCopied, onCopyError, className, disabled, ...props }: CopyButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export declare function CopyIconButton({ text, label, successMessage, errorMessage, resetMs, onCopied, onCopyError, className, disabled, ...props }: CopyIconButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=CopyButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../../../src/components/CopyButton/CopyButton.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG5E,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG;IAC/F,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAClC,eAAe,EACf,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAC9C,GAAG;IACA,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACvB,IAAI,EACJ,KAAc,EACd,WAAsB,EACtB,cAAyB,EACzB,YAA4B,EAC5B,OAAc,EACd,QAAQ,EACR,WAAW,EACX,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,eAAe,2CAsBjB;AAED,wBAAgB,cAAc,CAAC,EAC3B,IAAI,EACJ,KAAc,EACd,cAAyB,EACzB,YAA4B,EAC5B,OAAc,EACd,QAAQ,EACR,WAAW,EACX,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,mBAAmB,2CAqBrB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { LuCheck, LuCopy } from 'react-icons/lu';
|
|
5
|
+
import { cn } from '../../utils/cn';
|
|
6
|
+
import { Button } from '../Button/Button';
|
|
7
|
+
import { IconButton } from '../IconButton/IconButton';
|
|
8
|
+
import { useToast } from '../Toast/Toast';
|
|
9
|
+
export function CopyButton({ text, label = 'Copy', copiedLabel = 'Copied', successMessage = 'Copied', errorMessage = 'Copy failed', resetMs = 1400, onCopied, onCopyError, className, disabled, ...props }) {
|
|
10
|
+
const { copied, pending, copy } = useCopyAction({
|
|
11
|
+
text,
|
|
12
|
+
successMessage,
|
|
13
|
+
errorMessage,
|
|
14
|
+
resetMs,
|
|
15
|
+
onCopied,
|
|
16
|
+
onCopyError,
|
|
17
|
+
});
|
|
18
|
+
return (_jsx(Button, { ...props, className: cn('oui-copy-button', className), disabled: disabled || pending, loading: pending, leftIcon: copied ? _jsx(LuCheck, { size: 15 }) : _jsx(LuCopy, { size: 15 }), onClick: copy, children: copied ? copiedLabel : label }));
|
|
19
|
+
}
|
|
20
|
+
export function CopyIconButton({ text, label = 'Copy', successMessage = 'Copied', errorMessage = 'Copy failed', resetMs = 1400, onCopied, onCopyError, className, disabled, ...props }) {
|
|
21
|
+
const { copied, pending, copy } = useCopyAction({
|
|
22
|
+
text,
|
|
23
|
+
successMessage,
|
|
24
|
+
errorMessage,
|
|
25
|
+
resetMs,
|
|
26
|
+
onCopied,
|
|
27
|
+
onCopyError,
|
|
28
|
+
});
|
|
29
|
+
return (_jsx(IconButton, { ...props, className: cn('oui-copy-icon-button', className), disabled: disabled || pending, loading: pending, icon: copied ? _jsx(LuCheck, { size: 15 }) : _jsx(LuCopy, { size: 15 }), "aria-label": label, onClick: copy }));
|
|
30
|
+
}
|
|
31
|
+
function useCopyAction({ text, successMessage, errorMessage, resetMs, onCopied, onCopyError, }) {
|
|
32
|
+
const toast = useToast();
|
|
33
|
+
const timerRef = useRef(null);
|
|
34
|
+
const [pending, setPending] = useState(false);
|
|
35
|
+
const [copied, setCopied] = useState(false);
|
|
36
|
+
useEffect(() => () => {
|
|
37
|
+
if (timerRef.current !== null)
|
|
38
|
+
window.clearTimeout(timerRef.current);
|
|
39
|
+
}, []);
|
|
40
|
+
async function copy(event) {
|
|
41
|
+
event.stopPropagation();
|
|
42
|
+
setPending(true);
|
|
43
|
+
try {
|
|
44
|
+
await writeClipboardText(text);
|
|
45
|
+
setCopied(true);
|
|
46
|
+
onCopied?.();
|
|
47
|
+
if (successMessage)
|
|
48
|
+
toast.success(successMessage);
|
|
49
|
+
if (timerRef.current !== null)
|
|
50
|
+
window.clearTimeout(timerRef.current);
|
|
51
|
+
timerRef.current = window.setTimeout(() => setCopied(false), resetMs);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
onCopyError?.(error);
|
|
55
|
+
if (errorMessage)
|
|
56
|
+
toast.error(errorMessage);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
setPending(false);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return { copied, pending, copy };
|
|
63
|
+
}
|
|
64
|
+
async function writeClipboardText(text) {
|
|
65
|
+
if (navigator.clipboard?.writeText) {
|
|
66
|
+
await navigator.clipboard.writeText(text);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const field = document.createElement('textarea');
|
|
70
|
+
field.value = text;
|
|
71
|
+
field.setAttribute('readonly', '');
|
|
72
|
+
field.style.position = 'fixed';
|
|
73
|
+
field.style.top = '-9999px';
|
|
74
|
+
field.style.left = '-9999px';
|
|
75
|
+
document.body.append(field);
|
|
76
|
+
field.select();
|
|
77
|
+
const copied = document.execCommand('copy');
|
|
78
|
+
field.remove();
|
|
79
|
+
if (!copied)
|
|
80
|
+
throw new Error('Clipboard copy failed');
|
|
81
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../src/components/DataTable/DataTable.tsx"],"names":[],"mappings":"AAEA,OAAO,EAWH,KAAK,SAAS,EAGjB,MAAM,OAAO,CAAC;AAoBf,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../src/components/DataTable/DataTable.tsx"],"names":[],"mappings":"AAEA,OAAO,EAWH,KAAK,SAAS,EAGjB,MAAM,OAAO,CAAC;AAoBf,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,yBAAyB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAChE,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAEzD,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAChC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,uBAAuB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClD,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC5B,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,IAAI,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IAC3D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACtE,eAAe,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnD,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,EACzB,IAAI,EACJ,OAAO,EACP,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,eAAoB,EACpB,uBAAuB,EACvB,UAAkB,EAClB,SAAiB,EACjB,cAAsB,EACtB,OAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EACT,WAAW,EACX,KAAK,EACL,UAAU,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,qBAAqB,EACrB,QAAQ,EACR,SAAS,EACT,MAAM,EACN,KAAK,EACL,OAAO,EACP,cAAc,EACd,WAAmB,EACnB,gBAAqB,EACrB,eAAmB,EACnB,aAAa,EACb,MAAM,GACT,EAAE,cAAc,CAAC,CAAC,CAAC,2CAggBnB"}
|
|
@@ -175,7 +175,9 @@ export function DataTable({ rows, columns, rowKey, sort, onSortChange, selectedR
|
|
|
175
175
|
: existing.direction === 'asc'
|
|
176
176
|
? { key: column.key, direction: 'desc' }
|
|
177
177
|
: null;
|
|
178
|
-
const keepOthers = event?.shiftKey
|
|
178
|
+
const keepOthers = event?.shiftKey
|
|
179
|
+
? sortItems.filter((item) => item.key !== column.key)
|
|
180
|
+
: [];
|
|
179
181
|
const next = nextForColumn ? [...keepOthers, nextForColumn] : keepOthers;
|
|
180
182
|
onSortChange(next.length === 0 ? null : event?.shiftKey ? next : next[0]);
|
|
181
183
|
};
|
|
@@ -252,7 +254,7 @@ export function DataTable({ rows, columns, rowKey, sort, onSortChange, selectedR
|
|
|
252
254
|
toggleExpandedRow(item.key);
|
|
253
255
|
}
|
|
254
256
|
};
|
|
255
|
-
return (_jsxs("div", { className:
|
|
257
|
+
return (_jsxs("div", { className: "oui-data-table-shell", "data-testid": testId ? `${testId}-shell` : undefined, children: [toolbar || columnSettings ? (_jsxs("div", { className: "oui-data-table-toolbar", children: [toolbar ? (_jsx("div", { className: "oui-data-table-toolbar-content", children: toolbar })) : null, columnSettings ? (_jsx(ColumnSettingsPanel, { columns: settingsColumns, visibleColumnKeys: columnSettings.visibleColumnKeys, columnOrder: columnSettings.columnOrder, label: columnSettings.label ?? copy.table.columnSettings, resetLabel: columnSettings.resetLabel ?? copy.common.reset, emptyLabel: columnSettings.emptyLabel ?? copy.common.noData, onVisibleColumnKeysChange: columnSettings.onVisibleColumnKeysChange, onColumnOrderChange: columnSettings.onColumnOrderChange, onReset: columnSettings.onReset, testId: testId ? `${testId}-columns` : undefined })) : null] })) : null, _jsx("div", { ref: attachScrollRoot, className: "oui-data-table-wrap", style: { height }, role: "grid", tabIndex: 0, "data-testid": testId, onScroll: virtualized ? handleScroll : undefined, onWheel: handleWheel, onPointerDown: cancelHorizontalScrollAnimation, onMouseDown: cancelHorizontalScrollAnimation, onKeyDown: handleKeyDown, children: _jsxs("table", { className: "oui-data-table", "aria-rowcount": total ?? rows.length, style: {
|
|
256
258
|
minWidth: tableMinWidth ? `${tableMinWidth}px` : undefined,
|
|
257
259
|
'--oui-data-table-select-left-offset': expansion ? '34px' : '0px',
|
|
258
260
|
'--oui-data-table-pinned-left-offset': `${pinnedLeftOffset}px`,
|
|
@@ -260,18 +262,21 @@ export function DataTable({ rows, columns, rowKey, sort, onSortChange, selectedR
|
|
|
260
262
|
width: formatCssSize(actualColumnWidths[column.key] ?? column.width),
|
|
261
263
|
minWidth: formatCssSize(column.minWidth),
|
|
262
264
|
maxWidth: formatCssSize(column.maxWidth),
|
|
263
|
-
} }, column.key)))] }), _jsx("thead", { children: _jsxs("tr", { children: [expansion ? (_jsx("th", { className:
|
|
265
|
+
} }, column.key)))] }), _jsx("thead", { children: _jsxs("tr", { children: [expansion ? (_jsx("th", { className: "oui-data-table-expand-cell", role: "columnheader", "aria-hidden": "true" })) : null, selectable ? (_jsx("th", { className: "oui-data-table-select-cell", role: "columnheader", scope: "col", children: _jsx("span", { className: "oui-data-table-select-control", children: _jsx(Checkbox, { "aria-label": copy.table.selectAllRows, checked: allVisibleSelected, ref: (node) => {
|
|
264
266
|
if (node)
|
|
265
267
|
node.indeterminate = someVisibleSelected;
|
|
266
268
|
}, disabled: !onSelectedRowKeysChange || visibleKeys.length === 0, onChange: toggleAllVisible }) }) })) : null, visibleColumns.map((column) => {
|
|
267
269
|
const activeSort = sortItems.find((item) => item.key === column.key) ?? null;
|
|
268
|
-
return (_jsx("th", { role:
|
|
270
|
+
return (_jsx("th", { role: "columnheader", scope: "col", "data-pinned": column.pinned, "data-resizing": resizingColumnKey === column.key ? 'true' : undefined, style: {
|
|
269
271
|
width: formatCssSize(actualColumnWidths[column.key] ?? column.width),
|
|
270
272
|
minWidth: formatCssSize(column.minWidth),
|
|
271
273
|
maxWidth: formatCssSize(column.maxWidth),
|
|
272
274
|
textAlign: column.align,
|
|
273
|
-
}, children: _jsxs("span", { className:
|
|
274
|
-
})] }) }), _jsx("tbody", { children: error ? (_jsxs(DataTableMessageRow, { colSpan: colSpan, children: [_jsx(Text, { fw: 700, children: errorTitle ?? copy.table.unableToLoad }), _jsx(Text, { fs:
|
|
275
|
+
}, children: _jsxs("span", { className: "oui-data-table-header-cell", children: [column.sortable ? (_jsxs("button", { type: "button", className: "oui-data-table-sort", "data-active": activeSort ? 'true' : undefined, onClick: (event) => toggleSort(column, event), children: [_jsx("span", { className: "oui-data-table-sort-label", children: column.title }), activeSort?.direction === 'asc' ? (_jsx(LuArrowUp, { size: 13 })) : activeSort?.direction === 'desc' ? (_jsx(LuArrowDown, { size: 13 })) : (_jsx("span", { className: "oui-data-table-sort-placeholder" }))] })) : (column.title), column.resizable ? (_jsx("span", { role: "separator", "aria-orientation": "vertical", tabIndex: 0, className: "oui-data-table-resize", "aria-label": copy.common.resizeColumn, onPointerDown: (event) => startResize(column, event) })) : null] }) }, column.key));
|
|
276
|
+
})] }) }), _jsx("tbody", { children: error ? (_jsxs(DataTableMessageRow, { colSpan: colSpan, children: [_jsx(Text, { fw: 700, children: errorTitle ?? copy.table.unableToLoad }), _jsx(Text, { fs: "12px", tone: "muted", children: error }), onRetry ? (_jsx(Button, { size: 1, v: "surface", leftIcon: _jsx(LuRefreshCw, { size: 14 }), onClick: onRetry, children: retryLabel ?? copy.common.retry })) : null] })) : isLoading ? (_jsxs(DataTableMessageRow, { colSpan: colSpan, children: [_jsx(Spinner, {}), _jsx(Text, { fs: "12px", tone: "muted", children: loadingText ?? copy.table.loadingRows })] })) : renderedRows.length === 0 ? (_jsx(DataTableMessageRow, { colSpan: colSpan, children: _jsx(Text, { fs: "12px", tone: "muted", children: emptyText ?? copy.common.noData }) })) : (_jsxs(_Fragment, { children: [virtualized && actualVirtualWindow?.beforeHeight ? (_jsx("tr", { role: "row", "aria-hidden": "true", children: _jsx("td", { colSpan: colSpan, style: {
|
|
277
|
+
height: actualVirtualWindow.beforeHeight,
|
|
278
|
+
padding: 0,
|
|
279
|
+
} }) })) : null, renderGroupedRows({
|
|
275
280
|
activeRowIndex,
|
|
276
281
|
colSpan,
|
|
277
282
|
columns: visibleColumns,
|
|
@@ -287,7 +292,10 @@ export function DataTable({ rows, columns, rowKey, sort, onSortChange, selectedR
|
|
|
287
292
|
selectable,
|
|
288
293
|
selectedSet,
|
|
289
294
|
canSelect: Boolean(onSelectedRowKeysChange),
|
|
290
|
-
}), virtualized && actualVirtualWindow?.afterHeight ? (_jsx("tr", { role:
|
|
295
|
+
}), virtualized && actualVirtualWindow?.afterHeight ? (_jsx("tr", { role: "row", "aria-hidden": "true", children: _jsx("td", { colSpan: colSpan, style: {
|
|
296
|
+
height: actualVirtualWindow.afterHeight,
|
|
297
|
+
padding: 0,
|
|
298
|
+
} }) })) : null, hasNext ? (_jsx("tr", { ref: sentinelRef, role: "row", "aria-hidden": "true", children: _jsx("td", { colSpan: colSpan, children: _jsx("div", { className: "oui-data-table-next-loader", children: isFetchingNext ? _jsx(Spinner, { size: 1 }) : null }) }) })) : null] })) })] }) })] }));
|
|
291
299
|
}
|
|
292
300
|
function ColumnSettingsPanel({ columns, visibleColumnKeys, columnOrder, label, resetLabel, emptyLabel, onVisibleColumnKeysChange, onColumnOrderChange, onReset, testId, }) {
|
|
293
301
|
const configurableColumns = orderColumns(columns.filter((column) => column.hideable !== false), columnOrder);
|
|
@@ -306,7 +314,9 @@ function ColumnSettingsPanel({ columns, visibleColumnKeys, columnOrder, label, r
|
|
|
306
314
|
const moveColumn = (key, direction) => {
|
|
307
315
|
if (!onColumnOrderChange)
|
|
308
316
|
return;
|
|
309
|
-
const current = columnOrder?.length
|
|
317
|
+
const current = columnOrder?.length
|
|
318
|
+
? [...columnOrder]
|
|
319
|
+
: columns.map((column) => column.key);
|
|
310
320
|
const index = current.indexOf(key);
|
|
311
321
|
const nextIndex = index + direction;
|
|
312
322
|
if (index < 0 || nextIndex < 0 || nextIndex >= current.length)
|
|
@@ -315,23 +325,23 @@ function ColumnSettingsPanel({ columns, visibleColumnKeys, columnOrder, label, r
|
|
|
315
325
|
[next[index], next[nextIndex]] = [next[nextIndex], next[index]];
|
|
316
326
|
onColumnOrderChange(next);
|
|
317
327
|
};
|
|
318
|
-
return (_jsxs(Popover, { trigger:
|
|
328
|
+
return (_jsxs(Popover, { trigger: _jsx(IconButton, { v: "surface", icon: _jsx(LuSettings2, { size: 16 }), "aria-label": typeof label === 'string' ? label : undefined, testId: testId }), align: "end", className: "oui-data-table-column-settings", testId: testId ? `${testId}-popover` : undefined, children: [_jsxs("div", { className: "oui-data-table-column-settings-head", children: [_jsx(Text, { fs: "13px", fw: 760, children: label }), onReset ? (_jsx(Button, { className: "oui-data-table-settings-reset", size: 1, v: "ghost", leftIcon: _jsx(LuRotateCcw, { size: 13 }), onClick: onReset, children: resetLabel })) : null] }), _jsx("div", { className: "oui-data-table-column-settings-list", children: configurableColumns.length === 0 ? (_jsx(Text, { fs: "12px", tone: "muted", children: emptyLabel })) : (configurableColumns.map((column, index) => {
|
|
319
329
|
const visible = visibleSet.has(column.key);
|
|
320
|
-
return (_jsxs("div", { className:
|
|
321
|
-
}) })] }));
|
|
330
|
+
return (_jsxs("div", { className: "oui-data-table-column-settings-row", children: [_jsxs("label", { className: "oui-data-table-column-toggle", children: [_jsx(Checkbox, { checked: visible, disabled: visible && selectedCount <= 1, onChange: () => toggleColumn(column.key) }), _jsx("span", { children: column.title })] }), onColumnOrderChange ? (_jsxs("span", { className: "oui-data-table-column-settings-order", children: [_jsx("button", { type: "button", disabled: index === 0, onClick: () => moveColumn(column.key, -1), children: _jsx(LuArrowUp, { size: 13 }) }), _jsx("button", { type: "button", disabled: index === configurableColumns.length - 1, onClick: () => moveColumn(column.key, 1), children: _jsx(LuArrowDown, { size: 13 }) })] })) : null] }, column.key));
|
|
331
|
+
})) })] }));
|
|
322
332
|
}
|
|
323
333
|
function DataTableRow({ row, columns, active, expanded, expansion, selected, selectable, canSelect, onToggle, onExpandToggle, onRowClick, actions, selectLabel, }) {
|
|
324
|
-
const rowNode = (_jsxs("tr", { role:
|
|
334
|
+
const rowNode = (_jsxs("tr", { role: "row", "data-selected": selected ? 'true' : undefined, "data-active": active ? 'true' : undefined, "data-clickable": onRowClick ? 'true' : undefined, onClick: () => onRowClick?.(row), children: [expansion ? (_jsx("td", { className: "oui-data-table-expand-cell", role: "gridcell", children: _jsx("button", { type: "button", className: "oui-data-table-expand", "aria-label": expanded ? expansion.collapseLabel : expansion.expandLabel, "aria-expanded": expanded, onClick: (event) => {
|
|
325
335
|
event.stopPropagation();
|
|
326
336
|
onExpandToggle();
|
|
327
|
-
}, children: expanded ? _jsx(LuChevronDown, { size: 14 }) : _jsx(LuChevronRight, { size: 14 }) }) })) : null, selectable ? (_jsx("td", { className:
|
|
337
|
+
}, children: expanded ? _jsx(LuChevronDown, { size: 14 }) : _jsx(LuChevronRight, { size: 14 }) }) })) : null, selectable ? (_jsx("td", { className: "oui-data-table-select-cell", role: "gridcell", children: _jsx("span", { className: "oui-data-table-select-control", children: _jsx(Checkbox, { "aria-label": selectLabel, checked: selected, disabled: !canSelect, onClick: (event) => event.stopPropagation(), onChange: onToggle }) }) })) : null, columns.map((column) => (_jsx("td", { role: "gridcell", "data-pinned": column.pinned, style: { textAlign: column.align }, children: column.render(row) }, column.key)))] }));
|
|
328
338
|
if (actions.length === 0)
|
|
329
339
|
return rowNode;
|
|
330
340
|
const menuItems = actions.map(({ children: _children, onSelect, ...action }) => ({
|
|
331
341
|
...action,
|
|
332
342
|
onSelect: () => onSelect?.(row),
|
|
333
343
|
}));
|
|
334
|
-
return
|
|
344
|
+
return _jsx(ContextMenu, { items: menuItems, children: rowNode });
|
|
335
345
|
}
|
|
336
346
|
function renderGroupedRows({ activeRowIndex, colSpan, columns, copy, expandedSet, expansion, renderedRows, rowContextMenuActions, rowGroup, onRowClick, onSelectToggle, onExpandToggle, selectable, selectedSet, canSelect, }) {
|
|
337
347
|
let previousGroupKey = null;
|
|
@@ -341,17 +351,17 @@ function renderGroupedRows({ activeRowIndex, colSpan, columns, copy, expandedSet
|
|
|
341
351
|
if (group)
|
|
342
352
|
previousGroupKey = group.key;
|
|
343
353
|
const expanded = expandedSet.has(key);
|
|
344
|
-
return (_jsxs(Fragment, { children: [showGroup ? (_jsx("tr", { className:
|
|
354
|
+
return (_jsxs(Fragment, { children: [showGroup ? (_jsx("tr", { className: "oui-data-table-group-row", role: "row", children: _jsx("td", { role: "gridcell", colSpan: colSpan, children: group.label }) })) : null, _jsx(DataTableRow, { row: row, columns: columns, active: index === activeRowIndex, expanded: expanded, expansion: expansion
|
|
345
355
|
? {
|
|
346
356
|
...expansion,
|
|
347
357
|
expandLabel: expansion.expandLabel ?? copy.table.expandRow,
|
|
348
358
|
collapseLabel: expansion.collapseLabel ?? copy.table.collapseRow,
|
|
349
359
|
}
|
|
350
|
-
: undefined, selected: selectedSet.has(key), selectable: selectable, canSelect: canSelect, onToggle: () => onSelectToggle(key), onExpandToggle: () => onExpandToggle(key), onRowClick: onRowClick, actions: rowContextMenuActions?.(row) ?? [], selectLabel: copy.table.selectRow }), expanded && expansion ? (_jsx("tr", { className:
|
|
360
|
+
: undefined, selected: selectedSet.has(key), selectable: selectable, canSelect: canSelect, onToggle: () => onSelectToggle(key), onExpandToggle: () => onExpandToggle(key), onRowClick: onRowClick, actions: rowContextMenuActions?.(row) ?? [], selectLabel: copy.table.selectRow }), expanded && expansion ? (_jsx("tr", { className: "oui-data-table-expanded-row", role: "row", children: _jsx("td", { role: "gridcell", colSpan: colSpan, children: expansion.renderExpandedRow(row) }) })) : null] }, key));
|
|
351
361
|
});
|
|
352
362
|
}
|
|
353
|
-
function DataTableMessageRow({ colSpan, children
|
|
354
|
-
return (_jsx("tr", { role:
|
|
363
|
+
function DataTableMessageRow({ colSpan, children }) {
|
|
364
|
+
return (_jsx("tr", { role: "row", children: _jsx("td", { role: "gridcell", colSpan: colSpan, children: _jsx("div", { className: "oui-data-table-message", children: children }) }) }));
|
|
355
365
|
}
|
|
356
366
|
function normalizeSort(sort) {
|
|
357
367
|
if (!sort)
|
|
@@ -396,10 +406,7 @@ function numericWidth(value) {
|
|
|
396
406
|
function tableMinimumWidth({ columns, columnWidths, selectable, expandable, }) {
|
|
397
407
|
const base = (selectable ? 42 : 0) + (expandable ? 34 : 0);
|
|
398
408
|
return columns.reduce((total, column) => {
|
|
399
|
-
const width = columnWidths[column.key] ??
|
|
400
|
-
numericWidth(column.width) ??
|
|
401
|
-
column.minWidth ??
|
|
402
|
-
120;
|
|
409
|
+
const width = columnWidths[column.key] ?? numericWidth(column.width) ?? column.minWidth ?? 120;
|
|
403
410
|
return total + width;
|
|
404
411
|
}, base);
|
|
405
412
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableStateAdapters.d.ts","sourceRoot":"","sources":["../../../src/components/DataTable/DataTableStateAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"DataTableStateAdapters.d.ts","sourceRoot":"","sources":["../../../src/components/DataTable/DataTableStateAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,uBAAuB,GAAG;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC,CAAC;AAExF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAIrF;AAED,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,wBAAwB,EAC/B,OAAO,GAAE,qBAAqB,GAAG,IAAuB,GACzD,uBAAuB,GAAG,IAAI,CAShC;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,uBAAuB,EAC9B,OAAO,GAAE,qBAAqB,GAAG,IAAuB,QAI3D;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,wBAAwB,EAC/B,OAAO,GAAE,qBAAqB,GAAG,IAAuB,QAG3D;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,uBAAuB,GAAG,eAAe,CAiB5F;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,uBAAuB,CAY/F;AAED,wBAAgB,iCAAiC,CAAC,EAC9C,IAAI,EACJ,QAAQ,GACX,EAAE;IACC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,eAAe,CAElB;AAED,wBAAgB,mCAAmC,CAC/C,MAAM,EAAE,eAAe,GACxB,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,UAAU,CAAC,CAMpD;AAED,wBAAgB,qBAAqB,CAAC,EAClC,YAAY,EACZ,cAAc,EACd,QAAQ,GACX,EAAE;IACC,YAAY,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAC7C,GAAG,uBAAuB,CAM1B;AAED,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,GACzC,kBAAkB,GAAG,IAAI,CAE3B;AAED,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,kBAAkB,GACzB,uBAAuB,CAWzB;AAED,wBAAgB,4BAA4B,CACxC,YAAY,GAAE,uBAA4B,GAC3C,uBAAuB,CAEzB"}
|
|
@@ -45,7 +45,7 @@ export function dataTableStateToSearchParams(state) {
|
|
|
45
45
|
return params;
|
|
46
46
|
}
|
|
47
47
|
export function dataTableStateFromSearchParams(params) {
|
|
48
|
-
return normalizeDataTableState({
|
|
48
|
+
return (normalizeDataTableState({
|
|
49
49
|
visibleColumnKeys: splitParam(params.get('columns')),
|
|
50
50
|
columnOrder: splitParam(params.get('column_order')),
|
|
51
51
|
columnWidths: parseColumnWidthsParam(params.get('column_widths')),
|
|
@@ -53,7 +53,7 @@ export function dataTableStateFromSearchParams(params) {
|
|
|
53
53
|
page: parsePositiveInt(params.get('page')),
|
|
54
54
|
pageSize: parsePositiveInt(params.get('page_size')),
|
|
55
55
|
savedViewKey: params.get('view') || undefined,
|
|
56
|
-
}) ?? {};
|
|
56
|
+
}) ?? {});
|
|
57
57
|
}
|
|
58
58
|
export function dataTablePaginationToSearchParams({ page, pageSize, }) {
|
|
59
59
|
return dataTableStateToSearchParams({ page, pageSize });
|
|
@@ -184,8 +184,7 @@ function parsePositiveInt(value) {
|
|
|
184
184
|
function isSort(value) {
|
|
185
185
|
if (!isRecord(value))
|
|
186
186
|
return false;
|
|
187
|
-
return (typeof value.key === 'string' &&
|
|
188
|
-
(value.direction === 'asc' || value.direction === 'desc'));
|
|
187
|
+
return (typeof value.key === 'string' && (value.direction === 'asc' || value.direction === 'desc'));
|
|
189
188
|
}
|
|
190
189
|
function isRecord(value) {
|
|
191
190
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ3E,OAAO,EAQH,KAAK,sBAAsB,EAC9B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,aAAa,EACb,GAAG,EACH,GAAG,EACH,YAAY,EACZ,WAAW,EACX,SAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,MAAM,EACN,MAAM,GACT,EAAE,eAAe,2CA6IjB"}
|